pax_global_header00006660000000000000000000000064136057211740014520gustar00rootroot0000000000000052 comment=45040e0573f8bcddda622e99539f7c4e76588bd2 pycares-pycares-3.1.1/000077500000000000000000000000001360572117400146345ustar00rootroot00000000000000pycares-pycares-3.1.1/.github/000077500000000000000000000000001360572117400161745ustar00rootroot00000000000000pycares-pycares-3.1.1/.github/workflows/000077500000000000000000000000001360572117400202315ustar00rootroot00000000000000pycares-pycares-3.1.1/.github/workflows/test-mac.yml000066400000000000000000000007621360572117400224760ustar00rootroot00000000000000name: Test macOS on: [pull_request] jobs: build: runs-on: macos-latest strategy: matrix: python-version: [ '3.5', '3.6', '3.7', '3.8' ] name: Python ${{ matrix.python-version }} build steps: - uses: actions/checkout@master - name: Setup Python uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Build package run: python setup.py install - name: Run tests run: ./tests/tests.py pycares-pycares-3.1.1/.gitignore000066400000000000000000000003021360572117400166170ustar00rootroot00000000000000#python specific *.pyc *.so build/* dist/* MANIFEST __pycache__/ *.eggs/ *.egg-info/ ## generic files to ignore *~ *.lock *.DS_Store *.swp *.out *.o *.a .tox/ docs/_build/ .venv/ wheelhouse/ pycares-pycares-3.1.1/.travis.yml000066400000000000000000000043741360572117400167550ustar00rootroot00000000000000language: python before_install: - | if [[ "$TRAVIS_OS_NAME" = windows ]]; then choco install python --version 3.8.0 export PATH="/c/Python38:/c/Python38/Scripts:$PATH" fi install: - env | grep '^TRAVIS' - python -V - if $TEST_IDNA; then pip install idna; fi - python setup.py install script: - ./tests/tests.py notifications: email: on_success: never on_failure: change stages: - test # Only execute deployment stage on master branch, tagged commits, # and from your repository (e.g. not PRs). Replace with your repo name. - name: deploy if: tag IS present AND repo = saghul/pycares jobs: include: - name: "CPython 3.5" python: 3.5 - name: "CPython 3.5 (+ IDNA)" python: 3.5 env: TEST_IDNA=true - name: "CPython 3.6" python: 3.6 - name: "CPython 3.7" python: 3.7 - name: "CPython 3.8" python: 3.8 - name: "PyPy 3" python: pypy3 # Deploy source distribution - stage: deploy name: Deploy source distribution install: python -m pip install twine script: python setup.py sdist --formats=gztar after_success: python -m twine upload --skip-existing dist/*.tar.gz # Deploy on linux - stage: deploy name: Build and deploy Linux wheels services: docker install: python -m pip install twine cibuildwheel==1.1.0 script: python -m cibuildwheel --output-dir wheelhouse after_success: python -m twine upload --skip-existing wheelhouse/*.whl # Deploy on mac - stage: deploy name: Build and deploy macOS wheels os: osx language: shell install: python -m pip install twine cibuildwheel==1.1.0 script: python -m cibuildwheel --output-dir wheelhouse after_success: python -m twine upload --skip-existing wheelhouse/*.whl # Deploy on windows - stage: deploy name: Build and deploy Windows wheels os: windows language: shell install: python -m pip install twine cibuildwheel==1.1.0 script: python -m cibuildwheel --output-dir wheelhouse after_success: python -m twine upload --skip-existing wheelhouse/*.whl env: global: - CIBW_SKIP=cp27-* - TWINE_USERNAME=saghul # Note: TWINE_PASSWORD is set in Travis settings pycares-pycares-3.1.1/ChangeLog000066400000000000000000000140271360572117400164120ustar00rootroot00000000000000Version 3.1.1 ============= - ffi: new style callbacks Version 3.1.0 ============= - misc: add Python 3.8 classifier - (origin/master, origin/HEAD) build: use Travis to build Python Wheels - ci: use GH Actions to test on macOS - ci: run tests in Python 3.8 too - test: remove no longer valid test - test: remove empty test - errno: return str from errno.strerror - core: fix crash when processing .onion queries - test: fix test_query_txt_multiple_chunked - doc: fix path of _version.py file - core: fix support for ARES_OPT_LOOKUPS option - build: add cygwin support - core: fix struct in6_addr alignment - misc: simplify non-ascii txt test example - core: fix long TXT record with non-ascii bytes - build: remove extra add_include_dir line on linux - build: fix testing manylinux wheels Version 3.0.0 ============= (changes since version 2.x) - core: drop C backend in favor of CFFI - core: drop Python < 3.5 support - core: use None instead of -1 for default values - core: add support for ANY queries - core: automagically encode query names with IDNA - core: add support for ares_search Version 3.0.0b5 =============== - core: add support for ares_search Version 3.0.0b4 =============== - core: give better errors descriptions for AresError - test: add IDNA test using the query() API - cffi: simplify destroying ares channel Version 3.0.0b3 =============== - core: reorganize package - core: automagically encode query names with IDNA Version 3.0.0b2 =============== - errno: fix errorcode dictionary Version 3.0.0b1 =============== - core: add support for ANY queries - cffi: fix memory leak Version 3.0.0b0 =============== - core: drop C backend - core: drop Python < 3.5 support - core: use None instead of -1 for default values - core: set TTL to -1 when we cannot parse it Version 2.4.0 ============= - misc: fix building wheels for unavailable Python versions - test: skip getaddrinfo6 test on Travis - doc: add FreeBSD building instructions - build: fix MinGW build - ci, misc: add support for CPython 3.7 - ci: run on latest PyPy versions on TravisCI - examples: extra examples - ci: fix AppVeyor build - test: fix TXT test - core: fix repr for PTR results Version 2.3.0 ============= - core: fix CPython implementation TTL parsing issue - core: add ability to make queries using the command line - core: fix parsing TXT records with invalid UTF-8 chars - deps: removed unneeded c-ares files - core: update bundled c-ares to 1.13.0 - ci: fix PyPy in Travis Version 2.2.0 ============= - test: fix CNAME test - core: parse TTL in PTR replies - core: parse PTR aliases - doc: fix installation instructions in README - doc: fix Channel.set_local_ip documentation - core: accept local_ip and local_dev as kwargs - ci, misc: add support for CPython 3.6 - ci: only run CI on master - ci: disable some Travis notifications - build: add scripts to build manylinux wheels Version 2.1.1 ============= - cffi: fix setting nameserver in Channel.__init__ - doc: update Sphinx configuration so the docs can be built - core: backport fix for CVE-2016-5180 - cffi: fix structure definition - ci: use PyPy 5.4.1 when testing on Travis Version 2.1.0 ============= - core: fix parsing chunked TXT records Version 2.0.1 ============= - core: fix importing from errno submodule Version 2.0.0 ============= - doc: fix rst syntax in README - sample: fix correctly setting events mask - setup.py: mark as executable and add shebang - tests.py: assertions moved out of cb so C code cannot discard - tests.py: test reverse_address on IPv6 also - tests.py: ensure all query results have proper and bound type - pycares.c: register result struct-sequences in pycares namespace - ci: run tests with PyPy as well - ci: run tests on CPython 3.5 on Travis - test: moved test file to tests/tests.py - test: add Python 3.5 to tox.ini - ci: use PyPy 5 in Travis CI - build: refactor building bundled c-ares - ci: add Python 3.5 to AppVeyor - core: reorganize package - core: add CFFI core implementation - cffi: fix OSX support - cffi: fixup FreeBSD support - doc: MinGW support got axed - doc: update supported Python versions - core: update bundled c-ares to 9642b57 Version 1.0.0 ============= - build: fix build on Windows with Python - channel: return TTL information - channel:don't unnecessarily create a list for CNAME results - core: use inet_pton instead of inet_addr - channel: simplify PTR response handling - channel: make al queries return namedtuple-like objects - build: use setuptools - ci: add appveyor integration - build: enable verbose output when building c-ares - build: fix 64-bit build on Windows - build: drop support for older Python versions - doc: update documentation Version 0.7.0 ============= - setup: Fix decoding in non-UTF-8 environments - build: updated Travis build process - Add rotate option - Update documentation Version 0.6.3 ============= - Fix crash if ares_timeout returns NULL - Fix initializing channel with float timeouts < 1 Version 0.6.2 ============= - Fix crash due to a refcount bug Version 0.6.1 ============= - Raise ValueError if query type is not valid - Re-enabled CNAME test - Fixed importing from errno submodule in Python 3 Version 0.6.0 ============= - Added asyncio integration example - Added event loop integration documantation - Mention Python 3.4 support - Fixed setup_cares.py to properly work with Python 3 - Fix build on BSD systems Version 0.5.0 ============= - Updated to c-ares 1.10.0 Version 0.4.0 ============= - Added support for compiling with Microsoft Visual Studio - Added socket_send_buffer_size, socket_receive_buffer_size, lookups and domains init options - Unified set_local_ip* functions Version 0.3.0 ============= - Simplified gethostbyaddr interface - Added reverse_address method - Added PTR query support - Fixed pyuv resolver example Version 0.2.0 ============= - Fixed checking port number boundaries - Refactored unicode support - Encode given hostnames with idna encoding for gethostbyname and query Version 0.1.0 ============= - Initial release pycares-pycares-3.1.1/LICENSE000066400000000000000000000020561360572117400156440ustar00rootroot00000000000000Copyright (C) 2012 by Saúl Ibarra Corretgé Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. pycares-pycares-3.1.1/MANIFEST.in000066400000000000000000000004141360572117400163710ustar00rootroot00000000000000include README.rst LICENSE ChangeLog include setup.py setup_cares.py tox.ini graft docs graft examples graft tests graft deps graft src recursive-exclude * __pycache__ recursive-exclude * *.py[co] recursive-exclude * *.[ao] recursive-exclude * *.so prune docs/_build pycares-pycares-3.1.1/README.rst000066400000000000000000000063071360572117400163310ustar00rootroot00000000000000pycares: Python interface for c-ares ==================================== .. image:: https://badge.fury.io/py/pycares.png :target: http://badge.fury.io/py/pycares .. image:: https://secure.travis-ci.org/saghul/pycares.png?branch=master :target: http://travis-ci.org/saghul/pycares .. image:: https://ci.appveyor.com/api/projects/status/vx1wbkfq3l7nm1m8?svg=true :target: https://ci.appveyor.com/project/saghul/pycares .. image:: https://github.com/saghul/pycares/workflows/Test%20macOS/badge.svg :target: https://github.com/saghul/pycares/actions) pycares is a Python module which provides an interface to c-ares. `c-ares `_ is a C library that performs DNS requests and name resolutions asynchronously. Documentation ------------- http://readthedocs.org/docs/pycares/ Bundled c-ares -------------- pycares currently bundles c-ares and as of pycares 1.0.0 this is a strong requirement. Upstream c-ares is not willing to apply `a patch adding TTL support `_. I did apply the patch to the bundled c-ares, but unfortunately it breaks the ABI, so attempting to use a system provided c-ares is not possible. Installation ------------ GNU/Linux, macOS, Windows, others: :: pip install pycares FreeBSD: :: cd /usr/ports/dns/py-pycares && make install IDNA 2008 support ^^^^^^^^^^^^^^^^^ If the ``idna`` package is installed, pycares will support IDNA 2008 encodingm otherwise the builtin idna codec will be used, which provides IDNA 2003 support. You can force this at installation time as follows: :: pip install pycares[idna] Running the test suite ---------------------- There are several ways of running the test ruite: - Run the test with the current Python interpreter: From the toplevel directory, run: ``python tests/tests.py`` - Use Tox to run the test suite in several virtualenvs with several interpreters From the toplevel directory, run: ``tox -e py35,py36,py37`` this will run the test suite on Python 3.5, 3.6 and 3.7 (you'll need to have them installed beforehand) Using it from the cli, a la dig ------------------------------- This module can be used directly from the command line in a similar fashion to dig (limited, of course): :: $ python -m pycares google.com ;; QUESTION SECTION: ;google.com IN A ;; ANSWER SECTION: google.com 300 IN A 172.217.17.142 $ python -m pycares mx google.com ;; QUESTION SECTION: ;google.com IN MX ;; ANSWER SECTION: google.com 600 IN MX 50 alt4.aspmx.l.google.com google.com 600 IN MX 10 aspmx.l.google.com google.com 600 IN MX 40 alt3.aspmx.l.google.com google.com 600 IN MX 20 alt1.aspmx.l.google.com google.com 600 IN MX 30 alt2.aspmx.l.google.com Author ------ Saúl Ibarra Corretgé License ------- Unless stated otherwise on-file pycares uses the MIT license, check LICENSE file. Supported Python versions ------------------------- Python >= 3.5 are supported. Both CPython and PyPy are supported. Contributing ------------ If you'd like to contribute, fork the project, make a patch and send a pull request. Have a look at the surrounding code and please, make yours look alike :-) pycares-pycares-3.1.1/appveyor.yml000066400000000000000000000037761360572117400172410ustar00rootroot00000000000000environment: global: # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the # /E:ON and /V:ON options are not enabled in the batch script intepreter # See: http://stackoverflow.com/a/13751649/163740 CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_env.cmd" matrix: - PYTHON: "C:\\Python35" PYTHON_VERSION: "3.5.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python35-x64" PYTHON_VERSION: "3.5.x" PYTHON_ARCH: "64" - PYTHON: "C:\\Python36" PYTHON_VERSION: "3.6.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python36-x64" PYTHON_VERSION: "3.6.x" PYTHON_ARCH: "64" - PYTHON: "C:\\Python37" PYTHON_VERSION: "3.7.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python37-x64" PYTHON_VERSION: "3.7.x" PYTHON_ARCH: "64" - PYTHON: "C:\\Python38" PYTHON_VERSION: "3.8.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python38-x64" PYTHON_VERSION: "3.8.x" PYTHON_ARCH: "64" branches: only: - master install: - ECHO "Filesystem root:" - ps: "ls \"C:/\"" - ECHO "Installed SDKs:" - ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\"" # Install Python (from the official .msi of http://python.org) and pip when # not already installed. - ps: if (-not(Test-Path($env:PYTHON))) { & appveyor\install.ps1 } # Prepend newly installed Python to the PATH of this build (this cannot be # done from inside the powershell script as it would require to restart # the parent CMD process). - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%" # Check that we have the expected version and architecture for Python - "python --version" - "python -c \"import struct; print(struct.calcsize('P') * 8)\"" # Upgrade to the latest version of pip - "python -m pip install --upgrade pip" build: false # Not a C# project, build stuff at the test step instead. test_script: # Build the compiled extension and run the project tests - "%CMD_IN_ENV% python setup.py install" - "%CMD_IN_ENV% python tests/tests.py" pycares-pycares-3.1.1/appveyor/000077500000000000000000000000001360572117400165015ustar00rootroot00000000000000pycares-pycares-3.1.1/appveyor/install.ps1000066400000000000000000000072421360572117400206010ustar00rootroot00000000000000# Sample script to install Python and pip under Windows # Authors: Olivier Grisel, Jonathan Helmus and Kyle Kastner # License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/ $MINICONDA_URL = "http://repo.continuum.io/miniconda/" $BASE_URL = "https://www.python.org/ftp/python/" $GET_PIP_URL = "https://bootstrap.pypa.io/get-pip.py" $GET_PIP_PATH = "C:\get-pip.py" function Download ($filename, $url) { $webclient = New-Object System.Net.WebClient $basedir = $pwd.Path + "\" $filepath = $basedir + $filename if (Test-Path $filename) { Write-Host "Reusing" $filepath return $filepath } # Download and retry up to 3 times in case of network transient errors. Write-Host "Downloading" $filename "from" $url $retry_attempts = 2 for($i=0; $i -lt $retry_attempts; $i++){ try { $webclient.DownloadFile($url, $filepath) break } Catch [Exception]{ Start-Sleep 1 } } if (Test-Path $filepath) { Write-Host "File saved at" $filepath } else { # Retry once to get the error message if any at the last try $webclient.DownloadFile($url, $filepath) } return $filepath } function DownloadPython ($python_version, $platform_suffix) { $version_obj = [version]$python_version if ($version_obj -lt [version]'3.3.0' -and $version_obj.Build -eq 0) { $python_version = "$($version_obj.Major).$($version_obj.Minor)" } $filename = "python-" + $python_version + $platform_suffix + ".msi" $url = $BASE_URL + $python_version + "/" + $filename $filepath = Download $filename $url return $filepath } function InstallPython ($python_version, $architecture, $python_home) { Write-Host "Installing Python" $python_version "for" $architecture "bit architecture to" $python_home if (Test-Path $python_home) { Write-Host $python_home "already exists, skipping." return $false } if ($architecture -eq "32") { $platform_suffix = "" } else { $platform_suffix = ".amd64" } $msipath = DownloadPython $python_version $platform_suffix Write-Host "Installing" $msipath "to" $python_home $install_log = $python_home + ".log" $install_args = "/qn /log $install_log /i $msipath TARGETDIR=$python_home" $uninstall_args = "/qn /x $msipath" RunCommand "msiexec.exe" $install_args if (-not(Test-Path $python_home)) { Write-Host "Python seems to be installed else-where, reinstalling." RunCommand "msiexec.exe" $uninstall_args RunCommand "msiexec.exe" $install_args } if (Test-Path $python_home) { Write-Host "Python $python_version ($architecture) installation complete" } else { Write-Host "Failed to install Python in $python_home" Get-Content -Path $install_log Exit 1 } } function RunCommand ($command, $command_args) { Write-Host $command $command_args Start-Process -FilePath $command -ArgumentList $command_args -Wait -Passthru } function InstallPip ($python_home) { $pip_path = $python_home + "\Scripts\pip.exe" $python_path = $python_home + "\python.exe" if (-not(Test-Path $pip_path)) { Write-Host "Installing pip..." $webclient = New-Object System.Net.WebClient $webclient.DownloadFile($GET_PIP_URL, $GET_PIP_PATH) Write-Host "Executing:" $python_path $GET_PIP_PATH Start-Process -FilePath "$python_path" -ArgumentList "$GET_PIP_PATH" -Wait -Passthru } else { Write-Host "pip already installed." } } function main () { InstallPython $env:PYTHON_VERSION $env:PYTHON_ARCH $env:PYTHON InstallPip $env:PYTHON } main pycares-pycares-3.1.1/appveyor/run_with_env.cmd000066400000000000000000000064461360572117400217070ustar00rootroot00000000000000:: To build extensions for 64 bit Python 3, we need to configure environment :: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of: :: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1) :: :: To build extensions for 64 bit Python 2, we need to configure environment :: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of: :: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0) :: :: 32 bit builds, and 64-bit builds for 3.5 and beyond, do not require specific :: environment configurations. :: :: Note: this script needs to be run with the /E:ON and /V:ON flags for the :: cmd interpreter, at least for (SDK v7.0) :: :: More details at: :: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows :: http://stackoverflow.com/a/13751649/163740 :: :: Author: Olivier Grisel :: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/ :: :: Notes about batch files for Python people: :: :: Quotes in values are literally part of the values: :: SET FOO="bar" :: FOO is now five characters long: " b a r " :: If you don't want quotes, don't include them on the right-hand side. :: :: The CALL lines at the end of this file look redundant, but if you move them :: outside of the IF clauses, they do not run properly in the SET_SDK_64==Y :: case, I don't know why. @ECHO OFF SET COMMAND_TO_RUN=%* SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows SET WIN_WDK=c:\Program Files (x86)\Windows Kits\10\Include\wdf :: Extract the major and minor versions, and allow for the minor version to be :: more than 9. This requires the version number to have two dots in it. SET MAJOR_PYTHON_VERSION=%PYTHON_VERSION:~0,1% IF "%PYTHON_VERSION:~3,1%" == "." ( SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,1% ) ELSE ( SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,2% ) :: Based on the Python version, determine what SDK version to use, and whether :: to set the SDK for 64-bit. IF %MAJOR_PYTHON_VERSION% == 2 ( SET WINDOWS_SDK_VERSION="v7.0" SET SET_SDK_64=Y ) ELSE ( IF %MAJOR_PYTHON_VERSION% == 3 ( SET WINDOWS_SDK_VERSION="v7.1" IF %MINOR_PYTHON_VERSION% LEQ 4 ( SET SET_SDK_64=Y ) ELSE ( SET SET_SDK_64=N IF EXIST "%WIN_WDK%" ( :: See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/ REN "%WIN_WDK%" 0wdf ) ) ) ELSE ( ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%" EXIT 1 ) ) IF %PYTHON_ARCH% == 64 ( IF %SET_SDK_64% == Y ( ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture SET DISTUTILS_USE_SDK=1 SET MSSdk=1 "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION% "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release ECHO Executing: %COMMAND_TO_RUN% call %COMMAND_TO_RUN% || EXIT 1 ) ELSE ( ECHO Using default MSVC build environment for 64 bit architecture ECHO Executing: %COMMAND_TO_RUN% call %COMMAND_TO_RUN% || EXIT 1 ) ) ELSE ( ECHO Using default MSVC build environment for 32 bit architecture ECHO Executing: %COMMAND_TO_RUN% call %COMMAND_TO_RUN% || EXIT 1 ) pycares-pycares-3.1.1/deps/000077500000000000000000000000001360572117400155675ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/000077500000000000000000000000001360572117400167415ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/000077500000000000000000000000001360572117400175305ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/ares.h000066400000000000000000000565111360572117400206430ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2007-2013 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifndef ARES__H #define ARES__H #include "ares_version.h" /* c-ares version defines */ #include "ares_build.h" /* c-ares build definitions */ #include "ares_rules.h" /* c-ares rules enforcement */ /* * Define WIN32 when build target is Win32 API */ #if (defined(_WIN32) || defined(__WIN32__)) && \ !defined(WIN32) && !defined(__SYMBIAN32__) # define WIN32 #endif #include /* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish libc5-based Linux systems. Only include it on system that are known to require it! */ #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ defined(__QNXNTO__) #include #endif #if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) #include #endif #if defined(WATT32) # include # include # include #elif defined(_WIN32_WCE) # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif # include # include #elif defined(WIN32) # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif # include # include # include #else # include # include #endif #if defined(ANDROID) || defined(__ANDROID__) #include #endif #ifdef __cplusplus extern "C" { #endif /* ** c-ares external API function linkage decorations. */ #ifdef CARES_STATICLIB # define CARES_EXTERN #elif (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)) && !defined(__GNUC__) # if defined(CARES_BUILDING_LIBRARY) # define CARES_EXTERN __declspec(dllexport) # else # define CARES_EXTERN __declspec(dllimport) # endif #elif defined(CARES_BUILDING_LIBRARY) && defined(CARES_SYMBOL_HIDING) # define CARES_EXTERN CARES_SYMBOL_SCOPE_EXTERN #else # define CARES_EXTERN #endif #define ARES_SUCCESS 0 /* Server error codes (ARES_ENODATA indicates no relevant answer) */ #define ARES_ENODATA 1 #define ARES_EFORMERR 2 #define ARES_ESERVFAIL 3 #define ARES_ENOTFOUND 4 #define ARES_ENOTIMP 5 #define ARES_EREFUSED 6 /* Locally generated error codes */ #define ARES_EBADQUERY 7 #define ARES_EBADNAME 8 #define ARES_EBADFAMILY 9 #define ARES_EBADRESP 10 #define ARES_ECONNREFUSED 11 #define ARES_ETIMEOUT 12 #define ARES_EOF 13 #define ARES_EFILE 14 #define ARES_ENOMEM 15 #define ARES_EDESTRUCTION 16 #define ARES_EBADSTR 17 /* ares_getnameinfo error codes */ #define ARES_EBADFLAGS 18 /* ares_getaddrinfo error codes */ #define ARES_ENONAME 19 #define ARES_EBADHINTS 20 /* Uninitialized library error code */ #define ARES_ENOTINITIALIZED 21 /* introduced in 1.7.0 */ /* ares_library_init error codes */ #define ARES_ELOADIPHLPAPI 22 /* introduced in 1.7.0 */ #define ARES_EADDRGETNETWORKPARAMS 23 /* introduced in 1.7.0 */ /* More error codes */ #define ARES_ECANCELLED 24 /* introduced in 1.7.0 */ /* Flag values */ #define ARES_FLAG_USEVC (1 << 0) #define ARES_FLAG_PRIMARY (1 << 1) #define ARES_FLAG_IGNTC (1 << 2) #define ARES_FLAG_NORECURSE (1 << 3) #define ARES_FLAG_STAYOPEN (1 << 4) #define ARES_FLAG_NOSEARCH (1 << 5) #define ARES_FLAG_NOALIASES (1 << 6) #define ARES_FLAG_NOCHECKRESP (1 << 7) #define ARES_FLAG_EDNS (1 << 8) /* Option mask values */ #define ARES_OPT_FLAGS (1 << 0) #define ARES_OPT_TIMEOUT (1 << 1) #define ARES_OPT_TRIES (1 << 2) #define ARES_OPT_NDOTS (1 << 3) #define ARES_OPT_UDP_PORT (1 << 4) #define ARES_OPT_TCP_PORT (1 << 5) #define ARES_OPT_SERVERS (1 << 6) #define ARES_OPT_DOMAINS (1 << 7) #define ARES_OPT_LOOKUPS (1 << 8) #define ARES_OPT_SOCK_STATE_CB (1 << 9) #define ARES_OPT_SORTLIST (1 << 10) #define ARES_OPT_SOCK_SNDBUF (1 << 11) #define ARES_OPT_SOCK_RCVBUF (1 << 12) #define ARES_OPT_TIMEOUTMS (1 << 13) #define ARES_OPT_ROTATE (1 << 14) #define ARES_OPT_EDNSPSZ (1 << 15) #define ARES_OPT_NOROTATE (1 << 16) #define ARES_OPT_RESOLVCONF (1 << 17) /* Nameinfo flag values */ #define ARES_NI_NOFQDN (1 << 0) #define ARES_NI_NUMERICHOST (1 << 1) #define ARES_NI_NAMEREQD (1 << 2) #define ARES_NI_NUMERICSERV (1 << 3) #define ARES_NI_DGRAM (1 << 4) #define ARES_NI_TCP 0 #define ARES_NI_UDP ARES_NI_DGRAM #define ARES_NI_SCTP (1 << 5) #define ARES_NI_DCCP (1 << 6) #define ARES_NI_NUMERICSCOPE (1 << 7) #define ARES_NI_LOOKUPHOST (1 << 8) #define ARES_NI_LOOKUPSERVICE (1 << 9) /* Reserved for future use */ #define ARES_NI_IDN (1 << 10) #define ARES_NI_IDN_ALLOW_UNASSIGNED (1 << 11) #define ARES_NI_IDN_USE_STD3_ASCII_RULES (1 << 12) /* Addrinfo flag values */ #define ARES_AI_CANONNAME (1 << 0) #define ARES_AI_NUMERICHOST (1 << 1) #define ARES_AI_PASSIVE (1 << 2) #define ARES_AI_NUMERICSERV (1 << 3) #define ARES_AI_V4MAPPED (1 << 4) #define ARES_AI_ALL (1 << 5) #define ARES_AI_ADDRCONFIG (1 << 6) /* Reserved for future use */ #define ARES_AI_IDN (1 << 10) #define ARES_AI_IDN_ALLOW_UNASSIGNED (1 << 11) #define ARES_AI_IDN_USE_STD3_ASCII_RULES (1 << 12) #define ARES_AI_CANONIDN (1 << 13) #define ARES_AI_MASK (ARES_AI_CANONNAME|ARES_AI_NUMERICHOST|ARES_AI_PASSIVE| \ ARES_AI_NUMERICSERV|ARES_AI_V4MAPPED|ARES_AI_ALL| \ ARES_AI_ADDRCONFIG) #define ARES_GETSOCK_MAXNUM 16 /* ares_getsock() can return info about this many sockets */ #define ARES_GETSOCK_READABLE(bits,num) (bits & (1<< (num))) #define ARES_GETSOCK_WRITABLE(bits,num) (bits & (1 << ((num) + \ ARES_GETSOCK_MAXNUM))) /* c-ares library initialization flag values */ #define ARES_LIB_INIT_NONE (0) #define ARES_LIB_INIT_WIN32 (1 << 0) #define ARES_LIB_INIT_ALL (ARES_LIB_INIT_WIN32) /* * Typedef our socket type */ #ifndef ares_socket_typedef #ifdef WIN32 typedef SOCKET ares_socket_t; #define ARES_SOCKET_BAD INVALID_SOCKET #else typedef int ares_socket_t; #define ARES_SOCKET_BAD -1 #endif #define ares_socket_typedef #endif /* ares_socket_typedef */ typedef void (*ares_sock_state_cb)(void *data, ares_socket_t socket_fd, int readable, int writable); struct apattern; /* NOTE about the ares_options struct to users and developers. This struct will remain looking like this. It will not be extended nor shrunk in future releases, but all new options will be set by ares_set_*() options instead of with the ares_init_options() function. Eventually (in a galaxy far far away), all options will be settable by ares_set_*() options and the ares_init_options() function will become deprecated. When new options are added to c-ares, they are not added to this struct. And they are not "saved" with the ares_save_options() function but instead we encourage the use of the ares_dup() function. Needless to say, if you add config options to c-ares you need to make sure ares_dup() duplicates this new option. */ struct ares_options { int flags; int timeout; /* in seconds or milliseconds, depending on options */ int tries; int ndots; unsigned short udp_port; unsigned short tcp_port; int socket_send_buffer_size; int socket_receive_buffer_size; struct in_addr *servers; int nservers; char **domains; int ndomains; char *lookups; ares_sock_state_cb sock_state_cb; void *sock_state_cb_data; struct apattern *sortlist; int nsort; int ednspsz; char *resolvconf_path; }; struct hostent; struct timeval; struct sockaddr; struct ares_channeldata; typedef struct ares_channeldata *ares_channel; typedef void (*ares_callback)(void *arg, int status, int timeouts, unsigned char *abuf, int alen); typedef void (*ares_host_callback)(void *arg, int status, int timeouts, struct hostent *hostent); typedef void (*ares_nameinfo_callback)(void *arg, int status, int timeouts, char *node, char *service); typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd, int type, void *data); typedef int (*ares_sock_config_callback)(ares_socket_t socket_fd, int type, void *data); CARES_EXTERN int ares_library_init(int flags); CARES_EXTERN int ares_library_init_mem(int flags, void *(*amalloc)(size_t size), void (*afree)(void *ptr), void *(*arealloc)(void *ptr, size_t size)); #if defined(ANDROID) || defined(__ANDROID__) CARES_EXTERN void ares_library_init_jvm(JavaVM *jvm); CARES_EXTERN int ares_library_init_android(jobject connectivity_manager); CARES_EXTERN int ares_library_android_initialized(void); #endif CARES_EXTERN int ares_library_initialized(void); CARES_EXTERN void ares_library_cleanup(void); CARES_EXTERN const char *ares_version(int *version); CARES_EXTERN int ares_init(ares_channel *channelptr); CARES_EXTERN int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask); CARES_EXTERN int ares_save_options(ares_channel channel, struct ares_options *options, int *optmask); CARES_EXTERN void ares_destroy_options(struct ares_options *options); CARES_EXTERN int ares_dup(ares_channel *dest, ares_channel src); CARES_EXTERN void ares_destroy(ares_channel channel); CARES_EXTERN void ares_cancel(ares_channel channel); /* These next 3 configure local binding for the out-going socket * connection. Use these to specify source IP and/or network device * on multi-homed systems. */ CARES_EXTERN void ares_set_local_ip4(ares_channel channel, unsigned int local_ip); /* local_ip6 should be 16 bytes in length */ CARES_EXTERN void ares_set_local_ip6(ares_channel channel, const unsigned char* local_ip6); /* local_dev_name should be null terminated. */ CARES_EXTERN void ares_set_local_dev(ares_channel channel, const char* local_dev_name); CARES_EXTERN void ares_set_socket_callback(ares_channel channel, ares_sock_create_callback callback, void *user_data); CARES_EXTERN void ares_set_socket_configure_callback(ares_channel channel, ares_sock_config_callback callback, void *user_data); CARES_EXTERN int ares_set_sortlist(ares_channel channel, const char *sortstr); /* * Virtual function set to have user-managed socket IO. * Note that all functions need to be defined, and when * set, the library will not do any bind nor set any * socket options, assuming the client handles these * through either socket creation or the * ares_sock_config_callback call. */ struct iovec; struct ares_socket_functions { ares_socket_t(*asocket)(int, int, int, void *); int(*aclose)(ares_socket_t, void *); int(*aconnect)(ares_socket_t, const struct sockaddr *, ares_socklen_t, void *); ares_ssize_t(*arecvfrom)(ares_socket_t, void *, size_t, int, struct sockaddr *, ares_socklen_t *, void *); ares_ssize_t(*asendv)(ares_socket_t, const struct iovec *, int, void *); }; CARES_EXTERN void ares_set_socket_functions(ares_channel channel, const struct ares_socket_functions * funcs, void *user_data); CARES_EXTERN void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen, ares_callback callback, void *arg); CARES_EXTERN void ares_query(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg); CARES_EXTERN void ares_search(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg); CARES_EXTERN void ares_gethostbyname(ares_channel channel, const char *name, int family, ares_host_callback callback, void *arg); CARES_EXTERN int ares_gethostbyname_file(ares_channel channel, const char *name, int family, struct hostent **host); CARES_EXTERN void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen, int family, ares_host_callback callback, void *arg); CARES_EXTERN void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, ares_socklen_t salen, int flags, ares_nameinfo_callback callback, void *arg); CARES_EXTERN int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds); CARES_EXTERN int ares_getsock(ares_channel channel, ares_socket_t *socks, int numsocks); CARES_EXTERN struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv, struct timeval *tv); CARES_EXTERN void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds); CARES_EXTERN void ares_process_fd(ares_channel channel, ares_socket_t read_fd, ares_socket_t write_fd); CARES_EXTERN int ares_create_query(const char *name, int dnsclass, int type, unsigned short id, int rd, unsigned char **buf, int *buflen, int max_udp_size); CARES_EXTERN int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id, int rd, unsigned char **buf, int *buflen); CARES_EXTERN int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen); CARES_EXTERN int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, int alen, unsigned char **s, long *enclen); /* * NOTE: before c-ares 1.7.0 we would most often use the system in6_addr * struct below when ares itself was built, but many apps would use this * private version since the header checked a HAVE_* define for it. Starting * with 1.7.0 we always declare and use our own to stop relying on the * system's one. */ struct ares_in6_addr { union { unsigned char _S6_u8[16]; } _S6_un; }; struct ares_addrttl { struct in_addr ipaddr; int ttl; }; struct ares_addr6ttl { struct ares_in6_addr ip6addr; int ttl; }; struct ares_srv_reply { struct ares_srv_reply *next; char *host; unsigned short priority; unsigned short weight; unsigned short port; int ttl; }; struct ares_mx_reply { struct ares_mx_reply *next; char *host; unsigned short priority; int ttl; }; struct ares_txt_reply { struct ares_txt_reply *next; unsigned char *txt; size_t length; /* length excludes null termination */ int ttl; }; /* NOTE: This structure is a superset of ares_txt_reply */ struct ares_txt_ext { struct ares_txt_ext *next; unsigned char *txt; size_t length; /* 1 - if start of new record * 0 - if a chunk in the same record */ unsigned char record_start; int ttl; }; struct ares_naptr_reply { struct ares_naptr_reply *next; unsigned char *flags; unsigned char *service; unsigned char *regexp; char *replacement; unsigned short order; unsigned short preference; int ttl; }; struct ares_soa_reply { char *nsname; char *hostmaster; unsigned int serial; unsigned int refresh; unsigned int retry; unsigned int expire; unsigned int minttl; int ttl; }; /* ** Parse the buffer, starting at *abuf and of length alen bytes, previously ** obtained from an ares_search call. Put the results in *host, if nonnull. ** Also, if addrttls is nonnull, put up to *naddrttls IPv4 addresses along with ** their TTLs in that array, and set *naddrttls to the number of addresses ** so written. */ CARES_EXTERN int ares_parse_a_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addrttl *addrttls, int *naddrttls); CARES_EXTERN int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addr6ttl *addrttls, int *naddrttls); CARES_EXTERN int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr, int addrlen, int family, struct hostent **host, int *hostttl); CARES_EXTERN int ares_parse_ns_reply(const unsigned char *abuf, int alen, struct hostent **host); CARES_EXTERN int ares_parse_srv_reply(const unsigned char* abuf, int alen, struct ares_srv_reply** srv_out); CARES_EXTERN int ares_parse_mx_reply(const unsigned char* abuf, int alen, struct ares_mx_reply** mx_out); CARES_EXTERN int ares_parse_txt_reply(const unsigned char* abuf, int alen, struct ares_txt_reply** txt_out); CARES_EXTERN int ares_parse_txt_reply_ext(const unsigned char* abuf, int alen, struct ares_txt_ext** txt_out); CARES_EXTERN int ares_parse_naptr_reply(const unsigned char* abuf, int alen, struct ares_naptr_reply** naptr_out); CARES_EXTERN int ares_parse_soa_reply(const unsigned char* abuf, int alen, struct ares_soa_reply** soa_out); CARES_EXTERN void ares_free_string(void *str); CARES_EXTERN void ares_free_hostent(struct hostent *host); CARES_EXTERN void ares_free_data(void *dataptr); CARES_EXTERN const char *ares_strerror(int code); struct ares_addr_node { struct ares_addr_node *next; int family; union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; }; struct ares_addr_port_node { struct ares_addr_port_node *next; int family; union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; int udp_port; int tcp_port; }; CARES_EXTERN int ares_set_servers(ares_channel channel, struct ares_addr_node *servers); CARES_EXTERN int ares_set_servers_ports(ares_channel channel, struct ares_addr_port_node *servers); /* Incomming string format: host[:port][,host[:port]]... */ CARES_EXTERN int ares_set_servers_csv(ares_channel channel, const char* servers); CARES_EXTERN int ares_set_servers_ports_csv(ares_channel channel, const char* servers); CARES_EXTERN int ares_get_servers(ares_channel channel, struct ares_addr_node **servers); CARES_EXTERN int ares_get_servers_ports(ares_channel channel, struct ares_addr_port_node **servers); CARES_EXTERN const char *ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size); CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst); #ifdef __cplusplus } #endif #endif /* ARES__H */ pycares-pycares-3.1.1/deps/c-ares/src/ares__close_sockets.c000066400000000000000000000037141360572117400237120ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_private.h" void ares__close_sockets(ares_channel channel, struct server_state *server) { struct send_request *sendreq; /* Free all pending output buffers. */ while (server->qhead) { /* Advance server->qhead; pull out query as we go. */ sendreq = server->qhead; server->qhead = sendreq->next; if (sendreq->data_storage != NULL) ares_free(sendreq->data_storage); ares_free(sendreq); } server->qtail = NULL; /* Reset any existing input buffer. */ if (server->tcp_buffer) ares_free(server->tcp_buffer); server->tcp_buffer = NULL; server->tcp_lenbuf_pos = 0; /* Reset brokenness */ server->is_broken = 0; /* Close the TCP and UDP sockets. */ if (server->tcp_socket != ARES_SOCKET_BAD) { SOCK_STATE_CALLBACK(channel, server->tcp_socket, 0, 0); ares__socket_close(channel, server->tcp_socket); server->tcp_socket = ARES_SOCKET_BAD; server->tcp_connection_generation = ++channel->tcp_connection_generation; } if (server->udp_socket != ARES_SOCKET_BAD) { SOCK_STATE_CALLBACK(channel, server->udp_socket, 0, 0); ares__socket_close(channel, server->udp_socket); server->udp_socket = ARES_SOCKET_BAD; } } pycares-pycares-3.1.1/deps/c-ares/src/ares__get_hostent.c000066400000000000000000000154551360572117400234020ustar00rootroot00000000000000 /* Copyright 1998, 2011 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #include "ares.h" #include "ares_inet_net_pton.h" #include "ares_nowarn.h" #include "ares_private.h" int ares__get_hostent(FILE *fp, int family, struct hostent **host) { char *line = NULL, *p, *q, **alias; char *txtaddr, *txthost, *txtalias; int status; size_t addrlen, linesize, naliases; struct ares_addr addr; struct hostent *hostent = NULL; *host = NULL; /* Assume failure */ /* Validate family */ switch (family) { case AF_INET: case AF_INET6: case AF_UNSPEC: break; default: return ARES_EBADFAMILY; } while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { /* Trim line comment. */ p = line; while (*p && (*p != '#')) p++; *p = '\0'; /* Trim trailing whitespace. */ q = p - 1; while ((q >= line) && ISSPACE(*q)) q--; *++q = '\0'; /* Skip leading whitespace. */ p = line; while (*p && ISSPACE(*p)) p++; if (!*p) /* Ignore line if empty. */ continue; /* Pointer to start of IPv4 or IPv6 address part. */ txtaddr = p; /* Advance past address part. */ while (*p && !ISSPACE(*p)) p++; if (!*p) /* Ignore line if reached end of line. */ continue; /* Null terminate address part. */ *p = '\0'; /* Advance to host name */ p++; while (*p && ISSPACE(*p)) p++; if (!*p) /* Ignore line if reached end of line. */ continue; /* LCOV_EXCL_LINE: trailing whitespace already stripped */ /* Pointer to start of host name. */ txthost = p; /* Advance past host name. */ while (*p && !ISSPACE(*p)) p++; /* Pointer to start of first alias. */ txtalias = NULL; if (*p) { q = p + 1; while (*q && ISSPACE(*q)) q++; if (*q) txtalias = q; } /* Null terminate host name. */ *p = '\0'; /* find out number of aliases. */ naliases = 0; if (txtalias) { p = txtalias; while (*p) { while (*p && !ISSPACE(*p)) p++; while (*p && ISSPACE(*p)) p++; naliases++; } } /* Convert address string to network address for the requested family. */ addrlen = 0; addr.family = AF_UNSPEC; addr.addrV4.s_addr = INADDR_NONE; if ((family == AF_INET) || (family == AF_UNSPEC)) { addr.addrV4.s_addr = inet_addr(txtaddr); if (addr.addrV4.s_addr != INADDR_NONE) { /* Actual network address family and length. */ addr.family = AF_INET; addrlen = sizeof(addr.addrV4); } } if ((family == AF_INET6) || ((family == AF_UNSPEC) && (!addrlen))) { if (ares_inet_pton(AF_INET6, txtaddr, &addr.addrV6) > 0) { /* Actual network address family and length. */ addr.family = AF_INET6; addrlen = sizeof(addr.addrV6); } } if (!addrlen) /* Ignore line if invalid address string for the requested family. */ continue; /* ** Actual address family possible values are AF_INET and AF_INET6 only. */ /* Allocate memory for the hostent structure. */ hostent = ares_malloc(sizeof(struct hostent)); if (!hostent) break; /* Initialize fields for out of memory condition. */ hostent->h_aliases = NULL; hostent->h_addr_list = NULL; /* Copy official host name. */ hostent->h_name = ares_strdup(txthost); if (!hostent->h_name) break; /* Copy network address. */ hostent->h_addr_list = ares_malloc(2 * sizeof(char *)); if (!hostent->h_addr_list) break; hostent->h_addr_list[1] = NULL; hostent->h_addr_list[0] = ares_malloc(addrlen); if (!hostent->h_addr_list[0]) break; if (addr.family == AF_INET) memcpy(hostent->h_addr_list[0], &addr.addrV4, sizeof(addr.addrV4)); else memcpy(hostent->h_addr_list[0], &addr.addrV6, sizeof(addr.addrV6)); /* Copy aliases. */ hostent->h_aliases = ares_malloc((naliases + 1) * sizeof(char *)); if (!hostent->h_aliases) break; alias = hostent->h_aliases; while (naliases) *(alias + naliases--) = NULL; *alias = NULL; while (txtalias) { p = txtalias; while (*p && !ISSPACE(*p)) p++; q = p; while (*q && ISSPACE(*q)) q++; *p = '\0'; if ((*alias = ares_strdup(txtalias)) == NULL) break; alias++; txtalias = *q ? q : NULL; } if (txtalias) /* Alias memory allocation failure. */ break; /* Copy actual network address family and length. */ hostent->h_addrtype = aresx_sitoss(addr.family); hostent->h_length = aresx_uztoss(addrlen); /* Free line buffer. */ ares_free(line); /* Return hostent successfully */ *host = hostent; return ARES_SUCCESS; } /* If allocated, free line buffer. */ if (line) ares_free(line); if (status == ARES_SUCCESS) { /* Memory allocation failure; clean up. */ if (hostent) { if (hostent->h_name) ares_free((char *) hostent->h_name); if (hostent->h_aliases) { for (alias = hostent->h_aliases; *alias; alias++) ares_free(*alias); ares_free(hostent->h_aliases); } if (hostent->h_addr_list) { if (hostent->h_addr_list[0]) ares_free(hostent->h_addr_list[0]); ares_free(hostent->h_addr_list); } ares_free(hostent); } return ARES_ENOMEM; } return status; } pycares-pycares-3.1.1/deps/c-ares/src/ares__read_line.c000066400000000000000000000042201360572117400227650ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_nowarn.h" #include "ares_private.h" /* This is an internal function. Its contract is to read a line from * a file into a dynamically allocated buffer, zeroing the trailing * newline if there is one. The calling routine may call * ares__read_line multiple times with the same buf and bufsize * pointers; *buf will be reallocated and *bufsize adjusted as * appropriate. The initial value of *buf should be NULL. After the * calling routine is done reading lines, it should free *buf. */ int ares__read_line(FILE *fp, char **buf, size_t *bufsize) { char *newbuf; size_t offset = 0; size_t len; if (*buf == NULL) { *buf = ares_malloc(128); if (!*buf) return ARES_ENOMEM; *bufsize = 128; } for (;;) { int bytestoread = aresx_uztosi(*bufsize - offset); if (!fgets(*buf + offset, bytestoread, fp)) return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF; len = offset + strlen(*buf + offset); if ((*buf)[len - 1] == '\n') { (*buf)[len - 1] = 0; break; } offset = len; if(len < *bufsize - 1) continue; /* Allocate more space. */ newbuf = ares_realloc(*buf, *bufsize * 2); if (!newbuf) { ares_free(*buf); *buf = NULL; return ARES_ENOMEM; } *buf = newbuf; *bufsize *= 2; } return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares__timeval.c000066400000000000000000000060531360572117400225120ustar00rootroot00000000000000 /* Copyright (C) 2008 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_private.h" #if defined(WIN32) && !defined(MSDOS) struct timeval ares__tvnow(void) { /* ** GetTickCount() is available on _all_ Windows versions from W95 up ** to nowadays. Returns milliseconds elapsed since last system boot, ** increases monotonically and wraps once 49.7 days have elapsed. */ struct timeval now; DWORD milliseconds = GetTickCount(); now.tv_sec = milliseconds / 1000; now.tv_usec = (milliseconds % 1000) * 1000; return now; } #elif defined(HAVE_CLOCK_GETTIME_MONOTONIC) struct timeval ares__tvnow(void) { /* ** clock_gettime() is granted to be increased monotonically when the ** monotonic clock is queried. Time starting point is unspecified, it ** could be the system start-up time, the Epoch, or something else, ** in any case the time starting point does not change once that the ** system has started up. */ struct timeval now; struct timespec tsnow; if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) { now.tv_sec = tsnow.tv_sec; now.tv_usec = tsnow.tv_nsec / 1000; } /* ** Even when the configure process has truly detected monotonic clock ** availability, it might happen that it is not actually available at ** run-time. When this occurs simply fallback to other time source. */ #ifdef HAVE_GETTIMEOFDAY else (void)gettimeofday(&now, NULL); /* LCOV_EXCL_LINE */ #else else { now.tv_sec = (long)time(NULL); now.tv_usec = 0; } #endif return now; } #elif defined(HAVE_GETTIMEOFDAY) struct timeval ares__tvnow(void) { /* ** gettimeofday() is not granted to be increased monotonically, due to ** clock drifting and external source time synchronization it can jump ** forward or backward in time. */ struct timeval now; (void)gettimeofday(&now, NULL); return now; } #else struct timeval ares__tvnow(void) { /* ** time() returns the value of time in seconds since the Epoch. */ struct timeval now; now.tv_sec = (long)time(NULL); now.tv_usec = 0; return now; } #endif #if 0 /* Not used */ /* * Make sure that the first argument is the more recent time, as otherwise * we'll get a weird negative time-diff back... * * Returns: the time difference in number of milliseconds. */ long ares__tvdiff(struct timeval newer, struct timeval older) { return (newer.tv_sec-older.tv_sec)*1000+ (newer.tv_usec-older.tv_usec)/1000; } #endif pycares-pycares-3.1.1/deps/c-ares/src/ares_android.c000066400000000000000000000317651360572117400223420ustar00rootroot00000000000000/* Copyright (C) 2017 by John Schember * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #if defined(ANDROID) || defined(__ANDROID__) #include #include "ares_setup.h" #include "ares.h" #include "ares_android.h" #include "ares_private.h" static JavaVM *android_jvm = NULL; static jobject android_connectivity_manager = NULL; /* ConnectivityManager.getActiveNetwork */ static jmethodID android_cm_active_net_mid = NULL; /* ConnectivityManager.getLinkProperties */ static jmethodID android_cm_link_props_mid = NULL; /* LinkProperties.getDnsServers */ static jmethodID android_lp_dns_servers_mid = NULL; /* LinkProperties.getDomains */ static jmethodID android_lp_domains_mid = NULL; /* List.size */ static jmethodID android_list_size_mid = NULL; /* List.get */ static jmethodID android_list_get_mid = NULL; /* InetAddress.getHostAddress */ static jmethodID android_ia_host_addr_mid = NULL; static jclass jni_get_class(JNIEnv *env, const char *path) { jclass cls = NULL; if (env == NULL || path == NULL || *path == '\0') return NULL; cls = (*env)->FindClass(env, path); if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return NULL; } return cls; } static jmethodID jni_get_method_id(JNIEnv *env, jclass cls, const char *func_name, const char *signature) { jmethodID mid = NULL; if (env == NULL || cls == NULL || func_name == NULL || *func_name == '\0' || signature == NULL || *signature == '\0') { return NULL; } mid = (*env)->GetMethodID(env, cls, func_name, signature); if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return NULL; } return mid; } void ares_library_init_jvm(JavaVM *jvm) { android_jvm = jvm; } int ares_library_init_android(jobject connectivity_manager) { JNIEnv *env = NULL; int need_detatch = 0; int res; int ret = ARES_ENOTINITIALIZED; jclass obj_cls = NULL; if (android_jvm == NULL) goto cleanup; res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } if (res != JNI_OK || env == NULL) goto cleanup; android_connectivity_manager = (*env)->NewGlobalRef(env, connectivity_manager); if (android_connectivity_manager == NULL) goto cleanup; /* Initialization has succeeded. Now attempt to cache the methods that will be * called by ares_get_android_server_list. */ ret = ARES_SUCCESS; /* ConnectivityManager in API 1. */ obj_cls = jni_get_class(env, "android/net/ConnectivityManager"); if (obj_cls == NULL) goto cleanup; /* ConnectivityManager.getActiveNetwork in API 23. */ android_cm_active_net_mid = jni_get_method_id(env, obj_cls, "getActiveNetwork", "()Landroid/net/Network;"); if (android_cm_active_net_mid == NULL) goto cleanup; /* ConnectivityManager.getLinkProperties in API 21. */ android_cm_link_props_mid = jni_get_method_id(env, obj_cls, "getLinkProperties", "(Landroid/net/Network;)Landroid/net/LinkProperties;"); if (android_cm_link_props_mid == NULL) goto cleanup; /* LinkProperties in API 21. */ (*env)->DeleteLocalRef(env, obj_cls); obj_cls = jni_get_class(env, "android/net/LinkProperties"); if (obj_cls == NULL) goto cleanup; /* getDnsServers in API 21. */ android_lp_dns_servers_mid = jni_get_method_id(env, obj_cls, "getDnsServers", "()Ljava/util/List;"); if (android_lp_dns_servers_mid == NULL) goto cleanup; /* getDomains in API 21. */ android_lp_domains_mid = jni_get_method_id(env, obj_cls, "getDomains", "()Ljava/lang/String;"); if (android_lp_domains_mid == NULL) goto cleanup; (*env)->DeleteLocalRef(env, obj_cls); obj_cls = jni_get_class(env, "java/util/List"); if (obj_cls == NULL) goto cleanup; android_list_size_mid = jni_get_method_id(env, obj_cls, "size", "()I"); if (android_list_size_mid == NULL) goto cleanup; android_list_get_mid = jni_get_method_id(env, obj_cls, "get", "(I)Ljava/lang/Object;"); if (android_list_get_mid == NULL) goto cleanup; (*env)->DeleteLocalRef(env, obj_cls); obj_cls = jni_get_class(env, "java/net/InetAddress"); if (obj_cls == NULL) goto cleanup; android_ia_host_addr_mid = jni_get_method_id(env, obj_cls, "getHostAddress", "()Ljava/lang/String;"); if (android_ia_host_addr_mid == NULL) goto cleanup; (*env)->DeleteLocalRef(env, obj_cls); goto done; cleanup: if (obj_cls != NULL) (*env)->DeleteLocalRef(env, obj_cls); android_cm_active_net_mid = NULL; android_cm_link_props_mid = NULL; android_lp_dns_servers_mid = NULL; android_lp_domains_mid = NULL; android_list_size_mid = NULL; android_list_get_mid = NULL; android_ia_host_addr_mid = NULL; done: if (need_detatch) (*android_jvm)->DetachCurrentThread(android_jvm); return ret; } int ares_library_android_initialized(void) { if (android_jvm == NULL || android_connectivity_manager == NULL) return ARES_ENOTINITIALIZED; return ARES_SUCCESS; } void ares_library_cleanup_android(void) { JNIEnv *env = NULL; int need_detatch = 0; int res; if (android_jvm == NULL || android_connectivity_manager == NULL) return; res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } if (res != JNI_OK || env == NULL) return; android_cm_active_net_mid = NULL; android_cm_link_props_mid = NULL; android_lp_dns_servers_mid = NULL; android_lp_domains_mid = NULL; android_list_size_mid = NULL; android_list_get_mid = NULL; android_ia_host_addr_mid = NULL; (*env)->DeleteGlobalRef(env, android_connectivity_manager); android_connectivity_manager = NULL; if (need_detatch) (*android_jvm)->DetachCurrentThread(android_jvm); } char **ares_get_android_server_list(size_t max_servers, size_t *num_servers) { JNIEnv *env = NULL; jobject active_network = NULL; jobject link_properties = NULL; jobject server_list = NULL; jobject server = NULL; jstring str = NULL; jint nserv; const char *ch_server_address; int res; size_t i; char **dns_list = NULL; int need_detatch = 0; if (android_jvm == NULL || android_connectivity_manager == NULL || max_servers == 0 || num_servers == NULL) { return NULL; } if (android_cm_active_net_mid == NULL || android_cm_link_props_mid == NULL || android_lp_dns_servers_mid == NULL || android_list_size_mid == NULL || android_list_get_mid == NULL || android_ia_host_addr_mid == NULL) { return NULL; } res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } if (res != JNI_OK || env == NULL) goto done; /* JNI below is equivalent to this Java code. import android.content.Context; import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.Network; import java.net.InetAddress; import java.util.List; ConnectivityManager cm = (ConnectivityManager)this.getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE); Network an = cm.getActiveNetwork(); LinkProperties lp = cm.getLinkProperties(an); List dns = lp.getDnsServers(); for (InetAddress ia: dns) { String ha = ia.getHostAddress(); } Note: The JNI ConnectivityManager object and all method IDs were previously initialized in ares_library_init_android. */ active_network = (*env)->CallObjectMethod(env, android_connectivity_manager, android_cm_active_net_mid); if (active_network == NULL) goto done; link_properties = (*env)->CallObjectMethod(env, android_connectivity_manager, android_cm_link_props_mid, active_network); if (link_properties == NULL) goto done; server_list = (*env)->CallObjectMethod(env, link_properties, android_lp_dns_servers_mid); if (server_list == NULL) goto done; nserv = (*env)->CallIntMethod(env, server_list, android_list_size_mid); if (nserv > (jint)max_servers) nserv = (jint)max_servers; if (nserv <= 0) goto done; *num_servers = (size_t)nserv; dns_list = ares_malloc(sizeof(*dns_list)*(*num_servers)); for (i=0; i<*num_servers; i++) { server = (*env)->CallObjectMethod(env, server_list, android_list_get_mid, (jint)i); dns_list[i] = ares_malloc(64); dns_list[i][0] = 0; if (server == NULL) { continue; } str = (*env)->CallObjectMethod(env, server, android_ia_host_addr_mid); ch_server_address = (*env)->GetStringUTFChars(env, str, 0); strncpy(dns_list[i], ch_server_address, 64); (*env)->ReleaseStringUTFChars(env, str, ch_server_address); (*env)->DeleteLocalRef(env, str); (*env)->DeleteLocalRef(env, server); } done: if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionClear(env); if (server_list != NULL) (*env)->DeleteLocalRef(env, server_list); if (link_properties != NULL) (*env)->DeleteLocalRef(env, link_properties); if (active_network != NULL) (*env)->DeleteLocalRef(env, active_network); if (need_detatch) (*android_jvm)->DetachCurrentThread(android_jvm); return dns_list; } char *ares_get_android_search_domains_list(void) { JNIEnv *env = NULL; jobject active_network = NULL; jobject link_properties = NULL; jstring domains = NULL; const char *domain; int res; size_t i; size_t cnt = 0; char *domain_list = NULL; int need_detatch = 0; if (android_jvm == NULL || android_connectivity_manager == NULL) { return NULL; } if (android_cm_active_net_mid == NULL || android_cm_link_props_mid == NULL || android_lp_domains_mid == NULL) { return NULL; } res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); if (res == JNI_EDETACHED) { env = NULL; res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } if (res != JNI_OK || env == NULL) goto done; /* JNI below is equivalent to this Java code. import android.content.Context; import android.net.ConnectivityManager; import android.net.LinkProperties; ConnectivityManager cm = (ConnectivityManager)this.getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE); Network an = cm.getActiveNetwork(); LinkProperties lp = cm.getLinkProperties(an); String domains = lp.getDomains(); for (String domain: domains.split(",")) { String d = domain; } Note: The JNI ConnectivityManager object and all method IDs were previously initialized in ares_library_init_android. */ active_network = (*env)->CallObjectMethod(env, android_connectivity_manager, android_cm_active_net_mid); if (active_network == NULL) goto done; link_properties = (*env)->CallObjectMethod(env, android_connectivity_manager, android_cm_link_props_mid, active_network); if (link_properties == NULL) goto done; /* Get the domains. It is a common separated list of domains to search. */ domains = (*env)->CallObjectMethod(env, link_properties, android_lp_domains_mid); if (domains == NULL) goto done; /* Split on , */ domain = (*env)->GetStringUTFChars(env, domains, 0); domain_list = ares_strdup(domain); (*env)->ReleaseStringUTFChars(env, domains, domain); (*env)->DeleteLocalRef(env, domains); done: if ((*env)->ExceptionOccurred(env)) (*env)->ExceptionClear(env); if (link_properties != NULL) (*env)->DeleteLocalRef(env, link_properties); if (active_network != NULL) (*env)->DeleteLocalRef(env, active_network); if (need_detatch) (*android_jvm)->DetachCurrentThread(android_jvm); return domain_list; } #else /* warning: ISO C forbids an empty translation unit */ typedef int dummy_make_iso_compilers_happy; #endif pycares-pycares-3.1.1/deps/c-ares/src/ares_android.h000066400000000000000000000017661360572117400223450ustar00rootroot00000000000000/* Copyright (C) 2017 by John Schember * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifndef __ARES_ANDROID_H__ #define __ARES_ANDROID_H__ #if defined(ANDROID) || defined(__ANDROID__) char **ares_get_android_server_list(size_t max_servers, size_t *num_servers); char *ares_get_android_search_domains_list(void); void ares_library_cleanup_android(void); #endif #endif /* __ARES_ANDROID_H__ */ pycares-pycares-3.1.1/deps/c-ares/src/ares_build.h000066400000000000000000000153721360572117400220220ustar00rootroot00000000000000#ifndef __CARES_BUILD_H #define __CARES_BUILD_H /* Copyright (C) 2009 - 2013 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* ================================================================ */ /* NOTES FOR CONFIGURE CAPABLE SYSTEMS */ /* ================================================================ */ /* * NOTE 1: * ------- * * See file ares_build.h.in, run configure, and forget that this file * exists it is only used for non-configure systems. * But you can keep reading if you want ;-) * */ /* ================================================================ */ /* NOTES FOR NON-CONFIGURE SYSTEMS */ /* ================================================================ */ /* * NOTE 1: * ------- * * Nothing in this file is intended to be modified or adjusted by the * c-ares library user nor by the c-ares library builder. * * If you think that something actually needs to be changed, adjusted * or fixed in this file, then, report it on the c-ares development * mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/ * * Try to keep one section per platform, compiler and architecture, * otherwise, if an existing section is reused for a different one and * later on the original is adjusted, probably the piggybacking one can * be adversely changed. * * In order to differentiate between platforms/compilers/architectures * use only compiler built in predefined preprocessor symbols. * * This header file shall only export symbols which are 'cares' or 'CARES' * prefixed, otherwise public name space would be polluted. * * NOTE 2: * ------- * * Right now you might be staring at file ares_build.h.dist or ares_build.h, * this is due to the following reason: file ares_build.h.dist is renamed * to ares_build.h when the c-ares source code distribution archive file is * created. * * File ares_build.h.dist is not included in the distribution archive. * File ares_build.h is not present in the git tree. * * The distributed ares_build.h file is only intended to be used on systems * which can not run the also distributed configure script. * * On systems capable of running the configure script, the configure process * will overwrite the distributed ares_build.h file with one that is suitable * and specific to the library being configured and built, which is generated * from the ares_build.h.in template file. * * If you check out from git on a non-configure platform, you must run the * appropriate buildconf* script to set up ares_build.h and other local files. * */ /* ================================================================ */ /* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */ /* ================================================================ */ #ifdef CARES_TYPEOF_ARES_SOCKLEN_T # error "CARES_TYPEOF_ARES_SOCKLEN_T shall not be defined except in ares_build.h" Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_already_defined #endif /* ================================================================ */ /* EXTERNAL INTERFACE SETTINGS FOR NON-CONFIGURE SYSTEMS ONLY */ /* ================================================================ */ #if defined(__DJGPP__) || defined(__GO32__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__SALFORDC__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__BORLANDC__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__TURBOC__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__WATCOMC__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__POCC__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__LCC__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__SYMBIAN32__) # define CARES_TYPEOF_ARES_SOCKLEN_T unsigned int #elif defined(__MWERKS__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(_WIN32_WCE) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__MINGW32__) # define CARES_TYPEOF_ARES_SOCKLEN_T int #elif defined(__VMS) # define CARES_TYPEOF_ARES_SOCKLEN_T unsigned int #elif defined(__OS400__) # if defined(__ILEC400__) # define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t # define CARES_PULL_SYS_TYPES_H 1 # define CARES_PULL_SYS_SOCKET_H 1 # endif #elif defined(__MVS__) # if defined(__IBMC__) || defined(__IBMCPP__) # define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t # define CARES_PULL_SYS_TYPES_H 1 # define CARES_PULL_SYS_SOCKET_H 1 # endif #elif defined(__370__) # if defined(__IBMC__) || defined(__IBMCPP__) # define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t # define CARES_PULL_SYS_TYPES_H 1 # define CARES_PULL_SYS_SOCKET_H 1 # endif #elif defined(TPF) # define CARES_TYPEOF_ARES_SOCKLEN_T int /* ===================================== */ /* KEEP MSVC THE PENULTIMATE ENTRY */ /* ===================================== */ #elif defined(_MSC_VER) # define CARES_TYPEOF_ARES_SOCKLEN_T int /* ===================================== */ /* KEEP GENERIC GCC THE LAST ENTRY */ /* ===================================== */ #elif defined(__GNUC__) # define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t # define CARES_PULL_SYS_TYPES_H 1 # define CARES_PULL_SYS_SOCKET_H 1 #else # error "Unknown non-configure build target!" Error Compilation_aborted_Unknown_non_configure_build_target #endif /* CARES_PULL_SYS_TYPES_H is defined above when inclusion of header file */ /* sys/types.h is required here to properly make type definitions below. */ #ifdef CARES_PULL_SYS_TYPES_H # include #endif /* CARES_PULL_SYS_SOCKET_H is defined above when inclusion of header file */ /* sys/socket.h is required here to properly make type definitions below. */ #ifdef CARES_PULL_SYS_SOCKET_H # include #endif /* Data type definition of ares_socklen_t. */ #ifdef CARES_TYPEOF_ARES_SOCKLEN_T typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t; #endif /* Data type definition of ares_ssize_t. */ #ifdef _WIN32 # ifdef _WIN64 # define CARES_TYPEOF_ARES_SSIZE_T __int64 # else # define CARES_TYPEOF_ARES_SSIZE_T long # endif #else # define CARES_TYPEOF_ARES_SSIZE_T ssize_t #endif typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t; #endif /* __CARES_BUILD_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_cancel.c000066400000000000000000000042651360572117400221420ustar00rootroot00000000000000 /* Copyright (C) 2004 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include #include "ares.h" #include "ares_private.h" /* * ares_cancel() cancels all ongoing requests/resolves that might be going on * on the given channel. It does NOT kill the channel, use ares_destroy() for * that. */ void ares_cancel(ares_channel channel) { struct query *query; struct list_node list_head_copy; struct list_node* list_head; struct list_node* list_node; int i; if (!ares__is_list_empty(&(channel->all_queries))) { /* Swap list heads, so that only those queries which were present on entry * into this function are cancelled. New queries added by callbacks of * queries being cancelled will not be cancelled themselves. */ list_head = &(channel->all_queries); list_head_copy.prev = list_head->prev; list_head_copy.next = list_head->next; list_head_copy.prev->next = &list_head_copy; list_head_copy.next->prev = &list_head_copy; list_head->prev = list_head; list_head->next = list_head; for (list_node = list_head_copy.next; list_node != &list_head_copy; ) { query = list_node->data; list_node = list_node->next; /* since we're deleting the query */ query->callback(query->arg, ARES_ECANCELLED, 0, NULL, 0); ares__free_query(query); } } if (!(channel->flags & ARES_FLAG_STAYOPEN) && ares__is_list_empty(&(channel->all_queries))) { if (channel->servers) { for (i = 0; i < channel->nservers; i++) ares__close_sockets(channel, &channel->servers[i]); } } } pycares-pycares-3.1.1/deps/c-ares/src/ares_create_query.c000066400000000000000000000143111360572117400233760ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_private.h" #ifndef T_OPT # define T_OPT 41 /* EDNS0 option (meta-RR) */ #endif /* Header format, from RFC 1035: * 1 1 1 1 1 1 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | ID | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * |QR| Opcode |AA|TC|RD|RA| Z | RCODE | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | QDCOUNT | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | ANCOUNT | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | NSCOUNT | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | ARCOUNT | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * * AA, TC, RA, and RCODE are only set in responses. Brief description * of the remaining fields: * ID Identifier to match responses with queries * QR Query (0) or response (1) * Opcode For our purposes, always QUERY * RD Recursion desired * Z Reserved (zero) * QDCOUNT Number of queries * ANCOUNT Number of answers * NSCOUNT Number of name server records * ARCOUNT Number of additional records * * Question format, from RFC 1035: * 1 1 1 1 1 1 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | | * / QNAME / * / / * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | QTYPE | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * | QCLASS | * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ * * The query name is encoded as a series of labels, each represented * as a one-byte length (maximum 63) followed by the text of the * label. The list is terminated by a label of length zero (which can * be thought of as the root domain). */ int ares_create_query(const char *name, int dnsclass, int type, unsigned short id, int rd, unsigned char **bufp, int *buflenp, int max_udp_size) { size_t len; unsigned char *q; const char *p; size_t buflen; unsigned char *buf; /* Set our results early, in case we bail out early with an error. */ *buflenp = 0; *bufp = NULL; /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */ if (ares__is_onion_domain(name)) return ARES_ENOTFOUND; /* Allocate a memory area for the maximum size this packet might need. +2 * is for the length byte and zero termination if no dots or ecscaping is * used. */ len = strlen(name) + 2 + HFIXEDSZ + QFIXEDSZ + (max_udp_size ? EDNSFIXEDSZ : 0); buf = ares_malloc(len); if (!buf) return ARES_ENOMEM; /* Set up the header. */ q = buf; memset(q, 0, HFIXEDSZ); DNS_HEADER_SET_QID(q, id); DNS_HEADER_SET_OPCODE(q, QUERY); if (rd) { DNS_HEADER_SET_RD(q, 1); } else { DNS_HEADER_SET_RD(q, 0); } DNS_HEADER_SET_QDCOUNT(q, 1); if (max_udp_size) { DNS_HEADER_SET_ARCOUNT(q, 1); } /* A name of "." is a screw case for the loop below, so adjust it. */ if (strcmp(name, ".") == 0) name++; /* Start writing out the name after the header. */ q += HFIXEDSZ; while (*name) { if (*name == '.') { ares_free (buf); return ARES_EBADNAME; } /* Count the number of bytes in this label. */ len = 0; for (p = name; *p && *p != '.'; p++) { if (*p == '\\' && *(p + 1) != 0) p++; len++; } if (len > MAXLABEL) { ares_free (buf); return ARES_EBADNAME; } /* Encode the length and copy the data. */ *q++ = (unsigned char)len; for (p = name; *p && *p != '.'; p++) { if (*p == '\\' && *(p + 1) != 0) p++; *q++ = *p; } /* Go to the next label and repeat, unless we hit the end. */ if (!*p) break; name = p + 1; } /* Add the zero-length label at the end. */ *q++ = 0; /* Finish off the question with the type and class. */ DNS_QUESTION_SET_TYPE(q, type); DNS_QUESTION_SET_CLASS(q, dnsclass); q += QFIXEDSZ; if (max_udp_size) { memset(q, 0, EDNSFIXEDSZ); q++; DNS_RR_SET_TYPE(q, T_OPT); DNS_RR_SET_CLASS(q, max_udp_size); q += (EDNSFIXEDSZ-1); } buflen = (q - buf); /* Reject names that are longer than the maximum of 255 bytes that's * specified in RFC 1035 ("To simplify implementations, the total length of * a domain name (i.e., label octets and label length octets) is restricted * to 255 octets or less."). */ if (buflen > (size_t)(MAXCDNAME + HFIXEDSZ + QFIXEDSZ + (max_udp_size ? EDNSFIXEDSZ : 0))) { ares_free (buf); return ARES_EBADNAME; } /* we know this fits in an int at this point */ *buflenp = (int) buflen; *bufp = buf; return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares_data.c000066400000000000000000000145111360572117400216210ustar00rootroot00000000000000 /* Copyright (C) 2009-2013 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include #include "ares.h" #include "ares_data.h" #include "ares_private.h" /* ** ares_free_data() - c-ares external API function. ** ** This function must be used by the application to free data memory that ** has been internally allocated by some c-ares function and for which a ** pointer has already been returned to the calling application. The list ** of c-ares functions returning pointers that must be free'ed using this ** function is: ** ** ares_get_servers() ** ares_parse_srv_reply() ** ares_parse_txt_reply() */ void ares_free_data(void *dataptr) { while (dataptr != NULL) { struct ares_data *ptr; void *next_data = NULL; #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:1684) /* 1684: conversion from pointer to same-sized integral type */ #endif ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data)); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif if (ptr->mark != ARES_DATATYPE_MARK) return; switch (ptr->type) { case ARES_DATATYPE_MX_REPLY: if (ptr->data.mx_reply.next) next_data = ptr->data.mx_reply.next; if (ptr->data.mx_reply.host) ares_free(ptr->data.mx_reply.host); break; case ARES_DATATYPE_SRV_REPLY: if (ptr->data.srv_reply.next) next_data = ptr->data.srv_reply.next; if (ptr->data.srv_reply.host) ares_free(ptr->data.srv_reply.host); break; case ARES_DATATYPE_TXT_REPLY: case ARES_DATATYPE_TXT_EXT: if (ptr->data.txt_reply.next) next_data = ptr->data.txt_reply.next; if (ptr->data.txt_reply.txt) ares_free(ptr->data.txt_reply.txt); break; case ARES_DATATYPE_ADDR_NODE: if (ptr->data.addr_node.next) next_data = ptr->data.addr_node.next; break; case ARES_DATATYPE_ADDR_PORT_NODE: if (ptr->data.addr_port_node.next) next_data = ptr->data.addr_port_node.next; break; case ARES_DATATYPE_NAPTR_REPLY: if (ptr->data.naptr_reply.next) next_data = ptr->data.naptr_reply.next; if (ptr->data.naptr_reply.flags) ares_free(ptr->data.naptr_reply.flags); if (ptr->data.naptr_reply.service) ares_free(ptr->data.naptr_reply.service); if (ptr->data.naptr_reply.regexp) ares_free(ptr->data.naptr_reply.regexp); if (ptr->data.naptr_reply.replacement) ares_free(ptr->data.naptr_reply.replacement); break; case ARES_DATATYPE_SOA_REPLY: if (ptr->data.soa_reply.nsname) ares_free(ptr->data.soa_reply.nsname); if (ptr->data.soa_reply.hostmaster) ares_free(ptr->data.soa_reply.hostmaster); break; default: return; } ares_free(ptr); dataptr = next_data; } } /* ** ares_malloc_data() - c-ares internal helper function. ** ** This function allocates memory for a c-ares private ares_data struct ** for the specified ares_datatype, initializes c-ares private fields ** and zero initializes those which later might be used from the public ** API. It returns an interior pointer which can be passed by c-ares ** functions to the calling application, and that must be free'ed using ** c-ares external API function ares_free_data(). */ void *ares_malloc_data(ares_datatype type) { struct ares_data *ptr; ptr = ares_malloc(sizeof(struct ares_data)); if (!ptr) return NULL; switch (type) { case ARES_DATATYPE_MX_REPLY: ptr->data.mx_reply.next = NULL; ptr->data.mx_reply.host = NULL; ptr->data.mx_reply.priority = 0; break; case ARES_DATATYPE_SRV_REPLY: ptr->data.srv_reply.next = NULL; ptr->data.srv_reply.host = NULL; ptr->data.srv_reply.priority = 0; ptr->data.srv_reply.weight = 0; ptr->data.srv_reply.port = 0; break; case ARES_DATATYPE_TXT_EXT: ptr->data.txt_ext.record_start = 0; /* FALLTHROUGH */ case ARES_DATATYPE_TXT_REPLY: ptr->data.txt_reply.next = NULL; ptr->data.txt_reply.txt = NULL; ptr->data.txt_reply.length = 0; break; case ARES_DATATYPE_ADDR_NODE: ptr->data.addr_node.next = NULL; ptr->data.addr_node.family = 0; memset(&ptr->data.addr_node.addrV6, 0, sizeof(ptr->data.addr_node.addrV6)); break; case ARES_DATATYPE_ADDR_PORT_NODE: ptr->data.addr_port_node.next = NULL; ptr->data.addr_port_node.family = 0; ptr->data.addr_port_node.udp_port = 0; ptr->data.addr_port_node.tcp_port = 0; memset(&ptr->data.addr_port_node.addrV6, 0, sizeof(ptr->data.addr_port_node.addrV6)); break; case ARES_DATATYPE_NAPTR_REPLY: ptr->data.naptr_reply.next = NULL; ptr->data.naptr_reply.flags = NULL; ptr->data.naptr_reply.service = NULL; ptr->data.naptr_reply.regexp = NULL; ptr->data.naptr_reply.replacement = NULL; ptr->data.naptr_reply.order = 0; ptr->data.naptr_reply.preference = 0; break; case ARES_DATATYPE_SOA_REPLY: ptr->data.soa_reply.nsname = NULL; ptr->data.soa_reply.hostmaster = NULL; ptr->data.soa_reply.serial = 0; ptr->data.soa_reply.refresh = 0; ptr->data.soa_reply.retry = 0; ptr->data.soa_reply.expire = 0; ptr->data.soa_reply.minttl = 0; break; default: ares_free(ptr); return NULL; } ptr->mark = ARES_DATATYPE_MARK; ptr->type = type; return &ptr->data; } pycares-pycares-3.1.1/deps/c-ares/src/ares_data.h000066400000000000000000000060631360572117400216310ustar00rootroot00000000000000 /* Copyright (C) 2009-2013 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ typedef enum { ARES_DATATYPE_UNKNOWN = 1, /* unknown data type - introduced in 1.7.0 */ ARES_DATATYPE_SRV_REPLY, /* struct ares_srv_reply - introduced in 1.7.0 */ ARES_DATATYPE_TXT_REPLY, /* struct ares_txt_reply - introduced in 1.7.0 */ ARES_DATATYPE_TXT_EXT, /* struct ares_txt_ext - introduced in 1.11.0 */ ARES_DATATYPE_ADDR_NODE, /* struct ares_addr_node - introduced in 1.7.1 */ ARES_DATATYPE_MX_REPLY, /* struct ares_mx_reply - introduced in 1.7.2 */ ARES_DATATYPE_NAPTR_REPLY,/* struct ares_naptr_reply - introduced in 1.7.6 */ ARES_DATATYPE_SOA_REPLY, /* struct ares_soa_reply - introduced in 1.9.0 */ #if 0 ARES_DATATYPE_ADDR6TTL, /* struct ares_addrttl */ ARES_DATATYPE_ADDRTTL, /* struct ares_addr6ttl */ ARES_DATATYPE_HOSTENT, /* struct hostent */ ARES_DATATYPE_OPTIONS, /* struct ares_options */ #endif ARES_DATATYPE_ADDR_PORT_NODE, /* struct ares_addr_port_node - introduced in 1.11.0 */ ARES_DATATYPE_LAST /* not used - introduced in 1.7.0 */ } ares_datatype; #define ARES_DATATYPE_MARK 0xbead /* * ares_data struct definition is internal to c-ares and shall not * be exposed by the public API in order to allow future changes * and extensions to it without breaking ABI. This will be used * internally by c-ares as the container of multiple types of data * dynamically allocated for which a reference will be returned * to the calling application. * * c-ares API functions returning a pointer to c-ares internally * allocated data will actually be returning an interior pointer * into this ares_data struct. * * All this is 'invisible' to the calling application, the only * requirement is that this kind of data must be free'ed by the * calling application using ares_free_data() with the pointer * it has received from a previous c-ares function call. */ struct ares_data { ares_datatype type; /* Actual data type identifier. */ unsigned int mark; /* Private ares_data signature. */ union { struct ares_txt_reply txt_reply; struct ares_txt_ext txt_ext; struct ares_srv_reply srv_reply; struct ares_addr_node addr_node; struct ares_addr_port_node addr_port_node; struct ares_mx_reply mx_reply; struct ares_naptr_reply naptr_reply; struct ares_soa_reply soa_reply; } data; }; void *ares_malloc_data(ares_datatype type); pycares-pycares-3.1.1/deps/c-ares/src/ares_destroy.c000066400000000000000000000060121360572117400223760ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004-2011 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include #include "ares.h" #include "ares_private.h" void ares_destroy_options(struct ares_options *options) { int i; if(options->servers) ares_free(options->servers); for (i = 0; i < options->ndomains; i++) ares_free(options->domains[i]); if(options->domains) ares_free(options->domains); if(options->sortlist) ares_free(options->sortlist); if(options->lookups) ares_free(options->lookups); if(options->resolvconf_path) ares_free(options->resolvconf_path); } void ares_destroy(ares_channel channel) { int i; struct query *query; struct list_node* list_head; struct list_node* list_node; if (!channel) return; list_head = &(channel->all_queries); for (list_node = list_head->next; list_node != list_head; ) { query = list_node->data; list_node = list_node->next; /* since we're deleting the query */ query->callback(query->arg, ARES_EDESTRUCTION, 0, NULL, 0); ares__free_query(query); } #ifndef NDEBUG /* Freeing the query should remove it from all the lists in which it sits, * so all query lists should be empty now. */ assert(ares__is_list_empty(&(channel->all_queries))); for (i = 0; i < ARES_QID_TABLE_SIZE; i++) { assert(ares__is_list_empty(&(channel->queries_by_qid[i]))); } for (i = 0; i < ARES_TIMEOUT_TABLE_SIZE; i++) { assert(ares__is_list_empty(&(channel->queries_by_timeout[i]))); } #endif ares__destroy_servers_state(channel); if (channel->domains) { for (i = 0; i < channel->ndomains; i++) ares_free(channel->domains[i]); ares_free(channel->domains); } if(channel->sortlist) ares_free(channel->sortlist); if (channel->lookups) ares_free(channel->lookups); if (channel->resolvconf_path) ares_free(channel->resolvconf_path); ares_free(channel); } void ares__destroy_servers_state(ares_channel channel) { struct server_state *server; int i; if (channel->servers) { for (i = 0; i < channel->nservers; i++) { server = &channel->servers[i]; ares__close_sockets(channel, server); assert(ares__is_list_empty(&server->queries_to_server)); } ares_free(channel->servers); channel->servers = NULL; } channel->nservers = -1; } pycares-pycares-3.1.1/deps/c-ares/src/ares_dns.h000066400000000000000000000122721360572117400215030ustar00rootroot00000000000000#ifndef HEADER_CARES_DNS_H #define HEADER_CARES_DNS_H /* Copyright 1998, 2011 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* * Macro DNS__16BIT reads a network short (16 bit) given in network * byte order, and returns its value as an unsigned short. */ #define DNS__16BIT(p) ((unsigned short)((unsigned int) 0xffff & \ (((unsigned int)((unsigned char)(p)[0]) << 8U) | \ ((unsigned int)((unsigned char)(p)[1]))))) /* * Macro DNS__32BIT reads a network long (32 bit) given in network * byte order, and returns its value as an unsigned int. */ #define DNS__32BIT(p) ((unsigned int) \ (((unsigned int)((unsigned char)(p)[0]) << 24U) | \ ((unsigned int)((unsigned char)(p)[1]) << 16U) | \ ((unsigned int)((unsigned char)(p)[2]) << 8U) | \ ((unsigned int)((unsigned char)(p)[3])))) #define DNS__SET16BIT(p, v) (((p)[0] = (unsigned char)(((v) >> 8) & 0xff)), \ ((p)[1] = (unsigned char)((v) & 0xff))) #define DNS__SET32BIT(p, v) (((p)[0] = (unsigned char)(((v) >> 24) & 0xff)), \ ((p)[1] = (unsigned char)(((v) >> 16) & 0xff)), \ ((p)[2] = (unsigned char)(((v) >> 8) & 0xff)), \ ((p)[3] = (unsigned char)((v) & 0xff))) #if 0 /* we cannot use this approach on systems where we can't access 16/32 bit data on un-aligned addresses */ #define DNS__16BIT(p) ntohs(*(unsigned short*)(p)) #define DNS__32BIT(p) ntohl(*(unsigned long*)(p)) #define DNS__SET16BIT(p, v) *(unsigned short*)(p) = htons(v) #define DNS__SET32BIT(p, v) *(unsigned long*)(p) = htonl(v) #endif /* Macros for parsing a DNS header */ #define DNS_HEADER_QID(h) DNS__16BIT(h) #define DNS_HEADER_QR(h) (((h)[2] >> 7) & 0x1) #define DNS_HEADER_OPCODE(h) (((h)[2] >> 3) & 0xf) #define DNS_HEADER_AA(h) (((h)[2] >> 2) & 0x1) #define DNS_HEADER_TC(h) (((h)[2] >> 1) & 0x1) #define DNS_HEADER_RD(h) ((h)[2] & 0x1) #define DNS_HEADER_RA(h) (((h)[3] >> 7) & 0x1) #define DNS_HEADER_Z(h) (((h)[3] >> 4) & 0x7) #define DNS_HEADER_RCODE(h) ((h)[3] & 0xf) #define DNS_HEADER_QDCOUNT(h) DNS__16BIT((h) + 4) #define DNS_HEADER_ANCOUNT(h) DNS__16BIT((h) + 6) #define DNS_HEADER_NSCOUNT(h) DNS__16BIT((h) + 8) #define DNS_HEADER_ARCOUNT(h) DNS__16BIT((h) + 10) /* Macros for constructing a DNS header */ #define DNS_HEADER_SET_QID(h, v) DNS__SET16BIT(h, v) #define DNS_HEADER_SET_QR(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 7)) #define DNS_HEADER_SET_OPCODE(h, v) ((h)[2] |= (unsigned char)(((v) & 0xf) << 3)) #define DNS_HEADER_SET_AA(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 2)) #define DNS_HEADER_SET_TC(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 1)) #define DNS_HEADER_SET_RD(h, v) ((h)[2] |= (unsigned char)((v) & 0x1)) #define DNS_HEADER_SET_RA(h, v) ((h)[3] |= (unsigned char)(((v) & 0x1) << 7)) #define DNS_HEADER_SET_Z(h, v) ((h)[3] |= (unsigned char)(((v) & 0x7) << 4)) #define DNS_HEADER_SET_RCODE(h, v) ((h)[3] |= (unsigned char)((v) & 0xf)) #define DNS_HEADER_SET_QDCOUNT(h, v) DNS__SET16BIT((h) + 4, v) #define DNS_HEADER_SET_ANCOUNT(h, v) DNS__SET16BIT((h) + 6, v) #define DNS_HEADER_SET_NSCOUNT(h, v) DNS__SET16BIT((h) + 8, v) #define DNS_HEADER_SET_ARCOUNT(h, v) DNS__SET16BIT((h) + 10, v) /* Macros for parsing the fixed part of a DNS question */ #define DNS_QUESTION_TYPE(q) DNS__16BIT(q) #define DNS_QUESTION_CLASS(q) DNS__16BIT((q) + 2) /* Macros for constructing the fixed part of a DNS question */ #define DNS_QUESTION_SET_TYPE(q, v) DNS__SET16BIT(q, v) #define DNS_QUESTION_SET_CLASS(q, v) DNS__SET16BIT((q) + 2, v) /* Macros for parsing the fixed part of a DNS resource record */ #define DNS_RR_TYPE(r) DNS__16BIT(r) #define DNS_RR_CLASS(r) DNS__16BIT((r) + 2) #define DNS_RR_TTL(r) DNS__32BIT((r) + 4) #define DNS_RR_LEN(r) DNS__16BIT((r) + 8) /* Macros for constructing the fixed part of a DNS resource record */ #define DNS_RR_SET_TYPE(r, v) DNS__SET16BIT(r, v) #define DNS_RR_SET_CLASS(r, v) DNS__SET16BIT((r) + 2, v) #define DNS_RR_SET_TTL(r, v) DNS__SET32BIT((r) + 4, v) #define DNS_RR_SET_LEN(r, v) DNS__SET16BIT((r) + 8, v) #endif /* HEADER_CARES_DNS_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_expand_name.c000066400000000000000000000141751360572117400231750ustar00rootroot00000000000000 /* Copyright 1998, 2011 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_nowarn.h" #include "ares_private.h" /* for the memdebug */ /* Maximum number of indirections allowed for a name */ #define MAX_INDIRS 50 static int name_length(const unsigned char *encoded, const unsigned char *abuf, int alen); /* Expand an RFC1035-encoded domain name given by encoded. The * containing message is given by abuf and alen. The result given by * *s, which is set to a NUL-terminated allocated buffer. *enclen is * set to the length of the encoded name (not the length of the * expanded name; the goal is to tell the caller how many bytes to * move forward to get past the encoded name). * * In the simple case, an encoded name is a series of labels, each * composed of a one-byte length (limited to values between 0 and 63 * inclusive) followed by the label contents. The name is terminated * by a zero-length label. * * In the more complicated case, a label may be terminated by an * indirection pointer, specified by two bytes with the high bits of * the first byte (corresponding to INDIR_MASK) set to 11. With the * two high bits of the first byte stripped off, the indirection * pointer gives an offset from the beginning of the containing * message with more labels to decode. Indirection can happen an * arbitrary number of times, so we have to detect loops. * * Since the expanded name uses '.' as a label separator, we use * backslashes to escape periods or backslashes in the expanded name. */ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen) { int len, indir = 0; char *q; const unsigned char *p; union { ares_ssize_t sig; size_t uns; } nlen; nlen.sig = name_length(encoded, abuf, alen); if (nlen.sig < 0) return ARES_EBADNAME; *s = ares_malloc(nlen.uns + 1); if (!*s) return ARES_ENOMEM; q = *s; if (nlen.uns == 0) { /* RFC2181 says this should be ".": the root of the DNS tree. * Since this function strips trailing dots though, it becomes "" */ q[0] = '\0'; /* indirect root label (like 0xc0 0x0c) is 2 bytes long (stupid, but valid) */ if ((*encoded & INDIR_MASK) == INDIR_MASK) *enclen = 2L; else *enclen = 1L; /* the caller should move one byte to get past this */ return ARES_SUCCESS; } /* No error-checking necessary; it was all done by name_length(). */ p = encoded; while (*p) { if ((*p & INDIR_MASK) == INDIR_MASK) { if (!indir) { *enclen = aresx_uztosl(p + 2U - encoded); indir = 1; } p = abuf + ((*p & ~INDIR_MASK) << 8 | *(p + 1)); } else { len = *p; p++; while (len--) { if (*p == '.' || *p == '\\') *q++ = '\\'; *q++ = *p; p++; } *q++ = '.'; } } if (!indir) *enclen = aresx_uztosl(p + 1U - encoded); /* Nuke the trailing period if we wrote one. */ if (q > *s) *(q - 1) = 0; else *q = 0; /* zero terminate; LCOV_EXCL_LINE: empty names exit above */ return ARES_SUCCESS; } /* Return the length of the expansion of an encoded domain name, or * -1 if the encoding is invalid. */ static int name_length(const unsigned char *encoded, const unsigned char *abuf, int alen) { int n = 0, offset, indir = 0, top; /* Allow the caller to pass us abuf + alen and have us check for it. */ if (encoded >= abuf + alen) return -1; while (*encoded) { top = (*encoded & INDIR_MASK); if (top == INDIR_MASK) { /* Check the offset and go there. */ if (encoded + 1 >= abuf + alen) return -1; offset = (*encoded & ~INDIR_MASK) << 8 | *(encoded + 1); if (offset >= alen) return -1; encoded = abuf + offset; /* If we've seen more indirects than the message length, * then there's a loop. */ ++indir; if (indir > alen || indir > MAX_INDIRS) return -1; } else if (top == 0x00) { offset = *encoded; if (encoded + offset + 1 >= abuf + alen) return -1; encoded++; while (offset--) { n += (*encoded == '.' || *encoded == '\\') ? 2 : 1; encoded++; } n++; } else { /* RFC 1035 4.1.4 says other options (01, 10) for top 2 * bits are reserved. */ return -1; } } /* If there were any labels at all, then the number of dots is one * less than the number of labels, so subtract one. */ return (n) ? n - 1 : n; } /* Like ares_expand_name but returns EBADRESP in case of invalid input. */ int ares__expand_name_for_response(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen) { int status = ares_expand_name(encoded, abuf, alen, s, enclen); if (status == ARES_EBADNAME) status = ARES_EBADRESP; return status; } pycares-pycares-3.1.1/deps/c-ares/src/ares_expand_string.c000066400000000000000000000035141360572117400235560ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #include "ares.h" #include "ares_private.h" /* for the memdebug */ /* Simply decodes a length-encoded character string. The first byte of the * input is the length of the string to be returned and the bytes thereafter * are the characters of the string. The returned result will be NULL * terminated. */ int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, int alen, unsigned char **s, long *enclen) { unsigned char *q; union { ares_ssize_t sig; size_t uns; } elen; if (encoded == abuf+alen) return ARES_EBADSTR; elen.uns = *encoded; if (encoded+elen.sig+1 > abuf+alen) return ARES_EBADSTR; encoded++; *s = ares_malloc(elen.uns+1); if (*s == NULL) return ARES_ENOMEM; q = *s; strncpy((char *)q, (char *)encoded, elen.uns); q[elen.uns] = '\0'; *s = q; *enclen = (long)(elen.sig+1); return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares_fds.c000066400000000000000000000036571360572117400214750ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_nowarn.h" #include "ares_private.h" int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds) { struct server_state *server; ares_socket_t nfds; int i; /* Are there any active queries? */ int active_queries = !ares__is_list_empty(&(channel->all_queries)); nfds = 0; for (i = 0; i < channel->nservers; i++) { server = &channel->servers[i]; /* We only need to register interest in UDP sockets if we have * outstanding queries. */ if (active_queries && server->udp_socket != ARES_SOCKET_BAD) { FD_SET(server->udp_socket, read_fds); if (server->udp_socket >= nfds) nfds = server->udp_socket + 1; } /* We always register for TCP events, because we want to know * when the other side closes the connection, so we don't waste * time trying to use a broken connection. */ if (server->tcp_socket != ARES_SOCKET_BAD) { FD_SET(server->tcp_socket, read_fds); if (server->qhead) FD_SET(server->tcp_socket, write_fds); if (server->tcp_socket >= nfds) nfds = server->tcp_socket + 1; } } return (int)nfds; } pycares-pycares-3.1.1/deps/c-ares/src/ares_free_hostent.c000066400000000000000000000023561360572117400234010ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETDB_H #include #endif #include "ares.h" #include "ares_private.h" /* for memdebug */ void ares_free_hostent(struct hostent *host) { char **p; if (!host) return; ares_free((char *)(host->h_name)); for (p = host->h_aliases; *p; p++) ares_free(*p); ares_free(host->h_aliases); ares_free(host->h_addr_list[0]); /* no matter if there is one or many entries, there is only one malloc for all of them */ ares_free(host->h_addr_list); ares_free(host); } pycares-pycares-3.1.1/deps/c-ares/src/ares_free_string.c000066400000000000000000000014771360572117400232260ustar00rootroot00000000000000 /* Copyright 2000 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_private.h" void ares_free_string(void *str) { ares_free(str); } pycares-pycares-3.1.1/deps/c-ares/src/ares_getenv.c000066400000000000000000000015421360572117400222000ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares_getenv.h" #ifndef HAVE_GETENV char *ares_getenv(const char *name) { #ifdef _WIN32_WCE return NULL; #endif } #endif pycares-pycares-3.1.1/deps/c-ares/src/ares_getenv.h000066400000000000000000000016031360572117400222030ustar00rootroot00000000000000#ifndef HEADER_CARES_GETENV_H #define HEADER_CARES_GETENV_H /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifndef HAVE_GETENV extern char *ares_getenv(const char *name); #endif #endif /* HEADER_CARES_GETENV_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_gethostbyaddr.c000066400000000000000000000207641360572117400235620ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_inet_net_pton.h" #include "ares_platform.h" #include "ares_private.h" #ifdef WATT32 #undef WIN32 #endif struct addr_query { /* Arguments passed to ares_gethostbyaddr() */ ares_channel channel; struct ares_addr addr; ares_host_callback callback; void *arg; const char *remaining_lookups; int timeouts; }; static void next_lookup(struct addr_query *aquery); static void addr_callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen); static void end_aquery(struct addr_query *aquery, int status, struct hostent *host); static int file_lookup(struct ares_addr *addr, struct hostent **host); static void ptr_rr_name(char *name, const struct ares_addr *addr); void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen, int family, ares_host_callback callback, void *arg) { struct addr_query *aquery; if (family != AF_INET && family != AF_INET6) { callback(arg, ARES_ENOTIMP, 0, NULL); return; } if ((family == AF_INET && addrlen != sizeof(aquery->addr.addrV4)) || (family == AF_INET6 && addrlen != sizeof(aquery->addr.addrV6))) { callback(arg, ARES_ENOTIMP, 0, NULL); return; } aquery = ares_malloc(sizeof(struct addr_query)); if (!aquery) { callback(arg, ARES_ENOMEM, 0, NULL); return; } aquery->channel = channel; if (family == AF_INET) memcpy(&aquery->addr.addrV4, addr, sizeof(aquery->addr.addrV4)); else memcpy(&aquery->addr.addrV6, addr, sizeof(aquery->addr.addrV6)); aquery->addr.family = family; aquery->callback = callback; aquery->arg = arg; aquery->remaining_lookups = channel->lookups; aquery->timeouts = 0; next_lookup(aquery); } static void next_lookup(struct addr_query *aquery) { const char *p; char name[128]; int status; struct hostent *host; for (p = aquery->remaining_lookups; *p; p++) { switch (*p) { case 'b': ptr_rr_name(name, &aquery->addr); aquery->remaining_lookups = p + 1; ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback, aquery); return; case 'f': status = file_lookup(&aquery->addr, &host); /* this status check below previously checked for !ARES_ENOTFOUND, but we should not assume that this single error code is the one that can occur, as that is in fact no longer the case */ if (status == ARES_SUCCESS) { end_aquery(aquery, status, host); return; } break; } } end_aquery(aquery, ARES_ENOTFOUND, NULL); } static void addr_callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen) { struct addr_query *aquery = (struct addr_query *) arg; struct hostent *host; size_t addrlen; aquery->timeouts += timeouts; if (status == ARES_SUCCESS) { if (aquery->addr.family == AF_INET) { addrlen = sizeof(aquery->addr.addrV4); status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV4, (int)addrlen, AF_INET, &host, NULL); } else { addrlen = sizeof(aquery->addr.addrV6); status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV6, (int)addrlen, AF_INET6, &host, NULL); } end_aquery(aquery, status, host); } else if (status == ARES_EDESTRUCTION || status == ARES_ECANCELLED) end_aquery(aquery, status, NULL); else next_lookup(aquery); } static void end_aquery(struct addr_query *aquery, int status, struct hostent *host) { aquery->callback(aquery->arg, status, aquery->timeouts, host); if (host) ares_free_hostent(host); ares_free(aquery); } static int file_lookup(struct ares_addr *addr, struct hostent **host) { FILE *fp; int status; int error; #ifdef WIN32 char PATH_HOSTS[MAX_PATH]; win_platform platform; PATH_HOSTS[0] = '\0'; platform = ares__getplatform(); if (platform == WIN_NT) { char tmp[MAX_PATH]; HKEY hkeyHosts; if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts) == ERROR_SUCCESS) { DWORD dwLength = MAX_PATH; RegQueryValueExA(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, &dwLength); ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH); RegCloseKey(hkeyHosts); } } else if (platform == WIN_9X) GetWindowsDirectoryA(PATH_HOSTS, MAX_PATH); else return ARES_ENOTFOUND; strcat(PATH_HOSTS, WIN_PATH_HOSTS); #elif defined(WATT32) extern const char *_w32_GetHostsFile (void); const char *PATH_HOSTS = _w32_GetHostsFile(); if (!PATH_HOSTS) return ARES_ENOTFOUND; #endif fp = fopen(PATH_HOSTS, "r"); if (!fp) { error = ERRNO; switch(error) { case ENOENT: case ESRCH: return ARES_ENOTFOUND; default: DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, strerror(error))); DEBUGF(fprintf(stderr, "Error opening file: %s\n", PATH_HOSTS)); *host = NULL; return ARES_EFILE; } } while ((status = ares__get_hostent(fp, addr->family, host)) == ARES_SUCCESS) { if (addr->family != (*host)->h_addrtype) { ares_free_hostent(*host); continue; } if (addr->family == AF_INET) { if (memcmp((*host)->h_addr, &addr->addrV4, sizeof(addr->addrV4)) == 0) break; } else if (addr->family == AF_INET6) { if (memcmp((*host)->h_addr, &addr->addrV6, sizeof(addr->addrV6)) == 0) break; } ares_free_hostent(*host); } fclose(fp); if (status == ARES_EOF) status = ARES_ENOTFOUND; if (status != ARES_SUCCESS) *host = NULL; return status; } static void ptr_rr_name(char *name, const struct ares_addr *addr) { if (addr->family == AF_INET) { unsigned long laddr = ntohl(addr->addrV4.s_addr); unsigned long a1 = (laddr >> 24UL) & 0xFFUL; unsigned long a2 = (laddr >> 16UL) & 0xFFUL; unsigned long a3 = (laddr >> 8UL) & 0xFFUL; unsigned long a4 = laddr & 0xFFUL; sprintf(name, "%lu.%lu.%lu.%lu.in-addr.arpa", a4, a3, a2, a1); } else { unsigned char *bytes = (unsigned char *)&addr->addrV6; /* There are too many arguments to do this in one line using * minimally C89-compliant compilers */ sprintf(name, "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.", bytes[15]&0xf, bytes[15] >> 4, bytes[14]&0xf, bytes[14] >> 4, bytes[13]&0xf, bytes[13] >> 4, bytes[12]&0xf, bytes[12] >> 4, bytes[11]&0xf, bytes[11] >> 4, bytes[10]&0xf, bytes[10] >> 4, bytes[9]&0xf, bytes[9] >> 4, bytes[8]&0xf, bytes[8] >> 4); sprintf(name+strlen(name), "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.ip6.arpa", bytes[7]&0xf, bytes[7] >> 4, bytes[6]&0xf, bytes[6] >> 4, bytes[5]&0xf, bytes[5] >> 4, bytes[4]&0xf, bytes[4] >> 4, bytes[3]&0xf, bytes[3] >> 4, bytes[2]&0xf, bytes[2] >> 4, bytes[1]&0xf, bytes[1] >> 4, bytes[0]&0xf, bytes[0] >> 4); } } pycares-pycares-3.1.1/deps/c-ares/src/ares_gethostbyname.c000066400000000000000000000371021360572117400235620ustar00rootroot00000000000000 /* Copyright 1998, 2011, 2013 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #ifdef HAVE_STRINGS_H #include #endif #include "ares.h" #include "ares_inet_net_pton.h" #include "bitncmp.h" #include "ares_platform.h" #include "ares_nowarn.h" #include "ares_private.h" #ifdef WATT32 #undef WIN32 #endif struct host_query { /* Arguments passed to ares_gethostbyname() */ ares_channel channel; char *name; ares_host_callback callback; void *arg; int sent_family; /* this family is what was is being used */ int want_family; /* this family is what is asked for in the API */ const char *remaining_lookups; int timeouts; }; static void next_lookup(struct host_query *hquery, int status_code); static void host_callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen); static void end_hquery(struct host_query *hquery, int status, struct hostent *host); static int fake_hostent(const char *name, int family, ares_host_callback callback, void *arg); static int file_lookup(const char *name, int family, struct hostent **host); static void sort_addresses(struct hostent *host, const struct apattern *sortlist, int nsort); static void sort6_addresses(struct hostent *host, const struct apattern *sortlist, int nsort); static int get_address_index(const struct in_addr *addr, const struct apattern *sortlist, int nsort); static int get6_address_index(const struct ares_in6_addr *addr, const struct apattern *sortlist, int nsort); void ares_gethostbyname(ares_channel channel, const char *name, int family, ares_host_callback callback, void *arg) { struct host_query *hquery; /* Right now we only know how to look up Internet addresses - and unspec means try both basically. */ switch (family) { case AF_INET: case AF_INET6: case AF_UNSPEC: break; default: callback(arg, ARES_ENOTIMP, 0, NULL); return; } /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */ if (ares__is_onion_domain(name)) { callback(arg, ARES_ENOTFOUND, 0, NULL); return; } if (fake_hostent(name, family, callback, arg)) return; /* Allocate and fill in the host query structure. */ hquery = ares_malloc(sizeof(struct host_query)); if (!hquery) { callback(arg, ARES_ENOMEM, 0, NULL); return; } hquery->channel = channel; hquery->name = ares_strdup(name); hquery->want_family = family; hquery->sent_family = -1; /* nothing is sent yet */ if (!hquery->name) { ares_free(hquery); callback(arg, ARES_ENOMEM, 0, NULL); return; } hquery->callback = callback; hquery->arg = arg; hquery->remaining_lookups = channel->lookups; hquery->timeouts = 0; /* Start performing lookups according to channel->lookups. */ next_lookup(hquery, ARES_ECONNREFUSED /* initial error code */); } static void next_lookup(struct host_query *hquery, int status_code) { const char *p; struct hostent *host; int status = status_code; for (p = hquery->remaining_lookups; *p; p++) { switch (*p) { case 'b': /* DNS lookup */ hquery->remaining_lookups = p + 1; if ((hquery->want_family == AF_INET6) || (hquery->want_family == AF_UNSPEC)) { /* if inet6 or unspec, start out with AAAA */ hquery->sent_family = AF_INET6; ares_search(hquery->channel, hquery->name, C_IN, T_AAAA, host_callback, hquery); } else { hquery->sent_family = AF_INET; ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback, hquery); } return; case 'f': /* Host file lookup */ status = file_lookup(hquery->name, hquery->want_family, &host); /* this status check below previously checked for !ARES_ENOTFOUND, but we should not assume that this single error code is the one that can occur, as that is in fact no longer the case */ if (status == ARES_SUCCESS) { end_hquery(hquery, status, host); return; } status = status_code; /* Use original status code */ break; } } end_hquery(hquery, status, NULL); } static void host_callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen) { struct host_query *hquery = (struct host_query *) arg; ares_channel channel = hquery->channel; struct hostent *host = NULL; hquery->timeouts += timeouts; if (status == ARES_SUCCESS) { if (hquery->sent_family == AF_INET) { status = ares_parse_a_reply(abuf, alen, &host, NULL, NULL); if (host && channel->nsort) sort_addresses(host, channel->sortlist, channel->nsort); } else if (hquery->sent_family == AF_INET6) { status = ares_parse_aaaa_reply(abuf, alen, &host, NULL, NULL); if ((status == ARES_ENODATA || status == ARES_EBADRESP || (status == ARES_SUCCESS && host && host->h_addr_list[0] == NULL)) && hquery->want_family == AF_UNSPEC) { /* The query returned something but either there were no AAAA records (e.g. just CNAME) or the response was malformed. Try looking up A instead. */ if (host) ares_free_hostent(host); hquery->sent_family = AF_INET; ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback, hquery); return; } if (host && channel->nsort) sort6_addresses(host, channel->sortlist, channel->nsort); } end_hquery(hquery, status, host); } else if ((status == ARES_ENODATA || status == ARES_EBADRESP || status == ARES_ETIMEOUT) && (hquery->sent_family == AF_INET6 && hquery->want_family == AF_UNSPEC)) { /* The AAAA query yielded no useful result. Now look up an A instead. */ hquery->sent_family = AF_INET; ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback, hquery); } else if (status == ARES_EDESTRUCTION) end_hquery(hquery, status, NULL); else next_lookup(hquery, status); } static void end_hquery(struct host_query *hquery, int status, struct hostent *host) { hquery->callback(hquery->arg, status, hquery->timeouts, host); if (host) ares_free_hostent(host); ares_free(hquery->name); ares_free(hquery); } /* If the name looks like an IP address, fake up a host entry, end the * query immediately, and return true. Otherwise return false. */ static int fake_hostent(const char *name, int family, ares_host_callback callback, void *arg) { struct hostent hostent; char *aliases[1] = { NULL }; char *addrs[2]; int result = 0; struct in_addr in; struct ares_in6_addr in6; if (family == AF_INET || family == AF_INET6) { /* It only looks like an IP address if it's all numbers and dots. */ int numdots = 0, valid = 1; const char *p; for (p = name; *p; p++) { if (!ISDIGIT(*p) && *p != '.') { valid = 0; break; } else if (*p == '.') { numdots++; } } /* if we don't have 3 dots, it is illegal * (although inet_addr doesn't think so). */ if (numdots != 3 || !valid) result = 0; else result = ((in.s_addr = inet_addr(name)) == INADDR_NONE ? 0 : 1); if (result) family = AF_INET; } if (family == AF_INET6) result = (ares_inet_pton(AF_INET6, name, &in6) < 1 ? 0 : 1); if (!result) return 0; if (family == AF_INET) { hostent.h_length = (int)sizeof(struct in_addr); addrs[0] = (char *)∈ } else if (family == AF_INET6) { hostent.h_length = (int)sizeof(struct ares_in6_addr); addrs[0] = (char *)&in6; } /* Duplicate the name, to avoid a constness violation. */ hostent.h_name = ares_strdup(name); if (!hostent.h_name) { callback(arg, ARES_ENOMEM, 0, NULL); return 1; } /* Fill in the rest of the host structure and terminate the query. */ addrs[1] = NULL; hostent.h_aliases = aliases; hostent.h_addrtype = aresx_sitoss(family); hostent.h_addr_list = addrs; callback(arg, ARES_SUCCESS, 0, &hostent); ares_free((char *)(hostent.h_name)); return 1; } /* This is an API method */ int ares_gethostbyname_file(ares_channel channel, const char *name, int family, struct hostent **host) { int result; /* We only take the channel to ensure that ares_init() been called. */ if(channel == NULL) { /* Anything will do, really. This seems fine, and is consistent with other error cases. */ *host = NULL; return ARES_ENOTFOUND; } /* Just chain to the internal implementation we use here; it's exactly * what we want. */ result = file_lookup(name, family, host); if(result != ARES_SUCCESS) { /* We guarantee a NULL hostent on failure. */ *host = NULL; } return result; } static int file_lookup(const char *name, int family, struct hostent **host) { FILE *fp; char **alias; int status; int error; /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */ if (ares__is_onion_domain(name)) return ARES_ENOTFOUND; #ifdef WIN32 char PATH_HOSTS[MAX_PATH]; win_platform platform; PATH_HOSTS[0] = '\0'; platform = ares__getplatform(); if (platform == WIN_NT) { char tmp[MAX_PATH]; HKEY hkeyHosts; if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts) == ERROR_SUCCESS) { DWORD dwLength = MAX_PATH; RegQueryValueExA(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, &dwLength); ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH); RegCloseKey(hkeyHosts); } } else if (platform == WIN_9X) GetWindowsDirectoryA(PATH_HOSTS, MAX_PATH); else return ARES_ENOTFOUND; strcat(PATH_HOSTS, WIN_PATH_HOSTS); #elif defined(WATT32) extern const char *_w32_GetHostsFile (void); const char *PATH_HOSTS = _w32_GetHostsFile(); if (!PATH_HOSTS) return ARES_ENOTFOUND; #endif fp = fopen(PATH_HOSTS, "r"); if (!fp) { error = ERRNO; switch(error) { case ENOENT: case ESRCH: return ARES_ENOTFOUND; default: DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, strerror(error))); DEBUGF(fprintf(stderr, "Error opening file: %s\n", PATH_HOSTS)); *host = NULL; return ARES_EFILE; } } while ((status = ares__get_hostent(fp, family, host)) == ARES_SUCCESS) { if (strcasecmp((*host)->h_name, name) == 0) break; for (alias = (*host)->h_aliases; *alias; alias++) { if (strcasecmp(*alias, name) == 0) break; } if (*alias) break; ares_free_hostent(*host); } fclose(fp); if (status == ARES_EOF) status = ARES_ENOTFOUND; if (status != ARES_SUCCESS) *host = NULL; return status; } static void sort_addresses(struct hostent *host, const struct apattern *sortlist, int nsort) { struct in_addr a1, a2; int i1, i2, ind1, ind2; /* This is a simple insertion sort, not optimized at all. i1 walks * through the address list, with the loop invariant that everything * to the left of i1 is sorted. In the loop body, the value at i1 is moved * back through the list (via i2) until it is in sorted order. */ for (i1 = 0; host->h_addr_list[i1]; i1++) { memcpy(&a1, host->h_addr_list[i1], sizeof(struct in_addr)); ind1 = get_address_index(&a1, sortlist, nsort); for (i2 = i1 - 1; i2 >= 0; i2--) { memcpy(&a2, host->h_addr_list[i2], sizeof(struct in_addr)); ind2 = get_address_index(&a2, sortlist, nsort); if (ind2 <= ind1) break; memcpy(host->h_addr_list[i2 + 1], &a2, sizeof(struct in_addr)); } memcpy(host->h_addr_list[i2 + 1], &a1, sizeof(struct in_addr)); } } /* Find the first entry in sortlist which matches addr. Return nsort * if none of them match. */ static int get_address_index(const struct in_addr *addr, const struct apattern *sortlist, int nsort) { int i; for (i = 0; i < nsort; i++) { if (sortlist[i].family != AF_INET) continue; if (sortlist[i].type == PATTERN_MASK) { if ((addr->s_addr & sortlist[i].mask.addr4.s_addr) == sortlist[i].addrV4.s_addr) break; } else { if (!ares__bitncmp(&addr->s_addr, &sortlist[i].addrV4.s_addr, sortlist[i].mask.bits)) break; } } return i; } static void sort6_addresses(struct hostent *host, const struct apattern *sortlist, int nsort) { struct ares_in6_addr a1, a2; int i1, i2, ind1, ind2; /* This is a simple insertion sort, not optimized at all. i1 walks * through the address list, with the loop invariant that everything * to the left of i1 is sorted. In the loop body, the value at i1 is moved * back through the list (via i2) until it is in sorted order. */ for (i1 = 0; host->h_addr_list[i1]; i1++) { memcpy(&a1, host->h_addr_list[i1], sizeof(struct ares_in6_addr)); ind1 = get6_address_index(&a1, sortlist, nsort); for (i2 = i1 - 1; i2 >= 0; i2--) { memcpy(&a2, host->h_addr_list[i2], sizeof(struct ares_in6_addr)); ind2 = get6_address_index(&a2, sortlist, nsort); if (ind2 <= ind1) break; memcpy(host->h_addr_list[i2 + 1], &a2, sizeof(struct ares_in6_addr)); } memcpy(host->h_addr_list[i2 + 1], &a1, sizeof(struct ares_in6_addr)); } } /* Find the first entry in sortlist which matches addr. Return nsort * if none of them match. */ static int get6_address_index(const struct ares_in6_addr *addr, const struct apattern *sortlist, int nsort) { int i; for (i = 0; i < nsort; i++) { if (sortlist[i].family != AF_INET6) continue; if (!ares__bitncmp(addr, &sortlist[i].addrV6, sortlist[i].mask.bits)) break; } return i; } pycares-pycares-3.1.1/deps/c-ares/src/ares_getnameinfo.c000066400000000000000000000323251360572117400232070ustar00rootroot00000000000000 /* Copyright 2005 by Dominick Meglio * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_GETSERVBYPORT_R # if !defined(GETSERVBYPORT_R_ARGS) || \ (GETSERVBYPORT_R_ARGS < 4) || (GETSERVBYPORT_R_ARGS > 6) # error "you MUST specifiy a valid number of arguments for getservbyport_r" # endif #endif #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #ifdef HAVE_NET_IF_H #include #endif #include "ares.h" #include "ares_ipv6.h" #include "ares_nowarn.h" #include "ares_private.h" struct nameinfo_query { ares_nameinfo_callback callback; void *arg; union { struct sockaddr_in addr4; struct sockaddr_in6 addr6; } addr; int family; int flags; int timeouts; }; #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID #define IPBUFSIZ \ (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") + IF_NAMESIZE) #else #define IPBUFSIZ \ (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")) #endif static void nameinfo_callback(void *arg, int status, int timeouts, struct hostent *host); static char *lookup_service(unsigned short port, int flags, char *buf, size_t buflen); #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int scopeid, char *buf, size_t buflen); #endif STATIC_TESTABLE char *ares_striendstr(const char *s1, const char *s2); void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, ares_socklen_t salen, int flags, ares_nameinfo_callback callback, void *arg) { struct sockaddr_in *addr = NULL; struct sockaddr_in6 *addr6 = NULL; struct nameinfo_query *niquery; unsigned int port = 0; /* Validate socket address family and length */ if ((sa->sa_family == AF_INET) && (salen == sizeof(struct sockaddr_in))) { addr = (struct sockaddr_in *)sa; port = addr->sin_port; } else if ((sa->sa_family == AF_INET6) && (salen == sizeof(struct sockaddr_in6))) { addr6 = (struct sockaddr_in6 *)sa; port = addr6->sin6_port; } else { callback(arg, ARES_ENOTIMP, 0, NULL, NULL); return; } /* If neither, assume they want a host */ if (!(flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST)) flags |= ARES_NI_LOOKUPHOST; /* All they want is a service, no need for DNS */ if ((flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST)) { char buf[33], *service; service = lookup_service((unsigned short)(port & 0xffff), flags, buf, sizeof(buf)); callback(arg, ARES_SUCCESS, 0, NULL, service); return; } /* They want a host lookup */ if ((flags & ARES_NI_LOOKUPHOST)) { /* A numeric host can be handled without DNS */ if ((flags & ARES_NI_NUMERICHOST)) { char ipbuf[IPBUFSIZ]; char srvbuf[33]; char *service = NULL; ipbuf[0] = 0; /* Specifying not to lookup a host, but then saying a host * is required has to be illegal. */ if (flags & ARES_NI_NAMEREQD) { callback(arg, ARES_EBADFLAGS, 0, NULL, NULL); return; } if (salen == sizeof(struct sockaddr_in6)) { ares_inet_ntop(AF_INET6, &addr6->sin6_addr, ipbuf, IPBUFSIZ); /* If the system supports scope IDs, use it */ #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID append_scopeid(addr6, flags, ipbuf, sizeof(ipbuf)); #endif } else { ares_inet_ntop(AF_INET, &addr->sin_addr, ipbuf, IPBUFSIZ); } /* They also want a service */ if (flags & ARES_NI_LOOKUPSERVICE) service = lookup_service((unsigned short)(port & 0xffff), flags, srvbuf, sizeof(srvbuf)); callback(arg, ARES_SUCCESS, 0, ipbuf, service); return; } /* This is where a DNS lookup becomes necessary */ else { niquery = ares_malloc(sizeof(struct nameinfo_query)); if (!niquery) { callback(arg, ARES_ENOMEM, 0, NULL, NULL); return; } niquery->callback = callback; niquery->arg = arg; niquery->flags = flags; niquery->timeouts = 0; if (sa->sa_family == AF_INET) { niquery->family = AF_INET; memcpy(&niquery->addr.addr4, addr, sizeof(niquery->addr.addr4)); ares_gethostbyaddr(channel, &addr->sin_addr, sizeof(struct in_addr), AF_INET, nameinfo_callback, niquery); } else { niquery->family = AF_INET6; memcpy(&niquery->addr.addr6, addr6, sizeof(niquery->addr.addr6)); ares_gethostbyaddr(channel, &addr6->sin6_addr, sizeof(struct ares_in6_addr), AF_INET6, nameinfo_callback, niquery); } } } } static void nameinfo_callback(void *arg, int status, int timeouts, struct hostent *host) { struct nameinfo_query *niquery = (struct nameinfo_query *) arg; char srvbuf[33]; char *service = NULL; niquery->timeouts += timeouts; if (status == ARES_SUCCESS) { /* They want a service too */ if (niquery->flags & ARES_NI_LOOKUPSERVICE) { if (niquery->family == AF_INET) service = lookup_service(niquery->addr.addr4.sin_port, niquery->flags, srvbuf, sizeof(srvbuf)); else service = lookup_service(niquery->addr.addr6.sin6_port, niquery->flags, srvbuf, sizeof(srvbuf)); } /* NOFQDN means we have to strip off the domain name portion. We do this by determining our own domain name, then searching the string for this domain name and removing it. */ #ifdef HAVE_GETHOSTNAME if (niquery->flags & ARES_NI_NOFQDN) { char buf[255]; char *domain; gethostname(buf, 255); if ((domain = strchr(buf, '.')) != NULL) { char *end = ares_striendstr(host->h_name, domain); if (end) *end = 0; } } #endif niquery->callback(niquery->arg, ARES_SUCCESS, niquery->timeouts, (char *)(host->h_name), service); ares_free(niquery); return; } /* We couldn't find the host, but it's OK, we can use the IP */ else if (status == ARES_ENOTFOUND && !(niquery->flags & ARES_NI_NAMEREQD)) { char ipbuf[IPBUFSIZ]; if (niquery->family == AF_INET) ares_inet_ntop(AF_INET, &niquery->addr.addr4.sin_addr, ipbuf, IPBUFSIZ); else { ares_inet_ntop(AF_INET6, &niquery->addr.addr6.sin6_addr, ipbuf, IPBUFSIZ); #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID append_scopeid(&niquery->addr.addr6, niquery->flags, ipbuf, sizeof(ipbuf)); #endif } /* They want a service too */ if (niquery->flags & ARES_NI_LOOKUPSERVICE) { if (niquery->family == AF_INET) service = lookup_service(niquery->addr.addr4.sin_port, niquery->flags, srvbuf, sizeof(srvbuf)); else service = lookup_service(niquery->addr.addr6.sin6_port, niquery->flags, srvbuf, sizeof(srvbuf)); } niquery->callback(niquery->arg, ARES_SUCCESS, niquery->timeouts, ipbuf, service); ares_free(niquery); return; } niquery->callback(niquery->arg, status, niquery->timeouts, NULL, NULL); ares_free(niquery); } static char *lookup_service(unsigned short port, int flags, char *buf, size_t buflen) { const char *proto; struct servent *sep; #ifdef HAVE_GETSERVBYPORT_R struct servent se; #endif char tmpbuf[4096]; char *name; size_t name_len; if (port) { if (flags & ARES_NI_NUMERICSERV) sep = NULL; else { if (flags & ARES_NI_UDP) proto = "udp"; else if (flags & ARES_NI_SCTP) proto = "sctp"; else if (flags & ARES_NI_DCCP) proto = "dccp"; else proto = "tcp"; #ifdef HAVE_GETSERVBYPORT_R memset(&se, 0, sizeof(se)); sep = &se; memset(tmpbuf, 0, sizeof(tmpbuf)); #if GETSERVBYPORT_R_ARGS == 6 if (getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf), &sep) != 0) sep = NULL; /* LCOV_EXCL_LINE: buffer large so this never fails */ #elif GETSERVBYPORT_R_ARGS == 5 sep = getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf)); #elif GETSERVBYPORT_R_ARGS == 4 if (getservbyport_r(port, proto, &se, (void *)tmpbuf) != 0) sep = NULL; #else /* Lets just hope the OS uses TLS! */ sep = getservbyport(port, proto); #endif #else /* Lets just hope the OS uses TLS! */ #if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) sep = getservbyport(port, (char*)proto); #else sep = getservbyport(port, proto); #endif #endif } if (sep && sep->s_name) { /* get service name */ name = sep->s_name; } else { /* get port as a string */ sprintf(tmpbuf, "%u", (unsigned int)ntohs(port)); name = tmpbuf; } name_len = strlen(name); if (name_len < buflen) /* return it if buffer big enough */ memcpy(buf, name, name_len + 1); else /* avoid reusing previous one */ buf[0] = '\0'; /* LCOV_EXCL_LINE: no real service names are too big */ return buf; } buf[0] = '\0'; return NULL; } #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int flags, char *buf, size_t buflen) { #ifdef HAVE_IF_INDEXTONAME int is_ll, is_mcll; #endif char tmpbuf[IF_NAMESIZE + 2]; size_t bufl; int is_scope_long = sizeof(addr6->sin6_scope_id) > sizeof(unsigned int); tmpbuf[0] = '%'; #ifdef HAVE_IF_INDEXTONAME is_ll = IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr); is_mcll = IN6_IS_ADDR_MC_LINKLOCAL(&addr6->sin6_addr); if ((flags & ARES_NI_NUMERICSCOPE) || (!is_ll && !is_mcll)) { if (is_scope_long) { sprintf(&tmpbuf[1], "%lu", (unsigned long)addr6->sin6_scope_id); } else { sprintf(&tmpbuf[1], "%u", (unsigned int)addr6->sin6_scope_id); } } else { if (if_indextoname(addr6->sin6_scope_id, &tmpbuf[1]) == NULL) { if (is_scope_long) { sprintf(&tmpbuf[1], "%lu", (unsigned long)addr6->sin6_scope_id); } else { sprintf(&tmpbuf[1], "%u", (unsigned int)addr6->sin6_scope_id); } } } #else if (is_scope_long) { sprintf(&tmpbuf[1], "%lu", (unsigned long)addr6->sin6_scope_id); } else { sprintf(&tmpbuf[1], "%u", (unsigned int)addr6->sin6_scope_id); } (void) flags; #endif tmpbuf[IF_NAMESIZE + 1] = '\0'; bufl = strlen(buf); if(bufl + strlen(tmpbuf) < buflen) /* only append the scopeid string if it fits in the target buffer */ strcpy(&buf[bufl], tmpbuf); } #endif /* Determines if s1 ends with the string in s2 (case-insensitive) */ STATIC_TESTABLE char *ares_striendstr(const char *s1, const char *s2) { const char *c1, *c2, *c1_begin; int lo1, lo2; size_t s1_len = strlen(s1), s2_len = strlen(s2); /* If the substr is longer than the full str, it can't match */ if (s2_len > s1_len) return NULL; /* Jump to the end of s1 minus the length of s2 */ c1_begin = s1+s1_len-s2_len; c1 = (const char *)c1_begin; c2 = s2; while (c2 < s2+s2_len) { lo1 = TOLOWER(*c1); lo2 = TOLOWER(*c2); if (lo1 != lo2) return NULL; else { c1++; c2++; } } return (char *)c1_begin; } int ares__is_onion_domain(const char *name) { if (ares_striendstr(name, ".onion")) return 1; if (ares_striendstr(name, ".onion.")) return 1; return 0; } pycares-pycares-3.1.1/deps/c-ares/src/ares_getopt.c000066400000000000000000000107211360572117400222110ustar00rootroot00000000000000/* * Original file name getopt.c Initial import into the c-ares source tree * on 2007-04-11. Lifted from version 5.2 of the 'Open Mash' project with * the modified BSD license, BSD license without the advertising clause. * */ /* * getopt.c -- * * Standard UNIX getopt function. Code is from BSD. * * Copyright (c) 1987-2001 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * A. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * B. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * C. Neither the names of the copyright holders nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* #if !defined(lint) * static char sccsid[] = "@(#)getopt.c 8.2 (Berkeley) 4/2/94"; * #endif */ #include #include #include #include "ares_getopt.h" int opterr = 1, /* if error message should be printed */ optind = 1; /* index into parent argv vector */ int optopt = 0; /* character checked for validity */ static int optreset; /* reset getopt */ char *optarg; /* argument associated with option */ #define BADCH (int)'?' #define BADARG (int)':' #define EMSG (char *)"" /* * ares_getopt -- * Parse argc/argv argument vector. */ int ares_getopt(int nargc, char * const nargv[], const char *ostr) { static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ if (optreset || !*place) { /* update scanning pointer */ optreset = 0; if (optind >= nargc || *(place = nargv[optind]) != '-') { place = EMSG; return (EOF); } if (place[1] && *++place == '-') { /* found "--" */ ++optind; place = EMSG; return (EOF); } } /* option letter okay? */ if ((optopt = (int)*place++) == (int)':' || (oli = strchr(ostr, optopt)) == NULL) { /* * if the user didn't specify '-' as an option, * assume it means EOF. */ if (optopt == (int)'-') return (EOF); if (!*place) ++optind; if (opterr && *ostr != ':') (void)fprintf(stderr, "%s: illegal option -- %c\n", __FILE__, optopt); return (BADCH); } if (*++oli != ':') { /* don't need argument */ optarg = NULL; if (!*place) ++optind; } else { /* need an argument */ if (*place) /* no white space */ optarg = place; else if (nargc <= ++optind) { /* no arg */ place = EMSG; if (*ostr == ':') return (BADARG); if (opterr) (void)fprintf(stderr, "%s: option requires an argument -- %c\n", __FILE__, optopt); return (BADCH); } else /* white space */ optarg = nargv[optind]; place = EMSG; ++optind; } return (optopt); /* dump back option letter */ } pycares-pycares-3.1.1/deps/c-ares/src/ares_getopt.h000066400000000000000000000040051360572117400222140ustar00rootroot00000000000000#ifndef ARES_GETOPT_H #define ARES_GETOPT_H /* * Copyright (c) 1987-2001 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * A. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * B. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * C. Neither the names of the copyright holders nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ int ares_getopt(int nargc, char * const nargv[], const char *ostr); #undef optarg #undef optind #undef opterr #undef optopt #undef optreset #define optarg ares_optarg #define optind ares_optind #define opterr ares_opterr #define optopt ares_optopt #define optreset ares_optreset extern char *optarg; extern int optind; extern int opterr; extern int optopt; #endif /* ARES_GETOPT_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_getsock.c000066400000000000000000000044001360572117400223430ustar00rootroot00000000000000 /* Copyright (C) 2005 - 2010, Daniel Stenberg * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_private.h" int ares_getsock(ares_channel channel, ares_socket_t *socks, int numsocks) /* size of the 'socks' array */ { struct server_state *server; int i; int sockindex=0; int bitmap = 0; unsigned int setbits = 0xffffffff; /* Are there any active queries? */ int active_queries = !ares__is_list_empty(&(channel->all_queries)); for (i = 0; i < channel->nservers; i++) { server = &channel->servers[i]; /* We only need to register interest in UDP sockets if we have * outstanding queries. */ if (active_queries && server->udp_socket != ARES_SOCKET_BAD) { if(sockindex >= numsocks || sockindex >= ARES_GETSOCK_MAXNUM) break; socks[sockindex] = server->udp_socket; bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex); sockindex++; } /* We always register for TCP events, because we want to know * when the other side closes the connection, so we don't waste * time trying to use a broken connection. */ if (server->tcp_socket != ARES_SOCKET_BAD) { if(sockindex >= numsocks || sockindex >= ARES_GETSOCK_MAXNUM) break; socks[sockindex] = server->tcp_socket; bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex); if (server->qhead && active_queries) /* then the tcp socket is also writable! */ bitmap |= ARES_GETSOCK_WRITABLE(setbits, sockindex); sockindex++; } } return bitmap; } pycares-pycares-3.1.1/deps/c-ares/src/ares_inet_net_pton.h000066400000000000000000000017261360572117400235660ustar00rootroot00000000000000#ifndef HEADER_CARES_INET_NET_PTON_H #define HEADER_CARES_INET_NET_PTON_H /* Copyright (C) 2005-2013 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifdef HAVE_INET_NET_PTON #define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z) #else int ares_inet_net_pton(int af, const char *src, void *dst, size_t size); #endif #endif /* HEADER_CARES_INET_NET_PTON_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_init.c000066400000000000000000002244321360572117400216600ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2007-2013 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_NETDB_H #include #endif #ifdef HAVE_ARPA_INET_H #include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #if defined(ANDROID) || defined(__ANDROID__) #include #include "ares_android.h" /* From the Bionic sources */ #define DNS_PROP_NAME_PREFIX "net.dns" #define MAX_DNS_PROPERTIES 8 #endif #if defined(CARES_USE_LIBRESOLV) #include #endif #include "ares.h" #include "ares_inet_net_pton.h" #include "ares_library_init.h" #include "ares_nowarn.h" #include "ares_platform.h" #include "ares_private.h" #ifdef WATT32 #undef WIN32 /* Redefined in MingW/MSVC headers */ #endif static int init_by_options(ares_channel channel, const struct ares_options *options, int optmask); static int init_by_environment(ares_channel channel); static int init_by_resolv_conf(ares_channel channel); static int init_by_defaults(ares_channel channel); #ifndef WATT32 static int config_nameserver(struct server_state **servers, int *nservers, char *str); #endif static int set_search(ares_channel channel, const char *str); static int set_options(ares_channel channel, const char *str); static const char *try_option(const char *p, const char *q, const char *opt); static int init_id_key(rc4_key* key,int key_data_len); static int config_sortlist(struct apattern **sortlist, int *nsort, const char *str); static int sortlist_alloc(struct apattern **sortlist, int *nsort, struct apattern *pat); static int ip_addr(const char *s, ares_ssize_t len, struct in_addr *addr); static void natural_mask(struct apattern *pat); #if !defined(WIN32) && !defined(WATT32) && \ !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) static int config_domain(ares_channel channel, char *str); static int config_lookup(ares_channel channel, const char *str, const char *bindch, const char *altbindch, const char *filech); static char *try_config(char *s, const char *opt, char scc); #endif #define ARES_CONFIG_CHECK(x) (x->lookups && x->nsort > -1 && \ x->nservers > -1 && \ x->ndomains > -1 && \ x->ndots > -1 && x->timeout > -1 && \ x->tries > -1) int ares_init(ares_channel *channelptr) { return ares_init_options(channelptr, NULL, 0); } int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask) { ares_channel channel; int i; int status = ARES_SUCCESS; struct timeval now; #ifdef CURLDEBUG const char *env = getenv("CARES_MEMDEBUG"); if (env) curl_memdebug(env); env = getenv("CARES_MEMLIMIT"); if (env) { char *endptr; long num = strtol(env, &endptr, 10); if((endptr != env) && (endptr == env + strlen(env)) && (num > 0)) curl_memlimit(num); } #endif if (ares_library_initialized() != ARES_SUCCESS) return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ channel = ares_malloc(sizeof(struct ares_channeldata)); if (!channel) { *channelptr = NULL; return ARES_ENOMEM; } now = ares__tvnow(); /* Set everything to distinguished values so we know they haven't * been set yet. */ channel->flags = -1; channel->timeout = -1; channel->tries = -1; channel->ndots = -1; channel->rotate = -1; channel->udp_port = -1; channel->tcp_port = -1; channel->ednspsz = -1; channel->socket_send_buffer_size = -1; channel->socket_receive_buffer_size = -1; channel->nservers = -1; channel->ndomains = -1; channel->nsort = -1; channel->tcp_connection_generation = 0; channel->lookups = NULL; channel->domains = NULL; channel->sortlist = NULL; channel->servers = NULL; channel->sock_state_cb = NULL; channel->sock_state_cb_data = NULL; channel->sock_create_cb = NULL; channel->sock_create_cb_data = NULL; channel->sock_config_cb = NULL; channel->sock_config_cb_data = NULL; channel->sock_funcs = NULL; channel->sock_func_cb_data = NULL; channel->resolvconf_path = NULL; channel->last_server = 0; channel->last_timeout_processed = (time_t)now.tv_sec; memset(&channel->local_dev_name, 0, sizeof(channel->local_dev_name)); channel->local_ip4 = 0; memset(&channel->local_ip6, 0, sizeof(channel->local_ip6)); /* Initialize our lists of queries */ ares__init_list_head(&(channel->all_queries)); for (i = 0; i < ARES_QID_TABLE_SIZE; i++) { ares__init_list_head(&(channel->queries_by_qid[i])); } for (i = 0; i < ARES_TIMEOUT_TABLE_SIZE; i++) { ares__init_list_head(&(channel->queries_by_timeout[i])); } /* Initialize configuration by each of the four sources, from highest * precedence to lowest. */ status = init_by_options(channel, options, optmask); if (status != ARES_SUCCESS) { DEBUGF(fprintf(stderr, "Error: init_by_options failed: %s\n", ares_strerror(status))); /* If we fail to apply user-specified options, fail the whole init process */ goto done; } status = init_by_environment(channel); if (status != ARES_SUCCESS) DEBUGF(fprintf(stderr, "Error: init_by_environment failed: %s\n", ares_strerror(status))); if (status == ARES_SUCCESS) { status = init_by_resolv_conf(channel); if (status != ARES_SUCCESS) DEBUGF(fprintf(stderr, "Error: init_by_resolv_conf failed: %s\n", ares_strerror(status))); } /* * No matter what failed or succeeded, seed defaults to provide * useful behavior for things that we missed. */ status = init_by_defaults(channel); if (status != ARES_SUCCESS) DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n", ares_strerror(status))); /* Generate random key */ if (status == ARES_SUCCESS) { status = init_id_key(&channel->id_key, ARES_ID_KEY_LEN); if (status == ARES_SUCCESS) channel->next_id = ares__generate_new_id(&channel->id_key); else DEBUGF(fprintf(stderr, "Error: init_id_key failed: %s\n", ares_strerror(status))); } done: if (status != ARES_SUCCESS) { /* Something failed; clean up memory we may have allocated. */ if (channel->servers) ares_free(channel->servers); if (channel->ndomains != -1) ares_strsplit_free(channel->domains, channel->ndomains); if (channel->sortlist) ares_free(channel->sortlist); if(channel->lookups) ares_free(channel->lookups); if(channel->resolvconf_path) ares_free(channel->resolvconf_path); ares_free(channel); return status; } /* Trim to one server if ARES_FLAG_PRIMARY is set. */ if ((channel->flags & ARES_FLAG_PRIMARY) && channel->nservers > 1) channel->nservers = 1; ares__init_servers_state(channel); *channelptr = channel; return ARES_SUCCESS; } /* ares_dup() duplicates a channel handle with all its options and returns a new channel handle */ int ares_dup(ares_channel *dest, ares_channel src) { struct ares_options opts; struct ares_addr_port_node *servers; int non_v4_default_port = 0; int i, rc; int optmask; *dest = NULL; /* in case of failure return NULL explicitly */ /* First get the options supported by the old ares_save_options() function, which is most of them */ rc = ares_save_options(src, &opts, &optmask); if(rc) { ares_destroy_options(&opts); return rc; } /* Then create the new channel with those options */ rc = ares_init_options(dest, &opts, optmask); /* destroy the options copy to not leak any memory */ ares_destroy_options(&opts); if(rc) return rc; /* Now clone the options that ares_save_options() doesn't support. */ (*dest)->sock_create_cb = src->sock_create_cb; (*dest)->sock_create_cb_data = src->sock_create_cb_data; (*dest)->sock_config_cb = src->sock_config_cb; (*dest)->sock_config_cb_data = src->sock_config_cb_data; (*dest)->sock_funcs = src->sock_funcs; (*dest)->sock_func_cb_data = src->sock_func_cb_data; strncpy((*dest)->local_dev_name, src->local_dev_name, sizeof((*dest)->local_dev_name)); (*dest)->local_ip4 = src->local_ip4; memcpy((*dest)->local_ip6, src->local_ip6, sizeof(src->local_ip6)); /* Full name server cloning required if there is a non-IPv4, or non-default port, nameserver */ for (i = 0; i < src->nservers; i++) { if ((src->servers[i].addr.family != AF_INET) || (src->servers[i].addr.udp_port != 0) || (src->servers[i].addr.tcp_port != 0)) { non_v4_default_port++; break; } } if (non_v4_default_port) { rc = ares_get_servers_ports(src, &servers); if (rc != ARES_SUCCESS) { ares_destroy(*dest); *dest = NULL; return rc; } rc = ares_set_servers_ports(*dest, servers); ares_free_data(servers); if (rc != ARES_SUCCESS) { ares_destroy(*dest); *dest = NULL; return rc; } } return ARES_SUCCESS; /* everything went fine */ } /* Save options from initialized channel */ int ares_save_options(ares_channel channel, struct ares_options *options, int *optmask) { int i, j; int ipv4_nservers = 0; /* Zero everything out */ memset(options, 0, sizeof(struct ares_options)); if (!ARES_CONFIG_CHECK(channel)) return ARES_ENODATA; /* Traditionally the optmask wasn't saved in the channel struct so it was recreated here. ROTATE is the first option that has no struct field of its own in the public config struct */ (*optmask) = (ARES_OPT_FLAGS|ARES_OPT_TRIES|ARES_OPT_NDOTS| ARES_OPT_UDP_PORT|ARES_OPT_TCP_PORT|ARES_OPT_SOCK_STATE_CB| ARES_OPT_SERVERS|ARES_OPT_DOMAINS|ARES_OPT_LOOKUPS| ARES_OPT_SORTLIST|ARES_OPT_TIMEOUTMS); (*optmask) |= (channel->rotate ? ARES_OPT_ROTATE : ARES_OPT_NOROTATE); if (channel->resolvconf_path) (*optmask) |= ARES_OPT_RESOLVCONF; /* Copy easy stuff */ options->flags = channel->flags; /* We return full millisecond resolution but that's only because we don't set the ARES_OPT_TIMEOUT anymore, only the new ARES_OPT_TIMEOUTMS */ options->timeout = channel->timeout; options->tries = channel->tries; options->ndots = channel->ndots; options->udp_port = ntohs(aresx_sitous(channel->udp_port)); options->tcp_port = ntohs(aresx_sitous(channel->tcp_port)); options->sock_state_cb = channel->sock_state_cb; options->sock_state_cb_data = channel->sock_state_cb_data; /* Copy IPv4 servers that use the default port */ if (channel->nservers) { for (i = 0; i < channel->nservers; i++) { if ((channel->servers[i].addr.family == AF_INET) && (channel->servers[i].addr.udp_port == 0) && (channel->servers[i].addr.tcp_port == 0)) ipv4_nservers++; } if (ipv4_nservers) { options->servers = ares_malloc(ipv4_nservers * sizeof(struct in_addr)); if (!options->servers) return ARES_ENOMEM; for (i = j = 0; i < channel->nservers; i++) { if ((channel->servers[i].addr.family == AF_INET) && (channel->servers[i].addr.udp_port == 0) && (channel->servers[i].addr.tcp_port == 0)) memcpy(&options->servers[j++], &channel->servers[i].addr.addrV4, sizeof(channel->servers[i].addr.addrV4)); } } } options->nservers = ipv4_nservers; /* copy domains */ if (channel->ndomains) { options->domains = ares_malloc(channel->ndomains * sizeof(char *)); if (!options->domains) return ARES_ENOMEM; for (i = 0; i < channel->ndomains; i++) { options->ndomains = i; options->domains[i] = ares_strdup(channel->domains[i]); if (!options->domains[i]) return ARES_ENOMEM; } } options->ndomains = channel->ndomains; /* copy lookups */ if (channel->lookups) { options->lookups = ares_strdup(channel->lookups); if (!options->lookups && channel->lookups) return ARES_ENOMEM; } /* copy sortlist */ if (channel->nsort) { options->sortlist = ares_malloc(channel->nsort * sizeof(struct apattern)); if (!options->sortlist) return ARES_ENOMEM; for (i = 0; i < channel->nsort; i++) options->sortlist[i] = channel->sortlist[i]; } options->nsort = channel->nsort; /* copy path for resolv.conf file */ if (channel->resolvconf_path) { options->resolvconf_path = ares_strdup(channel->resolvconf_path); if (!options->resolvconf_path) return ARES_ENOMEM; } return ARES_SUCCESS; } static int init_by_options(ares_channel channel, const struct ares_options *options, int optmask) { int i; /* Easy stuff. */ if ((optmask & ARES_OPT_FLAGS) && channel->flags == -1) channel->flags = options->flags; if ((optmask & ARES_OPT_TIMEOUTMS) && channel->timeout == -1) channel->timeout = options->timeout; else if ((optmask & ARES_OPT_TIMEOUT) && channel->timeout == -1) channel->timeout = options->timeout * 1000; if ((optmask & ARES_OPT_TRIES) && channel->tries == -1) channel->tries = options->tries; if ((optmask & ARES_OPT_NDOTS) && channel->ndots == -1) channel->ndots = options->ndots; if ((optmask & ARES_OPT_ROTATE) && channel->rotate == -1) channel->rotate = 1; if ((optmask & ARES_OPT_NOROTATE) && channel->rotate == -1) channel->rotate = 0; if ((optmask & ARES_OPT_UDP_PORT) && channel->udp_port == -1) channel->udp_port = htons(options->udp_port); if ((optmask & ARES_OPT_TCP_PORT) && channel->tcp_port == -1) channel->tcp_port = htons(options->tcp_port); if ((optmask & ARES_OPT_SOCK_STATE_CB) && channel->sock_state_cb == NULL) { channel->sock_state_cb = options->sock_state_cb; channel->sock_state_cb_data = options->sock_state_cb_data; } if ((optmask & ARES_OPT_SOCK_SNDBUF) && channel->socket_send_buffer_size == -1) channel->socket_send_buffer_size = options->socket_send_buffer_size; if ((optmask & ARES_OPT_SOCK_RCVBUF) && channel->socket_receive_buffer_size == -1) channel->socket_receive_buffer_size = options->socket_receive_buffer_size; if ((optmask & ARES_OPT_EDNSPSZ) && channel->ednspsz == -1) channel->ednspsz = options->ednspsz; /* Copy the IPv4 servers, if given. */ if ((optmask & ARES_OPT_SERVERS) && channel->nservers == -1) { /* Avoid zero size allocations at any cost */ if (options->nservers > 0) { channel->servers = ares_malloc(options->nservers * sizeof(struct server_state)); if (!channel->servers) return ARES_ENOMEM; for (i = 0; i < options->nservers; i++) { channel->servers[i].addr.family = AF_INET; channel->servers[i].addr.udp_port = 0; channel->servers[i].addr.tcp_port = 0; memcpy(&channel->servers[i].addr.addrV4, &options->servers[i], sizeof(channel->servers[i].addr.addrV4)); } } channel->nservers = options->nservers; } /* Copy the domains, if given. Keep channel->ndomains consistent so * we can clean up in case of error. */ if ((optmask & ARES_OPT_DOMAINS) && channel->ndomains == -1) { /* Avoid zero size allocations at any cost */ if (options->ndomains > 0) { channel->domains = ares_malloc(options->ndomains * sizeof(char *)); if (!channel->domains) return ARES_ENOMEM; for (i = 0; i < options->ndomains; i++) { channel->ndomains = i; channel->domains[i] = ares_strdup(options->domains[i]); if (!channel->domains[i]) return ARES_ENOMEM; } } channel->ndomains = options->ndomains; } /* Set lookups, if given. */ if ((optmask & ARES_OPT_LOOKUPS) && !channel->lookups) { channel->lookups = ares_strdup(options->lookups); if (!channel->lookups) return ARES_ENOMEM; } /* copy sortlist */ if ((optmask & ARES_OPT_SORTLIST) && (channel->nsort == -1)) { if (options->nsort > 0) { channel->sortlist = ares_malloc(options->nsort * sizeof(struct apattern)); if (!channel->sortlist) return ARES_ENOMEM; for (i = 0; i < options->nsort; i++) channel->sortlist[i] = options->sortlist[i]; } channel->nsort = options->nsort; } /* Set path for resolv.conf file, if given. */ if ((optmask & ARES_OPT_RESOLVCONF) && !channel->resolvconf_path) { channel->resolvconf_path = ares_strdup(options->resolvconf_path); if (!channel->resolvconf_path && options->resolvconf_path) return ARES_ENOMEM; } channel->optmask = optmask; return ARES_SUCCESS; } static int init_by_environment(ares_channel channel) { const char *localdomain, *res_options; int status; localdomain = getenv("LOCALDOMAIN"); if (localdomain && channel->ndomains == -1) { status = set_search(channel, localdomain); if (status != ARES_SUCCESS) return status; } res_options = getenv("RES_OPTIONS"); if (res_options) { status = set_options(channel, res_options); if (status != ARES_SUCCESS) return status; /* LCOV_EXCL_LINE: set_options() never fails */ } return ARES_SUCCESS; } #ifdef WIN32 /* * get_REG_SZ() * * Given a 'hKey' handle to an open registry key and a 'leafKeyName' pointer * to the name of the registry leaf key to be queried, fetch it's string * value and return a pointer in *outptr to a newly allocated memory area * holding it as a null-terminated string. * * Returns 0 and nullifies *outptr upon inability to return a string value. * * Returns 1 and sets *outptr when returning a dynamically allocated string. * * Supported on Windows NT 3.5 and newer. */ static int get_REG_SZ(HKEY hKey, const char *leafKeyName, char **outptr) { DWORD size = 0; int res; *outptr = NULL; /* Find out size of string stored in registry */ res = RegQueryValueExA(hKey, leafKeyName, 0, NULL, NULL, &size); if ((res != ERROR_SUCCESS && res != ERROR_MORE_DATA) || !size) return 0; /* Allocate buffer of indicated size plus one given that string might have been stored without null termination */ *outptr = ares_malloc(size+1); if (!*outptr) return 0; /* Get the value for real */ res = RegQueryValueExA(hKey, leafKeyName, 0, NULL, (unsigned char *)*outptr, &size); if ((res != ERROR_SUCCESS) || (size == 1)) { ares_free(*outptr); *outptr = NULL; return 0; } /* Null terminate buffer allways */ *(*outptr + size) = '\0'; return 1; } /* * get_REG_SZ_9X() * * Functionally identical to get_REG_SZ() * * Supported on Windows 95, 98 and ME. */ static int get_REG_SZ_9X(HKEY hKey, const char *leafKeyName, char **outptr) { DWORD dataType = 0; DWORD size = 0; int res; *outptr = NULL; /* Find out size of string stored in registry */ res = RegQueryValueExA(hKey, leafKeyName, 0, &dataType, NULL, &size); if ((res != ERROR_SUCCESS && res != ERROR_MORE_DATA) || !size) return 0; /* Allocate buffer of indicated size plus one given that string might have been stored without null termination */ *outptr = ares_malloc(size+1); if (!*outptr) return 0; /* Get the value for real */ res = RegQueryValueExA(hKey, leafKeyName, 0, &dataType, (unsigned char *)*outptr, &size); if ((res != ERROR_SUCCESS) || (size == 1)) { ares_free(*outptr); *outptr = NULL; return 0; } /* Null terminate buffer allways */ *(*outptr + size) = '\0'; return 1; } /* * get_enum_REG_SZ() * * Given a 'hKeyParent' handle to an open registry key and a 'leafKeyName' * pointer to the name of the registry leaf key to be queried, parent key * is enumerated searching in child keys for given leaf key name and its * associated string value. When located, this returns a pointer in *outptr * to a newly allocated memory area holding it as a null-terminated string. * * Returns 0 and nullifies *outptr upon inability to return a string value. * * Returns 1 and sets *outptr when returning a dynamically allocated string. * * Supported on Windows NT 3.5 and newer. */ static int get_enum_REG_SZ(HKEY hKeyParent, const char *leafKeyName, char **outptr) { char enumKeyName[256]; DWORD enumKeyNameBuffSize; DWORD enumKeyIdx = 0; HKEY hKeyEnum; int gotString; int res; *outptr = NULL; for(;;) { enumKeyNameBuffSize = sizeof(enumKeyName); res = RegEnumKeyExA(hKeyParent, enumKeyIdx++, enumKeyName, &enumKeyNameBuffSize, 0, NULL, NULL, NULL); if (res != ERROR_SUCCESS) break; res = RegOpenKeyExA(hKeyParent, enumKeyName, 0, KEY_QUERY_VALUE, &hKeyEnum); if (res != ERROR_SUCCESS) continue; gotString = get_REG_SZ(hKeyEnum, leafKeyName, outptr); RegCloseKey(hKeyEnum); if (gotString) break; } if (!*outptr) return 0; return 1; } /* * get_DNS_Registry_9X() * * Functionally identical to get_DNS_Registry() * * Implementation supports Windows 95, 98 and ME. */ static int get_DNS_Registry_9X(char **outptr) { HKEY hKey_VxD_MStcp; int gotString; int res; *outptr = NULL; res = RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_9X, 0, KEY_READ, &hKey_VxD_MStcp); if (res != ERROR_SUCCESS) return 0; gotString = get_REG_SZ_9X(hKey_VxD_MStcp, NAMESERVER, outptr); RegCloseKey(hKey_VxD_MStcp); if (!gotString || !*outptr) return 0; return 1; } /* * get_DNS_Registry_NT() * * Functionally identical to get_DNS_Registry() * * Refs: Microsoft Knowledge Base articles KB120642 and KB314053. * * Implementation supports Windows NT 3.5 and newer. */ static int get_DNS_Registry_NT(char **outptr) { HKEY hKey_Interfaces = NULL; HKEY hKey_Tcpip_Parameters; int gotString; int res; *outptr = NULL; res = RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hKey_Tcpip_Parameters); if (res != ERROR_SUCCESS) return 0; /* ** Global DNS settings override adapter specific parameters when both ** are set. Additionally static DNS settings override DHCP-configured ** parameters when both are set. */ /* Global DNS static parameters */ gotString = get_REG_SZ(hKey_Tcpip_Parameters, NAMESERVER, outptr); if (gotString) goto done; /* Global DNS DHCP-configured parameters */ gotString = get_REG_SZ(hKey_Tcpip_Parameters, DHCPNAMESERVER, outptr); if (gotString) goto done; /* Try adapter specific parameters */ res = RegOpenKeyExA(hKey_Tcpip_Parameters, "Interfaces", 0, KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS, &hKey_Interfaces); if (res != ERROR_SUCCESS) { hKey_Interfaces = NULL; goto done; } /* Adapter specific DNS static parameters */ gotString = get_enum_REG_SZ(hKey_Interfaces, NAMESERVER, outptr); if (gotString) goto done; /* Adapter specific DNS DHCP-configured parameters */ gotString = get_enum_REG_SZ(hKey_Interfaces, DHCPNAMESERVER, outptr); done: if (hKey_Interfaces) RegCloseKey(hKey_Interfaces); RegCloseKey(hKey_Tcpip_Parameters); if (!gotString || !*outptr) return 0; return 1; } /* * get_DNS_Registry() * * Locates DNS info in the registry. When located, this returns a pointer * in *outptr to a newly allocated memory area holding a null-terminated * string with a space or comma seperated list of DNS IP addresses. * * Returns 0 and nullifies *outptr upon inability to return DNSes string. * * Returns 1 and sets *outptr when returning a dynamically allocated string. */ static int get_DNS_Registry(char **outptr) { win_platform platform; int gotString = 0; *outptr = NULL; platform = ares__getplatform(); if (platform == WIN_NT) gotString = get_DNS_Registry_NT(outptr); else if (platform == WIN_9X) gotString = get_DNS_Registry_9X(outptr); if (!gotString) return 0; return 1; } static void commanjoin(char** dst, const char* const src, const size_t len) { char *newbuf; size_t newsize; /* 1 for terminating 0 and 2 for , and terminating 0 */ newsize = len + (*dst ? (strlen(*dst) + 2) : 1); newbuf = ares_realloc(*dst, newsize); if (!newbuf) return; if (*dst == NULL) *newbuf = '\0'; *dst = newbuf; if (strlen(*dst) != 0) strcat(*dst, ","); strncat(*dst, src, len); } /* * commajoin() * * RTF code. */ static void commajoin(char **dst, const char *src) { commanjoin(dst, src, strlen(src)); } /* * get_DNS_NetworkParams() * * Locates DNS info using GetNetworkParams() function from the Internet * Protocol Helper (IP Helper) API. When located, this returns a pointer * in *outptr to a newly allocated memory area holding a null-terminated * string with a space or comma seperated list of DNS IP addresses. * * Returns 0 and nullifies *outptr upon inability to return DNSes string. * * Returns 1 and sets *outptr when returning a dynamically allocated string. * * Implementation supports Windows 98 and newer. * * Note: Ancient PSDK required in order to build a W98 target. */ static int get_DNS_NetworkParams(char **outptr) { FIXED_INFO *fi, *newfi; struct ares_addr namesrvr; char *txtaddr; IP_ADDR_STRING *ipAddr; int res; DWORD size = sizeof (*fi); *outptr = NULL; /* Verify run-time availability of GetNetworkParams() */ if (ares_fpGetNetworkParams == ZERO_NULL) return 0; fi = ares_malloc(size); if (!fi) return 0; res = (*ares_fpGetNetworkParams) (fi, &size); if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS)) goto done; newfi = ares_realloc(fi, size); if (!newfi) goto done; fi = newfi; res = (*ares_fpGetNetworkParams) (fi, &size); if (res != ERROR_SUCCESS) goto done; for (ipAddr = &fi->DnsServerList; ipAddr; ipAddr = ipAddr->Next) { txtaddr = &ipAddr->IpAddress.String[0]; /* Validate converting textual address to binary format. */ if (ares_inet_pton(AF_INET, txtaddr, &namesrvr.addrV4) == 1) { if ((namesrvr.addrV4.S_un.S_addr == INADDR_ANY) || (namesrvr.addrV4.S_un.S_addr == INADDR_NONE)) continue; } else if (ares_inet_pton(AF_INET6, txtaddr, &namesrvr.addrV6) == 1) { if (memcmp(&namesrvr.addrV6, &ares_in6addr_any, sizeof(namesrvr.addrV6)) == 0) continue; } else continue; commajoin(outptr, txtaddr); if (!*outptr) break; } done: if (fi) ares_free(fi); if (!*outptr) return 0; return 1; } static BOOL ares_IsWindowsVistaOrGreater(void) { OSVERSIONINFO vinfo; memset(&vinfo, 0, sizeof(vinfo)); vinfo.dwOSVersionInfoSize = sizeof(vinfo); #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable:4996) /* warning C4996: 'GetVersionExW': was declared deprecated */ #endif if (!GetVersionEx(&vinfo) || vinfo.dwMajorVersion < 6) return FALSE; return TRUE; #ifdef _MSC_VER #pragma warning(pop) #endif } /* A structure to hold the string form of IPv4 and IPv6 addresses so we can * sort them by a metric. */ typedef struct { /* The metric we sort them by. */ ULONG metric; /* Original index of the item, used as a secondary sort parameter to make * qsort() stable if the metrics are equal */ size_t orig_idx; /* Room enough for the string form of any IPv4 or IPv6 address that * ares_inet_ntop() will create. Based on the existing c-ares practice. */ char text[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; } Address; /* Sort Address values \a left and \a right by metric, returning the usual * indicators for qsort(). */ static int compareAddresses(const void *arg1, const void *arg2) { const Address * const left = arg1; const Address * const right = arg2; /* Lower metric the more preferred */ if(left->metric < right->metric) return -1; if(left->metric > right->metric) return 1; /* If metrics are equal, lower original index more preferred */ if(left->orig_idx < right->orig_idx) return -1; if(left->orig_idx > right->orig_idx) return 1; return 0; } /* There can be multiple routes to "the Internet". And there can be different * DNS servers associated with each of the interfaces that offer those routes. * We have to assume that any DNS server can serve any request. But, some DNS * servers may only respond if requested over their associated interface. But * we also want to use "the preferred route to the Internet" whenever possible * (and not use DNS servers on a non-preferred route even by forcing request * to go out on the associated non-preferred interface). i.e. We want to use * the DNS servers associated with the same interface that we would use to * make a general request to anything else. * * But, Windows won't sort the DNS servers by the metrics associated with the * routes and interfaces _even_ though it obviously sends IP packets based on * those same routes and metrics. So, we must do it ourselves. * * So, we sort the DNS servers by the same metric values used to determine how * an outgoing IP packet will go, thus effectively using the DNS servers * associated with the interface that the DNS requests themselves will * travel. This gives us optimal routing and avoids issues where DNS servers * won't respond to requests that don't arrive via some specific subnetwork * (and thus some specific interface). * * This function computes the metric we use to sort. On the interface * identified by \a luid, it determines the best route to \a dest and combines * that route's metric with \a interfaceMetric to compute a metric for the * destination address on that interface. This metric can be used as a weight * to sort the DNS server addresses associated with each interface (lower is * better). * * Note that by restricting the route search to the specific interface with * which the DNS servers are associated, this function asks the question "What * is the metric for sending IP packets to this DNS server?" which allows us * to sort the DNS servers correctly. */ static ULONG getBestRouteMetric(IF_LUID * const luid, /* Can't be const :( */ const SOCKADDR_INET * const dest, const ULONG interfaceMetric) { /* On this interface, get the best route to that destination. */ MIB_IPFORWARD_ROW2 row; SOCKADDR_INET ignored; if(!ares_fpGetBestRoute2 || ares_fpGetBestRoute2(/* The interface to use. The index is ignored since we are * passing a LUID. */ luid, 0, /* No specific source address. */ NULL, /* Our destination address. */ dest, /* No options. */ 0, /* The route row. */ &row, /* The best source address, which we don't need. */ &ignored) != NO_ERROR /* If the metric is "unused" (-1) or too large for us to add the two * metrics, use the worst possible, thus sorting this last. */ || row.Metric == (ULONG)-1 || row.Metric > ((ULONG)-1) - interfaceMetric) { /* Return the worst possible metric. */ return (ULONG)-1; } /* Return the metric value from that row, plus the interface metric. * * See * http://msdn.microsoft.com/en-us/library/windows/desktop/aa814494(v=vs.85).aspx * which describes the combination as a "sum". */ return row.Metric + interfaceMetric; } /* * get_DNS_AdaptersAddresses() * * Locates DNS info using GetAdaptersAddresses() function from the Internet * Protocol Helper (IP Helper) API. When located, this returns a pointer * in *outptr to a newly allocated memory area holding a null-terminated * string with a space or comma seperated list of DNS IP addresses. * * Returns 0 and nullifies *outptr upon inability to return DNSes string. * * Returns 1 and sets *outptr when returning a dynamically allocated string. * * Implementation supports Windows XP and newer. */ #define IPAA_INITIAL_BUF_SZ 15 * 1024 #define IPAA_MAX_TRIES 3 static int get_DNS_AdaptersAddresses(char **outptr) { IP_ADAPTER_DNS_SERVER_ADDRESS *ipaDNSAddr; IP_ADAPTER_ADDRESSES *ipaa, *newipaa, *ipaaEntry; ULONG ReqBufsz = IPAA_INITIAL_BUF_SZ; ULONG Bufsz = IPAA_INITIAL_BUF_SZ; ULONG AddrFlags = 0; int trying = IPAA_MAX_TRIES; int res; /* The capacity of addresses, in elements. */ size_t addressesSize; /* The number of elements in addresses. */ size_t addressesIndex = 0; /* The addresses we will sort. */ Address *addresses; union { struct sockaddr *sa; struct sockaddr_in *sa4; struct sockaddr_in6 *sa6; } namesrvr; *outptr = NULL; /* Verify run-time availability of GetAdaptersAddresses() */ if (ares_fpGetAdaptersAddresses == ZERO_NULL) return 0; ipaa = ares_malloc(Bufsz); if (!ipaa) return 0; /* Start with enough room for a few DNS server addresses and we'll grow it * as we encounter more. */ addressesSize = 4; addresses = (Address*)ares_malloc(sizeof(Address) * addressesSize); if(addresses == NULL) { /* We need room for at least some addresses to function. */ ares_free(ipaa); return 0; } /* Usually this call suceeds with initial buffer size */ res = (*ares_fpGetAdaptersAddresses) (AF_UNSPEC, AddrFlags, NULL, ipaa, &ReqBufsz); if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS)) goto done; while ((res == ERROR_BUFFER_OVERFLOW) && (--trying)) { if (Bufsz < ReqBufsz) { newipaa = ares_realloc(ipaa, ReqBufsz); if (!newipaa) goto done; Bufsz = ReqBufsz; ipaa = newipaa; } res = (*ares_fpGetAdaptersAddresses) (AF_UNSPEC, AddrFlags, NULL, ipaa, &ReqBufsz); if (res == ERROR_SUCCESS) break; } if (res != ERROR_SUCCESS) goto done; for (ipaaEntry = ipaa; ipaaEntry; ipaaEntry = ipaaEntry->Next) { if(ipaaEntry->OperStatus != IfOperStatusUp) continue; /* For each interface, find any associated DNS servers as IPv4 or IPv6 * addresses. For each found address, find the best route to that DNS * server address _on_ _that_ _interface_ (at this moment in time) and * compute the resulting total metric, just as Windows routing will do. * Then, sort all the addresses found by the metric. */ for (ipaDNSAddr = ipaaEntry->FirstDnsServerAddress; ipaDNSAddr; ipaDNSAddr = ipaDNSAddr->Next) { namesrvr.sa = ipaDNSAddr->Address.lpSockaddr; if (namesrvr.sa->sa_family == AF_INET) { if ((namesrvr.sa4->sin_addr.S_un.S_addr == INADDR_ANY) || (namesrvr.sa4->sin_addr.S_un.S_addr == INADDR_NONE)) continue; /* Allocate room for another address, if necessary, else skip. */ if(addressesIndex == addressesSize) { const size_t newSize = addressesSize + 4; Address * const newMem = (Address*)ares_realloc(addresses, sizeof(Address) * newSize); if(newMem == NULL) { continue; } addresses = newMem; addressesSize = newSize; } /* Vista required for Luid or Ipv4Metric */ if (ares_IsWindowsVistaOrGreater()) { /* Save the address as the next element in addresses. */ addresses[addressesIndex].metric = getBestRouteMetric(&ipaaEntry->Luid, (SOCKADDR_INET*)(namesrvr.sa), ipaaEntry->Ipv4Metric); } else { addresses[addressesIndex].metric = (ULONG)-1; } /* Record insertion index to make qsort stable */ addresses[addressesIndex].orig_idx = addressesIndex; if (! ares_inet_ntop(AF_INET, &namesrvr.sa4->sin_addr, addresses[addressesIndex].text, sizeof(addresses[0].text))) { continue; } ++addressesIndex; } else if (namesrvr.sa->sa_family == AF_INET6) { if (memcmp(&namesrvr.sa6->sin6_addr, &ares_in6addr_any, sizeof(namesrvr.sa6->sin6_addr)) == 0) continue; /* Allocate room for another address, if necessary, else skip. */ if(addressesIndex == addressesSize) { const size_t newSize = addressesSize + 4; Address * const newMem = (Address*)ares_realloc(addresses, sizeof(Address) * newSize); if(newMem == NULL) { continue; } addresses = newMem; addressesSize = newSize; } /* Vista required for Luid or Ipv4Metric */ if (ares_IsWindowsVistaOrGreater()) { /* Save the address as the next element in addresses. */ addresses[addressesIndex].metric = getBestRouteMetric(&ipaaEntry->Luid, (SOCKADDR_INET*)(namesrvr.sa), ipaaEntry->Ipv6Metric); } else { addresses[addressesIndex].metric = (ULONG)-1; } /* Record insertion index to make qsort stable */ addresses[addressesIndex].orig_idx = addressesIndex; if (! ares_inet_ntop(AF_INET6, &namesrvr.sa6->sin6_addr, addresses[addressesIndex].text, sizeof(addresses[0].text))) { continue; } ++addressesIndex; } else { /* Skip non-IPv4/IPv6 addresses completely. */ continue; } } } /* Sort all of the textual addresses by their metric (and original index if * metrics are equal). */ qsort(addresses, addressesIndex, sizeof(*addresses), compareAddresses); /* Join them all into a single string, removing duplicates. */ { size_t i; for(i = 0; i < addressesIndex; ++i) { size_t j; /* Look for this address text appearing previously in the results. */ for(j = 0; j < i; ++j) { if(strcmp(addresses[j].text, addresses[i].text) == 0) { break; } } /* Iff we didn't emit this address already, emit it now. */ if(j == i) { /* Add that to outptr (if we can). */ commajoin(outptr, addresses[i].text); } } } done: ares_free(addresses); if (ipaa) ares_free(ipaa); if (!*outptr) { return 0; } return 1; } /* * get_DNS_Windows() * * Locates DNS info from Windows employing most suitable methods available at * run-time no matter which Windows version it is. When located, this returns * a pointer in *outptr to a newly allocated memory area holding a string with * a space or comma seperated list of DNS IP addresses, null-terminated. * * Returns 0 and nullifies *outptr upon inability to return DNSes string. * * Returns 1 and sets *outptr when returning a dynamically allocated string. * * Implementation supports Windows 95 and newer. */ static int get_DNS_Windows(char **outptr) { /* Try using IP helper API GetAdaptersAddresses(). IPv4 + IPv6, also sorts * DNS servers by interface route metrics to try to use the best DNS server. */ if (get_DNS_AdaptersAddresses(outptr)) return 1; /* Try using IP helper API GetNetworkParams(). IPv4 only. */ if (get_DNS_NetworkParams(outptr)) return 1; /* Fall-back to registry information */ return get_DNS_Registry(outptr); } /* * get_SuffixList_Windows() * * Reads the "DNS Suffix Search List" from registry and writes the list items * whitespace separated to outptr. If the Search List is empty, the * "Primary Dns Suffix" is written to outptr. * * Returns 0 and nullifies *outptr upon inability to return the suffix list. * * Returns 1 and sets *outptr when returning a dynamically allocated string. * * Implementation supports Windows Server 2003 and newer */ static int get_SuffixList_Windows(char **outptr) { HKEY hKey, hKeyEnum; char keyName[256]; DWORD keyNameBuffSize; DWORD keyIdx = 0; char *p = NULL; *outptr = NULL; if (ares__getplatform() != WIN_NT) return 0; /* 1. Global DNS Suffix Search List */ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hKey) == ERROR_SUCCESS) { get_REG_SZ(hKey, SEARCHLIST_KEY, outptr); if (get_REG_SZ(hKey, DOMAIN_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } RegCloseKey(hKey); } if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0, KEY_READ, &hKey) == ERROR_SUCCESS) { if (get_REG_SZ(hKey, SEARCHLIST_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } RegCloseKey(hKey); } /* 2. Connection Specific Search List composed of: * a. Primary DNS Suffix */ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0, KEY_READ, &hKey) == ERROR_SUCCESS) { if (get_REG_SZ(hKey, PRIMARYDNSSUFFIX_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } RegCloseKey(hKey); } /* b. Interface SearchList, Domain, DhcpDomain */ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY "\\" INTERFACES_KEY, 0, KEY_READ, &hKey) == ERROR_SUCCESS) { for(;;) { keyNameBuffSize = sizeof(keyName); if (RegEnumKeyExA(hKey, keyIdx++, keyName, &keyNameBuffSize, 0, NULL, NULL, NULL) != ERROR_SUCCESS) break; if (RegOpenKeyExA(hKey, keyName, 0, KEY_QUERY_VALUE, &hKeyEnum) != ERROR_SUCCESS) continue; /* p can be comma separated (SearchList) */ if (get_REG_SZ(hKeyEnum, SEARCHLIST_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } if (get_REG_SZ(hKeyEnum, DOMAIN_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } if (get_REG_SZ(hKeyEnum, DHCPDOMAIN_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } RegCloseKey(hKeyEnum); } RegCloseKey(hKey); } return *outptr != NULL; } #endif static int init_by_resolv_conf(ares_channel channel) { #if !defined(ANDROID) && !defined(__ANDROID__) && !defined(WATT32) && \ !defined(CARES_USE_LIBRESOLV) char *line = NULL; #endif int status = -1, nservers = 0, nsort = 0; struct server_state *servers = NULL; struct apattern *sortlist = NULL; #ifdef WIN32 if (channel->nservers > -1) /* don't override ARES_OPT_SERVER */ return ARES_SUCCESS; if (get_DNS_Windows(&line)) { status = config_nameserver(&servers, &nservers, line); ares_free(line); } if (channel->ndomains == -1 && get_SuffixList_Windows(&line)) { status = set_search(channel, line); ares_free(line); } if (status == ARES_SUCCESS) status = ARES_EOF; else /* Catch the case when all the above checks fail (which happens when there is no network card or the cable is unplugged) */ status = ARES_EFILE; #elif defined(__riscos__) /* Under RISC OS, name servers are listed in the system variable Inet$Resolvers, space separated. */ line = getenv("Inet$Resolvers"); status = ARES_EOF; if (line) { char *resolvers = ares_strdup(line), *pos, *space; if (!resolvers) return ARES_ENOMEM; pos = resolvers; do { space = strchr(pos, ' '); if (space) *space = '\0'; status = config_nameserver(&servers, &nservers, pos); if (status != ARES_SUCCESS) break; pos = space + 1; } while (space); if (status == ARES_SUCCESS) status = ARES_EOF; ares_free(resolvers); } #elif defined(WATT32) int i; sock_init(); for (i = 0; def_nameservers[i]; i++) ; if (i == 0) return ARES_SUCCESS; /* use localhost DNS server */ nservers = i; servers = ares_malloc(sizeof(struct server_state)); if (!servers) return ARES_ENOMEM; memset(servers, 0, sizeof(struct server_state)); for (i = 0; def_nameservers[i]; i++) { servers[i].addr.addrV4.s_addr = htonl(def_nameservers[i]); servers[i].addr.family = AF_INET; servers[i].addr.udp_port = 0; servers[i].addr.tcp_port = 0; } status = ARES_EOF; #elif defined(ANDROID) || defined(__ANDROID__) unsigned int i; char propname[PROP_NAME_MAX]; char propvalue[PROP_VALUE_MAX]=""; char **dns_servers; char *domains; size_t num_servers; /* Use the Android connectivity manager to get a list * of DNS servers. As of Android 8 (Oreo) net.dns# * system properties are no longer available. Google claims this * improves privacy. Apps now need the ACCESS_NETWORK_STATE * permission and must use the ConnectivityManager which * is Java only. */ dns_servers = ares_get_android_server_list(MAX_DNS_PROPERTIES, &num_servers); if (dns_servers != NULL) { for (i = 0; i < num_servers; i++) { status = config_nameserver(&servers, &nservers, dns_servers[i]); if (status != ARES_SUCCESS) break; status = ARES_EOF; } for (i = 0; i < num_servers; i++) { ares_free(dns_servers[i]); } ares_free(dns_servers); } if (channel->ndomains == -1) { domains = ares_get_android_search_domains_list(); set_search(channel, domains); ares_free(domains); } # ifdef HAVE___SYSTEM_PROPERTY_GET /* Old way using the system property still in place as * a fallback. Older android versions can still use this. * it's possible for older apps not not have added the new * permission and we want to try to avoid breaking those. * * We'll only run this if we don't have any dns servers * because this will get the same ones (if it works). */ if (status != ARES_EOF) { for (i = 1; i <= MAX_DNS_PROPERTIES; i++) { snprintf(propname, sizeof(propname), "%s%u", DNS_PROP_NAME_PREFIX, i); if (__system_property_get(propname, propvalue) < 1) { status = ARES_EOF; break; } status = config_nameserver(&servers, &nservers, propvalue); if (status != ARES_SUCCESS) break; status = ARES_EOF; } } # endif /* HAVE___SYSTEM_PROPERTY_GET */ #elif defined(CARES_USE_LIBRESOLV) struct __res_state res; memset(&res, 0, sizeof(res)); int result = res_ninit(&res); if (result == 0 && (res.options & RES_INIT)) { status = ARES_EOF; if (channel->nservers == -1) { union res_sockaddr_union addr[MAXNS]; int nscount = res_getservers(&res, addr, MAXNS); for (int i = 0; i < nscount; ++i) { char str[INET6_ADDRSTRLEN]; int config_status; sa_family_t family = addr[i].sin.sin_family; if (family == AF_INET) { ares_inet_ntop(family, &addr[i].sin.sin_addr, str, sizeof(str)); } else if (family == AF_INET6) { ares_inet_ntop(family, &addr[i].sin6.sin6_addr, str, sizeof(str)); } else { continue; } config_status = config_nameserver(&servers, &nservers, str); if (config_status != ARES_SUCCESS) { status = config_status; break; } } } if (channel->ndomains == -1) { int entries = 0; while ((entries < MAXDNSRCH) && res.dnsrch[entries]) entries++; channel->domains = ares_malloc(entries * sizeof(char *)); if (!channel->domains) { status = ARES_ENOMEM; } else { channel->ndomains = entries; for (int i = 0; i < channel->ndomains; ++i) { channel->domains[i] = ares_strdup(res.dnsrch[i]); if (!channel->domains[i]) status = ARES_ENOMEM; } } } if (channel->ndots == -1) channel->ndots = res.ndots; if (channel->tries == -1) channel->tries = res.retry; if (channel->rotate == -1) channel->rotate = res.options & RES_ROTATE; if (channel->timeout == -1) channel->timeout = res.retrans * 1000; res_ndestroy(&res); } #else { char *p; FILE *fp; size_t linesize; int error; int update_domains; const char *resolvconf_path; /* Don't read resolv.conf and friends if we don't have to */ if (ARES_CONFIG_CHECK(channel)) return ARES_SUCCESS; /* Only update search domains if they're not already specified */ update_domains = (channel->ndomains == -1); /* Support path for resolvconf filename set by ares_init_options */ if(channel->resolvconf_path) { resolvconf_path = channel->resolvconf_path; } else { resolvconf_path = PATH_RESOLV_CONF; } fp = fopen(resolvconf_path, "r"); if (fp) { while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { if ((p = try_config(line, "domain", ';')) && update_domains) status = config_domain(channel, p); else if ((p = try_config(line, "lookup", ';')) && !channel->lookups) status = config_lookup(channel, p, "bind", NULL, "file"); else if ((p = try_config(line, "search", ';')) && update_domains) status = set_search(channel, p); else if ((p = try_config(line, "nameserver", ';')) && channel->nservers == -1) status = config_nameserver(&servers, &nservers, p); else if ((p = try_config(line, "sortlist", ';')) && channel->nsort == -1) status = config_sortlist(&sortlist, &nsort, p); else if ((p = try_config(line, "options", ';'))) status = set_options(channel, p); else status = ARES_SUCCESS; if (status != ARES_SUCCESS) break; } fclose(fp); } else { error = ERRNO; switch(error) { case ENOENT: case ESRCH: status = ARES_EOF; break; default: DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, strerror(error))); DEBUGF(fprintf(stderr, "Error opening file: %s\n", PATH_RESOLV_CONF)); status = ARES_EFILE; } } if ((status == ARES_EOF) && (!channel->lookups)) { /* Many systems (Solaris, Linux, BSD's) use nsswitch.conf */ fp = fopen("/etc/nsswitch.conf", "r"); if (fp) { while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { if ((p = try_config(line, "hosts:", '\0')) && !channel->lookups) (void)config_lookup(channel, p, "dns", "resolve", "files"); } fclose(fp); } else { error = ERRNO; switch(error) { case ENOENT: case ESRCH: break; default: DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, strerror(error))); DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/nsswitch.conf")); } /* ignore error, maybe we will get luck in next if clause */ status = ARES_EOF; } } if ((status == ARES_EOF) && (!channel->lookups)) { /* Linux / GNU libc 2.x and possibly others have host.conf */ fp = fopen("/etc/host.conf", "r"); if (fp) { while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { if ((p = try_config(line, "order", '\0')) && !channel->lookups) /* ignore errors */ (void)config_lookup(channel, p, "bind", NULL, "hosts"); } fclose(fp); } else { error = ERRNO; switch(error) { case ENOENT: case ESRCH: break; default: DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, strerror(error))); DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/host.conf")); } /* ignore error, maybe we will get luck in next if clause */ status = ARES_EOF; } } if ((status == ARES_EOF) && (!channel->lookups)) { /* Tru64 uses /etc/svc.conf */ fp = fopen("/etc/svc.conf", "r"); if (fp) { while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { if ((p = try_config(line, "hosts=", '\0')) && !channel->lookups) /* ignore errors */ (void)config_lookup(channel, p, "bind", NULL, "local"); } fclose(fp); } else { error = ERRNO; switch(error) { case ENOENT: case ESRCH: break; default: DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, strerror(error))); DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf")); } /* ignore error, default value will be chosen for `channel->lookups` */ status = ARES_EOF; } } if(line) ares_free(line); } #endif /* Handle errors. */ if (status != ARES_EOF) { if (servers != NULL) ares_free(servers); if (sortlist != NULL) ares_free(sortlist); return status; } /* If we got any name server entries, fill them in. */ if (servers) { channel->servers = servers; channel->nservers = nservers; } /* If we got any sortlist entries, fill them in. */ if (sortlist) { channel->sortlist = sortlist; channel->nsort = nsort; } return ARES_SUCCESS; } static int init_by_defaults(ares_channel channel) { char *hostname = NULL; int rc = ARES_SUCCESS; #ifdef HAVE_GETHOSTNAME char *dot; #endif if (channel->flags == -1) channel->flags = 0; if (channel->timeout == -1) channel->timeout = DEFAULT_TIMEOUT; if (channel->tries == -1) channel->tries = DEFAULT_TRIES; if (channel->ndots == -1) channel->ndots = 1; if (channel->rotate == -1) channel->rotate = 0; if (channel->udp_port == -1) channel->udp_port = htons(NAMESERVER_PORT); if (channel->tcp_port == -1) channel->tcp_port = htons(NAMESERVER_PORT); if (channel->ednspsz == -1) channel->ednspsz = EDNSPACKETSZ; if (channel->nservers == -1) { /* If nobody specified servers, try a local named. */ channel->servers = ares_malloc(sizeof(struct server_state)); if (!channel->servers) { rc = ARES_ENOMEM; goto error; } channel->servers[0].addr.family = AF_INET; channel->servers[0].addr.addrV4.s_addr = htonl(INADDR_LOOPBACK); channel->servers[0].addr.udp_port = 0; channel->servers[0].addr.tcp_port = 0; channel->nservers = 1; } #if defined(USE_WINSOCK) #define toolong(x) (x == -1) && (SOCKERRNO == WSAEFAULT) #elif defined(ENAMETOOLONG) #define toolong(x) (x == -1) && ((SOCKERRNO == ENAMETOOLONG) || \ (SOCKERRNO == EINVAL)) #else #define toolong(x) (x == -1) && (SOCKERRNO == EINVAL) #endif if (channel->ndomains == -1) { /* Derive a default domain search list from the kernel hostname, * or set it to empty if the hostname isn't helpful. */ #ifndef HAVE_GETHOSTNAME channel->ndomains = 0; /* default to none */ #else GETHOSTNAME_TYPE_ARG2 lenv = 64; size_t len = 64; int res; channel->ndomains = 0; /* default to none */ hostname = ares_malloc(len); if(!hostname) { rc = ARES_ENOMEM; goto error; } do { res = gethostname(hostname, lenv); if(toolong(res)) { char *p; len *= 2; lenv *= 2; p = ares_realloc(hostname, len); if(!p) { rc = ARES_ENOMEM; goto error; } hostname = p; continue; } else if(res) { /* Lets not treat a gethostname failure as critical, since we * are ok if gethostname doesn't even exist */ *hostname = '\0'; break; } } while (res != 0); dot = strchr(hostname, '.'); if (dot) { /* a dot was found */ channel->domains = ares_malloc(sizeof(char *)); if (!channel->domains) { rc = ARES_ENOMEM; goto error; } channel->domains[0] = ares_strdup(dot + 1); if (!channel->domains[0]) { rc = ARES_ENOMEM; goto error; } channel->ndomains = 1; } #endif } if (channel->nsort == -1) { channel->sortlist = NULL; channel->nsort = 0; } if (!channel->lookups) { channel->lookups = ares_strdup("fb"); if (!channel->lookups) rc = ARES_ENOMEM; } error: if(rc) { if(channel->servers) { ares_free(channel->servers); channel->servers = NULL; } if(channel->domains && channel->domains[0]) ares_free(channel->domains[0]); if(channel->domains) { ares_free(channel->domains); channel->domains = NULL; } if(channel->lookups) { ares_free(channel->lookups); channel->lookups = NULL; } if(channel->resolvconf_path) { ares_free(channel->resolvconf_path); channel->resolvconf_path = NULL; } } if(hostname) ares_free(hostname); return rc; } #if !defined(WIN32) && !defined(WATT32) && \ !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) static int config_domain(ares_channel channel, char *str) { char *q; /* Set a single search domain. */ q = str; while (*q && !ISSPACE(*q)) q++; *q = '\0'; return set_search(channel, str); } #if defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 910) && \ defined(__OPTIMIZE__) && defined(__unix__) && defined(__i386__) /* workaround icc 9.1 optimizer issue */ # define vqualifier volatile #else # define vqualifier #endif static int config_lookup(ares_channel channel, const char *str, const char *bindch, const char *altbindch, const char *filech) { char lookups[3], *l; const char *vqualifier p; if (altbindch == NULL) altbindch = bindch; /* Set the lookup order. Only the first letter of each work * is relevant, and it has to be "b" for DNS or "f" for the * host file. Ignore everything else. */ l = lookups; p = str; while (*p) { if ((*p == *bindch || *p == *altbindch || *p == *filech) && l < lookups + 2) { if (*p == *bindch || *p == *altbindch) *l++ = 'b'; else *l++ = 'f'; } while (*p && !ISSPACE(*p) && (*p != ',')) p++; while (*p && (ISSPACE(*p) || (*p == ','))) p++; } *l = '\0'; channel->lookups = ares_strdup(lookups); return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM; } #endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ & !CARES_USE_LIBRESOLV */ #ifndef WATT32 /* Validate that the ip address matches the subnet (network base and network * mask) specified. Addresses are specified in standard Network Byte Order as * 16 bytes, and the netmask is 0 to 128 (bits). */ static int ares_ipv6_subnet_matches(const unsigned char netbase[16], unsigned char netmask, const unsigned char ipaddr[16]) { unsigned char mask[16] = { 0 }; unsigned char i; /* Misuse */ if (netmask > 128) return 0; /* Quickly set whole bytes */ memset(mask, 0xFF, netmask / 8); /* Set remaining bits */ if(netmask % 8) { mask[netmask / 8] = (unsigned char)(0xff << (8 - (netmask % 8))); } for (i=0; i<16; i++) { if ((netbase[i] & mask[i]) != (ipaddr[i] & mask[i])) return 0; } return 1; } /* Return true iff the IPv6 ipaddr is blacklisted. */ static int ares_ipv6_server_blacklisted(const unsigned char ipaddr[16]) { /* A list of blacklisted IPv6 subnets. */ const struct { const unsigned char netbase[16]; unsigned char netmask; } blacklist[] = { /* fec0::/10 was deprecated by [RFC3879] in September 2004. Formerly a * Site-Local scoped address prefix. These are never valid DNS servers, * but are known to be returned at least sometimes on Windows and Android. */ { { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 10 } }; size_t i; /* See if ipaddr matches any of the entries in the blacklist. */ for (i = 0; i < sizeof(blacklist) / sizeof(blacklist[0]); ++i) { if (ares_ipv6_subnet_matches( blacklist[i].netbase, blacklist[i].netmask, ipaddr)) return 1; } return 0; } /* Add the IPv4 or IPv6 nameservers in str (separated by commas) to the * servers list, updating servers and nservers as required. * * This will silently ignore blacklisted IPv6 nameservers as detected by * ares_ipv6_server_blacklisted(). * * Returns an error code on failure, else ARES_SUCCESS. */ static int config_nameserver(struct server_state **servers, int *nservers, char *str) { struct ares_addr host; struct server_state *newserv; char *p, *txtaddr; /* On Windows, there may be more than one nameserver specified in the same * registry key, so we parse input as a space or comma seperated list. */ for (p = str; p;) { /* Skip whitespace and commas. */ while (*p && (ISSPACE(*p) || (*p == ','))) p++; if (!*p) /* No more input, done. */ break; /* Pointer to start of IPv4 or IPv6 address part. */ txtaddr = p; /* Advance past this address. */ while (*p && !ISSPACE(*p) && (*p != ',')) p++; if (*p) /* Null terminate this address. */ *p++ = '\0'; else /* Reached end of input, done when this address is processed. */ p = NULL; /* Convert textual address to binary format. */ if (ares_inet_pton(AF_INET, txtaddr, &host.addrV4) == 1) host.family = AF_INET; else if (ares_inet_pton(AF_INET6, txtaddr, &host.addrV6) == 1 /* Silently skip blacklisted IPv6 servers. */ && !ares_ipv6_server_blacklisted( (const unsigned char *)&host.addrV6)) host.family = AF_INET6; else continue; /* Resize servers state array. */ newserv = ares_realloc(*servers, (*nservers + 1) * sizeof(struct server_state)); if (!newserv) return ARES_ENOMEM; /* Store address data. */ newserv[*nservers].addr.family = host.family; newserv[*nservers].addr.udp_port = 0; newserv[*nservers].addr.tcp_port = 0; if (host.family == AF_INET) memcpy(&newserv[*nservers].addr.addrV4, &host.addrV4, sizeof(host.addrV4)); else memcpy(&newserv[*nservers].addr.addrV6, &host.addrV6, sizeof(host.addrV6)); /* Update arguments. */ *servers = newserv; *nservers += 1; } return ARES_SUCCESS; } #endif /* !WATT32 */ static int config_sortlist(struct apattern **sortlist, int *nsort, const char *str) { struct apattern pat; const char *q; /* Add sortlist entries. */ while (*str && *str != ';') { int bits; char ipbuf[16], ipbufpfx[32]; /* Find just the IP */ q = str; while (*q && *q != '/' && *q != ';' && !ISSPACE(*q)) q++; memcpy(ipbuf, str, q-str); ipbuf[q-str] = '\0'; /* Find the prefix */ if (*q == '/') { const char *str2 = q+1; while (*q && *q != ';' && !ISSPACE(*q)) q++; memcpy(ipbufpfx, str, q-str); ipbufpfx[q-str] = '\0'; str = str2; } else ipbufpfx[0] = '\0'; /* Lets see if it is CIDR */ /* First we'll try IPv6 */ if ((bits = ares_inet_net_pton(AF_INET6, ipbufpfx[0] ? ipbufpfx : ipbuf, &pat.addrV6, sizeof(pat.addrV6))) > 0) { pat.type = PATTERN_CIDR; pat.mask.bits = (unsigned short)bits; pat.family = AF_INET6; if (!sortlist_alloc(sortlist, nsort, &pat)) { ares_free(*sortlist); *sortlist = NULL; return ARES_ENOMEM; } } else if (ipbufpfx[0] && (bits = ares_inet_net_pton(AF_INET, ipbufpfx, &pat.addrV4, sizeof(pat.addrV4))) > 0) { pat.type = PATTERN_CIDR; pat.mask.bits = (unsigned short)bits; pat.family = AF_INET; if (!sortlist_alloc(sortlist, nsort, &pat)) { ares_free(*sortlist); *sortlist = NULL; return ARES_ENOMEM; } } /* See if it is just a regular IP */ else if (ip_addr(ipbuf, q-str, &pat.addrV4) == 0) { if (ipbufpfx[0]) { memcpy(ipbuf, str, q-str); ipbuf[q-str] = '\0'; if (ip_addr(ipbuf, q-str, &pat.mask.addr4) != 0) natural_mask(&pat); } else natural_mask(&pat); pat.family = AF_INET; pat.type = PATTERN_MASK; if (!sortlist_alloc(sortlist, nsort, &pat)) { ares_free(*sortlist); *sortlist = NULL; return ARES_ENOMEM; } } else { while (*q && *q != ';' && !ISSPACE(*q)) q++; } str = q; while (ISSPACE(*str)) str++; } return ARES_SUCCESS; } static int set_search(ares_channel channel, const char *str) { size_t cnt; if(channel->ndomains != -1) { /* LCOV_EXCL_START: all callers check ndomains == -1 */ /* if we already have some domains present, free them first */ ares_strsplit_free(channel->domains, channel->ndomains); channel->domains = NULL; channel->ndomains = -1; } /* LCOV_EXCL_STOP */ channel->domains = ares_strsplit(str, ", ", 1, &cnt); channel->ndomains = (int)cnt; if (channel->domains == NULL || channel->ndomains == 0) { channel->domains = NULL; channel->ndomains = -1; } return ARES_SUCCESS; } static int set_options(ares_channel channel, const char *str) { const char *p, *q, *val; p = str; while (*p) { q = p; while (*q && !ISSPACE(*q)) q++; val = try_option(p, q, "ndots:"); if (val && channel->ndots == -1) channel->ndots = aresx_sltosi(strtol(val, NULL, 10)); val = try_option(p, q, "retrans:"); if (val && channel->timeout == -1) channel->timeout = aresx_sltosi(strtol(val, NULL, 10)); val = try_option(p, q, "retry:"); if (val && channel->tries == -1) channel->tries = aresx_sltosi(strtol(val, NULL, 10)); val = try_option(p, q, "rotate"); if (val && channel->rotate == -1) channel->rotate = 1; p = q; while (ISSPACE(*p)) p++; } return ARES_SUCCESS; } static const char *try_option(const char *p, const char *q, const char *opt) { size_t len = strlen(opt); return ((size_t)(q - p) >= len && !strncmp(p, opt, len)) ? &p[len] : NULL; } #if !defined(WIN32) && !defined(WATT32) && \ !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) static char *try_config(char *s, const char *opt, char scc) { size_t len; char *p; char *q; if (!s || !opt) /* no line or no option */ return NULL; /* LCOV_EXCL_LINE */ /* Hash '#' character is always used as primary comment char, additionally a not-NUL secondary comment char will be considered when specified. */ /* trim line comment */ p = s; if(scc) while (*p && (*p != '#') && (*p != scc)) p++; else while (*p && (*p != '#')) p++; *p = '\0'; /* trim trailing whitespace */ q = p - 1; while ((q >= s) && ISSPACE(*q)) q--; *++q = '\0'; /* skip leading whitespace */ p = s; while (*p && ISSPACE(*p)) p++; if (!*p) /* empty line */ return NULL; if ((len = strlen(opt)) == 0) /* empty option */ return NULL; /* LCOV_EXCL_LINE */ if (strncmp(p, opt, len) != 0) /* line and option do not match */ return NULL; /* skip over given option name */ p += len; if (!*p) /* no option value */ return NULL; /* LCOV_EXCL_LINE */ if ((opt[len-1] != ':') && (opt[len-1] != '=') && !ISSPACE(*p)) /* whitespace between option name and value is mandatory for given option names which do not end with ':' or '=' */ return NULL; /* skip over whitespace */ while (*p && ISSPACE(*p)) p++; if (!*p) /* no option value */ return NULL; /* return pointer to option value */ return p; } #endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ */ static int ip_addr(const char *ipbuf, ares_ssize_t len, struct in_addr *addr) { /* Four octets and three periods yields at most 15 characters. */ if (len > 15) return -1; addr->s_addr = inet_addr(ipbuf); if (addr->s_addr == INADDR_NONE && strcmp(ipbuf, "255.255.255.255") != 0) return -1; return 0; } static void natural_mask(struct apattern *pat) { struct in_addr addr; /* Store a host-byte-order copy of pat in a struct in_addr. Icky, * but portable. */ addr.s_addr = ntohl(pat->addrV4.s_addr); /* This is out of date in the CIDR world, but some people might * still rely on it. */ if (IN_CLASSA(addr.s_addr)) pat->mask.addr4.s_addr = htonl(IN_CLASSA_NET); else if (IN_CLASSB(addr.s_addr)) pat->mask.addr4.s_addr = htonl(IN_CLASSB_NET); else pat->mask.addr4.s_addr = htonl(IN_CLASSC_NET); } static int sortlist_alloc(struct apattern **sortlist, int *nsort, struct apattern *pat) { struct apattern *newsort; newsort = ares_realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern)); if (!newsort) return 0; newsort[*nsort] = *pat; *sortlist = newsort; (*nsort)++; return 1; } /* initialize an rc4 key. If possible a cryptographically secure random key is generated using a suitable function (for example win32's RtlGenRandom as described in http://blogs.msdn.com/michael_howard/archive/2005/01/14/353379.aspx otherwise the code defaults to cross-platform albeit less secure mechanism using rand */ static void randomize_key(unsigned char* key,int key_data_len) { int randomized = 0; int counter=0; #ifdef WIN32 BOOLEAN res; if (ares_fpSystemFunction036) { res = (*ares_fpSystemFunction036) (key, key_data_len); if (res) randomized = 1; } #else /* !WIN32 */ #ifdef RANDOM_FILE FILE *f = fopen(RANDOM_FILE, "rb"); if(f) { counter = aresx_uztosi(fread(key, 1, key_data_len, f)); fclose(f); } #endif #endif /* WIN32 */ if (!randomized) { for (;counterstate[0]; for(counter = 0; counter < 256; counter++) /* unnecessary AND but it keeps some compilers happier */ state[counter] = (unsigned char)(counter & 0xff); randomize_key(key->state,key_data_len); key->x = 0; key->y = 0; index1 = 0; index2 = 0; for(counter = 0; counter < 256; counter++) { index2 = (unsigned char)((key_data_ptr[index1] + state[counter] + index2) % 256); ARES_SWAP_BYTE(&state[counter], &state[index2]); index1 = (unsigned char)((index1 + 1) % key_data_len); } ares_free(key_data_ptr); return ARES_SUCCESS; } void ares_set_local_ip4(ares_channel channel, unsigned int local_ip) { channel->local_ip4 = local_ip; } /* local_ip6 should be 16 bytes in length */ void ares_set_local_ip6(ares_channel channel, const unsigned char* local_ip6) { memcpy(&channel->local_ip6, local_ip6, sizeof(channel->local_ip6)); } /* local_dev_name should be null terminated. */ void ares_set_local_dev(ares_channel channel, const char* local_dev_name) { strncpy(channel->local_dev_name, local_dev_name, sizeof(channel->local_dev_name)); channel->local_dev_name[sizeof(channel->local_dev_name) - 1] = 0; } void ares_set_socket_callback(ares_channel channel, ares_sock_create_callback cb, void *data) { channel->sock_create_cb = cb; channel->sock_create_cb_data = data; } void ares_set_socket_configure_callback(ares_channel channel, ares_sock_config_callback cb, void *data) { channel->sock_config_cb = cb; channel->sock_config_cb_data = data; } void ares_set_socket_functions(ares_channel channel, const struct ares_socket_functions * funcs, void *data) { channel->sock_funcs = funcs; channel->sock_func_cb_data = data; } int ares_set_sortlist(ares_channel channel, const char *sortstr) { int nsort = 0; struct apattern *sortlist = NULL; int status; if (!channel) return ARES_ENODATA; status = config_sortlist(&sortlist, &nsort, sortstr); if (status == ARES_SUCCESS && sortlist) { if (channel->sortlist) ares_free(channel->sortlist); channel->sortlist = sortlist; channel->nsort = nsort; } return status; } void ares__init_servers_state(ares_channel channel) { struct server_state *server; int i; for (i = 0; i < channel->nservers; i++) { server = &channel->servers[i]; server->udp_socket = ARES_SOCKET_BAD; server->tcp_socket = ARES_SOCKET_BAD; server->tcp_connection_generation = ++channel->tcp_connection_generation; server->tcp_lenbuf_pos = 0; server->tcp_buffer_pos = 0; server->tcp_buffer = NULL; server->tcp_length = 0; server->qhead = NULL; server->qtail = NULL; ares__init_list_head(&server->queries_to_server); server->channel = channel; server->is_broken = 0; } } pycares-pycares-3.1.1/deps/c-ares/src/ares_iphlpapi.h000066400000000000000000000134661360572117400225330ustar00rootroot00000000000000#ifndef HEADER_CARES_IPHLPAPI_H #define HEADER_CARES_IPHLPAPI_H /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004 - 2011 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #if defined(USE_WINSOCK) #ifndef INET_ADDRSTRLEN #define INET_ADDRSTRLEN 22 #endif #ifndef INET6_ADDRSTRLEN #define INET6_ADDRSTRLEN 65 #endif /* ---------------------------------- */ #if !defined(_WS2DEF_) && \ !defined(__CSADDR_DEFINED__) && \ !defined(__CSADDR_T_DEFINED) /* ---------------------------------- */ typedef struct _SOCKET_ADDRESS { LPSOCKADDR lpSockaddr; INT iSockaddrLength; } SOCKET_ADDRESS, *PSOCKET_ADDRESS; typedef struct _CSADDR_INFO { SOCKET_ADDRESS LocalAddr; SOCKET_ADDRESS RemoteAddr; INT iSocketType; INT iProtocol; } CSADDR_INFO, *PCSADDR_INFO; /* --------------------------------- */ #endif /* ! _WS2DEF_ && \ */ /* ! __CSADDR_DEFINED__ && \ */ /* ! __CSADDR_T_DEFINED */ /* --------------------------------- */ /* ------------------------------- */ #if !defined(IP_ADAPTER_DDNS_ENABLED) /* ------------------------------- */ #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001 #define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002 #define IP_ADAPTER_DDNS_ENABLED 0x0001 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x0002 #define IP_ADAPTER_DHCP_ENABLED 0x0004 #define IP_ADAPTER_RECEIVE_ONLY 0x0008 #define IP_ADAPTER_NO_MULTICAST 0x0010 #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x0020 #define GAA_FLAG_SKIP_UNICAST 0x0001 #define GAA_FLAG_SKIP_ANYCAST 0x0002 #define GAA_FLAG_SKIP_MULTICAST 0x0004 #define GAA_FLAG_SKIP_DNS_SERVER 0x0008 #define GAA_FLAG_INCLUDE_PREFIX 0x0010 #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020 typedef enum { IpPrefixOriginOther = 0, IpPrefixOriginManual, IpPrefixOriginWellKnown, IpPrefixOriginDhcp, IpPrefixOriginRouterAdvertisement } IP_PREFIX_ORIGIN; typedef enum { IpSuffixOriginOther = 0, IpSuffixOriginManual, IpSuffixOriginWellKnown, IpSuffixOriginDhcp, IpSuffixOriginLinkLayerAddress, IpSuffixOriginRandom } IP_SUFFIX_ORIGIN; typedef enum { IpDadStateInvalid = 0, IpDadStateTentative, IpDadStateDuplicate, IpDadStateDeprecated, IpDadStatePreferred } IP_DAD_STATE; typedef enum { IfOperStatusUp = 1, IfOperStatusDown, IfOperStatusTesting, IfOperStatusUnknown, IfOperStatusDormant, IfOperStatusNotPresent, IfOperStatusLowerLayerDown } IF_OPER_STATUS; typedef enum { ScopeLevelInterface = 0x0001, ScopeLevelLink = 0x0002, ScopeLevelSubnet = 0x0003, ScopeLevelAdmin = 0x0004, ScopeLevelSite = 0x0005, ScopeLevelOrganization = 0x0008, ScopeLevelGlobal = 0x000E } SCOPE_LEVEL; typedef struct _IP_ADAPTER_UNICAST_ADDRESS { union { ULONGLONG Alignment; struct { ULONG Length; DWORD Flags; } s; } u; struct _IP_ADAPTER_UNICAST_ADDRESS *Next; SOCKET_ADDRESS Address; IP_PREFIX_ORIGIN PrefixOrigin; IP_SUFFIX_ORIGIN SuffixOrigin; IP_DAD_STATE DadState; ULONG ValidLifetime; ULONG PreferredLifetime; ULONG LeaseLifetime; } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS; typedef struct _IP_ADAPTER_ANYCAST_ADDRESS { union { ULONGLONG Alignment; struct { ULONG Length; DWORD Flags; } s; } u; struct _IP_ADAPTER_ANYCAST_ADDRESS *Next; SOCKET_ADDRESS Address; } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS; typedef struct _IP_ADAPTER_MULTICAST_ADDRESS { union { ULONGLONG Alignment; struct { ULONG Length; DWORD Flags; } s; } u; struct _IP_ADAPTER_MULTICAST_ADDRESS *Next; SOCKET_ADDRESS Address; } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS; typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS { union { ULONGLONG Alignment; struct { ULONG Length; DWORD Reserved; } s; } u; struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next; SOCKET_ADDRESS Address; } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS; typedef struct _IP_ADAPTER_PREFIX { union { ULONGLONG Alignment; struct { ULONG Length; DWORD Flags; } s; } u; struct _IP_ADAPTER_PREFIX *Next; SOCKET_ADDRESS Address; ULONG PrefixLength; } IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX; typedef struct _IP_ADAPTER_ADDRESSES { union { ULONGLONG Alignment; struct { ULONG Length; DWORD IfIndex; } s; } u; struct _IP_ADAPTER_ADDRESSES *Next; PCHAR AdapterName; PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress; PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress; PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress; PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress; PWCHAR DnsSuffix; PWCHAR Description; PWCHAR FriendlyName; BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]; DWORD PhysicalAddressLength; DWORD Flags; DWORD Mtu; DWORD IfType; IF_OPER_STATUS OperStatus; DWORD Ipv6IfIndex; DWORD ZoneIndices[16]; PIP_ADAPTER_PREFIX FirstPrefix; } IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES; /* -------------------------------- */ #endif /* ! IP_ADAPTER_DDNS_ENABLED */ /* -------------------------------- */ #endif /* USE_WINSOCK */ #endif /* HEADER_CARES_IPHLPAPI_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_ipv6.h000066400000000000000000000036351360572117400216060ustar00rootroot00000000000000 /* Copyright (C) 2005 by Dominick Meglio * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifndef ARES_IPV6_H #define ARES_IPV6_H #ifndef HAVE_PF_INET6 #define PF_INET6 AF_INET6 #endif #ifndef HAVE_STRUCT_SOCKADDR_IN6 struct sockaddr_in6 { unsigned short sin6_family; unsigned short sin6_port; unsigned long sin6_flowinfo; struct ares_in6_addr sin6_addr; unsigned int sin6_scope_id; }; #endif #ifndef HAVE_STRUCT_ADDRINFO struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; ares_socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */ char *ai_canonname; struct sockaddr *ai_addr; struct addrinfo *ai_next; }; #endif #ifndef NS_IN6ADDRSZ #ifndef HAVE_STRUCT_IN6_ADDR /* We cannot have it set to zero, so we pick a fixed value here */ #define NS_IN6ADDRSZ 16 #else #define NS_IN6ADDRSZ sizeof(struct in6_addr) #endif #endif #ifndef NS_INADDRSZ #define NS_INADDRSZ sizeof(struct in_addr) #endif #ifndef NS_INT16SZ #define NS_INT16SZ 2 #endif #ifndef IF_NAMESIZE #ifdef IFNAMSIZ #define IF_NAMESIZE IFNAMSIZ #else #define IF_NAMESIZE 256 #endif #endif /* Defined in inet_net_pton.c for no particular reason. */ extern const struct ares_in6_addr ares_in6addr_any; /* :: */ #endif /* ARES_IPV6_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_library_init.c000066400000000000000000000120041360572117400233720ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004-2009 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_library_init.h" #include "ares_private.h" /* library-private global and unique instance vars */ #ifdef USE_WINSOCK fpGetNetworkParams_t ares_fpGetNetworkParams = ZERO_NULL; fpSystemFunction036_t ares_fpSystemFunction036 = ZERO_NULL; fpGetAdaptersAddresses_t ares_fpGetAdaptersAddresses = ZERO_NULL; fpGetBestRoute2_t ares_fpGetBestRoute2 = ZERO_NULL; #endif #if defined(ANDROID) || defined(__ANDROID__) #include "ares_android.h" #endif /* library-private global vars with source visibility restricted to this file */ static unsigned int ares_initialized; static int ares_init_flags; /* library-private global vars with visibility across the whole library */ #if defined(WIN32) /* We need indirections to handle Windows DLL rules. */ static void *default_malloc(size_t size) { return malloc(size); } static void *default_realloc(void *p, size_t size) { return realloc(p, size); } static void default_free(void *p) { free(p); } #else # define default_malloc malloc # define default_realloc realloc # define default_free free #endif void *(*ares_malloc)(size_t size) = default_malloc; void *(*ares_realloc)(void *ptr, size_t size) = default_realloc; void (*ares_free)(void *ptr) = default_free; #ifdef USE_WINSOCK static HMODULE hnd_iphlpapi; static HMODULE hnd_advapi32; #endif static int ares_win32_init(void) { #ifdef USE_WINSOCK hnd_iphlpapi = 0; hnd_iphlpapi = LoadLibraryW(L"iphlpapi.dll"); if (!hnd_iphlpapi) return ARES_ELOADIPHLPAPI; ares_fpGetNetworkParams = (fpGetNetworkParams_t) GetProcAddress(hnd_iphlpapi, "GetNetworkParams"); if (!ares_fpGetNetworkParams) { FreeLibrary(hnd_iphlpapi); return ARES_EADDRGETNETWORKPARAMS; } ares_fpGetAdaptersAddresses = (fpGetAdaptersAddresses_t) GetProcAddress(hnd_iphlpapi, "GetAdaptersAddresses"); if (!ares_fpGetAdaptersAddresses) { /* This can happen on clients before WinXP, I don't think it should be an error, unless we don't want to support Windows 2000 anymore */ } ares_fpGetBestRoute2 = (fpGetBestRoute2_t) GetProcAddress(hnd_iphlpapi, "GetBestRoute2"); if (!ares_fpGetBestRoute2) { /* This can happen on clients before Vista, I don't think it should be an error, unless we don't want to support Windows XP anymore */ } /* * When advapi32.dll is unavailable or advapi32.dll has no SystemFunction036, * also known as RtlGenRandom, which is the case for Windows versions prior * to WinXP then c-ares uses portable rand() function. Then don't error here. */ hnd_advapi32 = 0; hnd_advapi32 = LoadLibraryW(L"advapi32.dll"); if (hnd_advapi32) { ares_fpSystemFunction036 = (fpSystemFunction036_t) GetProcAddress(hnd_advapi32, "SystemFunction036"); } #endif return ARES_SUCCESS; } static void ares_win32_cleanup(void) { #ifdef USE_WINSOCK if (hnd_advapi32) FreeLibrary(hnd_advapi32); if (hnd_iphlpapi) FreeLibrary(hnd_iphlpapi); #endif } int ares_library_init(int flags) { int res; if (ares_initialized) { ares_initialized++; return ARES_SUCCESS; } ares_initialized++; if (flags & ARES_LIB_INIT_WIN32) { res = ares_win32_init(); if (res != ARES_SUCCESS) return res; /* LCOV_EXCL_LINE: can't test Win32 init failure */ } ares_init_flags = flags; return ARES_SUCCESS; } int ares_library_init_mem(int flags, void *(*amalloc)(size_t size), void (*afree)(void *ptr), void *(*arealloc)(void *ptr, size_t size)) { if (amalloc) ares_malloc = amalloc; if (arealloc) ares_realloc = arealloc; if (afree) ares_free = afree; return ares_library_init(flags); } void ares_library_cleanup(void) { if (!ares_initialized) return; ares_initialized--; if (ares_initialized) return; if (ares_init_flags & ARES_LIB_INIT_WIN32) ares_win32_cleanup(); #if defined(ANDROID) || defined(__ANDROID__) ares_library_cleanup_android(); #endif ares_init_flags = ARES_LIB_INIT_NONE; ares_malloc = malloc; ares_realloc = realloc; ares_free = free; } int ares_library_initialized(void) { #ifdef USE_WINSOCK if (!ares_initialized) return ARES_ENOTINITIALIZED; #endif return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares_library_init.h000066400000000000000000000033321360572117400234030ustar00rootroot00000000000000#ifndef HEADER_CARES_LIBRARY_INIT_H #define HEADER_CARES_LIBRARY_INIT_H /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004-2011 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef USE_WINSOCK #include #include typedef DWORD (WINAPI *fpGetNetworkParams_t) (FIXED_INFO*, DWORD*); typedef BOOLEAN (APIENTRY *fpSystemFunction036_t) (void*, ULONG); typedef ULONG (WINAPI *fpGetAdaptersAddresses_t) ( ULONG, ULONG, void*, IP_ADAPTER_ADDRESSES*, ULONG* ); typedef NETIO_STATUS (WINAPI *fpGetBestRoute2_t) ( NET_LUID *, NET_IFINDEX, const SOCKADDR_INET *, const SOCKADDR_INET *, ULONG, PMIB_IPFORWARD_ROW2, SOCKADDR_INET * ); /* Forward-declaration of variables defined in ares_library_init.c */ /* that are global and unique instances for whole c-ares library. */ extern fpGetNetworkParams_t ares_fpGetNetworkParams; extern fpSystemFunction036_t ares_fpSystemFunction036; extern fpGetAdaptersAddresses_t ares_fpGetAdaptersAddresses; extern fpGetBestRoute2_t ares_fpGetBestRoute2; #endif /* USE_WINSOCK */ #endif /* HEADER_CARES_LIBRARY_INIT_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_llist.c000066400000000000000000000035071360572117400220420ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_private.h" /* Routines for managing doubly-linked circular linked lists with a * dummy head. */ /* Initialize a new head node */ void ares__init_list_head(struct list_node* head) { head->prev = head; head->next = head; head->data = NULL; } /* Initialize a list node */ void ares__init_list_node(struct list_node* node, void* d) { node->prev = NULL; node->next = NULL; node->data = d; } /* Returns true iff the given list is empty */ int ares__is_list_empty(struct list_node* head) { return ((head->next == head) && (head->prev == head)); } /* Inserts new_node before old_node */ void ares__insert_in_list(struct list_node* new_node, struct list_node* old_node) { new_node->next = old_node; new_node->prev = old_node->prev; old_node->prev->next = new_node; old_node->prev = new_node; } /* Removes the node from the list it's in, if any */ void ares__remove_from_list(struct list_node* node) { if (node->next != NULL) { node->prev->next = node->next; node->next->prev = node->prev; node->prev = NULL; node->next = NULL; } } pycares-pycares-3.1.1/deps/c-ares/src/ares_llist.h000066400000000000000000000023451360572117400220460ustar00rootroot00000000000000#ifndef __ARES_LLIST_H #define __ARES_LLIST_H /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* Node definition for circular, doubly-linked list */ struct list_node { struct list_node *prev; struct list_node *next; void* data; }; void ares__init_list_head(struct list_node* head); void ares__init_list_node(struct list_node* node, void* d); int ares__is_list_empty(struct list_node* head); void ares__insert_in_list(struct list_node* new_node, struct list_node* old_node); void ares__remove_from_list(struct list_node* node); #endif /* __ARES_LLIST_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_mkquery.c000066400000000000000000000017041360572117400224050ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id, int rd, unsigned char **buf, int *buflen) { return ares_create_query(name, dnsclass, type, id, rd, buf, buflen, 0); } pycares-pycares-3.1.1/deps/c-ares/src/ares_nowarn.c000066400000000000000000000123631360572117400222170ustar00rootroot00000000000000 /* Copyright (C) 2010-2013 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_ASSERT_H # include #endif #ifdef HAVE_LIMITS_H #include #endif #if defined(__INTEL_COMPILER) && defined(__unix__) #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #endif /* __INTEL_COMPILER && __unix__ */ #define BUILDING_ARES_NOWARN_C 1 #include "ares_nowarn.h" #define CARES_MASK_USHORT (~(unsigned short) 0) #define CARES_MASK_UINT (~(unsigned int) 0) #define CARES_MASK_ULONG (~(unsigned long) 0) #define CARES_MASK_SSHORT (CARES_MASK_USHORT >> 1) #define CARES_MASK_SINT (CARES_MASK_UINT >> 1) #define CARES_MASK_SLONG (CARES_MASK_ULONG >> 1) /* ** unsigned size_t to signed long */ long aresx_uztosl(size_t uznum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif return (long)(uznum & (size_t) CARES_MASK_SLONG); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** unsigned size_t to signed int */ int aresx_uztosi(size_t uznum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif return (int)(uznum & (size_t) CARES_MASK_SINT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** unsigned size_t to signed short */ short aresx_uztoss(size_t uznum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif return (short)(uznum & (size_t) CARES_MASK_SSHORT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** signed int to signed short */ short aresx_sitoss(int sinum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif DEBUGASSERT(sinum >= 0); return (short)(sinum & (int) CARES_MASK_SSHORT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** signed long to signed int */ int aresx_sltosi(long slnum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif DEBUGASSERT(slnum >= 0); return (int)(slnum & (long) CARES_MASK_SINT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** signed ares_ssize_t to signed int */ int aresx_sztosi(ares_ssize_t sznum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif DEBUGASSERT(sznum >= 0); return (int)(sznum & (ares_ssize_t) CARES_MASK_SINT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** signed ares_ssize_t to unsigned int */ unsigned int aresx_sztoui(ares_ssize_t sznum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif DEBUGASSERT(sznum >= 0); return (unsigned int)(sznum & (ares_ssize_t) CARES_MASK_UINT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** signed int to unsigned short */ unsigned short aresx_sitous(int sinum) { #ifdef __INTEL_COMPILER # pragma warning(push) # pragma warning(disable:810) /* conversion may lose significant bits */ #endif DEBUGASSERT(sinum >= 0); return (unsigned short)(sinum & (int) CARES_MASK_USHORT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } #if defined(__INTEL_COMPILER) && defined(__unix__) int aresx_FD_ISSET(int fd, fd_set *fdset) { #pragma warning(push) #pragma warning(disable:1469) /* clobber ignored */ return FD_ISSET(fd, fdset); #pragma warning(pop) } void aresx_FD_SET(int fd, fd_set *fdset) { #pragma warning(push) #pragma warning(disable:1469) /* clobber ignored */ FD_SET(fd, fdset); #pragma warning(pop) } void aresx_FD_ZERO(fd_set *fdset) { #pragma warning(push) #pragma warning(disable:593) /* variable was set but never used */ FD_ZERO(fdset); #pragma warning(pop) } unsigned short aresx_htons(unsigned short usnum) { #if (__INTEL_COMPILER == 910) && defined(__i386__) return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF)); #else #pragma warning(push) #pragma warning(disable:810) /* conversion may lose significant bits */ return htons(usnum); #pragma warning(pop) #endif } unsigned short aresx_ntohs(unsigned short usnum) { #if (__INTEL_COMPILER == 910) && defined(__i386__) return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF)); #else #pragma warning(push) #pragma warning(disable:810) /* conversion may lose significant bits */ return ntohs(usnum); #pragma warning(pop) #endif } #endif /* __INTEL_COMPILER && __unix__ */ pycares-pycares-3.1.1/deps/c-ares/src/ares_nowarn.h000066400000000000000000000033161360572117400222220ustar00rootroot00000000000000#ifndef HEADER_CARES_NOWARN_H #define HEADER_CARES_NOWARN_H /* Copyright (C) 2010-2012 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ long aresx_uztosl(size_t uznum); int aresx_uztosi(size_t uznum); short aresx_uztoss(size_t uznum); short aresx_sitoss(int sinum); int aresx_sltosi(long slnum); int aresx_sztosi(ares_ssize_t sznum); unsigned int aresx_sztoui(ares_ssize_t sznum); unsigned short aresx_sitous(int sinum); #if defined(__INTEL_COMPILER) && defined(__unix__) int aresx_FD_ISSET(int fd, fd_set *fdset); void aresx_FD_SET(int fd, fd_set *fdset); void aresx_FD_ZERO(fd_set *fdset); unsigned short aresx_htons(unsigned short usnum); unsigned short aresx_ntohs(unsigned short usnum); #ifndef BUILDING_ARES_NOWARN_C # undef FD_ISSET # define FD_ISSET(a,b) aresx_FD_ISSET((a),(b)) # undef FD_SET # define FD_SET(a,b) aresx_FD_SET((a),(b)) # undef FD_ZERO # define FD_ZERO(a) aresx_FD_ZERO((a)) # undef htons # define htons(a) aresx_htons((a)) # undef ntohs # define ntohs(a) aresx_ntohs((a)) #endif #endif /* __INTEL_COMPILER && __unix__ */ #endif /* HEADER_CARES_NOWARN_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_options.c000066400000000000000000000260451360572117400224100ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2008-2013 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_ARPA_INET_H # include #endif #include "ares.h" #include "ares_data.h" #include "ares_inet_net_pton.h" #include "ares_private.h" int ares_get_servers(ares_channel channel, struct ares_addr_node **servers) { struct ares_addr_node *srvr_head = NULL; struct ares_addr_node *srvr_last = NULL; struct ares_addr_node *srvr_curr; int status = ARES_SUCCESS; int i; if (!channel) return ARES_ENODATA; for (i = 0; i < channel->nservers; i++) { /* Allocate storage for this server node appending it to the list */ srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_NODE); if (!srvr_curr) { status = ARES_ENOMEM; break; } if (srvr_last) { srvr_last->next = srvr_curr; } else { srvr_head = srvr_curr; } srvr_last = srvr_curr; /* Fill this server node data */ srvr_curr->family = channel->servers[i].addr.family; if (srvr_curr->family == AF_INET) memcpy(&srvr_curr->addrV4, &channel->servers[i].addr.addrV4, sizeof(srvr_curr->addrV4)); else memcpy(&srvr_curr->addrV6, &channel->servers[i].addr.addrV6, sizeof(srvr_curr->addrV6)); } if (status != ARES_SUCCESS) { if (srvr_head) { ares_free_data(srvr_head); srvr_head = NULL; } } *servers = srvr_head; return status; } int ares_get_servers_ports(ares_channel channel, struct ares_addr_port_node **servers) { struct ares_addr_port_node *srvr_head = NULL; struct ares_addr_port_node *srvr_last = NULL; struct ares_addr_port_node *srvr_curr; int status = ARES_SUCCESS; int i; if (!channel) return ARES_ENODATA; for (i = 0; i < channel->nservers; i++) { /* Allocate storage for this server node appending it to the list */ srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_PORT_NODE); if (!srvr_curr) { status = ARES_ENOMEM; break; } if (srvr_last) { srvr_last->next = srvr_curr; } else { srvr_head = srvr_curr; } srvr_last = srvr_curr; /* Fill this server node data */ srvr_curr->family = channel->servers[i].addr.family; srvr_curr->udp_port = ntohs((unsigned short)channel->servers[i].addr.udp_port); srvr_curr->tcp_port = ntohs((unsigned short)channel->servers[i].addr.tcp_port); if (srvr_curr->family == AF_INET) memcpy(&srvr_curr->addrV4, &channel->servers[i].addr.addrV4, sizeof(srvr_curr->addrV4)); else memcpy(&srvr_curr->addrV6, &channel->servers[i].addr.addrV6, sizeof(srvr_curr->addrV6)); } if (status != ARES_SUCCESS) { if (srvr_head) { ares_free_data(srvr_head); srvr_head = NULL; } } *servers = srvr_head; return status; } int ares_set_servers(ares_channel channel, struct ares_addr_node *servers) { struct ares_addr_node *srvr; int num_srvrs = 0; int i; if (ares_library_initialized() != ARES_SUCCESS) return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ if (!channel) return ARES_ENODATA; if (!ares__is_list_empty(&channel->all_queries)) return ARES_ENOTIMP; ares__destroy_servers_state(channel); for (srvr = servers; srvr; srvr = srvr->next) { num_srvrs++; } if (num_srvrs > 0) { /* Allocate storage for servers state */ channel->servers = ares_malloc(num_srvrs * sizeof(struct server_state)); if (!channel->servers) { return ARES_ENOMEM; } channel->nservers = num_srvrs; /* Fill servers state address data */ for (i = 0, srvr = servers; srvr; i++, srvr = srvr->next) { channel->servers[i].addr.family = srvr->family; channel->servers[i].addr.udp_port = 0; channel->servers[i].addr.tcp_port = 0; if (srvr->family == AF_INET) memcpy(&channel->servers[i].addr.addrV4, &srvr->addrV4, sizeof(srvr->addrV4)); else memcpy(&channel->servers[i].addr.addrV6, &srvr->addrV6, sizeof(srvr->addrV6)); } /* Initialize servers state remaining data */ ares__init_servers_state(channel); } return ARES_SUCCESS; } int ares_set_servers_ports(ares_channel channel, struct ares_addr_port_node *servers) { struct ares_addr_port_node *srvr; int num_srvrs = 0; int i; if (ares_library_initialized() != ARES_SUCCESS) return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ if (!channel) return ARES_ENODATA; if (!ares__is_list_empty(&channel->all_queries)) return ARES_ENOTIMP; ares__destroy_servers_state(channel); for (srvr = servers; srvr; srvr = srvr->next) { num_srvrs++; } if (num_srvrs > 0) { /* Allocate storage for servers state */ channel->servers = ares_malloc(num_srvrs * sizeof(struct server_state)); if (!channel->servers) { return ARES_ENOMEM; } channel->nservers = num_srvrs; /* Fill servers state address data */ for (i = 0, srvr = servers; srvr; i++, srvr = srvr->next) { channel->servers[i].addr.family = srvr->family; channel->servers[i].addr.udp_port = htons((unsigned short)srvr->udp_port); channel->servers[i].addr.tcp_port = htons((unsigned short)srvr->tcp_port); if (srvr->family == AF_INET) memcpy(&channel->servers[i].addr.addrV4, &srvr->addrV4, sizeof(srvr->addrV4)); else memcpy(&channel->servers[i].addr.addrV6, &srvr->addrV6, sizeof(srvr->addrV6)); } /* Initialize servers state remaining data */ ares__init_servers_state(channel); } return ARES_SUCCESS; } /* Incomming string format: host[:port][,host[:port]]... */ /* IPv6 addresses with ports require square brackets [fe80::1%lo0]:53 */ static int set_servers_csv(ares_channel channel, const char* _csv, int use_port) { size_t i; char* csv = NULL; char* ptr; char* start_host; int cc = 0; int rv = ARES_SUCCESS; struct ares_addr_port_node *servers = NULL; struct ares_addr_port_node *last = NULL; if (ares_library_initialized() != ARES_SUCCESS) return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ if (!channel) return ARES_ENODATA; i = strlen(_csv); if (i == 0) return ARES_SUCCESS; /* blank all servers */ csv = ares_malloc(i + 2); if (!csv) return ARES_ENOMEM; strcpy(csv, _csv); if (csv[i-1] != ',') { /* make parsing easier by ensuring ending ',' */ csv[i] = ','; csv[i+1] = 0; } start_host = csv; for (ptr = csv; *ptr; ptr++) { if (*ptr == ':') { /* count colons to determine if we have an IPv6 number or IPv4 with port */ cc++; } else if (*ptr == '[') { /* move start_host if an open square bracket is found wrapping an IPv6 address */ start_host = ptr + 1; } else if (*ptr == ',') { char* pp = ptr - 1; char* p = ptr; int port = 0; struct in_addr in4; struct ares_in6_addr in6; struct ares_addr_port_node *s = NULL; *ptr = 0; /* null terminate host:port string */ /* Got an entry..see if the port was specified. */ if (cc > 0) { while (pp > start_host) { /* a single close square bracket followed by a colon, ']:' indicates an IPv6 address with port */ if ((*pp == ']') && (*p == ':')) break; /* found port */ /* a single colon, ':' indicates an IPv4 address with port */ if ((*pp == ':') && (cc == 1)) break; /* found port */ if (!(ISDIGIT(*pp) || (*pp == ':'))) { /* Found end of digits before we found :, so wasn't a port */ /* must allow ':' for IPv6 case of ']:' indicates we found a port */ pp = p = ptr; break; } pp--; p--; } if ((pp != start_host) && ((pp + 1) < ptr)) { /* Found it. Parse over the port number */ /* when an IPv6 address is wrapped with square brackets the port starts at pp + 2 */ if (*pp == ']') p++; /* move p before ':' */ /* p will point to the start of the port */ port = (int)strtol(p, NULL, 10); *pp = 0; /* null terminate host */ } } /* resolve host, try ipv4 first, rslt is in network byte order */ rv = ares_inet_pton(AF_INET, start_host, &in4); if (!rv) { /* Ok, try IPv6 then */ rv = ares_inet_pton(AF_INET6, start_host, &in6); if (!rv) { rv = ARES_EBADSTR; goto out; } /* was ipv6, add new server */ s = ares_malloc(sizeof(*s)); if (!s) { rv = ARES_ENOMEM; goto out; } s->family = AF_INET6; memcpy(&s->addr, &in6, sizeof(struct ares_in6_addr)); } else { /* was ipv4, add new server */ s = ares_malloc(sizeof(*s)); if (!s) { rv = ARES_ENOMEM; goto out; } s->family = AF_INET; memcpy(&s->addr, &in4, sizeof(struct in_addr)); } if (s) { s->udp_port = use_port ? port: 0; s->tcp_port = s->udp_port; s->next = NULL; if (last) { last->next = s; /* need to move last to maintain the linked list */ last = last->next; } else { servers = s; last = s; } } /* Set up for next one */ start_host = ptr + 1; cc = 0; } } rv = ares_set_servers_ports(channel, servers); out: if (csv) ares_free(csv); while (servers) { struct ares_addr_port_node *s = servers; servers = servers->next; ares_free(s); } return rv; } int ares_set_servers_csv(ares_channel channel, const char* _csv) { return set_servers_csv(channel, _csv, FALSE); } int ares_set_servers_ports_csv(ares_channel channel, const char* _csv) { return set_servers_csv(channel, _csv, TRUE); } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_a_reply.c000066400000000000000000000172231360572117400235400ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_private.h" int ares_parse_a_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addrttl *addrttls, int *naddrttls) { unsigned int qdcount, ancount; int status, i, rr_type, rr_class, rr_len, rr_ttl, naddrs; int cname_ttl = INT_MAX; /* the TTL imposed by the CNAME chain */ int naliases; long len; const unsigned char *aptr; char *hostname, *rr_name, *rr_data, **aliases; struct in_addr *addrs; struct hostent *hostent; const int max_addr_ttls = (addrttls && naddrttls) ? *naddrttls : 0; /* Set *host to NULL for all failure cases. */ if (host) *host = NULL; /* Same with *naddrttls. */ if (naddrttls) *naddrttls = 0; /* Give up if abuf doesn't have room for a header. */ if (alen < HFIXEDSZ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT(abuf); ancount = DNS_HEADER_ANCOUNT(abuf); if (qdcount != 1) return ARES_EBADRESP; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares__expand_name_for_response(aptr, abuf, alen, &hostname, &len); if (status != ARES_SUCCESS) return status; if (aptr + len + QFIXEDSZ > abuf + alen) { ares_free(hostname); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; if (host) { /* Allocate addresses and aliases; ancount gives an upper bound for both. */ addrs = ares_malloc(ancount * sizeof(struct in_addr)); if (!addrs) { ares_free(hostname); return ARES_ENOMEM; } aliases = ares_malloc((ancount + 1) * sizeof(char *)); if (!aliases) { ares_free(hostname); ares_free(addrs); return ARES_ENOMEM; } } else { addrs = NULL; aliases = NULL; } naddrs = 0; naliases = 0; /* Examine each answer resource record (RR) in turn. */ for (i = 0; i < (int)ancount; i++) { /* Decode the RR up to the data field. */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) break; aptr += len; if (aptr + RRFIXEDSZ > abuf + alen) { ares_free(rr_name); status = ARES_EBADRESP; break; } rr_type = DNS_RR_TYPE(aptr); rr_class = DNS_RR_CLASS(aptr); rr_len = DNS_RR_LEN(aptr); rr_ttl = DNS_RR_TTL(aptr); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { ares_free(rr_name); status = ARES_EBADRESP; break; } if (rr_class == C_IN && rr_type == T_A && rr_len == sizeof(struct in_addr) && strcasecmp(rr_name, hostname) == 0) { if (addrs) { if (aptr + sizeof(struct in_addr) > abuf + alen) { /* LCOV_EXCL_START: already checked above */ ares_free(rr_name); status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ memcpy(&addrs[naddrs], aptr, sizeof(struct in_addr)); } if (naddrs < max_addr_ttls) { struct ares_addrttl * const at = &addrttls[naddrs]; if (aptr + sizeof(struct in_addr) > abuf + alen) { /* LCOV_EXCL_START: already checked above */ ares_free(rr_name); status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ memcpy(&at->ipaddr, aptr, sizeof(struct in_addr)); at->ttl = rr_ttl; } naddrs++; status = ARES_SUCCESS; } if (rr_class == C_IN && rr_type == T_CNAME) { /* Record the RR name as an alias. */ if (aliases) aliases[naliases] = rr_name; else ares_free(rr_name); naliases++; /* Decode the RR data and replace the hostname with it. */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data, &len); if (status != ARES_SUCCESS) break; ares_free(hostname); hostname = rr_data; /* Take the min of the TTLs we see in the CNAME chain. */ if (cname_ttl > rr_ttl) cname_ttl = rr_ttl; } else ares_free(rr_name); aptr += rr_len; if (aptr > abuf + alen) { /* LCOV_EXCL_START: already checked above */ status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ } if (status == ARES_SUCCESS && naddrs == 0 && naliases == 0) /* the check for naliases to be zero is to make sure CNAME responses don't get caught here */ status = ARES_ENODATA; if (status == ARES_SUCCESS) { /* We got our answer. */ if (naddrttls) { const int n = naddrs < max_addr_ttls ? naddrs : max_addr_ttls; for (i = 0; i < n; i++) { /* Ensure that each A TTL is no larger than the CNAME TTL. */ if (addrttls[i].ttl > cname_ttl) addrttls[i].ttl = cname_ttl; } *naddrttls = n; } if (aliases) aliases[naliases] = NULL; if (host) { /* Allocate memory to build the host entry. */ hostent = ares_malloc(sizeof(struct hostent)); if (hostent) { hostent->h_addr_list = ares_malloc((naddrs + 1) * sizeof(char *)); if (hostent->h_addr_list) { /* Fill in the hostent and return successfully. */ hostent->h_name = hostname; hostent->h_aliases = aliases; hostent->h_addrtype = AF_INET; hostent->h_length = sizeof(struct in_addr); for (i = 0; i < naddrs; i++) hostent->h_addr_list[i] = (char *) &addrs[i]; hostent->h_addr_list[naddrs] = NULL; if (!naddrs && addrs) ares_free(addrs); *host = hostent; return ARES_SUCCESS; } ares_free(hostent); } status = ARES_ENOMEM; } } if (aliases) { for (i = 0; i < naliases; i++) ares_free(aliases[i]); ares_free(aliases); } ares_free(addrs); ares_free(hostname); return status; } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_aaaa_reply.c000066400000000000000000000174021360572117400242020ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright 2005 Dominick Meglio * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_inet_net_pton.h" #include "ares_private.h" int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addr6ttl *addrttls, int *naddrttls) { unsigned int qdcount, ancount; int status, i, rr_type, rr_class, rr_len, rr_ttl, naddrs; int cname_ttl = INT_MAX; /* the TTL imposed by the CNAME chain */ int naliases; long len; const unsigned char *aptr; char *hostname, *rr_name, *rr_data, **aliases; struct ares_in6_addr *addrs; struct hostent *hostent; const int max_addr_ttls = (addrttls && naddrttls) ? *naddrttls : 0; /* Set *host to NULL for all failure cases. */ if (host) *host = NULL; /* Same with *naddrttls. */ if (naddrttls) *naddrttls = 0; /* Give up if abuf doesn't have room for a header. */ if (alen < HFIXEDSZ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT(abuf); ancount = DNS_HEADER_ANCOUNT(abuf); if (qdcount != 1) return ARES_EBADRESP; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares__expand_name_for_response(aptr, abuf, alen, &hostname, &len); if (status != ARES_SUCCESS) return status; if (aptr + len + QFIXEDSZ > abuf + alen) { ares_free(hostname); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; /* Allocate addresses and aliases; ancount gives an upper bound for both. */ if (host) { addrs = ares_malloc(ancount * sizeof(struct ares_in6_addr)); if (!addrs) { ares_free(hostname); return ARES_ENOMEM; } aliases = ares_malloc((ancount + 1) * sizeof(char *)); if (!aliases) { ares_free(hostname); ares_free(addrs); return ARES_ENOMEM; } } else { addrs = NULL; aliases = NULL; } naddrs = 0; naliases = 0; /* Examine each answer resource record (RR) in turn. */ for (i = 0; i < (int)ancount; i++) { /* Decode the RR up to the data field. */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) break; aptr += len; if (aptr + RRFIXEDSZ > abuf + alen) { ares_free(rr_name); status = ARES_EBADRESP; break; } rr_type = DNS_RR_TYPE(aptr); rr_class = DNS_RR_CLASS(aptr); rr_len = DNS_RR_LEN(aptr); rr_ttl = DNS_RR_TTL(aptr); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { ares_free(rr_name); status = ARES_EBADRESP; break; } if (rr_class == C_IN && rr_type == T_AAAA && rr_len == sizeof(struct ares_in6_addr) && strcasecmp(rr_name, hostname) == 0) { if (addrs) { if (aptr + sizeof(struct ares_in6_addr) > abuf + alen) { /* LCOV_EXCL_START: already checked above */ ares_free(rr_name); status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ memcpy(&addrs[naddrs], aptr, sizeof(struct ares_in6_addr)); } if (naddrs < max_addr_ttls) { struct ares_addr6ttl * const at = &addrttls[naddrs]; if (aptr + sizeof(struct ares_in6_addr) > abuf + alen) { /* LCOV_EXCL_START: already checked above */ ares_free(rr_name); status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ memcpy(&at->ip6addr, aptr, sizeof(struct ares_in6_addr)); at->ttl = rr_ttl; } naddrs++; status = ARES_SUCCESS; } if (rr_class == C_IN && rr_type == T_CNAME) { /* Record the RR name as an alias. */ if (aliases) aliases[naliases] = rr_name; else ares_free(rr_name); naliases++; /* Decode the RR data and replace the hostname with it. */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data, &len); if (status != ARES_SUCCESS) break; ares_free(hostname); hostname = rr_data; /* Take the min of the TTLs we see in the CNAME chain. */ if (cname_ttl > rr_ttl) cname_ttl = rr_ttl; } else ares_free(rr_name); aptr += rr_len; if (aptr > abuf + alen) { /* LCOV_EXCL_START: already checked above */ status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ } /* the check for naliases to be zero is to make sure CNAME responses don't get caught here */ if (status == ARES_SUCCESS && naddrs == 0 && naliases == 0) status = ARES_ENODATA; if (status == ARES_SUCCESS) { /* We got our answer. */ if (naddrttls) { const int n = naddrs < max_addr_ttls ? naddrs : max_addr_ttls; for (i = 0; i < n; i++) { /* Ensure that each A TTL is no larger than the CNAME TTL. */ if (addrttls[i].ttl > cname_ttl) addrttls[i].ttl = cname_ttl; } *naddrttls = n; } if (aliases) aliases[naliases] = NULL; if (host) { /* Allocate memory to build the host entry. */ hostent = ares_malloc(sizeof(struct hostent)); if (hostent) { hostent->h_addr_list = ares_malloc((naddrs + 1) * sizeof(char *)); if (hostent->h_addr_list) { /* Fill in the hostent and return successfully. */ hostent->h_name = hostname; hostent->h_aliases = aliases; hostent->h_addrtype = AF_INET6; hostent->h_length = sizeof(struct ares_in6_addr); for (i = 0; i < naddrs; i++) hostent->h_addr_list[i] = (char *) &addrs[i]; hostent->h_addr_list[naddrs] = NULL; if (!naddrs && addrs) ares_free(addrs); *host = hostent; return ARES_SUCCESS; } ares_free(hostent); } status = ARES_ENOMEM; } } if (aliases) { for (i = 0; i < naliases; i++) ares_free(aliases[i]); ares_free(aliases); } ares_free(addrs); ares_free(hostname); return status; } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_mx_reply.c000066400000000000000000000107071360572117400237440ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2010 Jeremy Lal * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" int ares_parse_mx_reply (const unsigned char *abuf, int alen, struct ares_mx_reply **mx_out) { unsigned int qdcount, ancount, i; const unsigned char *aptr, *vptr; int status, rr_type, rr_class, rr_len, rr_ttl; long len; char *hostname = NULL, *rr_name = NULL; struct ares_mx_reply *mx_head = NULL; struct ares_mx_reply *mx_last = NULL; struct ares_mx_reply *mx_curr; /* Set *mx_out to NULL for all failure cases. */ *mx_out = NULL; /* Give up if abuf doesn't have room for a header. */ if (alen < HFIXEDSZ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT (abuf); ancount = DNS_HEADER_ANCOUNT (abuf); if (qdcount != 1) return ARES_EBADRESP; if (ancount == 0) return ARES_ENODATA; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares_expand_name (aptr, abuf, alen, &hostname, &len); if (status != ARES_SUCCESS) return status; if (aptr + len + QFIXEDSZ > abuf + alen) { ares_free (hostname); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; /* Examine each answer resource record (RR) in turn. */ for (i = 0; i < ancount; i++) { /* Decode the RR up to the data field. */ status = ares_expand_name (aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) { break; } aptr += len; if (aptr + RRFIXEDSZ > abuf + alen) { status = ARES_EBADRESP; break; } rr_type = DNS_RR_TYPE (aptr); rr_class = DNS_RR_CLASS (aptr); rr_len = DNS_RR_LEN (aptr); rr_ttl = DNS_RR_TTL (aptr); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { status = ARES_EBADRESP; break; } /* Check if we are really looking at a MX record */ if (rr_class == C_IN && rr_type == T_MX) { /* parse the MX record itself */ if (rr_len < 2) { status = ARES_EBADRESP; break; } /* Allocate storage for this MX answer appending it to the list */ mx_curr = ares_malloc_data(ARES_DATATYPE_MX_REPLY); if (!mx_curr) { status = ARES_ENOMEM; break; } if (mx_last) { mx_last->next = mx_curr; } else { mx_head = mx_curr; } mx_last = mx_curr; vptr = aptr; mx_curr->priority = DNS__16BIT(vptr); mx_curr->ttl = rr_ttl; vptr += sizeof(unsigned short); status = ares_expand_name (vptr, abuf, alen, &mx_curr->host, &len); if (status != ARES_SUCCESS) break; } /* Don't lose memory in the next iteration */ ares_free (rr_name); rr_name = NULL; /* Move on to the next record */ aptr += rr_len; } if (hostname) ares_free (hostname); if (rr_name) ares_free (rr_name); /* clean up on error */ if (status != ARES_SUCCESS) { if (mx_head) ares_free_data (mx_head); return status; } /* everything looks fine, return the data */ *mx_out = mx_head; return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_naptr_reply.c000066400000000000000000000124611360572117400244430ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2009 by Jakub Hrozek * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" /* AIX portability check */ #ifndef T_NAPTR #define T_NAPTR 35 /* naming authority pointer */ #endif int ares_parse_naptr_reply (const unsigned char *abuf, int alen, struct ares_naptr_reply **naptr_out) { unsigned int qdcount, ancount, i; const unsigned char *aptr, *vptr; int status, rr_type, rr_class, rr_len, rr_ttl; long len; char *hostname = NULL, *rr_name = NULL; struct ares_naptr_reply *naptr_head = NULL; struct ares_naptr_reply *naptr_last = NULL; struct ares_naptr_reply *naptr_curr; /* Set *naptr_out to NULL for all failure cases. */ *naptr_out = NULL; /* Give up if abuf doesn't have room for a header. */ if (alen < HFIXEDSZ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT (abuf); ancount = DNS_HEADER_ANCOUNT (abuf); if (qdcount != 1) return ARES_EBADRESP; if (ancount == 0) return ARES_ENODATA; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares_expand_name (aptr, abuf, alen, &hostname, &len); if (status != ARES_SUCCESS) return status; if (aptr + len + QFIXEDSZ > abuf + alen) { ares_free (hostname); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; /* Examine each answer resource record (RR) in turn. */ for (i = 0; i < ancount; i++) { /* Decode the RR up to the data field. */ status = ares_expand_name (aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) { break; } aptr += len; if (aptr + RRFIXEDSZ > abuf + alen) { status = ARES_EBADRESP; break; } rr_type = DNS_RR_TYPE (aptr); rr_class = DNS_RR_CLASS (aptr); rr_len = DNS_RR_LEN (aptr); rr_ttl = DNS_RR_TTL (aptr); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { status = ARES_EBADRESP; break; } /* Check if we are really looking at a NAPTR record */ if (rr_class == C_IN && rr_type == T_NAPTR) { /* parse the NAPTR record itself */ /* RR must contain at least 7 bytes = 2 x int16 + 3 x name */ if (rr_len < 7) { status = ARES_EBADRESP; break; } /* Allocate storage for this NAPTR answer appending it to the list */ naptr_curr = ares_malloc_data(ARES_DATATYPE_NAPTR_REPLY); if (!naptr_curr) { status = ARES_ENOMEM; break; } if (naptr_last) { naptr_last->next = naptr_curr; } else { naptr_head = naptr_curr; } naptr_last = naptr_curr; naptr_curr->ttl = rr_ttl; vptr = aptr; naptr_curr->order = DNS__16BIT(vptr); vptr += sizeof(unsigned short); naptr_curr->preference = DNS__16BIT(vptr); vptr += sizeof(unsigned short); status = ares_expand_string(vptr, abuf, alen, &naptr_curr->flags, &len); if (status != ARES_SUCCESS) break; vptr += len; status = ares_expand_string(vptr, abuf, alen, &naptr_curr->service, &len); if (status != ARES_SUCCESS) break; vptr += len; status = ares_expand_string(vptr, abuf, alen, &naptr_curr->regexp, &len); if (status != ARES_SUCCESS) break; vptr += len; status = ares_expand_name(vptr, abuf, alen, &naptr_curr->replacement, &len); if (status != ARES_SUCCESS) break; } /* Don't lose memory in the next iteration */ ares_free (rr_name); rr_name = NULL; /* Move on to the next record */ aptr += rr_len; } if (hostname) ares_free (hostname); if (rr_name) ares_free (rr_name); /* clean up on error */ if (status != ARES_SUCCESS) { if (naptr_head) ares_free_data (naptr_head); return status; } /* everything looks fine, return the data */ *naptr_out = naptr_head; return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_ns_reply.c000066400000000000000000000117521360572117400237410ustar00rootroot00000000000000/* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* * ares_parse_ns_reply created by Vlad Dinulescu * on behalf of AVIRA Gmbh - http://www.avira.com */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_private.h" int ares_parse_ns_reply( const unsigned char* abuf, int alen, struct hostent** host ) { unsigned int qdcount, ancount; int status, i, rr_type, rr_class, rr_len; int nameservers_num; long len; const unsigned char *aptr; char* hostname, *rr_name, *rr_data, **nameservers; struct hostent *hostent; /* Set *host to NULL for all failure cases. */ *host = NULL; /* Give up if abuf doesn't have room for a header. */ if ( alen < HFIXEDSZ ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT( abuf ); ancount = DNS_HEADER_ANCOUNT( abuf ); if ( qdcount != 1 ) return ARES_EBADRESP; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares__expand_name_for_response( aptr, abuf, alen, &hostname, &len); if ( status != ARES_SUCCESS ) return status; if ( aptr + len + QFIXEDSZ > abuf + alen ) { ares_free( hostname ); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; /* Allocate nameservers array; ancount gives an upper bound */ nameservers = ares_malloc( ( ancount + 1 ) * sizeof( char * ) ); if ( !nameservers ) { ares_free( hostname ); return ARES_ENOMEM; } nameservers_num = 0; /* Examine each answer resource record (RR) in turn. */ for ( i = 0; i < ( int ) ancount; i++ ) { /* Decode the RR up to the data field. */ status = ares__expand_name_for_response( aptr, abuf, alen, &rr_name, &len ); if ( status != ARES_SUCCESS ) break; aptr += len; if ( aptr + RRFIXEDSZ > abuf + alen ) { status = ARES_EBADRESP; ares_free(rr_name); break; } rr_type = DNS_RR_TYPE( aptr ); rr_class = DNS_RR_CLASS( aptr ); rr_len = DNS_RR_LEN( aptr ); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { ares_free(rr_name); status = ARES_EBADRESP; break; } if ( rr_class == C_IN && rr_type == T_NS ) { /* Decode the RR data and add it to the nameservers list */ status = ares__expand_name_for_response( aptr, abuf, alen, &rr_data, &len); if ( status != ARES_SUCCESS ) { ares_free(rr_name); break; } nameservers[nameservers_num] = ares_malloc(strlen(rr_data)+1); if (nameservers[nameservers_num]==NULL) { ares_free(rr_name); ares_free(rr_data); status=ARES_ENOMEM; break; } strcpy(nameservers[nameservers_num],rr_data); ares_free(rr_data); nameservers_num++; } ares_free( rr_name ); aptr += rr_len; if ( aptr > abuf + alen ) { /* LCOV_EXCL_START: already checked above */ status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ } if ( status == ARES_SUCCESS && nameservers_num == 0 ) { status = ARES_ENODATA; } if ( status == ARES_SUCCESS ) { /* We got our answer. Allocate memory to build the host entry. */ nameservers[nameservers_num] = NULL; hostent = ares_malloc( sizeof( struct hostent ) ); if ( hostent ) { hostent->h_addr_list = ares_malloc( 1 * sizeof( char * ) ); if ( hostent->h_addr_list ) { /* Fill in the hostent and return successfully. */ hostent->h_name = hostname; hostent->h_aliases = nameservers; hostent->h_addrtype = AF_INET; hostent->h_length = sizeof( struct in_addr ); hostent->h_addr_list[0] = NULL; *host = hostent; return ARES_SUCCESS; } ares_free( hostent ); } status = ARES_ENOMEM; } for ( i = 0; i < nameservers_num; i++ ) ares_free( nameservers[i] ); ares_free( nameservers ); ares_free( hostname ); return status; } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_ptr_reply.c000066400000000000000000000157301360572117400241260ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_nowarn.h" #include "ares_private.h" int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr, int addrlen, int family, struct hostent **host, int *hostttl) { unsigned int qdcount, ancount; int status, i, rr_type, rr_class, rr_len, rr_ttl; long len; const unsigned char *aptr; char *ptrname, *hostname, *rr_name, *rr_data; struct hostent *hostent; int aliascnt = 0; int alias_alloc = 8; char ** aliases; size_t rr_data_len; /* Set *host to NULL for all failure cases. */ *host = NULL; if (hostttl) *hostttl = INT_MAX; /* Give up if abuf doesn't have room for a header. */ if (alen < HFIXEDSZ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT(abuf); ancount = DNS_HEADER_ANCOUNT(abuf); if (qdcount != 1) return ARES_EBADRESP; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares__expand_name_for_response(aptr, abuf, alen, &ptrname, &len); if (status != ARES_SUCCESS) return status; if (aptr + len + QFIXEDSZ > abuf + alen) { ares_free(ptrname); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; /* Examine each answer resource record (RR) in turn. */ hostname = NULL; aliases = ares_malloc(alias_alloc * sizeof(char *)); if (!aliases) { ares_free(ptrname); return ARES_ENOMEM; } for (i = 0; i < (int)ancount; i++) { /* Decode the RR up to the data field. */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) break; aptr += len; if (aptr + RRFIXEDSZ > abuf + alen) { ares_free(rr_name); status = ARES_EBADRESP; break; } rr_type = DNS_RR_TYPE(aptr); rr_class = DNS_RR_CLASS(aptr); rr_len = DNS_RR_LEN(aptr); rr_ttl = DNS_RR_TTL(aptr); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { ares_free(rr_name); status = ARES_EBADRESP; break; } if (rr_class == C_IN && rr_type == T_PTR && strcasecmp(rr_name, ptrname) == 0) { /* Decode the RR data and set hostname to it. */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data, &len); if (status != ARES_SUCCESS) { ares_free(rr_name); break; } if (hostname) ares_free(hostname); hostname = rr_data; rr_data_len = strlen(rr_data)+1; aliases[aliascnt] = ares_malloc(rr_data_len * sizeof(char)); if (!aliases[aliascnt]) { ares_free(rr_name); status = ARES_ENOMEM; break; } strncpy(aliases[aliascnt], rr_data, rr_data_len); aliascnt++; if (aliascnt >= alias_alloc) { char **ptr; alias_alloc *= 2; ptr = ares_realloc(aliases, alias_alloc * sizeof(char *)); if(!ptr) { ares_free(rr_name); status = ARES_ENOMEM; break; } aliases = ptr; } if (hostttl) { if (*hostttl > rr_ttl) { *hostttl = rr_ttl; } } } if (rr_class == C_IN && rr_type == T_CNAME) { /* Decode the RR data and replace ptrname with it. */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data, &len); if (status != ARES_SUCCESS) { ares_free(rr_name); break; } ares_free(ptrname); ptrname = rr_data; } ares_free(rr_name); aptr += rr_len; if (aptr > abuf + alen) { /* LCOV_EXCL_START: already checked above */ status = ARES_EBADRESP; break; } /* LCOV_EXCL_STOP */ } if (status == ARES_SUCCESS && !hostname) status = ARES_ENODATA; if (status == ARES_SUCCESS) { /* We got our answer. Allocate memory to build the host entry. */ hostent = ares_malloc(sizeof(struct hostent)); if (hostent) { hostent->h_addr_list = ares_malloc(2 * sizeof(char *)); if (hostent->h_addr_list) { hostent->h_addr_list[0] = ares_malloc(addrlen); if (hostent->h_addr_list[0]) { hostent->h_aliases = ares_malloc((aliascnt+1) * sizeof (char *)); if (hostent->h_aliases) { /* Fill in the hostent and return successfully. */ hostent->h_name = hostname; for (i=0 ; ih_aliases[i] = aliases[i]; hostent->h_aliases[aliascnt] = NULL; hostent->h_addrtype = aresx_sitoss(family); hostent->h_length = aresx_sitoss(addrlen); memcpy(hostent->h_addr_list[0], addr, addrlen); hostent->h_addr_list[1] = NULL; *host = hostent; ares_free(aliases); ares_free(ptrname); return ARES_SUCCESS; } ares_free(hostent->h_addr_list[0]); } ares_free(hostent->h_addr_list); } ares_free(hostent); } status = ARES_ENOMEM; } for (i=0 ; i * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" int ares_parse_soa_reply(const unsigned char *abuf, int alen, struct ares_soa_reply **soa_out) { const unsigned char *aptr; long len; char *qname = NULL, *rr_name = NULL; struct ares_soa_reply *soa = NULL; int qdcount, ancount; int status; int ttl; if (alen < HFIXEDSZ) return ARES_EBADRESP; /* parse message header */ qdcount = DNS_HEADER_QDCOUNT(abuf); ancount = DNS_HEADER_ANCOUNT(abuf); if (qdcount != 1 || ancount != 1) return ARES_EBADRESP; aptr = abuf + HFIXEDSZ; /* query name */ status = ares__expand_name_for_response(aptr, abuf, alen, &qname, &len); if (status != ARES_SUCCESS) goto failed_stat; aptr += len; /* skip qtype & qclass */ if (aptr + QFIXEDSZ > abuf + alen) goto failed; aptr += QFIXEDSZ; /* rr_name */ status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) goto failed_stat; aptr += len; /* skip rr_type, rr_class, rr_ttl, rr_rdlen */ if (aptr + RRFIXEDSZ > abuf + alen) goto failed; ttl = DNS_RR_TTL(aptr); aptr += RRFIXEDSZ; /* allocate result struct */ soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY); if (!soa) { status = ARES_ENOMEM; goto failed_stat; } /* nsname */ status = ares__expand_name_for_response(aptr, abuf, alen, &soa->nsname, &len); if (status != ARES_SUCCESS) goto failed_stat; aptr += len; /* hostmaster */ status = ares__expand_name_for_response(aptr, abuf, alen, &soa->hostmaster, &len); if (status != ARES_SUCCESS) goto failed_stat; aptr += len; /* integer fields */ if (aptr + 5 * 4 > abuf + alen) goto failed; soa->serial = DNS__32BIT(aptr + 0 * 4); soa->refresh = DNS__32BIT(aptr + 1 * 4); soa->retry = DNS__32BIT(aptr + 2 * 4); soa->expire = DNS__32BIT(aptr + 3 * 4); soa->minttl = DNS__32BIT(aptr + 4 * 4); soa->ttl = ttl; ares_free(qname); ares_free(rr_name); *soa_out = soa; return ARES_SUCCESS; failed: status = ARES_EBADRESP; failed_stat: ares_free_data(soa); if (qname) ares_free(qname); if (rr_name) ares_free(rr_name); return status; } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_srv_reply.c000066400000000000000000000113711360572117400241300ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2009 by Jakub Hrozek * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" /* AIX portability check */ #ifndef T_SRV # define T_SRV 33 /* server selection */ #endif int ares_parse_srv_reply (const unsigned char *abuf, int alen, struct ares_srv_reply **srv_out) { unsigned int qdcount, ancount, i; const unsigned char *aptr, *vptr; int status, rr_type, rr_class, rr_len, rr_ttl; long len; char *hostname = NULL, *rr_name = NULL; struct ares_srv_reply *srv_head = NULL; struct ares_srv_reply *srv_last = NULL; struct ares_srv_reply *srv_curr; /* Set *srv_out to NULL for all failure cases. */ *srv_out = NULL; /* Give up if abuf doesn't have room for a header. */ if (alen < HFIXEDSZ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT (abuf); ancount = DNS_HEADER_ANCOUNT (abuf); if (qdcount != 1) return ARES_EBADRESP; if (ancount == 0) return ARES_ENODATA; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares_expand_name (aptr, abuf, alen, &hostname, &len); if (status != ARES_SUCCESS) return status; if (aptr + len + QFIXEDSZ > abuf + alen) { ares_free (hostname); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; /* Examine each answer resource record (RR) in turn. */ for (i = 0; i < ancount; i++) { /* Decode the RR up to the data field. */ status = ares_expand_name (aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) { break; } aptr += len; if (aptr + RRFIXEDSZ > abuf + alen) { status = ARES_EBADRESP; break; } rr_type = DNS_RR_TYPE (aptr); rr_class = DNS_RR_CLASS (aptr); rr_len = DNS_RR_LEN (aptr); rr_ttl = DNS_RR_TTL(aptr); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { status = ARES_EBADRESP; break; } /* Check if we are really looking at a SRV record */ if (rr_class == C_IN && rr_type == T_SRV) { /* parse the SRV record itself */ if (rr_len < 6) { status = ARES_EBADRESP; break; } /* Allocate storage for this SRV answer appending it to the list */ srv_curr = ares_malloc_data(ARES_DATATYPE_SRV_REPLY); if (!srv_curr) { status = ARES_ENOMEM; break; } if (srv_last) { srv_last->next = srv_curr; } else { srv_head = srv_curr; } srv_last = srv_curr; vptr = aptr; srv_curr->priority = DNS__16BIT(vptr); vptr += sizeof(unsigned short); srv_curr->weight = DNS__16BIT(vptr); vptr += sizeof(unsigned short); srv_curr->port = DNS__16BIT(vptr); vptr += sizeof(unsigned short); srv_curr->ttl = rr_ttl; status = ares_expand_name (vptr, abuf, alen, &srv_curr->host, &len); if (status != ARES_SUCCESS) break; } /* Don't lose memory in the next iteration */ ares_free (rr_name); rr_name = NULL; /* Move on to the next record */ aptr += rr_len; } if (hostname) ares_free (hostname); if (rr_name) ares_free (rr_name); /* clean up on error */ if (status != ARES_SUCCESS) { if (srv_head) ares_free_data (srv_head); return status; } /* everything looks fine, return the data */ *srv_out = srv_head; return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares_parse_txt_reply.c000066400000000000000000000140201360572117400241270ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2009 by Jakub Hrozek * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" static int ares__parse_txt_reply (const unsigned char *abuf, int alen, int ex, void **txt_out) { size_t substr_len; unsigned int qdcount, ancount, i; const unsigned char *aptr; const unsigned char *strptr; int status, rr_type, rr_class, rr_len, rr_ttl; long len; char *hostname = NULL, *rr_name = NULL; struct ares_txt_ext *txt_head = NULL; struct ares_txt_ext *txt_last = NULL; struct ares_txt_ext *txt_curr; /* Set *txt_out to NULL for all failure cases. */ *txt_out = NULL; /* Give up if abuf doesn't have room for a header. */ if (alen < HFIXEDSZ) return ARES_EBADRESP; /* Fetch the question and answer count from the header. */ qdcount = DNS_HEADER_QDCOUNT (abuf); ancount = DNS_HEADER_ANCOUNT (abuf); if (qdcount != 1) return ARES_EBADRESP; if (ancount == 0) return ARES_ENODATA; /* Expand the name from the question, and skip past the question. */ aptr = abuf + HFIXEDSZ; status = ares_expand_name (aptr, abuf, alen, &hostname, &len); if (status != ARES_SUCCESS) return status; if (aptr + len + QFIXEDSZ > abuf + alen) { ares_free (hostname); return ARES_EBADRESP; } aptr += len + QFIXEDSZ; /* Examine each answer resource record (RR) in turn. */ for (i = 0; i < ancount; i++) { /* Decode the RR up to the data field. */ status = ares_expand_name (aptr, abuf, alen, &rr_name, &len); if (status != ARES_SUCCESS) { break; } aptr += len; if (aptr + RRFIXEDSZ > abuf + alen) { status = ARES_EBADRESP; break; } rr_type = DNS_RR_TYPE (aptr); rr_class = DNS_RR_CLASS (aptr); rr_len = DNS_RR_LEN (aptr); rr_ttl = DNS_RR_TTL (aptr); aptr += RRFIXEDSZ; if (aptr + rr_len > abuf + alen) { status = ARES_EBADRESP; break; } /* Check if we are really looking at a TXT record */ if (rr_class == C_IN && rr_type == T_TXT) { /* * There may be multiple substrings in a single TXT record. Each * substring may be up to 255 characters in length, with a * "length byte" indicating the size of the substring payload. * RDATA contains both the length-bytes and payloads of all * substrings contained therein. */ strptr = aptr; while (strptr < (aptr + rr_len)) { substr_len = (unsigned char)*strptr; if (strptr + substr_len + 1 > aptr + rr_len) { status = ARES_EBADRESP; break; } /* Allocate storage for this TXT answer appending it to the list */ txt_curr = ares_malloc_data(ex ? ARES_DATATYPE_TXT_EXT : ARES_DATATYPE_TXT_REPLY); if (!txt_curr) { status = ARES_ENOMEM; break; } if (txt_last) { txt_last->next = txt_curr; } else { txt_head = txt_curr; } txt_last = txt_curr; if (ex) txt_curr->record_start = (strptr == aptr); txt_curr->length = substr_len; txt_curr->txt = ares_malloc (substr_len + 1/* Including null byte */); if (txt_curr->txt == NULL) { status = ARES_ENOMEM; break; } ++strptr; memcpy ((char *) txt_curr->txt, strptr, substr_len); /* Make sure we NULL-terminate */ txt_curr->txt[substr_len] = 0; txt_curr->ttl = rr_ttl; strptr += substr_len; } } /* Propagate any failures */ if (status != ARES_SUCCESS) { break; } /* Don't lose memory in the next iteration */ ares_free (rr_name); rr_name = NULL; /* Move on to the next record */ aptr += rr_len; } if (hostname) ares_free (hostname); if (rr_name) ares_free (rr_name); /* clean up on error */ if (status != ARES_SUCCESS) { if (txt_head) ares_free_data (txt_head); return status; } /* everything looks fine, return the data */ *txt_out = txt_head; return ARES_SUCCESS; } int ares_parse_txt_reply (const unsigned char *abuf, int alen, struct ares_txt_reply **txt_out) { return ares__parse_txt_reply(abuf, alen, 0, (void **) txt_out); } int ares_parse_txt_reply_ext (const unsigned char *abuf, int alen, struct ares_txt_ext **txt_out) { return ares__parse_txt_reply(abuf, alen, 1, (void **) txt_out); } pycares-pycares-3.1.1/deps/c-ares/src/ares_platform.c000066400000000000000000017030751360572117400225470ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004 - 2011 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #include "ares_platform.h" #include "ares_nowarn.h" #include "ares_private.h" #if defined(WIN32) && !defined(MSDOS) #define V_PLATFORM_WIN32s 0 #define V_PLATFORM_WIN32_WINDOWS 1 #define V_PLATFORM_WIN32_NT 2 #define V_PLATFORM_WIN32_CE 3 win_platform ares__getplatform(void) { OSVERSIONINFOEX OsvEx; memset(&OsvEx, 0, sizeof(OsvEx)); OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable:4996) /* warning C4996: 'GetVersionExW': was declared deprecated */ #endif if (!GetVersionEx((void *)&OsvEx)) { memset(&OsvEx, 0, sizeof(OsvEx)); OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); if (!GetVersionEx((void *)&OsvEx)) return WIN_UNKNOWN; } #ifdef _MSC_VER #pragma warning(pop) #endif switch(OsvEx.dwPlatformId) { case V_PLATFORM_WIN32s: return WIN_3X; case V_PLATFORM_WIN32_WINDOWS: return WIN_9X; case V_PLATFORM_WIN32_NT: return WIN_NT; case V_PLATFORM_WIN32_CE: return WIN_CE; default: return WIN_UNKNOWN; } } #endif /* WIN32 && ! MSDOS */ #if defined(_WIN32_WCE) /* IANA Well Known Ports are in range 0-1023 */ #define USE_IANA_WELL_KNOWN_PORTS 1 /* IANA Registered Ports are in range 1024-49151 */ #define USE_IANA_REGISTERED_PORTS 1 struct pvt_servent { char *s_name; char **s_aliases; unsigned short s_port; char *s_proto; }; /* * Ref: http://www.iana.org/assignments/port-numbers */ static struct pvt_servent IANAports[] = { #ifdef USE_IANA_WELL_KNOWN_PORTS {"tcpmux", {NULL}, 1, "tcp"}, {"tcpmux", {NULL}, 1, "udp"}, {"compressnet", {NULL}, 2, "tcp"}, {"compressnet", {NULL}, 2, "udp"}, {"compressnet", {NULL}, 3, "tcp"}, {"compressnet", {NULL}, 3, "udp"}, {"rje", {NULL}, 5, "tcp"}, {"rje", {NULL}, 5, "udp"}, {"echo", {NULL}, 7, "tcp"}, {"echo", {NULL}, 7, "udp"}, {"discard", {NULL}, 9, "tcp"}, {"discard", {NULL}, 9, "udp"}, {"discard", {NULL}, 9, "sctp"}, {"discard", {NULL}, 9, "dccp"}, {"systat", {NULL}, 11, "tcp"}, {"systat", {NULL}, 11, "udp"}, {"daytime", {NULL}, 13, "tcp"}, {"daytime", {NULL}, 13, "udp"}, {"qotd", {NULL}, 17, "tcp"}, {"qotd", {NULL}, 17, "udp"}, {"msp", {NULL}, 18, "tcp"}, {"msp", {NULL}, 18, "udp"}, {"chargen", {NULL}, 19, "tcp"}, {"chargen", {NULL}, 19, "udp"}, {"ftp-data", {NULL}, 20, "tcp"}, {"ftp-data", {NULL}, 20, "udp"}, {"ftp-data", {NULL}, 20, "sctp"}, {"ftp", {NULL}, 21, "tcp"}, {"ftp", {NULL}, 21, "udp"}, {"ftp", {NULL}, 21, "sctp"}, {"ssh", {NULL}, 22, "tcp"}, {"ssh", {NULL}, 22, "udp"}, {"ssh", {NULL}, 22, "sctp"}, {"telnet", {NULL}, 23, "tcp"}, {"telnet", {NULL}, 23, "udp"}, {"smtp", {NULL}, 25, "tcp"}, {"smtp", {NULL}, 25, "udp"}, {"nsw-fe", {NULL}, 27, "tcp"}, {"nsw-fe", {NULL}, 27, "udp"}, {"msg-icp", {NULL}, 29, "tcp"}, {"msg-icp", {NULL}, 29, "udp"}, {"msg-auth", {NULL}, 31, "tcp"}, {"msg-auth", {NULL}, 31, "udp"}, {"dsp", {NULL}, 33, "tcp"}, {"dsp", {NULL}, 33, "udp"}, {"time", {NULL}, 37, "tcp"}, {"time", {NULL}, 37, "udp"}, {"rap", {NULL}, 38, "tcp"}, {"rap", {NULL}, 38, "udp"}, {"rlp", {NULL}, 39, "tcp"}, {"rlp", {NULL}, 39, "udp"}, {"graphics", {NULL}, 41, "tcp"}, {"graphics", {NULL}, 41, "udp"}, {"name", {NULL}, 42, "tcp"}, {"name", {NULL}, 42, "udp"}, {"nameserver", {NULL}, 42, "tcp"}, {"nameserver", {NULL}, 42, "udp"}, {"nicname", {NULL}, 43, "tcp"}, {"nicname", {NULL}, 43, "udp"}, {"mpm-flags", {NULL}, 44, "tcp"}, {"mpm-flags", {NULL}, 44, "udp"}, {"mpm", {NULL}, 45, "tcp"}, {"mpm", {NULL}, 45, "udp"}, {"mpm-snd", {NULL}, 46, "tcp"}, {"mpm-snd", {NULL}, 46, "udp"}, {"ni-ftp", {NULL}, 47, "tcp"}, {"ni-ftp", {NULL}, 47, "udp"}, {"auditd", {NULL}, 48, "tcp"}, {"auditd", {NULL}, 48, "udp"}, {"tacacs", {NULL}, 49, "tcp"}, {"tacacs", {NULL}, 49, "udp"}, {"re-mail-ck", {NULL}, 50, "tcp"}, {"re-mail-ck", {NULL}, 50, "udp"}, {"la-maint", {NULL}, 51, "tcp"}, {"la-maint", {NULL}, 51, "udp"}, {"xns-time", {NULL}, 52, "tcp"}, {"xns-time", {NULL}, 52, "udp"}, {"domain", {NULL}, 53, "tcp"}, {"domain", {NULL}, 53, "udp"}, {"xns-ch", {NULL}, 54, "tcp"}, {"xns-ch", {NULL}, 54, "udp"}, {"isi-gl", {NULL}, 55, "tcp"}, {"isi-gl", {NULL}, 55, "udp"}, {"xns-auth", {NULL}, 56, "tcp"}, {"xns-auth", {NULL}, 56, "udp"}, {"xns-mail", {NULL}, 58, "tcp"}, {"xns-mail", {NULL}, 58, "udp"}, {"ni-mail", {NULL}, 61, "tcp"}, {"ni-mail", {NULL}, 61, "udp"}, {"acas", {NULL}, 62, "tcp"}, {"acas", {NULL}, 62, "udp"}, {"whois++", {NULL}, 63, "tcp"}, {"whois++", {NULL}, 63, "udp"}, {"covia", {NULL}, 64, "tcp"}, {"covia", {NULL}, 64, "udp"}, {"tacacs-ds", {NULL}, 65, "tcp"}, {"tacacs-ds", {NULL}, 65, "udp"}, {"sql*net", {NULL}, 66, "tcp"}, {"sql*net", {NULL}, 66, "udp"}, {"bootps", {NULL}, 67, "tcp"}, {"bootps", {NULL}, 67, "udp"}, {"bootpc", {NULL}, 68, "tcp"}, {"bootpc", {NULL}, 68, "udp"}, {"tftp", {NULL}, 69, "tcp"}, {"tftp", {NULL}, 69, "udp"}, {"gopher", {NULL}, 70, "tcp"}, {"gopher", {NULL}, 70, "udp"}, {"netrjs-1", {NULL}, 71, "tcp"}, {"netrjs-1", {NULL}, 71, "udp"}, {"netrjs-2", {NULL}, 72, "tcp"}, {"netrjs-2", {NULL}, 72, "udp"}, {"netrjs-3", {NULL}, 73, "tcp"}, {"netrjs-3", {NULL}, 73, "udp"}, {"netrjs-4", {NULL}, 74, "tcp"}, {"netrjs-4", {NULL}, 74, "udp"}, {"deos", {NULL}, 76, "tcp"}, {"deos", {NULL}, 76, "udp"}, {"vettcp", {NULL}, 78, "tcp"}, {"vettcp", {NULL}, 78, "udp"}, {"finger", {NULL}, 79, "tcp"}, {"finger", {NULL}, 79, "udp"}, {"http", {NULL}, 80, "tcp"}, {"http", {NULL}, 80, "udp"}, {"www", {NULL}, 80, "tcp"}, {"www", {NULL}, 80, "udp"}, {"www-http", {NULL}, 80, "tcp"}, {"www-http", {NULL}, 80, "udp"}, {"http", {NULL}, 80, "sctp"}, {"xfer", {NULL}, 82, "tcp"}, {"xfer", {NULL}, 82, "udp"}, {"mit-ml-dev", {NULL}, 83, "tcp"}, {"mit-ml-dev", {NULL}, 83, "udp"}, {"ctf", {NULL}, 84, "tcp"}, {"ctf", {NULL}, 84, "udp"}, {"mit-ml-dev", {NULL}, 85, "tcp"}, {"mit-ml-dev", {NULL}, 85, "udp"}, {"mfcobol", {NULL}, 86, "tcp"}, {"mfcobol", {NULL}, 86, "udp"}, {"kerberos", {NULL}, 88, "tcp"}, {"kerberos", {NULL}, 88, "udp"}, {"su-mit-tg", {NULL}, 89, "tcp"}, {"su-mit-tg", {NULL}, 89, "udp"}, {"dnsix", {NULL}, 90, "tcp"}, {"dnsix", {NULL}, 90, "udp"}, {"mit-dov", {NULL}, 91, "tcp"}, {"mit-dov", {NULL}, 91, "udp"}, {"npp", {NULL}, 92, "tcp"}, {"npp", {NULL}, 92, "udp"}, {"dcp", {NULL}, 93, "tcp"}, {"dcp", {NULL}, 93, "udp"}, {"objcall", {NULL}, 94, "tcp"}, {"objcall", {NULL}, 94, "udp"}, {"supdup", {NULL}, 95, "tcp"}, {"supdup", {NULL}, 95, "udp"}, {"dixie", {NULL}, 96, "tcp"}, {"dixie", {NULL}, 96, "udp"}, {"swift-rvf", {NULL}, 97, "tcp"}, {"swift-rvf", {NULL}, 97, "udp"}, {"tacnews", {NULL}, 98, "tcp"}, {"tacnews", {NULL}, 98, "udp"}, {"metagram", {NULL}, 99, "tcp"}, {"metagram", {NULL}, 99, "udp"}, {"newacct", {NULL}, 100, "tcp"}, {"hostname", {NULL}, 101, "tcp"}, {"hostname", {NULL}, 101, "udp"}, {"iso-tsap", {NULL}, 102, "tcp"}, {"iso-tsap", {NULL}, 102, "udp"}, {"gppitnp", {NULL}, 103, "tcp"}, {"gppitnp", {NULL}, 103, "udp"}, {"acr-nema", {NULL}, 104, "tcp"}, {"acr-nema", {NULL}, 104, "udp"}, {"cso", {NULL}, 105, "tcp"}, {"cso", {NULL}, 105, "udp"}, {"csnet-ns", {NULL}, 105, "tcp"}, {"csnet-ns", {NULL}, 105, "udp"}, {"3com-tsmux", {NULL}, 106, "tcp"}, {"3com-tsmux", {NULL}, 106, "udp"}, {"rtelnet", {NULL}, 107, "tcp"}, {"rtelnet", {NULL}, 107, "udp"}, {"snagas", {NULL}, 108, "tcp"}, {"snagas", {NULL}, 108, "udp"}, {"pop2", {NULL}, 109, "tcp"}, {"pop2", {NULL}, 109, "udp"}, {"pop3", {NULL}, 110, "tcp"}, {"pop3", {NULL}, 110, "udp"}, {"sunrpc", {NULL}, 111, "tcp"}, {"sunrpc", {NULL}, 111, "udp"}, {"mcidas", {NULL}, 112, "tcp"}, {"mcidas", {NULL}, 112, "udp"}, {"ident", {NULL}, 113, "tcp"}, {"auth", {NULL}, 113, "tcp"}, {"auth", {NULL}, 113, "udp"}, {"sftp", {NULL}, 115, "tcp"}, {"sftp", {NULL}, 115, "udp"}, {"ansanotify", {NULL}, 116, "tcp"}, {"ansanotify", {NULL}, 116, "udp"}, {"uucp-path", {NULL}, 117, "tcp"}, {"uucp-path", {NULL}, 117, "udp"}, {"sqlserv", {NULL}, 118, "tcp"}, {"sqlserv", {NULL}, 118, "udp"}, {"nntp", {NULL}, 119, "tcp"}, {"nntp", {NULL}, 119, "udp"}, {"cfdptkt", {NULL}, 120, "tcp"}, {"cfdptkt", {NULL}, 120, "udp"}, {"erpc", {NULL}, 121, "tcp"}, {"erpc", {NULL}, 121, "udp"}, {"smakynet", {NULL}, 122, "tcp"}, {"smakynet", {NULL}, 122, "udp"}, {"ntp", {NULL}, 123, "tcp"}, {"ntp", {NULL}, 123, "udp"}, {"ansatrader", {NULL}, 124, "tcp"}, {"ansatrader", {NULL}, 124, "udp"}, {"locus-map", {NULL}, 125, "tcp"}, {"locus-map", {NULL}, 125, "udp"}, {"nxedit", {NULL}, 126, "tcp"}, {"nxedit", {NULL}, 126, "udp"}, {"locus-con", {NULL}, 127, "tcp"}, {"locus-con", {NULL}, 127, "udp"}, {"gss-xlicen", {NULL}, 128, "tcp"}, {"gss-xlicen", {NULL}, 128, "udp"}, {"pwdgen", {NULL}, 129, "tcp"}, {"pwdgen", {NULL}, 129, "udp"}, {"cisco-fna", {NULL}, 130, "tcp"}, {"cisco-fna", {NULL}, 130, "udp"}, {"cisco-tna", {NULL}, 131, "tcp"}, {"cisco-tna", {NULL}, 131, "udp"}, {"cisco-sys", {NULL}, 132, "tcp"}, {"cisco-sys", {NULL}, 132, "udp"}, {"statsrv", {NULL}, 133, "tcp"}, {"statsrv", {NULL}, 133, "udp"}, {"ingres-net", {NULL}, 134, "tcp"}, {"ingres-net", {NULL}, 134, "udp"}, {"epmap", {NULL}, 135, "tcp"}, {"epmap", {NULL}, 135, "udp"}, {"profile", {NULL}, 136, "tcp"}, {"profile", {NULL}, 136, "udp"}, {"netbios-ns", {NULL}, 137, "tcp"}, {"netbios-ns", {NULL}, 137, "udp"}, {"netbios-dgm", {NULL}, 138, "tcp"}, {"netbios-dgm", {NULL}, 138, "udp"}, {"netbios-ssn", {NULL}, 139, "tcp"}, {"netbios-ssn", {NULL}, 139, "udp"}, {"emfis-data", {NULL}, 140, "tcp"}, {"emfis-data", {NULL}, 140, "udp"}, {"emfis-cntl", {NULL}, 141, "tcp"}, {"emfis-cntl", {NULL}, 141, "udp"}, {"bl-idm", {NULL}, 142, "tcp"}, {"bl-idm", {NULL}, 142, "udp"}, {"imap", {NULL}, 143, "tcp"}, {"imap", {NULL}, 143, "udp"}, {"uma", {NULL}, 144, "tcp"}, {"uma", {NULL}, 144, "udp"}, {"uaac", {NULL}, 145, "tcp"}, {"uaac", {NULL}, 145, "udp"}, {"iso-tp0", {NULL}, 146, "tcp"}, {"iso-tp0", {NULL}, 146, "udp"}, {"iso-ip", {NULL}, 147, "tcp"}, {"iso-ip", {NULL}, 147, "udp"}, {"jargon", {NULL}, 148, "tcp"}, {"jargon", {NULL}, 148, "udp"}, {"aed-512", {NULL}, 149, "tcp"}, {"aed-512", {NULL}, 149, "udp"}, {"sql-net", {NULL}, 150, "tcp"}, {"sql-net", {NULL}, 150, "udp"}, {"hems", {NULL}, 151, "tcp"}, {"hems", {NULL}, 151, "udp"}, {"bftp", {NULL}, 152, "tcp"}, {"bftp", {NULL}, 152, "udp"}, {"sgmp", {NULL}, 153, "tcp"}, {"sgmp", {NULL}, 153, "udp"}, {"netsc-prod", {NULL}, 154, "tcp"}, {"netsc-prod", {NULL}, 154, "udp"}, {"netsc-dev", {NULL}, 155, "tcp"}, {"netsc-dev", {NULL}, 155, "udp"}, {"sqlsrv", {NULL}, 156, "tcp"}, {"sqlsrv", {NULL}, 156, "udp"}, {"knet-cmp", {NULL}, 157, "tcp"}, {"knet-cmp", {NULL}, 157, "udp"}, {"pcmail-srv", {NULL}, 158, "tcp"}, {"pcmail-srv", {NULL}, 158, "udp"}, {"nss-routing", {NULL}, 159, "tcp"}, {"nss-routing", {NULL}, 159, "udp"}, {"sgmp-traps", {NULL}, 160, "tcp"}, {"sgmp-traps", {NULL}, 160, "udp"}, {"snmp", {NULL}, 161, "tcp"}, {"snmp", {NULL}, 161, "udp"}, {"snmptrap", {NULL}, 162, "tcp"}, {"snmptrap", {NULL}, 162, "udp"}, {"cmip-man", {NULL}, 163, "tcp"}, {"cmip-man", {NULL}, 163, "udp"}, {"cmip-agent", {NULL}, 164, "tcp"}, {"cmip-agent", {NULL}, 164, "udp"}, {"xns-courier", {NULL}, 165, "tcp"}, {"xns-courier", {NULL}, 165, "udp"}, {"s-net", {NULL}, 166, "tcp"}, {"s-net", {NULL}, 166, "udp"}, {"namp", {NULL}, 167, "tcp"}, {"namp", {NULL}, 167, "udp"}, {"rsvd", {NULL}, 168, "tcp"}, {"rsvd", {NULL}, 168, "udp"}, {"send", {NULL}, 169, "tcp"}, {"send", {NULL}, 169, "udp"}, {"print-srv", {NULL}, 170, "tcp"}, {"print-srv", {NULL}, 170, "udp"}, {"multiplex", {NULL}, 171, "tcp"}, {"multiplex", {NULL}, 171, "udp"}, {"cl/1", {NULL}, 172, "tcp"}, {"cl/1", {NULL}, 172, "udp"}, {"xyplex-mux", {NULL}, 173, "tcp"}, {"xyplex-mux", {NULL}, 173, "udp"}, {"mailq", {NULL}, 174, "tcp"}, {"mailq", {NULL}, 174, "udp"}, {"vmnet", {NULL}, 175, "tcp"}, {"vmnet", {NULL}, 175, "udp"}, {"genrad-mux", {NULL}, 176, "tcp"}, {"genrad-mux", {NULL}, 176, "udp"}, {"xdmcp", {NULL}, 177, "tcp"}, {"xdmcp", {NULL}, 177, "udp"}, {"nextstep", {NULL}, 178, "tcp"}, {"nextstep", {NULL}, 178, "udp"}, {"bgp", {NULL}, 179, "tcp"}, {"bgp", {NULL}, 179, "udp"}, {"bgp", {NULL}, 179, "sctp"}, {"ris", {NULL}, 180, "tcp"}, {"ris", {NULL}, 180, "udp"}, {"unify", {NULL}, 181, "tcp"}, {"unify", {NULL}, 181, "udp"}, {"audit", {NULL}, 182, "tcp"}, {"audit", {NULL}, 182, "udp"}, {"ocbinder", {NULL}, 183, "tcp"}, {"ocbinder", {NULL}, 183, "udp"}, {"ocserver", {NULL}, 184, "tcp"}, {"ocserver", {NULL}, 184, "udp"}, {"remote-kis", {NULL}, 185, "tcp"}, {"remote-kis", {NULL}, 185, "udp"}, {"kis", {NULL}, 186, "tcp"}, {"kis", {NULL}, 186, "udp"}, {"aci", {NULL}, 187, "tcp"}, {"aci", {NULL}, 187, "udp"}, {"mumps", {NULL}, 188, "tcp"}, {"mumps", {NULL}, 188, "udp"}, {"qft", {NULL}, 189, "tcp"}, {"qft", {NULL}, 189, "udp"}, {"gacp", {NULL}, 190, "tcp"}, {"gacp", {NULL}, 190, "udp"}, {"prospero", {NULL}, 191, "tcp"}, {"prospero", {NULL}, 191, "udp"}, {"osu-nms", {NULL}, 192, "tcp"}, {"osu-nms", {NULL}, 192, "udp"}, {"srmp", {NULL}, 193, "tcp"}, {"srmp", {NULL}, 193, "udp"}, {"irc", {NULL}, 194, "tcp"}, {"irc", {NULL}, 194, "udp"}, {"dn6-nlm-aud", {NULL}, 195, "tcp"}, {"dn6-nlm-aud", {NULL}, 195, "udp"}, {"dn6-smm-red", {NULL}, 196, "tcp"}, {"dn6-smm-red", {NULL}, 196, "udp"}, {"dls", {NULL}, 197, "tcp"}, {"dls", {NULL}, 197, "udp"}, {"dls-mon", {NULL}, 198, "tcp"}, {"dls-mon", {NULL}, 198, "udp"}, {"smux", {NULL}, 199, "tcp"}, {"smux", {NULL}, 199, "udp"}, {"src", {NULL}, 200, "tcp"}, {"src", {NULL}, 200, "udp"}, {"at-rtmp", {NULL}, 201, "tcp"}, {"at-rtmp", {NULL}, 201, "udp"}, {"at-nbp", {NULL}, 202, "tcp"}, {"at-nbp", {NULL}, 202, "udp"}, {"at-3", {NULL}, 203, "tcp"}, {"at-3", {NULL}, 203, "udp"}, {"at-echo", {NULL}, 204, "tcp"}, {"at-echo", {NULL}, 204, "udp"}, {"at-5", {NULL}, 205, "tcp"}, {"at-5", {NULL}, 205, "udp"}, {"at-zis", {NULL}, 206, "tcp"}, {"at-zis", {NULL}, 206, "udp"}, {"at-7", {NULL}, 207, "tcp"}, {"at-7", {NULL}, 207, "udp"}, {"at-8", {NULL}, 208, "tcp"}, {"at-8", {NULL}, 208, "udp"}, {"qmtp", {NULL}, 209, "tcp"}, {"qmtp", {NULL}, 209, "udp"}, {"z39.50", {NULL}, 210, "tcp"}, {"z39.50", {NULL}, 210, "udp"}, {"914c/g", {NULL}, 211, "tcp"}, {"914c/g", {NULL}, 211, "udp"}, {"anet", {NULL}, 212, "tcp"}, {"anet", {NULL}, 212, "udp"}, {"ipx", {NULL}, 213, "tcp"}, {"ipx", {NULL}, 213, "udp"}, {"vmpwscs", {NULL}, 214, "tcp"}, {"vmpwscs", {NULL}, 214, "udp"}, {"softpc", {NULL}, 215, "tcp"}, {"softpc", {NULL}, 215, "udp"}, {"CAIlic", {NULL}, 216, "tcp"}, {"CAIlic", {NULL}, 216, "udp"}, {"dbase", {NULL}, 217, "tcp"}, {"dbase", {NULL}, 217, "udp"}, {"mpp", {NULL}, 218, "tcp"}, {"mpp", {NULL}, 218, "udp"}, {"uarps", {NULL}, 219, "tcp"}, {"uarps", {NULL}, 219, "udp"}, {"imap3", {NULL}, 220, "tcp"}, {"imap3", {NULL}, 220, "udp"}, {"fln-spx", {NULL}, 221, "tcp"}, {"fln-spx", {NULL}, 221, "udp"}, {"rsh-spx", {NULL}, 222, "tcp"}, {"rsh-spx", {NULL}, 222, "udp"}, {"cdc", {NULL}, 223, "tcp"}, {"cdc", {NULL}, 223, "udp"}, {"masqdialer", {NULL}, 224, "tcp"}, {"masqdialer", {NULL}, 224, "udp"}, {"direct", {NULL}, 242, "tcp"}, {"direct", {NULL}, 242, "udp"}, {"sur-meas", {NULL}, 243, "tcp"}, {"sur-meas", {NULL}, 243, "udp"}, {"inbusiness", {NULL}, 244, "tcp"}, {"inbusiness", {NULL}, 244, "udp"}, {"link", {NULL}, 245, "tcp"}, {"link", {NULL}, 245, "udp"}, {"dsp3270", {NULL}, 246, "tcp"}, {"dsp3270", {NULL}, 246, "udp"}, {"subntbcst_tftp", {NULL}, 247, "tcp"}, {"subntbcst_tftp", {NULL}, 247, "udp"}, {"bhfhs", {NULL}, 248, "tcp"}, {"bhfhs", {NULL}, 248, "udp"}, {"rap", {NULL}, 256, "tcp"}, {"rap", {NULL}, 256, "udp"}, {"set", {NULL}, 257, "tcp"}, {"set", {NULL}, 257, "udp"}, {"esro-gen", {NULL}, 259, "tcp"}, {"esro-gen", {NULL}, 259, "udp"}, {"openport", {NULL}, 260, "tcp"}, {"openport", {NULL}, 260, "udp"}, {"nsiiops", {NULL}, 261, "tcp"}, {"nsiiops", {NULL}, 261, "udp"}, {"arcisdms", {NULL}, 262, "tcp"}, {"arcisdms", {NULL}, 262, "udp"}, {"hdap", {NULL}, 263, "tcp"}, {"hdap", {NULL}, 263, "udp"}, {"bgmp", {NULL}, 264, "tcp"}, {"bgmp", {NULL}, 264, "udp"}, {"x-bone-ctl", {NULL}, 265, "tcp"}, {"x-bone-ctl", {NULL}, 265, "udp"}, {"sst", {NULL}, 266, "tcp"}, {"sst", {NULL}, 266, "udp"}, {"td-service", {NULL}, 267, "tcp"}, {"td-service", {NULL}, 267, "udp"}, {"td-replica", {NULL}, 268, "tcp"}, {"td-replica", {NULL}, 268, "udp"}, {"manet", {NULL}, 269, "tcp"}, {"manet", {NULL}, 269, "udp"}, {"gist", {NULL}, 270, "udp"}, {"http-mgmt", {NULL}, 280, "tcp"}, {"http-mgmt", {NULL}, 280, "udp"}, {"personal-link", {NULL}, 281, "tcp"}, {"personal-link", {NULL}, 281, "udp"}, {"cableport-ax", {NULL}, 282, "tcp"}, {"cableport-ax", {NULL}, 282, "udp"}, {"rescap", {NULL}, 283, "tcp"}, {"rescap", {NULL}, 283, "udp"}, {"corerjd", {NULL}, 284, "tcp"}, {"corerjd", {NULL}, 284, "udp"}, {"fxp", {NULL}, 286, "tcp"}, {"fxp", {NULL}, 286, "udp"}, {"k-block", {NULL}, 287, "tcp"}, {"k-block", {NULL}, 287, "udp"}, {"novastorbakcup", {NULL}, 308, "tcp"}, {"novastorbakcup", {NULL}, 308, "udp"}, {"entrusttime", {NULL}, 309, "tcp"}, {"entrusttime", {NULL}, 309, "udp"}, {"bhmds", {NULL}, 310, "tcp"}, {"bhmds", {NULL}, 310, "udp"}, {"asip-webadmin", {NULL}, 311, "tcp"}, {"asip-webadmin", {NULL}, 311, "udp"}, {"vslmp", {NULL}, 312, "tcp"}, {"vslmp", {NULL}, 312, "udp"}, {"magenta-logic", {NULL}, 313, "tcp"}, {"magenta-logic", {NULL}, 313, "udp"}, {"opalis-robot", {NULL}, 314, "tcp"}, {"opalis-robot", {NULL}, 314, "udp"}, {"dpsi", {NULL}, 315, "tcp"}, {"dpsi", {NULL}, 315, "udp"}, {"decauth", {NULL}, 316, "tcp"}, {"decauth", {NULL}, 316, "udp"}, {"zannet", {NULL}, 317, "tcp"}, {"zannet", {NULL}, 317, "udp"}, {"pkix-timestamp", {NULL}, 318, "tcp"}, {"pkix-timestamp", {NULL}, 318, "udp"}, {"ptp-event", {NULL}, 319, "tcp"}, {"ptp-event", {NULL}, 319, "udp"}, {"ptp-general", {NULL}, 320, "tcp"}, {"ptp-general", {NULL}, 320, "udp"}, {"pip", {NULL}, 321, "tcp"}, {"pip", {NULL}, 321, "udp"}, {"rtsps", {NULL}, 322, "tcp"}, {"rtsps", {NULL}, 322, "udp"}, {"texar", {NULL}, 333, "tcp"}, {"texar", {NULL}, 333, "udp"}, {"pdap", {NULL}, 344, "tcp"}, {"pdap", {NULL}, 344, "udp"}, {"pawserv", {NULL}, 345, "tcp"}, {"pawserv", {NULL}, 345, "udp"}, {"zserv", {NULL}, 346, "tcp"}, {"zserv", {NULL}, 346, "udp"}, {"fatserv", {NULL}, 347, "tcp"}, {"fatserv", {NULL}, 347, "udp"}, {"csi-sgwp", {NULL}, 348, "tcp"}, {"csi-sgwp", {NULL}, 348, "udp"}, {"mftp", {NULL}, 349, "tcp"}, {"mftp", {NULL}, 349, "udp"}, {"matip-type-a", {NULL}, 350, "tcp"}, {"matip-type-a", {NULL}, 350, "udp"}, {"matip-type-b", {NULL}, 351, "tcp"}, {"matip-type-b", {NULL}, 351, "udp"}, {"bhoetty", {NULL}, 351, "tcp"}, {"bhoetty", {NULL}, 351, "udp"}, {"dtag-ste-sb", {NULL}, 352, "tcp"}, {"dtag-ste-sb", {NULL}, 352, "udp"}, {"bhoedap4", {NULL}, 352, "tcp"}, {"bhoedap4", {NULL}, 352, "udp"}, {"ndsauth", {NULL}, 353, "tcp"}, {"ndsauth", {NULL}, 353, "udp"}, {"bh611", {NULL}, 354, "tcp"}, {"bh611", {NULL}, 354, "udp"}, {"datex-asn", {NULL}, 355, "tcp"}, {"datex-asn", {NULL}, 355, "udp"}, {"cloanto-net-1", {NULL}, 356, "tcp"}, {"cloanto-net-1", {NULL}, 356, "udp"}, {"bhevent", {NULL}, 357, "tcp"}, {"bhevent", {NULL}, 357, "udp"}, {"shrinkwrap", {NULL}, 358, "tcp"}, {"shrinkwrap", {NULL}, 358, "udp"}, {"nsrmp", {NULL}, 359, "tcp"}, {"nsrmp", {NULL}, 359, "udp"}, {"scoi2odialog", {NULL}, 360, "tcp"}, {"scoi2odialog", {NULL}, 360, "udp"}, {"semantix", {NULL}, 361, "tcp"}, {"semantix", {NULL}, 361, "udp"}, {"srssend", {NULL}, 362, "tcp"}, {"srssend", {NULL}, 362, "udp"}, {"rsvp_tunnel", {NULL}, 363, "tcp"}, {"rsvp_tunnel", {NULL}, 363, "udp"}, {"aurora-cmgr", {NULL}, 364, "tcp"}, {"aurora-cmgr", {NULL}, 364, "udp"}, {"dtk", {NULL}, 365, "tcp"}, {"dtk", {NULL}, 365, "udp"}, {"odmr", {NULL}, 366, "tcp"}, {"odmr", {NULL}, 366, "udp"}, {"mortgageware", {NULL}, 367, "tcp"}, {"mortgageware", {NULL}, 367, "udp"}, {"qbikgdp", {NULL}, 368, "tcp"}, {"qbikgdp", {NULL}, 368, "udp"}, {"rpc2portmap", {NULL}, 369, "tcp"}, {"rpc2portmap", {NULL}, 369, "udp"}, {"codaauth2", {NULL}, 370, "tcp"}, {"codaauth2", {NULL}, 370, "udp"}, {"clearcase", {NULL}, 371, "tcp"}, {"clearcase", {NULL}, 371, "udp"}, {"ulistproc", {NULL}, 372, "tcp"}, {"ulistproc", {NULL}, 372, "udp"}, {"legent-1", {NULL}, 373, "tcp"}, {"legent-1", {NULL}, 373, "udp"}, {"legent-2", {NULL}, 374, "tcp"}, {"legent-2", {NULL}, 374, "udp"}, {"hassle", {NULL}, 375, "tcp"}, {"hassle", {NULL}, 375, "udp"}, {"nip", {NULL}, 376, "tcp"}, {"nip", {NULL}, 376, "udp"}, {"tnETOS", {NULL}, 377, "tcp"}, {"tnETOS", {NULL}, 377, "udp"}, {"dsETOS", {NULL}, 378, "tcp"}, {"dsETOS", {NULL}, 378, "udp"}, {"is99c", {NULL}, 379, "tcp"}, {"is99c", {NULL}, 379, "udp"}, {"is99s", {NULL}, 380, "tcp"}, {"is99s", {NULL}, 380, "udp"}, {"hp-collector", {NULL}, 381, "tcp"}, {"hp-collector", {NULL}, 381, "udp"}, {"hp-managed-node", {NULL}, 382, "tcp"}, {"hp-managed-node", {NULL}, 382, "udp"}, {"hp-alarm-mgr", {NULL}, 383, "tcp"}, {"hp-alarm-mgr", {NULL}, 383, "udp"}, {"arns", {NULL}, 384, "tcp"}, {"arns", {NULL}, 384, "udp"}, {"ibm-app", {NULL}, 385, "tcp"}, {"ibm-app", {NULL}, 385, "udp"}, {"asa", {NULL}, 386, "tcp"}, {"asa", {NULL}, 386, "udp"}, {"aurp", {NULL}, 387, "tcp"}, {"aurp", {NULL}, 387, "udp"}, {"unidata-ldm", {NULL}, 388, "tcp"}, {"unidata-ldm", {NULL}, 388, "udp"}, {"ldap", {NULL}, 389, "tcp"}, {"ldap", {NULL}, 389, "udp"}, {"uis", {NULL}, 390, "tcp"}, {"uis", {NULL}, 390, "udp"}, {"synotics-relay", {NULL}, 391, "tcp"}, {"synotics-relay", {NULL}, 391, "udp"}, {"synotics-broker", {NULL}, 392, "tcp"}, {"synotics-broker", {NULL}, 392, "udp"}, {"meta5", {NULL}, 393, "tcp"}, {"meta5", {NULL}, 393, "udp"}, {"embl-ndt", {NULL}, 394, "tcp"}, {"embl-ndt", {NULL}, 394, "udp"}, {"netcp", {NULL}, 395, "tcp"}, {"netcp", {NULL}, 395, "udp"}, {"netware-ip", {NULL}, 396, "tcp"}, {"netware-ip", {NULL}, 396, "udp"}, {"mptn", {NULL}, 397, "tcp"}, {"mptn", {NULL}, 397, "udp"}, {"kryptolan", {NULL}, 398, "tcp"}, {"kryptolan", {NULL}, 398, "udp"}, {"iso-tsap-c2", {NULL}, 399, "tcp"}, {"iso-tsap-c2", {NULL}, 399, "udp"}, {"osb-sd", {NULL}, 400, "tcp"}, {"osb-sd", {NULL}, 400, "udp"}, {"ups", {NULL}, 401, "tcp"}, {"ups", {NULL}, 401, "udp"}, {"genie", {NULL}, 402, "tcp"}, {"genie", {NULL}, 402, "udp"}, {"decap", {NULL}, 403, "tcp"}, {"decap", {NULL}, 403, "udp"}, {"nced", {NULL}, 404, "tcp"}, {"nced", {NULL}, 404, "udp"}, {"ncld", {NULL}, 405, "tcp"}, {"ncld", {NULL}, 405, "udp"}, {"imsp", {NULL}, 406, "tcp"}, {"imsp", {NULL}, 406, "udp"}, {"timbuktu", {NULL}, 407, "tcp"}, {"timbuktu", {NULL}, 407, "udp"}, {"prm-sm", {NULL}, 408, "tcp"}, {"prm-sm", {NULL}, 408, "udp"}, {"prm-nm", {NULL}, 409, "tcp"}, {"prm-nm", {NULL}, 409, "udp"}, {"decladebug", {NULL}, 410, "tcp"}, {"decladebug", {NULL}, 410, "udp"}, {"rmt", {NULL}, 411, "tcp"}, {"rmt", {NULL}, 411, "udp"}, {"synoptics-trap", {NULL}, 412, "tcp"}, {"synoptics-trap", {NULL}, 412, "udp"}, {"smsp", {NULL}, 413, "tcp"}, {"smsp", {NULL}, 413, "udp"}, {"infoseek", {NULL}, 414, "tcp"}, {"infoseek", {NULL}, 414, "udp"}, {"bnet", {NULL}, 415, "tcp"}, {"bnet", {NULL}, 415, "udp"}, {"silverplatter", {NULL}, 416, "tcp"}, {"silverplatter", {NULL}, 416, "udp"}, {"onmux", {NULL}, 417, "tcp"}, {"onmux", {NULL}, 417, "udp"}, {"hyper-g", {NULL}, 418, "tcp"}, {"hyper-g", {NULL}, 418, "udp"}, {"ariel1", {NULL}, 419, "tcp"}, {"ariel1", {NULL}, 419, "udp"}, {"smpte", {NULL}, 420, "tcp"}, {"smpte", {NULL}, 420, "udp"}, {"ariel2", {NULL}, 421, "tcp"}, {"ariel2", {NULL}, 421, "udp"}, {"ariel3", {NULL}, 422, "tcp"}, {"ariel3", {NULL}, 422, "udp"}, {"opc-job-start", {NULL}, 423, "tcp"}, {"opc-job-start", {NULL}, 423, "udp"}, {"opc-job-track", {NULL}, 424, "tcp"}, {"opc-job-track", {NULL}, 424, "udp"}, {"icad-el", {NULL}, 425, "tcp"}, {"icad-el", {NULL}, 425, "udp"}, {"smartsdp", {NULL}, 426, "tcp"}, {"smartsdp", {NULL}, 426, "udp"}, {"svrloc", {NULL}, 427, "tcp"}, {"svrloc", {NULL}, 427, "udp"}, {"ocs_cmu", {NULL}, 428, "tcp"}, {"ocs_cmu", {NULL}, 428, "udp"}, {"ocs_amu", {NULL}, 429, "tcp"}, {"ocs_amu", {NULL}, 429, "udp"}, {"utmpsd", {NULL}, 430, "tcp"}, {"utmpsd", {NULL}, 430, "udp"}, {"utmpcd", {NULL}, 431, "tcp"}, {"utmpcd", {NULL}, 431, "udp"}, {"iasd", {NULL}, 432, "tcp"}, {"iasd", {NULL}, 432, "udp"}, {"nnsp", {NULL}, 433, "tcp"}, {"nnsp", {NULL}, 433, "udp"}, {"mobileip-agent", {NULL}, 434, "tcp"}, {"mobileip-agent", {NULL}, 434, "udp"}, {"mobilip-mn", {NULL}, 435, "tcp"}, {"mobilip-mn", {NULL}, 435, "udp"}, {"dna-cml", {NULL}, 436, "tcp"}, {"dna-cml", {NULL}, 436, "udp"}, {"comscm", {NULL}, 437, "tcp"}, {"comscm", {NULL}, 437, "udp"}, {"dsfgw", {NULL}, 438, "tcp"}, {"dsfgw", {NULL}, 438, "udp"}, {"dasp", {NULL}, 439, "tcp"}, {"dasp", {NULL}, 439, "udp"}, {"sgcp", {NULL}, 440, "tcp"}, {"sgcp", {NULL}, 440, "udp"}, {"decvms-sysmgt", {NULL}, 441, "tcp"}, {"decvms-sysmgt", {NULL}, 441, "udp"}, {"cvc_hostd", {NULL}, 442, "tcp"}, {"cvc_hostd", {NULL}, 442, "udp"}, {"https", {NULL}, 443, "tcp"}, {"https", {NULL}, 443, "udp"}, {"https", {NULL}, 443, "sctp"}, {"snpp", {NULL}, 444, "tcp"}, {"snpp", {NULL}, 444, "udp"}, {"microsoft-ds", {NULL}, 445, "tcp"}, {"microsoft-ds", {NULL}, 445, "udp"}, {"ddm-rdb", {NULL}, 446, "tcp"}, {"ddm-rdb", {NULL}, 446, "udp"}, {"ddm-dfm", {NULL}, 447, "tcp"}, {"ddm-dfm", {NULL}, 447, "udp"}, {"ddm-ssl", {NULL}, 448, "tcp"}, {"ddm-ssl", {NULL}, 448, "udp"}, {"as-servermap", {NULL}, 449, "tcp"}, {"as-servermap", {NULL}, 449, "udp"}, {"tserver", {NULL}, 450, "tcp"}, {"tserver", {NULL}, 450, "udp"}, {"sfs-smp-net", {NULL}, 451, "tcp"}, {"sfs-smp-net", {NULL}, 451, "udp"}, {"sfs-config", {NULL}, 452, "tcp"}, {"sfs-config", {NULL}, 452, "udp"}, {"creativeserver", {NULL}, 453, "tcp"}, {"creativeserver", {NULL}, 453, "udp"}, {"contentserver", {NULL}, 454, "tcp"}, {"contentserver", {NULL}, 454, "udp"}, {"creativepartnr", {NULL}, 455, "tcp"}, {"creativepartnr", {NULL}, 455, "udp"}, {"macon-tcp", {NULL}, 456, "tcp"}, {"macon-udp", {NULL}, 456, "udp"}, {"scohelp", {NULL}, 457, "tcp"}, {"scohelp", {NULL}, 457, "udp"}, {"appleqtc", {NULL}, 458, "tcp"}, {"appleqtc", {NULL}, 458, "udp"}, {"ampr-rcmd", {NULL}, 459, "tcp"}, {"ampr-rcmd", {NULL}, 459, "udp"}, {"skronk", {NULL}, 460, "tcp"}, {"skronk", {NULL}, 460, "udp"}, {"datasurfsrv", {NULL}, 461, "tcp"}, {"datasurfsrv", {NULL}, 461, "udp"}, {"datasurfsrvsec", {NULL}, 462, "tcp"}, {"datasurfsrvsec", {NULL}, 462, "udp"}, {"alpes", {NULL}, 463, "tcp"}, {"alpes", {NULL}, 463, "udp"}, {"kpasswd", {NULL}, 464, "tcp"}, {"kpasswd", {NULL}, 464, "udp"}, {"urd", {NULL}, 465, "tcp"}, {"igmpv3lite", {NULL}, 465, "udp"}, {"digital-vrc", {NULL}, 466, "tcp"}, {"digital-vrc", {NULL}, 466, "udp"}, {"mylex-mapd", {NULL}, 467, "tcp"}, {"mylex-mapd", {NULL}, 467, "udp"}, {"photuris", {NULL}, 468, "tcp"}, {"photuris", {NULL}, 468, "udp"}, {"rcp", {NULL}, 469, "tcp"}, {"rcp", {NULL}, 469, "udp"}, {"scx-proxy", {NULL}, 470, "tcp"}, {"scx-proxy", {NULL}, 470, "udp"}, {"mondex", {NULL}, 471, "tcp"}, {"mondex", {NULL}, 471, "udp"}, {"ljk-login", {NULL}, 472, "tcp"}, {"ljk-login", {NULL}, 472, "udp"}, {"hybrid-pop", {NULL}, 473, "tcp"}, {"hybrid-pop", {NULL}, 473, "udp"}, {"tn-tl-w1", {NULL}, 474, "tcp"}, {"tn-tl-w2", {NULL}, 474, "udp"}, {"tcpnethaspsrv", {NULL}, 475, "tcp"}, {"tcpnethaspsrv", {NULL}, 475, "udp"}, {"tn-tl-fd1", {NULL}, 476, "tcp"}, {"tn-tl-fd1", {NULL}, 476, "udp"}, {"ss7ns", {NULL}, 477, "tcp"}, {"ss7ns", {NULL}, 477, "udp"}, {"spsc", {NULL}, 478, "tcp"}, {"spsc", {NULL}, 478, "udp"}, {"iafserver", {NULL}, 479, "tcp"}, {"iafserver", {NULL}, 479, "udp"}, {"iafdbase", {NULL}, 480, "tcp"}, {"iafdbase", {NULL}, 480, "udp"}, {"ph", {NULL}, 481, "tcp"}, {"ph", {NULL}, 481, "udp"}, {"bgs-nsi", {NULL}, 482, "tcp"}, {"bgs-nsi", {NULL}, 482, "udp"}, {"ulpnet", {NULL}, 483, "tcp"}, {"ulpnet", {NULL}, 483, "udp"}, {"integra-sme", {NULL}, 484, "tcp"}, {"integra-sme", {NULL}, 484, "udp"}, {"powerburst", {NULL}, 485, "tcp"}, {"powerburst", {NULL}, 485, "udp"}, {"avian", {NULL}, 486, "tcp"}, {"avian", {NULL}, 486, "udp"}, {"saft", {NULL}, 487, "tcp"}, {"saft", {NULL}, 487, "udp"}, {"gss-http", {NULL}, 488, "tcp"}, {"gss-http", {NULL}, 488, "udp"}, {"nest-protocol", {NULL}, 489, "tcp"}, {"nest-protocol", {NULL}, 489, "udp"}, {"micom-pfs", {NULL}, 490, "tcp"}, {"micom-pfs", {NULL}, 490, "udp"}, {"go-login", {NULL}, 491, "tcp"}, {"go-login", {NULL}, 491, "udp"}, {"ticf-1", {NULL}, 492, "tcp"}, {"ticf-1", {NULL}, 492, "udp"}, {"ticf-2", {NULL}, 493, "tcp"}, {"ticf-2", {NULL}, 493, "udp"}, {"pov-ray", {NULL}, 494, "tcp"}, {"pov-ray", {NULL}, 494, "udp"}, {"intecourier", {NULL}, 495, "tcp"}, {"intecourier", {NULL}, 495, "udp"}, {"pim-rp-disc", {NULL}, 496, "tcp"}, {"pim-rp-disc", {NULL}, 496, "udp"}, {"dantz", {NULL}, 497, "tcp"}, {"dantz", {NULL}, 497, "udp"}, {"siam", {NULL}, 498, "tcp"}, {"siam", {NULL}, 498, "udp"}, {"iso-ill", {NULL}, 499, "tcp"}, {"iso-ill", {NULL}, 499, "udp"}, {"isakmp", {NULL}, 500, "tcp"}, {"isakmp", {NULL}, 500, "udp"}, {"stmf", {NULL}, 501, "tcp"}, {"stmf", {NULL}, 501, "udp"}, {"asa-appl-proto", {NULL}, 502, "tcp"}, {"asa-appl-proto", {NULL}, 502, "udp"}, {"intrinsa", {NULL}, 503, "tcp"}, {"intrinsa", {NULL}, 503, "udp"}, {"citadel", {NULL}, 504, "tcp"}, {"citadel", {NULL}, 504, "udp"}, {"mailbox-lm", {NULL}, 505, "tcp"}, {"mailbox-lm", {NULL}, 505, "udp"}, {"ohimsrv", {NULL}, 506, "tcp"}, {"ohimsrv", {NULL}, 506, "udp"}, {"crs", {NULL}, 507, "tcp"}, {"crs", {NULL}, 507, "udp"}, {"xvttp", {NULL}, 508, "tcp"}, {"xvttp", {NULL}, 508, "udp"}, {"snare", {NULL}, 509, "tcp"}, {"snare", {NULL}, 509, "udp"}, {"fcp", {NULL}, 510, "tcp"}, {"fcp", {NULL}, 510, "udp"}, {"passgo", {NULL}, 511, "tcp"}, {"passgo", {NULL}, 511, "udp"}, {"exec", {NULL}, 512, "tcp"}, {"comsat", {NULL}, 512, "udp"}, {"biff", {NULL}, 512, "udp"}, {"login", {NULL}, 513, "tcp"}, {"who", {NULL}, 513, "udp"}, {"shell", {NULL}, 514, "tcp"}, {"syslog", {NULL}, 514, "udp"}, {"printer", {NULL}, 515, "tcp"}, {"printer", {NULL}, 515, "udp"}, {"videotex", {NULL}, 516, "tcp"}, {"videotex", {NULL}, 516, "udp"}, {"talk", {NULL}, 517, "tcp"}, {"talk", {NULL}, 517, "udp"}, {"ntalk", {NULL}, 518, "tcp"}, {"ntalk", {NULL}, 518, "udp"}, {"utime", {NULL}, 519, "tcp"}, {"utime", {NULL}, 519, "udp"}, {"efs", {NULL}, 520, "tcp"}, {"router", {NULL}, 520, "udp"}, {"ripng", {NULL}, 521, "tcp"}, {"ripng", {NULL}, 521, "udp"}, {"ulp", {NULL}, 522, "tcp"}, {"ulp", {NULL}, 522, "udp"}, {"ibm-db2", {NULL}, 523, "tcp"}, {"ibm-db2", {NULL}, 523, "udp"}, {"ncp", {NULL}, 524, "tcp"}, {"ncp", {NULL}, 524, "udp"}, {"timed", {NULL}, 525, "tcp"}, {"timed", {NULL}, 525, "udp"}, {"tempo", {NULL}, 526, "tcp"}, {"tempo", {NULL}, 526, "udp"}, {"stx", {NULL}, 527, "tcp"}, {"stx", {NULL}, 527, "udp"}, {"custix", {NULL}, 528, "tcp"}, {"custix", {NULL}, 528, "udp"}, {"irc-serv", {NULL}, 529, "tcp"}, {"irc-serv", {NULL}, 529, "udp"}, {"courier", {NULL}, 530, "tcp"}, {"courier", {NULL}, 530, "udp"}, {"conference", {NULL}, 531, "tcp"}, {"conference", {NULL}, 531, "udp"}, {"netnews", {NULL}, 532, "tcp"}, {"netnews", {NULL}, 532, "udp"}, {"netwall", {NULL}, 533, "tcp"}, {"netwall", {NULL}, 533, "udp"}, {"windream", {NULL}, 534, "tcp"}, {"windream", {NULL}, 534, "udp"}, {"iiop", {NULL}, 535, "tcp"}, {"iiop", {NULL}, 535, "udp"}, {"opalis-rdv", {NULL}, 536, "tcp"}, {"opalis-rdv", {NULL}, 536, "udp"}, {"nmsp", {NULL}, 537, "tcp"}, {"nmsp", {NULL}, 537, "udp"}, {"gdomap", {NULL}, 538, "tcp"}, {"gdomap", {NULL}, 538, "udp"}, {"apertus-ldp", {NULL}, 539, "tcp"}, {"apertus-ldp", {NULL}, 539, "udp"}, {"uucp", {NULL}, 540, "tcp"}, {"uucp", {NULL}, 540, "udp"}, {"uucp-rlogin", {NULL}, 541, "tcp"}, {"uucp-rlogin", {NULL}, 541, "udp"}, {"commerce", {NULL}, 542, "tcp"}, {"commerce", {NULL}, 542, "udp"}, {"klogin", {NULL}, 543, "tcp"}, {"klogin", {NULL}, 543, "udp"}, {"kshell", {NULL}, 544, "tcp"}, {"kshell", {NULL}, 544, "udp"}, {"appleqtcsrvr", {NULL}, 545, "tcp"}, {"appleqtcsrvr", {NULL}, 545, "udp"}, {"dhcpv6-client", {NULL}, 546, "tcp"}, {"dhcpv6-client", {NULL}, 546, "udp"}, {"dhcpv6-server", {NULL}, 547, "tcp"}, {"dhcpv6-server", {NULL}, 547, "udp"}, {"afpovertcp", {NULL}, 548, "tcp"}, {"afpovertcp", {NULL}, 548, "udp"}, {"idfp", {NULL}, 549, "tcp"}, {"idfp", {NULL}, 549, "udp"}, {"new-rwho", {NULL}, 550, "tcp"}, {"new-rwho", {NULL}, 550, "udp"}, {"cybercash", {NULL}, 551, "tcp"}, {"cybercash", {NULL}, 551, "udp"}, {"devshr-nts", {NULL}, 552, "tcp"}, {"devshr-nts", {NULL}, 552, "udp"}, {"pirp", {NULL}, 553, "tcp"}, {"pirp", {NULL}, 553, "udp"}, {"rtsp", {NULL}, 554, "tcp"}, {"rtsp", {NULL}, 554, "udp"}, {"dsf", {NULL}, 555, "tcp"}, {"dsf", {NULL}, 555, "udp"}, {"remotefs", {NULL}, 556, "tcp"}, {"remotefs", {NULL}, 556, "udp"}, {"openvms-sysipc", {NULL}, 557, "tcp"}, {"openvms-sysipc", {NULL}, 557, "udp"}, {"sdnskmp", {NULL}, 558, "tcp"}, {"sdnskmp", {NULL}, 558, "udp"}, {"teedtap", {NULL}, 559, "tcp"}, {"teedtap", {NULL}, 559, "udp"}, {"rmonitor", {NULL}, 560, "tcp"}, {"rmonitor", {NULL}, 560, "udp"}, {"monitor", {NULL}, 561, "tcp"}, {"monitor", {NULL}, 561, "udp"}, {"chshell", {NULL}, 562, "tcp"}, {"chshell", {NULL}, 562, "udp"}, {"nntps", {NULL}, 563, "tcp"}, {"nntps", {NULL}, 563, "udp"}, {"9pfs", {NULL}, 564, "tcp"}, {"9pfs", {NULL}, 564, "udp"}, {"whoami", {NULL}, 565, "tcp"}, {"whoami", {NULL}, 565, "udp"}, {"streettalk", {NULL}, 566, "tcp"}, {"streettalk", {NULL}, 566, "udp"}, {"banyan-rpc", {NULL}, 567, "tcp"}, {"banyan-rpc", {NULL}, 567, "udp"}, {"ms-shuttle", {NULL}, 568, "tcp"}, {"ms-shuttle", {NULL}, 568, "udp"}, {"ms-rome", {NULL}, 569, "tcp"}, {"ms-rome", {NULL}, 569, "udp"}, {"meter", {NULL}, 570, "tcp"}, {"meter", {NULL}, 570, "udp"}, {"meter", {NULL}, 571, "tcp"}, {"meter", {NULL}, 571, "udp"}, {"sonar", {NULL}, 572, "tcp"}, {"sonar", {NULL}, 572, "udp"}, {"banyan-vip", {NULL}, 573, "tcp"}, {"banyan-vip", {NULL}, 573, "udp"}, {"ftp-agent", {NULL}, 574, "tcp"}, {"ftp-agent", {NULL}, 574, "udp"}, {"vemmi", {NULL}, 575, "tcp"}, {"vemmi", {NULL}, 575, "udp"}, {"ipcd", {NULL}, 576, "tcp"}, {"ipcd", {NULL}, 576, "udp"}, {"vnas", {NULL}, 577, "tcp"}, {"vnas", {NULL}, 577, "udp"}, {"ipdd", {NULL}, 578, "tcp"}, {"ipdd", {NULL}, 578, "udp"}, {"decbsrv", {NULL}, 579, "tcp"}, {"decbsrv", {NULL}, 579, "udp"}, {"sntp-heartbeat", {NULL}, 580, "tcp"}, {"sntp-heartbeat", {NULL}, 580, "udp"}, {"bdp", {NULL}, 581, "tcp"}, {"bdp", {NULL}, 581, "udp"}, {"scc-security", {NULL}, 582, "tcp"}, {"scc-security", {NULL}, 582, "udp"}, {"philips-vc", {NULL}, 583, "tcp"}, {"philips-vc", {NULL}, 583, "udp"}, {"keyserver", {NULL}, 584, "tcp"}, {"keyserver", {NULL}, 584, "udp"}, {"password-chg", {NULL}, 586, "tcp"}, {"password-chg", {NULL}, 586, "udp"}, {"submission", {NULL}, 587, "tcp"}, {"submission", {NULL}, 587, "udp"}, {"cal", {NULL}, 588, "tcp"}, {"cal", {NULL}, 588, "udp"}, {"eyelink", {NULL}, 589, "tcp"}, {"eyelink", {NULL}, 589, "udp"}, {"tns-cml", {NULL}, 590, "tcp"}, {"tns-cml", {NULL}, 590, "udp"}, {"http-alt", {NULL}, 591, "tcp"}, {"http-alt", {NULL}, 591, "udp"}, {"eudora-set", {NULL}, 592, "tcp"}, {"eudora-set", {NULL}, 592, "udp"}, {"http-rpc-epmap", {NULL}, 593, "tcp"}, {"http-rpc-epmap", {NULL}, 593, "udp"}, {"tpip", {NULL}, 594, "tcp"}, {"tpip", {NULL}, 594, "udp"}, {"cab-protocol", {NULL}, 595, "tcp"}, {"cab-protocol", {NULL}, 595, "udp"}, {"smsd", {NULL}, 596, "tcp"}, {"smsd", {NULL}, 596, "udp"}, {"ptcnameservice", {NULL}, 597, "tcp"}, {"ptcnameservice", {NULL}, 597, "udp"}, {"sco-websrvrmg3", {NULL}, 598, "tcp"}, {"sco-websrvrmg3", {NULL}, 598, "udp"}, {"acp", {NULL}, 599, "tcp"}, {"acp", {NULL}, 599, "udp"}, {"ipcserver", {NULL}, 600, "tcp"}, {"ipcserver", {NULL}, 600, "udp"}, {"syslog-conn", {NULL}, 601, "tcp"}, {"syslog-conn", {NULL}, 601, "udp"}, {"xmlrpc-beep", {NULL}, 602, "tcp"}, {"xmlrpc-beep", {NULL}, 602, "udp"}, {"idxp", {NULL}, 603, "tcp"}, {"idxp", {NULL}, 603, "udp"}, {"tunnel", {NULL}, 604, "tcp"}, {"tunnel", {NULL}, 604, "udp"}, {"soap-beep", {NULL}, 605, "tcp"}, {"soap-beep", {NULL}, 605, "udp"}, {"urm", {NULL}, 606, "tcp"}, {"urm", {NULL}, 606, "udp"}, {"nqs", {NULL}, 607, "tcp"}, {"nqs", {NULL}, 607, "udp"}, {"sift-uft", {NULL}, 608, "tcp"}, {"sift-uft", {NULL}, 608, "udp"}, {"npmp-trap", {NULL}, 609, "tcp"}, {"npmp-trap", {NULL}, 609, "udp"}, {"npmp-local", {NULL}, 610, "tcp"}, {"npmp-local", {NULL}, 610, "udp"}, {"npmp-gui", {NULL}, 611, "tcp"}, {"npmp-gui", {NULL}, 611, "udp"}, {"hmmp-ind", {NULL}, 612, "tcp"}, {"hmmp-ind", {NULL}, 612, "udp"}, {"hmmp-op", {NULL}, 613, "tcp"}, {"hmmp-op", {NULL}, 613, "udp"}, {"sshell", {NULL}, 614, "tcp"}, {"sshell", {NULL}, 614, "udp"}, {"sco-inetmgr", {NULL}, 615, "tcp"}, {"sco-inetmgr", {NULL}, 615, "udp"}, {"sco-sysmgr", {NULL}, 616, "tcp"}, {"sco-sysmgr", {NULL}, 616, "udp"}, {"sco-dtmgr", {NULL}, 617, "tcp"}, {"sco-dtmgr", {NULL}, 617, "udp"}, {"dei-icda", {NULL}, 618, "tcp"}, {"dei-icda", {NULL}, 618, "udp"}, {"compaq-evm", {NULL}, 619, "tcp"}, {"compaq-evm", {NULL}, 619, "udp"}, {"sco-websrvrmgr", {NULL}, 620, "tcp"}, {"sco-websrvrmgr", {NULL}, 620, "udp"}, {"escp-ip", {NULL}, 621, "tcp"}, {"escp-ip", {NULL}, 621, "udp"}, {"collaborator", {NULL}, 622, "tcp"}, {"collaborator", {NULL}, 622, "udp"}, {"oob-ws-http", {NULL}, 623, "tcp"}, {"asf-rmcp", {NULL}, 623, "udp"}, {"cryptoadmin", {NULL}, 624, "tcp"}, {"cryptoadmin", {NULL}, 624, "udp"}, {"dec_dlm", {NULL}, 625, "tcp"}, {"dec_dlm", {NULL}, 625, "udp"}, {"asia", {NULL}, 626, "tcp"}, {"asia", {NULL}, 626, "udp"}, {"passgo-tivoli", {NULL}, 627, "tcp"}, {"passgo-tivoli", {NULL}, 627, "udp"}, {"qmqp", {NULL}, 628, "tcp"}, {"qmqp", {NULL}, 628, "udp"}, {"3com-amp3", {NULL}, 629, "tcp"}, {"3com-amp3", {NULL}, 629, "udp"}, {"rda", {NULL}, 630, "tcp"}, {"rda", {NULL}, 630, "udp"}, {"ipp", {NULL}, 631, "tcp"}, {"ipp", {NULL}, 631, "udp"}, {"bmpp", {NULL}, 632, "tcp"}, {"bmpp", {NULL}, 632, "udp"}, {"servstat", {NULL}, 633, "tcp"}, {"servstat", {NULL}, 633, "udp"}, {"ginad", {NULL}, 634, "tcp"}, {"ginad", {NULL}, 634, "udp"}, {"rlzdbase", {NULL}, 635, "tcp"}, {"rlzdbase", {NULL}, 635, "udp"}, {"ldaps", {NULL}, 636, "tcp"}, {"ldaps", {NULL}, 636, "udp"}, {"lanserver", {NULL}, 637, "tcp"}, {"lanserver", {NULL}, 637, "udp"}, {"mcns-sec", {NULL}, 638, "tcp"}, {"mcns-sec", {NULL}, 638, "udp"}, {"msdp", {NULL}, 639, "tcp"}, {"msdp", {NULL}, 639, "udp"}, {"entrust-sps", {NULL}, 640, "tcp"}, {"entrust-sps", {NULL}, 640, "udp"}, {"repcmd", {NULL}, 641, "tcp"}, {"repcmd", {NULL}, 641, "udp"}, {"esro-emsdp", {NULL}, 642, "tcp"}, {"esro-emsdp", {NULL}, 642, "udp"}, {"sanity", {NULL}, 643, "tcp"}, {"sanity", {NULL}, 643, "udp"}, {"dwr", {NULL}, 644, "tcp"}, {"dwr", {NULL}, 644, "udp"}, {"pssc", {NULL}, 645, "tcp"}, {"pssc", {NULL}, 645, "udp"}, {"ldp", {NULL}, 646, "tcp"}, {"ldp", {NULL}, 646, "udp"}, {"dhcp-failover", {NULL}, 647, "tcp"}, {"dhcp-failover", {NULL}, 647, "udp"}, {"rrp", {NULL}, 648, "tcp"}, {"rrp", {NULL}, 648, "udp"}, {"cadview-3d", {NULL}, 649, "tcp"}, {"cadview-3d", {NULL}, 649, "udp"}, {"obex", {NULL}, 650, "tcp"}, {"obex", {NULL}, 650, "udp"}, {"ieee-mms", {NULL}, 651, "tcp"}, {"ieee-mms", {NULL}, 651, "udp"}, {"hello-port", {NULL}, 652, "tcp"}, {"hello-port", {NULL}, 652, "udp"}, {"repscmd", {NULL}, 653, "tcp"}, {"repscmd", {NULL}, 653, "udp"}, {"aodv", {NULL}, 654, "tcp"}, {"aodv", {NULL}, 654, "udp"}, {"tinc", {NULL}, 655, "tcp"}, {"tinc", {NULL}, 655, "udp"}, {"spmp", {NULL}, 656, "tcp"}, {"spmp", {NULL}, 656, "udp"}, {"rmc", {NULL}, 657, "tcp"}, {"rmc", {NULL}, 657, "udp"}, {"tenfold", {NULL}, 658, "tcp"}, {"tenfold", {NULL}, 658, "udp"}, {"mac-srvr-admin", {NULL}, 660, "tcp"}, {"mac-srvr-admin", {NULL}, 660, "udp"}, {"hap", {NULL}, 661, "tcp"}, {"hap", {NULL}, 661, "udp"}, {"pftp", {NULL}, 662, "tcp"}, {"pftp", {NULL}, 662, "udp"}, {"purenoise", {NULL}, 663, "tcp"}, {"purenoise", {NULL}, 663, "udp"}, {"oob-ws-https", {NULL}, 664, "tcp"}, {"asf-secure-rmcp", {NULL}, 664, "udp"}, {"sun-dr", {NULL}, 665, "tcp"}, {"sun-dr", {NULL}, 665, "udp"}, {"mdqs", {NULL}, 666, "tcp"}, {"mdqs", {NULL}, 666, "udp"}, {"doom", {NULL}, 666, "tcp"}, {"doom", {NULL}, 666, "udp"}, {"disclose", {NULL}, 667, "tcp"}, {"disclose", {NULL}, 667, "udp"}, {"mecomm", {NULL}, 668, "tcp"}, {"mecomm", {NULL}, 668, "udp"}, {"meregister", {NULL}, 669, "tcp"}, {"meregister", {NULL}, 669, "udp"}, {"vacdsm-sws", {NULL}, 670, "tcp"}, {"vacdsm-sws", {NULL}, 670, "udp"}, {"vacdsm-app", {NULL}, 671, "tcp"}, {"vacdsm-app", {NULL}, 671, "udp"}, {"vpps-qua", {NULL}, 672, "tcp"}, {"vpps-qua", {NULL}, 672, "udp"}, {"cimplex", {NULL}, 673, "tcp"}, {"cimplex", {NULL}, 673, "udp"}, {"acap", {NULL}, 674, "tcp"}, {"acap", {NULL}, 674, "udp"}, {"dctp", {NULL}, 675, "tcp"}, {"dctp", {NULL}, 675, "udp"}, {"vpps-via", {NULL}, 676, "tcp"}, {"vpps-via", {NULL}, 676, "udp"}, {"vpp", {NULL}, 677, "tcp"}, {"vpp", {NULL}, 677, "udp"}, {"ggf-ncp", {NULL}, 678, "tcp"}, {"ggf-ncp", {NULL}, 678, "udp"}, {"mrm", {NULL}, 679, "tcp"}, {"mrm", {NULL}, 679, "udp"}, {"entrust-aaas", {NULL}, 680, "tcp"}, {"entrust-aaas", {NULL}, 680, "udp"}, {"entrust-aams", {NULL}, 681, "tcp"}, {"entrust-aams", {NULL}, 681, "udp"}, {"xfr", {NULL}, 682, "tcp"}, {"xfr", {NULL}, 682, "udp"}, {"corba-iiop", {NULL}, 683, "tcp"}, {"corba-iiop", {NULL}, 683, "udp"}, {"corba-iiop-ssl", {NULL}, 684, "tcp"}, {"corba-iiop-ssl", {NULL}, 684, "udp"}, {"mdc-portmapper", {NULL}, 685, "tcp"}, {"mdc-portmapper", {NULL}, 685, "udp"}, {"hcp-wismar", {NULL}, 686, "tcp"}, {"hcp-wismar", {NULL}, 686, "udp"}, {"asipregistry", {NULL}, 687, "tcp"}, {"asipregistry", {NULL}, 687, "udp"}, {"realm-rusd", {NULL}, 688, "tcp"}, {"realm-rusd", {NULL}, 688, "udp"}, {"nmap", {NULL}, 689, "tcp"}, {"nmap", {NULL}, 689, "udp"}, {"vatp", {NULL}, 690, "tcp"}, {"vatp", {NULL}, 690, "udp"}, {"msexch-routing", {NULL}, 691, "tcp"}, {"msexch-routing", {NULL}, 691, "udp"}, {"hyperwave-isp", {NULL}, 692, "tcp"}, {"hyperwave-isp", {NULL}, 692, "udp"}, {"connendp", {NULL}, 693, "tcp"}, {"connendp", {NULL}, 693, "udp"}, {"ha-cluster", {NULL}, 694, "tcp"}, {"ha-cluster", {NULL}, 694, "udp"}, {"ieee-mms-ssl", {NULL}, 695, "tcp"}, {"ieee-mms-ssl", {NULL}, 695, "udp"}, {"rushd", {NULL}, 696, "tcp"}, {"rushd", {NULL}, 696, "udp"}, {"uuidgen", {NULL}, 697, "tcp"}, {"uuidgen", {NULL}, 697, "udp"}, {"olsr", {NULL}, 698, "tcp"}, {"olsr", {NULL}, 698, "udp"}, {"accessnetwork", {NULL}, 699, "tcp"}, {"accessnetwork", {NULL}, 699, "udp"}, {"epp", {NULL}, 700, "tcp"}, {"epp", {NULL}, 700, "udp"}, {"lmp", {NULL}, 701, "tcp"}, {"lmp", {NULL}, 701, "udp"}, {"iris-beep", {NULL}, 702, "tcp"}, {"iris-beep", {NULL}, 702, "udp"}, {"elcsd", {NULL}, 704, "tcp"}, {"elcsd", {NULL}, 704, "udp"}, {"agentx", {NULL}, 705, "tcp"}, {"agentx", {NULL}, 705, "udp"}, {"silc", {NULL}, 706, "tcp"}, {"silc", {NULL}, 706, "udp"}, {"borland-dsj", {NULL}, 707, "tcp"}, {"borland-dsj", {NULL}, 707, "udp"}, {"entrust-kmsh", {NULL}, 709, "tcp"}, {"entrust-kmsh", {NULL}, 709, "udp"}, {"entrust-ash", {NULL}, 710, "tcp"}, {"entrust-ash", {NULL}, 710, "udp"}, {"cisco-tdp", {NULL}, 711, "tcp"}, {"cisco-tdp", {NULL}, 711, "udp"}, {"tbrpf", {NULL}, 712, "tcp"}, {"tbrpf", {NULL}, 712, "udp"}, {"iris-xpc", {NULL}, 713, "tcp"}, {"iris-xpc", {NULL}, 713, "udp"}, {"iris-xpcs", {NULL}, 714, "tcp"}, {"iris-xpcs", {NULL}, 714, "udp"}, {"iris-lwz", {NULL}, 715, "tcp"}, {"iris-lwz", {NULL}, 715, "udp"}, {"pana", {NULL}, 716, "udp"}, {"netviewdm1", {NULL}, 729, "tcp"}, {"netviewdm1", {NULL}, 729, "udp"}, {"netviewdm2", {NULL}, 730, "tcp"}, {"netviewdm2", {NULL}, 730, "udp"}, {"netviewdm3", {NULL}, 731, "tcp"}, {"netviewdm3", {NULL}, 731, "udp"}, {"netgw", {NULL}, 741, "tcp"}, {"netgw", {NULL}, 741, "udp"}, {"netrcs", {NULL}, 742, "tcp"}, {"netrcs", {NULL}, 742, "udp"}, {"flexlm", {NULL}, 744, "tcp"}, {"flexlm", {NULL}, 744, "udp"}, {"fujitsu-dev", {NULL}, 747, "tcp"}, {"fujitsu-dev", {NULL}, 747, "udp"}, {"ris-cm", {NULL}, 748, "tcp"}, {"ris-cm", {NULL}, 748, "udp"}, {"kerberos-adm", {NULL}, 749, "tcp"}, {"kerberos-adm", {NULL}, 749, "udp"}, {"rfile", {NULL}, 750, "tcp"}, {"loadav", {NULL}, 750, "udp"}, {"kerberos-iv", {NULL}, 750, "udp"}, {"pump", {NULL}, 751, "tcp"}, {"pump", {NULL}, 751, "udp"}, {"qrh", {NULL}, 752, "tcp"}, {"qrh", {NULL}, 752, "udp"}, {"rrh", {NULL}, 753, "tcp"}, {"rrh", {NULL}, 753, "udp"}, {"tell", {NULL}, 754, "tcp"}, {"tell", {NULL}, 754, "udp"}, {"nlogin", {NULL}, 758, "tcp"}, {"nlogin", {NULL}, 758, "udp"}, {"con", {NULL}, 759, "tcp"}, {"con", {NULL}, 759, "udp"}, {"ns", {NULL}, 760, "tcp"}, {"ns", {NULL}, 760, "udp"}, {"rxe", {NULL}, 761, "tcp"}, {"rxe", {NULL}, 761, "udp"}, {"quotad", {NULL}, 762, "tcp"}, {"quotad", {NULL}, 762, "udp"}, {"cycleserv", {NULL}, 763, "tcp"}, {"cycleserv", {NULL}, 763, "udp"}, {"omserv", {NULL}, 764, "tcp"}, {"omserv", {NULL}, 764, "udp"}, {"webster", {NULL}, 765, "tcp"}, {"webster", {NULL}, 765, "udp"}, {"phonebook", {NULL}, 767, "tcp"}, {"phonebook", {NULL}, 767, "udp"}, {"vid", {NULL}, 769, "tcp"}, {"vid", {NULL}, 769, "udp"}, {"cadlock", {NULL}, 770, "tcp"}, {"cadlock", {NULL}, 770, "udp"}, {"rtip", {NULL}, 771, "tcp"}, {"rtip", {NULL}, 771, "udp"}, {"cycleserv2", {NULL}, 772, "tcp"}, {"cycleserv2", {NULL}, 772, "udp"}, {"submit", {NULL}, 773, "tcp"}, {"notify", {NULL}, 773, "udp"}, {"rpasswd", {NULL}, 774, "tcp"}, {"acmaint_dbd", {NULL}, 774, "udp"}, {"entomb", {NULL}, 775, "tcp"}, {"acmaint_transd", {NULL}, 775, "udp"}, {"wpages", {NULL}, 776, "tcp"}, {"wpages", {NULL}, 776, "udp"}, {"multiling-http", {NULL}, 777, "tcp"}, {"multiling-http", {NULL}, 777, "udp"}, {"wpgs", {NULL}, 780, "tcp"}, {"wpgs", {NULL}, 780, "udp"}, {"mdbs_daemon", {NULL}, 800, "tcp"}, {"mdbs_daemon", {NULL}, 800, "udp"}, {"device", {NULL}, 801, "tcp"}, {"device", {NULL}, 801, "udp"}, {"fcp-udp", {NULL}, 810, "tcp"}, {"fcp-udp", {NULL}, 810, "udp"}, {"itm-mcell-s", {NULL}, 828, "tcp"}, {"itm-mcell-s", {NULL}, 828, "udp"}, {"pkix-3-ca-ra", {NULL}, 829, "tcp"}, {"pkix-3-ca-ra", {NULL}, 829, "udp"}, {"netconf-ssh", {NULL}, 830, "tcp"}, {"netconf-ssh", {NULL}, 830, "udp"}, {"netconf-beep", {NULL}, 831, "tcp"}, {"netconf-beep", {NULL}, 831, "udp"}, {"netconfsoaphttp", {NULL}, 832, "tcp"}, {"netconfsoaphttp", {NULL}, 832, "udp"}, {"netconfsoapbeep", {NULL}, 833, "tcp"}, {"netconfsoapbeep", {NULL}, 833, "udp"}, {"dhcp-failover2", {NULL}, 847, "tcp"}, {"dhcp-failover2", {NULL}, 847, "udp"}, {"gdoi", {NULL}, 848, "tcp"}, {"gdoi", {NULL}, 848, "udp"}, {"iscsi", {NULL}, 860, "tcp"}, {"iscsi", {NULL}, 860, "udp"}, {"owamp-control", {NULL}, 861, "tcp"}, {"owamp-control", {NULL}, 861, "udp"}, {"twamp-control", {NULL}, 862, "tcp"}, {"twamp-control", {NULL}, 862, "udp"}, {"rsync", {NULL}, 873, "tcp"}, {"rsync", {NULL}, 873, "udp"}, {"iclcnet-locate", {NULL}, 886, "tcp"}, {"iclcnet-locate", {NULL}, 886, "udp"}, {"iclcnet_svinfo", {NULL}, 887, "tcp"}, {"iclcnet_svinfo", {NULL}, 887, "udp"}, {"accessbuilder", {NULL}, 888, "tcp"}, {"accessbuilder", {NULL}, 888, "udp"}, {"cddbp", {NULL}, 888, "tcp"}, {"omginitialrefs", {NULL}, 900, "tcp"}, {"omginitialrefs", {NULL}, 900, "udp"}, {"smpnameres", {NULL}, 901, "tcp"}, {"smpnameres", {NULL}, 901, "udp"}, {"ideafarm-door", {NULL}, 902, "tcp"}, {"ideafarm-door", {NULL}, 902, "udp"}, {"ideafarm-panic", {NULL}, 903, "tcp"}, {"ideafarm-panic", {NULL}, 903, "udp"}, {"kink", {NULL}, 910, "tcp"}, {"kink", {NULL}, 910, "udp"}, {"xact-backup", {NULL}, 911, "tcp"}, {"xact-backup", {NULL}, 911, "udp"}, {"apex-mesh", {NULL}, 912, "tcp"}, {"apex-mesh", {NULL}, 912, "udp"}, {"apex-edge", {NULL}, 913, "tcp"}, {"apex-edge", {NULL}, 913, "udp"}, {"ftps-data", {NULL}, 989, "tcp"}, {"ftps-data", {NULL}, 989, "udp"}, {"ftps", {NULL}, 990, "tcp"}, {"ftps", {NULL}, 990, "udp"}, {"nas", {NULL}, 991, "tcp"}, {"nas", {NULL}, 991, "udp"}, {"telnets", {NULL}, 992, "tcp"}, {"telnets", {NULL}, 992, "udp"}, {"imaps", {NULL}, 993, "tcp"}, {"imaps", {NULL}, 993, "udp"}, {"ircs", {NULL}, 994, "tcp"}, {"ircs", {NULL}, 994, "udp"}, {"pop3s", {NULL}, 995, "tcp"}, {"pop3s", {NULL}, 995, "udp"}, {"vsinet", {NULL}, 996, "tcp"}, {"vsinet", {NULL}, 996, "udp"}, {"maitrd", {NULL}, 997, "tcp"}, {"maitrd", {NULL}, 997, "udp"}, {"busboy", {NULL}, 998, "tcp"}, {"puparp", {NULL}, 998, "udp"}, {"garcon", {NULL}, 999, "tcp"}, {"applix", {NULL}, 999, "udp"}, {"puprouter", {NULL}, 999, "tcp"}, {"puprouter", {NULL}, 999, "udp"}, {"cadlock2", {NULL}, 1000, "tcp"}, {"cadlock2", {NULL}, 1000, "udp"}, {"surf", {NULL}, 1010, "tcp"}, {"surf", {NULL}, 1010, "udp"}, {"exp1", {NULL}, 1021, "tcp"}, {"exp1", {NULL}, 1021, "udp"}, {"exp2", {NULL}, 1022, "tcp"}, {"exp2", {NULL}, 1022, "udp"}, #endif /* USE_IANA_WELL_KNOWN_PORTS */ #ifdef USE_IANA_REGISTERED_PORTS {"blackjack", {NULL}, 1025, "tcp"}, {"blackjack", {NULL}, 1025, "udp"}, {"cap", {NULL}, 1026, "tcp"}, {"cap", {NULL}, 1026, "udp"}, {"solid-mux", {NULL}, 1029, "tcp"}, {"solid-mux", {NULL}, 1029, "udp"}, {"iad1", {NULL}, 1030, "tcp"}, {"iad1", {NULL}, 1030, "udp"}, {"iad2", {NULL}, 1031, "tcp"}, {"iad2", {NULL}, 1031, "udp"}, {"iad3", {NULL}, 1032, "tcp"}, {"iad3", {NULL}, 1032, "udp"}, {"netinfo-local", {NULL}, 1033, "tcp"}, {"netinfo-local", {NULL}, 1033, "udp"}, {"activesync", {NULL}, 1034, "tcp"}, {"activesync", {NULL}, 1034, "udp"}, {"mxxrlogin", {NULL}, 1035, "tcp"}, {"mxxrlogin", {NULL}, 1035, "udp"}, {"nsstp", {NULL}, 1036, "tcp"}, {"nsstp", {NULL}, 1036, "udp"}, {"ams", {NULL}, 1037, "tcp"}, {"ams", {NULL}, 1037, "udp"}, {"mtqp", {NULL}, 1038, "tcp"}, {"mtqp", {NULL}, 1038, "udp"}, {"sbl", {NULL}, 1039, "tcp"}, {"sbl", {NULL}, 1039, "udp"}, {"netarx", {NULL}, 1040, "tcp"}, {"netarx", {NULL}, 1040, "udp"}, {"danf-ak2", {NULL}, 1041, "tcp"}, {"danf-ak2", {NULL}, 1041, "udp"}, {"afrog", {NULL}, 1042, "tcp"}, {"afrog", {NULL}, 1042, "udp"}, {"boinc-client", {NULL}, 1043, "tcp"}, {"boinc-client", {NULL}, 1043, "udp"}, {"dcutility", {NULL}, 1044, "tcp"}, {"dcutility", {NULL}, 1044, "udp"}, {"fpitp", {NULL}, 1045, "tcp"}, {"fpitp", {NULL}, 1045, "udp"}, {"wfremotertm", {NULL}, 1046, "tcp"}, {"wfremotertm", {NULL}, 1046, "udp"}, {"neod1", {NULL}, 1047, "tcp"}, {"neod1", {NULL}, 1047, "udp"}, {"neod2", {NULL}, 1048, "tcp"}, {"neod2", {NULL}, 1048, "udp"}, {"td-postman", {NULL}, 1049, "tcp"}, {"td-postman", {NULL}, 1049, "udp"}, {"cma", {NULL}, 1050, "tcp"}, {"cma", {NULL}, 1050, "udp"}, {"optima-vnet", {NULL}, 1051, "tcp"}, {"optima-vnet", {NULL}, 1051, "udp"}, {"ddt", {NULL}, 1052, "tcp"}, {"ddt", {NULL}, 1052, "udp"}, {"remote-as", {NULL}, 1053, "tcp"}, {"remote-as", {NULL}, 1053, "udp"}, {"brvread", {NULL}, 1054, "tcp"}, {"brvread", {NULL}, 1054, "udp"}, {"ansyslmd", {NULL}, 1055, "tcp"}, {"ansyslmd", {NULL}, 1055, "udp"}, {"vfo", {NULL}, 1056, "tcp"}, {"vfo", {NULL}, 1056, "udp"}, {"startron", {NULL}, 1057, "tcp"}, {"startron", {NULL}, 1057, "udp"}, {"nim", {NULL}, 1058, "tcp"}, {"nim", {NULL}, 1058, "udp"}, {"nimreg", {NULL}, 1059, "tcp"}, {"nimreg", {NULL}, 1059, "udp"}, {"polestar", {NULL}, 1060, "tcp"}, {"polestar", {NULL}, 1060, "udp"}, {"kiosk", {NULL}, 1061, "tcp"}, {"kiosk", {NULL}, 1061, "udp"}, {"veracity", {NULL}, 1062, "tcp"}, {"veracity", {NULL}, 1062, "udp"}, {"kyoceranetdev", {NULL}, 1063, "tcp"}, {"kyoceranetdev", {NULL}, 1063, "udp"}, {"jstel", {NULL}, 1064, "tcp"}, {"jstel", {NULL}, 1064, "udp"}, {"syscomlan", {NULL}, 1065, "tcp"}, {"syscomlan", {NULL}, 1065, "udp"}, {"fpo-fns", {NULL}, 1066, "tcp"}, {"fpo-fns", {NULL}, 1066, "udp"}, {"instl_boots", {NULL}, 1067, "tcp"}, {"instl_boots", {NULL}, 1067, "udp"}, {"instl_bootc", {NULL}, 1068, "tcp"}, {"instl_bootc", {NULL}, 1068, "udp"}, {"cognex-insight", {NULL}, 1069, "tcp"}, {"cognex-insight", {NULL}, 1069, "udp"}, {"gmrupdateserv", {NULL}, 1070, "tcp"}, {"gmrupdateserv", {NULL}, 1070, "udp"}, {"bsquare-voip", {NULL}, 1071, "tcp"}, {"bsquare-voip", {NULL}, 1071, "udp"}, {"cardax", {NULL}, 1072, "tcp"}, {"cardax", {NULL}, 1072, "udp"}, {"bridgecontrol", {NULL}, 1073, "tcp"}, {"bridgecontrol", {NULL}, 1073, "udp"}, {"warmspotMgmt", {NULL}, 1074, "tcp"}, {"warmspotMgmt", {NULL}, 1074, "udp"}, {"rdrmshc", {NULL}, 1075, "tcp"}, {"rdrmshc", {NULL}, 1075, "udp"}, {"dab-sti-c", {NULL}, 1076, "tcp"}, {"dab-sti-c", {NULL}, 1076, "udp"}, {"imgames", {NULL}, 1077, "tcp"}, {"imgames", {NULL}, 1077, "udp"}, {"avocent-proxy", {NULL}, 1078, "tcp"}, {"avocent-proxy", {NULL}, 1078, "udp"}, {"asprovatalk", {NULL}, 1079, "tcp"}, {"asprovatalk", {NULL}, 1079, "udp"}, {"socks", {NULL}, 1080, "tcp"}, {"socks", {NULL}, 1080, "udp"}, {"pvuniwien", {NULL}, 1081, "tcp"}, {"pvuniwien", {NULL}, 1081, "udp"}, {"amt-esd-prot", {NULL}, 1082, "tcp"}, {"amt-esd-prot", {NULL}, 1082, "udp"}, {"ansoft-lm-1", {NULL}, 1083, "tcp"}, {"ansoft-lm-1", {NULL}, 1083, "udp"}, {"ansoft-lm-2", {NULL}, 1084, "tcp"}, {"ansoft-lm-2", {NULL}, 1084, "udp"}, {"webobjects", {NULL}, 1085, "tcp"}, {"webobjects", {NULL}, 1085, "udp"}, {"cplscrambler-lg", {NULL}, 1086, "tcp"}, {"cplscrambler-lg", {NULL}, 1086, "udp"}, {"cplscrambler-in", {NULL}, 1087, "tcp"}, {"cplscrambler-in", {NULL}, 1087, "udp"}, {"cplscrambler-al", {NULL}, 1088, "tcp"}, {"cplscrambler-al", {NULL}, 1088, "udp"}, {"ff-annunc", {NULL}, 1089, "tcp"}, {"ff-annunc", {NULL}, 1089, "udp"}, {"ff-fms", {NULL}, 1090, "tcp"}, {"ff-fms", {NULL}, 1090, "udp"}, {"ff-sm", {NULL}, 1091, "tcp"}, {"ff-sm", {NULL}, 1091, "udp"}, {"obrpd", {NULL}, 1092, "tcp"}, {"obrpd", {NULL}, 1092, "udp"}, {"proofd", {NULL}, 1093, "tcp"}, {"proofd", {NULL}, 1093, "udp"}, {"rootd", {NULL}, 1094, "tcp"}, {"rootd", {NULL}, 1094, "udp"}, {"nicelink", {NULL}, 1095, "tcp"}, {"nicelink", {NULL}, 1095, "udp"}, {"cnrprotocol", {NULL}, 1096, "tcp"}, {"cnrprotocol", {NULL}, 1096, "udp"}, {"sunclustermgr", {NULL}, 1097, "tcp"}, {"sunclustermgr", {NULL}, 1097, "udp"}, {"rmiactivation", {NULL}, 1098, "tcp"}, {"rmiactivation", {NULL}, 1098, "udp"}, {"rmiregistry", {NULL}, 1099, "tcp"}, {"rmiregistry", {NULL}, 1099, "udp"}, {"mctp", {NULL}, 1100, "tcp"}, {"mctp", {NULL}, 1100, "udp"}, {"pt2-discover", {NULL}, 1101, "tcp"}, {"pt2-discover", {NULL}, 1101, "udp"}, {"adobeserver-1", {NULL}, 1102, "tcp"}, {"adobeserver-1", {NULL}, 1102, "udp"}, {"adobeserver-2", {NULL}, 1103, "tcp"}, {"adobeserver-2", {NULL}, 1103, "udp"}, {"xrl", {NULL}, 1104, "tcp"}, {"xrl", {NULL}, 1104, "udp"}, {"ftranhc", {NULL}, 1105, "tcp"}, {"ftranhc", {NULL}, 1105, "udp"}, {"isoipsigport-1", {NULL}, 1106, "tcp"}, {"isoipsigport-1", {NULL}, 1106, "udp"}, {"isoipsigport-2", {NULL}, 1107, "tcp"}, {"isoipsigport-2", {NULL}, 1107, "udp"}, {"ratio-adp", {NULL}, 1108, "tcp"}, {"ratio-adp", {NULL}, 1108, "udp"}, {"webadmstart", {NULL}, 1110, "tcp"}, {"nfsd-keepalive", {NULL}, 1110, "udp"}, {"lmsocialserver", {NULL}, 1111, "tcp"}, {"lmsocialserver", {NULL}, 1111, "udp"}, {"icp", {NULL}, 1112, "tcp"}, {"icp", {NULL}, 1112, "udp"}, {"ltp-deepspace", {NULL}, 1113, "tcp"}, {"ltp-deepspace", {NULL}, 1113, "udp"}, {"mini-sql", {NULL}, 1114, "tcp"}, {"mini-sql", {NULL}, 1114, "udp"}, {"ardus-trns", {NULL}, 1115, "tcp"}, {"ardus-trns", {NULL}, 1115, "udp"}, {"ardus-cntl", {NULL}, 1116, "tcp"}, {"ardus-cntl", {NULL}, 1116, "udp"}, {"ardus-mtrns", {NULL}, 1117, "tcp"}, {"ardus-mtrns", {NULL}, 1117, "udp"}, {"sacred", {NULL}, 1118, "tcp"}, {"sacred", {NULL}, 1118, "udp"}, {"bnetgame", {NULL}, 1119, "tcp"}, {"bnetgame", {NULL}, 1119, "udp"}, {"bnetfile", {NULL}, 1120, "tcp"}, {"bnetfile", {NULL}, 1120, "udp"}, {"rmpp", {NULL}, 1121, "tcp"}, {"rmpp", {NULL}, 1121, "udp"}, {"availant-mgr", {NULL}, 1122, "tcp"}, {"availant-mgr", {NULL}, 1122, "udp"}, {"murray", {NULL}, 1123, "tcp"}, {"murray", {NULL}, 1123, "udp"}, {"hpvmmcontrol", {NULL}, 1124, "tcp"}, {"hpvmmcontrol", {NULL}, 1124, "udp"}, {"hpvmmagent", {NULL}, 1125, "tcp"}, {"hpvmmagent", {NULL}, 1125, "udp"}, {"hpvmmdata", {NULL}, 1126, "tcp"}, {"hpvmmdata", {NULL}, 1126, "udp"}, {"kwdb-commn", {NULL}, 1127, "tcp"}, {"kwdb-commn", {NULL}, 1127, "udp"}, {"saphostctrl", {NULL}, 1128, "tcp"}, {"saphostctrl", {NULL}, 1128, "udp"}, {"saphostctrls", {NULL}, 1129, "tcp"}, {"saphostctrls", {NULL}, 1129, "udp"}, {"casp", {NULL}, 1130, "tcp"}, {"casp", {NULL}, 1130, "udp"}, {"caspssl", {NULL}, 1131, "tcp"}, {"caspssl", {NULL}, 1131, "udp"}, {"kvm-via-ip", {NULL}, 1132, "tcp"}, {"kvm-via-ip", {NULL}, 1132, "udp"}, {"dfn", {NULL}, 1133, "tcp"}, {"dfn", {NULL}, 1133, "udp"}, {"aplx", {NULL}, 1134, "tcp"}, {"aplx", {NULL}, 1134, "udp"}, {"omnivision", {NULL}, 1135, "tcp"}, {"omnivision", {NULL}, 1135, "udp"}, {"hhb-gateway", {NULL}, 1136, "tcp"}, {"hhb-gateway", {NULL}, 1136, "udp"}, {"trim", {NULL}, 1137, "tcp"}, {"trim", {NULL}, 1137, "udp"}, {"encrypted_admin", {NULL}, 1138, "tcp"}, {"encrypted_admin", {NULL}, 1138, "udp"}, {"evm", {NULL}, 1139, "tcp"}, {"evm", {NULL}, 1139, "udp"}, {"autonoc", {NULL}, 1140, "tcp"}, {"autonoc", {NULL}, 1140, "udp"}, {"mxomss", {NULL}, 1141, "tcp"}, {"mxomss", {NULL}, 1141, "udp"}, {"edtools", {NULL}, 1142, "tcp"}, {"edtools", {NULL}, 1142, "udp"}, {"imyx", {NULL}, 1143, "tcp"}, {"imyx", {NULL}, 1143, "udp"}, {"fuscript", {NULL}, 1144, "tcp"}, {"fuscript", {NULL}, 1144, "udp"}, {"x9-icue", {NULL}, 1145, "tcp"}, {"x9-icue", {NULL}, 1145, "udp"}, {"audit-transfer", {NULL}, 1146, "tcp"}, {"audit-transfer", {NULL}, 1146, "udp"}, {"capioverlan", {NULL}, 1147, "tcp"}, {"capioverlan", {NULL}, 1147, "udp"}, {"elfiq-repl", {NULL}, 1148, "tcp"}, {"elfiq-repl", {NULL}, 1148, "udp"}, {"bvtsonar", {NULL}, 1149, "tcp"}, {"bvtsonar", {NULL}, 1149, "udp"}, {"blaze", {NULL}, 1150, "tcp"}, {"blaze", {NULL}, 1150, "udp"}, {"unizensus", {NULL}, 1151, "tcp"}, {"unizensus", {NULL}, 1151, "udp"}, {"winpoplanmess", {NULL}, 1152, "tcp"}, {"winpoplanmess", {NULL}, 1152, "udp"}, {"c1222-acse", {NULL}, 1153, "tcp"}, {"c1222-acse", {NULL}, 1153, "udp"}, {"resacommunity", {NULL}, 1154, "tcp"}, {"resacommunity", {NULL}, 1154, "udp"}, {"nfa", {NULL}, 1155, "tcp"}, {"nfa", {NULL}, 1155, "udp"}, {"iascontrol-oms", {NULL}, 1156, "tcp"}, {"iascontrol-oms", {NULL}, 1156, "udp"}, {"iascontrol", {NULL}, 1157, "tcp"}, {"iascontrol", {NULL}, 1157, "udp"}, {"dbcontrol-oms", {NULL}, 1158, "tcp"}, {"dbcontrol-oms", {NULL}, 1158, "udp"}, {"oracle-oms", {NULL}, 1159, "tcp"}, {"oracle-oms", {NULL}, 1159, "udp"}, {"olsv", {NULL}, 1160, "tcp"}, {"olsv", {NULL}, 1160, "udp"}, {"health-polling", {NULL}, 1161, "tcp"}, {"health-polling", {NULL}, 1161, "udp"}, {"health-trap", {NULL}, 1162, "tcp"}, {"health-trap", {NULL}, 1162, "udp"}, {"sddp", {NULL}, 1163, "tcp"}, {"sddp", {NULL}, 1163, "udp"}, {"qsm-proxy", {NULL}, 1164, "tcp"}, {"qsm-proxy", {NULL}, 1164, "udp"}, {"qsm-gui", {NULL}, 1165, "tcp"}, {"qsm-gui", {NULL}, 1165, "udp"}, {"qsm-remote", {NULL}, 1166, "tcp"}, {"qsm-remote", {NULL}, 1166, "udp"}, {"cisco-ipsla", {NULL}, 1167, "tcp"}, {"cisco-ipsla", {NULL}, 1167, "udp"}, {"cisco-ipsla", {NULL}, 1167, "sctp"}, {"vchat", {NULL}, 1168, "tcp"}, {"vchat", {NULL}, 1168, "udp"}, {"tripwire", {NULL}, 1169, "tcp"}, {"tripwire", {NULL}, 1169, "udp"}, {"atc-lm", {NULL}, 1170, "tcp"}, {"atc-lm", {NULL}, 1170, "udp"}, {"atc-appserver", {NULL}, 1171, "tcp"}, {"atc-appserver", {NULL}, 1171, "udp"}, {"dnap", {NULL}, 1172, "tcp"}, {"dnap", {NULL}, 1172, "udp"}, {"d-cinema-rrp", {NULL}, 1173, "tcp"}, {"d-cinema-rrp", {NULL}, 1173, "udp"}, {"fnet-remote-ui", {NULL}, 1174, "tcp"}, {"fnet-remote-ui", {NULL}, 1174, "udp"}, {"dossier", {NULL}, 1175, "tcp"}, {"dossier", {NULL}, 1175, "udp"}, {"indigo-server", {NULL}, 1176, "tcp"}, {"indigo-server", {NULL}, 1176, "udp"}, {"dkmessenger", {NULL}, 1177, "tcp"}, {"dkmessenger", {NULL}, 1177, "udp"}, {"sgi-storman", {NULL}, 1178, "tcp"}, {"sgi-storman", {NULL}, 1178, "udp"}, {"b2n", {NULL}, 1179, "tcp"}, {"b2n", {NULL}, 1179, "udp"}, {"mc-client", {NULL}, 1180, "tcp"}, {"mc-client", {NULL}, 1180, "udp"}, {"3comnetman", {NULL}, 1181, "tcp"}, {"3comnetman", {NULL}, 1181, "udp"}, {"accelenet", {NULL}, 1182, "tcp"}, {"accelenet-data", {NULL}, 1182, "udp"}, {"llsurfup-http", {NULL}, 1183, "tcp"}, {"llsurfup-http", {NULL}, 1183, "udp"}, {"llsurfup-https", {NULL}, 1184, "tcp"}, {"llsurfup-https", {NULL}, 1184, "udp"}, {"catchpole", {NULL}, 1185, "tcp"}, {"catchpole", {NULL}, 1185, "udp"}, {"mysql-cluster", {NULL}, 1186, "tcp"}, {"mysql-cluster", {NULL}, 1186, "udp"}, {"alias", {NULL}, 1187, "tcp"}, {"alias", {NULL}, 1187, "udp"}, {"hp-webadmin", {NULL}, 1188, "tcp"}, {"hp-webadmin", {NULL}, 1188, "udp"}, {"unet", {NULL}, 1189, "tcp"}, {"unet", {NULL}, 1189, "udp"}, {"commlinx-avl", {NULL}, 1190, "tcp"}, {"commlinx-avl", {NULL}, 1190, "udp"}, {"gpfs", {NULL}, 1191, "tcp"}, {"gpfs", {NULL}, 1191, "udp"}, {"caids-sensor", {NULL}, 1192, "tcp"}, {"caids-sensor", {NULL}, 1192, "udp"}, {"fiveacross", {NULL}, 1193, "tcp"}, {"fiveacross", {NULL}, 1193, "udp"}, {"openvpn", {NULL}, 1194, "tcp"}, {"openvpn", {NULL}, 1194, "udp"}, {"rsf-1", {NULL}, 1195, "tcp"}, {"rsf-1", {NULL}, 1195, "udp"}, {"netmagic", {NULL}, 1196, "tcp"}, {"netmagic", {NULL}, 1196, "udp"}, {"carrius-rshell", {NULL}, 1197, "tcp"}, {"carrius-rshell", {NULL}, 1197, "udp"}, {"cajo-discovery", {NULL}, 1198, "tcp"}, {"cajo-discovery", {NULL}, 1198, "udp"}, {"dmidi", {NULL}, 1199, "tcp"}, {"dmidi", {NULL}, 1199, "udp"}, {"scol", {NULL}, 1200, "tcp"}, {"scol", {NULL}, 1200, "udp"}, {"nucleus-sand", {NULL}, 1201, "tcp"}, {"nucleus-sand", {NULL}, 1201, "udp"}, {"caiccipc", {NULL}, 1202, "tcp"}, {"caiccipc", {NULL}, 1202, "udp"}, {"ssslic-mgr", {NULL}, 1203, "tcp"}, {"ssslic-mgr", {NULL}, 1203, "udp"}, {"ssslog-mgr", {NULL}, 1204, "tcp"}, {"ssslog-mgr", {NULL}, 1204, "udp"}, {"accord-mgc", {NULL}, 1205, "tcp"}, {"accord-mgc", {NULL}, 1205, "udp"}, {"anthony-data", {NULL}, 1206, "tcp"}, {"anthony-data", {NULL}, 1206, "udp"}, {"metasage", {NULL}, 1207, "tcp"}, {"metasage", {NULL}, 1207, "udp"}, {"seagull-ais", {NULL}, 1208, "tcp"}, {"seagull-ais", {NULL}, 1208, "udp"}, {"ipcd3", {NULL}, 1209, "tcp"}, {"ipcd3", {NULL}, 1209, "udp"}, {"eoss", {NULL}, 1210, "tcp"}, {"eoss", {NULL}, 1210, "udp"}, {"groove-dpp", {NULL}, 1211, "tcp"}, {"groove-dpp", {NULL}, 1211, "udp"}, {"lupa", {NULL}, 1212, "tcp"}, {"lupa", {NULL}, 1212, "udp"}, {"mpc-lifenet", {NULL}, 1213, "tcp"}, {"mpc-lifenet", {NULL}, 1213, "udp"}, {"kazaa", {NULL}, 1214, "tcp"}, {"kazaa", {NULL}, 1214, "udp"}, {"scanstat-1", {NULL}, 1215, "tcp"}, {"scanstat-1", {NULL}, 1215, "udp"}, {"etebac5", {NULL}, 1216, "tcp"}, {"etebac5", {NULL}, 1216, "udp"}, {"hpss-ndapi", {NULL}, 1217, "tcp"}, {"hpss-ndapi", {NULL}, 1217, "udp"}, {"aeroflight-ads", {NULL}, 1218, "tcp"}, {"aeroflight-ads", {NULL}, 1218, "udp"}, {"aeroflight-ret", {NULL}, 1219, "tcp"}, {"aeroflight-ret", {NULL}, 1219, "udp"}, {"qt-serveradmin", {NULL}, 1220, "tcp"}, {"qt-serveradmin", {NULL}, 1220, "udp"}, {"sweetware-apps", {NULL}, 1221, "tcp"}, {"sweetware-apps", {NULL}, 1221, "udp"}, {"nerv", {NULL}, 1222, "tcp"}, {"nerv", {NULL}, 1222, "udp"}, {"tgp", {NULL}, 1223, "tcp"}, {"tgp", {NULL}, 1223, "udp"}, {"vpnz", {NULL}, 1224, "tcp"}, {"vpnz", {NULL}, 1224, "udp"}, {"slinkysearch", {NULL}, 1225, "tcp"}, {"slinkysearch", {NULL}, 1225, "udp"}, {"stgxfws", {NULL}, 1226, "tcp"}, {"stgxfws", {NULL}, 1226, "udp"}, {"dns2go", {NULL}, 1227, "tcp"}, {"dns2go", {NULL}, 1227, "udp"}, {"florence", {NULL}, 1228, "tcp"}, {"florence", {NULL}, 1228, "udp"}, {"zented", {NULL}, 1229, "tcp"}, {"zented", {NULL}, 1229, "udp"}, {"periscope", {NULL}, 1230, "tcp"}, {"periscope", {NULL}, 1230, "udp"}, {"menandmice-lpm", {NULL}, 1231, "tcp"}, {"menandmice-lpm", {NULL}, 1231, "udp"}, {"univ-appserver", {NULL}, 1233, "tcp"}, {"univ-appserver", {NULL}, 1233, "udp"}, {"search-agent", {NULL}, 1234, "tcp"}, {"search-agent", {NULL}, 1234, "udp"}, {"mosaicsyssvc1", {NULL}, 1235, "tcp"}, {"mosaicsyssvc1", {NULL}, 1235, "udp"}, {"bvcontrol", {NULL}, 1236, "tcp"}, {"bvcontrol", {NULL}, 1236, "udp"}, {"tsdos390", {NULL}, 1237, "tcp"}, {"tsdos390", {NULL}, 1237, "udp"}, {"hacl-qs", {NULL}, 1238, "tcp"}, {"hacl-qs", {NULL}, 1238, "udp"}, {"nmsd", {NULL}, 1239, "tcp"}, {"nmsd", {NULL}, 1239, "udp"}, {"instantia", {NULL}, 1240, "tcp"}, {"instantia", {NULL}, 1240, "udp"}, {"nessus", {NULL}, 1241, "tcp"}, {"nessus", {NULL}, 1241, "udp"}, {"nmasoverip", {NULL}, 1242, "tcp"}, {"nmasoverip", {NULL}, 1242, "udp"}, {"serialgateway", {NULL}, 1243, "tcp"}, {"serialgateway", {NULL}, 1243, "udp"}, {"isbconference1", {NULL}, 1244, "tcp"}, {"isbconference1", {NULL}, 1244, "udp"}, {"isbconference2", {NULL}, 1245, "tcp"}, {"isbconference2", {NULL}, 1245, "udp"}, {"payrouter", {NULL}, 1246, "tcp"}, {"payrouter", {NULL}, 1246, "udp"}, {"visionpyramid", {NULL}, 1247, "tcp"}, {"visionpyramid", {NULL}, 1247, "udp"}, {"hermes", {NULL}, 1248, "tcp"}, {"hermes", {NULL}, 1248, "udp"}, {"mesavistaco", {NULL}, 1249, "tcp"}, {"mesavistaco", {NULL}, 1249, "udp"}, {"swldy-sias", {NULL}, 1250, "tcp"}, {"swldy-sias", {NULL}, 1250, "udp"}, {"servergraph", {NULL}, 1251, "tcp"}, {"servergraph", {NULL}, 1251, "udp"}, {"bspne-pcc", {NULL}, 1252, "tcp"}, {"bspne-pcc", {NULL}, 1252, "udp"}, {"q55-pcc", {NULL}, 1253, "tcp"}, {"q55-pcc", {NULL}, 1253, "udp"}, {"de-noc", {NULL}, 1254, "tcp"}, {"de-noc", {NULL}, 1254, "udp"}, {"de-cache-query", {NULL}, 1255, "tcp"}, {"de-cache-query", {NULL}, 1255, "udp"}, {"de-server", {NULL}, 1256, "tcp"}, {"de-server", {NULL}, 1256, "udp"}, {"shockwave2", {NULL}, 1257, "tcp"}, {"shockwave2", {NULL}, 1257, "udp"}, {"opennl", {NULL}, 1258, "tcp"}, {"opennl", {NULL}, 1258, "udp"}, {"opennl-voice", {NULL}, 1259, "tcp"}, {"opennl-voice", {NULL}, 1259, "udp"}, {"ibm-ssd", {NULL}, 1260, "tcp"}, {"ibm-ssd", {NULL}, 1260, "udp"}, {"mpshrsv", {NULL}, 1261, "tcp"}, {"mpshrsv", {NULL}, 1261, "udp"}, {"qnts-orb", {NULL}, 1262, "tcp"}, {"qnts-orb", {NULL}, 1262, "udp"}, {"dka", {NULL}, 1263, "tcp"}, {"dka", {NULL}, 1263, "udp"}, {"prat", {NULL}, 1264, "tcp"}, {"prat", {NULL}, 1264, "udp"}, {"dssiapi", {NULL}, 1265, "tcp"}, {"dssiapi", {NULL}, 1265, "udp"}, {"dellpwrappks", {NULL}, 1266, "tcp"}, {"dellpwrappks", {NULL}, 1266, "udp"}, {"epc", {NULL}, 1267, "tcp"}, {"epc", {NULL}, 1267, "udp"}, {"propel-msgsys", {NULL}, 1268, "tcp"}, {"propel-msgsys", {NULL}, 1268, "udp"}, {"watilapp", {NULL}, 1269, "tcp"}, {"watilapp", {NULL}, 1269, "udp"}, {"opsmgr", {NULL}, 1270, "tcp"}, {"opsmgr", {NULL}, 1270, "udp"}, {"excw", {NULL}, 1271, "tcp"}, {"excw", {NULL}, 1271, "udp"}, {"cspmlockmgr", {NULL}, 1272, "tcp"}, {"cspmlockmgr", {NULL}, 1272, "udp"}, {"emc-gateway", {NULL}, 1273, "tcp"}, {"emc-gateway", {NULL}, 1273, "udp"}, {"t1distproc", {NULL}, 1274, "tcp"}, {"t1distproc", {NULL}, 1274, "udp"}, {"ivcollector", {NULL}, 1275, "tcp"}, {"ivcollector", {NULL}, 1275, "udp"}, {"ivmanager", {NULL}, 1276, "tcp"}, {"ivmanager", {NULL}, 1276, "udp"}, {"miva-mqs", {NULL}, 1277, "tcp"}, {"miva-mqs", {NULL}, 1277, "udp"}, {"dellwebadmin-1", {NULL}, 1278, "tcp"}, {"dellwebadmin-1", {NULL}, 1278, "udp"}, {"dellwebadmin-2", {NULL}, 1279, "tcp"}, {"dellwebadmin-2", {NULL}, 1279, "udp"}, {"pictrography", {NULL}, 1280, "tcp"}, {"pictrography", {NULL}, 1280, "udp"}, {"healthd", {NULL}, 1281, "tcp"}, {"healthd", {NULL}, 1281, "udp"}, {"emperion", {NULL}, 1282, "tcp"}, {"emperion", {NULL}, 1282, "udp"}, {"productinfo", {NULL}, 1283, "tcp"}, {"productinfo", {NULL}, 1283, "udp"}, {"iee-qfx", {NULL}, 1284, "tcp"}, {"iee-qfx", {NULL}, 1284, "udp"}, {"neoiface", {NULL}, 1285, "tcp"}, {"neoiface", {NULL}, 1285, "udp"}, {"netuitive", {NULL}, 1286, "tcp"}, {"netuitive", {NULL}, 1286, "udp"}, {"routematch", {NULL}, 1287, "tcp"}, {"routematch", {NULL}, 1287, "udp"}, {"navbuddy", {NULL}, 1288, "tcp"}, {"navbuddy", {NULL}, 1288, "udp"}, {"jwalkserver", {NULL}, 1289, "tcp"}, {"jwalkserver", {NULL}, 1289, "udp"}, {"winjaserver", {NULL}, 1290, "tcp"}, {"winjaserver", {NULL}, 1290, "udp"}, {"seagulllms", {NULL}, 1291, "tcp"}, {"seagulllms", {NULL}, 1291, "udp"}, {"dsdn", {NULL}, 1292, "tcp"}, {"dsdn", {NULL}, 1292, "udp"}, {"pkt-krb-ipsec", {NULL}, 1293, "tcp"}, {"pkt-krb-ipsec", {NULL}, 1293, "udp"}, {"cmmdriver", {NULL}, 1294, "tcp"}, {"cmmdriver", {NULL}, 1294, "udp"}, {"ehtp", {NULL}, 1295, "tcp"}, {"ehtp", {NULL}, 1295, "udp"}, {"dproxy", {NULL}, 1296, "tcp"}, {"dproxy", {NULL}, 1296, "udp"}, {"sdproxy", {NULL}, 1297, "tcp"}, {"sdproxy", {NULL}, 1297, "udp"}, {"lpcp", {NULL}, 1298, "tcp"}, {"lpcp", {NULL}, 1298, "udp"}, {"hp-sci", {NULL}, 1299, "tcp"}, {"hp-sci", {NULL}, 1299, "udp"}, {"h323hostcallsc", {NULL}, 1300, "tcp"}, {"h323hostcallsc", {NULL}, 1300, "udp"}, {"ci3-software-1", {NULL}, 1301, "tcp"}, {"ci3-software-1", {NULL}, 1301, "udp"}, {"ci3-software-2", {NULL}, 1302, "tcp"}, {"ci3-software-2", {NULL}, 1302, "udp"}, {"sftsrv", {NULL}, 1303, "tcp"}, {"sftsrv", {NULL}, 1303, "udp"}, {"boomerang", {NULL}, 1304, "tcp"}, {"boomerang", {NULL}, 1304, "udp"}, {"pe-mike", {NULL}, 1305, "tcp"}, {"pe-mike", {NULL}, 1305, "udp"}, {"re-conn-proto", {NULL}, 1306, "tcp"}, {"re-conn-proto", {NULL}, 1306, "udp"}, {"pacmand", {NULL}, 1307, "tcp"}, {"pacmand", {NULL}, 1307, "udp"}, {"odsi", {NULL}, 1308, "tcp"}, {"odsi", {NULL}, 1308, "udp"}, {"jtag-server", {NULL}, 1309, "tcp"}, {"jtag-server", {NULL}, 1309, "udp"}, {"husky", {NULL}, 1310, "tcp"}, {"husky", {NULL}, 1310, "udp"}, {"rxmon", {NULL}, 1311, "tcp"}, {"rxmon", {NULL}, 1311, "udp"}, {"sti-envision", {NULL}, 1312, "tcp"}, {"sti-envision", {NULL}, 1312, "udp"}, {"bmc_patroldb", {NULL}, 1313, "tcp"}, {"bmc_patroldb", {NULL}, 1313, "udp"}, {"pdps", {NULL}, 1314, "tcp"}, {"pdps", {NULL}, 1314, "udp"}, {"els", {NULL}, 1315, "tcp"}, {"els", {NULL}, 1315, "udp"}, {"exbit-escp", {NULL}, 1316, "tcp"}, {"exbit-escp", {NULL}, 1316, "udp"}, {"vrts-ipcserver", {NULL}, 1317, "tcp"}, {"vrts-ipcserver", {NULL}, 1317, "udp"}, {"krb5gatekeeper", {NULL}, 1318, "tcp"}, {"krb5gatekeeper", {NULL}, 1318, "udp"}, {"amx-icsp", {NULL}, 1319, "tcp"}, {"amx-icsp", {NULL}, 1319, "udp"}, {"amx-axbnet", {NULL}, 1320, "tcp"}, {"amx-axbnet", {NULL}, 1320, "udp"}, {"pip", {NULL}, 1321, "tcp"}, {"pip", {NULL}, 1321, "udp"}, {"novation", {NULL}, 1322, "tcp"}, {"novation", {NULL}, 1322, "udp"}, {"brcd", {NULL}, 1323, "tcp"}, {"brcd", {NULL}, 1323, "udp"}, {"delta-mcp", {NULL}, 1324, "tcp"}, {"delta-mcp", {NULL}, 1324, "udp"}, {"dx-instrument", {NULL}, 1325, "tcp"}, {"dx-instrument", {NULL}, 1325, "udp"}, {"wimsic", {NULL}, 1326, "tcp"}, {"wimsic", {NULL}, 1326, "udp"}, {"ultrex", {NULL}, 1327, "tcp"}, {"ultrex", {NULL}, 1327, "udp"}, {"ewall", {NULL}, 1328, "tcp"}, {"ewall", {NULL}, 1328, "udp"}, {"netdb-export", {NULL}, 1329, "tcp"}, {"netdb-export", {NULL}, 1329, "udp"}, {"streetperfect", {NULL}, 1330, "tcp"}, {"streetperfect", {NULL}, 1330, "udp"}, {"intersan", {NULL}, 1331, "tcp"}, {"intersan", {NULL}, 1331, "udp"}, {"pcia-rxp-b", {NULL}, 1332, "tcp"}, {"pcia-rxp-b", {NULL}, 1332, "udp"}, {"passwrd-policy", {NULL}, 1333, "tcp"}, {"passwrd-policy", {NULL}, 1333, "udp"}, {"writesrv", {NULL}, 1334, "tcp"}, {"writesrv", {NULL}, 1334, "udp"}, {"digital-notary", {NULL}, 1335, "tcp"}, {"digital-notary", {NULL}, 1335, "udp"}, {"ischat", {NULL}, 1336, "tcp"}, {"ischat", {NULL}, 1336, "udp"}, {"menandmice-dns", {NULL}, 1337, "tcp"}, {"menandmice-dns", {NULL}, 1337, "udp"}, {"wmc-log-svc", {NULL}, 1338, "tcp"}, {"wmc-log-svc", {NULL}, 1338, "udp"}, {"kjtsiteserver", {NULL}, 1339, "tcp"}, {"kjtsiteserver", {NULL}, 1339, "udp"}, {"naap", {NULL}, 1340, "tcp"}, {"naap", {NULL}, 1340, "udp"}, {"qubes", {NULL}, 1341, "tcp"}, {"qubes", {NULL}, 1341, "udp"}, {"esbroker", {NULL}, 1342, "tcp"}, {"esbroker", {NULL}, 1342, "udp"}, {"re101", {NULL}, 1343, "tcp"}, {"re101", {NULL}, 1343, "udp"}, {"icap", {NULL}, 1344, "tcp"}, {"icap", {NULL}, 1344, "udp"}, {"vpjp", {NULL}, 1345, "tcp"}, {"vpjp", {NULL}, 1345, "udp"}, {"alta-ana-lm", {NULL}, 1346, "tcp"}, {"alta-ana-lm", {NULL}, 1346, "udp"}, {"bbn-mmc", {NULL}, 1347, "tcp"}, {"bbn-mmc", {NULL}, 1347, "udp"}, {"bbn-mmx", {NULL}, 1348, "tcp"}, {"bbn-mmx", {NULL}, 1348, "udp"}, {"sbook", {NULL}, 1349, "tcp"}, {"sbook", {NULL}, 1349, "udp"}, {"editbench", {NULL}, 1350, "tcp"}, {"editbench", {NULL}, 1350, "udp"}, {"equationbuilder", {NULL}, 1351, "tcp"}, {"equationbuilder", {NULL}, 1351, "udp"}, {"lotusnote", {NULL}, 1352, "tcp"}, {"lotusnote", {NULL}, 1352, "udp"}, {"relief", {NULL}, 1353, "tcp"}, {"relief", {NULL}, 1353, "udp"}, {"XSIP-network", {NULL}, 1354, "tcp"}, {"XSIP-network", {NULL}, 1354, "udp"}, {"intuitive-edge", {NULL}, 1355, "tcp"}, {"intuitive-edge", {NULL}, 1355, "udp"}, {"cuillamartin", {NULL}, 1356, "tcp"}, {"cuillamartin", {NULL}, 1356, "udp"}, {"pegboard", {NULL}, 1357, "tcp"}, {"pegboard", {NULL}, 1357, "udp"}, {"connlcli", {NULL}, 1358, "tcp"}, {"connlcli", {NULL}, 1358, "udp"}, {"ftsrv", {NULL}, 1359, "tcp"}, {"ftsrv", {NULL}, 1359, "udp"}, {"mimer", {NULL}, 1360, "tcp"}, {"mimer", {NULL}, 1360, "udp"}, {"linx", {NULL}, 1361, "tcp"}, {"linx", {NULL}, 1361, "udp"}, {"timeflies", {NULL}, 1362, "tcp"}, {"timeflies", {NULL}, 1362, "udp"}, {"ndm-requester", {NULL}, 1363, "tcp"}, {"ndm-requester", {NULL}, 1363, "udp"}, {"ndm-server", {NULL}, 1364, "tcp"}, {"ndm-server", {NULL}, 1364, "udp"}, {"adapt-sna", {NULL}, 1365, "tcp"}, {"adapt-sna", {NULL}, 1365, "udp"}, {"netware-csp", {NULL}, 1366, "tcp"}, {"netware-csp", {NULL}, 1366, "udp"}, {"dcs", {NULL}, 1367, "tcp"}, {"dcs", {NULL}, 1367, "udp"}, {"screencast", {NULL}, 1368, "tcp"}, {"screencast", {NULL}, 1368, "udp"}, {"gv-us", {NULL}, 1369, "tcp"}, {"gv-us", {NULL}, 1369, "udp"}, {"us-gv", {NULL}, 1370, "tcp"}, {"us-gv", {NULL}, 1370, "udp"}, {"fc-cli", {NULL}, 1371, "tcp"}, {"fc-cli", {NULL}, 1371, "udp"}, {"fc-ser", {NULL}, 1372, "tcp"}, {"fc-ser", {NULL}, 1372, "udp"}, {"chromagrafx", {NULL}, 1373, "tcp"}, {"chromagrafx", {NULL}, 1373, "udp"}, {"molly", {NULL}, 1374, "tcp"}, {"molly", {NULL}, 1374, "udp"}, {"bytex", {NULL}, 1375, "tcp"}, {"bytex", {NULL}, 1375, "udp"}, {"ibm-pps", {NULL}, 1376, "tcp"}, {"ibm-pps", {NULL}, 1376, "udp"}, {"cichlid", {NULL}, 1377, "tcp"}, {"cichlid", {NULL}, 1377, "udp"}, {"elan", {NULL}, 1378, "tcp"}, {"elan", {NULL}, 1378, "udp"}, {"dbreporter", {NULL}, 1379, "tcp"}, {"dbreporter", {NULL}, 1379, "udp"}, {"telesis-licman", {NULL}, 1380, "tcp"}, {"telesis-licman", {NULL}, 1380, "udp"}, {"apple-licman", {NULL}, 1381, "tcp"}, {"apple-licman", {NULL}, 1381, "udp"}, {"udt_os", {NULL}, 1382, "tcp"}, {"udt_os", {NULL}, 1382, "udp"}, {"gwha", {NULL}, 1383, "tcp"}, {"gwha", {NULL}, 1383, "udp"}, {"os-licman", {NULL}, 1384, "tcp"}, {"os-licman", {NULL}, 1384, "udp"}, {"atex_elmd", {NULL}, 1385, "tcp"}, {"atex_elmd", {NULL}, 1385, "udp"}, {"checksum", {NULL}, 1386, "tcp"}, {"checksum", {NULL}, 1386, "udp"}, {"cadsi-lm", {NULL}, 1387, "tcp"}, {"cadsi-lm", {NULL}, 1387, "udp"}, {"objective-dbc", {NULL}, 1388, "tcp"}, {"objective-dbc", {NULL}, 1388, "udp"}, {"iclpv-dm", {NULL}, 1389, "tcp"}, {"iclpv-dm", {NULL}, 1389, "udp"}, {"iclpv-sc", {NULL}, 1390, "tcp"}, {"iclpv-sc", {NULL}, 1390, "udp"}, {"iclpv-sas", {NULL}, 1391, "tcp"}, {"iclpv-sas", {NULL}, 1391, "udp"}, {"iclpv-pm", {NULL}, 1392, "tcp"}, {"iclpv-pm", {NULL}, 1392, "udp"}, {"iclpv-nls", {NULL}, 1393, "tcp"}, {"iclpv-nls", {NULL}, 1393, "udp"}, {"iclpv-nlc", {NULL}, 1394, "tcp"}, {"iclpv-nlc", {NULL}, 1394, "udp"}, {"iclpv-wsm", {NULL}, 1395, "tcp"}, {"iclpv-wsm", {NULL}, 1395, "udp"}, {"dvl-activemail", {NULL}, 1396, "tcp"}, {"dvl-activemail", {NULL}, 1396, "udp"}, {"audio-activmail", {NULL}, 1397, "tcp"}, {"audio-activmail", {NULL}, 1397, "udp"}, {"video-activmail", {NULL}, 1398, "tcp"}, {"video-activmail", {NULL}, 1398, "udp"}, {"cadkey-licman", {NULL}, 1399, "tcp"}, {"cadkey-licman", {NULL}, 1399, "udp"}, {"cadkey-tablet", {NULL}, 1400, "tcp"}, {"cadkey-tablet", {NULL}, 1400, "udp"}, {"goldleaf-licman", {NULL}, 1401, "tcp"}, {"goldleaf-licman", {NULL}, 1401, "udp"}, {"prm-sm-np", {NULL}, 1402, "tcp"}, {"prm-sm-np", {NULL}, 1402, "udp"}, {"prm-nm-np", {NULL}, 1403, "tcp"}, {"prm-nm-np", {NULL}, 1403, "udp"}, {"igi-lm", {NULL}, 1404, "tcp"}, {"igi-lm", {NULL}, 1404, "udp"}, {"ibm-res", {NULL}, 1405, "tcp"}, {"ibm-res", {NULL}, 1405, "udp"}, {"netlabs-lm", {NULL}, 1406, "tcp"}, {"netlabs-lm", {NULL}, 1406, "udp"}, {"dbsa-lm", {NULL}, 1407, "tcp"}, {"dbsa-lm", {NULL}, 1407, "udp"}, {"sophia-lm", {NULL}, 1408, "tcp"}, {"sophia-lm", {NULL}, 1408, "udp"}, {"here-lm", {NULL}, 1409, "tcp"}, {"here-lm", {NULL}, 1409, "udp"}, {"hiq", {NULL}, 1410, "tcp"}, {"hiq", {NULL}, 1410, "udp"}, {"af", {NULL}, 1411, "tcp"}, {"af", {NULL}, 1411, "udp"}, {"innosys", {NULL}, 1412, "tcp"}, {"innosys", {NULL}, 1412, "udp"}, {"innosys-acl", {NULL}, 1413, "tcp"}, {"innosys-acl", {NULL}, 1413, "udp"}, {"ibm-mqseries", {NULL}, 1414, "tcp"}, {"ibm-mqseries", {NULL}, 1414, "udp"}, {"dbstar", {NULL}, 1415, "tcp"}, {"dbstar", {NULL}, 1415, "udp"}, {"novell-lu6.2", {NULL}, 1416, "tcp"}, {"novell-lu6.2", {NULL}, 1416, "udp"}, {"timbuktu-srv1", {NULL}, 1417, "tcp"}, {"timbuktu-srv1", {NULL}, 1417, "udp"}, {"timbuktu-srv2", {NULL}, 1418, "tcp"}, {"timbuktu-srv2", {NULL}, 1418, "udp"}, {"timbuktu-srv3", {NULL}, 1419, "tcp"}, {"timbuktu-srv3", {NULL}, 1419, "udp"}, {"timbuktu-srv4", {NULL}, 1420, "tcp"}, {"timbuktu-srv4", {NULL}, 1420, "udp"}, {"gandalf-lm", {NULL}, 1421, "tcp"}, {"gandalf-lm", {NULL}, 1421, "udp"}, {"autodesk-lm", {NULL}, 1422, "tcp"}, {"autodesk-lm", {NULL}, 1422, "udp"}, {"essbase", {NULL}, 1423, "tcp"}, {"essbase", {NULL}, 1423, "udp"}, {"hybrid", {NULL}, 1424, "tcp"}, {"hybrid", {NULL}, 1424, "udp"}, {"zion-lm", {NULL}, 1425, "tcp"}, {"zion-lm", {NULL}, 1425, "udp"}, {"sais", {NULL}, 1426, "tcp"}, {"sais", {NULL}, 1426, "udp"}, {"mloadd", {NULL}, 1427, "tcp"}, {"mloadd", {NULL}, 1427, "udp"}, {"informatik-lm", {NULL}, 1428, "tcp"}, {"informatik-lm", {NULL}, 1428, "udp"}, {"nms", {NULL}, 1429, "tcp"}, {"nms", {NULL}, 1429, "udp"}, {"tpdu", {NULL}, 1430, "tcp"}, {"tpdu", {NULL}, 1430, "udp"}, {"rgtp", {NULL}, 1431, "tcp"}, {"rgtp", {NULL}, 1431, "udp"}, {"blueberry-lm", {NULL}, 1432, "tcp"}, {"blueberry-lm", {NULL}, 1432, "udp"}, {"ms-sql-s", {NULL}, 1433, "tcp"}, {"ms-sql-s", {NULL}, 1433, "udp"}, {"ms-sql-m", {NULL}, 1434, "tcp"}, {"ms-sql-m", {NULL}, 1434, "udp"}, {"ibm-cics", {NULL}, 1435, "tcp"}, {"ibm-cics", {NULL}, 1435, "udp"}, {"saism", {NULL}, 1436, "tcp"}, {"saism", {NULL}, 1436, "udp"}, {"tabula", {NULL}, 1437, "tcp"}, {"tabula", {NULL}, 1437, "udp"}, {"eicon-server", {NULL}, 1438, "tcp"}, {"eicon-server", {NULL}, 1438, "udp"}, {"eicon-x25", {NULL}, 1439, "tcp"}, {"eicon-x25", {NULL}, 1439, "udp"}, {"eicon-slp", {NULL}, 1440, "tcp"}, {"eicon-slp", {NULL}, 1440, "udp"}, {"cadis-1", {NULL}, 1441, "tcp"}, {"cadis-1", {NULL}, 1441, "udp"}, {"cadis-2", {NULL}, 1442, "tcp"}, {"cadis-2", {NULL}, 1442, "udp"}, {"ies-lm", {NULL}, 1443, "tcp"}, {"ies-lm", {NULL}, 1443, "udp"}, {"marcam-lm", {NULL}, 1444, "tcp"}, {"marcam-lm", {NULL}, 1444, "udp"}, {"proxima-lm", {NULL}, 1445, "tcp"}, {"proxima-lm", {NULL}, 1445, "udp"}, {"ora-lm", {NULL}, 1446, "tcp"}, {"ora-lm", {NULL}, 1446, "udp"}, {"apri-lm", {NULL}, 1447, "tcp"}, {"apri-lm", {NULL}, 1447, "udp"}, {"oc-lm", {NULL}, 1448, "tcp"}, {"oc-lm", {NULL}, 1448, "udp"}, {"peport", {NULL}, 1449, "tcp"}, {"peport", {NULL}, 1449, "udp"}, {"dwf", {NULL}, 1450, "tcp"}, {"dwf", {NULL}, 1450, "udp"}, {"infoman", {NULL}, 1451, "tcp"}, {"infoman", {NULL}, 1451, "udp"}, {"gtegsc-lm", {NULL}, 1452, "tcp"}, {"gtegsc-lm", {NULL}, 1452, "udp"}, {"genie-lm", {NULL}, 1453, "tcp"}, {"genie-lm", {NULL}, 1453, "udp"}, {"interhdl_elmd", {NULL}, 1454, "tcp"}, {"interhdl_elmd", {NULL}, 1454, "udp"}, {"esl-lm", {NULL}, 1455, "tcp"}, {"esl-lm", {NULL}, 1455, "udp"}, {"dca", {NULL}, 1456, "tcp"}, {"dca", {NULL}, 1456, "udp"}, {"valisys-lm", {NULL}, 1457, "tcp"}, {"valisys-lm", {NULL}, 1457, "udp"}, {"nrcabq-lm", {NULL}, 1458, "tcp"}, {"nrcabq-lm", {NULL}, 1458, "udp"}, {"proshare1", {NULL}, 1459, "tcp"}, {"proshare1", {NULL}, 1459, "udp"}, {"proshare2", {NULL}, 1460, "tcp"}, {"proshare2", {NULL}, 1460, "udp"}, {"ibm_wrless_lan", {NULL}, 1461, "tcp"}, {"ibm_wrless_lan", {NULL}, 1461, "udp"}, {"world-lm", {NULL}, 1462, "tcp"}, {"world-lm", {NULL}, 1462, "udp"}, {"nucleus", {NULL}, 1463, "tcp"}, {"nucleus", {NULL}, 1463, "udp"}, {"msl_lmd", {NULL}, 1464, "tcp"}, {"msl_lmd", {NULL}, 1464, "udp"}, {"pipes", {NULL}, 1465, "tcp"}, {"pipes", {NULL}, 1465, "udp"}, {"oceansoft-lm", {NULL}, 1466, "tcp"}, {"oceansoft-lm", {NULL}, 1466, "udp"}, {"csdmbase", {NULL}, 1467, "tcp"}, {"csdmbase", {NULL}, 1467, "udp"}, {"csdm", {NULL}, 1468, "tcp"}, {"csdm", {NULL}, 1468, "udp"}, {"aal-lm", {NULL}, 1469, "tcp"}, {"aal-lm", {NULL}, 1469, "udp"}, {"uaiact", {NULL}, 1470, "tcp"}, {"uaiact", {NULL}, 1470, "udp"}, {"csdmbase", {NULL}, 1471, "tcp"}, {"csdmbase", {NULL}, 1471, "udp"}, {"csdm", {NULL}, 1472, "tcp"}, {"csdm", {NULL}, 1472, "udp"}, {"openmath", {NULL}, 1473, "tcp"}, {"openmath", {NULL}, 1473, "udp"}, {"telefinder", {NULL}, 1474, "tcp"}, {"telefinder", {NULL}, 1474, "udp"}, {"taligent-lm", {NULL}, 1475, "tcp"}, {"taligent-lm", {NULL}, 1475, "udp"}, {"clvm-cfg", {NULL}, 1476, "tcp"}, {"clvm-cfg", {NULL}, 1476, "udp"}, {"ms-sna-server", {NULL}, 1477, "tcp"}, {"ms-sna-server", {NULL}, 1477, "udp"}, {"ms-sna-base", {NULL}, 1478, "tcp"}, {"ms-sna-base", {NULL}, 1478, "udp"}, {"dberegister", {NULL}, 1479, "tcp"}, {"dberegister", {NULL}, 1479, "udp"}, {"pacerforum", {NULL}, 1480, "tcp"}, {"pacerforum", {NULL}, 1480, "udp"}, {"airs", {NULL}, 1481, "tcp"}, {"airs", {NULL}, 1481, "udp"}, {"miteksys-lm", {NULL}, 1482, "tcp"}, {"miteksys-lm", {NULL}, 1482, "udp"}, {"afs", {NULL}, 1483, "tcp"}, {"afs", {NULL}, 1483, "udp"}, {"confluent", {NULL}, 1484, "tcp"}, {"confluent", {NULL}, 1484, "udp"}, {"lansource", {NULL}, 1485, "tcp"}, {"lansource", {NULL}, 1485, "udp"}, {"nms_topo_serv", {NULL}, 1486, "tcp"}, {"nms_topo_serv", {NULL}, 1486, "udp"}, {"localinfosrvr", {NULL}, 1487, "tcp"}, {"localinfosrvr", {NULL}, 1487, "udp"}, {"docstor", {NULL}, 1488, "tcp"}, {"docstor", {NULL}, 1488, "udp"}, {"dmdocbroker", {NULL}, 1489, "tcp"}, {"dmdocbroker", {NULL}, 1489, "udp"}, {"insitu-conf", {NULL}, 1490, "tcp"}, {"insitu-conf", {NULL}, 1490, "udp"}, {"stone-design-1", {NULL}, 1492, "tcp"}, {"stone-design-1", {NULL}, 1492, "udp"}, {"netmap_lm", {NULL}, 1493, "tcp"}, {"netmap_lm", {NULL}, 1493, "udp"}, {"ica", {NULL}, 1494, "tcp"}, {"ica", {NULL}, 1494, "udp"}, {"cvc", {NULL}, 1495, "tcp"}, {"cvc", {NULL}, 1495, "udp"}, {"liberty-lm", {NULL}, 1496, "tcp"}, {"liberty-lm", {NULL}, 1496, "udp"}, {"rfx-lm", {NULL}, 1497, "tcp"}, {"rfx-lm", {NULL}, 1497, "udp"}, {"sybase-sqlany", {NULL}, 1498, "tcp"}, {"sybase-sqlany", {NULL}, 1498, "udp"}, {"fhc", {NULL}, 1499, "tcp"}, {"fhc", {NULL}, 1499, "udp"}, {"vlsi-lm", {NULL}, 1500, "tcp"}, {"vlsi-lm", {NULL}, 1500, "udp"}, {"saiscm", {NULL}, 1501, "tcp"}, {"saiscm", {NULL}, 1501, "udp"}, {"shivadiscovery", {NULL}, 1502, "tcp"}, {"shivadiscovery", {NULL}, 1502, "udp"}, {"imtc-mcs", {NULL}, 1503, "tcp"}, {"imtc-mcs", {NULL}, 1503, "udp"}, {"evb-elm", {NULL}, 1504, "tcp"}, {"evb-elm", {NULL}, 1504, "udp"}, {"funkproxy", {NULL}, 1505, "tcp"}, {"funkproxy", {NULL}, 1505, "udp"}, {"utcd", {NULL}, 1506, "tcp"}, {"utcd", {NULL}, 1506, "udp"}, {"symplex", {NULL}, 1507, "tcp"}, {"symplex", {NULL}, 1507, "udp"}, {"diagmond", {NULL}, 1508, "tcp"}, {"diagmond", {NULL}, 1508, "udp"}, {"robcad-lm", {NULL}, 1509, "tcp"}, {"robcad-lm", {NULL}, 1509, "udp"}, {"mvx-lm", {NULL}, 1510, "tcp"}, {"mvx-lm", {NULL}, 1510, "udp"}, {"3l-l1", {NULL}, 1511, "tcp"}, {"3l-l1", {NULL}, 1511, "udp"}, {"wins", {NULL}, 1512, "tcp"}, {"wins", {NULL}, 1512, "udp"}, {"fujitsu-dtc", {NULL}, 1513, "tcp"}, {"fujitsu-dtc", {NULL}, 1513, "udp"}, {"fujitsu-dtcns", {NULL}, 1514, "tcp"}, {"fujitsu-dtcns", {NULL}, 1514, "udp"}, {"ifor-protocol", {NULL}, 1515, "tcp"}, {"ifor-protocol", {NULL}, 1515, "udp"}, {"vpad", {NULL}, 1516, "tcp"}, {"vpad", {NULL}, 1516, "udp"}, {"vpac", {NULL}, 1517, "tcp"}, {"vpac", {NULL}, 1517, "udp"}, {"vpvd", {NULL}, 1518, "tcp"}, {"vpvd", {NULL}, 1518, "udp"}, {"vpvc", {NULL}, 1519, "tcp"}, {"vpvc", {NULL}, 1519, "udp"}, {"atm-zip-office", {NULL}, 1520, "tcp"}, {"atm-zip-office", {NULL}, 1520, "udp"}, {"ncube-lm", {NULL}, 1521, "tcp"}, {"ncube-lm", {NULL}, 1521, "udp"}, {"ricardo-lm", {NULL}, 1522, "tcp"}, {"ricardo-lm", {NULL}, 1522, "udp"}, {"cichild-lm", {NULL}, 1523, "tcp"}, {"cichild-lm", {NULL}, 1523, "udp"}, {"ingreslock", {NULL}, 1524, "tcp"}, {"ingreslock", {NULL}, 1524, "udp"}, {"orasrv", {NULL}, 1525, "tcp"}, {"orasrv", {NULL}, 1525, "udp"}, {"prospero-np", {NULL}, 1525, "tcp"}, {"prospero-np", {NULL}, 1525, "udp"}, {"pdap-np", {NULL}, 1526, "tcp"}, {"pdap-np", {NULL}, 1526, "udp"}, {"tlisrv", {NULL}, 1527, "tcp"}, {"tlisrv", {NULL}, 1527, "udp"}, {"coauthor", {NULL}, 1529, "tcp"}, {"coauthor", {NULL}, 1529, "udp"}, {"rap-service", {NULL}, 1530, "tcp"}, {"rap-service", {NULL}, 1530, "udp"}, {"rap-listen", {NULL}, 1531, "tcp"}, {"rap-listen", {NULL}, 1531, "udp"}, {"miroconnect", {NULL}, 1532, "tcp"}, {"miroconnect", {NULL}, 1532, "udp"}, {"virtual-places", {NULL}, 1533, "tcp"}, {"virtual-places", {NULL}, 1533, "udp"}, {"micromuse-lm", {NULL}, 1534, "tcp"}, {"micromuse-lm", {NULL}, 1534, "udp"}, {"ampr-info", {NULL}, 1535, "tcp"}, {"ampr-info", {NULL}, 1535, "udp"}, {"ampr-inter", {NULL}, 1536, "tcp"}, {"ampr-inter", {NULL}, 1536, "udp"}, {"sdsc-lm", {NULL}, 1537, "tcp"}, {"sdsc-lm", {NULL}, 1537, "udp"}, {"3ds-lm", {NULL}, 1538, "tcp"}, {"3ds-lm", {NULL}, 1538, "udp"}, {"intellistor-lm", {NULL}, 1539, "tcp"}, {"intellistor-lm", {NULL}, 1539, "udp"}, {"rds", {NULL}, 1540, "tcp"}, {"rds", {NULL}, 1540, "udp"}, {"rds2", {NULL}, 1541, "tcp"}, {"rds2", {NULL}, 1541, "udp"}, {"gridgen-elmd", {NULL}, 1542, "tcp"}, {"gridgen-elmd", {NULL}, 1542, "udp"}, {"simba-cs", {NULL}, 1543, "tcp"}, {"simba-cs", {NULL}, 1543, "udp"}, {"aspeclmd", {NULL}, 1544, "tcp"}, {"aspeclmd", {NULL}, 1544, "udp"}, {"vistium-share", {NULL}, 1545, "tcp"}, {"vistium-share", {NULL}, 1545, "udp"}, {"abbaccuray", {NULL}, 1546, "tcp"}, {"abbaccuray", {NULL}, 1546, "udp"}, {"laplink", {NULL}, 1547, "tcp"}, {"laplink", {NULL}, 1547, "udp"}, {"axon-lm", {NULL}, 1548, "tcp"}, {"axon-lm", {NULL}, 1548, "udp"}, {"shivahose", {NULL}, 1549, "tcp"}, {"shivasound", {NULL}, 1549, "udp"}, {"3m-image-lm", {NULL}, 1550, "tcp"}, {"3m-image-lm", {NULL}, 1550, "udp"}, {"hecmtl-db", {NULL}, 1551, "tcp"}, {"hecmtl-db", {NULL}, 1551, "udp"}, {"pciarray", {NULL}, 1552, "tcp"}, {"pciarray", {NULL}, 1552, "udp"}, {"sna-cs", {NULL}, 1553, "tcp"}, {"sna-cs", {NULL}, 1553, "udp"}, {"caci-lm", {NULL}, 1554, "tcp"}, {"caci-lm", {NULL}, 1554, "udp"}, {"livelan", {NULL}, 1555, "tcp"}, {"livelan", {NULL}, 1555, "udp"}, {"veritas_pbx", {NULL}, 1556, "tcp"}, {"veritas_pbx", {NULL}, 1556, "udp"}, {"arbortext-lm", {NULL}, 1557, "tcp"}, {"arbortext-lm", {NULL}, 1557, "udp"}, {"xingmpeg", {NULL}, 1558, "tcp"}, {"xingmpeg", {NULL}, 1558, "udp"}, {"web2host", {NULL}, 1559, "tcp"}, {"web2host", {NULL}, 1559, "udp"}, {"asci-val", {NULL}, 1560, "tcp"}, {"asci-val", {NULL}, 1560, "udp"}, {"facilityview", {NULL}, 1561, "tcp"}, {"facilityview", {NULL}, 1561, "udp"}, {"pconnectmgr", {NULL}, 1562, "tcp"}, {"pconnectmgr", {NULL}, 1562, "udp"}, {"cadabra-lm", {NULL}, 1563, "tcp"}, {"cadabra-lm", {NULL}, 1563, "udp"}, {"pay-per-view", {NULL}, 1564, "tcp"}, {"pay-per-view", {NULL}, 1564, "udp"}, {"winddlb", {NULL}, 1565, "tcp"}, {"winddlb", {NULL}, 1565, "udp"}, {"corelvideo", {NULL}, 1566, "tcp"}, {"corelvideo", {NULL}, 1566, "udp"}, {"jlicelmd", {NULL}, 1567, "tcp"}, {"jlicelmd", {NULL}, 1567, "udp"}, {"tsspmap", {NULL}, 1568, "tcp"}, {"tsspmap", {NULL}, 1568, "udp"}, {"ets", {NULL}, 1569, "tcp"}, {"ets", {NULL}, 1569, "udp"}, {"orbixd", {NULL}, 1570, "tcp"}, {"orbixd", {NULL}, 1570, "udp"}, {"rdb-dbs-disp", {NULL}, 1571, "tcp"}, {"rdb-dbs-disp", {NULL}, 1571, "udp"}, {"chip-lm", {NULL}, 1572, "tcp"}, {"chip-lm", {NULL}, 1572, "udp"}, {"itscomm-ns", {NULL}, 1573, "tcp"}, {"itscomm-ns", {NULL}, 1573, "udp"}, {"mvel-lm", {NULL}, 1574, "tcp"}, {"mvel-lm", {NULL}, 1574, "udp"}, {"oraclenames", {NULL}, 1575, "tcp"}, {"oraclenames", {NULL}, 1575, "udp"}, {"moldflow-lm", {NULL}, 1576, "tcp"}, {"moldflow-lm", {NULL}, 1576, "udp"}, {"hypercube-lm", {NULL}, 1577, "tcp"}, {"hypercube-lm", {NULL}, 1577, "udp"}, {"jacobus-lm", {NULL}, 1578, "tcp"}, {"jacobus-lm", {NULL}, 1578, "udp"}, {"ioc-sea-lm", {NULL}, 1579, "tcp"}, {"ioc-sea-lm", {NULL}, 1579, "udp"}, {"tn-tl-r1", {NULL}, 1580, "tcp"}, {"tn-tl-r2", {NULL}, 1580, "udp"}, {"mil-2045-47001", {NULL}, 1581, "tcp"}, {"mil-2045-47001", {NULL}, 1581, "udp"}, {"msims", {NULL}, 1582, "tcp"}, {"msims", {NULL}, 1582, "udp"}, {"simbaexpress", {NULL}, 1583, "tcp"}, {"simbaexpress", {NULL}, 1583, "udp"}, {"tn-tl-fd2", {NULL}, 1584, "tcp"}, {"tn-tl-fd2", {NULL}, 1584, "udp"}, {"intv", {NULL}, 1585, "tcp"}, {"intv", {NULL}, 1585, "udp"}, {"ibm-abtact", {NULL}, 1586, "tcp"}, {"ibm-abtact", {NULL}, 1586, "udp"}, {"pra_elmd", {NULL}, 1587, "tcp"}, {"pra_elmd", {NULL}, 1587, "udp"}, {"triquest-lm", {NULL}, 1588, "tcp"}, {"triquest-lm", {NULL}, 1588, "udp"}, {"vqp", {NULL}, 1589, "tcp"}, {"vqp", {NULL}, 1589, "udp"}, {"gemini-lm", {NULL}, 1590, "tcp"}, {"gemini-lm", {NULL}, 1590, "udp"}, {"ncpm-pm", {NULL}, 1591, "tcp"}, {"ncpm-pm", {NULL}, 1591, "udp"}, {"commonspace", {NULL}, 1592, "tcp"}, {"commonspace", {NULL}, 1592, "udp"}, {"mainsoft-lm", {NULL}, 1593, "tcp"}, {"mainsoft-lm", {NULL}, 1593, "udp"}, {"sixtrak", {NULL}, 1594, "tcp"}, {"sixtrak", {NULL}, 1594, "udp"}, {"radio", {NULL}, 1595, "tcp"}, {"radio", {NULL}, 1595, "udp"}, {"radio-sm", {NULL}, 1596, "tcp"}, {"radio-bc", {NULL}, 1596, "udp"}, {"orbplus-iiop", {NULL}, 1597, "tcp"}, {"orbplus-iiop", {NULL}, 1597, "udp"}, {"picknfs", {NULL}, 1598, "tcp"}, {"picknfs", {NULL}, 1598, "udp"}, {"simbaservices", {NULL}, 1599, "tcp"}, {"simbaservices", {NULL}, 1599, "udp"}, {"issd", {NULL}, 1600, "tcp"}, {"issd", {NULL}, 1600, "udp"}, {"aas", {NULL}, 1601, "tcp"}, {"aas", {NULL}, 1601, "udp"}, {"inspect", {NULL}, 1602, "tcp"}, {"inspect", {NULL}, 1602, "udp"}, {"picodbc", {NULL}, 1603, "tcp"}, {"picodbc", {NULL}, 1603, "udp"}, {"icabrowser", {NULL}, 1604, "tcp"}, {"icabrowser", {NULL}, 1604, "udp"}, {"slp", {NULL}, 1605, "tcp"}, {"slp", {NULL}, 1605, "udp"}, {"slm-api", {NULL}, 1606, "tcp"}, {"slm-api", {NULL}, 1606, "udp"}, {"stt", {NULL}, 1607, "tcp"}, {"stt", {NULL}, 1607, "udp"}, {"smart-lm", {NULL}, 1608, "tcp"}, {"smart-lm", {NULL}, 1608, "udp"}, {"isysg-lm", {NULL}, 1609, "tcp"}, {"isysg-lm", {NULL}, 1609, "udp"}, {"taurus-wh", {NULL}, 1610, "tcp"}, {"taurus-wh", {NULL}, 1610, "udp"}, {"ill", {NULL}, 1611, "tcp"}, {"ill", {NULL}, 1611, "udp"}, {"netbill-trans", {NULL}, 1612, "tcp"}, {"netbill-trans", {NULL}, 1612, "udp"}, {"netbill-keyrep", {NULL}, 1613, "tcp"}, {"netbill-keyrep", {NULL}, 1613, "udp"}, {"netbill-cred", {NULL}, 1614, "tcp"}, {"netbill-cred", {NULL}, 1614, "udp"}, {"netbill-auth", {NULL}, 1615, "tcp"}, {"netbill-auth", {NULL}, 1615, "udp"}, {"netbill-prod", {NULL}, 1616, "tcp"}, {"netbill-prod", {NULL}, 1616, "udp"}, {"nimrod-agent", {NULL}, 1617, "tcp"}, {"nimrod-agent", {NULL}, 1617, "udp"}, {"skytelnet", {NULL}, 1618, "tcp"}, {"skytelnet", {NULL}, 1618, "udp"}, {"xs-openstorage", {NULL}, 1619, "tcp"}, {"xs-openstorage", {NULL}, 1619, "udp"}, {"faxportwinport", {NULL}, 1620, "tcp"}, {"faxportwinport", {NULL}, 1620, "udp"}, {"softdataphone", {NULL}, 1621, "tcp"}, {"softdataphone", {NULL}, 1621, "udp"}, {"ontime", {NULL}, 1622, "tcp"}, {"ontime", {NULL}, 1622, "udp"}, {"jaleosnd", {NULL}, 1623, "tcp"}, {"jaleosnd", {NULL}, 1623, "udp"}, {"udp-sr-port", {NULL}, 1624, "tcp"}, {"udp-sr-port", {NULL}, 1624, "udp"}, {"svs-omagent", {NULL}, 1625, "tcp"}, {"svs-omagent", {NULL}, 1625, "udp"}, {"shockwave", {NULL}, 1626, "tcp"}, {"shockwave", {NULL}, 1626, "udp"}, {"t128-gateway", {NULL}, 1627, "tcp"}, {"t128-gateway", {NULL}, 1627, "udp"}, {"lontalk-norm", {NULL}, 1628, "tcp"}, {"lontalk-norm", {NULL}, 1628, "udp"}, {"lontalk-urgnt", {NULL}, 1629, "tcp"}, {"lontalk-urgnt", {NULL}, 1629, "udp"}, {"oraclenet8cman", {NULL}, 1630, "tcp"}, {"oraclenet8cman", {NULL}, 1630, "udp"}, {"visitview", {NULL}, 1631, "tcp"}, {"visitview", {NULL}, 1631, "udp"}, {"pammratc", {NULL}, 1632, "tcp"}, {"pammratc", {NULL}, 1632, "udp"}, {"pammrpc", {NULL}, 1633, "tcp"}, {"pammrpc", {NULL}, 1633, "udp"}, {"loaprobe", {NULL}, 1634, "tcp"}, {"loaprobe", {NULL}, 1634, "udp"}, {"edb-server1", {NULL}, 1635, "tcp"}, {"edb-server1", {NULL}, 1635, "udp"}, {"isdc", {NULL}, 1636, "tcp"}, {"isdc", {NULL}, 1636, "udp"}, {"islc", {NULL}, 1637, "tcp"}, {"islc", {NULL}, 1637, "udp"}, {"ismc", {NULL}, 1638, "tcp"}, {"ismc", {NULL}, 1638, "udp"}, {"cert-initiator", {NULL}, 1639, "tcp"}, {"cert-initiator", {NULL}, 1639, "udp"}, {"cert-responder", {NULL}, 1640, "tcp"}, {"cert-responder", {NULL}, 1640, "udp"}, {"invision", {NULL}, 1641, "tcp"}, {"invision", {NULL}, 1641, "udp"}, {"isis-am", {NULL}, 1642, "tcp"}, {"isis-am", {NULL}, 1642, "udp"}, {"isis-ambc", {NULL}, 1643, "tcp"}, {"isis-ambc", {NULL}, 1643, "udp"}, {"saiseh", {NULL}, 1644, "tcp"}, {"sightline", {NULL}, 1645, "tcp"}, {"sightline", {NULL}, 1645, "udp"}, {"sa-msg-port", {NULL}, 1646, "tcp"}, {"sa-msg-port", {NULL}, 1646, "udp"}, {"rsap", {NULL}, 1647, "tcp"}, {"rsap", {NULL}, 1647, "udp"}, {"concurrent-lm", {NULL}, 1648, "tcp"}, {"concurrent-lm", {NULL}, 1648, "udp"}, {"kermit", {NULL}, 1649, "tcp"}, {"kermit", {NULL}, 1649, "udp"}, {"nkd", {NULL}, 1650, "tcp"}, {"nkd", {NULL}, 1650, "udp"}, {"shiva_confsrvr", {NULL}, 1651, "tcp"}, {"shiva_confsrvr", {NULL}, 1651, "udp"}, {"xnmp", {NULL}, 1652, "tcp"}, {"xnmp", {NULL}, 1652, "udp"}, {"alphatech-lm", {NULL}, 1653, "tcp"}, {"alphatech-lm", {NULL}, 1653, "udp"}, {"stargatealerts", {NULL}, 1654, "tcp"}, {"stargatealerts", {NULL}, 1654, "udp"}, {"dec-mbadmin", {NULL}, 1655, "tcp"}, {"dec-mbadmin", {NULL}, 1655, "udp"}, {"dec-mbadmin-h", {NULL}, 1656, "tcp"}, {"dec-mbadmin-h", {NULL}, 1656, "udp"}, {"fujitsu-mmpdc", {NULL}, 1657, "tcp"}, {"fujitsu-mmpdc", {NULL}, 1657, "udp"}, {"sixnetudr", {NULL}, 1658, "tcp"}, {"sixnetudr", {NULL}, 1658, "udp"}, {"sg-lm", {NULL}, 1659, "tcp"}, {"sg-lm", {NULL}, 1659, "udp"}, {"skip-mc-gikreq", {NULL}, 1660, "tcp"}, {"skip-mc-gikreq", {NULL}, 1660, "udp"}, {"netview-aix-1", {NULL}, 1661, "tcp"}, {"netview-aix-1", {NULL}, 1661, "udp"}, {"netview-aix-2", {NULL}, 1662, "tcp"}, {"netview-aix-2", {NULL}, 1662, "udp"}, {"netview-aix-3", {NULL}, 1663, "tcp"}, {"netview-aix-3", {NULL}, 1663, "udp"}, {"netview-aix-4", {NULL}, 1664, "tcp"}, {"netview-aix-4", {NULL}, 1664, "udp"}, {"netview-aix-5", {NULL}, 1665, "tcp"}, {"netview-aix-5", {NULL}, 1665, "udp"}, {"netview-aix-6", {NULL}, 1666, "tcp"}, {"netview-aix-6", {NULL}, 1666, "udp"}, {"netview-aix-7", {NULL}, 1667, "tcp"}, {"netview-aix-7", {NULL}, 1667, "udp"}, {"netview-aix-8", {NULL}, 1668, "tcp"}, {"netview-aix-8", {NULL}, 1668, "udp"}, {"netview-aix-9", {NULL}, 1669, "tcp"}, {"netview-aix-9", {NULL}, 1669, "udp"}, {"netview-aix-10", {NULL}, 1670, "tcp"}, {"netview-aix-10", {NULL}, 1670, "udp"}, {"netview-aix-11", {NULL}, 1671, "tcp"}, {"netview-aix-11", {NULL}, 1671, "udp"}, {"netview-aix-12", {NULL}, 1672, "tcp"}, {"netview-aix-12", {NULL}, 1672, "udp"}, {"proshare-mc-1", {NULL}, 1673, "tcp"}, {"proshare-mc-1", {NULL}, 1673, "udp"}, {"proshare-mc-2", {NULL}, 1674, "tcp"}, {"proshare-mc-2", {NULL}, 1674, "udp"}, {"pdp", {NULL}, 1675, "tcp"}, {"pdp", {NULL}, 1675, "udp"}, {"netcomm1", {NULL}, 1676, "tcp"}, {"netcomm2", {NULL}, 1676, "udp"}, {"groupwise", {NULL}, 1677, "tcp"}, {"groupwise", {NULL}, 1677, "udp"}, {"prolink", {NULL}, 1678, "tcp"}, {"prolink", {NULL}, 1678, "udp"}, {"darcorp-lm", {NULL}, 1679, "tcp"}, {"darcorp-lm", {NULL}, 1679, "udp"}, {"microcom-sbp", {NULL}, 1680, "tcp"}, {"microcom-sbp", {NULL}, 1680, "udp"}, {"sd-elmd", {NULL}, 1681, "tcp"}, {"sd-elmd", {NULL}, 1681, "udp"}, {"lanyon-lantern", {NULL}, 1682, "tcp"}, {"lanyon-lantern", {NULL}, 1682, "udp"}, {"ncpm-hip", {NULL}, 1683, "tcp"}, {"ncpm-hip", {NULL}, 1683, "udp"}, {"snaresecure", {NULL}, 1684, "tcp"}, {"snaresecure", {NULL}, 1684, "udp"}, {"n2nremote", {NULL}, 1685, "tcp"}, {"n2nremote", {NULL}, 1685, "udp"}, {"cvmon", {NULL}, 1686, "tcp"}, {"cvmon", {NULL}, 1686, "udp"}, {"nsjtp-ctrl", {NULL}, 1687, "tcp"}, {"nsjtp-ctrl", {NULL}, 1687, "udp"}, {"nsjtp-data", {NULL}, 1688, "tcp"}, {"nsjtp-data", {NULL}, 1688, "udp"}, {"firefox", {NULL}, 1689, "tcp"}, {"firefox", {NULL}, 1689, "udp"}, {"ng-umds", {NULL}, 1690, "tcp"}, {"ng-umds", {NULL}, 1690, "udp"}, {"empire-empuma", {NULL}, 1691, "tcp"}, {"empire-empuma", {NULL}, 1691, "udp"}, {"sstsys-lm", {NULL}, 1692, "tcp"}, {"sstsys-lm", {NULL}, 1692, "udp"}, {"rrirtr", {NULL}, 1693, "tcp"}, {"rrirtr", {NULL}, 1693, "udp"}, {"rrimwm", {NULL}, 1694, "tcp"}, {"rrimwm", {NULL}, 1694, "udp"}, {"rrilwm", {NULL}, 1695, "tcp"}, {"rrilwm", {NULL}, 1695, "udp"}, {"rrifmm", {NULL}, 1696, "tcp"}, {"rrifmm", {NULL}, 1696, "udp"}, {"rrisat", {NULL}, 1697, "tcp"}, {"rrisat", {NULL}, 1697, "udp"}, {"rsvp-encap-1", {NULL}, 1698, "tcp"}, {"rsvp-encap-1", {NULL}, 1698, "udp"}, {"rsvp-encap-2", {NULL}, 1699, "tcp"}, {"rsvp-encap-2", {NULL}, 1699, "udp"}, {"mps-raft", {NULL}, 1700, "tcp"}, {"mps-raft", {NULL}, 1700, "udp"}, {"l2f", {NULL}, 1701, "tcp"}, {"l2f", {NULL}, 1701, "udp"}, {"l2tp", {NULL}, 1701, "tcp"}, {"l2tp", {NULL}, 1701, "udp"}, {"deskshare", {NULL}, 1702, "tcp"}, {"deskshare", {NULL}, 1702, "udp"}, {"hb-engine", {NULL}, 1703, "tcp"}, {"hb-engine", {NULL}, 1703, "udp"}, {"bcs-broker", {NULL}, 1704, "tcp"}, {"bcs-broker", {NULL}, 1704, "udp"}, {"slingshot", {NULL}, 1705, "tcp"}, {"slingshot", {NULL}, 1705, "udp"}, {"jetform", {NULL}, 1706, "tcp"}, {"jetform", {NULL}, 1706, "udp"}, {"vdmplay", {NULL}, 1707, "tcp"}, {"vdmplay", {NULL}, 1707, "udp"}, {"gat-lmd", {NULL}, 1708, "tcp"}, {"gat-lmd", {NULL}, 1708, "udp"}, {"centra", {NULL}, 1709, "tcp"}, {"centra", {NULL}, 1709, "udp"}, {"impera", {NULL}, 1710, "tcp"}, {"impera", {NULL}, 1710, "udp"}, {"pptconference", {NULL}, 1711, "tcp"}, {"pptconference", {NULL}, 1711, "udp"}, {"registrar", {NULL}, 1712, "tcp"}, {"registrar", {NULL}, 1712, "udp"}, {"conferencetalk", {NULL}, 1713, "tcp"}, {"conferencetalk", {NULL}, 1713, "udp"}, {"sesi-lm", {NULL}, 1714, "tcp"}, {"sesi-lm", {NULL}, 1714, "udp"}, {"houdini-lm", {NULL}, 1715, "tcp"}, {"houdini-lm", {NULL}, 1715, "udp"}, {"xmsg", {NULL}, 1716, "tcp"}, {"xmsg", {NULL}, 1716, "udp"}, {"fj-hdnet", {NULL}, 1717, "tcp"}, {"fj-hdnet", {NULL}, 1717, "udp"}, {"h323gatedisc", {NULL}, 1718, "tcp"}, {"h323gatedisc", {NULL}, 1718, "udp"}, {"h323gatestat", {NULL}, 1719, "tcp"}, {"h323gatestat", {NULL}, 1719, "udp"}, {"h323hostcall", {NULL}, 1720, "tcp"}, {"h323hostcall", {NULL}, 1720, "udp"}, {"caicci", {NULL}, 1721, "tcp"}, {"caicci", {NULL}, 1721, "udp"}, {"hks-lm", {NULL}, 1722, "tcp"}, {"hks-lm", {NULL}, 1722, "udp"}, {"pptp", {NULL}, 1723, "tcp"}, {"pptp", {NULL}, 1723, "udp"}, {"csbphonemaster", {NULL}, 1724, "tcp"}, {"csbphonemaster", {NULL}, 1724, "udp"}, {"iden-ralp", {NULL}, 1725, "tcp"}, {"iden-ralp", {NULL}, 1725, "udp"}, {"iberiagames", {NULL}, 1726, "tcp"}, {"iberiagames", {NULL}, 1726, "udp"}, {"winddx", {NULL}, 1727, "tcp"}, {"winddx", {NULL}, 1727, "udp"}, {"telindus", {NULL}, 1728, "tcp"}, {"telindus", {NULL}, 1728, "udp"}, {"citynl", {NULL}, 1729, "tcp"}, {"citynl", {NULL}, 1729, "udp"}, {"roketz", {NULL}, 1730, "tcp"}, {"roketz", {NULL}, 1730, "udp"}, {"msiccp", {NULL}, 1731, "tcp"}, {"msiccp", {NULL}, 1731, "udp"}, {"proxim", {NULL}, 1732, "tcp"}, {"proxim", {NULL}, 1732, "udp"}, {"siipat", {NULL}, 1733, "tcp"}, {"siipat", {NULL}, 1733, "udp"}, {"cambertx-lm", {NULL}, 1734, "tcp"}, {"cambertx-lm", {NULL}, 1734, "udp"}, {"privatechat", {NULL}, 1735, "tcp"}, {"privatechat", {NULL}, 1735, "udp"}, {"street-stream", {NULL}, 1736, "tcp"}, {"street-stream", {NULL}, 1736, "udp"}, {"ultimad", {NULL}, 1737, "tcp"}, {"ultimad", {NULL}, 1737, "udp"}, {"gamegen1", {NULL}, 1738, "tcp"}, {"gamegen1", {NULL}, 1738, "udp"}, {"webaccess", {NULL}, 1739, "tcp"}, {"webaccess", {NULL}, 1739, "udp"}, {"encore", {NULL}, 1740, "tcp"}, {"encore", {NULL}, 1740, "udp"}, {"cisco-net-mgmt", {NULL}, 1741, "tcp"}, {"cisco-net-mgmt", {NULL}, 1741, "udp"}, {"3Com-nsd", {NULL}, 1742, "tcp"}, {"3Com-nsd", {NULL}, 1742, "udp"}, {"cinegrfx-lm", {NULL}, 1743, "tcp"}, {"cinegrfx-lm", {NULL}, 1743, "udp"}, {"ncpm-ft", {NULL}, 1744, "tcp"}, {"ncpm-ft", {NULL}, 1744, "udp"}, {"remote-winsock", {NULL}, 1745, "tcp"}, {"remote-winsock", {NULL}, 1745, "udp"}, {"ftrapid-1", {NULL}, 1746, "tcp"}, {"ftrapid-1", {NULL}, 1746, "udp"}, {"ftrapid-2", {NULL}, 1747, "tcp"}, {"ftrapid-2", {NULL}, 1747, "udp"}, {"oracle-em1", {NULL}, 1748, "tcp"}, {"oracle-em1", {NULL}, 1748, "udp"}, {"aspen-services", {NULL}, 1749, "tcp"}, {"aspen-services", {NULL}, 1749, "udp"}, {"sslp", {NULL}, 1750, "tcp"}, {"sslp", {NULL}, 1750, "udp"}, {"swiftnet", {NULL}, 1751, "tcp"}, {"swiftnet", {NULL}, 1751, "udp"}, {"lofr-lm", {NULL}, 1752, "tcp"}, {"lofr-lm", {NULL}, 1752, "udp"}, {"oracle-em2", {NULL}, 1754, "tcp"}, {"oracle-em2", {NULL}, 1754, "udp"}, {"ms-streaming", {NULL}, 1755, "tcp"}, {"ms-streaming", {NULL}, 1755, "udp"}, {"capfast-lmd", {NULL}, 1756, "tcp"}, {"capfast-lmd", {NULL}, 1756, "udp"}, {"cnhrp", {NULL}, 1757, "tcp"}, {"cnhrp", {NULL}, 1757, "udp"}, {"tftp-mcast", {NULL}, 1758, "tcp"}, {"tftp-mcast", {NULL}, 1758, "udp"}, {"spss-lm", {NULL}, 1759, "tcp"}, {"spss-lm", {NULL}, 1759, "udp"}, {"www-ldap-gw", {NULL}, 1760, "tcp"}, {"www-ldap-gw", {NULL}, 1760, "udp"}, {"cft-0", {NULL}, 1761, "tcp"}, {"cft-0", {NULL}, 1761, "udp"}, {"cft-1", {NULL}, 1762, "tcp"}, {"cft-1", {NULL}, 1762, "udp"}, {"cft-2", {NULL}, 1763, "tcp"}, {"cft-2", {NULL}, 1763, "udp"}, {"cft-3", {NULL}, 1764, "tcp"}, {"cft-3", {NULL}, 1764, "udp"}, {"cft-4", {NULL}, 1765, "tcp"}, {"cft-4", {NULL}, 1765, "udp"}, {"cft-5", {NULL}, 1766, "tcp"}, {"cft-5", {NULL}, 1766, "udp"}, {"cft-6", {NULL}, 1767, "tcp"}, {"cft-6", {NULL}, 1767, "udp"}, {"cft-7", {NULL}, 1768, "tcp"}, {"cft-7", {NULL}, 1768, "udp"}, {"bmc-net-adm", {NULL}, 1769, "tcp"}, {"bmc-net-adm", {NULL}, 1769, "udp"}, {"bmc-net-svc", {NULL}, 1770, "tcp"}, {"bmc-net-svc", {NULL}, 1770, "udp"}, {"vaultbase", {NULL}, 1771, "tcp"}, {"vaultbase", {NULL}, 1771, "udp"}, {"essweb-gw", {NULL}, 1772, "tcp"}, {"essweb-gw", {NULL}, 1772, "udp"}, {"kmscontrol", {NULL}, 1773, "tcp"}, {"kmscontrol", {NULL}, 1773, "udp"}, {"global-dtserv", {NULL}, 1774, "tcp"}, {"global-dtserv", {NULL}, 1774, "udp"}, {"femis", {NULL}, 1776, "tcp"}, {"femis", {NULL}, 1776, "udp"}, {"powerguardian", {NULL}, 1777, "tcp"}, {"powerguardian", {NULL}, 1777, "udp"}, {"prodigy-intrnet", {NULL}, 1778, "tcp"}, {"prodigy-intrnet", {NULL}, 1778, "udp"}, {"pharmasoft", {NULL}, 1779, "tcp"}, {"pharmasoft", {NULL}, 1779, "udp"}, {"dpkeyserv", {NULL}, 1780, "tcp"}, {"dpkeyserv", {NULL}, 1780, "udp"}, {"answersoft-lm", {NULL}, 1781, "tcp"}, {"answersoft-lm", {NULL}, 1781, "udp"}, {"hp-hcip", {NULL}, 1782, "tcp"}, {"hp-hcip", {NULL}, 1782, "udp"}, {"finle-lm", {NULL}, 1784, "tcp"}, {"finle-lm", {NULL}, 1784, "udp"}, {"windlm", {NULL}, 1785, "tcp"}, {"windlm", {NULL}, 1785, "udp"}, {"funk-logger", {NULL}, 1786, "tcp"}, {"funk-logger", {NULL}, 1786, "udp"}, {"funk-license", {NULL}, 1787, "tcp"}, {"funk-license", {NULL}, 1787, "udp"}, {"psmond", {NULL}, 1788, "tcp"}, {"psmond", {NULL}, 1788, "udp"}, {"hello", {NULL}, 1789, "tcp"}, {"hello", {NULL}, 1789, "udp"}, {"nmsp", {NULL}, 1790, "tcp"}, {"nmsp", {NULL}, 1790, "udp"}, {"ea1", {NULL}, 1791, "tcp"}, {"ea1", {NULL}, 1791, "udp"}, {"ibm-dt-2", {NULL}, 1792, "tcp"}, {"ibm-dt-2", {NULL}, 1792, "udp"}, {"rsc-robot", {NULL}, 1793, "tcp"}, {"rsc-robot", {NULL}, 1793, "udp"}, {"cera-bcm", {NULL}, 1794, "tcp"}, {"cera-bcm", {NULL}, 1794, "udp"}, {"dpi-proxy", {NULL}, 1795, "tcp"}, {"dpi-proxy", {NULL}, 1795, "udp"}, {"vocaltec-admin", {NULL}, 1796, "tcp"}, {"vocaltec-admin", {NULL}, 1796, "udp"}, {"uma", {NULL}, 1797, "tcp"}, {"uma", {NULL}, 1797, "udp"}, {"etp", {NULL}, 1798, "tcp"}, {"etp", {NULL}, 1798, "udp"}, {"netrisk", {NULL}, 1799, "tcp"}, {"netrisk", {NULL}, 1799, "udp"}, {"ansys-lm", {NULL}, 1800, "tcp"}, {"ansys-lm", {NULL}, 1800, "udp"}, {"msmq", {NULL}, 1801, "tcp"}, {"msmq", {NULL}, 1801, "udp"}, {"concomp1", {NULL}, 1802, "tcp"}, {"concomp1", {NULL}, 1802, "udp"}, {"hp-hcip-gwy", {NULL}, 1803, "tcp"}, {"hp-hcip-gwy", {NULL}, 1803, "udp"}, {"enl", {NULL}, 1804, "tcp"}, {"enl", {NULL}, 1804, "udp"}, {"enl-name", {NULL}, 1805, "tcp"}, {"enl-name", {NULL}, 1805, "udp"}, {"musiconline", {NULL}, 1806, "tcp"}, {"musiconline", {NULL}, 1806, "udp"}, {"fhsp", {NULL}, 1807, "tcp"}, {"fhsp", {NULL}, 1807, "udp"}, {"oracle-vp2", {NULL}, 1808, "tcp"}, {"oracle-vp2", {NULL}, 1808, "udp"}, {"oracle-vp1", {NULL}, 1809, "tcp"}, {"oracle-vp1", {NULL}, 1809, "udp"}, {"jerand-lm", {NULL}, 1810, "tcp"}, {"jerand-lm", {NULL}, 1810, "udp"}, {"scientia-sdb", {NULL}, 1811, "tcp"}, {"scientia-sdb", {NULL}, 1811, "udp"}, {"radius", {NULL}, 1812, "tcp"}, {"radius", {NULL}, 1812, "udp"}, {"radius-acct", {NULL}, 1813, "tcp"}, {"radius-acct", {NULL}, 1813, "udp"}, {"tdp-suite", {NULL}, 1814, "tcp"}, {"tdp-suite", {NULL}, 1814, "udp"}, {"mmpft", {NULL}, 1815, "tcp"}, {"mmpft", {NULL}, 1815, "udp"}, {"harp", {NULL}, 1816, "tcp"}, {"harp", {NULL}, 1816, "udp"}, {"rkb-oscs", {NULL}, 1817, "tcp"}, {"rkb-oscs", {NULL}, 1817, "udp"}, {"etftp", {NULL}, 1818, "tcp"}, {"etftp", {NULL}, 1818, "udp"}, {"plato-lm", {NULL}, 1819, "tcp"}, {"plato-lm", {NULL}, 1819, "udp"}, {"mcagent", {NULL}, 1820, "tcp"}, {"mcagent", {NULL}, 1820, "udp"}, {"donnyworld", {NULL}, 1821, "tcp"}, {"donnyworld", {NULL}, 1821, "udp"}, {"es-elmd", {NULL}, 1822, "tcp"}, {"es-elmd", {NULL}, 1822, "udp"}, {"unisys-lm", {NULL}, 1823, "tcp"}, {"unisys-lm", {NULL}, 1823, "udp"}, {"metrics-pas", {NULL}, 1824, "tcp"}, {"metrics-pas", {NULL}, 1824, "udp"}, {"direcpc-video", {NULL}, 1825, "tcp"}, {"direcpc-video", {NULL}, 1825, "udp"}, {"ardt", {NULL}, 1826, "tcp"}, {"ardt", {NULL}, 1826, "udp"}, {"asi", {NULL}, 1827, "tcp"}, {"asi", {NULL}, 1827, "udp"}, {"itm-mcell-u", {NULL}, 1828, "tcp"}, {"itm-mcell-u", {NULL}, 1828, "udp"}, {"optika-emedia", {NULL}, 1829, "tcp"}, {"optika-emedia", {NULL}, 1829, "udp"}, {"net8-cman", {NULL}, 1830, "tcp"}, {"net8-cman", {NULL}, 1830, "udp"}, {"myrtle", {NULL}, 1831, "tcp"}, {"myrtle", {NULL}, 1831, "udp"}, {"tht-treasure", {NULL}, 1832, "tcp"}, {"tht-treasure", {NULL}, 1832, "udp"}, {"udpradio", {NULL}, 1833, "tcp"}, {"udpradio", {NULL}, 1833, "udp"}, {"ardusuni", {NULL}, 1834, "tcp"}, {"ardusuni", {NULL}, 1834, "udp"}, {"ardusmul", {NULL}, 1835, "tcp"}, {"ardusmul", {NULL}, 1835, "udp"}, {"ste-smsc", {NULL}, 1836, "tcp"}, {"ste-smsc", {NULL}, 1836, "udp"}, {"csoft1", {NULL}, 1837, "tcp"}, {"csoft1", {NULL}, 1837, "udp"}, {"talnet", {NULL}, 1838, "tcp"}, {"talnet", {NULL}, 1838, "udp"}, {"netopia-vo1", {NULL}, 1839, "tcp"}, {"netopia-vo1", {NULL}, 1839, "udp"}, {"netopia-vo2", {NULL}, 1840, "tcp"}, {"netopia-vo2", {NULL}, 1840, "udp"}, {"netopia-vo3", {NULL}, 1841, "tcp"}, {"netopia-vo3", {NULL}, 1841, "udp"}, {"netopia-vo4", {NULL}, 1842, "tcp"}, {"netopia-vo4", {NULL}, 1842, "udp"}, {"netopia-vo5", {NULL}, 1843, "tcp"}, {"netopia-vo5", {NULL}, 1843, "udp"}, {"direcpc-dll", {NULL}, 1844, "tcp"}, {"direcpc-dll", {NULL}, 1844, "udp"}, {"altalink", {NULL}, 1845, "tcp"}, {"altalink", {NULL}, 1845, "udp"}, {"tunstall-pnc", {NULL}, 1846, "tcp"}, {"tunstall-pnc", {NULL}, 1846, "udp"}, {"slp-notify", {NULL}, 1847, "tcp"}, {"slp-notify", {NULL}, 1847, "udp"}, {"fjdocdist", {NULL}, 1848, "tcp"}, {"fjdocdist", {NULL}, 1848, "udp"}, {"alpha-sms", {NULL}, 1849, "tcp"}, {"alpha-sms", {NULL}, 1849, "udp"}, {"gsi", {NULL}, 1850, "tcp"}, {"gsi", {NULL}, 1850, "udp"}, {"ctcd", {NULL}, 1851, "tcp"}, {"ctcd", {NULL}, 1851, "udp"}, {"virtual-time", {NULL}, 1852, "tcp"}, {"virtual-time", {NULL}, 1852, "udp"}, {"vids-avtp", {NULL}, 1853, "tcp"}, {"vids-avtp", {NULL}, 1853, "udp"}, {"buddy-draw", {NULL}, 1854, "tcp"}, {"buddy-draw", {NULL}, 1854, "udp"}, {"fiorano-rtrsvc", {NULL}, 1855, "tcp"}, {"fiorano-rtrsvc", {NULL}, 1855, "udp"}, {"fiorano-msgsvc", {NULL}, 1856, "tcp"}, {"fiorano-msgsvc", {NULL}, 1856, "udp"}, {"datacaptor", {NULL}, 1857, "tcp"}, {"datacaptor", {NULL}, 1857, "udp"}, {"privateark", {NULL}, 1858, "tcp"}, {"privateark", {NULL}, 1858, "udp"}, {"gammafetchsvr", {NULL}, 1859, "tcp"}, {"gammafetchsvr", {NULL}, 1859, "udp"}, {"sunscalar-svc", {NULL}, 1860, "tcp"}, {"sunscalar-svc", {NULL}, 1860, "udp"}, {"lecroy-vicp", {NULL}, 1861, "tcp"}, {"lecroy-vicp", {NULL}, 1861, "udp"}, {"mysql-cm-agent", {NULL}, 1862, "tcp"}, {"mysql-cm-agent", {NULL}, 1862, "udp"}, {"msnp", {NULL}, 1863, "tcp"}, {"msnp", {NULL}, 1863, "udp"}, {"paradym-31port", {NULL}, 1864, "tcp"}, {"paradym-31port", {NULL}, 1864, "udp"}, {"entp", {NULL}, 1865, "tcp"}, {"entp", {NULL}, 1865, "udp"}, {"swrmi", {NULL}, 1866, "tcp"}, {"swrmi", {NULL}, 1866, "udp"}, {"udrive", {NULL}, 1867, "tcp"}, {"udrive", {NULL}, 1867, "udp"}, {"viziblebrowser", {NULL}, 1868, "tcp"}, {"viziblebrowser", {NULL}, 1868, "udp"}, {"transact", {NULL}, 1869, "tcp"}, {"transact", {NULL}, 1869, "udp"}, {"sunscalar-dns", {NULL}, 1870, "tcp"}, {"sunscalar-dns", {NULL}, 1870, "udp"}, {"canocentral0", {NULL}, 1871, "tcp"}, {"canocentral0", {NULL}, 1871, "udp"}, {"canocentral1", {NULL}, 1872, "tcp"}, {"canocentral1", {NULL}, 1872, "udp"}, {"fjmpjps", {NULL}, 1873, "tcp"}, {"fjmpjps", {NULL}, 1873, "udp"}, {"fjswapsnp", {NULL}, 1874, "tcp"}, {"fjswapsnp", {NULL}, 1874, "udp"}, {"westell-stats", {NULL}, 1875, "tcp"}, {"westell-stats", {NULL}, 1875, "udp"}, {"ewcappsrv", {NULL}, 1876, "tcp"}, {"ewcappsrv", {NULL}, 1876, "udp"}, {"hp-webqosdb", {NULL}, 1877, "tcp"}, {"hp-webqosdb", {NULL}, 1877, "udp"}, {"drmsmc", {NULL}, 1878, "tcp"}, {"drmsmc", {NULL}, 1878, "udp"}, {"nettgain-nms", {NULL}, 1879, "tcp"}, {"nettgain-nms", {NULL}, 1879, "udp"}, {"vsat-control", {NULL}, 1880, "tcp"}, {"vsat-control", {NULL}, 1880, "udp"}, {"ibm-mqseries2", {NULL}, 1881, "tcp"}, {"ibm-mqseries2", {NULL}, 1881, "udp"}, {"ecsqdmn", {NULL}, 1882, "tcp"}, {"ecsqdmn", {NULL}, 1882, "udp"}, {"ibm-mqisdp", {NULL}, 1883, "tcp"}, {"ibm-mqisdp", {NULL}, 1883, "udp"}, {"idmaps", {NULL}, 1884, "tcp"}, {"idmaps", {NULL}, 1884, "udp"}, {"vrtstrapserver", {NULL}, 1885, "tcp"}, {"vrtstrapserver", {NULL}, 1885, "udp"}, {"leoip", {NULL}, 1886, "tcp"}, {"leoip", {NULL}, 1886, "udp"}, {"filex-lport", {NULL}, 1887, "tcp"}, {"filex-lport", {NULL}, 1887, "udp"}, {"ncconfig", {NULL}, 1888, "tcp"}, {"ncconfig", {NULL}, 1888, "udp"}, {"unify-adapter", {NULL}, 1889, "tcp"}, {"unify-adapter", {NULL}, 1889, "udp"}, {"wilkenlistener", {NULL}, 1890, "tcp"}, {"wilkenlistener", {NULL}, 1890, "udp"}, {"childkey-notif", {NULL}, 1891, "tcp"}, {"childkey-notif", {NULL}, 1891, "udp"}, {"childkey-ctrl", {NULL}, 1892, "tcp"}, {"childkey-ctrl", {NULL}, 1892, "udp"}, {"elad", {NULL}, 1893, "tcp"}, {"elad", {NULL}, 1893, "udp"}, {"o2server-port", {NULL}, 1894, "tcp"}, {"o2server-port", {NULL}, 1894, "udp"}, {"b-novative-ls", {NULL}, 1896, "tcp"}, {"b-novative-ls", {NULL}, 1896, "udp"}, {"metaagent", {NULL}, 1897, "tcp"}, {"metaagent", {NULL}, 1897, "udp"}, {"cymtec-port", {NULL}, 1898, "tcp"}, {"cymtec-port", {NULL}, 1898, "udp"}, {"mc2studios", {NULL}, 1899, "tcp"}, {"mc2studios", {NULL}, 1899, "udp"}, {"ssdp", {NULL}, 1900, "tcp"}, {"ssdp", {NULL}, 1900, "udp"}, {"fjicl-tep-a", {NULL}, 1901, "tcp"}, {"fjicl-tep-a", {NULL}, 1901, "udp"}, {"fjicl-tep-b", {NULL}, 1902, "tcp"}, {"fjicl-tep-b", {NULL}, 1902, "udp"}, {"linkname", {NULL}, 1903, "tcp"}, {"linkname", {NULL}, 1903, "udp"}, {"fjicl-tep-c", {NULL}, 1904, "tcp"}, {"fjicl-tep-c", {NULL}, 1904, "udp"}, {"sugp", {NULL}, 1905, "tcp"}, {"sugp", {NULL}, 1905, "udp"}, {"tpmd", {NULL}, 1906, "tcp"}, {"tpmd", {NULL}, 1906, "udp"}, {"intrastar", {NULL}, 1907, "tcp"}, {"intrastar", {NULL}, 1907, "udp"}, {"dawn", {NULL}, 1908, "tcp"}, {"dawn", {NULL}, 1908, "udp"}, {"global-wlink", {NULL}, 1909, "tcp"}, {"global-wlink", {NULL}, 1909, "udp"}, {"ultrabac", {NULL}, 1910, "tcp"}, {"ultrabac", {NULL}, 1910, "udp"}, {"mtp", {NULL}, 1911, "tcp"}, {"mtp", {NULL}, 1911, "udp"}, {"rhp-iibp", {NULL}, 1912, "tcp"}, {"rhp-iibp", {NULL}, 1912, "udp"}, {"armadp", {NULL}, 1913, "tcp"}, {"armadp", {NULL}, 1913, "udp"}, {"elm-momentum", {NULL}, 1914, "tcp"}, {"elm-momentum", {NULL}, 1914, "udp"}, {"facelink", {NULL}, 1915, "tcp"}, {"facelink", {NULL}, 1915, "udp"}, {"persona", {NULL}, 1916, "tcp"}, {"persona", {NULL}, 1916, "udp"}, {"noagent", {NULL}, 1917, "tcp"}, {"noagent", {NULL}, 1917, "udp"}, {"can-nds", {NULL}, 1918, "tcp"}, {"can-nds", {NULL}, 1918, "udp"}, {"can-dch", {NULL}, 1919, "tcp"}, {"can-dch", {NULL}, 1919, "udp"}, {"can-ferret", {NULL}, 1920, "tcp"}, {"can-ferret", {NULL}, 1920, "udp"}, {"noadmin", {NULL}, 1921, "tcp"}, {"noadmin", {NULL}, 1921, "udp"}, {"tapestry", {NULL}, 1922, "tcp"}, {"tapestry", {NULL}, 1922, "udp"}, {"spice", {NULL}, 1923, "tcp"}, {"spice", {NULL}, 1923, "udp"}, {"xiip", {NULL}, 1924, "tcp"}, {"xiip", {NULL}, 1924, "udp"}, {"discovery-port", {NULL}, 1925, "tcp"}, {"discovery-port", {NULL}, 1925, "udp"}, {"egs", {NULL}, 1926, "tcp"}, {"egs", {NULL}, 1926, "udp"}, {"videte-cipc", {NULL}, 1927, "tcp"}, {"videte-cipc", {NULL}, 1927, "udp"}, {"emsd-port", {NULL}, 1928, "tcp"}, {"emsd-port", {NULL}, 1928, "udp"}, {"bandwiz-system", {NULL}, 1929, "tcp"}, {"bandwiz-system", {NULL}, 1929, "udp"}, {"driveappserver", {NULL}, 1930, "tcp"}, {"driveappserver", {NULL}, 1930, "udp"}, {"amdsched", {NULL}, 1931, "tcp"}, {"amdsched", {NULL}, 1931, "udp"}, {"ctt-broker", {NULL}, 1932, "tcp"}, {"ctt-broker", {NULL}, 1932, "udp"}, {"xmapi", {NULL}, 1933, "tcp"}, {"xmapi", {NULL}, 1933, "udp"}, {"xaapi", {NULL}, 1934, "tcp"}, {"xaapi", {NULL}, 1934, "udp"}, {"macromedia-fcs", {NULL}, 1935, "tcp"}, {"macromedia-fcs", {NULL}, 1935, "udp"}, {"jetcmeserver", {NULL}, 1936, "tcp"}, {"jetcmeserver", {NULL}, 1936, "udp"}, {"jwserver", {NULL}, 1937, "tcp"}, {"jwserver", {NULL}, 1937, "udp"}, {"jwclient", {NULL}, 1938, "tcp"}, {"jwclient", {NULL}, 1938, "udp"}, {"jvserver", {NULL}, 1939, "tcp"}, {"jvserver", {NULL}, 1939, "udp"}, {"jvclient", {NULL}, 1940, "tcp"}, {"jvclient", {NULL}, 1940, "udp"}, {"dic-aida", {NULL}, 1941, "tcp"}, {"dic-aida", {NULL}, 1941, "udp"}, {"res", {NULL}, 1942, "tcp"}, {"res", {NULL}, 1942, "udp"}, {"beeyond-media", {NULL}, 1943, "tcp"}, {"beeyond-media", {NULL}, 1943, "udp"}, {"close-combat", {NULL}, 1944, "tcp"}, {"close-combat", {NULL}, 1944, "udp"}, {"dialogic-elmd", {NULL}, 1945, "tcp"}, {"dialogic-elmd", {NULL}, 1945, "udp"}, {"tekpls", {NULL}, 1946, "tcp"}, {"tekpls", {NULL}, 1946, "udp"}, {"sentinelsrm", {NULL}, 1947, "tcp"}, {"sentinelsrm", {NULL}, 1947, "udp"}, {"eye2eye", {NULL}, 1948, "tcp"}, {"eye2eye", {NULL}, 1948, "udp"}, {"ismaeasdaqlive", {NULL}, 1949, "tcp"}, {"ismaeasdaqlive", {NULL}, 1949, "udp"}, {"ismaeasdaqtest", {NULL}, 1950, "tcp"}, {"ismaeasdaqtest", {NULL}, 1950, "udp"}, {"bcs-lmserver", {NULL}, 1951, "tcp"}, {"bcs-lmserver", {NULL}, 1951, "udp"}, {"mpnjsc", {NULL}, 1952, "tcp"}, {"mpnjsc", {NULL}, 1952, "udp"}, {"rapidbase", {NULL}, 1953, "tcp"}, {"rapidbase", {NULL}, 1953, "udp"}, {"abr-api", {NULL}, 1954, "tcp"}, {"abr-api", {NULL}, 1954, "udp"}, {"abr-secure", {NULL}, 1955, "tcp"}, {"abr-secure", {NULL}, 1955, "udp"}, {"vrtl-vmf-ds", {NULL}, 1956, "tcp"}, {"vrtl-vmf-ds", {NULL}, 1956, "udp"}, {"unix-status", {NULL}, 1957, "tcp"}, {"unix-status", {NULL}, 1957, "udp"}, {"dxadmind", {NULL}, 1958, "tcp"}, {"dxadmind", {NULL}, 1958, "udp"}, {"simp-all", {NULL}, 1959, "tcp"}, {"simp-all", {NULL}, 1959, "udp"}, {"nasmanager", {NULL}, 1960, "tcp"}, {"nasmanager", {NULL}, 1960, "udp"}, {"bts-appserver", {NULL}, 1961, "tcp"}, {"bts-appserver", {NULL}, 1961, "udp"}, {"biap-mp", {NULL}, 1962, "tcp"}, {"biap-mp", {NULL}, 1962, "udp"}, {"webmachine", {NULL}, 1963, "tcp"}, {"webmachine", {NULL}, 1963, "udp"}, {"solid-e-engine", {NULL}, 1964, "tcp"}, {"solid-e-engine", {NULL}, 1964, "udp"}, {"tivoli-npm", {NULL}, 1965, "tcp"}, {"tivoli-npm", {NULL}, 1965, "udp"}, {"slush", {NULL}, 1966, "tcp"}, {"slush", {NULL}, 1966, "udp"}, {"sns-quote", {NULL}, 1967, "tcp"}, {"sns-quote", {NULL}, 1967, "udp"}, {"lipsinc", {NULL}, 1968, "tcp"}, {"lipsinc", {NULL}, 1968, "udp"}, {"lipsinc1", {NULL}, 1969, "tcp"}, {"lipsinc1", {NULL}, 1969, "udp"}, {"netop-rc", {NULL}, 1970, "tcp"}, {"netop-rc", {NULL}, 1970, "udp"}, {"netop-school", {NULL}, 1971, "tcp"}, {"netop-school", {NULL}, 1971, "udp"}, {"intersys-cache", {NULL}, 1972, "tcp"}, {"intersys-cache", {NULL}, 1972, "udp"}, {"dlsrap", {NULL}, 1973, "tcp"}, {"dlsrap", {NULL}, 1973, "udp"}, {"drp", {NULL}, 1974, "tcp"}, {"drp", {NULL}, 1974, "udp"}, {"tcoflashagent", {NULL}, 1975, "tcp"}, {"tcoflashagent", {NULL}, 1975, "udp"}, {"tcoregagent", {NULL}, 1976, "tcp"}, {"tcoregagent", {NULL}, 1976, "udp"}, {"tcoaddressbook", {NULL}, 1977, "tcp"}, {"tcoaddressbook", {NULL}, 1977, "udp"}, {"unisql", {NULL}, 1978, "tcp"}, {"unisql", {NULL}, 1978, "udp"}, {"unisql-java", {NULL}, 1979, "tcp"}, {"unisql-java", {NULL}, 1979, "udp"}, {"pearldoc-xact", {NULL}, 1980, "tcp"}, {"pearldoc-xact", {NULL}, 1980, "udp"}, {"p2pq", {NULL}, 1981, "tcp"}, {"p2pq", {NULL}, 1981, "udp"}, {"estamp", {NULL}, 1982, "tcp"}, {"estamp", {NULL}, 1982, "udp"}, {"lhtp", {NULL}, 1983, "tcp"}, {"lhtp", {NULL}, 1983, "udp"}, {"bb", {NULL}, 1984, "tcp"}, {"bb", {NULL}, 1984, "udp"}, {"hsrp", {NULL}, 1985, "tcp"}, {"hsrp", {NULL}, 1985, "udp"}, {"licensedaemon", {NULL}, 1986, "tcp"}, {"licensedaemon", {NULL}, 1986, "udp"}, {"tr-rsrb-p1", {NULL}, 1987, "tcp"}, {"tr-rsrb-p1", {NULL}, 1987, "udp"}, {"tr-rsrb-p2", {NULL}, 1988, "tcp"}, {"tr-rsrb-p2", {NULL}, 1988, "udp"}, {"tr-rsrb-p3", {NULL}, 1989, "tcp"}, {"tr-rsrb-p3", {NULL}, 1989, "udp"}, {"mshnet", {NULL}, 1989, "tcp"}, {"mshnet", {NULL}, 1989, "udp"}, {"stun-p1", {NULL}, 1990, "tcp"}, {"stun-p1", {NULL}, 1990, "udp"}, {"stun-p2", {NULL}, 1991, "tcp"}, {"stun-p2", {NULL}, 1991, "udp"}, {"stun-p3", {NULL}, 1992, "tcp"}, {"stun-p3", {NULL}, 1992, "udp"}, {"ipsendmsg", {NULL}, 1992, "tcp"}, {"ipsendmsg", {NULL}, 1992, "udp"}, {"snmp-tcp-port", {NULL}, 1993, "tcp"}, {"snmp-tcp-port", {NULL}, 1993, "udp"}, {"stun-port", {NULL}, 1994, "tcp"}, {"stun-port", {NULL}, 1994, "udp"}, {"perf-port", {NULL}, 1995, "tcp"}, {"perf-port", {NULL}, 1995, "udp"}, {"tr-rsrb-port", {NULL}, 1996, "tcp"}, {"tr-rsrb-port", {NULL}, 1996, "udp"}, {"gdp-port", {NULL}, 1997, "tcp"}, {"gdp-port", {NULL}, 1997, "udp"}, {"x25-svc-port", {NULL}, 1998, "tcp"}, {"x25-svc-port", {NULL}, 1998, "udp"}, {"tcp-id-port", {NULL}, 1999, "tcp"}, {"tcp-id-port", {NULL}, 1999, "udp"}, {"cisco-sccp", {NULL}, 2000, "tcp"}, {"cisco-sccp", {NULL}, 2000, "udp"}, {"dc", {NULL}, 2001, "tcp"}, {"wizard", {NULL}, 2001, "udp"}, {"globe", {NULL}, 2002, "tcp"}, {"globe", {NULL}, 2002, "udp"}, {"brutus", {NULL}, 2003, "tcp"}, {"brutus", {NULL}, 2003, "udp"}, {"mailbox", {NULL}, 2004, "tcp"}, {"emce", {NULL}, 2004, "udp"}, {"berknet", {NULL}, 2005, "tcp"}, {"oracle", {NULL}, 2005, "udp"}, {"invokator", {NULL}, 2006, "tcp"}, {"raid-cd", {NULL}, 2006, "udp"}, {"dectalk", {NULL}, 2007, "tcp"}, {"raid-am", {NULL}, 2007, "udp"}, {"conf", {NULL}, 2008, "tcp"}, {"terminaldb", {NULL}, 2008, "udp"}, {"news", {NULL}, 2009, "tcp"}, {"whosockami", {NULL}, 2009, "udp"}, {"search", {NULL}, 2010, "tcp"}, {"pipe_server", {NULL}, 2010, "udp"}, {"raid-cc", {NULL}, 2011, "tcp"}, {"servserv", {NULL}, 2011, "udp"}, {"ttyinfo", {NULL}, 2012, "tcp"}, {"raid-ac", {NULL}, 2012, "udp"}, {"raid-am", {NULL}, 2013, "tcp"}, {"raid-cd", {NULL}, 2013, "udp"}, {"troff", {NULL}, 2014, "tcp"}, {"raid-sf", {NULL}, 2014, "udp"}, {"cypress", {NULL}, 2015, "tcp"}, {"raid-cs", {NULL}, 2015, "udp"}, {"bootserver", {NULL}, 2016, "tcp"}, {"bootserver", {NULL}, 2016, "udp"}, {"cypress-stat", {NULL}, 2017, "tcp"}, {"bootclient", {NULL}, 2017, "udp"}, {"terminaldb", {NULL}, 2018, "tcp"}, {"rellpack", {NULL}, 2018, "udp"}, {"whosockami", {NULL}, 2019, "tcp"}, {"about", {NULL}, 2019, "udp"}, {"xinupageserver", {NULL}, 2020, "tcp"}, {"xinupageserver", {NULL}, 2020, "udp"}, {"servexec", {NULL}, 2021, "tcp"}, {"xinuexpansion1", {NULL}, 2021, "udp"}, {"down", {NULL}, 2022, "tcp"}, {"xinuexpansion2", {NULL}, 2022, "udp"}, {"xinuexpansion3", {NULL}, 2023, "tcp"}, {"xinuexpansion3", {NULL}, 2023, "udp"}, {"xinuexpansion4", {NULL}, 2024, "tcp"}, {"xinuexpansion4", {NULL}, 2024, "udp"}, {"ellpack", {NULL}, 2025, "tcp"}, {"xribs", {NULL}, 2025, "udp"}, {"scrabble", {NULL}, 2026, "tcp"}, {"scrabble", {NULL}, 2026, "udp"}, {"shadowserver", {NULL}, 2027, "tcp"}, {"shadowserver", {NULL}, 2027, "udp"}, {"submitserver", {NULL}, 2028, "tcp"}, {"submitserver", {NULL}, 2028, "udp"}, {"hsrpv6", {NULL}, 2029, "tcp"}, {"hsrpv6", {NULL}, 2029, "udp"}, {"device2", {NULL}, 2030, "tcp"}, {"device2", {NULL}, 2030, "udp"}, {"mobrien-chat", {NULL}, 2031, "tcp"}, {"mobrien-chat", {NULL}, 2031, "udp"}, {"blackboard", {NULL}, 2032, "tcp"}, {"blackboard", {NULL}, 2032, "udp"}, {"glogger", {NULL}, 2033, "tcp"}, {"glogger", {NULL}, 2033, "udp"}, {"scoremgr", {NULL}, 2034, "tcp"}, {"scoremgr", {NULL}, 2034, "udp"}, {"imsldoc", {NULL}, 2035, "tcp"}, {"imsldoc", {NULL}, 2035, "udp"}, {"e-dpnet", {NULL}, 2036, "tcp"}, {"e-dpnet", {NULL}, 2036, "udp"}, {"applus", {NULL}, 2037, "tcp"}, {"applus", {NULL}, 2037, "udp"}, {"objectmanager", {NULL}, 2038, "tcp"}, {"objectmanager", {NULL}, 2038, "udp"}, {"prizma", {NULL}, 2039, "tcp"}, {"prizma", {NULL}, 2039, "udp"}, {"lam", {NULL}, 2040, "tcp"}, {"lam", {NULL}, 2040, "udp"}, {"interbase", {NULL}, 2041, "tcp"}, {"interbase", {NULL}, 2041, "udp"}, {"isis", {NULL}, 2042, "tcp"}, {"isis", {NULL}, 2042, "udp"}, {"isis-bcast", {NULL}, 2043, "tcp"}, {"isis-bcast", {NULL}, 2043, "udp"}, {"rimsl", {NULL}, 2044, "tcp"}, {"rimsl", {NULL}, 2044, "udp"}, {"cdfunc", {NULL}, 2045, "tcp"}, {"cdfunc", {NULL}, 2045, "udp"}, {"sdfunc", {NULL}, 2046, "tcp"}, {"sdfunc", {NULL}, 2046, "udp"}, {"dls", {NULL}, 2047, "tcp"}, {"dls", {NULL}, 2047, "udp"}, {"dls-monitor", {NULL}, 2048, "tcp"}, {"dls-monitor", {NULL}, 2048, "udp"}, {"shilp", {NULL}, 2049, "tcp"}, {"shilp", {NULL}, 2049, "udp"}, {"nfs", {NULL}, 2049, "tcp"}, {"nfs", {NULL}, 2049, "udp"}, {"nfs", {NULL}, 2049, "sctp"}, {"av-emb-config", {NULL}, 2050, "tcp"}, {"av-emb-config", {NULL}, 2050, "udp"}, {"epnsdp", {NULL}, 2051, "tcp"}, {"epnsdp", {NULL}, 2051, "udp"}, {"clearvisn", {NULL}, 2052, "tcp"}, {"clearvisn", {NULL}, 2052, "udp"}, {"lot105-ds-upd", {NULL}, 2053, "tcp"}, {"lot105-ds-upd", {NULL}, 2053, "udp"}, {"weblogin", {NULL}, 2054, "tcp"}, {"weblogin", {NULL}, 2054, "udp"}, {"iop", {NULL}, 2055, "tcp"}, {"iop", {NULL}, 2055, "udp"}, {"omnisky", {NULL}, 2056, "tcp"}, {"omnisky", {NULL}, 2056, "udp"}, {"rich-cp", {NULL}, 2057, "tcp"}, {"rich-cp", {NULL}, 2057, "udp"}, {"newwavesearch", {NULL}, 2058, "tcp"}, {"newwavesearch", {NULL}, 2058, "udp"}, {"bmc-messaging", {NULL}, 2059, "tcp"}, {"bmc-messaging", {NULL}, 2059, "udp"}, {"teleniumdaemon", {NULL}, 2060, "tcp"}, {"teleniumdaemon", {NULL}, 2060, "udp"}, {"netmount", {NULL}, 2061, "tcp"}, {"netmount", {NULL}, 2061, "udp"}, {"icg-swp", {NULL}, 2062, "tcp"}, {"icg-swp", {NULL}, 2062, "udp"}, {"icg-bridge", {NULL}, 2063, "tcp"}, {"icg-bridge", {NULL}, 2063, "udp"}, {"icg-iprelay", {NULL}, 2064, "tcp"}, {"icg-iprelay", {NULL}, 2064, "udp"}, {"dlsrpn", {NULL}, 2065, "tcp"}, {"dlsrpn", {NULL}, 2065, "udp"}, {"aura", {NULL}, 2066, "tcp"}, {"aura", {NULL}, 2066, "udp"}, {"dlswpn", {NULL}, 2067, "tcp"}, {"dlswpn", {NULL}, 2067, "udp"}, {"avauthsrvprtcl", {NULL}, 2068, "tcp"}, {"avauthsrvprtcl", {NULL}, 2068, "udp"}, {"event-port", {NULL}, 2069, "tcp"}, {"event-port", {NULL}, 2069, "udp"}, {"ah-esp-encap", {NULL}, 2070, "tcp"}, {"ah-esp-encap", {NULL}, 2070, "udp"}, {"acp-port", {NULL}, 2071, "tcp"}, {"acp-port", {NULL}, 2071, "udp"}, {"msync", {NULL}, 2072, "tcp"}, {"msync", {NULL}, 2072, "udp"}, {"gxs-data-port", {NULL}, 2073, "tcp"}, {"gxs-data-port", {NULL}, 2073, "udp"}, {"vrtl-vmf-sa", {NULL}, 2074, "tcp"}, {"vrtl-vmf-sa", {NULL}, 2074, "udp"}, {"newlixengine", {NULL}, 2075, "tcp"}, {"newlixengine", {NULL}, 2075, "udp"}, {"newlixconfig", {NULL}, 2076, "tcp"}, {"newlixconfig", {NULL}, 2076, "udp"}, {"tsrmagt", {NULL}, 2077, "tcp"}, {"tsrmagt", {NULL}, 2077, "udp"}, {"tpcsrvr", {NULL}, 2078, "tcp"}, {"tpcsrvr", {NULL}, 2078, "udp"}, {"idware-router", {NULL}, 2079, "tcp"}, {"idware-router", {NULL}, 2079, "udp"}, {"autodesk-nlm", {NULL}, 2080, "tcp"}, {"autodesk-nlm", {NULL}, 2080, "udp"}, {"kme-trap-port", {NULL}, 2081, "tcp"}, {"kme-trap-port", {NULL}, 2081, "udp"}, {"infowave", {NULL}, 2082, "tcp"}, {"infowave", {NULL}, 2082, "udp"}, {"radsec", {NULL}, 2083, "tcp"}, {"radsec", {NULL}, 2083, "udp"}, {"sunclustergeo", {NULL}, 2084, "tcp"}, {"sunclustergeo", {NULL}, 2084, "udp"}, {"ada-cip", {NULL}, 2085, "tcp"}, {"ada-cip", {NULL}, 2085, "udp"}, {"gnunet", {NULL}, 2086, "tcp"}, {"gnunet", {NULL}, 2086, "udp"}, {"eli", {NULL}, 2087, "tcp"}, {"eli", {NULL}, 2087, "udp"}, {"ip-blf", {NULL}, 2088, "tcp"}, {"ip-blf", {NULL}, 2088, "udp"}, {"sep", {NULL}, 2089, "tcp"}, {"sep", {NULL}, 2089, "udp"}, {"lrp", {NULL}, 2090, "tcp"}, {"lrp", {NULL}, 2090, "udp"}, {"prp", {NULL}, 2091, "tcp"}, {"prp", {NULL}, 2091, "udp"}, {"descent3", {NULL}, 2092, "tcp"}, {"descent3", {NULL}, 2092, "udp"}, {"nbx-cc", {NULL}, 2093, "tcp"}, {"nbx-cc", {NULL}, 2093, "udp"}, {"nbx-au", {NULL}, 2094, "tcp"}, {"nbx-au", {NULL}, 2094, "udp"}, {"nbx-ser", {NULL}, 2095, "tcp"}, {"nbx-ser", {NULL}, 2095, "udp"}, {"nbx-dir", {NULL}, 2096, "tcp"}, {"nbx-dir", {NULL}, 2096, "udp"}, {"jetformpreview", {NULL}, 2097, "tcp"}, {"jetformpreview", {NULL}, 2097, "udp"}, {"dialog-port", {NULL}, 2098, "tcp"}, {"dialog-port", {NULL}, 2098, "udp"}, {"h2250-annex-g", {NULL}, 2099, "tcp"}, {"h2250-annex-g", {NULL}, 2099, "udp"}, {"amiganetfs", {NULL}, 2100, "tcp"}, {"amiganetfs", {NULL}, 2100, "udp"}, {"rtcm-sc104", {NULL}, 2101, "tcp"}, {"rtcm-sc104", {NULL}, 2101, "udp"}, {"zephyr-srv", {NULL}, 2102, "tcp"}, {"zephyr-srv", {NULL}, 2102, "udp"}, {"zephyr-clt", {NULL}, 2103, "tcp"}, {"zephyr-clt", {NULL}, 2103, "udp"}, {"zephyr-hm", {NULL}, 2104, "tcp"}, {"zephyr-hm", {NULL}, 2104, "udp"}, {"minipay", {NULL}, 2105, "tcp"}, {"minipay", {NULL}, 2105, "udp"}, {"mzap", {NULL}, 2106, "tcp"}, {"mzap", {NULL}, 2106, "udp"}, {"bintec-admin", {NULL}, 2107, "tcp"}, {"bintec-admin", {NULL}, 2107, "udp"}, {"comcam", {NULL}, 2108, "tcp"}, {"comcam", {NULL}, 2108, "udp"}, {"ergolight", {NULL}, 2109, "tcp"}, {"ergolight", {NULL}, 2109, "udp"}, {"umsp", {NULL}, 2110, "tcp"}, {"umsp", {NULL}, 2110, "udp"}, {"dsatp", {NULL}, 2111, "tcp"}, {"dsatp", {NULL}, 2111, "udp"}, {"idonix-metanet", {NULL}, 2112, "tcp"}, {"idonix-metanet", {NULL}, 2112, "udp"}, {"hsl-storm", {NULL}, 2113, "tcp"}, {"hsl-storm", {NULL}, 2113, "udp"}, {"newheights", {NULL}, 2114, "tcp"}, {"newheights", {NULL}, 2114, "udp"}, {"kdm", {NULL}, 2115, "tcp"}, {"kdm", {NULL}, 2115, "udp"}, {"ccowcmr", {NULL}, 2116, "tcp"}, {"ccowcmr", {NULL}, 2116, "udp"}, {"mentaclient", {NULL}, 2117, "tcp"}, {"mentaclient", {NULL}, 2117, "udp"}, {"mentaserver", {NULL}, 2118, "tcp"}, {"mentaserver", {NULL}, 2118, "udp"}, {"gsigatekeeper", {NULL}, 2119, "tcp"}, {"gsigatekeeper", {NULL}, 2119, "udp"}, {"qencp", {NULL}, 2120, "tcp"}, {"qencp", {NULL}, 2120, "udp"}, {"scientia-ssdb", {NULL}, 2121, "tcp"}, {"scientia-ssdb", {NULL}, 2121, "udp"}, {"caupc-remote", {NULL}, 2122, "tcp"}, {"caupc-remote", {NULL}, 2122, "udp"}, {"gtp-control", {NULL}, 2123, "tcp"}, {"gtp-control", {NULL}, 2123, "udp"}, {"elatelink", {NULL}, 2124, "tcp"}, {"elatelink", {NULL}, 2124, "udp"}, {"lockstep", {NULL}, 2125, "tcp"}, {"lockstep", {NULL}, 2125, "udp"}, {"pktcable-cops", {NULL}, 2126, "tcp"}, {"pktcable-cops", {NULL}, 2126, "udp"}, {"index-pc-wb", {NULL}, 2127, "tcp"}, {"index-pc-wb", {NULL}, 2127, "udp"}, {"net-steward", {NULL}, 2128, "tcp"}, {"net-steward", {NULL}, 2128, "udp"}, {"cs-live", {NULL}, 2129, "tcp"}, {"cs-live", {NULL}, 2129, "udp"}, {"xds", {NULL}, 2130, "tcp"}, {"xds", {NULL}, 2130, "udp"}, {"avantageb2b", {NULL}, 2131, "tcp"}, {"avantageb2b", {NULL}, 2131, "udp"}, {"solera-epmap", {NULL}, 2132, "tcp"}, {"solera-epmap", {NULL}, 2132, "udp"}, {"zymed-zpp", {NULL}, 2133, "tcp"}, {"zymed-zpp", {NULL}, 2133, "udp"}, {"avenue", {NULL}, 2134, "tcp"}, {"avenue", {NULL}, 2134, "udp"}, {"gris", {NULL}, 2135, "tcp"}, {"gris", {NULL}, 2135, "udp"}, {"appworxsrv", {NULL}, 2136, "tcp"}, {"appworxsrv", {NULL}, 2136, "udp"}, {"connect", {NULL}, 2137, "tcp"}, {"connect", {NULL}, 2137, "udp"}, {"unbind-cluster", {NULL}, 2138, "tcp"}, {"unbind-cluster", {NULL}, 2138, "udp"}, {"ias-auth", {NULL}, 2139, "tcp"}, {"ias-auth", {NULL}, 2139, "udp"}, {"ias-reg", {NULL}, 2140, "tcp"}, {"ias-reg", {NULL}, 2140, "udp"}, {"ias-admind", {NULL}, 2141, "tcp"}, {"ias-admind", {NULL}, 2141, "udp"}, {"tdmoip", {NULL}, 2142, "tcp"}, {"tdmoip", {NULL}, 2142, "udp"}, {"lv-jc", {NULL}, 2143, "tcp"}, {"lv-jc", {NULL}, 2143, "udp"}, {"lv-ffx", {NULL}, 2144, "tcp"}, {"lv-ffx", {NULL}, 2144, "udp"}, {"lv-pici", {NULL}, 2145, "tcp"}, {"lv-pici", {NULL}, 2145, "udp"}, {"lv-not", {NULL}, 2146, "tcp"}, {"lv-not", {NULL}, 2146, "udp"}, {"lv-auth", {NULL}, 2147, "tcp"}, {"lv-auth", {NULL}, 2147, "udp"}, {"veritas-ucl", {NULL}, 2148, "tcp"}, {"veritas-ucl", {NULL}, 2148, "udp"}, {"acptsys", {NULL}, 2149, "tcp"}, {"acptsys", {NULL}, 2149, "udp"}, {"dynamic3d", {NULL}, 2150, "tcp"}, {"dynamic3d", {NULL}, 2150, "udp"}, {"docent", {NULL}, 2151, "tcp"}, {"docent", {NULL}, 2151, "udp"}, {"gtp-user", {NULL}, 2152, "tcp"}, {"gtp-user", {NULL}, 2152, "udp"}, {"ctlptc", {NULL}, 2153, "tcp"}, {"ctlptc", {NULL}, 2153, "udp"}, {"stdptc", {NULL}, 2154, "tcp"}, {"stdptc", {NULL}, 2154, "udp"}, {"brdptc", {NULL}, 2155, "tcp"}, {"brdptc", {NULL}, 2155, "udp"}, {"trp", {NULL}, 2156, "tcp"}, {"trp", {NULL}, 2156, "udp"}, {"xnds", {NULL}, 2157, "tcp"}, {"xnds", {NULL}, 2157, "udp"}, {"touchnetplus", {NULL}, 2158, "tcp"}, {"touchnetplus", {NULL}, 2158, "udp"}, {"gdbremote", {NULL}, 2159, "tcp"}, {"gdbremote", {NULL}, 2159, "udp"}, {"apc-2160", {NULL}, 2160, "tcp"}, {"apc-2160", {NULL}, 2160, "udp"}, {"apc-2161", {NULL}, 2161, "tcp"}, {"apc-2161", {NULL}, 2161, "udp"}, {"navisphere", {NULL}, 2162, "tcp"}, {"navisphere", {NULL}, 2162, "udp"}, {"navisphere-sec", {NULL}, 2163, "tcp"}, {"navisphere-sec", {NULL}, 2163, "udp"}, {"ddns-v3", {NULL}, 2164, "tcp"}, {"ddns-v3", {NULL}, 2164, "udp"}, {"x-bone-api", {NULL}, 2165, "tcp"}, {"x-bone-api", {NULL}, 2165, "udp"}, {"iwserver", {NULL}, 2166, "tcp"}, {"iwserver", {NULL}, 2166, "udp"}, {"raw-serial", {NULL}, 2167, "tcp"}, {"raw-serial", {NULL}, 2167, "udp"}, {"easy-soft-mux", {NULL}, 2168, "tcp"}, {"easy-soft-mux", {NULL}, 2168, "udp"}, {"brain", {NULL}, 2169, "tcp"}, {"brain", {NULL}, 2169, "udp"}, {"eyetv", {NULL}, 2170, "tcp"}, {"eyetv", {NULL}, 2170, "udp"}, {"msfw-storage", {NULL}, 2171, "tcp"}, {"msfw-storage", {NULL}, 2171, "udp"}, {"msfw-s-storage", {NULL}, 2172, "tcp"}, {"msfw-s-storage", {NULL}, 2172, "udp"}, {"msfw-replica", {NULL}, 2173, "tcp"}, {"msfw-replica", {NULL}, 2173, "udp"}, {"msfw-array", {NULL}, 2174, "tcp"}, {"msfw-array", {NULL}, 2174, "udp"}, {"airsync", {NULL}, 2175, "tcp"}, {"airsync", {NULL}, 2175, "udp"}, {"rapi", {NULL}, 2176, "tcp"}, {"rapi", {NULL}, 2176, "udp"}, {"qwave", {NULL}, 2177, "tcp"}, {"qwave", {NULL}, 2177, "udp"}, {"bitspeer", {NULL}, 2178, "tcp"}, {"bitspeer", {NULL}, 2178, "udp"}, {"vmrdp", {NULL}, 2179, "tcp"}, {"vmrdp", {NULL}, 2179, "udp"}, {"mc-gt-srv", {NULL}, 2180, "tcp"}, {"mc-gt-srv", {NULL}, 2180, "udp"}, {"eforward", {NULL}, 2181, "tcp"}, {"eforward", {NULL}, 2181, "udp"}, {"cgn-stat", {NULL}, 2182, "tcp"}, {"cgn-stat", {NULL}, 2182, "udp"}, {"cgn-config", {NULL}, 2183, "tcp"}, {"cgn-config", {NULL}, 2183, "udp"}, {"nvd", {NULL}, 2184, "tcp"}, {"nvd", {NULL}, 2184, "udp"}, {"onbase-dds", {NULL}, 2185, "tcp"}, {"onbase-dds", {NULL}, 2185, "udp"}, {"gtaua", {NULL}, 2186, "tcp"}, {"gtaua", {NULL}, 2186, "udp"}, {"ssmc", {NULL}, 2187, "tcp"}, {"ssmd", {NULL}, 2187, "udp"}, {"tivoconnect", {NULL}, 2190, "tcp"}, {"tivoconnect", {NULL}, 2190, "udp"}, {"tvbus", {NULL}, 2191, "tcp"}, {"tvbus", {NULL}, 2191, "udp"}, {"asdis", {NULL}, 2192, "tcp"}, {"asdis", {NULL}, 2192, "udp"}, {"drwcs", {NULL}, 2193, "tcp"}, {"drwcs", {NULL}, 2193, "udp"}, {"mnp-exchange", {NULL}, 2197, "tcp"}, {"mnp-exchange", {NULL}, 2197, "udp"}, {"onehome-remote", {NULL}, 2198, "tcp"}, {"onehome-remote", {NULL}, 2198, "udp"}, {"onehome-help", {NULL}, 2199, "tcp"}, {"onehome-help", {NULL}, 2199, "udp"}, {"ici", {NULL}, 2200, "tcp"}, {"ici", {NULL}, 2200, "udp"}, {"ats", {NULL}, 2201, "tcp"}, {"ats", {NULL}, 2201, "udp"}, {"imtc-map", {NULL}, 2202, "tcp"}, {"imtc-map", {NULL}, 2202, "udp"}, {"b2-runtime", {NULL}, 2203, "tcp"}, {"b2-runtime", {NULL}, 2203, "udp"}, {"b2-license", {NULL}, 2204, "tcp"}, {"b2-license", {NULL}, 2204, "udp"}, {"jps", {NULL}, 2205, "tcp"}, {"jps", {NULL}, 2205, "udp"}, {"hpocbus", {NULL}, 2206, "tcp"}, {"hpocbus", {NULL}, 2206, "udp"}, {"hpssd", {NULL}, 2207, "tcp"}, {"hpssd", {NULL}, 2207, "udp"}, {"hpiod", {NULL}, 2208, "tcp"}, {"hpiod", {NULL}, 2208, "udp"}, {"rimf-ps", {NULL}, 2209, "tcp"}, {"rimf-ps", {NULL}, 2209, "udp"}, {"noaaport", {NULL}, 2210, "tcp"}, {"noaaport", {NULL}, 2210, "udp"}, {"emwin", {NULL}, 2211, "tcp"}, {"emwin", {NULL}, 2211, "udp"}, {"leecoposserver", {NULL}, 2212, "tcp"}, {"leecoposserver", {NULL}, 2212, "udp"}, {"kali", {NULL}, 2213, "tcp"}, {"kali", {NULL}, 2213, "udp"}, {"rpi", {NULL}, 2214, "tcp"}, {"rpi", {NULL}, 2214, "udp"}, {"ipcore", {NULL}, 2215, "tcp"}, {"ipcore", {NULL}, 2215, "udp"}, {"vtu-comms", {NULL}, 2216, "tcp"}, {"vtu-comms", {NULL}, 2216, "udp"}, {"gotodevice", {NULL}, 2217, "tcp"}, {"gotodevice", {NULL}, 2217, "udp"}, {"bounzza", {NULL}, 2218, "tcp"}, {"bounzza", {NULL}, 2218, "udp"}, {"netiq-ncap", {NULL}, 2219, "tcp"}, {"netiq-ncap", {NULL}, 2219, "udp"}, {"netiq", {NULL}, 2220, "tcp"}, {"netiq", {NULL}, 2220, "udp"}, {"rockwell-csp1", {NULL}, 2221, "tcp"}, {"rockwell-csp1", {NULL}, 2221, "udp"}, {"EtherNet/IP-1", {NULL}, 2222, "tcp"}, {"EtherNet/IP-1", {NULL}, 2222, "udp"}, {"rockwell-csp2", {NULL}, 2223, "tcp"}, {"rockwell-csp2", {NULL}, 2223, "udp"}, {"efi-mg", {NULL}, 2224, "tcp"}, {"efi-mg", {NULL}, 2224, "udp"}, {"rcip-itu", {NULL}, 2225, "tcp"}, {"rcip-itu", {NULL}, 2225, "sctp"}, {"di-drm", {NULL}, 2226, "tcp"}, {"di-drm", {NULL}, 2226, "udp"}, {"di-msg", {NULL}, 2227, "tcp"}, {"di-msg", {NULL}, 2227, "udp"}, {"ehome-ms", {NULL}, 2228, "tcp"}, {"ehome-ms", {NULL}, 2228, "udp"}, {"datalens", {NULL}, 2229, "tcp"}, {"datalens", {NULL}, 2229, "udp"}, {"queueadm", {NULL}, 2230, "tcp"}, {"queueadm", {NULL}, 2230, "udp"}, {"wimaxasncp", {NULL}, 2231, "tcp"}, {"wimaxasncp", {NULL}, 2231, "udp"}, {"ivs-video", {NULL}, 2232, "tcp"}, {"ivs-video", {NULL}, 2232, "udp"}, {"infocrypt", {NULL}, 2233, "tcp"}, {"infocrypt", {NULL}, 2233, "udp"}, {"directplay", {NULL}, 2234, "tcp"}, {"directplay", {NULL}, 2234, "udp"}, {"sercomm-wlink", {NULL}, 2235, "tcp"}, {"sercomm-wlink", {NULL}, 2235, "udp"}, {"nani", {NULL}, 2236, "tcp"}, {"nani", {NULL}, 2236, "udp"}, {"optech-port1-lm", {NULL}, 2237, "tcp"}, {"optech-port1-lm", {NULL}, 2237, "udp"}, {"aviva-sna", {NULL}, 2238, "tcp"}, {"aviva-sna", {NULL}, 2238, "udp"}, {"imagequery", {NULL}, 2239, "tcp"}, {"imagequery", {NULL}, 2239, "udp"}, {"recipe", {NULL}, 2240, "tcp"}, {"recipe", {NULL}, 2240, "udp"}, {"ivsd", {NULL}, 2241, "tcp"}, {"ivsd", {NULL}, 2241, "udp"}, {"foliocorp", {NULL}, 2242, "tcp"}, {"foliocorp", {NULL}, 2242, "udp"}, {"magicom", {NULL}, 2243, "tcp"}, {"magicom", {NULL}, 2243, "udp"}, {"nmsserver", {NULL}, 2244, "tcp"}, {"nmsserver", {NULL}, 2244, "udp"}, {"hao", {NULL}, 2245, "tcp"}, {"hao", {NULL}, 2245, "udp"}, {"pc-mta-addrmap", {NULL}, 2246, "tcp"}, {"pc-mta-addrmap", {NULL}, 2246, "udp"}, {"antidotemgrsvr", {NULL}, 2247, "tcp"}, {"antidotemgrsvr", {NULL}, 2247, "udp"}, {"ums", {NULL}, 2248, "tcp"}, {"ums", {NULL}, 2248, "udp"}, {"rfmp", {NULL}, 2249, "tcp"}, {"rfmp", {NULL}, 2249, "udp"}, {"remote-collab", {NULL}, 2250, "tcp"}, {"remote-collab", {NULL}, 2250, "udp"}, {"dif-port", {NULL}, 2251, "tcp"}, {"dif-port", {NULL}, 2251, "udp"}, {"njenet-ssl", {NULL}, 2252, "tcp"}, {"njenet-ssl", {NULL}, 2252, "udp"}, {"dtv-chan-req", {NULL}, 2253, "tcp"}, {"dtv-chan-req", {NULL}, 2253, "udp"}, {"seispoc", {NULL}, 2254, "tcp"}, {"seispoc", {NULL}, 2254, "udp"}, {"vrtp", {NULL}, 2255, "tcp"}, {"vrtp", {NULL}, 2255, "udp"}, {"pcc-mfp", {NULL}, 2256, "tcp"}, {"pcc-mfp", {NULL}, 2256, "udp"}, {"simple-tx-rx", {NULL}, 2257, "tcp"}, {"simple-tx-rx", {NULL}, 2257, "udp"}, {"rcts", {NULL}, 2258, "tcp"}, {"rcts", {NULL}, 2258, "udp"}, {"acd-pm", {NULL}, 2259, "tcp"}, {"acd-pm", {NULL}, 2259, "udp"}, {"apc-2260", {NULL}, 2260, "tcp"}, {"apc-2260", {NULL}, 2260, "udp"}, {"comotionmaster", {NULL}, 2261, "tcp"}, {"comotionmaster", {NULL}, 2261, "udp"}, {"comotionback", {NULL}, 2262, "tcp"}, {"comotionback", {NULL}, 2262, "udp"}, {"ecwcfg", {NULL}, 2263, "tcp"}, {"ecwcfg", {NULL}, 2263, "udp"}, {"apx500api-1", {NULL}, 2264, "tcp"}, {"apx500api-1", {NULL}, 2264, "udp"}, {"apx500api-2", {NULL}, 2265, "tcp"}, {"apx500api-2", {NULL}, 2265, "udp"}, {"mfserver", {NULL}, 2266, "tcp"}, {"mfserver", {NULL}, 2266, "udp"}, {"ontobroker", {NULL}, 2267, "tcp"}, {"ontobroker", {NULL}, 2267, "udp"}, {"amt", {NULL}, 2268, "tcp"}, {"amt", {NULL}, 2268, "udp"}, {"mikey", {NULL}, 2269, "tcp"}, {"mikey", {NULL}, 2269, "udp"}, {"starschool", {NULL}, 2270, "tcp"}, {"starschool", {NULL}, 2270, "udp"}, {"mmcals", {NULL}, 2271, "tcp"}, {"mmcals", {NULL}, 2271, "udp"}, {"mmcal", {NULL}, 2272, "tcp"}, {"mmcal", {NULL}, 2272, "udp"}, {"mysql-im", {NULL}, 2273, "tcp"}, {"mysql-im", {NULL}, 2273, "udp"}, {"pcttunnell", {NULL}, 2274, "tcp"}, {"pcttunnell", {NULL}, 2274, "udp"}, {"ibridge-data", {NULL}, 2275, "tcp"}, {"ibridge-data", {NULL}, 2275, "udp"}, {"ibridge-mgmt", {NULL}, 2276, "tcp"}, {"ibridge-mgmt", {NULL}, 2276, "udp"}, {"bluectrlproxy", {NULL}, 2277, "tcp"}, {"bluectrlproxy", {NULL}, 2277, "udp"}, {"s3db", {NULL}, 2278, "tcp"}, {"s3db", {NULL}, 2278, "udp"}, {"xmquery", {NULL}, 2279, "tcp"}, {"xmquery", {NULL}, 2279, "udp"}, {"lnvpoller", {NULL}, 2280, "tcp"}, {"lnvpoller", {NULL}, 2280, "udp"}, {"lnvconsole", {NULL}, 2281, "tcp"}, {"lnvconsole", {NULL}, 2281, "udp"}, {"lnvalarm", {NULL}, 2282, "tcp"}, {"lnvalarm", {NULL}, 2282, "udp"}, {"lnvstatus", {NULL}, 2283, "tcp"}, {"lnvstatus", {NULL}, 2283, "udp"}, {"lnvmaps", {NULL}, 2284, "tcp"}, {"lnvmaps", {NULL}, 2284, "udp"}, {"lnvmailmon", {NULL}, 2285, "tcp"}, {"lnvmailmon", {NULL}, 2285, "udp"}, {"nas-metering", {NULL}, 2286, "tcp"}, {"nas-metering", {NULL}, 2286, "udp"}, {"dna", {NULL}, 2287, "tcp"}, {"dna", {NULL}, 2287, "udp"}, {"netml", {NULL}, 2288, "tcp"}, {"netml", {NULL}, 2288, "udp"}, {"dict-lookup", {NULL}, 2289, "tcp"}, {"dict-lookup", {NULL}, 2289, "udp"}, {"sonus-logging", {NULL}, 2290, "tcp"}, {"sonus-logging", {NULL}, 2290, "udp"}, {"eapsp", {NULL}, 2291, "tcp"}, {"eapsp", {NULL}, 2291, "udp"}, {"mib-streaming", {NULL}, 2292, "tcp"}, {"mib-streaming", {NULL}, 2292, "udp"}, {"npdbgmngr", {NULL}, 2293, "tcp"}, {"npdbgmngr", {NULL}, 2293, "udp"}, {"konshus-lm", {NULL}, 2294, "tcp"}, {"konshus-lm", {NULL}, 2294, "udp"}, {"advant-lm", {NULL}, 2295, "tcp"}, {"advant-lm", {NULL}, 2295, "udp"}, {"theta-lm", {NULL}, 2296, "tcp"}, {"theta-lm", {NULL}, 2296, "udp"}, {"d2k-datamover1", {NULL}, 2297, "tcp"}, {"d2k-datamover1", {NULL}, 2297, "udp"}, {"d2k-datamover2", {NULL}, 2298, "tcp"}, {"d2k-datamover2", {NULL}, 2298, "udp"}, {"pc-telecommute", {NULL}, 2299, "tcp"}, {"pc-telecommute", {NULL}, 2299, "udp"}, {"cvmmon", {NULL}, 2300, "tcp"}, {"cvmmon", {NULL}, 2300, "udp"}, {"cpq-wbem", {NULL}, 2301, "tcp"}, {"cpq-wbem", {NULL}, 2301, "udp"}, {"binderysupport", {NULL}, 2302, "tcp"}, {"binderysupport", {NULL}, 2302, "udp"}, {"proxy-gateway", {NULL}, 2303, "tcp"}, {"proxy-gateway", {NULL}, 2303, "udp"}, {"attachmate-uts", {NULL}, 2304, "tcp"}, {"attachmate-uts", {NULL}, 2304, "udp"}, {"mt-scaleserver", {NULL}, 2305, "tcp"}, {"mt-scaleserver", {NULL}, 2305, "udp"}, {"tappi-boxnet", {NULL}, 2306, "tcp"}, {"tappi-boxnet", {NULL}, 2306, "udp"}, {"pehelp", {NULL}, 2307, "tcp"}, {"pehelp", {NULL}, 2307, "udp"}, {"sdhelp", {NULL}, 2308, "tcp"}, {"sdhelp", {NULL}, 2308, "udp"}, {"sdserver", {NULL}, 2309, "tcp"}, {"sdserver", {NULL}, 2309, "udp"}, {"sdclient", {NULL}, 2310, "tcp"}, {"sdclient", {NULL}, 2310, "udp"}, {"messageservice", {NULL}, 2311, "tcp"}, {"messageservice", {NULL}, 2311, "udp"}, {"wanscaler", {NULL}, 2312, "tcp"}, {"wanscaler", {NULL}, 2312, "udp"}, {"iapp", {NULL}, 2313, "tcp"}, {"iapp", {NULL}, 2313, "udp"}, {"cr-websystems", {NULL}, 2314, "tcp"}, {"cr-websystems", {NULL}, 2314, "udp"}, {"precise-sft", {NULL}, 2315, "tcp"}, {"precise-sft", {NULL}, 2315, "udp"}, {"sent-lm", {NULL}, 2316, "tcp"}, {"sent-lm", {NULL}, 2316, "udp"}, {"attachmate-g32", {NULL}, 2317, "tcp"}, {"attachmate-g32", {NULL}, 2317, "udp"}, {"cadencecontrol", {NULL}, 2318, "tcp"}, {"cadencecontrol", {NULL}, 2318, "udp"}, {"infolibria", {NULL}, 2319, "tcp"}, {"infolibria", {NULL}, 2319, "udp"}, {"siebel-ns", {NULL}, 2320, "tcp"}, {"siebel-ns", {NULL}, 2320, "udp"}, {"rdlap", {NULL}, 2321, "tcp"}, {"rdlap", {NULL}, 2321, "udp"}, {"ofsd", {NULL}, 2322, "tcp"}, {"ofsd", {NULL}, 2322, "udp"}, {"3d-nfsd", {NULL}, 2323, "tcp"}, {"3d-nfsd", {NULL}, 2323, "udp"}, {"cosmocall", {NULL}, 2324, "tcp"}, {"cosmocall", {NULL}, 2324, "udp"}, {"ansysli", {NULL}, 2325, "tcp"}, {"ansysli", {NULL}, 2325, "udp"}, {"idcp", {NULL}, 2326, "tcp"}, {"idcp", {NULL}, 2326, "udp"}, {"xingcsm", {NULL}, 2327, "tcp"}, {"xingcsm", {NULL}, 2327, "udp"}, {"netrix-sftm", {NULL}, 2328, "tcp"}, {"netrix-sftm", {NULL}, 2328, "udp"}, {"nvd", {NULL}, 2329, "tcp"}, {"nvd", {NULL}, 2329, "udp"}, {"tscchat", {NULL}, 2330, "tcp"}, {"tscchat", {NULL}, 2330, "udp"}, {"agentview", {NULL}, 2331, "tcp"}, {"agentview", {NULL}, 2331, "udp"}, {"rcc-host", {NULL}, 2332, "tcp"}, {"rcc-host", {NULL}, 2332, "udp"}, {"snapp", {NULL}, 2333, "tcp"}, {"snapp", {NULL}, 2333, "udp"}, {"ace-client", {NULL}, 2334, "tcp"}, {"ace-client", {NULL}, 2334, "udp"}, {"ace-proxy", {NULL}, 2335, "tcp"}, {"ace-proxy", {NULL}, 2335, "udp"}, {"appleugcontrol", {NULL}, 2336, "tcp"}, {"appleugcontrol", {NULL}, 2336, "udp"}, {"ideesrv", {NULL}, 2337, "tcp"}, {"ideesrv", {NULL}, 2337, "udp"}, {"norton-lambert", {NULL}, 2338, "tcp"}, {"norton-lambert", {NULL}, 2338, "udp"}, {"3com-webview", {NULL}, 2339, "tcp"}, {"3com-webview", {NULL}, 2339, "udp"}, {"wrs_registry", {NULL}, 2340, "tcp"}, {"wrs_registry", {NULL}, 2340, "udp"}, {"xiostatus", {NULL}, 2341, "tcp"}, {"xiostatus", {NULL}, 2341, "udp"}, {"manage-exec", {NULL}, 2342, "tcp"}, {"manage-exec", {NULL}, 2342, "udp"}, {"nati-logos", {NULL}, 2343, "tcp"}, {"nati-logos", {NULL}, 2343, "udp"}, {"fcmsys", {NULL}, 2344, "tcp"}, {"fcmsys", {NULL}, 2344, "udp"}, {"dbm", {NULL}, 2345, "tcp"}, {"dbm", {NULL}, 2345, "udp"}, {"redstorm_join", {NULL}, 2346, "tcp"}, {"redstorm_join", {NULL}, 2346, "udp"}, {"redstorm_find", {NULL}, 2347, "tcp"}, {"redstorm_find", {NULL}, 2347, "udp"}, {"redstorm_info", {NULL}, 2348, "tcp"}, {"redstorm_info", {NULL}, 2348, "udp"}, {"redstorm_diag", {NULL}, 2349, "tcp"}, {"redstorm_diag", {NULL}, 2349, "udp"}, {"psbserver", {NULL}, 2350, "tcp"}, {"psbserver", {NULL}, 2350, "udp"}, {"psrserver", {NULL}, 2351, "tcp"}, {"psrserver", {NULL}, 2351, "udp"}, {"pslserver", {NULL}, 2352, "tcp"}, {"pslserver", {NULL}, 2352, "udp"}, {"pspserver", {NULL}, 2353, "tcp"}, {"pspserver", {NULL}, 2353, "udp"}, {"psprserver", {NULL}, 2354, "tcp"}, {"psprserver", {NULL}, 2354, "udp"}, {"psdbserver", {NULL}, 2355, "tcp"}, {"psdbserver", {NULL}, 2355, "udp"}, {"gxtelmd", {NULL}, 2356, "tcp"}, {"gxtelmd", {NULL}, 2356, "udp"}, {"unihub-server", {NULL}, 2357, "tcp"}, {"unihub-server", {NULL}, 2357, "udp"}, {"futrix", {NULL}, 2358, "tcp"}, {"futrix", {NULL}, 2358, "udp"}, {"flukeserver", {NULL}, 2359, "tcp"}, {"flukeserver", {NULL}, 2359, "udp"}, {"nexstorindltd", {NULL}, 2360, "tcp"}, {"nexstorindltd", {NULL}, 2360, "udp"}, {"tl1", {NULL}, 2361, "tcp"}, {"tl1", {NULL}, 2361, "udp"}, {"digiman", {NULL}, 2362, "tcp"}, {"digiman", {NULL}, 2362, "udp"}, {"mediacntrlnfsd", {NULL}, 2363, "tcp"}, {"mediacntrlnfsd", {NULL}, 2363, "udp"}, {"oi-2000", {NULL}, 2364, "tcp"}, {"oi-2000", {NULL}, 2364, "udp"}, {"dbref", {NULL}, 2365, "tcp"}, {"dbref", {NULL}, 2365, "udp"}, {"qip-login", {NULL}, 2366, "tcp"}, {"qip-login", {NULL}, 2366, "udp"}, {"service-ctrl", {NULL}, 2367, "tcp"}, {"service-ctrl", {NULL}, 2367, "udp"}, {"opentable", {NULL}, 2368, "tcp"}, {"opentable", {NULL}, 2368, "udp"}, {"l3-hbmon", {NULL}, 2370, "tcp"}, {"l3-hbmon", {NULL}, 2370, "udp"}, {"worldwire", {NULL}, 2371, "tcp"}, {"worldwire", {NULL}, 2371, "udp"}, {"lanmessenger", {NULL}, 2372, "tcp"}, {"lanmessenger", {NULL}, 2372, "udp"}, {"remographlm", {NULL}, 2373, "tcp"}, {"hydra", {NULL}, 2374, "tcp"}, {"compaq-https", {NULL}, 2381, "tcp"}, {"compaq-https", {NULL}, 2381, "udp"}, {"ms-olap3", {NULL}, 2382, "tcp"}, {"ms-olap3", {NULL}, 2382, "udp"}, {"ms-olap4", {NULL}, 2383, "tcp"}, {"ms-olap4", {NULL}, 2383, "udp"}, {"sd-request", {NULL}, 2384, "tcp"}, {"sd-capacity", {NULL}, 2384, "udp"}, {"sd-data", {NULL}, 2385, "tcp"}, {"sd-data", {NULL}, 2385, "udp"}, {"virtualtape", {NULL}, 2386, "tcp"}, {"virtualtape", {NULL}, 2386, "udp"}, {"vsamredirector", {NULL}, 2387, "tcp"}, {"vsamredirector", {NULL}, 2387, "udp"}, {"mynahautostart", {NULL}, 2388, "tcp"}, {"mynahautostart", {NULL}, 2388, "udp"}, {"ovsessionmgr", {NULL}, 2389, "tcp"}, {"ovsessionmgr", {NULL}, 2389, "udp"}, {"rsmtp", {NULL}, 2390, "tcp"}, {"rsmtp", {NULL}, 2390, "udp"}, {"3com-net-mgmt", {NULL}, 2391, "tcp"}, {"3com-net-mgmt", {NULL}, 2391, "udp"}, {"tacticalauth", {NULL}, 2392, "tcp"}, {"tacticalauth", {NULL}, 2392, "udp"}, {"ms-olap1", {NULL}, 2393, "tcp"}, {"ms-olap1", {NULL}, 2393, "udp"}, {"ms-olap2", {NULL}, 2394, "tcp"}, {"ms-olap2", {NULL}, 2394, "udp"}, {"lan900_remote", {NULL}, 2395, "tcp"}, {"lan900_remote", {NULL}, 2395, "udp"}, {"wusage", {NULL}, 2396, "tcp"}, {"wusage", {NULL}, 2396, "udp"}, {"ncl", {NULL}, 2397, "tcp"}, {"ncl", {NULL}, 2397, "udp"}, {"orbiter", {NULL}, 2398, "tcp"}, {"orbiter", {NULL}, 2398, "udp"}, {"fmpro-fdal", {NULL}, 2399, "tcp"}, {"fmpro-fdal", {NULL}, 2399, "udp"}, {"opequus-server", {NULL}, 2400, "tcp"}, {"opequus-server", {NULL}, 2400, "udp"}, {"cvspserver", {NULL}, 2401, "tcp"}, {"cvspserver", {NULL}, 2401, "udp"}, {"taskmaster2000", {NULL}, 2402, "tcp"}, {"taskmaster2000", {NULL}, 2402, "udp"}, {"taskmaster2000", {NULL}, 2403, "tcp"}, {"taskmaster2000", {NULL}, 2403, "udp"}, {"iec-104", {NULL}, 2404, "tcp"}, {"iec-104", {NULL}, 2404, "udp"}, {"trc-netpoll", {NULL}, 2405, "tcp"}, {"trc-netpoll", {NULL}, 2405, "udp"}, {"jediserver", {NULL}, 2406, "tcp"}, {"jediserver", {NULL}, 2406, "udp"}, {"orion", {NULL}, 2407, "tcp"}, {"orion", {NULL}, 2407, "udp"}, {"optimanet", {NULL}, 2408, "tcp"}, {"optimanet", {NULL}, 2408, "udp"}, {"sns-protocol", {NULL}, 2409, "tcp"}, {"sns-protocol", {NULL}, 2409, "udp"}, {"vrts-registry", {NULL}, 2410, "tcp"}, {"vrts-registry", {NULL}, 2410, "udp"}, {"netwave-ap-mgmt", {NULL}, 2411, "tcp"}, {"netwave-ap-mgmt", {NULL}, 2411, "udp"}, {"cdn", {NULL}, 2412, "tcp"}, {"cdn", {NULL}, 2412, "udp"}, {"orion-rmi-reg", {NULL}, 2413, "tcp"}, {"orion-rmi-reg", {NULL}, 2413, "udp"}, {"beeyond", {NULL}, 2414, "tcp"}, {"beeyond", {NULL}, 2414, "udp"}, {"codima-rtp", {NULL}, 2415, "tcp"}, {"codima-rtp", {NULL}, 2415, "udp"}, {"rmtserver", {NULL}, 2416, "tcp"}, {"rmtserver", {NULL}, 2416, "udp"}, {"composit-server", {NULL}, 2417, "tcp"}, {"composit-server", {NULL}, 2417, "udp"}, {"cas", {NULL}, 2418, "tcp"}, {"cas", {NULL}, 2418, "udp"}, {"attachmate-s2s", {NULL}, 2419, "tcp"}, {"attachmate-s2s", {NULL}, 2419, "udp"}, {"dslremote-mgmt", {NULL}, 2420, "tcp"}, {"dslremote-mgmt", {NULL}, 2420, "udp"}, {"g-talk", {NULL}, 2421, "tcp"}, {"g-talk", {NULL}, 2421, "udp"}, {"crmsbits", {NULL}, 2422, "tcp"}, {"crmsbits", {NULL}, 2422, "udp"}, {"rnrp", {NULL}, 2423, "tcp"}, {"rnrp", {NULL}, 2423, "udp"}, {"kofax-svr", {NULL}, 2424, "tcp"}, {"kofax-svr", {NULL}, 2424, "udp"}, {"fjitsuappmgr", {NULL}, 2425, "tcp"}, {"fjitsuappmgr", {NULL}, 2425, "udp"}, {"mgcp-gateway", {NULL}, 2427, "tcp"}, {"mgcp-gateway", {NULL}, 2427, "udp"}, {"ott", {NULL}, 2428, "tcp"}, {"ott", {NULL}, 2428, "udp"}, {"ft-role", {NULL}, 2429, "tcp"}, {"ft-role", {NULL}, 2429, "udp"}, {"venus", {NULL}, 2430, "tcp"}, {"venus", {NULL}, 2430, "udp"}, {"venus-se", {NULL}, 2431, "tcp"}, {"venus-se", {NULL}, 2431, "udp"}, {"codasrv", {NULL}, 2432, "tcp"}, {"codasrv", {NULL}, 2432, "udp"}, {"codasrv-se", {NULL}, 2433, "tcp"}, {"codasrv-se", {NULL}, 2433, "udp"}, {"pxc-epmap", {NULL}, 2434, "tcp"}, {"pxc-epmap", {NULL}, 2434, "udp"}, {"optilogic", {NULL}, 2435, "tcp"}, {"optilogic", {NULL}, 2435, "udp"}, {"topx", {NULL}, 2436, "tcp"}, {"topx", {NULL}, 2436, "udp"}, {"unicontrol", {NULL}, 2437, "tcp"}, {"unicontrol", {NULL}, 2437, "udp"}, {"msp", {NULL}, 2438, "tcp"}, {"msp", {NULL}, 2438, "udp"}, {"sybasedbsynch", {NULL}, 2439, "tcp"}, {"sybasedbsynch", {NULL}, 2439, "udp"}, {"spearway", {NULL}, 2440, "tcp"}, {"spearway", {NULL}, 2440, "udp"}, {"pvsw-inet", {NULL}, 2441, "tcp"}, {"pvsw-inet", {NULL}, 2441, "udp"}, {"netangel", {NULL}, 2442, "tcp"}, {"netangel", {NULL}, 2442, "udp"}, {"powerclientcsf", {NULL}, 2443, "tcp"}, {"powerclientcsf", {NULL}, 2443, "udp"}, {"btpp2sectrans", {NULL}, 2444, "tcp"}, {"btpp2sectrans", {NULL}, 2444, "udp"}, {"dtn1", {NULL}, 2445, "tcp"}, {"dtn1", {NULL}, 2445, "udp"}, {"bues_service", {NULL}, 2446, "tcp"}, {"bues_service", {NULL}, 2446, "udp"}, {"ovwdb", {NULL}, 2447, "tcp"}, {"ovwdb", {NULL}, 2447, "udp"}, {"hpppssvr", {NULL}, 2448, "tcp"}, {"hpppssvr", {NULL}, 2448, "udp"}, {"ratl", {NULL}, 2449, "tcp"}, {"ratl", {NULL}, 2449, "udp"}, {"netadmin", {NULL}, 2450, "tcp"}, {"netadmin", {NULL}, 2450, "udp"}, {"netchat", {NULL}, 2451, "tcp"}, {"netchat", {NULL}, 2451, "udp"}, {"snifferclient", {NULL}, 2452, "tcp"}, {"snifferclient", {NULL}, 2452, "udp"}, {"madge-ltd", {NULL}, 2453, "tcp"}, {"madge-ltd", {NULL}, 2453, "udp"}, {"indx-dds", {NULL}, 2454, "tcp"}, {"indx-dds", {NULL}, 2454, "udp"}, {"wago-io-system", {NULL}, 2455, "tcp"}, {"wago-io-system", {NULL}, 2455, "udp"}, {"altav-remmgt", {NULL}, 2456, "tcp"}, {"altav-remmgt", {NULL}, 2456, "udp"}, {"rapido-ip", {NULL}, 2457, "tcp"}, {"rapido-ip", {NULL}, 2457, "udp"}, {"griffin", {NULL}, 2458, "tcp"}, {"griffin", {NULL}, 2458, "udp"}, {"community", {NULL}, 2459, "tcp"}, {"community", {NULL}, 2459, "udp"}, {"ms-theater", {NULL}, 2460, "tcp"}, {"ms-theater", {NULL}, 2460, "udp"}, {"qadmifoper", {NULL}, 2461, "tcp"}, {"qadmifoper", {NULL}, 2461, "udp"}, {"qadmifevent", {NULL}, 2462, "tcp"}, {"qadmifevent", {NULL}, 2462, "udp"}, {"lsi-raid-mgmt", {NULL}, 2463, "tcp"}, {"lsi-raid-mgmt", {NULL}, 2463, "udp"}, {"direcpc-si", {NULL}, 2464, "tcp"}, {"direcpc-si", {NULL}, 2464, "udp"}, {"lbm", {NULL}, 2465, "tcp"}, {"lbm", {NULL}, 2465, "udp"}, {"lbf", {NULL}, 2466, "tcp"}, {"lbf", {NULL}, 2466, "udp"}, {"high-criteria", {NULL}, 2467, "tcp"}, {"high-criteria", {NULL}, 2467, "udp"}, {"qip-msgd", {NULL}, 2468, "tcp"}, {"qip-msgd", {NULL}, 2468, "udp"}, {"mti-tcs-comm", {NULL}, 2469, "tcp"}, {"mti-tcs-comm", {NULL}, 2469, "udp"}, {"taskman-port", {NULL}, 2470, "tcp"}, {"taskman-port", {NULL}, 2470, "udp"}, {"seaodbc", {NULL}, 2471, "tcp"}, {"seaodbc", {NULL}, 2471, "udp"}, {"c3", {NULL}, 2472, "tcp"}, {"c3", {NULL}, 2472, "udp"}, {"aker-cdp", {NULL}, 2473, "tcp"}, {"aker-cdp", {NULL}, 2473, "udp"}, {"vitalanalysis", {NULL}, 2474, "tcp"}, {"vitalanalysis", {NULL}, 2474, "udp"}, {"ace-server", {NULL}, 2475, "tcp"}, {"ace-server", {NULL}, 2475, "udp"}, {"ace-svr-prop", {NULL}, 2476, "tcp"}, {"ace-svr-prop", {NULL}, 2476, "udp"}, {"ssm-cvs", {NULL}, 2477, "tcp"}, {"ssm-cvs", {NULL}, 2477, "udp"}, {"ssm-cssps", {NULL}, 2478, "tcp"}, {"ssm-cssps", {NULL}, 2478, "udp"}, {"ssm-els", {NULL}, 2479, "tcp"}, {"ssm-els", {NULL}, 2479, "udp"}, {"powerexchange", {NULL}, 2480, "tcp"}, {"powerexchange", {NULL}, 2480, "udp"}, {"giop", {NULL}, 2481, "tcp"}, {"giop", {NULL}, 2481, "udp"}, {"giop-ssl", {NULL}, 2482, "tcp"}, {"giop-ssl", {NULL}, 2482, "udp"}, {"ttc", {NULL}, 2483, "tcp"}, {"ttc", {NULL}, 2483, "udp"}, {"ttc-ssl", {NULL}, 2484, "tcp"}, {"ttc-ssl", {NULL}, 2484, "udp"}, {"netobjects1", {NULL}, 2485, "tcp"}, {"netobjects1", {NULL}, 2485, "udp"}, {"netobjects2", {NULL}, 2486, "tcp"}, {"netobjects2", {NULL}, 2486, "udp"}, {"pns", {NULL}, 2487, "tcp"}, {"pns", {NULL}, 2487, "udp"}, {"moy-corp", {NULL}, 2488, "tcp"}, {"moy-corp", {NULL}, 2488, "udp"}, {"tsilb", {NULL}, 2489, "tcp"}, {"tsilb", {NULL}, 2489, "udp"}, {"qip-qdhcp", {NULL}, 2490, "tcp"}, {"qip-qdhcp", {NULL}, 2490, "udp"}, {"conclave-cpp", {NULL}, 2491, "tcp"}, {"conclave-cpp", {NULL}, 2491, "udp"}, {"groove", {NULL}, 2492, "tcp"}, {"groove", {NULL}, 2492, "udp"}, {"talarian-mqs", {NULL}, 2493, "tcp"}, {"talarian-mqs", {NULL}, 2493, "udp"}, {"bmc-ar", {NULL}, 2494, "tcp"}, {"bmc-ar", {NULL}, 2494, "udp"}, {"fast-rem-serv", {NULL}, 2495, "tcp"}, {"fast-rem-serv", {NULL}, 2495, "udp"}, {"dirgis", {NULL}, 2496, "tcp"}, {"dirgis", {NULL}, 2496, "udp"}, {"quaddb", {NULL}, 2497, "tcp"}, {"quaddb", {NULL}, 2497, "udp"}, {"odn-castraq", {NULL}, 2498, "tcp"}, {"odn-castraq", {NULL}, 2498, "udp"}, {"unicontrol", {NULL}, 2499, "tcp"}, {"unicontrol", {NULL}, 2499, "udp"}, {"rtsserv", {NULL}, 2500, "tcp"}, {"rtsserv", {NULL}, 2500, "udp"}, {"rtsclient", {NULL}, 2501, "tcp"}, {"rtsclient", {NULL}, 2501, "udp"}, {"kentrox-prot", {NULL}, 2502, "tcp"}, {"kentrox-prot", {NULL}, 2502, "udp"}, {"nms-dpnss", {NULL}, 2503, "tcp"}, {"nms-dpnss", {NULL}, 2503, "udp"}, {"wlbs", {NULL}, 2504, "tcp"}, {"wlbs", {NULL}, 2504, "udp"}, {"ppcontrol", {NULL}, 2505, "tcp"}, {"ppcontrol", {NULL}, 2505, "udp"}, {"jbroker", {NULL}, 2506, "tcp"}, {"jbroker", {NULL}, 2506, "udp"}, {"spock", {NULL}, 2507, "tcp"}, {"spock", {NULL}, 2507, "udp"}, {"jdatastore", {NULL}, 2508, "tcp"}, {"jdatastore", {NULL}, 2508, "udp"}, {"fjmpss", {NULL}, 2509, "tcp"}, {"fjmpss", {NULL}, 2509, "udp"}, {"fjappmgrbulk", {NULL}, 2510, "tcp"}, {"fjappmgrbulk", {NULL}, 2510, "udp"}, {"metastorm", {NULL}, 2511, "tcp"}, {"metastorm", {NULL}, 2511, "udp"}, {"citrixima", {NULL}, 2512, "tcp"}, {"citrixima", {NULL}, 2512, "udp"}, {"citrixadmin", {NULL}, 2513, "tcp"}, {"citrixadmin", {NULL}, 2513, "udp"}, {"facsys-ntp", {NULL}, 2514, "tcp"}, {"facsys-ntp", {NULL}, 2514, "udp"}, {"facsys-router", {NULL}, 2515, "tcp"}, {"facsys-router", {NULL}, 2515, "udp"}, {"maincontrol", {NULL}, 2516, "tcp"}, {"maincontrol", {NULL}, 2516, "udp"}, {"call-sig-trans", {NULL}, 2517, "tcp"}, {"call-sig-trans", {NULL}, 2517, "udp"}, {"willy", {NULL}, 2518, "tcp"}, {"willy", {NULL}, 2518, "udp"}, {"globmsgsvc", {NULL}, 2519, "tcp"}, {"globmsgsvc", {NULL}, 2519, "udp"}, {"pvsw", {NULL}, 2520, "tcp"}, {"pvsw", {NULL}, 2520, "udp"}, {"adaptecmgr", {NULL}, 2521, "tcp"}, {"adaptecmgr", {NULL}, 2521, "udp"}, {"windb", {NULL}, 2522, "tcp"}, {"windb", {NULL}, 2522, "udp"}, {"qke-llc-v3", {NULL}, 2523, "tcp"}, {"qke-llc-v3", {NULL}, 2523, "udp"}, {"optiwave-lm", {NULL}, 2524, "tcp"}, {"optiwave-lm", {NULL}, 2524, "udp"}, {"ms-v-worlds", {NULL}, 2525, "tcp"}, {"ms-v-worlds", {NULL}, 2525, "udp"}, {"ema-sent-lm", {NULL}, 2526, "tcp"}, {"ema-sent-lm", {NULL}, 2526, "udp"}, {"iqserver", {NULL}, 2527, "tcp"}, {"iqserver", {NULL}, 2527, "udp"}, {"ncr_ccl", {NULL}, 2528, "tcp"}, {"ncr_ccl", {NULL}, 2528, "udp"}, {"utsftp", {NULL}, 2529, "tcp"}, {"utsftp", {NULL}, 2529, "udp"}, {"vrcommerce", {NULL}, 2530, "tcp"}, {"vrcommerce", {NULL}, 2530, "udp"}, {"ito-e-gui", {NULL}, 2531, "tcp"}, {"ito-e-gui", {NULL}, 2531, "udp"}, {"ovtopmd", {NULL}, 2532, "tcp"}, {"ovtopmd", {NULL}, 2532, "udp"}, {"snifferserver", {NULL}, 2533, "tcp"}, {"snifferserver", {NULL}, 2533, "udp"}, {"combox-web-acc", {NULL}, 2534, "tcp"}, {"combox-web-acc", {NULL}, 2534, "udp"}, {"madcap", {NULL}, 2535, "tcp"}, {"madcap", {NULL}, 2535, "udp"}, {"btpp2audctr1", {NULL}, 2536, "tcp"}, {"btpp2audctr1", {NULL}, 2536, "udp"}, {"upgrade", {NULL}, 2537, "tcp"}, {"upgrade", {NULL}, 2537, "udp"}, {"vnwk-prapi", {NULL}, 2538, "tcp"}, {"vnwk-prapi", {NULL}, 2538, "udp"}, {"vsiadmin", {NULL}, 2539, "tcp"}, {"vsiadmin", {NULL}, 2539, "udp"}, {"lonworks", {NULL}, 2540, "tcp"}, {"lonworks", {NULL}, 2540, "udp"}, {"lonworks2", {NULL}, 2541, "tcp"}, {"lonworks2", {NULL}, 2541, "udp"}, {"udrawgraph", {NULL}, 2542, "tcp"}, {"udrawgraph", {NULL}, 2542, "udp"}, {"reftek", {NULL}, 2543, "tcp"}, {"reftek", {NULL}, 2543, "udp"}, {"novell-zen", {NULL}, 2544, "tcp"}, {"novell-zen", {NULL}, 2544, "udp"}, {"sis-emt", {NULL}, 2545, "tcp"}, {"sis-emt", {NULL}, 2545, "udp"}, {"vytalvaultbrtp", {NULL}, 2546, "tcp"}, {"vytalvaultbrtp", {NULL}, 2546, "udp"}, {"vytalvaultvsmp", {NULL}, 2547, "tcp"}, {"vytalvaultvsmp", {NULL}, 2547, "udp"}, {"vytalvaultpipe", {NULL}, 2548, "tcp"}, {"vytalvaultpipe", {NULL}, 2548, "udp"}, {"ipass", {NULL}, 2549, "tcp"}, {"ipass", {NULL}, 2549, "udp"}, {"ads", {NULL}, 2550, "tcp"}, {"ads", {NULL}, 2550, "udp"}, {"isg-uda-server", {NULL}, 2551, "tcp"}, {"isg-uda-server", {NULL}, 2551, "udp"}, {"call-logging", {NULL}, 2552, "tcp"}, {"call-logging", {NULL}, 2552, "udp"}, {"efidiningport", {NULL}, 2553, "tcp"}, {"efidiningport", {NULL}, 2553, "udp"}, {"vcnet-link-v10", {NULL}, 2554, "tcp"}, {"vcnet-link-v10", {NULL}, 2554, "udp"}, {"compaq-wcp", {NULL}, 2555, "tcp"}, {"compaq-wcp", {NULL}, 2555, "udp"}, {"nicetec-nmsvc", {NULL}, 2556, "tcp"}, {"nicetec-nmsvc", {NULL}, 2556, "udp"}, {"nicetec-mgmt", {NULL}, 2557, "tcp"}, {"nicetec-mgmt", {NULL}, 2557, "udp"}, {"pclemultimedia", {NULL}, 2558, "tcp"}, {"pclemultimedia", {NULL}, 2558, "udp"}, {"lstp", {NULL}, 2559, "tcp"}, {"lstp", {NULL}, 2559, "udp"}, {"labrat", {NULL}, 2560, "tcp"}, {"labrat", {NULL}, 2560, "udp"}, {"mosaixcc", {NULL}, 2561, "tcp"}, {"mosaixcc", {NULL}, 2561, "udp"}, {"delibo", {NULL}, 2562, "tcp"}, {"delibo", {NULL}, 2562, "udp"}, {"cti-redwood", {NULL}, 2563, "tcp"}, {"cti-redwood", {NULL}, 2563, "udp"}, {"hp-3000-telnet", {NULL}, 2564, "tcp"}, {"coord-svr", {NULL}, 2565, "tcp"}, {"coord-svr", {NULL}, 2565, "udp"}, {"pcs-pcw", {NULL}, 2566, "tcp"}, {"pcs-pcw", {NULL}, 2566, "udp"}, {"clp", {NULL}, 2567, "tcp"}, {"clp", {NULL}, 2567, "udp"}, {"spamtrap", {NULL}, 2568, "tcp"}, {"spamtrap", {NULL}, 2568, "udp"}, {"sonuscallsig", {NULL}, 2569, "tcp"}, {"sonuscallsig", {NULL}, 2569, "udp"}, {"hs-port", {NULL}, 2570, "tcp"}, {"hs-port", {NULL}, 2570, "udp"}, {"cecsvc", {NULL}, 2571, "tcp"}, {"cecsvc", {NULL}, 2571, "udp"}, {"ibp", {NULL}, 2572, "tcp"}, {"ibp", {NULL}, 2572, "udp"}, {"trustestablish", {NULL}, 2573, "tcp"}, {"trustestablish", {NULL}, 2573, "udp"}, {"blockade-bpsp", {NULL}, 2574, "tcp"}, {"blockade-bpsp", {NULL}, 2574, "udp"}, {"hl7", {NULL}, 2575, "tcp"}, {"hl7", {NULL}, 2575, "udp"}, {"tclprodebugger", {NULL}, 2576, "tcp"}, {"tclprodebugger", {NULL}, 2576, "udp"}, {"scipticslsrvr", {NULL}, 2577, "tcp"}, {"scipticslsrvr", {NULL}, 2577, "udp"}, {"rvs-isdn-dcp", {NULL}, 2578, "tcp"}, {"rvs-isdn-dcp", {NULL}, 2578, "udp"}, {"mpfoncl", {NULL}, 2579, "tcp"}, {"mpfoncl", {NULL}, 2579, "udp"}, {"tributary", {NULL}, 2580, "tcp"}, {"tributary", {NULL}, 2580, "udp"}, {"argis-te", {NULL}, 2581, "tcp"}, {"argis-te", {NULL}, 2581, "udp"}, {"argis-ds", {NULL}, 2582, "tcp"}, {"argis-ds", {NULL}, 2582, "udp"}, {"mon", {NULL}, 2583, "tcp"}, {"mon", {NULL}, 2583, "udp"}, {"cyaserv", {NULL}, 2584, "tcp"}, {"cyaserv", {NULL}, 2584, "udp"}, {"netx-server", {NULL}, 2585, "tcp"}, {"netx-server", {NULL}, 2585, "udp"}, {"netx-agent", {NULL}, 2586, "tcp"}, {"netx-agent", {NULL}, 2586, "udp"}, {"masc", {NULL}, 2587, "tcp"}, {"masc", {NULL}, 2587, "udp"}, {"privilege", {NULL}, 2588, "tcp"}, {"privilege", {NULL}, 2588, "udp"}, {"quartus-tcl", {NULL}, 2589, "tcp"}, {"quartus-tcl", {NULL}, 2589, "udp"}, {"idotdist", {NULL}, 2590, "tcp"}, {"idotdist", {NULL}, 2590, "udp"}, {"maytagshuffle", {NULL}, 2591, "tcp"}, {"maytagshuffle", {NULL}, 2591, "udp"}, {"netrek", {NULL}, 2592, "tcp"}, {"netrek", {NULL}, 2592, "udp"}, {"mns-mail", {NULL}, 2593, "tcp"}, {"mns-mail", {NULL}, 2593, "udp"}, {"dts", {NULL}, 2594, "tcp"}, {"dts", {NULL}, 2594, "udp"}, {"worldfusion1", {NULL}, 2595, "tcp"}, {"worldfusion1", {NULL}, 2595, "udp"}, {"worldfusion2", {NULL}, 2596, "tcp"}, {"worldfusion2", {NULL}, 2596, "udp"}, {"homesteadglory", {NULL}, 2597, "tcp"}, {"homesteadglory", {NULL}, 2597, "udp"}, {"citriximaclient", {NULL}, 2598, "tcp"}, {"citriximaclient", {NULL}, 2598, "udp"}, {"snapd", {NULL}, 2599, "tcp"}, {"snapd", {NULL}, 2599, "udp"}, {"hpstgmgr", {NULL}, 2600, "tcp"}, {"hpstgmgr", {NULL}, 2600, "udp"}, {"discp-client", {NULL}, 2601, "tcp"}, {"discp-client", {NULL}, 2601, "udp"}, {"discp-server", {NULL}, 2602, "tcp"}, {"discp-server", {NULL}, 2602, "udp"}, {"servicemeter", {NULL}, 2603, "tcp"}, {"servicemeter", {NULL}, 2603, "udp"}, {"nsc-ccs", {NULL}, 2604, "tcp"}, {"nsc-ccs", {NULL}, 2604, "udp"}, {"nsc-posa", {NULL}, 2605, "tcp"}, {"nsc-posa", {NULL}, 2605, "udp"}, {"netmon", {NULL}, 2606, "tcp"}, {"netmon", {NULL}, 2606, "udp"}, {"connection", {NULL}, 2607, "tcp"}, {"connection", {NULL}, 2607, "udp"}, {"wag-service", {NULL}, 2608, "tcp"}, {"wag-service", {NULL}, 2608, "udp"}, {"system-monitor", {NULL}, 2609, "tcp"}, {"system-monitor", {NULL}, 2609, "udp"}, {"versa-tek", {NULL}, 2610, "tcp"}, {"versa-tek", {NULL}, 2610, "udp"}, {"lionhead", {NULL}, 2611, "tcp"}, {"lionhead", {NULL}, 2611, "udp"}, {"qpasa-agent", {NULL}, 2612, "tcp"}, {"qpasa-agent", {NULL}, 2612, "udp"}, {"smntubootstrap", {NULL}, 2613, "tcp"}, {"smntubootstrap", {NULL}, 2613, "udp"}, {"neveroffline", {NULL}, 2614, "tcp"}, {"neveroffline", {NULL}, 2614, "udp"}, {"firepower", {NULL}, 2615, "tcp"}, {"firepower", {NULL}, 2615, "udp"}, {"appswitch-emp", {NULL}, 2616, "tcp"}, {"appswitch-emp", {NULL}, 2616, "udp"}, {"cmadmin", {NULL}, 2617, "tcp"}, {"cmadmin", {NULL}, 2617, "udp"}, {"priority-e-com", {NULL}, 2618, "tcp"}, {"priority-e-com", {NULL}, 2618, "udp"}, {"bruce", {NULL}, 2619, "tcp"}, {"bruce", {NULL}, 2619, "udp"}, {"lpsrecommender", {NULL}, 2620, "tcp"}, {"lpsrecommender", {NULL}, 2620, "udp"}, {"miles-apart", {NULL}, 2621, "tcp"}, {"miles-apart", {NULL}, 2621, "udp"}, {"metricadbc", {NULL}, 2622, "tcp"}, {"metricadbc", {NULL}, 2622, "udp"}, {"lmdp", {NULL}, 2623, "tcp"}, {"lmdp", {NULL}, 2623, "udp"}, {"aria", {NULL}, 2624, "tcp"}, {"aria", {NULL}, 2624, "udp"}, {"blwnkl-port", {NULL}, 2625, "tcp"}, {"blwnkl-port", {NULL}, 2625, "udp"}, {"gbjd816", {NULL}, 2626, "tcp"}, {"gbjd816", {NULL}, 2626, "udp"}, {"moshebeeri", {NULL}, 2627, "tcp"}, {"moshebeeri", {NULL}, 2627, "udp"}, {"dict", {NULL}, 2628, "tcp"}, {"dict", {NULL}, 2628, "udp"}, {"sitaraserver", {NULL}, 2629, "tcp"}, {"sitaraserver", {NULL}, 2629, "udp"}, {"sitaramgmt", {NULL}, 2630, "tcp"}, {"sitaramgmt", {NULL}, 2630, "udp"}, {"sitaradir", {NULL}, 2631, "tcp"}, {"sitaradir", {NULL}, 2631, "udp"}, {"irdg-post", {NULL}, 2632, "tcp"}, {"irdg-post", {NULL}, 2632, "udp"}, {"interintelli", {NULL}, 2633, "tcp"}, {"interintelli", {NULL}, 2633, "udp"}, {"pk-electronics", {NULL}, 2634, "tcp"}, {"pk-electronics", {NULL}, 2634, "udp"}, {"backburner", {NULL}, 2635, "tcp"}, {"backburner", {NULL}, 2635, "udp"}, {"solve", {NULL}, 2636, "tcp"}, {"solve", {NULL}, 2636, "udp"}, {"imdocsvc", {NULL}, 2637, "tcp"}, {"imdocsvc", {NULL}, 2637, "udp"}, {"sybaseanywhere", {NULL}, 2638, "tcp"}, {"sybaseanywhere", {NULL}, 2638, "udp"}, {"aminet", {NULL}, 2639, "tcp"}, {"aminet", {NULL}, 2639, "udp"}, {"sai_sentlm", {NULL}, 2640, "tcp"}, {"sai_sentlm", {NULL}, 2640, "udp"}, {"hdl-srv", {NULL}, 2641, "tcp"}, {"hdl-srv", {NULL}, 2641, "udp"}, {"tragic", {NULL}, 2642, "tcp"}, {"tragic", {NULL}, 2642, "udp"}, {"gte-samp", {NULL}, 2643, "tcp"}, {"gte-samp", {NULL}, 2643, "udp"}, {"travsoft-ipx-t", {NULL}, 2644, "tcp"}, {"travsoft-ipx-t", {NULL}, 2644, "udp"}, {"novell-ipx-cmd", {NULL}, 2645, "tcp"}, {"novell-ipx-cmd", {NULL}, 2645, "udp"}, {"and-lm", {NULL}, 2646, "tcp"}, {"and-lm", {NULL}, 2646, "udp"}, {"syncserver", {NULL}, 2647, "tcp"}, {"syncserver", {NULL}, 2647, "udp"}, {"upsnotifyprot", {NULL}, 2648, "tcp"}, {"upsnotifyprot", {NULL}, 2648, "udp"}, {"vpsipport", {NULL}, 2649, "tcp"}, {"vpsipport", {NULL}, 2649, "udp"}, {"eristwoguns", {NULL}, 2650, "tcp"}, {"eristwoguns", {NULL}, 2650, "udp"}, {"ebinsite", {NULL}, 2651, "tcp"}, {"ebinsite", {NULL}, 2651, "udp"}, {"interpathpanel", {NULL}, 2652, "tcp"}, {"interpathpanel", {NULL}, 2652, "udp"}, {"sonus", {NULL}, 2653, "tcp"}, {"sonus", {NULL}, 2653, "udp"}, {"corel_vncadmin", {NULL}, 2654, "tcp"}, {"corel_vncadmin", {NULL}, 2654, "udp"}, {"unglue", {NULL}, 2655, "tcp"}, {"unglue", {NULL}, 2655, "udp"}, {"kana", {NULL}, 2656, "tcp"}, {"kana", {NULL}, 2656, "udp"}, {"sns-dispatcher", {NULL}, 2657, "tcp"}, {"sns-dispatcher", {NULL}, 2657, "udp"}, {"sns-admin", {NULL}, 2658, "tcp"}, {"sns-admin", {NULL}, 2658, "udp"}, {"sns-query", {NULL}, 2659, "tcp"}, {"sns-query", {NULL}, 2659, "udp"}, {"gcmonitor", {NULL}, 2660, "tcp"}, {"gcmonitor", {NULL}, 2660, "udp"}, {"olhost", {NULL}, 2661, "tcp"}, {"olhost", {NULL}, 2661, "udp"}, {"bintec-capi", {NULL}, 2662, "tcp"}, {"bintec-capi", {NULL}, 2662, "udp"}, {"bintec-tapi", {NULL}, 2663, "tcp"}, {"bintec-tapi", {NULL}, 2663, "udp"}, {"patrol-mq-gm", {NULL}, 2664, "tcp"}, {"patrol-mq-gm", {NULL}, 2664, "udp"}, {"patrol-mq-nm", {NULL}, 2665, "tcp"}, {"patrol-mq-nm", {NULL}, 2665, "udp"}, {"extensis", {NULL}, 2666, "tcp"}, {"extensis", {NULL}, 2666, "udp"}, {"alarm-clock-s", {NULL}, 2667, "tcp"}, {"alarm-clock-s", {NULL}, 2667, "udp"}, {"alarm-clock-c", {NULL}, 2668, "tcp"}, {"alarm-clock-c", {NULL}, 2668, "udp"}, {"toad", {NULL}, 2669, "tcp"}, {"toad", {NULL}, 2669, "udp"}, {"tve-announce", {NULL}, 2670, "tcp"}, {"tve-announce", {NULL}, 2670, "udp"}, {"newlixreg", {NULL}, 2671, "tcp"}, {"newlixreg", {NULL}, 2671, "udp"}, {"nhserver", {NULL}, 2672, "tcp"}, {"nhserver", {NULL}, 2672, "udp"}, {"firstcall42", {NULL}, 2673, "tcp"}, {"firstcall42", {NULL}, 2673, "udp"}, {"ewnn", {NULL}, 2674, "tcp"}, {"ewnn", {NULL}, 2674, "udp"}, {"ttc-etap", {NULL}, 2675, "tcp"}, {"ttc-etap", {NULL}, 2675, "udp"}, {"simslink", {NULL}, 2676, "tcp"}, {"simslink", {NULL}, 2676, "udp"}, {"gadgetgate1way", {NULL}, 2677, "tcp"}, {"gadgetgate1way", {NULL}, 2677, "udp"}, {"gadgetgate2way", {NULL}, 2678, "tcp"}, {"gadgetgate2way", {NULL}, 2678, "udp"}, {"syncserverssl", {NULL}, 2679, "tcp"}, {"syncserverssl", {NULL}, 2679, "udp"}, {"pxc-sapxom", {NULL}, 2680, "tcp"}, {"pxc-sapxom", {NULL}, 2680, "udp"}, {"mpnjsomb", {NULL}, 2681, "tcp"}, {"mpnjsomb", {NULL}, 2681, "udp"}, {"ncdloadbalance", {NULL}, 2683, "tcp"}, {"ncdloadbalance", {NULL}, 2683, "udp"}, {"mpnjsosv", {NULL}, 2684, "tcp"}, {"mpnjsosv", {NULL}, 2684, "udp"}, {"mpnjsocl", {NULL}, 2685, "tcp"}, {"mpnjsocl", {NULL}, 2685, "udp"}, {"mpnjsomg", {NULL}, 2686, "tcp"}, {"mpnjsomg", {NULL}, 2686, "udp"}, {"pq-lic-mgmt", {NULL}, 2687, "tcp"}, {"pq-lic-mgmt", {NULL}, 2687, "udp"}, {"md-cg-http", {NULL}, 2688, "tcp"}, {"md-cg-http", {NULL}, 2688, "udp"}, {"fastlynx", {NULL}, 2689, "tcp"}, {"fastlynx", {NULL}, 2689, "udp"}, {"hp-nnm-data", {NULL}, 2690, "tcp"}, {"hp-nnm-data", {NULL}, 2690, "udp"}, {"itinternet", {NULL}, 2691, "tcp"}, {"itinternet", {NULL}, 2691, "udp"}, {"admins-lms", {NULL}, 2692, "tcp"}, {"admins-lms", {NULL}, 2692, "udp"}, {"pwrsevent", {NULL}, 2694, "tcp"}, {"pwrsevent", {NULL}, 2694, "udp"}, {"vspread", {NULL}, 2695, "tcp"}, {"vspread", {NULL}, 2695, "udp"}, {"unifyadmin", {NULL}, 2696, "tcp"}, {"unifyadmin", {NULL}, 2696, "udp"}, {"oce-snmp-trap", {NULL}, 2697, "tcp"}, {"oce-snmp-trap", {NULL}, 2697, "udp"}, {"mck-ivpip", {NULL}, 2698, "tcp"}, {"mck-ivpip", {NULL}, 2698, "udp"}, {"csoft-plusclnt", {NULL}, 2699, "tcp"}, {"csoft-plusclnt", {NULL}, 2699, "udp"}, {"tqdata", {NULL}, 2700, "tcp"}, {"tqdata", {NULL}, 2700, "udp"}, {"sms-rcinfo", {NULL}, 2701, "tcp"}, {"sms-rcinfo", {NULL}, 2701, "udp"}, {"sms-xfer", {NULL}, 2702, "tcp"}, {"sms-xfer", {NULL}, 2702, "udp"}, {"sms-chat", {NULL}, 2703, "tcp"}, {"sms-chat", {NULL}, 2703, "udp"}, {"sms-remctrl", {NULL}, 2704, "tcp"}, {"sms-remctrl", {NULL}, 2704, "udp"}, {"sds-admin", {NULL}, 2705, "tcp"}, {"sds-admin", {NULL}, 2705, "udp"}, {"ncdmirroring", {NULL}, 2706, "tcp"}, {"ncdmirroring", {NULL}, 2706, "udp"}, {"emcsymapiport", {NULL}, 2707, "tcp"}, {"emcsymapiport", {NULL}, 2707, "udp"}, {"banyan-net", {NULL}, 2708, "tcp"}, {"banyan-net", {NULL}, 2708, "udp"}, {"supermon", {NULL}, 2709, "tcp"}, {"supermon", {NULL}, 2709, "udp"}, {"sso-service", {NULL}, 2710, "tcp"}, {"sso-service", {NULL}, 2710, "udp"}, {"sso-control", {NULL}, 2711, "tcp"}, {"sso-control", {NULL}, 2711, "udp"}, {"aocp", {NULL}, 2712, "tcp"}, {"aocp", {NULL}, 2712, "udp"}, {"raventbs", {NULL}, 2713, "tcp"}, {"raventbs", {NULL}, 2713, "udp"}, {"raventdm", {NULL}, 2714, "tcp"}, {"raventdm", {NULL}, 2714, "udp"}, {"hpstgmgr2", {NULL}, 2715, "tcp"}, {"hpstgmgr2", {NULL}, 2715, "udp"}, {"inova-ip-disco", {NULL}, 2716, "tcp"}, {"inova-ip-disco", {NULL}, 2716, "udp"}, {"pn-requester", {NULL}, 2717, "tcp"}, {"pn-requester", {NULL}, 2717, "udp"}, {"pn-requester2", {NULL}, 2718, "tcp"}, {"pn-requester2", {NULL}, 2718, "udp"}, {"scan-change", {NULL}, 2719, "tcp"}, {"scan-change", {NULL}, 2719, "udp"}, {"wkars", {NULL}, 2720, "tcp"}, {"wkars", {NULL}, 2720, "udp"}, {"smart-diagnose", {NULL}, 2721, "tcp"}, {"smart-diagnose", {NULL}, 2721, "udp"}, {"proactivesrvr", {NULL}, 2722, "tcp"}, {"proactivesrvr", {NULL}, 2722, "udp"}, {"watchdog-nt", {NULL}, 2723, "tcp"}, {"watchdog-nt", {NULL}, 2723, "udp"}, {"qotps", {NULL}, 2724, "tcp"}, {"qotps", {NULL}, 2724, "udp"}, {"msolap-ptp2", {NULL}, 2725, "tcp"}, {"msolap-ptp2", {NULL}, 2725, "udp"}, {"tams", {NULL}, 2726, "tcp"}, {"tams", {NULL}, 2726, "udp"}, {"mgcp-callagent", {NULL}, 2727, "tcp"}, {"mgcp-callagent", {NULL}, 2727, "udp"}, {"sqdr", {NULL}, 2728, "tcp"}, {"sqdr", {NULL}, 2728, "udp"}, {"tcim-control", {NULL}, 2729, "tcp"}, {"tcim-control", {NULL}, 2729, "udp"}, {"nec-raidplus", {NULL}, 2730, "tcp"}, {"nec-raidplus", {NULL}, 2730, "udp"}, {"fyre-messanger", {NULL}, 2731, "tcp"}, {"fyre-messanger", {NULL}, 2731, "udp"}, {"g5m", {NULL}, 2732, "tcp"}, {"g5m", {NULL}, 2732, "udp"}, {"signet-ctf", {NULL}, 2733, "tcp"}, {"signet-ctf", {NULL}, 2733, "udp"}, {"ccs-software", {NULL}, 2734, "tcp"}, {"ccs-software", {NULL}, 2734, "udp"}, {"netiq-mc", {NULL}, 2735, "tcp"}, {"netiq-mc", {NULL}, 2735, "udp"}, {"radwiz-nms-srv", {NULL}, 2736, "tcp"}, {"radwiz-nms-srv", {NULL}, 2736, "udp"}, {"srp-feedback", {NULL}, 2737, "tcp"}, {"srp-feedback", {NULL}, 2737, "udp"}, {"ndl-tcp-ois-gw", {NULL}, 2738, "tcp"}, {"ndl-tcp-ois-gw", {NULL}, 2738, "udp"}, {"tn-timing", {NULL}, 2739, "tcp"}, {"tn-timing", {NULL}, 2739, "udp"}, {"alarm", {NULL}, 2740, "tcp"}, {"alarm", {NULL}, 2740, "udp"}, {"tsb", {NULL}, 2741, "tcp"}, {"tsb", {NULL}, 2741, "udp"}, {"tsb2", {NULL}, 2742, "tcp"}, {"tsb2", {NULL}, 2742, "udp"}, {"murx", {NULL}, 2743, "tcp"}, {"murx", {NULL}, 2743, "udp"}, {"honyaku", {NULL}, 2744, "tcp"}, {"honyaku", {NULL}, 2744, "udp"}, {"urbisnet", {NULL}, 2745, "tcp"}, {"urbisnet", {NULL}, 2745, "udp"}, {"cpudpencap", {NULL}, 2746, "tcp"}, {"cpudpencap", {NULL}, 2746, "udp"}, {"fjippol-swrly", {NULL}, 2747, "tcp"}, {"fjippol-swrly", {NULL}, 2747, "udp"}, {"fjippol-polsvr", {NULL}, 2748, "tcp"}, {"fjippol-polsvr", {NULL}, 2748, "udp"}, {"fjippol-cnsl", {NULL}, 2749, "tcp"}, {"fjippol-cnsl", {NULL}, 2749, "udp"}, {"fjippol-port1", {NULL}, 2750, "tcp"}, {"fjippol-port1", {NULL}, 2750, "udp"}, {"fjippol-port2", {NULL}, 2751, "tcp"}, {"fjippol-port2", {NULL}, 2751, "udp"}, {"rsisysaccess", {NULL}, 2752, "tcp"}, {"rsisysaccess", {NULL}, 2752, "udp"}, {"de-spot", {NULL}, 2753, "tcp"}, {"de-spot", {NULL}, 2753, "udp"}, {"apollo-cc", {NULL}, 2754, "tcp"}, {"apollo-cc", {NULL}, 2754, "udp"}, {"expresspay", {NULL}, 2755, "tcp"}, {"expresspay", {NULL}, 2755, "udp"}, {"simplement-tie", {NULL}, 2756, "tcp"}, {"simplement-tie", {NULL}, 2756, "udp"}, {"cnrp", {NULL}, 2757, "tcp"}, {"cnrp", {NULL}, 2757, "udp"}, {"apollo-status", {NULL}, 2758, "tcp"}, {"apollo-status", {NULL}, 2758, "udp"}, {"apollo-gms", {NULL}, 2759, "tcp"}, {"apollo-gms", {NULL}, 2759, "udp"}, {"sabams", {NULL}, 2760, "tcp"}, {"sabams", {NULL}, 2760, "udp"}, {"dicom-iscl", {NULL}, 2761, "tcp"}, {"dicom-iscl", {NULL}, 2761, "udp"}, {"dicom-tls", {NULL}, 2762, "tcp"}, {"dicom-tls", {NULL}, 2762, "udp"}, {"desktop-dna", {NULL}, 2763, "tcp"}, {"desktop-dna", {NULL}, 2763, "udp"}, {"data-insurance", {NULL}, 2764, "tcp"}, {"data-insurance", {NULL}, 2764, "udp"}, {"qip-audup", {NULL}, 2765, "tcp"}, {"qip-audup", {NULL}, 2765, "udp"}, {"compaq-scp", {NULL}, 2766, "tcp"}, {"compaq-scp", {NULL}, 2766, "udp"}, {"uadtc", {NULL}, 2767, "tcp"}, {"uadtc", {NULL}, 2767, "udp"}, {"uacs", {NULL}, 2768, "tcp"}, {"uacs", {NULL}, 2768, "udp"}, {"exce", {NULL}, 2769, "tcp"}, {"exce", {NULL}, 2769, "udp"}, {"veronica", {NULL}, 2770, "tcp"}, {"veronica", {NULL}, 2770, "udp"}, {"vergencecm", {NULL}, 2771, "tcp"}, {"vergencecm", {NULL}, 2771, "udp"}, {"auris", {NULL}, 2772, "tcp"}, {"auris", {NULL}, 2772, "udp"}, {"rbakcup1", {NULL}, 2773, "tcp"}, {"rbakcup1", {NULL}, 2773, "udp"}, {"rbakcup2", {NULL}, 2774, "tcp"}, {"rbakcup2", {NULL}, 2774, "udp"}, {"smpp", {NULL}, 2775, "tcp"}, {"smpp", {NULL}, 2775, "udp"}, {"ridgeway1", {NULL}, 2776, "tcp"}, {"ridgeway1", {NULL}, 2776, "udp"}, {"ridgeway2", {NULL}, 2777, "tcp"}, {"ridgeway2", {NULL}, 2777, "udp"}, {"gwen-sonya", {NULL}, 2778, "tcp"}, {"gwen-sonya", {NULL}, 2778, "udp"}, {"lbc-sync", {NULL}, 2779, "tcp"}, {"lbc-sync", {NULL}, 2779, "udp"}, {"lbc-control", {NULL}, 2780, "tcp"}, {"lbc-control", {NULL}, 2780, "udp"}, {"whosells", {NULL}, 2781, "tcp"}, {"whosells", {NULL}, 2781, "udp"}, {"everydayrc", {NULL}, 2782, "tcp"}, {"everydayrc", {NULL}, 2782, "udp"}, {"aises", {NULL}, 2783, "tcp"}, {"aises", {NULL}, 2783, "udp"}, {"www-dev", {NULL}, 2784, "tcp"}, {"www-dev", {NULL}, 2784, "udp"}, {"aic-np", {NULL}, 2785, "tcp"}, {"aic-np", {NULL}, 2785, "udp"}, {"aic-oncrpc", {NULL}, 2786, "tcp"}, {"aic-oncrpc", {NULL}, 2786, "udp"}, {"piccolo", {NULL}, 2787, "tcp"}, {"piccolo", {NULL}, 2787, "udp"}, {"fryeserv", {NULL}, 2788, "tcp"}, {"fryeserv", {NULL}, 2788, "udp"}, {"media-agent", {NULL}, 2789, "tcp"}, {"media-agent", {NULL}, 2789, "udp"}, {"plgproxy", {NULL}, 2790, "tcp"}, {"plgproxy", {NULL}, 2790, "udp"}, {"mtport-regist", {NULL}, 2791, "tcp"}, {"mtport-regist", {NULL}, 2791, "udp"}, {"f5-globalsite", {NULL}, 2792, "tcp"}, {"f5-globalsite", {NULL}, 2792, "udp"}, {"initlsmsad", {NULL}, 2793, "tcp"}, {"initlsmsad", {NULL}, 2793, "udp"}, {"livestats", {NULL}, 2795, "tcp"}, {"livestats", {NULL}, 2795, "udp"}, {"ac-tech", {NULL}, 2796, "tcp"}, {"ac-tech", {NULL}, 2796, "udp"}, {"esp-encap", {NULL}, 2797, "tcp"}, {"esp-encap", {NULL}, 2797, "udp"}, {"tmesis-upshot", {NULL}, 2798, "tcp"}, {"tmesis-upshot", {NULL}, 2798, "udp"}, {"icon-discover", {NULL}, 2799, "tcp"}, {"icon-discover", {NULL}, 2799, "udp"}, {"acc-raid", {NULL}, 2800, "tcp"}, {"acc-raid", {NULL}, 2800, "udp"}, {"igcp", {NULL}, 2801, "tcp"}, {"igcp", {NULL}, 2801, "udp"}, {"veritas-tcp1", {NULL}, 2802, "tcp"}, {"veritas-udp1", {NULL}, 2802, "udp"}, {"btprjctrl", {NULL}, 2803, "tcp"}, {"btprjctrl", {NULL}, 2803, "udp"}, {"dvr-esm", {NULL}, 2804, "tcp"}, {"dvr-esm", {NULL}, 2804, "udp"}, {"wta-wsp-s", {NULL}, 2805, "tcp"}, {"wta-wsp-s", {NULL}, 2805, "udp"}, {"cspuni", {NULL}, 2806, "tcp"}, {"cspuni", {NULL}, 2806, "udp"}, {"cspmulti", {NULL}, 2807, "tcp"}, {"cspmulti", {NULL}, 2807, "udp"}, {"j-lan-p", {NULL}, 2808, "tcp"}, {"j-lan-p", {NULL}, 2808, "udp"}, {"corbaloc", {NULL}, 2809, "tcp"}, {"corbaloc", {NULL}, 2809, "udp"}, {"netsteward", {NULL}, 2810, "tcp"}, {"netsteward", {NULL}, 2810, "udp"}, {"gsiftp", {NULL}, 2811, "tcp"}, {"gsiftp", {NULL}, 2811, "udp"}, {"atmtcp", {NULL}, 2812, "tcp"}, {"atmtcp", {NULL}, 2812, "udp"}, {"llm-pass", {NULL}, 2813, "tcp"}, {"llm-pass", {NULL}, 2813, "udp"}, {"llm-csv", {NULL}, 2814, "tcp"}, {"llm-csv", {NULL}, 2814, "udp"}, {"lbc-measure", {NULL}, 2815, "tcp"}, {"lbc-measure", {NULL}, 2815, "udp"}, {"lbc-watchdog", {NULL}, 2816, "tcp"}, {"lbc-watchdog", {NULL}, 2816, "udp"}, {"nmsigport", {NULL}, 2817, "tcp"}, {"nmsigport", {NULL}, 2817, "udp"}, {"rmlnk", {NULL}, 2818, "tcp"}, {"rmlnk", {NULL}, 2818, "udp"}, {"fc-faultnotify", {NULL}, 2819, "tcp"}, {"fc-faultnotify", {NULL}, 2819, "udp"}, {"univision", {NULL}, 2820, "tcp"}, {"univision", {NULL}, 2820, "udp"}, {"vrts-at-port", {NULL}, 2821, "tcp"}, {"vrts-at-port", {NULL}, 2821, "udp"}, {"ka0wuc", {NULL}, 2822, "tcp"}, {"ka0wuc", {NULL}, 2822, "udp"}, {"cqg-netlan", {NULL}, 2823, "tcp"}, {"cqg-netlan", {NULL}, 2823, "udp"}, {"cqg-netlan-1", {NULL}, 2824, "tcp"}, {"cqg-netlan-1", {NULL}, 2824, "udp"}, {"slc-systemlog", {NULL}, 2826, "tcp"}, {"slc-systemlog", {NULL}, 2826, "udp"}, {"slc-ctrlrloops", {NULL}, 2827, "tcp"}, {"slc-ctrlrloops", {NULL}, 2827, "udp"}, {"itm-lm", {NULL}, 2828, "tcp"}, {"itm-lm", {NULL}, 2828, "udp"}, {"silkp1", {NULL}, 2829, "tcp"}, {"silkp1", {NULL}, 2829, "udp"}, {"silkp2", {NULL}, 2830, "tcp"}, {"silkp2", {NULL}, 2830, "udp"}, {"silkp3", {NULL}, 2831, "tcp"}, {"silkp3", {NULL}, 2831, "udp"}, {"silkp4", {NULL}, 2832, "tcp"}, {"silkp4", {NULL}, 2832, "udp"}, {"glishd", {NULL}, 2833, "tcp"}, {"glishd", {NULL}, 2833, "udp"}, {"evtp", {NULL}, 2834, "tcp"}, {"evtp", {NULL}, 2834, "udp"}, {"evtp-data", {NULL}, 2835, "tcp"}, {"evtp-data", {NULL}, 2835, "udp"}, {"catalyst", {NULL}, 2836, "tcp"}, {"catalyst", {NULL}, 2836, "udp"}, {"repliweb", {NULL}, 2837, "tcp"}, {"repliweb", {NULL}, 2837, "udp"}, {"starbot", {NULL}, 2838, "tcp"}, {"starbot", {NULL}, 2838, "udp"}, {"nmsigport", {NULL}, 2839, "tcp"}, {"nmsigport", {NULL}, 2839, "udp"}, {"l3-exprt", {NULL}, 2840, "tcp"}, {"l3-exprt", {NULL}, 2840, "udp"}, {"l3-ranger", {NULL}, 2841, "tcp"}, {"l3-ranger", {NULL}, 2841, "udp"}, {"l3-hawk", {NULL}, 2842, "tcp"}, {"l3-hawk", {NULL}, 2842, "udp"}, {"pdnet", {NULL}, 2843, "tcp"}, {"pdnet", {NULL}, 2843, "udp"}, {"bpcp-poll", {NULL}, 2844, "tcp"}, {"bpcp-poll", {NULL}, 2844, "udp"}, {"bpcp-trap", {NULL}, 2845, "tcp"}, {"bpcp-trap", {NULL}, 2845, "udp"}, {"aimpp-hello", {NULL}, 2846, "tcp"}, {"aimpp-hello", {NULL}, 2846, "udp"}, {"aimpp-port-req", {NULL}, 2847, "tcp"}, {"aimpp-port-req", {NULL}, 2847, "udp"}, {"amt-blc-port", {NULL}, 2848, "tcp"}, {"amt-blc-port", {NULL}, 2848, "udp"}, {"fxp", {NULL}, 2849, "tcp"}, {"fxp", {NULL}, 2849, "udp"}, {"metaconsole", {NULL}, 2850, "tcp"}, {"metaconsole", {NULL}, 2850, "udp"}, {"webemshttp", {NULL}, 2851, "tcp"}, {"webemshttp", {NULL}, 2851, "udp"}, {"bears-01", {NULL}, 2852, "tcp"}, {"bears-01", {NULL}, 2852, "udp"}, {"ispipes", {NULL}, 2853, "tcp"}, {"ispipes", {NULL}, 2853, "udp"}, {"infomover", {NULL}, 2854, "tcp"}, {"infomover", {NULL}, 2854, "udp"}, {"msrp", {NULL}, 2855, "tcp"}, {"msrp", {NULL}, 2855, "udp"}, {"cesdinv", {NULL}, 2856, "tcp"}, {"cesdinv", {NULL}, 2856, "udp"}, {"simctlp", {NULL}, 2857, "tcp"}, {"simctlp", {NULL}, 2857, "udp"}, {"ecnp", {NULL}, 2858, "tcp"}, {"ecnp", {NULL}, 2858, "udp"}, {"activememory", {NULL}, 2859, "tcp"}, {"activememory", {NULL}, 2859, "udp"}, {"dialpad-voice1", {NULL}, 2860, "tcp"}, {"dialpad-voice1", {NULL}, 2860, "udp"}, {"dialpad-voice2", {NULL}, 2861, "tcp"}, {"dialpad-voice2", {NULL}, 2861, "udp"}, {"ttg-protocol", {NULL}, 2862, "tcp"}, {"ttg-protocol", {NULL}, 2862, "udp"}, {"sonardata", {NULL}, 2863, "tcp"}, {"sonardata", {NULL}, 2863, "udp"}, {"astromed-main", {NULL}, 2864, "tcp"}, {"astromed-main", {NULL}, 2864, "udp"}, {"pit-vpn", {NULL}, 2865, "tcp"}, {"pit-vpn", {NULL}, 2865, "udp"}, {"iwlistener", {NULL}, 2866, "tcp"}, {"iwlistener", {NULL}, 2866, "udp"}, {"esps-portal", {NULL}, 2867, "tcp"}, {"esps-portal", {NULL}, 2867, "udp"}, {"npep-messaging", {NULL}, 2868, "tcp"}, {"npep-messaging", {NULL}, 2868, "udp"}, {"icslap", {NULL}, 2869, "tcp"}, {"icslap", {NULL}, 2869, "udp"}, {"daishi", {NULL}, 2870, "tcp"}, {"daishi", {NULL}, 2870, "udp"}, {"msi-selectplay", {NULL}, 2871, "tcp"}, {"msi-selectplay", {NULL}, 2871, "udp"}, {"radix", {NULL}, 2872, "tcp"}, {"radix", {NULL}, 2872, "udp"}, {"dxmessagebase1", {NULL}, 2874, "tcp"}, {"dxmessagebase1", {NULL}, 2874, "udp"}, {"dxmessagebase2", {NULL}, 2875, "tcp"}, {"dxmessagebase2", {NULL}, 2875, "udp"}, {"sps-tunnel", {NULL}, 2876, "tcp"}, {"sps-tunnel", {NULL}, 2876, "udp"}, {"bluelance", {NULL}, 2877, "tcp"}, {"bluelance", {NULL}, 2877, "udp"}, {"aap", {NULL}, 2878, "tcp"}, {"aap", {NULL}, 2878, "udp"}, {"ucentric-ds", {NULL}, 2879, "tcp"}, {"ucentric-ds", {NULL}, 2879, "udp"}, {"synapse", {NULL}, 2880, "tcp"}, {"synapse", {NULL}, 2880, "udp"}, {"ndsp", {NULL}, 2881, "tcp"}, {"ndsp", {NULL}, 2881, "udp"}, {"ndtp", {NULL}, 2882, "tcp"}, {"ndtp", {NULL}, 2882, "udp"}, {"ndnp", {NULL}, 2883, "tcp"}, {"ndnp", {NULL}, 2883, "udp"}, {"flashmsg", {NULL}, 2884, "tcp"}, {"flashmsg", {NULL}, 2884, "udp"}, {"topflow", {NULL}, 2885, "tcp"}, {"topflow", {NULL}, 2885, "udp"}, {"responselogic", {NULL}, 2886, "tcp"}, {"responselogic", {NULL}, 2886, "udp"}, {"aironetddp", {NULL}, 2887, "tcp"}, {"aironetddp", {NULL}, 2887, "udp"}, {"spcsdlobby", {NULL}, 2888, "tcp"}, {"spcsdlobby", {NULL}, 2888, "udp"}, {"rsom", {NULL}, 2889, "tcp"}, {"rsom", {NULL}, 2889, "udp"}, {"cspclmulti", {NULL}, 2890, "tcp"}, {"cspclmulti", {NULL}, 2890, "udp"}, {"cinegrfx-elmd", {NULL}, 2891, "tcp"}, {"cinegrfx-elmd", {NULL}, 2891, "udp"}, {"snifferdata", {NULL}, 2892, "tcp"}, {"snifferdata", {NULL}, 2892, "udp"}, {"vseconnector", {NULL}, 2893, "tcp"}, {"vseconnector", {NULL}, 2893, "udp"}, {"abacus-remote", {NULL}, 2894, "tcp"}, {"abacus-remote", {NULL}, 2894, "udp"}, {"natuslink", {NULL}, 2895, "tcp"}, {"natuslink", {NULL}, 2895, "udp"}, {"ecovisiong6-1", {NULL}, 2896, "tcp"}, {"ecovisiong6-1", {NULL}, 2896, "udp"}, {"citrix-rtmp", {NULL}, 2897, "tcp"}, {"citrix-rtmp", {NULL}, 2897, "udp"}, {"appliance-cfg", {NULL}, 2898, "tcp"}, {"appliance-cfg", {NULL}, 2898, "udp"}, {"powergemplus", {NULL}, 2899, "tcp"}, {"powergemplus", {NULL}, 2899, "udp"}, {"quicksuite", {NULL}, 2900, "tcp"}, {"quicksuite", {NULL}, 2900, "udp"}, {"allstorcns", {NULL}, 2901, "tcp"}, {"allstorcns", {NULL}, 2901, "udp"}, {"netaspi", {NULL}, 2902, "tcp"}, {"netaspi", {NULL}, 2902, "udp"}, {"suitcase", {NULL}, 2903, "tcp"}, {"suitcase", {NULL}, 2903, "udp"}, {"m2ua", {NULL}, 2904, "tcp"}, {"m2ua", {NULL}, 2904, "udp"}, {"m2ua", {NULL}, 2904, "sctp"}, {"m3ua", {NULL}, 2905, "tcp"}, {"m3ua", {NULL}, 2905, "sctp"}, {"caller9", {NULL}, 2906, "tcp"}, {"caller9", {NULL}, 2906, "udp"}, {"webmethods-b2b", {NULL}, 2907, "tcp"}, {"webmethods-b2b", {NULL}, 2907, "udp"}, {"mao", {NULL}, 2908, "tcp"}, {"mao", {NULL}, 2908, "udp"}, {"funk-dialout", {NULL}, 2909, "tcp"}, {"funk-dialout", {NULL}, 2909, "udp"}, {"tdaccess", {NULL}, 2910, "tcp"}, {"tdaccess", {NULL}, 2910, "udp"}, {"blockade", {NULL}, 2911, "tcp"}, {"blockade", {NULL}, 2911, "udp"}, {"epicon", {NULL}, 2912, "tcp"}, {"epicon", {NULL}, 2912, "udp"}, {"boosterware", {NULL}, 2913, "tcp"}, {"boosterware", {NULL}, 2913, "udp"}, {"gamelobby", {NULL}, 2914, "tcp"}, {"gamelobby", {NULL}, 2914, "udp"}, {"tksocket", {NULL}, 2915, "tcp"}, {"tksocket", {NULL}, 2915, "udp"}, {"elvin_server", {NULL}, 2916, "tcp"}, {"elvin_server", {NULL}, 2916, "udp"}, {"elvin_client", {NULL}, 2917, "tcp"}, {"elvin_client", {NULL}, 2917, "udp"}, {"kastenchasepad", {NULL}, 2918, "tcp"}, {"kastenchasepad", {NULL}, 2918, "udp"}, {"roboer", {NULL}, 2919, "tcp"}, {"roboer", {NULL}, 2919, "udp"}, {"roboeda", {NULL}, 2920, "tcp"}, {"roboeda", {NULL}, 2920, "udp"}, {"cesdcdman", {NULL}, 2921, "tcp"}, {"cesdcdman", {NULL}, 2921, "udp"}, {"cesdcdtrn", {NULL}, 2922, "tcp"}, {"cesdcdtrn", {NULL}, 2922, "udp"}, {"wta-wsp-wtp-s", {NULL}, 2923, "tcp"}, {"wta-wsp-wtp-s", {NULL}, 2923, "udp"}, {"precise-vip", {NULL}, 2924, "tcp"}, {"precise-vip", {NULL}, 2924, "udp"}, {"mobile-file-dl", {NULL}, 2926, "tcp"}, {"mobile-file-dl", {NULL}, 2926, "udp"}, {"unimobilectrl", {NULL}, 2927, "tcp"}, {"unimobilectrl", {NULL}, 2927, "udp"}, {"redstone-cpss", {NULL}, 2928, "tcp"}, {"redstone-cpss", {NULL}, 2928, "udp"}, {"amx-webadmin", {NULL}, 2929, "tcp"}, {"amx-webadmin", {NULL}, 2929, "udp"}, {"amx-weblinx", {NULL}, 2930, "tcp"}, {"amx-weblinx", {NULL}, 2930, "udp"}, {"circle-x", {NULL}, 2931, "tcp"}, {"circle-x", {NULL}, 2931, "udp"}, {"incp", {NULL}, 2932, "tcp"}, {"incp", {NULL}, 2932, "udp"}, {"4-tieropmgw", {NULL}, 2933, "tcp"}, {"4-tieropmgw", {NULL}, 2933, "udp"}, {"4-tieropmcli", {NULL}, 2934, "tcp"}, {"4-tieropmcli", {NULL}, 2934, "udp"}, {"qtp", {NULL}, 2935, "tcp"}, {"qtp", {NULL}, 2935, "udp"}, {"otpatch", {NULL}, 2936, "tcp"}, {"otpatch", {NULL}, 2936, "udp"}, {"pnaconsult-lm", {NULL}, 2937, "tcp"}, {"pnaconsult-lm", {NULL}, 2937, "udp"}, {"sm-pas-1", {NULL}, 2938, "tcp"}, {"sm-pas-1", {NULL}, 2938, "udp"}, {"sm-pas-2", {NULL}, 2939, "tcp"}, {"sm-pas-2", {NULL}, 2939, "udp"}, {"sm-pas-3", {NULL}, 2940, "tcp"}, {"sm-pas-3", {NULL}, 2940, "udp"}, {"sm-pas-4", {NULL}, 2941, "tcp"}, {"sm-pas-4", {NULL}, 2941, "udp"}, {"sm-pas-5", {NULL}, 2942, "tcp"}, {"sm-pas-5", {NULL}, 2942, "udp"}, {"ttnrepository", {NULL}, 2943, "tcp"}, {"ttnrepository", {NULL}, 2943, "udp"}, {"megaco-h248", {NULL}, 2944, "tcp"}, {"megaco-h248", {NULL}, 2944, "udp"}, {"megaco-h248", {NULL}, 2944, "sctp"}, {"h248-binary", {NULL}, 2945, "tcp"}, {"h248-binary", {NULL}, 2945, "udp"}, {"h248-binary", {NULL}, 2945, "sctp"}, {"fjsvmpor", {NULL}, 2946, "tcp"}, {"fjsvmpor", {NULL}, 2946, "udp"}, {"gpsd", {NULL}, 2947, "tcp"}, {"gpsd", {NULL}, 2947, "udp"}, {"wap-push", {NULL}, 2948, "tcp"}, {"wap-push", {NULL}, 2948, "udp"}, {"wap-pushsecure", {NULL}, 2949, "tcp"}, {"wap-pushsecure", {NULL}, 2949, "udp"}, {"esip", {NULL}, 2950, "tcp"}, {"esip", {NULL}, 2950, "udp"}, {"ottp", {NULL}, 2951, "tcp"}, {"ottp", {NULL}, 2951, "udp"}, {"mpfwsas", {NULL}, 2952, "tcp"}, {"mpfwsas", {NULL}, 2952, "udp"}, {"ovalarmsrv", {NULL}, 2953, "tcp"}, {"ovalarmsrv", {NULL}, 2953, "udp"}, {"ovalarmsrv-cmd", {NULL}, 2954, "tcp"}, {"ovalarmsrv-cmd", {NULL}, 2954, "udp"}, {"csnotify", {NULL}, 2955, "tcp"}, {"csnotify", {NULL}, 2955, "udp"}, {"ovrimosdbman", {NULL}, 2956, "tcp"}, {"ovrimosdbman", {NULL}, 2956, "udp"}, {"jmact5", {NULL}, 2957, "tcp"}, {"jmact5", {NULL}, 2957, "udp"}, {"jmact6", {NULL}, 2958, "tcp"}, {"jmact6", {NULL}, 2958, "udp"}, {"rmopagt", {NULL}, 2959, "tcp"}, {"rmopagt", {NULL}, 2959, "udp"}, {"dfoxserver", {NULL}, 2960, "tcp"}, {"dfoxserver", {NULL}, 2960, "udp"}, {"boldsoft-lm", {NULL}, 2961, "tcp"}, {"boldsoft-lm", {NULL}, 2961, "udp"}, {"iph-policy-cli", {NULL}, 2962, "tcp"}, {"iph-policy-cli", {NULL}, 2962, "udp"}, {"iph-policy-adm", {NULL}, 2963, "tcp"}, {"iph-policy-adm", {NULL}, 2963, "udp"}, {"bullant-srap", {NULL}, 2964, "tcp"}, {"bullant-srap", {NULL}, 2964, "udp"}, {"bullant-rap", {NULL}, 2965, "tcp"}, {"bullant-rap", {NULL}, 2965, "udp"}, {"idp-infotrieve", {NULL}, 2966, "tcp"}, {"idp-infotrieve", {NULL}, 2966, "udp"}, {"ssc-agent", {NULL}, 2967, "tcp"}, {"ssc-agent", {NULL}, 2967, "udp"}, {"enpp", {NULL}, 2968, "tcp"}, {"enpp", {NULL}, 2968, "udp"}, {"essp", {NULL}, 2969, "tcp"}, {"essp", {NULL}, 2969, "udp"}, {"index-net", {NULL}, 2970, "tcp"}, {"index-net", {NULL}, 2970, "udp"}, {"netclip", {NULL}, 2971, "tcp"}, {"netclip", {NULL}, 2971, "udp"}, {"pmsm-webrctl", {NULL}, 2972, "tcp"}, {"pmsm-webrctl", {NULL}, 2972, "udp"}, {"svnetworks", {NULL}, 2973, "tcp"}, {"svnetworks", {NULL}, 2973, "udp"}, {"signal", {NULL}, 2974, "tcp"}, {"signal", {NULL}, 2974, "udp"}, {"fjmpcm", {NULL}, 2975, "tcp"}, {"fjmpcm", {NULL}, 2975, "udp"}, {"cns-srv-port", {NULL}, 2976, "tcp"}, {"cns-srv-port", {NULL}, 2976, "udp"}, {"ttc-etap-ns", {NULL}, 2977, "tcp"}, {"ttc-etap-ns", {NULL}, 2977, "udp"}, {"ttc-etap-ds", {NULL}, 2978, "tcp"}, {"ttc-etap-ds", {NULL}, 2978, "udp"}, {"h263-video", {NULL}, 2979, "tcp"}, {"h263-video", {NULL}, 2979, "udp"}, {"wimd", {NULL}, 2980, "tcp"}, {"wimd", {NULL}, 2980, "udp"}, {"mylxamport", {NULL}, 2981, "tcp"}, {"mylxamport", {NULL}, 2981, "udp"}, {"iwb-whiteboard", {NULL}, 2982, "tcp"}, {"iwb-whiteboard", {NULL}, 2982, "udp"}, {"netplan", {NULL}, 2983, "tcp"}, {"netplan", {NULL}, 2983, "udp"}, {"hpidsadmin", {NULL}, 2984, "tcp"}, {"hpidsadmin", {NULL}, 2984, "udp"}, {"hpidsagent", {NULL}, 2985, "tcp"}, {"hpidsagent", {NULL}, 2985, "udp"}, {"stonefalls", {NULL}, 2986, "tcp"}, {"stonefalls", {NULL}, 2986, "udp"}, {"identify", {NULL}, 2987, "tcp"}, {"identify", {NULL}, 2987, "udp"}, {"hippad", {NULL}, 2988, "tcp"}, {"hippad", {NULL}, 2988, "udp"}, {"zarkov", {NULL}, 2989, "tcp"}, {"zarkov", {NULL}, 2989, "udp"}, {"boscap", {NULL}, 2990, "tcp"}, {"boscap", {NULL}, 2990, "udp"}, {"wkstn-mon", {NULL}, 2991, "tcp"}, {"wkstn-mon", {NULL}, 2991, "udp"}, {"avenyo", {NULL}, 2992, "tcp"}, {"avenyo", {NULL}, 2992, "udp"}, {"veritas-vis1", {NULL}, 2993, "tcp"}, {"veritas-vis1", {NULL}, 2993, "udp"}, {"veritas-vis2", {NULL}, 2994, "tcp"}, {"veritas-vis2", {NULL}, 2994, "udp"}, {"idrs", {NULL}, 2995, "tcp"}, {"idrs", {NULL}, 2995, "udp"}, {"vsixml", {NULL}, 2996, "tcp"}, {"vsixml", {NULL}, 2996, "udp"}, {"rebol", {NULL}, 2997, "tcp"}, {"rebol", {NULL}, 2997, "udp"}, {"realsecure", {NULL}, 2998, "tcp"}, {"realsecure", {NULL}, 2998, "udp"}, {"remoteware-un", {NULL}, 2999, "tcp"}, {"remoteware-un", {NULL}, 2999, "udp"}, {"hbci", {NULL}, 3000, "tcp"}, {"hbci", {NULL}, 3000, "udp"}, {"remoteware-cl", {NULL}, 3000, "tcp"}, {"remoteware-cl", {NULL}, 3000, "udp"}, {"exlm-agent", {NULL}, 3002, "tcp"}, {"exlm-agent", {NULL}, 3002, "udp"}, {"remoteware-srv", {NULL}, 3002, "tcp"}, {"remoteware-srv", {NULL}, 3002, "udp"}, {"cgms", {NULL}, 3003, "tcp"}, {"cgms", {NULL}, 3003, "udp"}, {"csoftragent", {NULL}, 3004, "tcp"}, {"csoftragent", {NULL}, 3004, "udp"}, {"geniuslm", {NULL}, 3005, "tcp"}, {"geniuslm", {NULL}, 3005, "udp"}, {"ii-admin", {NULL}, 3006, "tcp"}, {"ii-admin", {NULL}, 3006, "udp"}, {"lotusmtap", {NULL}, 3007, "tcp"}, {"lotusmtap", {NULL}, 3007, "udp"}, {"midnight-tech", {NULL}, 3008, "tcp"}, {"midnight-tech", {NULL}, 3008, "udp"}, {"pxc-ntfy", {NULL}, 3009, "tcp"}, {"pxc-ntfy", {NULL}, 3009, "udp"}, {"gw", {NULL}, 3010, "tcp"}, {"ping-pong", {NULL}, 3010, "udp"}, {"trusted-web", {NULL}, 3011, "tcp"}, {"trusted-web", {NULL}, 3011, "udp"}, {"twsdss", {NULL}, 3012, "tcp"}, {"twsdss", {NULL}, 3012, "udp"}, {"gilatskysurfer", {NULL}, 3013, "tcp"}, {"gilatskysurfer", {NULL}, 3013, "udp"}, {"broker_service", {NULL}, 3014, "tcp"}, {"broker_service", {NULL}, 3014, "udp"}, {"nati-dstp", {NULL}, 3015, "tcp"}, {"nati-dstp", {NULL}, 3015, "udp"}, {"notify_srvr", {NULL}, 3016, "tcp"}, {"notify_srvr", {NULL}, 3016, "udp"}, {"event_listener", {NULL}, 3017, "tcp"}, {"event_listener", {NULL}, 3017, "udp"}, {"srvc_registry", {NULL}, 3018, "tcp"}, {"srvc_registry", {NULL}, 3018, "udp"}, {"resource_mgr", {NULL}, 3019, "tcp"}, {"resource_mgr", {NULL}, 3019, "udp"}, {"cifs", {NULL}, 3020, "tcp"}, {"cifs", {NULL}, 3020, "udp"}, {"agriserver", {NULL}, 3021, "tcp"}, {"agriserver", {NULL}, 3021, "udp"}, {"csregagent", {NULL}, 3022, "tcp"}, {"csregagent", {NULL}, 3022, "udp"}, {"magicnotes", {NULL}, 3023, "tcp"}, {"magicnotes", {NULL}, 3023, "udp"}, {"nds_sso", {NULL}, 3024, "tcp"}, {"nds_sso", {NULL}, 3024, "udp"}, {"arepa-raft", {NULL}, 3025, "tcp"}, {"arepa-raft", {NULL}, 3025, "udp"}, {"agri-gateway", {NULL}, 3026, "tcp"}, {"agri-gateway", {NULL}, 3026, "udp"}, {"LiebDevMgmt_C", {NULL}, 3027, "tcp"}, {"LiebDevMgmt_C", {NULL}, 3027, "udp"}, {"LiebDevMgmt_DM", {NULL}, 3028, "tcp"}, {"LiebDevMgmt_DM", {NULL}, 3028, "udp"}, {"LiebDevMgmt_A", {NULL}, 3029, "tcp"}, {"LiebDevMgmt_A", {NULL}, 3029, "udp"}, {"arepa-cas", {NULL}, 3030, "tcp"}, {"arepa-cas", {NULL}, 3030, "udp"}, {"eppc", {NULL}, 3031, "tcp"}, {"eppc", {NULL}, 3031, "udp"}, {"redwood-chat", {NULL}, 3032, "tcp"}, {"redwood-chat", {NULL}, 3032, "udp"}, {"pdb", {NULL}, 3033, "tcp"}, {"pdb", {NULL}, 3033, "udp"}, {"osmosis-aeea", {NULL}, 3034, "tcp"}, {"osmosis-aeea", {NULL}, 3034, "udp"}, {"fjsv-gssagt", {NULL}, 3035, "tcp"}, {"fjsv-gssagt", {NULL}, 3035, "udp"}, {"hagel-dump", {NULL}, 3036, "tcp"}, {"hagel-dump", {NULL}, 3036, "udp"}, {"hp-san-mgmt", {NULL}, 3037, "tcp"}, {"hp-san-mgmt", {NULL}, 3037, "udp"}, {"santak-ups", {NULL}, 3038, "tcp"}, {"santak-ups", {NULL}, 3038, "udp"}, {"cogitate", {NULL}, 3039, "tcp"}, {"cogitate", {NULL}, 3039, "udp"}, {"tomato-springs", {NULL}, 3040, "tcp"}, {"tomato-springs", {NULL}, 3040, "udp"}, {"di-traceware", {NULL}, 3041, "tcp"}, {"di-traceware", {NULL}, 3041, "udp"}, {"journee", {NULL}, 3042, "tcp"}, {"journee", {NULL}, 3042, "udp"}, {"brp", {NULL}, 3043, "tcp"}, {"brp", {NULL}, 3043, "udp"}, {"epp", {NULL}, 3044, "tcp"}, {"epp", {NULL}, 3044, "udp"}, {"responsenet", {NULL}, 3045, "tcp"}, {"responsenet", {NULL}, 3045, "udp"}, {"di-ase", {NULL}, 3046, "tcp"}, {"di-ase", {NULL}, 3046, "udp"}, {"hlserver", {NULL}, 3047, "tcp"}, {"hlserver", {NULL}, 3047, "udp"}, {"pctrader", {NULL}, 3048, "tcp"}, {"pctrader", {NULL}, 3048, "udp"}, {"nsws", {NULL}, 3049, "tcp"}, {"nsws", {NULL}, 3049, "udp"}, {"gds_db", {NULL}, 3050, "tcp"}, {"gds_db", {NULL}, 3050, "udp"}, {"galaxy-server", {NULL}, 3051, "tcp"}, {"galaxy-server", {NULL}, 3051, "udp"}, {"apc-3052", {NULL}, 3052, "tcp"}, {"apc-3052", {NULL}, 3052, "udp"}, {"dsom-server", {NULL}, 3053, "tcp"}, {"dsom-server", {NULL}, 3053, "udp"}, {"amt-cnf-prot", {NULL}, 3054, "tcp"}, {"amt-cnf-prot", {NULL}, 3054, "udp"}, {"policyserver", {NULL}, 3055, "tcp"}, {"policyserver", {NULL}, 3055, "udp"}, {"cdl-server", {NULL}, 3056, "tcp"}, {"cdl-server", {NULL}, 3056, "udp"}, {"goahead-fldup", {NULL}, 3057, "tcp"}, {"goahead-fldup", {NULL}, 3057, "udp"}, {"videobeans", {NULL}, 3058, "tcp"}, {"videobeans", {NULL}, 3058, "udp"}, {"qsoft", {NULL}, 3059, "tcp"}, {"qsoft", {NULL}, 3059, "udp"}, {"interserver", {NULL}, 3060, "tcp"}, {"interserver", {NULL}, 3060, "udp"}, {"cautcpd", {NULL}, 3061, "tcp"}, {"cautcpd", {NULL}, 3061, "udp"}, {"ncacn-ip-tcp", {NULL}, 3062, "tcp"}, {"ncacn-ip-tcp", {NULL}, 3062, "udp"}, {"ncadg-ip-udp", {NULL}, 3063, "tcp"}, {"ncadg-ip-udp", {NULL}, 3063, "udp"}, {"rprt", {NULL}, 3064, "tcp"}, {"rprt", {NULL}, 3064, "udp"}, {"slinterbase", {NULL}, 3065, "tcp"}, {"slinterbase", {NULL}, 3065, "udp"}, {"netattachsdmp", {NULL}, 3066, "tcp"}, {"netattachsdmp", {NULL}, 3066, "udp"}, {"fjhpjp", {NULL}, 3067, "tcp"}, {"fjhpjp", {NULL}, 3067, "udp"}, {"ls3bcast", {NULL}, 3068, "tcp"}, {"ls3bcast", {NULL}, 3068, "udp"}, {"ls3", {NULL}, 3069, "tcp"}, {"ls3", {NULL}, 3069, "udp"}, {"mgxswitch", {NULL}, 3070, "tcp"}, {"mgxswitch", {NULL}, 3070, "udp"}, {"csd-mgmt-port", {NULL}, 3071, "tcp"}, {"csd-mgmt-port", {NULL}, 3071, "udp"}, {"csd-monitor", {NULL}, 3072, "tcp"}, {"csd-monitor", {NULL}, 3072, "udp"}, {"vcrp", {NULL}, 3073, "tcp"}, {"vcrp", {NULL}, 3073, "udp"}, {"xbox", {NULL}, 3074, "tcp"}, {"xbox", {NULL}, 3074, "udp"}, {"orbix-locator", {NULL}, 3075, "tcp"}, {"orbix-locator", {NULL}, 3075, "udp"}, {"orbix-config", {NULL}, 3076, "tcp"}, {"orbix-config", {NULL}, 3076, "udp"}, {"orbix-loc-ssl", {NULL}, 3077, "tcp"}, {"orbix-loc-ssl", {NULL}, 3077, "udp"}, {"orbix-cfg-ssl", {NULL}, 3078, "tcp"}, {"orbix-cfg-ssl", {NULL}, 3078, "udp"}, {"lv-frontpanel", {NULL}, 3079, "tcp"}, {"lv-frontpanel", {NULL}, 3079, "udp"}, {"stm_pproc", {NULL}, 3080, "tcp"}, {"stm_pproc", {NULL}, 3080, "udp"}, {"tl1-lv", {NULL}, 3081, "tcp"}, {"tl1-lv", {NULL}, 3081, "udp"}, {"tl1-raw", {NULL}, 3082, "tcp"}, {"tl1-raw", {NULL}, 3082, "udp"}, {"tl1-telnet", {NULL}, 3083, "tcp"}, {"tl1-telnet", {NULL}, 3083, "udp"}, {"itm-mccs", {NULL}, 3084, "tcp"}, {"itm-mccs", {NULL}, 3084, "udp"}, {"pcihreq", {NULL}, 3085, "tcp"}, {"pcihreq", {NULL}, 3085, "udp"}, {"jdl-dbkitchen", {NULL}, 3086, "tcp"}, {"jdl-dbkitchen", {NULL}, 3086, "udp"}, {"asoki-sma", {NULL}, 3087, "tcp"}, {"asoki-sma", {NULL}, 3087, "udp"}, {"xdtp", {NULL}, 3088, "tcp"}, {"xdtp", {NULL}, 3088, "udp"}, {"ptk-alink", {NULL}, 3089, "tcp"}, {"ptk-alink", {NULL}, 3089, "udp"}, {"stss", {NULL}, 3090, "tcp"}, {"stss", {NULL}, 3090, "udp"}, {"1ci-smcs", {NULL}, 3091, "tcp"}, {"1ci-smcs", {NULL}, 3091, "udp"}, {"rapidmq-center", {NULL}, 3093, "tcp"}, {"rapidmq-center", {NULL}, 3093, "udp"}, {"rapidmq-reg", {NULL}, 3094, "tcp"}, {"rapidmq-reg", {NULL}, 3094, "udp"}, {"panasas", {NULL}, 3095, "tcp"}, {"panasas", {NULL}, 3095, "udp"}, {"ndl-aps", {NULL}, 3096, "tcp"}, {"ndl-aps", {NULL}, 3096, "udp"}, {"itu-bicc-stc", {NULL}, 3097, "sctp"}, {"umm-port", {NULL}, 3098, "tcp"}, {"umm-port", {NULL}, 3098, "udp"}, {"chmd", {NULL}, 3099, "tcp"}, {"chmd", {NULL}, 3099, "udp"}, {"opcon-xps", {NULL}, 3100, "tcp"}, {"opcon-xps", {NULL}, 3100, "udp"}, {"hp-pxpib", {NULL}, 3101, "tcp"}, {"hp-pxpib", {NULL}, 3101, "udp"}, {"slslavemon", {NULL}, 3102, "tcp"}, {"slslavemon", {NULL}, 3102, "udp"}, {"autocuesmi", {NULL}, 3103, "tcp"}, {"autocuesmi", {NULL}, 3103, "udp"}, {"autocuelog", {NULL}, 3104, "tcp"}, {"autocuetime", {NULL}, 3104, "udp"}, {"cardbox", {NULL}, 3105, "tcp"}, {"cardbox", {NULL}, 3105, "udp"}, {"cardbox-http", {NULL}, 3106, "tcp"}, {"cardbox-http", {NULL}, 3106, "udp"}, {"business", {NULL}, 3107, "tcp"}, {"business", {NULL}, 3107, "udp"}, {"geolocate", {NULL}, 3108, "tcp"}, {"geolocate", {NULL}, 3108, "udp"}, {"personnel", {NULL}, 3109, "tcp"}, {"personnel", {NULL}, 3109, "udp"}, {"sim-control", {NULL}, 3110, "tcp"}, {"sim-control", {NULL}, 3110, "udp"}, {"wsynch", {NULL}, 3111, "tcp"}, {"wsynch", {NULL}, 3111, "udp"}, {"ksysguard", {NULL}, 3112, "tcp"}, {"ksysguard", {NULL}, 3112, "udp"}, {"cs-auth-svr", {NULL}, 3113, "tcp"}, {"cs-auth-svr", {NULL}, 3113, "udp"}, {"ccmad", {NULL}, 3114, "tcp"}, {"ccmad", {NULL}, 3114, "udp"}, {"mctet-master", {NULL}, 3115, "tcp"}, {"mctet-master", {NULL}, 3115, "udp"}, {"mctet-gateway", {NULL}, 3116, "tcp"}, {"mctet-gateway", {NULL}, 3116, "udp"}, {"mctet-jserv", {NULL}, 3117, "tcp"}, {"mctet-jserv", {NULL}, 3117, "udp"}, {"pkagent", {NULL}, 3118, "tcp"}, {"pkagent", {NULL}, 3118, "udp"}, {"d2000kernel", {NULL}, 3119, "tcp"}, {"d2000kernel", {NULL}, 3119, "udp"}, {"d2000webserver", {NULL}, 3120, "tcp"}, {"d2000webserver", {NULL}, 3120, "udp"}, {"vtr-emulator", {NULL}, 3122, "tcp"}, {"vtr-emulator", {NULL}, 3122, "udp"}, {"edix", {NULL}, 3123, "tcp"}, {"edix", {NULL}, 3123, "udp"}, {"beacon-port", {NULL}, 3124, "tcp"}, {"beacon-port", {NULL}, 3124, "udp"}, {"a13-an", {NULL}, 3125, "tcp"}, {"a13-an", {NULL}, 3125, "udp"}, {"ctx-bridge", {NULL}, 3127, "tcp"}, {"ctx-bridge", {NULL}, 3127, "udp"}, {"ndl-aas", {NULL}, 3128, "tcp"}, {"ndl-aas", {NULL}, 3128, "udp"}, {"netport-id", {NULL}, 3129, "tcp"}, {"netport-id", {NULL}, 3129, "udp"}, {"icpv2", {NULL}, 3130, "tcp"}, {"icpv2", {NULL}, 3130, "udp"}, {"netbookmark", {NULL}, 3131, "tcp"}, {"netbookmark", {NULL}, 3131, "udp"}, {"ms-rule-engine", {NULL}, 3132, "tcp"}, {"ms-rule-engine", {NULL}, 3132, "udp"}, {"prism-deploy", {NULL}, 3133, "tcp"}, {"prism-deploy", {NULL}, 3133, "udp"}, {"ecp", {NULL}, 3134, "tcp"}, {"ecp", {NULL}, 3134, "udp"}, {"peerbook-port", {NULL}, 3135, "tcp"}, {"peerbook-port", {NULL}, 3135, "udp"}, {"grubd", {NULL}, 3136, "tcp"}, {"grubd", {NULL}, 3136, "udp"}, {"rtnt-1", {NULL}, 3137, "tcp"}, {"rtnt-1", {NULL}, 3137, "udp"}, {"rtnt-2", {NULL}, 3138, "tcp"}, {"rtnt-2", {NULL}, 3138, "udp"}, {"incognitorv", {NULL}, 3139, "tcp"}, {"incognitorv", {NULL}, 3139, "udp"}, {"ariliamulti", {NULL}, 3140, "tcp"}, {"ariliamulti", {NULL}, 3140, "udp"}, {"vmodem", {NULL}, 3141, "tcp"}, {"vmodem", {NULL}, 3141, "udp"}, {"rdc-wh-eos", {NULL}, 3142, "tcp"}, {"rdc-wh-eos", {NULL}, 3142, "udp"}, {"seaview", {NULL}, 3143, "tcp"}, {"seaview", {NULL}, 3143, "udp"}, {"tarantella", {NULL}, 3144, "tcp"}, {"tarantella", {NULL}, 3144, "udp"}, {"csi-lfap", {NULL}, 3145, "tcp"}, {"csi-lfap", {NULL}, 3145, "udp"}, {"bears-02", {NULL}, 3146, "tcp"}, {"bears-02", {NULL}, 3146, "udp"}, {"rfio", {NULL}, 3147, "tcp"}, {"rfio", {NULL}, 3147, "udp"}, {"nm-game-admin", {NULL}, 3148, "tcp"}, {"nm-game-admin", {NULL}, 3148, "udp"}, {"nm-game-server", {NULL}, 3149, "tcp"}, {"nm-game-server", {NULL}, 3149, "udp"}, {"nm-asses-admin", {NULL}, 3150, "tcp"}, {"nm-asses-admin", {NULL}, 3150, "udp"}, {"nm-assessor", {NULL}, 3151, "tcp"}, {"nm-assessor", {NULL}, 3151, "udp"}, {"feitianrockey", {NULL}, 3152, "tcp"}, {"feitianrockey", {NULL}, 3152, "udp"}, {"s8-client-port", {NULL}, 3153, "tcp"}, {"s8-client-port", {NULL}, 3153, "udp"}, {"ccmrmi", {NULL}, 3154, "tcp"}, {"ccmrmi", {NULL}, 3154, "udp"}, {"jpegmpeg", {NULL}, 3155, "tcp"}, {"jpegmpeg", {NULL}, 3155, "udp"}, {"indura", {NULL}, 3156, "tcp"}, {"indura", {NULL}, 3156, "udp"}, {"e3consultants", {NULL}, 3157, "tcp"}, {"e3consultants", {NULL}, 3157, "udp"}, {"stvp", {NULL}, 3158, "tcp"}, {"stvp", {NULL}, 3158, "udp"}, {"navegaweb-port", {NULL}, 3159, "tcp"}, {"navegaweb-port", {NULL}, 3159, "udp"}, {"tip-app-server", {NULL}, 3160, "tcp"}, {"tip-app-server", {NULL}, 3160, "udp"}, {"doc1lm", {NULL}, 3161, "tcp"}, {"doc1lm", {NULL}, 3161, "udp"}, {"sflm", {NULL}, 3162, "tcp"}, {"sflm", {NULL}, 3162, "udp"}, {"res-sap", {NULL}, 3163, "tcp"}, {"res-sap", {NULL}, 3163, "udp"}, {"imprs", {NULL}, 3164, "tcp"}, {"imprs", {NULL}, 3164, "udp"}, {"newgenpay", {NULL}, 3165, "tcp"}, {"newgenpay", {NULL}, 3165, "udp"}, {"sossecollector", {NULL}, 3166, "tcp"}, {"sossecollector", {NULL}, 3166, "udp"}, {"nowcontact", {NULL}, 3167, "tcp"}, {"nowcontact", {NULL}, 3167, "udp"}, {"poweronnud", {NULL}, 3168, "tcp"}, {"poweronnud", {NULL}, 3168, "udp"}, {"serverview-as", {NULL}, 3169, "tcp"}, {"serverview-as", {NULL}, 3169, "udp"}, {"serverview-asn", {NULL}, 3170, "tcp"}, {"serverview-asn", {NULL}, 3170, "udp"}, {"serverview-gf", {NULL}, 3171, "tcp"}, {"serverview-gf", {NULL}, 3171, "udp"}, {"serverview-rm", {NULL}, 3172, "tcp"}, {"serverview-rm", {NULL}, 3172, "udp"}, {"serverview-icc", {NULL}, 3173, "tcp"}, {"serverview-icc", {NULL}, 3173, "udp"}, {"armi-server", {NULL}, 3174, "tcp"}, {"armi-server", {NULL}, 3174, "udp"}, {"t1-e1-over-ip", {NULL}, 3175, "tcp"}, {"t1-e1-over-ip", {NULL}, 3175, "udp"}, {"ars-master", {NULL}, 3176, "tcp"}, {"ars-master", {NULL}, 3176, "udp"}, {"phonex-port", {NULL}, 3177, "tcp"}, {"phonex-port", {NULL}, 3177, "udp"}, {"radclientport", {NULL}, 3178, "tcp"}, {"radclientport", {NULL}, 3178, "udp"}, {"h2gf-w-2m", {NULL}, 3179, "tcp"}, {"h2gf-w-2m", {NULL}, 3179, "udp"}, {"mc-brk-srv", {NULL}, 3180, "tcp"}, {"mc-brk-srv", {NULL}, 3180, "udp"}, {"bmcpatrolagent", {NULL}, 3181, "tcp"}, {"bmcpatrolagent", {NULL}, 3181, "udp"}, {"bmcpatrolrnvu", {NULL}, 3182, "tcp"}, {"bmcpatrolrnvu", {NULL}, 3182, "udp"}, {"cops-tls", {NULL}, 3183, "tcp"}, {"cops-tls", {NULL}, 3183, "udp"}, {"apogeex-port", {NULL}, 3184, "tcp"}, {"apogeex-port", {NULL}, 3184, "udp"}, {"smpppd", {NULL}, 3185, "tcp"}, {"smpppd", {NULL}, 3185, "udp"}, {"iiw-port", {NULL}, 3186, "tcp"}, {"iiw-port", {NULL}, 3186, "udp"}, {"odi-port", {NULL}, 3187, "tcp"}, {"odi-port", {NULL}, 3187, "udp"}, {"brcm-comm-port", {NULL}, 3188, "tcp"}, {"brcm-comm-port", {NULL}, 3188, "udp"}, {"pcle-infex", {NULL}, 3189, "tcp"}, {"pcle-infex", {NULL}, 3189, "udp"}, {"csvr-proxy", {NULL}, 3190, "tcp"}, {"csvr-proxy", {NULL}, 3190, "udp"}, {"csvr-sslproxy", {NULL}, 3191, "tcp"}, {"csvr-sslproxy", {NULL}, 3191, "udp"}, {"firemonrcc", {NULL}, 3192, "tcp"}, {"firemonrcc", {NULL}, 3192, "udp"}, {"spandataport", {NULL}, 3193, "tcp"}, {"spandataport", {NULL}, 3193, "udp"}, {"magbind", {NULL}, 3194, "tcp"}, {"magbind", {NULL}, 3194, "udp"}, {"ncu-1", {NULL}, 3195, "tcp"}, {"ncu-1", {NULL}, 3195, "udp"}, {"ncu-2", {NULL}, 3196, "tcp"}, {"ncu-2", {NULL}, 3196, "udp"}, {"embrace-dp-s", {NULL}, 3197, "tcp"}, {"embrace-dp-s", {NULL}, 3197, "udp"}, {"embrace-dp-c", {NULL}, 3198, "tcp"}, {"embrace-dp-c", {NULL}, 3198, "udp"}, {"dmod-workspace", {NULL}, 3199, "tcp"}, {"dmod-workspace", {NULL}, 3199, "udp"}, {"tick-port", {NULL}, 3200, "tcp"}, {"tick-port", {NULL}, 3200, "udp"}, {"cpq-tasksmart", {NULL}, 3201, "tcp"}, {"cpq-tasksmart", {NULL}, 3201, "udp"}, {"intraintra", {NULL}, 3202, "tcp"}, {"intraintra", {NULL}, 3202, "udp"}, {"netwatcher-mon", {NULL}, 3203, "tcp"}, {"netwatcher-mon", {NULL}, 3203, "udp"}, {"netwatcher-db", {NULL}, 3204, "tcp"}, {"netwatcher-db", {NULL}, 3204, "udp"}, {"isns", {NULL}, 3205, "tcp"}, {"isns", {NULL}, 3205, "udp"}, {"ironmail", {NULL}, 3206, "tcp"}, {"ironmail", {NULL}, 3206, "udp"}, {"vx-auth-port", {NULL}, 3207, "tcp"}, {"vx-auth-port", {NULL}, 3207, "udp"}, {"pfu-prcallback", {NULL}, 3208, "tcp"}, {"pfu-prcallback", {NULL}, 3208, "udp"}, {"netwkpathengine", {NULL}, 3209, "tcp"}, {"netwkpathengine", {NULL}, 3209, "udp"}, {"flamenco-proxy", {NULL}, 3210, "tcp"}, {"flamenco-proxy", {NULL}, 3210, "udp"}, {"avsecuremgmt", {NULL}, 3211, "tcp"}, {"avsecuremgmt", {NULL}, 3211, "udp"}, {"surveyinst", {NULL}, 3212, "tcp"}, {"surveyinst", {NULL}, 3212, "udp"}, {"neon24x7", {NULL}, 3213, "tcp"}, {"neon24x7", {NULL}, 3213, "udp"}, {"jmq-daemon-1", {NULL}, 3214, "tcp"}, {"jmq-daemon-1", {NULL}, 3214, "udp"}, {"jmq-daemon-2", {NULL}, 3215, "tcp"}, {"jmq-daemon-2", {NULL}, 3215, "udp"}, {"ferrari-foam", {NULL}, 3216, "tcp"}, {"ferrari-foam", {NULL}, 3216, "udp"}, {"unite", {NULL}, 3217, "tcp"}, {"unite", {NULL}, 3217, "udp"}, {"smartpackets", {NULL}, 3218, "tcp"}, {"smartpackets", {NULL}, 3218, "udp"}, {"wms-messenger", {NULL}, 3219, "tcp"}, {"wms-messenger", {NULL}, 3219, "udp"}, {"xnm-ssl", {NULL}, 3220, "tcp"}, {"xnm-ssl", {NULL}, 3220, "udp"}, {"xnm-clear-text", {NULL}, 3221, "tcp"}, {"xnm-clear-text", {NULL}, 3221, "udp"}, {"glbp", {NULL}, 3222, "tcp"}, {"glbp", {NULL}, 3222, "udp"}, {"digivote", {NULL}, 3223, "tcp"}, {"digivote", {NULL}, 3223, "udp"}, {"aes-discovery", {NULL}, 3224, "tcp"}, {"aes-discovery", {NULL}, 3224, "udp"}, {"fcip-port", {NULL}, 3225, "tcp"}, {"fcip-port", {NULL}, 3225, "udp"}, {"isi-irp", {NULL}, 3226, "tcp"}, {"isi-irp", {NULL}, 3226, "udp"}, {"dwnmshttp", {NULL}, 3227, "tcp"}, {"dwnmshttp", {NULL}, 3227, "udp"}, {"dwmsgserver", {NULL}, 3228, "tcp"}, {"dwmsgserver", {NULL}, 3228, "udp"}, {"global-cd-port", {NULL}, 3229, "tcp"}, {"global-cd-port", {NULL}, 3229, "udp"}, {"sftdst-port", {NULL}, 3230, "tcp"}, {"sftdst-port", {NULL}, 3230, "udp"}, {"vidigo", {NULL}, 3231, "tcp"}, {"vidigo", {NULL}, 3231, "udp"}, {"mdtp", {NULL}, 3232, "tcp"}, {"mdtp", {NULL}, 3232, "udp"}, {"whisker", {NULL}, 3233, "tcp"}, {"whisker", {NULL}, 3233, "udp"}, {"alchemy", {NULL}, 3234, "tcp"}, {"alchemy", {NULL}, 3234, "udp"}, {"mdap-port", {NULL}, 3235, "tcp"}, {"mdap-port", {NULL}, 3235, "udp"}, {"apparenet-ts", {NULL}, 3236, "tcp"}, {"apparenet-ts", {NULL}, 3236, "udp"}, {"apparenet-tps", {NULL}, 3237, "tcp"}, {"apparenet-tps", {NULL}, 3237, "udp"}, {"apparenet-as", {NULL}, 3238, "tcp"}, {"apparenet-as", {NULL}, 3238, "udp"}, {"apparenet-ui", {NULL}, 3239, "tcp"}, {"apparenet-ui", {NULL}, 3239, "udp"}, {"triomotion", {NULL}, 3240, "tcp"}, {"triomotion", {NULL}, 3240, "udp"}, {"sysorb", {NULL}, 3241, "tcp"}, {"sysorb", {NULL}, 3241, "udp"}, {"sdp-id-port", {NULL}, 3242, "tcp"}, {"sdp-id-port", {NULL}, 3242, "udp"}, {"timelot", {NULL}, 3243, "tcp"}, {"timelot", {NULL}, 3243, "udp"}, {"onesaf", {NULL}, 3244, "tcp"}, {"onesaf", {NULL}, 3244, "udp"}, {"vieo-fe", {NULL}, 3245, "tcp"}, {"vieo-fe", {NULL}, 3245, "udp"}, {"dvt-system", {NULL}, 3246, "tcp"}, {"dvt-system", {NULL}, 3246, "udp"}, {"dvt-data", {NULL}, 3247, "tcp"}, {"dvt-data", {NULL}, 3247, "udp"}, {"procos-lm", {NULL}, 3248, "tcp"}, {"procos-lm", {NULL}, 3248, "udp"}, {"ssp", {NULL}, 3249, "tcp"}, {"ssp", {NULL}, 3249, "udp"}, {"hicp", {NULL}, 3250, "tcp"}, {"hicp", {NULL}, 3250, "udp"}, {"sysscanner", {NULL}, 3251, "tcp"}, {"sysscanner", {NULL}, 3251, "udp"}, {"dhe", {NULL}, 3252, "tcp"}, {"dhe", {NULL}, 3252, "udp"}, {"pda-data", {NULL}, 3253, "tcp"}, {"pda-data", {NULL}, 3253, "udp"}, {"pda-sys", {NULL}, 3254, "tcp"}, {"pda-sys", {NULL}, 3254, "udp"}, {"semaphore", {NULL}, 3255, "tcp"}, {"semaphore", {NULL}, 3255, "udp"}, {"cpqrpm-agent", {NULL}, 3256, "tcp"}, {"cpqrpm-agent", {NULL}, 3256, "udp"}, {"cpqrpm-server", {NULL}, 3257, "tcp"}, {"cpqrpm-server", {NULL}, 3257, "udp"}, {"ivecon-port", {NULL}, 3258, "tcp"}, {"ivecon-port", {NULL}, 3258, "udp"}, {"epncdp2", {NULL}, 3259, "tcp"}, {"epncdp2", {NULL}, 3259, "udp"}, {"iscsi-target", {NULL}, 3260, "tcp"}, {"iscsi-target", {NULL}, 3260, "udp"}, {"winshadow", {NULL}, 3261, "tcp"}, {"winshadow", {NULL}, 3261, "udp"}, {"necp", {NULL}, 3262, "tcp"}, {"necp", {NULL}, 3262, "udp"}, {"ecolor-imager", {NULL}, 3263, "tcp"}, {"ecolor-imager", {NULL}, 3263, "udp"}, {"ccmail", {NULL}, 3264, "tcp"}, {"ccmail", {NULL}, 3264, "udp"}, {"altav-tunnel", {NULL}, 3265, "tcp"}, {"altav-tunnel", {NULL}, 3265, "udp"}, {"ns-cfg-server", {NULL}, 3266, "tcp"}, {"ns-cfg-server", {NULL}, 3266, "udp"}, {"ibm-dial-out", {NULL}, 3267, "tcp"}, {"ibm-dial-out", {NULL}, 3267, "udp"}, {"msft-gc", {NULL}, 3268, "tcp"}, {"msft-gc", {NULL}, 3268, "udp"}, {"msft-gc-ssl", {NULL}, 3269, "tcp"}, {"msft-gc-ssl", {NULL}, 3269, "udp"}, {"verismart", {NULL}, 3270, "tcp"}, {"verismart", {NULL}, 3270, "udp"}, {"csoft-prev", {NULL}, 3271, "tcp"}, {"csoft-prev", {NULL}, 3271, "udp"}, {"user-manager", {NULL}, 3272, "tcp"}, {"user-manager", {NULL}, 3272, "udp"}, {"sxmp", {NULL}, 3273, "tcp"}, {"sxmp", {NULL}, 3273, "udp"}, {"ordinox-server", {NULL}, 3274, "tcp"}, {"ordinox-server", {NULL}, 3274, "udp"}, {"samd", {NULL}, 3275, "tcp"}, {"samd", {NULL}, 3275, "udp"}, {"maxim-asics", {NULL}, 3276, "tcp"}, {"maxim-asics", {NULL}, 3276, "udp"}, {"awg-proxy", {NULL}, 3277, "tcp"}, {"awg-proxy", {NULL}, 3277, "udp"}, {"lkcmserver", {NULL}, 3278, "tcp"}, {"lkcmserver", {NULL}, 3278, "udp"}, {"admind", {NULL}, 3279, "tcp"}, {"admind", {NULL}, 3279, "udp"}, {"vs-server", {NULL}, 3280, "tcp"}, {"vs-server", {NULL}, 3280, "udp"}, {"sysopt", {NULL}, 3281, "tcp"}, {"sysopt", {NULL}, 3281, "udp"}, {"datusorb", {NULL}, 3282, "tcp"}, {"datusorb", {NULL}, 3282, "udp"}, {"net-assistant", {NULL}, 3283, "tcp"}, {"net-assistant", {NULL}, 3283, "udp"}, {"4talk", {NULL}, 3284, "tcp"}, {"4talk", {NULL}, 3284, "udp"}, {"plato", {NULL}, 3285, "tcp"}, {"plato", {NULL}, 3285, "udp"}, {"e-net", {NULL}, 3286, "tcp"}, {"e-net", {NULL}, 3286, "udp"}, {"directvdata", {NULL}, 3287, "tcp"}, {"directvdata", {NULL}, 3287, "udp"}, {"cops", {NULL}, 3288, "tcp"}, {"cops", {NULL}, 3288, "udp"}, {"enpc", {NULL}, 3289, "tcp"}, {"enpc", {NULL}, 3289, "udp"}, {"caps-lm", {NULL}, 3290, "tcp"}, {"caps-lm", {NULL}, 3290, "udp"}, {"sah-lm", {NULL}, 3291, "tcp"}, {"sah-lm", {NULL}, 3291, "udp"}, {"cart-o-rama", {NULL}, 3292, "tcp"}, {"cart-o-rama", {NULL}, 3292, "udp"}, {"fg-fps", {NULL}, 3293, "tcp"}, {"fg-fps", {NULL}, 3293, "udp"}, {"fg-gip", {NULL}, 3294, "tcp"}, {"fg-gip", {NULL}, 3294, "udp"}, {"dyniplookup", {NULL}, 3295, "tcp"}, {"dyniplookup", {NULL}, 3295, "udp"}, {"rib-slm", {NULL}, 3296, "tcp"}, {"rib-slm", {NULL}, 3296, "udp"}, {"cytel-lm", {NULL}, 3297, "tcp"}, {"cytel-lm", {NULL}, 3297, "udp"}, {"deskview", {NULL}, 3298, "tcp"}, {"deskview", {NULL}, 3298, "udp"}, {"pdrncs", {NULL}, 3299, "tcp"}, {"pdrncs", {NULL}, 3299, "udp"}, {"mcs-fastmail", {NULL}, 3302, "tcp"}, {"mcs-fastmail", {NULL}, 3302, "udp"}, {"opsession-clnt", {NULL}, 3303, "tcp"}, {"opsession-clnt", {NULL}, 3303, "udp"}, {"opsession-srvr", {NULL}, 3304, "tcp"}, {"opsession-srvr", {NULL}, 3304, "udp"}, {"odette-ftp", {NULL}, 3305, "tcp"}, {"odette-ftp", {NULL}, 3305, "udp"}, {"mysql", {NULL}, 3306, "tcp"}, {"mysql", {NULL}, 3306, "udp"}, {"opsession-prxy", {NULL}, 3307, "tcp"}, {"opsession-prxy", {NULL}, 3307, "udp"}, {"tns-server", {NULL}, 3308, "tcp"}, {"tns-server", {NULL}, 3308, "udp"}, {"tns-adv", {NULL}, 3309, "tcp"}, {"tns-adv", {NULL}, 3309, "udp"}, {"dyna-access", {NULL}, 3310, "tcp"}, {"dyna-access", {NULL}, 3310, "udp"}, {"mcns-tel-ret", {NULL}, 3311, "tcp"}, {"mcns-tel-ret", {NULL}, 3311, "udp"}, {"appman-server", {NULL}, 3312, "tcp"}, {"appman-server", {NULL}, 3312, "udp"}, {"uorb", {NULL}, 3313, "tcp"}, {"uorb", {NULL}, 3313, "udp"}, {"uohost", {NULL}, 3314, "tcp"}, {"uohost", {NULL}, 3314, "udp"}, {"cdid", {NULL}, 3315, "tcp"}, {"cdid", {NULL}, 3315, "udp"}, {"aicc-cmi", {NULL}, 3316, "tcp"}, {"aicc-cmi", {NULL}, 3316, "udp"}, {"vsaiport", {NULL}, 3317, "tcp"}, {"vsaiport", {NULL}, 3317, "udp"}, {"ssrip", {NULL}, 3318, "tcp"}, {"ssrip", {NULL}, 3318, "udp"}, {"sdt-lmd", {NULL}, 3319, "tcp"}, {"sdt-lmd", {NULL}, 3319, "udp"}, {"officelink2000", {NULL}, 3320, "tcp"}, {"officelink2000", {NULL}, 3320, "udp"}, {"vnsstr", {NULL}, 3321, "tcp"}, {"vnsstr", {NULL}, 3321, "udp"}, {"sftu", {NULL}, 3326, "tcp"}, {"sftu", {NULL}, 3326, "udp"}, {"bbars", {NULL}, 3327, "tcp"}, {"bbars", {NULL}, 3327, "udp"}, {"egptlm", {NULL}, 3328, "tcp"}, {"egptlm", {NULL}, 3328, "udp"}, {"hp-device-disc", {NULL}, 3329, "tcp"}, {"hp-device-disc", {NULL}, 3329, "udp"}, {"mcs-calypsoicf", {NULL}, 3330, "tcp"}, {"mcs-calypsoicf", {NULL}, 3330, "udp"}, {"mcs-messaging", {NULL}, 3331, "tcp"}, {"mcs-messaging", {NULL}, 3331, "udp"}, {"mcs-mailsvr", {NULL}, 3332, "tcp"}, {"mcs-mailsvr", {NULL}, 3332, "udp"}, {"dec-notes", {NULL}, 3333, "tcp"}, {"dec-notes", {NULL}, 3333, "udp"}, {"directv-web", {NULL}, 3334, "tcp"}, {"directv-web", {NULL}, 3334, "udp"}, {"directv-soft", {NULL}, 3335, "tcp"}, {"directv-soft", {NULL}, 3335, "udp"}, {"directv-tick", {NULL}, 3336, "tcp"}, {"directv-tick", {NULL}, 3336, "udp"}, {"directv-catlg", {NULL}, 3337, "tcp"}, {"directv-catlg", {NULL}, 3337, "udp"}, {"anet-b", {NULL}, 3338, "tcp"}, {"anet-b", {NULL}, 3338, "udp"}, {"anet-l", {NULL}, 3339, "tcp"}, {"anet-l", {NULL}, 3339, "udp"}, {"anet-m", {NULL}, 3340, "tcp"}, {"anet-m", {NULL}, 3340, "udp"}, {"anet-h", {NULL}, 3341, "tcp"}, {"anet-h", {NULL}, 3341, "udp"}, {"webtie", {NULL}, 3342, "tcp"}, {"webtie", {NULL}, 3342, "udp"}, {"ms-cluster-net", {NULL}, 3343, "tcp"}, {"ms-cluster-net", {NULL}, 3343, "udp"}, {"bnt-manager", {NULL}, 3344, "tcp"}, {"bnt-manager", {NULL}, 3344, "udp"}, {"influence", {NULL}, 3345, "tcp"}, {"influence", {NULL}, 3345, "udp"}, {"trnsprntproxy", {NULL}, 3346, "tcp"}, {"trnsprntproxy", {NULL}, 3346, "udp"}, {"phoenix-rpc", {NULL}, 3347, "tcp"}, {"phoenix-rpc", {NULL}, 3347, "udp"}, {"pangolin-laser", {NULL}, 3348, "tcp"}, {"pangolin-laser", {NULL}, 3348, "udp"}, {"chevinservices", {NULL}, 3349, "tcp"}, {"chevinservices", {NULL}, 3349, "udp"}, {"findviatv", {NULL}, 3350, "tcp"}, {"findviatv", {NULL}, 3350, "udp"}, {"btrieve", {NULL}, 3351, "tcp"}, {"btrieve", {NULL}, 3351, "udp"}, {"ssql", {NULL}, 3352, "tcp"}, {"ssql", {NULL}, 3352, "udp"}, {"fatpipe", {NULL}, 3353, "tcp"}, {"fatpipe", {NULL}, 3353, "udp"}, {"suitjd", {NULL}, 3354, "tcp"}, {"suitjd", {NULL}, 3354, "udp"}, {"ordinox-dbase", {NULL}, 3355, "tcp"}, {"ordinox-dbase", {NULL}, 3355, "udp"}, {"upnotifyps", {NULL}, 3356, "tcp"}, {"upnotifyps", {NULL}, 3356, "udp"}, {"adtech-test", {NULL}, 3357, "tcp"}, {"adtech-test", {NULL}, 3357, "udp"}, {"mpsysrmsvr", {NULL}, 3358, "tcp"}, {"mpsysrmsvr", {NULL}, 3358, "udp"}, {"wg-netforce", {NULL}, 3359, "tcp"}, {"wg-netforce", {NULL}, 3359, "udp"}, {"kv-server", {NULL}, 3360, "tcp"}, {"kv-server", {NULL}, 3360, "udp"}, {"kv-agent", {NULL}, 3361, "tcp"}, {"kv-agent", {NULL}, 3361, "udp"}, {"dj-ilm", {NULL}, 3362, "tcp"}, {"dj-ilm", {NULL}, 3362, "udp"}, {"nati-vi-server", {NULL}, 3363, "tcp"}, {"nati-vi-server", {NULL}, 3363, "udp"}, {"creativeserver", {NULL}, 3364, "tcp"}, {"creativeserver", {NULL}, 3364, "udp"}, {"contentserver", {NULL}, 3365, "tcp"}, {"contentserver", {NULL}, 3365, "udp"}, {"creativepartnr", {NULL}, 3366, "tcp"}, {"creativepartnr", {NULL}, 3366, "udp"}, {"tip2", {NULL}, 3372, "tcp"}, {"tip2", {NULL}, 3372, "udp"}, {"lavenir-lm", {NULL}, 3373, "tcp"}, {"lavenir-lm", {NULL}, 3373, "udp"}, {"cluster-disc", {NULL}, 3374, "tcp"}, {"cluster-disc", {NULL}, 3374, "udp"}, {"vsnm-agent", {NULL}, 3375, "tcp"}, {"vsnm-agent", {NULL}, 3375, "udp"}, {"cdbroker", {NULL}, 3376, "tcp"}, {"cdbroker", {NULL}, 3376, "udp"}, {"cogsys-lm", {NULL}, 3377, "tcp"}, {"cogsys-lm", {NULL}, 3377, "udp"}, {"wsicopy", {NULL}, 3378, "tcp"}, {"wsicopy", {NULL}, 3378, "udp"}, {"socorfs", {NULL}, 3379, "tcp"}, {"socorfs", {NULL}, 3379, "udp"}, {"sns-channels", {NULL}, 3380, "tcp"}, {"sns-channels", {NULL}, 3380, "udp"}, {"geneous", {NULL}, 3381, "tcp"}, {"geneous", {NULL}, 3381, "udp"}, {"fujitsu-neat", {NULL}, 3382, "tcp"}, {"fujitsu-neat", {NULL}, 3382, "udp"}, {"esp-lm", {NULL}, 3383, "tcp"}, {"esp-lm", {NULL}, 3383, "udp"}, {"hp-clic", {NULL}, 3384, "tcp"}, {"hp-clic", {NULL}, 3384, "udp"}, {"qnxnetman", {NULL}, 3385, "tcp"}, {"qnxnetman", {NULL}, 3385, "udp"}, {"gprs-data", {NULL}, 3386, "tcp"}, {"gprs-sig", {NULL}, 3386, "udp"}, {"backroomnet", {NULL}, 3387, "tcp"}, {"backroomnet", {NULL}, 3387, "udp"}, {"cbserver", {NULL}, 3388, "tcp"}, {"cbserver", {NULL}, 3388, "udp"}, {"ms-wbt-server", {NULL}, 3389, "tcp"}, {"ms-wbt-server", {NULL}, 3389, "udp"}, {"dsc", {NULL}, 3390, "tcp"}, {"dsc", {NULL}, 3390, "udp"}, {"savant", {NULL}, 3391, "tcp"}, {"savant", {NULL}, 3391, "udp"}, {"efi-lm", {NULL}, 3392, "tcp"}, {"efi-lm", {NULL}, 3392, "udp"}, {"d2k-tapestry1", {NULL}, 3393, "tcp"}, {"d2k-tapestry1", {NULL}, 3393, "udp"}, {"d2k-tapestry2", {NULL}, 3394, "tcp"}, {"d2k-tapestry2", {NULL}, 3394, "udp"}, {"dyna-lm", {NULL}, 3395, "tcp"}, {"dyna-lm", {NULL}, 3395, "udp"}, {"printer_agent", {NULL}, 3396, "tcp"}, {"printer_agent", {NULL}, 3396, "udp"}, {"cloanto-lm", {NULL}, 3397, "tcp"}, {"cloanto-lm", {NULL}, 3397, "udp"}, {"mercantile", {NULL}, 3398, "tcp"}, {"mercantile", {NULL}, 3398, "udp"}, {"csms", {NULL}, 3399, "tcp"}, {"csms", {NULL}, 3399, "udp"}, {"csms2", {NULL}, 3400, "tcp"}, {"csms2", {NULL}, 3400, "udp"}, {"filecast", {NULL}, 3401, "tcp"}, {"filecast", {NULL}, 3401, "udp"}, {"fxaengine-net", {NULL}, 3402, "tcp"}, {"fxaengine-net", {NULL}, 3402, "udp"}, {"nokia-ann-ch1", {NULL}, 3405, "tcp"}, {"nokia-ann-ch1", {NULL}, 3405, "udp"}, {"nokia-ann-ch2", {NULL}, 3406, "tcp"}, {"nokia-ann-ch2", {NULL}, 3406, "udp"}, {"ldap-admin", {NULL}, 3407, "tcp"}, {"ldap-admin", {NULL}, 3407, "udp"}, {"BESApi", {NULL}, 3408, "tcp"}, {"BESApi", {NULL}, 3408, "udp"}, {"networklens", {NULL}, 3409, "tcp"}, {"networklens", {NULL}, 3409, "udp"}, {"networklenss", {NULL}, 3410, "tcp"}, {"networklenss", {NULL}, 3410, "udp"}, {"biolink-auth", {NULL}, 3411, "tcp"}, {"biolink-auth", {NULL}, 3411, "udp"}, {"xmlblaster", {NULL}, 3412, "tcp"}, {"xmlblaster", {NULL}, 3412, "udp"}, {"svnet", {NULL}, 3413, "tcp"}, {"svnet", {NULL}, 3413, "udp"}, {"wip-port", {NULL}, 3414, "tcp"}, {"wip-port", {NULL}, 3414, "udp"}, {"bcinameservice", {NULL}, 3415, "tcp"}, {"bcinameservice", {NULL}, 3415, "udp"}, {"commandport", {NULL}, 3416, "tcp"}, {"commandport", {NULL}, 3416, "udp"}, {"csvr", {NULL}, 3417, "tcp"}, {"csvr", {NULL}, 3417, "udp"}, {"rnmap", {NULL}, 3418, "tcp"}, {"rnmap", {NULL}, 3418, "udp"}, {"softaudit", {NULL}, 3419, "tcp"}, {"softaudit", {NULL}, 3419, "udp"}, {"ifcp-port", {NULL}, 3420, "tcp"}, {"ifcp-port", {NULL}, 3420, "udp"}, {"bmap", {NULL}, 3421, "tcp"}, {"bmap", {NULL}, 3421, "udp"}, {"rusb-sys-port", {NULL}, 3422, "tcp"}, {"rusb-sys-port", {NULL}, 3422, "udp"}, {"xtrm", {NULL}, 3423, "tcp"}, {"xtrm", {NULL}, 3423, "udp"}, {"xtrms", {NULL}, 3424, "tcp"}, {"xtrms", {NULL}, 3424, "udp"}, {"agps-port", {NULL}, 3425, "tcp"}, {"agps-port", {NULL}, 3425, "udp"}, {"arkivio", {NULL}, 3426, "tcp"}, {"arkivio", {NULL}, 3426, "udp"}, {"websphere-snmp", {NULL}, 3427, "tcp"}, {"websphere-snmp", {NULL}, 3427, "udp"}, {"twcss", {NULL}, 3428, "tcp"}, {"twcss", {NULL}, 3428, "udp"}, {"gcsp", {NULL}, 3429, "tcp"}, {"gcsp", {NULL}, 3429, "udp"}, {"ssdispatch", {NULL}, 3430, "tcp"}, {"ssdispatch", {NULL}, 3430, "udp"}, {"ndl-als", {NULL}, 3431, "tcp"}, {"ndl-als", {NULL}, 3431, "udp"}, {"osdcp", {NULL}, 3432, "tcp"}, {"osdcp", {NULL}, 3432, "udp"}, {"alta-smp", {NULL}, 3433, "tcp"}, {"alta-smp", {NULL}, 3433, "udp"}, {"opencm", {NULL}, 3434, "tcp"}, {"opencm", {NULL}, 3434, "udp"}, {"pacom", {NULL}, 3435, "tcp"}, {"pacom", {NULL}, 3435, "udp"}, {"gc-config", {NULL}, 3436, "tcp"}, {"gc-config", {NULL}, 3436, "udp"}, {"autocueds", {NULL}, 3437, "tcp"}, {"autocueds", {NULL}, 3437, "udp"}, {"spiral-admin", {NULL}, 3438, "tcp"}, {"spiral-admin", {NULL}, 3438, "udp"}, {"hri-port", {NULL}, 3439, "tcp"}, {"hri-port", {NULL}, 3439, "udp"}, {"ans-console", {NULL}, 3440, "tcp"}, {"ans-console", {NULL}, 3440, "udp"}, {"connect-client", {NULL}, 3441, "tcp"}, {"connect-client", {NULL}, 3441, "udp"}, {"connect-server", {NULL}, 3442, "tcp"}, {"connect-server", {NULL}, 3442, "udp"}, {"ov-nnm-websrv", {NULL}, 3443, "tcp"}, {"ov-nnm-websrv", {NULL}, 3443, "udp"}, {"denali-server", {NULL}, 3444, "tcp"}, {"denali-server", {NULL}, 3444, "udp"}, {"monp", {NULL}, 3445, "tcp"}, {"monp", {NULL}, 3445, "udp"}, {"3comfaxrpc", {NULL}, 3446, "tcp"}, {"3comfaxrpc", {NULL}, 3446, "udp"}, {"directnet", {NULL}, 3447, "tcp"}, {"directnet", {NULL}, 3447, "udp"}, {"dnc-port", {NULL}, 3448, "tcp"}, {"dnc-port", {NULL}, 3448, "udp"}, {"hotu-chat", {NULL}, 3449, "tcp"}, {"hotu-chat", {NULL}, 3449, "udp"}, {"castorproxy", {NULL}, 3450, "tcp"}, {"castorproxy", {NULL}, 3450, "udp"}, {"asam", {NULL}, 3451, "tcp"}, {"asam", {NULL}, 3451, "udp"}, {"sabp-signal", {NULL}, 3452, "tcp"}, {"sabp-signal", {NULL}, 3452, "udp"}, {"pscupd", {NULL}, 3453, "tcp"}, {"pscupd", {NULL}, 3453, "udp"}, {"mira", {NULL}, 3454, "tcp"}, {"prsvp", {NULL}, 3455, "tcp"}, {"prsvp", {NULL}, 3455, "udp"}, {"vat", {NULL}, 3456, "tcp"}, {"vat", {NULL}, 3456, "udp"}, {"vat-control", {NULL}, 3457, "tcp"}, {"vat-control", {NULL}, 3457, "udp"}, {"d3winosfi", {NULL}, 3458, "tcp"}, {"d3winosfi", {NULL}, 3458, "udp"}, {"integral", {NULL}, 3459, "tcp"}, {"integral", {NULL}, 3459, "udp"}, {"edm-manager", {NULL}, 3460, "tcp"}, {"edm-manager", {NULL}, 3460, "udp"}, {"edm-stager", {NULL}, 3461, "tcp"}, {"edm-stager", {NULL}, 3461, "udp"}, {"edm-std-notify", {NULL}, 3462, "tcp"}, {"edm-std-notify", {NULL}, 3462, "udp"}, {"edm-adm-notify", {NULL}, 3463, "tcp"}, {"edm-adm-notify", {NULL}, 3463, "udp"}, {"edm-mgr-sync", {NULL}, 3464, "tcp"}, {"edm-mgr-sync", {NULL}, 3464, "udp"}, {"edm-mgr-cntrl", {NULL}, 3465, "tcp"}, {"edm-mgr-cntrl", {NULL}, 3465, "udp"}, {"workflow", {NULL}, 3466, "tcp"}, {"workflow", {NULL}, 3466, "udp"}, {"rcst", {NULL}, 3467, "tcp"}, {"rcst", {NULL}, 3467, "udp"}, {"ttcmremotectrl", {NULL}, 3468, "tcp"}, {"ttcmremotectrl", {NULL}, 3468, "udp"}, {"pluribus", {NULL}, 3469, "tcp"}, {"pluribus", {NULL}, 3469, "udp"}, {"jt400", {NULL}, 3470, "tcp"}, {"jt400", {NULL}, 3470, "udp"}, {"jt400-ssl", {NULL}, 3471, "tcp"}, {"jt400-ssl", {NULL}, 3471, "udp"}, {"jaugsremotec-1", {NULL}, 3472, "tcp"}, {"jaugsremotec-1", {NULL}, 3472, "udp"}, {"jaugsremotec-2", {NULL}, 3473, "tcp"}, {"jaugsremotec-2", {NULL}, 3473, "udp"}, {"ttntspauto", {NULL}, 3474, "tcp"}, {"ttntspauto", {NULL}, 3474, "udp"}, {"genisar-port", {NULL}, 3475, "tcp"}, {"genisar-port", {NULL}, 3475, "udp"}, {"nppmp", {NULL}, 3476, "tcp"}, {"nppmp", {NULL}, 3476, "udp"}, {"ecomm", {NULL}, 3477, "tcp"}, {"ecomm", {NULL}, 3477, "udp"}, {"stun", {NULL}, 3478, "tcp"}, {"stun", {NULL}, 3478, "udp"}, {"turn", {NULL}, 3478, "tcp"}, {"turn", {NULL}, 3478, "udp"}, {"stun-behavior", {NULL}, 3478, "tcp"}, {"stun-behavior", {NULL}, 3478, "udp"}, {"twrpc", {NULL}, 3479, "tcp"}, {"twrpc", {NULL}, 3479, "udp"}, {"plethora", {NULL}, 3480, "tcp"}, {"plethora", {NULL}, 3480, "udp"}, {"cleanerliverc", {NULL}, 3481, "tcp"}, {"cleanerliverc", {NULL}, 3481, "udp"}, {"vulture", {NULL}, 3482, "tcp"}, {"vulture", {NULL}, 3482, "udp"}, {"slim-devices", {NULL}, 3483, "tcp"}, {"slim-devices", {NULL}, 3483, "udp"}, {"gbs-stp", {NULL}, 3484, "tcp"}, {"gbs-stp", {NULL}, 3484, "udp"}, {"celatalk", {NULL}, 3485, "tcp"}, {"celatalk", {NULL}, 3485, "udp"}, {"ifsf-hb-port", {NULL}, 3486, "tcp"}, {"ifsf-hb-port", {NULL}, 3486, "udp"}, {"ltctcp", {NULL}, 3487, "tcp"}, {"ltcudp", {NULL}, 3487, "udp"}, {"fs-rh-srv", {NULL}, 3488, "tcp"}, {"fs-rh-srv", {NULL}, 3488, "udp"}, {"dtp-dia", {NULL}, 3489, "tcp"}, {"dtp-dia", {NULL}, 3489, "udp"}, {"colubris", {NULL}, 3490, "tcp"}, {"colubris", {NULL}, 3490, "udp"}, {"swr-port", {NULL}, 3491, "tcp"}, {"swr-port", {NULL}, 3491, "udp"}, {"tvdumtray-port", {NULL}, 3492, "tcp"}, {"tvdumtray-port", {NULL}, 3492, "udp"}, {"nut", {NULL}, 3493, "tcp"}, {"nut", {NULL}, 3493, "udp"}, {"ibm3494", {NULL}, 3494, "tcp"}, {"ibm3494", {NULL}, 3494, "udp"}, {"seclayer-tcp", {NULL}, 3495, "tcp"}, {"seclayer-tcp", {NULL}, 3495, "udp"}, {"seclayer-tls", {NULL}, 3496, "tcp"}, {"seclayer-tls", {NULL}, 3496, "udp"}, {"ipether232port", {NULL}, 3497, "tcp"}, {"ipether232port", {NULL}, 3497, "udp"}, {"dashpas-port", {NULL}, 3498, "tcp"}, {"dashpas-port", {NULL}, 3498, "udp"}, {"sccip-media", {NULL}, 3499, "tcp"}, {"sccip-media", {NULL}, 3499, "udp"}, {"rtmp-port", {NULL}, 3500, "tcp"}, {"rtmp-port", {NULL}, 3500, "udp"}, {"isoft-p2p", {NULL}, 3501, "tcp"}, {"isoft-p2p", {NULL}, 3501, "udp"}, {"avinstalldisc", {NULL}, 3502, "tcp"}, {"avinstalldisc", {NULL}, 3502, "udp"}, {"lsp-ping", {NULL}, 3503, "tcp"}, {"lsp-ping", {NULL}, 3503, "udp"}, {"ironstorm", {NULL}, 3504, "tcp"}, {"ironstorm", {NULL}, 3504, "udp"}, {"ccmcomm", {NULL}, 3505, "tcp"}, {"ccmcomm", {NULL}, 3505, "udp"}, {"apc-3506", {NULL}, 3506, "tcp"}, {"apc-3506", {NULL}, 3506, "udp"}, {"nesh-broker", {NULL}, 3507, "tcp"}, {"nesh-broker", {NULL}, 3507, "udp"}, {"interactionweb", {NULL}, 3508, "tcp"}, {"interactionweb", {NULL}, 3508, "udp"}, {"vt-ssl", {NULL}, 3509, "tcp"}, {"vt-ssl", {NULL}, 3509, "udp"}, {"xss-port", {NULL}, 3510, "tcp"}, {"xss-port", {NULL}, 3510, "udp"}, {"webmail-2", {NULL}, 3511, "tcp"}, {"webmail-2", {NULL}, 3511, "udp"}, {"aztec", {NULL}, 3512, "tcp"}, {"aztec", {NULL}, 3512, "udp"}, {"arcpd", {NULL}, 3513, "tcp"}, {"arcpd", {NULL}, 3513, "udp"}, {"must-p2p", {NULL}, 3514, "tcp"}, {"must-p2p", {NULL}, 3514, "udp"}, {"must-backplane", {NULL}, 3515, "tcp"}, {"must-backplane", {NULL}, 3515, "udp"}, {"smartcard-port", {NULL}, 3516, "tcp"}, {"smartcard-port", {NULL}, 3516, "udp"}, {"802-11-iapp", {NULL}, 3517, "tcp"}, {"802-11-iapp", {NULL}, 3517, "udp"}, {"artifact-msg", {NULL}, 3518, "tcp"}, {"artifact-msg", {NULL}, 3518, "udp"}, {"nvmsgd", {NULL}, 3519, "tcp"}, {"galileo", {NULL}, 3519, "udp"}, {"galileolog", {NULL}, 3520, "tcp"}, {"galileolog", {NULL}, 3520, "udp"}, {"mc3ss", {NULL}, 3521, "tcp"}, {"mc3ss", {NULL}, 3521, "udp"}, {"nssocketport", {NULL}, 3522, "tcp"}, {"nssocketport", {NULL}, 3522, "udp"}, {"odeumservlink", {NULL}, 3523, "tcp"}, {"odeumservlink", {NULL}, 3523, "udp"}, {"ecmport", {NULL}, 3524, "tcp"}, {"ecmport", {NULL}, 3524, "udp"}, {"eisport", {NULL}, 3525, "tcp"}, {"eisport", {NULL}, 3525, "udp"}, {"starquiz-port", {NULL}, 3526, "tcp"}, {"starquiz-port", {NULL}, 3526, "udp"}, {"beserver-msg-q", {NULL}, 3527, "tcp"}, {"beserver-msg-q", {NULL}, 3527, "udp"}, {"jboss-iiop", {NULL}, 3528, "tcp"}, {"jboss-iiop", {NULL}, 3528, "udp"}, {"jboss-iiop-ssl", {NULL}, 3529, "tcp"}, {"jboss-iiop-ssl", {NULL}, 3529, "udp"}, {"gf", {NULL}, 3530, "tcp"}, {"gf", {NULL}, 3530, "udp"}, {"joltid", {NULL}, 3531, "tcp"}, {"joltid", {NULL}, 3531, "udp"}, {"raven-rmp", {NULL}, 3532, "tcp"}, {"raven-rmp", {NULL}, 3532, "udp"}, {"raven-rdp", {NULL}, 3533, "tcp"}, {"raven-rdp", {NULL}, 3533, "udp"}, {"urld-port", {NULL}, 3534, "tcp"}, {"urld-port", {NULL}, 3534, "udp"}, {"ms-la", {NULL}, 3535, "tcp"}, {"ms-la", {NULL}, 3535, "udp"}, {"snac", {NULL}, 3536, "tcp"}, {"snac", {NULL}, 3536, "udp"}, {"ni-visa-remote", {NULL}, 3537, "tcp"}, {"ni-visa-remote", {NULL}, 3537, "udp"}, {"ibm-diradm", {NULL}, 3538, "tcp"}, {"ibm-diradm", {NULL}, 3538, "udp"}, {"ibm-diradm-ssl", {NULL}, 3539, "tcp"}, {"ibm-diradm-ssl", {NULL}, 3539, "udp"}, {"pnrp-port", {NULL}, 3540, "tcp"}, {"pnrp-port", {NULL}, 3540, "udp"}, {"voispeed-port", {NULL}, 3541, "tcp"}, {"voispeed-port", {NULL}, 3541, "udp"}, {"hacl-monitor", {NULL}, 3542, "tcp"}, {"hacl-monitor", {NULL}, 3542, "udp"}, {"qftest-lookup", {NULL}, 3543, "tcp"}, {"qftest-lookup", {NULL}, 3543, "udp"}, {"teredo", {NULL}, 3544, "tcp"}, {"teredo", {NULL}, 3544, "udp"}, {"camac", {NULL}, 3545, "tcp"}, {"camac", {NULL}, 3545, "udp"}, {"symantec-sim", {NULL}, 3547, "tcp"}, {"symantec-sim", {NULL}, 3547, "udp"}, {"interworld", {NULL}, 3548, "tcp"}, {"interworld", {NULL}, 3548, "udp"}, {"tellumat-nms", {NULL}, 3549, "tcp"}, {"tellumat-nms", {NULL}, 3549, "udp"}, {"ssmpp", {NULL}, 3550, "tcp"}, {"ssmpp", {NULL}, 3550, "udp"}, {"apcupsd", {NULL}, 3551, "tcp"}, {"apcupsd", {NULL}, 3551, "udp"}, {"taserver", {NULL}, 3552, "tcp"}, {"taserver", {NULL}, 3552, "udp"}, {"rbr-discovery", {NULL}, 3553, "tcp"}, {"rbr-discovery", {NULL}, 3553, "udp"}, {"questnotify", {NULL}, 3554, "tcp"}, {"questnotify", {NULL}, 3554, "udp"}, {"razor", {NULL}, 3555, "tcp"}, {"razor", {NULL}, 3555, "udp"}, {"sky-transport", {NULL}, 3556, "tcp"}, {"sky-transport", {NULL}, 3556, "udp"}, {"personalos-001", {NULL}, 3557, "tcp"}, {"personalos-001", {NULL}, 3557, "udp"}, {"mcp-port", {NULL}, 3558, "tcp"}, {"mcp-port", {NULL}, 3558, "udp"}, {"cctv-port", {NULL}, 3559, "tcp"}, {"cctv-port", {NULL}, 3559, "udp"}, {"iniserve-port", {NULL}, 3560, "tcp"}, {"iniserve-port", {NULL}, 3560, "udp"}, {"bmc-onekey", {NULL}, 3561, "tcp"}, {"bmc-onekey", {NULL}, 3561, "udp"}, {"sdbproxy", {NULL}, 3562, "tcp"}, {"sdbproxy", {NULL}, 3562, "udp"}, {"watcomdebug", {NULL}, 3563, "tcp"}, {"watcomdebug", {NULL}, 3563, "udp"}, {"esimport", {NULL}, 3564, "tcp"}, {"esimport", {NULL}, 3564, "udp"}, {"m2pa", {NULL}, 3565, "tcp"}, {"m2pa", {NULL}, 3565, "sctp"}, {"quest-data-hub", {NULL}, 3566, "tcp"}, {"oap", {NULL}, 3567, "tcp"}, {"oap", {NULL}, 3567, "udp"}, {"oap-s", {NULL}, 3568, "tcp"}, {"oap-s", {NULL}, 3568, "udp"}, {"mbg-ctrl", {NULL}, 3569, "tcp"}, {"mbg-ctrl", {NULL}, 3569, "udp"}, {"mccwebsvr-port", {NULL}, 3570, "tcp"}, {"mccwebsvr-port", {NULL}, 3570, "udp"}, {"megardsvr-port", {NULL}, 3571, "tcp"}, {"megardsvr-port", {NULL}, 3571, "udp"}, {"megaregsvrport", {NULL}, 3572, "tcp"}, {"megaregsvrport", {NULL}, 3572, "udp"}, {"tag-ups-1", {NULL}, 3573, "tcp"}, {"tag-ups-1", {NULL}, 3573, "udp"}, {"dmaf-server", {NULL}, 3574, "tcp"}, {"dmaf-caster", {NULL}, 3574, "udp"}, {"ccm-port", {NULL}, 3575, "tcp"}, {"ccm-port", {NULL}, 3575, "udp"}, {"cmc-port", {NULL}, 3576, "tcp"}, {"cmc-port", {NULL}, 3576, "udp"}, {"config-port", {NULL}, 3577, "tcp"}, {"config-port", {NULL}, 3577, "udp"}, {"data-port", {NULL}, 3578, "tcp"}, {"data-port", {NULL}, 3578, "udp"}, {"ttat3lb", {NULL}, 3579, "tcp"}, {"ttat3lb", {NULL}, 3579, "udp"}, {"nati-svrloc", {NULL}, 3580, "tcp"}, {"nati-svrloc", {NULL}, 3580, "udp"}, {"kfxaclicensing", {NULL}, 3581, "tcp"}, {"kfxaclicensing", {NULL}, 3581, "udp"}, {"press", {NULL}, 3582, "tcp"}, {"press", {NULL}, 3582, "udp"}, {"canex-watch", {NULL}, 3583, "tcp"}, {"canex-watch", {NULL}, 3583, "udp"}, {"u-dbap", {NULL}, 3584, "tcp"}, {"u-dbap", {NULL}, 3584, "udp"}, {"emprise-lls", {NULL}, 3585, "tcp"}, {"emprise-lls", {NULL}, 3585, "udp"}, {"emprise-lsc", {NULL}, 3586, "tcp"}, {"emprise-lsc", {NULL}, 3586, "udp"}, {"p2pgroup", {NULL}, 3587, "tcp"}, {"p2pgroup", {NULL}, 3587, "udp"}, {"sentinel", {NULL}, 3588, "tcp"}, {"sentinel", {NULL}, 3588, "udp"}, {"isomair", {NULL}, 3589, "tcp"}, {"isomair", {NULL}, 3589, "udp"}, {"wv-csp-sms", {NULL}, 3590, "tcp"}, {"wv-csp-sms", {NULL}, 3590, "udp"}, {"gtrack-server", {NULL}, 3591, "tcp"}, {"gtrack-server", {NULL}, 3591, "udp"}, {"gtrack-ne", {NULL}, 3592, "tcp"}, {"gtrack-ne", {NULL}, 3592, "udp"}, {"bpmd", {NULL}, 3593, "tcp"}, {"bpmd", {NULL}, 3593, "udp"}, {"mediaspace", {NULL}, 3594, "tcp"}, {"mediaspace", {NULL}, 3594, "udp"}, {"shareapp", {NULL}, 3595, "tcp"}, {"shareapp", {NULL}, 3595, "udp"}, {"iw-mmogame", {NULL}, 3596, "tcp"}, {"iw-mmogame", {NULL}, 3596, "udp"}, {"a14", {NULL}, 3597, "tcp"}, {"a14", {NULL}, 3597, "udp"}, {"a15", {NULL}, 3598, "tcp"}, {"a15", {NULL}, 3598, "udp"}, {"quasar-server", {NULL}, 3599, "tcp"}, {"quasar-server", {NULL}, 3599, "udp"}, {"trap-daemon", {NULL}, 3600, "tcp"}, {"trap-daemon", {NULL}, 3600, "udp"}, {"visinet-gui", {NULL}, 3601, "tcp"}, {"visinet-gui", {NULL}, 3601, "udp"}, {"infiniswitchcl", {NULL}, 3602, "tcp"}, {"infiniswitchcl", {NULL}, 3602, "udp"}, {"int-rcv-cntrl", {NULL}, 3603, "tcp"}, {"int-rcv-cntrl", {NULL}, 3603, "udp"}, {"bmc-jmx-port", {NULL}, 3604, "tcp"}, {"bmc-jmx-port", {NULL}, 3604, "udp"}, {"comcam-io", {NULL}, 3605, "tcp"}, {"comcam-io", {NULL}, 3605, "udp"}, {"splitlock", {NULL}, 3606, "tcp"}, {"splitlock", {NULL}, 3606, "udp"}, {"precise-i3", {NULL}, 3607, "tcp"}, {"precise-i3", {NULL}, 3607, "udp"}, {"trendchip-dcp", {NULL}, 3608, "tcp"}, {"trendchip-dcp", {NULL}, 3608, "udp"}, {"cpdi-pidas-cm", {NULL}, 3609, "tcp"}, {"cpdi-pidas-cm", {NULL}, 3609, "udp"}, {"echonet", {NULL}, 3610, "tcp"}, {"echonet", {NULL}, 3610, "udp"}, {"six-degrees", {NULL}, 3611, "tcp"}, {"six-degrees", {NULL}, 3611, "udp"}, {"hp-dataprotect", {NULL}, 3612, "tcp"}, {"hp-dataprotect", {NULL}, 3612, "udp"}, {"alaris-disc", {NULL}, 3613, "tcp"}, {"alaris-disc", {NULL}, 3613, "udp"}, {"sigma-port", {NULL}, 3614, "tcp"}, {"sigma-port", {NULL}, 3614, "udp"}, {"start-network", {NULL}, 3615, "tcp"}, {"start-network", {NULL}, 3615, "udp"}, {"cd3o-protocol", {NULL}, 3616, "tcp"}, {"cd3o-protocol", {NULL}, 3616, "udp"}, {"sharp-server", {NULL}, 3617, "tcp"}, {"sharp-server", {NULL}, 3617, "udp"}, {"aairnet-1", {NULL}, 3618, "tcp"}, {"aairnet-1", {NULL}, 3618, "udp"}, {"aairnet-2", {NULL}, 3619, "tcp"}, {"aairnet-2", {NULL}, 3619, "udp"}, {"ep-pcp", {NULL}, 3620, "tcp"}, {"ep-pcp", {NULL}, 3620, "udp"}, {"ep-nsp", {NULL}, 3621, "tcp"}, {"ep-nsp", {NULL}, 3621, "udp"}, {"ff-lr-port", {NULL}, 3622, "tcp"}, {"ff-lr-port", {NULL}, 3622, "udp"}, {"haipe-discover", {NULL}, 3623, "tcp"}, {"haipe-discover", {NULL}, 3623, "udp"}, {"dist-upgrade", {NULL}, 3624, "tcp"}, {"dist-upgrade", {NULL}, 3624, "udp"}, {"volley", {NULL}, 3625, "tcp"}, {"volley", {NULL}, 3625, "udp"}, {"bvcdaemon-port", {NULL}, 3626, "tcp"}, {"bvcdaemon-port", {NULL}, 3626, "udp"}, {"jamserverport", {NULL}, 3627, "tcp"}, {"jamserverport", {NULL}, 3627, "udp"}, {"ept-machine", {NULL}, 3628, "tcp"}, {"ept-machine", {NULL}, 3628, "udp"}, {"escvpnet", {NULL}, 3629, "tcp"}, {"escvpnet", {NULL}, 3629, "udp"}, {"cs-remote-db", {NULL}, 3630, "tcp"}, {"cs-remote-db", {NULL}, 3630, "udp"}, {"cs-services", {NULL}, 3631, "tcp"}, {"cs-services", {NULL}, 3631, "udp"}, {"distcc", {NULL}, 3632, "tcp"}, {"distcc", {NULL}, 3632, "udp"}, {"wacp", {NULL}, 3633, "tcp"}, {"wacp", {NULL}, 3633, "udp"}, {"hlibmgr", {NULL}, 3634, "tcp"}, {"hlibmgr", {NULL}, 3634, "udp"}, {"sdo", {NULL}, 3635, "tcp"}, {"sdo", {NULL}, 3635, "udp"}, {"servistaitsm", {NULL}, 3636, "tcp"}, {"servistaitsm", {NULL}, 3636, "udp"}, {"scservp", {NULL}, 3637, "tcp"}, {"scservp", {NULL}, 3637, "udp"}, {"ehp-backup", {NULL}, 3638, "tcp"}, {"ehp-backup", {NULL}, 3638, "udp"}, {"xap-ha", {NULL}, 3639, "tcp"}, {"xap-ha", {NULL}, 3639, "udp"}, {"netplay-port1", {NULL}, 3640, "tcp"}, {"netplay-port1", {NULL}, 3640, "udp"}, {"netplay-port2", {NULL}, 3641, "tcp"}, {"netplay-port2", {NULL}, 3641, "udp"}, {"juxml-port", {NULL}, 3642, "tcp"}, {"juxml-port", {NULL}, 3642, "udp"}, {"audiojuggler", {NULL}, 3643, "tcp"}, {"audiojuggler", {NULL}, 3643, "udp"}, {"ssowatch", {NULL}, 3644, "tcp"}, {"ssowatch", {NULL}, 3644, "udp"}, {"cyc", {NULL}, 3645, "tcp"}, {"cyc", {NULL}, 3645, "udp"}, {"xss-srv-port", {NULL}, 3646, "tcp"}, {"xss-srv-port", {NULL}, 3646, "udp"}, {"splitlock-gw", {NULL}, 3647, "tcp"}, {"splitlock-gw", {NULL}, 3647, "udp"}, {"fjcp", {NULL}, 3648, "tcp"}, {"fjcp", {NULL}, 3648, "udp"}, {"nmmp", {NULL}, 3649, "tcp"}, {"nmmp", {NULL}, 3649, "udp"}, {"prismiq-plugin", {NULL}, 3650, "tcp"}, {"prismiq-plugin", {NULL}, 3650, "udp"}, {"xrpc-registry", {NULL}, 3651, "tcp"}, {"xrpc-registry", {NULL}, 3651, "udp"}, {"vxcrnbuport", {NULL}, 3652, "tcp"}, {"vxcrnbuport", {NULL}, 3652, "udp"}, {"tsp", {NULL}, 3653, "tcp"}, {"tsp", {NULL}, 3653, "udp"}, {"vaprtm", {NULL}, 3654, "tcp"}, {"vaprtm", {NULL}, 3654, "udp"}, {"abatemgr", {NULL}, 3655, "tcp"}, {"abatemgr", {NULL}, 3655, "udp"}, {"abatjss", {NULL}, 3656, "tcp"}, {"abatjss", {NULL}, 3656, "udp"}, {"immedianet-bcn", {NULL}, 3657, "tcp"}, {"immedianet-bcn", {NULL}, 3657, "udp"}, {"ps-ams", {NULL}, 3658, "tcp"}, {"ps-ams", {NULL}, 3658, "udp"}, {"apple-sasl", {NULL}, 3659, "tcp"}, {"apple-sasl", {NULL}, 3659, "udp"}, {"can-nds-ssl", {NULL}, 3660, "tcp"}, {"can-nds-ssl", {NULL}, 3660, "udp"}, {"can-ferret-ssl", {NULL}, 3661, "tcp"}, {"can-ferret-ssl", {NULL}, 3661, "udp"}, {"pserver", {NULL}, 3662, "tcp"}, {"pserver", {NULL}, 3662, "udp"}, {"dtp", {NULL}, 3663, "tcp"}, {"dtp", {NULL}, 3663, "udp"}, {"ups-engine", {NULL}, 3664, "tcp"}, {"ups-engine", {NULL}, 3664, "udp"}, {"ent-engine", {NULL}, 3665, "tcp"}, {"ent-engine", {NULL}, 3665, "udp"}, {"eserver-pap", {NULL}, 3666, "tcp"}, {"eserver-pap", {NULL}, 3666, "udp"}, {"infoexch", {NULL}, 3667, "tcp"}, {"infoexch", {NULL}, 3667, "udp"}, {"dell-rm-port", {NULL}, 3668, "tcp"}, {"dell-rm-port", {NULL}, 3668, "udp"}, {"casanswmgmt", {NULL}, 3669, "tcp"}, {"casanswmgmt", {NULL}, 3669, "udp"}, {"smile", {NULL}, 3670, "tcp"}, {"smile", {NULL}, 3670, "udp"}, {"efcp", {NULL}, 3671, "tcp"}, {"efcp", {NULL}, 3671, "udp"}, {"lispworks-orb", {NULL}, 3672, "tcp"}, {"lispworks-orb", {NULL}, 3672, "udp"}, {"mediavault-gui", {NULL}, 3673, "tcp"}, {"mediavault-gui", {NULL}, 3673, "udp"}, {"wininstall-ipc", {NULL}, 3674, "tcp"}, {"wininstall-ipc", {NULL}, 3674, "udp"}, {"calltrax", {NULL}, 3675, "tcp"}, {"calltrax", {NULL}, 3675, "udp"}, {"va-pacbase", {NULL}, 3676, "tcp"}, {"va-pacbase", {NULL}, 3676, "udp"}, {"roverlog", {NULL}, 3677, "tcp"}, {"roverlog", {NULL}, 3677, "udp"}, {"ipr-dglt", {NULL}, 3678, "tcp"}, {"ipr-dglt", {NULL}, 3678, "udp"}, {"newton-dock", {NULL}, 3679, "tcp"}, {"newton-dock", {NULL}, 3679, "udp"}, {"npds-tracker", {NULL}, 3680, "tcp"}, {"npds-tracker", {NULL}, 3680, "udp"}, {"bts-x73", {NULL}, 3681, "tcp"}, {"bts-x73", {NULL}, 3681, "udp"}, {"cas-mapi", {NULL}, 3682, "tcp"}, {"cas-mapi", {NULL}, 3682, "udp"}, {"bmc-ea", {NULL}, 3683, "tcp"}, {"bmc-ea", {NULL}, 3683, "udp"}, {"faxstfx-port", {NULL}, 3684, "tcp"}, {"faxstfx-port", {NULL}, 3684, "udp"}, {"dsx-agent", {NULL}, 3685, "tcp"}, {"dsx-agent", {NULL}, 3685, "udp"}, {"tnmpv2", {NULL}, 3686, "tcp"}, {"tnmpv2", {NULL}, 3686, "udp"}, {"simple-push", {NULL}, 3687, "tcp"}, {"simple-push", {NULL}, 3687, "udp"}, {"simple-push-s", {NULL}, 3688, "tcp"}, {"simple-push-s", {NULL}, 3688, "udp"}, {"daap", {NULL}, 3689, "tcp"}, {"daap", {NULL}, 3689, "udp"}, {"svn", {NULL}, 3690, "tcp"}, {"svn", {NULL}, 3690, "udp"}, {"magaya-network", {NULL}, 3691, "tcp"}, {"magaya-network", {NULL}, 3691, "udp"}, {"intelsync", {NULL}, 3692, "tcp"}, {"intelsync", {NULL}, 3692, "udp"}, {"bmc-data-coll", {NULL}, 3695, "tcp"}, {"bmc-data-coll", {NULL}, 3695, "udp"}, {"telnetcpcd", {NULL}, 3696, "tcp"}, {"telnetcpcd", {NULL}, 3696, "udp"}, {"nw-license", {NULL}, 3697, "tcp"}, {"nw-license", {NULL}, 3697, "udp"}, {"sagectlpanel", {NULL}, 3698, "tcp"}, {"sagectlpanel", {NULL}, 3698, "udp"}, {"kpn-icw", {NULL}, 3699, "tcp"}, {"kpn-icw", {NULL}, 3699, "udp"}, {"lrs-paging", {NULL}, 3700, "tcp"}, {"lrs-paging", {NULL}, 3700, "udp"}, {"netcelera", {NULL}, 3701, "tcp"}, {"netcelera", {NULL}, 3701, "udp"}, {"ws-discovery", {NULL}, 3702, "tcp"}, {"ws-discovery", {NULL}, 3702, "udp"}, {"adobeserver-3", {NULL}, 3703, "tcp"}, {"adobeserver-3", {NULL}, 3703, "udp"}, {"adobeserver-4", {NULL}, 3704, "tcp"}, {"adobeserver-4", {NULL}, 3704, "udp"}, {"adobeserver-5", {NULL}, 3705, "tcp"}, {"adobeserver-5", {NULL}, 3705, "udp"}, {"rt-event", {NULL}, 3706, "tcp"}, {"rt-event", {NULL}, 3706, "udp"}, {"rt-event-s", {NULL}, 3707, "tcp"}, {"rt-event-s", {NULL}, 3707, "udp"}, {"sun-as-iiops", {NULL}, 3708, "tcp"}, {"sun-as-iiops", {NULL}, 3708, "udp"}, {"ca-idms", {NULL}, 3709, "tcp"}, {"ca-idms", {NULL}, 3709, "udp"}, {"portgate-auth", {NULL}, 3710, "tcp"}, {"portgate-auth", {NULL}, 3710, "udp"}, {"edb-server2", {NULL}, 3711, "tcp"}, {"edb-server2", {NULL}, 3711, "udp"}, {"sentinel-ent", {NULL}, 3712, "tcp"}, {"sentinel-ent", {NULL}, 3712, "udp"}, {"tftps", {NULL}, 3713, "tcp"}, {"tftps", {NULL}, 3713, "udp"}, {"delos-dms", {NULL}, 3714, "tcp"}, {"delos-dms", {NULL}, 3714, "udp"}, {"anoto-rendezv", {NULL}, 3715, "tcp"}, {"anoto-rendezv", {NULL}, 3715, "udp"}, {"wv-csp-sms-cir", {NULL}, 3716, "tcp"}, {"wv-csp-sms-cir", {NULL}, 3716, "udp"}, {"wv-csp-udp-cir", {NULL}, 3717, "tcp"}, {"wv-csp-udp-cir", {NULL}, 3717, "udp"}, {"opus-services", {NULL}, 3718, "tcp"}, {"opus-services", {NULL}, 3718, "udp"}, {"itelserverport", {NULL}, 3719, "tcp"}, {"itelserverport", {NULL}, 3719, "udp"}, {"ufastro-instr", {NULL}, 3720, "tcp"}, {"ufastro-instr", {NULL}, 3720, "udp"}, {"xsync", {NULL}, 3721, "tcp"}, {"xsync", {NULL}, 3721, "udp"}, {"xserveraid", {NULL}, 3722, "tcp"}, {"xserveraid", {NULL}, 3722, "udp"}, {"sychrond", {NULL}, 3723, "tcp"}, {"sychrond", {NULL}, 3723, "udp"}, {"blizwow", {NULL}, 3724, "tcp"}, {"blizwow", {NULL}, 3724, "udp"}, {"na-er-tip", {NULL}, 3725, "tcp"}, {"na-er-tip", {NULL}, 3725, "udp"}, {"array-manager", {NULL}, 3726, "tcp"}, {"array-manager", {NULL}, 3726, "udp"}, {"e-mdu", {NULL}, 3727, "tcp"}, {"e-mdu", {NULL}, 3727, "udp"}, {"e-woa", {NULL}, 3728, "tcp"}, {"e-woa", {NULL}, 3728, "udp"}, {"fksp-audit", {NULL}, 3729, "tcp"}, {"fksp-audit", {NULL}, 3729, "udp"}, {"client-ctrl", {NULL}, 3730, "tcp"}, {"client-ctrl", {NULL}, 3730, "udp"}, {"smap", {NULL}, 3731, "tcp"}, {"smap", {NULL}, 3731, "udp"}, {"m-wnn", {NULL}, 3732, "tcp"}, {"m-wnn", {NULL}, 3732, "udp"}, {"multip-msg", {NULL}, 3733, "tcp"}, {"multip-msg", {NULL}, 3733, "udp"}, {"synel-data", {NULL}, 3734, "tcp"}, {"synel-data", {NULL}, 3734, "udp"}, {"pwdis", {NULL}, 3735, "tcp"}, {"pwdis", {NULL}, 3735, "udp"}, {"rs-rmi", {NULL}, 3736, "tcp"}, {"rs-rmi", {NULL}, 3736, "udp"}, {"xpanel", {NULL}, 3737, "tcp"}, {"versatalk", {NULL}, 3738, "tcp"}, {"versatalk", {NULL}, 3738, "udp"}, {"launchbird-lm", {NULL}, 3739, "tcp"}, {"launchbird-lm", {NULL}, 3739, "udp"}, {"heartbeat", {NULL}, 3740, "tcp"}, {"heartbeat", {NULL}, 3740, "udp"}, {"wysdma", {NULL}, 3741, "tcp"}, {"wysdma", {NULL}, 3741, "udp"}, {"cst-port", {NULL}, 3742, "tcp"}, {"cst-port", {NULL}, 3742, "udp"}, {"ipcs-command", {NULL}, 3743, "tcp"}, {"ipcs-command", {NULL}, 3743, "udp"}, {"sasg", {NULL}, 3744, "tcp"}, {"sasg", {NULL}, 3744, "udp"}, {"gw-call-port", {NULL}, 3745, "tcp"}, {"gw-call-port", {NULL}, 3745, "udp"}, {"linktest", {NULL}, 3746, "tcp"}, {"linktest", {NULL}, 3746, "udp"}, {"linktest-s", {NULL}, 3747, "tcp"}, {"linktest-s", {NULL}, 3747, "udp"}, {"webdata", {NULL}, 3748, "tcp"}, {"webdata", {NULL}, 3748, "udp"}, {"cimtrak", {NULL}, 3749, "tcp"}, {"cimtrak", {NULL}, 3749, "udp"}, {"cbos-ip-port", {NULL}, 3750, "tcp"}, {"cbos-ip-port", {NULL}, 3750, "udp"}, {"gprs-cube", {NULL}, 3751, "tcp"}, {"gprs-cube", {NULL}, 3751, "udp"}, {"vipremoteagent", {NULL}, 3752, "tcp"}, {"vipremoteagent", {NULL}, 3752, "udp"}, {"nattyserver", {NULL}, 3753, "tcp"}, {"nattyserver", {NULL}, 3753, "udp"}, {"timestenbroker", {NULL}, 3754, "tcp"}, {"timestenbroker", {NULL}, 3754, "udp"}, {"sas-remote-hlp", {NULL}, 3755, "tcp"}, {"sas-remote-hlp", {NULL}, 3755, "udp"}, {"canon-capt", {NULL}, 3756, "tcp"}, {"canon-capt", {NULL}, 3756, "udp"}, {"grf-port", {NULL}, 3757, "tcp"}, {"grf-port", {NULL}, 3757, "udp"}, {"apw-registry", {NULL}, 3758, "tcp"}, {"apw-registry", {NULL}, 3758, "udp"}, {"exapt-lmgr", {NULL}, 3759, "tcp"}, {"exapt-lmgr", {NULL}, 3759, "udp"}, {"adtempusclient", {NULL}, 3760, "tcp"}, {"adtempusclient", {NULL}, 3760, "udp"}, {"gsakmp", {NULL}, 3761, "tcp"}, {"gsakmp", {NULL}, 3761, "udp"}, {"gbs-smp", {NULL}, 3762, "tcp"}, {"gbs-smp", {NULL}, 3762, "udp"}, {"xo-wave", {NULL}, 3763, "tcp"}, {"xo-wave", {NULL}, 3763, "udp"}, {"mni-prot-rout", {NULL}, 3764, "tcp"}, {"mni-prot-rout", {NULL}, 3764, "udp"}, {"rtraceroute", {NULL}, 3765, "tcp"}, {"rtraceroute", {NULL}, 3765, "udp"}, {"listmgr-port", {NULL}, 3767, "tcp"}, {"listmgr-port", {NULL}, 3767, "udp"}, {"rblcheckd", {NULL}, 3768, "tcp"}, {"rblcheckd", {NULL}, 3768, "udp"}, {"haipe-otnk", {NULL}, 3769, "tcp"}, {"haipe-otnk", {NULL}, 3769, "udp"}, {"cindycollab", {NULL}, 3770, "tcp"}, {"cindycollab", {NULL}, 3770, "udp"}, {"paging-port", {NULL}, 3771, "tcp"}, {"paging-port", {NULL}, 3771, "udp"}, {"ctp", {NULL}, 3772, "tcp"}, {"ctp", {NULL}, 3772, "udp"}, {"ctdhercules", {NULL}, 3773, "tcp"}, {"ctdhercules", {NULL}, 3773, "udp"}, {"zicom", {NULL}, 3774, "tcp"}, {"zicom", {NULL}, 3774, "udp"}, {"ispmmgr", {NULL}, 3775, "tcp"}, {"ispmmgr", {NULL}, 3775, "udp"}, {"dvcprov-port", {NULL}, 3776, "tcp"}, {"dvcprov-port", {NULL}, 3776, "udp"}, {"jibe-eb", {NULL}, 3777, "tcp"}, {"jibe-eb", {NULL}, 3777, "udp"}, {"c-h-it-port", {NULL}, 3778, "tcp"}, {"c-h-it-port", {NULL}, 3778, "udp"}, {"cognima", {NULL}, 3779, "tcp"}, {"cognima", {NULL}, 3779, "udp"}, {"nnp", {NULL}, 3780, "tcp"}, {"nnp", {NULL}, 3780, "udp"}, {"abcvoice-port", {NULL}, 3781, "tcp"}, {"abcvoice-port", {NULL}, 3781, "udp"}, {"iso-tp0s", {NULL}, 3782, "tcp"}, {"iso-tp0s", {NULL}, 3782, "udp"}, {"bim-pem", {NULL}, 3783, "tcp"}, {"bim-pem", {NULL}, 3783, "udp"}, {"bfd-control", {NULL}, 3784, "tcp"}, {"bfd-control", {NULL}, 3784, "udp"}, {"bfd-echo", {NULL}, 3785, "tcp"}, {"bfd-echo", {NULL}, 3785, "udp"}, {"upstriggervsw", {NULL}, 3786, "tcp"}, {"upstriggervsw", {NULL}, 3786, "udp"}, {"fintrx", {NULL}, 3787, "tcp"}, {"fintrx", {NULL}, 3787, "udp"}, {"isrp-port", {NULL}, 3788, "tcp"}, {"isrp-port", {NULL}, 3788, "udp"}, {"remotedeploy", {NULL}, 3789, "tcp"}, {"remotedeploy", {NULL}, 3789, "udp"}, {"quickbooksrds", {NULL}, 3790, "tcp"}, {"quickbooksrds", {NULL}, 3790, "udp"}, {"tvnetworkvideo", {NULL}, 3791, "tcp"}, {"tvnetworkvideo", {NULL}, 3791, "udp"}, {"sitewatch", {NULL}, 3792, "tcp"}, {"sitewatch", {NULL}, 3792, "udp"}, {"dcsoftware", {NULL}, 3793, "tcp"}, {"dcsoftware", {NULL}, 3793, "udp"}, {"jaus", {NULL}, 3794, "tcp"}, {"jaus", {NULL}, 3794, "udp"}, {"myblast", {NULL}, 3795, "tcp"}, {"myblast", {NULL}, 3795, "udp"}, {"spw-dialer", {NULL}, 3796, "tcp"}, {"spw-dialer", {NULL}, 3796, "udp"}, {"idps", {NULL}, 3797, "tcp"}, {"idps", {NULL}, 3797, "udp"}, {"minilock", {NULL}, 3798, "tcp"}, {"minilock", {NULL}, 3798, "udp"}, {"radius-dynauth", {NULL}, 3799, "tcp"}, {"radius-dynauth", {NULL}, 3799, "udp"}, {"pwgpsi", {NULL}, 3800, "tcp"}, {"pwgpsi", {NULL}, 3800, "udp"}, {"ibm-mgr", {NULL}, 3801, "tcp"}, {"ibm-mgr", {NULL}, 3801, "udp"}, {"vhd", {NULL}, 3802, "tcp"}, {"vhd", {NULL}, 3802, "udp"}, {"soniqsync", {NULL}, 3803, "tcp"}, {"soniqsync", {NULL}, 3803, "udp"}, {"iqnet-port", {NULL}, 3804, "tcp"}, {"iqnet-port", {NULL}, 3804, "udp"}, {"tcpdataserver", {NULL}, 3805, "tcp"}, {"tcpdataserver", {NULL}, 3805, "udp"}, {"wsmlb", {NULL}, 3806, "tcp"}, {"wsmlb", {NULL}, 3806, "udp"}, {"spugna", {NULL}, 3807, "tcp"}, {"spugna", {NULL}, 3807, "udp"}, {"sun-as-iiops-ca", {NULL}, 3808, "tcp"}, {"sun-as-iiops-ca", {NULL}, 3808, "udp"}, {"apocd", {NULL}, 3809, "tcp"}, {"apocd", {NULL}, 3809, "udp"}, {"wlanauth", {NULL}, 3810, "tcp"}, {"wlanauth", {NULL}, 3810, "udp"}, {"amp", {NULL}, 3811, "tcp"}, {"amp", {NULL}, 3811, "udp"}, {"neto-wol-server", {NULL}, 3812, "tcp"}, {"neto-wol-server", {NULL}, 3812, "udp"}, {"rap-ip", {NULL}, 3813, "tcp"}, {"rap-ip", {NULL}, 3813, "udp"}, {"neto-dcs", {NULL}, 3814, "tcp"}, {"neto-dcs", {NULL}, 3814, "udp"}, {"lansurveyorxml", {NULL}, 3815, "tcp"}, {"lansurveyorxml", {NULL}, 3815, "udp"}, {"sunlps-http", {NULL}, 3816, "tcp"}, {"sunlps-http", {NULL}, 3816, "udp"}, {"tapeware", {NULL}, 3817, "tcp"}, {"tapeware", {NULL}, 3817, "udp"}, {"crinis-hb", {NULL}, 3818, "tcp"}, {"crinis-hb", {NULL}, 3818, "udp"}, {"epl-slp", {NULL}, 3819, "tcp"}, {"epl-slp", {NULL}, 3819, "udp"}, {"scp", {NULL}, 3820, "tcp"}, {"scp", {NULL}, 3820, "udp"}, {"pmcp", {NULL}, 3821, "tcp"}, {"pmcp", {NULL}, 3821, "udp"}, {"acp-discovery", {NULL}, 3822, "tcp"}, {"acp-discovery", {NULL}, 3822, "udp"}, {"acp-conduit", {NULL}, 3823, "tcp"}, {"acp-conduit", {NULL}, 3823, "udp"}, {"acp-policy", {NULL}, 3824, "tcp"}, {"acp-policy", {NULL}, 3824, "udp"}, {"ffserver", {NULL}, 3825, "tcp"}, {"ffserver", {NULL}, 3825, "udp"}, {"wormux", {NULL}, 3826, "tcp"}, {"wormux", {NULL}, 3826, "udp"}, {"netmpi", {NULL}, 3827, "tcp"}, {"netmpi", {NULL}, 3827, "udp"}, {"neteh", {NULL}, 3828, "tcp"}, {"neteh", {NULL}, 3828, "udp"}, {"neteh-ext", {NULL}, 3829, "tcp"}, {"neteh-ext", {NULL}, 3829, "udp"}, {"cernsysmgmtagt", {NULL}, 3830, "tcp"}, {"cernsysmgmtagt", {NULL}, 3830, "udp"}, {"dvapps", {NULL}, 3831, "tcp"}, {"dvapps", {NULL}, 3831, "udp"}, {"xxnetserver", {NULL}, 3832, "tcp"}, {"xxnetserver", {NULL}, 3832, "udp"}, {"aipn-auth", {NULL}, 3833, "tcp"}, {"aipn-auth", {NULL}, 3833, "udp"}, {"spectardata", {NULL}, 3834, "tcp"}, {"spectardata", {NULL}, 3834, "udp"}, {"spectardb", {NULL}, 3835, "tcp"}, {"spectardb", {NULL}, 3835, "udp"}, {"markem-dcp", {NULL}, 3836, "tcp"}, {"markem-dcp", {NULL}, 3836, "udp"}, {"mkm-discovery", {NULL}, 3837, "tcp"}, {"mkm-discovery", {NULL}, 3837, "udp"}, {"sos", {NULL}, 3838, "tcp"}, {"sos", {NULL}, 3838, "udp"}, {"amx-rms", {NULL}, 3839, "tcp"}, {"amx-rms", {NULL}, 3839, "udp"}, {"flirtmitmir", {NULL}, 3840, "tcp"}, {"flirtmitmir", {NULL}, 3840, "udp"}, {"zfirm-shiprush3", {NULL}, 3841, "tcp"}, {"zfirm-shiprush3", {NULL}, 3841, "udp"}, {"nhci", {NULL}, 3842, "tcp"}, {"nhci", {NULL}, 3842, "udp"}, {"quest-agent", {NULL}, 3843, "tcp"}, {"quest-agent", {NULL}, 3843, "udp"}, {"rnm", {NULL}, 3844, "tcp"}, {"rnm", {NULL}, 3844, "udp"}, {"v-one-spp", {NULL}, 3845, "tcp"}, {"v-one-spp", {NULL}, 3845, "udp"}, {"an-pcp", {NULL}, 3846, "tcp"}, {"an-pcp", {NULL}, 3846, "udp"}, {"msfw-control", {NULL}, 3847, "tcp"}, {"msfw-control", {NULL}, 3847, "udp"}, {"item", {NULL}, 3848, "tcp"}, {"item", {NULL}, 3848, "udp"}, {"spw-dnspreload", {NULL}, 3849, "tcp"}, {"spw-dnspreload", {NULL}, 3849, "udp"}, {"qtms-bootstrap", {NULL}, 3850, "tcp"}, {"qtms-bootstrap", {NULL}, 3850, "udp"}, {"spectraport", {NULL}, 3851, "tcp"}, {"spectraport", {NULL}, 3851, "udp"}, {"sse-app-config", {NULL}, 3852, "tcp"}, {"sse-app-config", {NULL}, 3852, "udp"}, {"sscan", {NULL}, 3853, "tcp"}, {"sscan", {NULL}, 3853, "udp"}, {"stryker-com", {NULL}, 3854, "tcp"}, {"stryker-com", {NULL}, 3854, "udp"}, {"opentrac", {NULL}, 3855, "tcp"}, {"opentrac", {NULL}, 3855, "udp"}, {"informer", {NULL}, 3856, "tcp"}, {"informer", {NULL}, 3856, "udp"}, {"trap-port", {NULL}, 3857, "tcp"}, {"trap-port", {NULL}, 3857, "udp"}, {"trap-port-mom", {NULL}, 3858, "tcp"}, {"trap-port-mom", {NULL}, 3858, "udp"}, {"nav-port", {NULL}, 3859, "tcp"}, {"nav-port", {NULL}, 3859, "udp"}, {"sasp", {NULL}, 3860, "tcp"}, {"sasp", {NULL}, 3860, "udp"}, {"winshadow-hd", {NULL}, 3861, "tcp"}, {"winshadow-hd", {NULL}, 3861, "udp"}, {"giga-pocket", {NULL}, 3862, "tcp"}, {"giga-pocket", {NULL}, 3862, "udp"}, {"asap-tcp", {NULL}, 3863, "tcp"}, {"asap-udp", {NULL}, 3863, "udp"}, {"asap-sctp", {NULL}, 3863, "sctp"}, {"asap-tcp-tls", {NULL}, 3864, "tcp"}, {"asap-sctp-tls", {NULL}, 3864, "sctp"}, {"xpl", {NULL}, 3865, "tcp"}, {"xpl", {NULL}, 3865, "udp"}, {"dzdaemon", {NULL}, 3866, "tcp"}, {"dzdaemon", {NULL}, 3866, "udp"}, {"dzoglserver", {NULL}, 3867, "tcp"}, {"dzoglserver", {NULL}, 3867, "udp"}, {"diameter", {NULL}, 3868, "tcp"}, {"diameter", {NULL}, 3868, "sctp"}, {"ovsam-mgmt", {NULL}, 3869, "tcp"}, {"ovsam-mgmt", {NULL}, 3869, "udp"}, {"ovsam-d-agent", {NULL}, 3870, "tcp"}, {"ovsam-d-agent", {NULL}, 3870, "udp"}, {"avocent-adsap", {NULL}, 3871, "tcp"}, {"avocent-adsap", {NULL}, 3871, "udp"}, {"oem-agent", {NULL}, 3872, "tcp"}, {"oem-agent", {NULL}, 3872, "udp"}, {"fagordnc", {NULL}, 3873, "tcp"}, {"fagordnc", {NULL}, 3873, "udp"}, {"sixxsconfig", {NULL}, 3874, "tcp"}, {"sixxsconfig", {NULL}, 3874, "udp"}, {"pnbscada", {NULL}, 3875, "tcp"}, {"pnbscada", {NULL}, 3875, "udp"}, {"dl_agent", {NULL}, 3876, "tcp"}, {"dl_agent", {NULL}, 3876, "udp"}, {"xmpcr-interface", {NULL}, 3877, "tcp"}, {"xmpcr-interface", {NULL}, 3877, "udp"}, {"fotogcad", {NULL}, 3878, "tcp"}, {"fotogcad", {NULL}, 3878, "udp"}, {"appss-lm", {NULL}, 3879, "tcp"}, {"appss-lm", {NULL}, 3879, "udp"}, {"igrs", {NULL}, 3880, "tcp"}, {"igrs", {NULL}, 3880, "udp"}, {"idac", {NULL}, 3881, "tcp"}, {"idac", {NULL}, 3881, "udp"}, {"msdts1", {NULL}, 3882, "tcp"}, {"msdts1", {NULL}, 3882, "udp"}, {"vrpn", {NULL}, 3883, "tcp"}, {"vrpn", {NULL}, 3883, "udp"}, {"softrack-meter", {NULL}, 3884, "tcp"}, {"softrack-meter", {NULL}, 3884, "udp"}, {"topflow-ssl", {NULL}, 3885, "tcp"}, {"topflow-ssl", {NULL}, 3885, "udp"}, {"nei-management", {NULL}, 3886, "tcp"}, {"nei-management", {NULL}, 3886, "udp"}, {"ciphire-data", {NULL}, 3887, "tcp"}, {"ciphire-data", {NULL}, 3887, "udp"}, {"ciphire-serv", {NULL}, 3888, "tcp"}, {"ciphire-serv", {NULL}, 3888, "udp"}, {"dandv-tester", {NULL}, 3889, "tcp"}, {"dandv-tester", {NULL}, 3889, "udp"}, {"ndsconnect", {NULL}, 3890, "tcp"}, {"ndsconnect", {NULL}, 3890, "udp"}, {"rtc-pm-port", {NULL}, 3891, "tcp"}, {"rtc-pm-port", {NULL}, 3891, "udp"}, {"pcc-image-port", {NULL}, 3892, "tcp"}, {"pcc-image-port", {NULL}, 3892, "udp"}, {"cgi-starapi", {NULL}, 3893, "tcp"}, {"cgi-starapi", {NULL}, 3893, "udp"}, {"syam-agent", {NULL}, 3894, "tcp"}, {"syam-agent", {NULL}, 3894, "udp"}, {"syam-smc", {NULL}, 3895, "tcp"}, {"syam-smc", {NULL}, 3895, "udp"}, {"sdo-tls", {NULL}, 3896, "tcp"}, {"sdo-tls", {NULL}, 3896, "udp"}, {"sdo-ssh", {NULL}, 3897, "tcp"}, {"sdo-ssh", {NULL}, 3897, "udp"}, {"senip", {NULL}, 3898, "tcp"}, {"senip", {NULL}, 3898, "udp"}, {"itv-control", {NULL}, 3899, "tcp"}, {"itv-control", {NULL}, 3899, "udp"}, {"udt_os", {NULL}, 3900, "tcp"}, {"udt_os", {NULL}, 3900, "udp"}, {"nimsh", {NULL}, 3901, "tcp"}, {"nimsh", {NULL}, 3901, "udp"}, {"nimaux", {NULL}, 3902, "tcp"}, {"nimaux", {NULL}, 3902, "udp"}, {"charsetmgr", {NULL}, 3903, "tcp"}, {"charsetmgr", {NULL}, 3903, "udp"}, {"omnilink-port", {NULL}, 3904, "tcp"}, {"omnilink-port", {NULL}, 3904, "udp"}, {"mupdate", {NULL}, 3905, "tcp"}, {"mupdate", {NULL}, 3905, "udp"}, {"topovista-data", {NULL}, 3906, "tcp"}, {"topovista-data", {NULL}, 3906, "udp"}, {"imoguia-port", {NULL}, 3907, "tcp"}, {"imoguia-port", {NULL}, 3907, "udp"}, {"hppronetman", {NULL}, 3908, "tcp"}, {"hppronetman", {NULL}, 3908, "udp"}, {"surfcontrolcpa", {NULL}, 3909, "tcp"}, {"surfcontrolcpa", {NULL}, 3909, "udp"}, {"prnrequest", {NULL}, 3910, "tcp"}, {"prnrequest", {NULL}, 3910, "udp"}, {"prnstatus", {NULL}, 3911, "tcp"}, {"prnstatus", {NULL}, 3911, "udp"}, {"gbmt-stars", {NULL}, 3912, "tcp"}, {"gbmt-stars", {NULL}, 3912, "udp"}, {"listcrt-port", {NULL}, 3913, "tcp"}, {"listcrt-port", {NULL}, 3913, "udp"}, {"listcrt-port-2", {NULL}, 3914, "tcp"}, {"listcrt-port-2", {NULL}, 3914, "udp"}, {"agcat", {NULL}, 3915, "tcp"}, {"agcat", {NULL}, 3915, "udp"}, {"wysdmc", {NULL}, 3916, "tcp"}, {"wysdmc", {NULL}, 3916, "udp"}, {"aftmux", {NULL}, 3917, "tcp"}, {"aftmux", {NULL}, 3917, "udp"}, {"pktcablemmcops", {NULL}, 3918, "tcp"}, {"pktcablemmcops", {NULL}, 3918, "udp"}, {"hyperip", {NULL}, 3919, "tcp"}, {"hyperip", {NULL}, 3919, "udp"}, {"exasoftport1", {NULL}, 3920, "tcp"}, {"exasoftport1", {NULL}, 3920, "udp"}, {"herodotus-net", {NULL}, 3921, "tcp"}, {"herodotus-net", {NULL}, 3921, "udp"}, {"sor-update", {NULL}, 3922, "tcp"}, {"sor-update", {NULL}, 3922, "udp"}, {"symb-sb-port", {NULL}, 3923, "tcp"}, {"symb-sb-port", {NULL}, 3923, "udp"}, {"mpl-gprs-port", {NULL}, 3924, "tcp"}, {"mpl-gprs-port", {NULL}, 3924, "udp"}, {"zmp", {NULL}, 3925, "tcp"}, {"zmp", {NULL}, 3925, "udp"}, {"winport", {NULL}, 3926, "tcp"}, {"winport", {NULL}, 3926, "udp"}, {"natdataservice", {NULL}, 3927, "tcp"}, {"natdataservice", {NULL}, 3927, "udp"}, {"netboot-pxe", {NULL}, 3928, "tcp"}, {"netboot-pxe", {NULL}, 3928, "udp"}, {"smauth-port", {NULL}, 3929, "tcp"}, {"smauth-port", {NULL}, 3929, "udp"}, {"syam-webserver", {NULL}, 3930, "tcp"}, {"syam-webserver", {NULL}, 3930, "udp"}, {"msr-plugin-port", {NULL}, 3931, "tcp"}, {"msr-plugin-port", {NULL}, 3931, "udp"}, {"dyn-site", {NULL}, 3932, "tcp"}, {"dyn-site", {NULL}, 3932, "udp"}, {"plbserve-port", {NULL}, 3933, "tcp"}, {"plbserve-port", {NULL}, 3933, "udp"}, {"sunfm-port", {NULL}, 3934, "tcp"}, {"sunfm-port", {NULL}, 3934, "udp"}, {"sdp-portmapper", {NULL}, 3935, "tcp"}, {"sdp-portmapper", {NULL}, 3935, "udp"}, {"mailprox", {NULL}, 3936, "tcp"}, {"mailprox", {NULL}, 3936, "udp"}, {"dvbservdsc", {NULL}, 3937, "tcp"}, {"dvbservdsc", {NULL}, 3937, "udp"}, {"dbcontrol_agent", {NULL}, 3938, "tcp"}, {"dbcontrol_agent", {NULL}, 3938, "udp"}, {"aamp", {NULL}, 3939, "tcp"}, {"aamp", {NULL}, 3939, "udp"}, {"xecp-node", {NULL}, 3940, "tcp"}, {"xecp-node", {NULL}, 3940, "udp"}, {"homeportal-web", {NULL}, 3941, "tcp"}, {"homeportal-web", {NULL}, 3941, "udp"}, {"srdp", {NULL}, 3942, "tcp"}, {"srdp", {NULL}, 3942, "udp"}, {"tig", {NULL}, 3943, "tcp"}, {"tig", {NULL}, 3943, "udp"}, {"sops", {NULL}, 3944, "tcp"}, {"sops", {NULL}, 3944, "udp"}, {"emcads", {NULL}, 3945, "tcp"}, {"emcads", {NULL}, 3945, "udp"}, {"backupedge", {NULL}, 3946, "tcp"}, {"backupedge", {NULL}, 3946, "udp"}, {"ccp", {NULL}, 3947, "tcp"}, {"ccp", {NULL}, 3947, "udp"}, {"apdap", {NULL}, 3948, "tcp"}, {"apdap", {NULL}, 3948, "udp"}, {"drip", {NULL}, 3949, "tcp"}, {"drip", {NULL}, 3949, "udp"}, {"namemunge", {NULL}, 3950, "tcp"}, {"namemunge", {NULL}, 3950, "udp"}, {"pwgippfax", {NULL}, 3951, "tcp"}, {"pwgippfax", {NULL}, 3951, "udp"}, {"i3-sessionmgr", {NULL}, 3952, "tcp"}, {"i3-sessionmgr", {NULL}, 3952, "udp"}, {"xmlink-connect", {NULL}, 3953, "tcp"}, {"xmlink-connect", {NULL}, 3953, "udp"}, {"adrep", {NULL}, 3954, "tcp"}, {"adrep", {NULL}, 3954, "udp"}, {"p2pcommunity", {NULL}, 3955, "tcp"}, {"p2pcommunity", {NULL}, 3955, "udp"}, {"gvcp", {NULL}, 3956, "tcp"}, {"gvcp", {NULL}, 3956, "udp"}, {"mqe-broker", {NULL}, 3957, "tcp"}, {"mqe-broker", {NULL}, 3957, "udp"}, {"mqe-agent", {NULL}, 3958, "tcp"}, {"mqe-agent", {NULL}, 3958, "udp"}, {"treehopper", {NULL}, 3959, "tcp"}, {"treehopper", {NULL}, 3959, "udp"}, {"bess", {NULL}, 3960, "tcp"}, {"bess", {NULL}, 3960, "udp"}, {"proaxess", {NULL}, 3961, "tcp"}, {"proaxess", {NULL}, 3961, "udp"}, {"sbi-agent", {NULL}, 3962, "tcp"}, {"sbi-agent", {NULL}, 3962, "udp"}, {"thrp", {NULL}, 3963, "tcp"}, {"thrp", {NULL}, 3963, "udp"}, {"sasggprs", {NULL}, 3964, "tcp"}, {"sasggprs", {NULL}, 3964, "udp"}, {"ati-ip-to-ncpe", {NULL}, 3965, "tcp"}, {"ati-ip-to-ncpe", {NULL}, 3965, "udp"}, {"bflckmgr", {NULL}, 3966, "tcp"}, {"bflckmgr", {NULL}, 3966, "udp"}, {"ppsms", {NULL}, 3967, "tcp"}, {"ppsms", {NULL}, 3967, "udp"}, {"ianywhere-dbns", {NULL}, 3968, "tcp"}, {"ianywhere-dbns", {NULL}, 3968, "udp"}, {"landmarks", {NULL}, 3969, "tcp"}, {"landmarks", {NULL}, 3969, "udp"}, {"lanrevagent", {NULL}, 3970, "tcp"}, {"lanrevagent", {NULL}, 3970, "udp"}, {"lanrevserver", {NULL}, 3971, "tcp"}, {"lanrevserver", {NULL}, 3971, "udp"}, {"iconp", {NULL}, 3972, "tcp"}, {"iconp", {NULL}, 3972, "udp"}, {"progistics", {NULL}, 3973, "tcp"}, {"progistics", {NULL}, 3973, "udp"}, {"citysearch", {NULL}, 3974, "tcp"}, {"citysearch", {NULL}, 3974, "udp"}, {"airshot", {NULL}, 3975, "tcp"}, {"airshot", {NULL}, 3975, "udp"}, {"opswagent", {NULL}, 3976, "tcp"}, {"opswagent", {NULL}, 3976, "udp"}, {"opswmanager", {NULL}, 3977, "tcp"}, {"opswmanager", {NULL}, 3977, "udp"}, {"secure-cfg-svr", {NULL}, 3978, "tcp"}, {"secure-cfg-svr", {NULL}, 3978, "udp"}, {"smwan", {NULL}, 3979, "tcp"}, {"smwan", {NULL}, 3979, "udp"}, {"acms", {NULL}, 3980, "tcp"}, {"acms", {NULL}, 3980, "udp"}, {"starfish", {NULL}, 3981, "tcp"}, {"starfish", {NULL}, 3981, "udp"}, {"eis", {NULL}, 3982, "tcp"}, {"eis", {NULL}, 3982, "udp"}, {"eisp", {NULL}, 3983, "tcp"}, {"eisp", {NULL}, 3983, "udp"}, {"mapper-nodemgr", {NULL}, 3984, "tcp"}, {"mapper-nodemgr", {NULL}, 3984, "udp"}, {"mapper-mapethd", {NULL}, 3985, "tcp"}, {"mapper-mapethd", {NULL}, 3985, "udp"}, {"mapper-ws_ethd", {NULL}, 3986, "tcp"}, {"mapper-ws_ethd", {NULL}, 3986, "udp"}, {"centerline", {NULL}, 3987, "tcp"}, {"centerline", {NULL}, 3987, "udp"}, {"dcs-config", {NULL}, 3988, "tcp"}, {"dcs-config", {NULL}, 3988, "udp"}, {"bv-queryengine", {NULL}, 3989, "tcp"}, {"bv-queryengine", {NULL}, 3989, "udp"}, {"bv-is", {NULL}, 3990, "tcp"}, {"bv-is", {NULL}, 3990, "udp"}, {"bv-smcsrv", {NULL}, 3991, "tcp"}, {"bv-smcsrv", {NULL}, 3991, "udp"}, {"bv-ds", {NULL}, 3992, "tcp"}, {"bv-ds", {NULL}, 3992, "udp"}, {"bv-agent", {NULL}, 3993, "tcp"}, {"bv-agent", {NULL}, 3993, "udp"}, {"iss-mgmt-ssl", {NULL}, 3995, "tcp"}, {"iss-mgmt-ssl", {NULL}, 3995, "udp"}, {"abcsoftware", {NULL}, 3996, "tcp"}, {"abcsoftware", {NULL}, 3996, "udp"}, {"agentsease-db", {NULL}, 3997, "tcp"}, {"agentsease-db", {NULL}, 3997, "udp"}, {"dnx", {NULL}, 3998, "tcp"}, {"dnx", {NULL}, 3998, "udp"}, {"nvcnet", {NULL}, 3999, "tcp"}, {"nvcnet", {NULL}, 3999, "udp"}, {"terabase", {NULL}, 4000, "tcp"}, {"terabase", {NULL}, 4000, "udp"}, {"newoak", {NULL}, 4001, "tcp"}, {"newoak", {NULL}, 4001, "udp"}, {"pxc-spvr-ft", {NULL}, 4002, "tcp"}, {"pxc-spvr-ft", {NULL}, 4002, "udp"}, {"pxc-splr-ft", {NULL}, 4003, "tcp"}, {"pxc-splr-ft", {NULL}, 4003, "udp"}, {"pxc-roid", {NULL}, 4004, "tcp"}, {"pxc-roid", {NULL}, 4004, "udp"}, {"pxc-pin", {NULL}, 4005, "tcp"}, {"pxc-pin", {NULL}, 4005, "udp"}, {"pxc-spvr", {NULL}, 4006, "tcp"}, {"pxc-spvr", {NULL}, 4006, "udp"}, {"pxc-splr", {NULL}, 4007, "tcp"}, {"pxc-splr", {NULL}, 4007, "udp"}, {"netcheque", {NULL}, 4008, "tcp"}, {"netcheque", {NULL}, 4008, "udp"}, {"chimera-hwm", {NULL}, 4009, "tcp"}, {"chimera-hwm", {NULL}, 4009, "udp"}, {"samsung-unidex", {NULL}, 4010, "tcp"}, {"samsung-unidex", {NULL}, 4010, "udp"}, {"altserviceboot", {NULL}, 4011, "tcp"}, {"altserviceboot", {NULL}, 4011, "udp"}, {"pda-gate", {NULL}, 4012, "tcp"}, {"pda-gate", {NULL}, 4012, "udp"}, {"acl-manager", {NULL}, 4013, "tcp"}, {"acl-manager", {NULL}, 4013, "udp"}, {"taiclock", {NULL}, 4014, "tcp"}, {"taiclock", {NULL}, 4014, "udp"}, {"talarian-mcast1", {NULL}, 4015, "tcp"}, {"talarian-mcast1", {NULL}, 4015, "udp"}, {"talarian-mcast2", {NULL}, 4016, "tcp"}, {"talarian-mcast2", {NULL}, 4016, "udp"}, {"talarian-mcast3", {NULL}, 4017, "tcp"}, {"talarian-mcast3", {NULL}, 4017, "udp"}, {"talarian-mcast4", {NULL}, 4018, "tcp"}, {"talarian-mcast4", {NULL}, 4018, "udp"}, {"talarian-mcast5", {NULL}, 4019, "tcp"}, {"talarian-mcast5", {NULL}, 4019, "udp"}, {"trap", {NULL}, 4020, "tcp"}, {"trap", {NULL}, 4020, "udp"}, {"nexus-portal", {NULL}, 4021, "tcp"}, {"nexus-portal", {NULL}, 4021, "udp"}, {"dnox", {NULL}, 4022, "tcp"}, {"dnox", {NULL}, 4022, "udp"}, {"esnm-zoning", {NULL}, 4023, "tcp"}, {"esnm-zoning", {NULL}, 4023, "udp"}, {"tnp1-port", {NULL}, 4024, "tcp"}, {"tnp1-port", {NULL}, 4024, "udp"}, {"partimage", {NULL}, 4025, "tcp"}, {"partimage", {NULL}, 4025, "udp"}, {"as-debug", {NULL}, 4026, "tcp"}, {"as-debug", {NULL}, 4026, "udp"}, {"bxp", {NULL}, 4027, "tcp"}, {"bxp", {NULL}, 4027, "udp"}, {"dtserver-port", {NULL}, 4028, "tcp"}, {"dtserver-port", {NULL}, 4028, "udp"}, {"ip-qsig", {NULL}, 4029, "tcp"}, {"ip-qsig", {NULL}, 4029, "udp"}, {"jdmn-port", {NULL}, 4030, "tcp"}, {"jdmn-port", {NULL}, 4030, "udp"}, {"suucp", {NULL}, 4031, "tcp"}, {"suucp", {NULL}, 4031, "udp"}, {"vrts-auth-port", {NULL}, 4032, "tcp"}, {"vrts-auth-port", {NULL}, 4032, "udp"}, {"sanavigator", {NULL}, 4033, "tcp"}, {"sanavigator", {NULL}, 4033, "udp"}, {"ubxd", {NULL}, 4034, "tcp"}, {"ubxd", {NULL}, 4034, "udp"}, {"wap-push-http", {NULL}, 4035, "tcp"}, {"wap-push-http", {NULL}, 4035, "udp"}, {"wap-push-https", {NULL}, 4036, "tcp"}, {"wap-push-https", {NULL}, 4036, "udp"}, {"ravehd", {NULL}, 4037, "tcp"}, {"ravehd", {NULL}, 4037, "udp"}, {"fazzt-ptp", {NULL}, 4038, "tcp"}, {"fazzt-ptp", {NULL}, 4038, "udp"}, {"fazzt-admin", {NULL}, 4039, "tcp"}, {"fazzt-admin", {NULL}, 4039, "udp"}, {"yo-main", {NULL}, 4040, "tcp"}, {"yo-main", {NULL}, 4040, "udp"}, {"houston", {NULL}, 4041, "tcp"}, {"houston", {NULL}, 4041, "udp"}, {"ldxp", {NULL}, 4042, "tcp"}, {"ldxp", {NULL}, 4042, "udp"}, {"nirp", {NULL}, 4043, "tcp"}, {"nirp", {NULL}, 4043, "udp"}, {"ltp", {NULL}, 4044, "tcp"}, {"ltp", {NULL}, 4044, "udp"}, {"npp", {NULL}, 4045, "tcp"}, {"npp", {NULL}, 4045, "udp"}, {"acp-proto", {NULL}, 4046, "tcp"}, {"acp-proto", {NULL}, 4046, "udp"}, {"ctp-state", {NULL}, 4047, "tcp"}, {"ctp-state", {NULL}, 4047, "udp"}, {"wafs", {NULL}, 4049, "tcp"}, {"wafs", {NULL}, 4049, "udp"}, {"cisco-wafs", {NULL}, 4050, "tcp"}, {"cisco-wafs", {NULL}, 4050, "udp"}, {"cppdp", {NULL}, 4051, "tcp"}, {"cppdp", {NULL}, 4051, "udp"}, {"interact", {NULL}, 4052, "tcp"}, {"interact", {NULL}, 4052, "udp"}, {"ccu-comm-1", {NULL}, 4053, "tcp"}, {"ccu-comm-1", {NULL}, 4053, "udp"}, {"ccu-comm-2", {NULL}, 4054, "tcp"}, {"ccu-comm-2", {NULL}, 4054, "udp"}, {"ccu-comm-3", {NULL}, 4055, "tcp"}, {"ccu-comm-3", {NULL}, 4055, "udp"}, {"lms", {NULL}, 4056, "tcp"}, {"lms", {NULL}, 4056, "udp"}, {"wfm", {NULL}, 4057, "tcp"}, {"wfm", {NULL}, 4057, "udp"}, {"kingfisher", {NULL}, 4058, "tcp"}, {"kingfisher", {NULL}, 4058, "udp"}, {"dlms-cosem", {NULL}, 4059, "tcp"}, {"dlms-cosem", {NULL}, 4059, "udp"}, {"dsmeter_iatc", {NULL}, 4060, "tcp"}, {"dsmeter_iatc", {NULL}, 4060, "udp"}, {"ice-location", {NULL}, 4061, "tcp"}, {"ice-location", {NULL}, 4061, "udp"}, {"ice-slocation", {NULL}, 4062, "tcp"}, {"ice-slocation", {NULL}, 4062, "udp"}, {"ice-router", {NULL}, 4063, "tcp"}, {"ice-router", {NULL}, 4063, "udp"}, {"ice-srouter", {NULL}, 4064, "tcp"}, {"ice-srouter", {NULL}, 4064, "udp"}, {"avanti_cdp", {NULL}, 4065, "tcp"}, {"avanti_cdp", {NULL}, 4065, "udp"}, {"pmas", {NULL}, 4066, "tcp"}, {"pmas", {NULL}, 4066, "udp"}, {"idp", {NULL}, 4067, "tcp"}, {"idp", {NULL}, 4067, "udp"}, {"ipfltbcst", {NULL}, 4068, "tcp"}, {"ipfltbcst", {NULL}, 4068, "udp"}, {"minger", {NULL}, 4069, "tcp"}, {"minger", {NULL}, 4069, "udp"}, {"tripe", {NULL}, 4070, "tcp"}, {"tripe", {NULL}, 4070, "udp"}, {"aibkup", {NULL}, 4071, "tcp"}, {"aibkup", {NULL}, 4071, "udp"}, {"zieto-sock", {NULL}, 4072, "tcp"}, {"zieto-sock", {NULL}, 4072, "udp"}, {"iRAPP", {NULL}, 4073, "tcp"}, {"iRAPP", {NULL}, 4073, "udp"}, {"cequint-cityid", {NULL}, 4074, "tcp"}, {"cequint-cityid", {NULL}, 4074, "udp"}, {"perimlan", {NULL}, 4075, "tcp"}, {"perimlan", {NULL}, 4075, "udp"}, {"seraph", {NULL}, 4076, "tcp"}, {"seraph", {NULL}, 4076, "udp"}, {"ascomalarm", {NULL}, 4077, "udp"}, {"cssp", {NULL}, 4078, "tcp"}, {"santools", {NULL}, 4079, "tcp"}, {"santools", {NULL}, 4079, "udp"}, {"lorica-in", {NULL}, 4080, "tcp"}, {"lorica-in", {NULL}, 4080, "udp"}, {"lorica-in-sec", {NULL}, 4081, "tcp"}, {"lorica-in-sec", {NULL}, 4081, "udp"}, {"lorica-out", {NULL}, 4082, "tcp"}, {"lorica-out", {NULL}, 4082, "udp"}, {"lorica-out-sec", {NULL}, 4083, "tcp"}, {"lorica-out-sec", {NULL}, 4083, "udp"}, {"fortisphere-vm", {NULL}, 4084, "udp"}, {"ezmessagesrv", {NULL}, 4085, "tcp"}, {"ftsync", {NULL}, 4086, "udp"}, {"applusservice", {NULL}, 4087, "tcp"}, {"npsp", {NULL}, 4088, "tcp"}, {"opencore", {NULL}, 4089, "tcp"}, {"opencore", {NULL}, 4089, "udp"}, {"omasgport", {NULL}, 4090, "tcp"}, {"omasgport", {NULL}, 4090, "udp"}, {"ewinstaller", {NULL}, 4091, "tcp"}, {"ewinstaller", {NULL}, 4091, "udp"}, {"ewdgs", {NULL}, 4092, "tcp"}, {"ewdgs", {NULL}, 4092, "udp"}, {"pvxpluscs", {NULL}, 4093, "tcp"}, {"pvxpluscs", {NULL}, 4093, "udp"}, {"sysrqd", {NULL}, 4094, "tcp"}, {"sysrqd", {NULL}, 4094, "udp"}, {"xtgui", {NULL}, 4095, "tcp"}, {"xtgui", {NULL}, 4095, "udp"}, {"bre", {NULL}, 4096, "tcp"}, {"bre", {NULL}, 4096, "udp"}, {"patrolview", {NULL}, 4097, "tcp"}, {"patrolview", {NULL}, 4097, "udp"}, {"drmsfsd", {NULL}, 4098, "tcp"}, {"drmsfsd", {NULL}, 4098, "udp"}, {"dpcp", {NULL}, 4099, "tcp"}, {"dpcp", {NULL}, 4099, "udp"}, {"igo-incognito", {NULL}, 4100, "tcp"}, {"igo-incognito", {NULL}, 4100, "udp"}, {"brlp-0", {NULL}, 4101, "tcp"}, {"brlp-0", {NULL}, 4101, "udp"}, {"brlp-1", {NULL}, 4102, "tcp"}, {"brlp-1", {NULL}, 4102, "udp"}, {"brlp-2", {NULL}, 4103, "tcp"}, {"brlp-2", {NULL}, 4103, "udp"}, {"brlp-3", {NULL}, 4104, "tcp"}, {"brlp-3", {NULL}, 4104, "udp"}, {"shofarplayer", {NULL}, 4105, "tcp"}, {"shofarplayer", {NULL}, 4105, "udp"}, {"synchronite", {NULL}, 4106, "tcp"}, {"synchronite", {NULL}, 4106, "udp"}, {"j-ac", {NULL}, 4107, "tcp"}, {"j-ac", {NULL}, 4107, "udp"}, {"accel", {NULL}, 4108, "tcp"}, {"accel", {NULL}, 4108, "udp"}, {"izm", {NULL}, 4109, "tcp"}, {"izm", {NULL}, 4109, "udp"}, {"g2tag", {NULL}, 4110, "tcp"}, {"g2tag", {NULL}, 4110, "udp"}, {"xgrid", {NULL}, 4111, "tcp"}, {"xgrid", {NULL}, 4111, "udp"}, {"apple-vpns-rp", {NULL}, 4112, "tcp"}, {"apple-vpns-rp", {NULL}, 4112, "udp"}, {"aipn-reg", {NULL}, 4113, "tcp"}, {"aipn-reg", {NULL}, 4113, "udp"}, {"jomamqmonitor", {NULL}, 4114, "tcp"}, {"jomamqmonitor", {NULL}, 4114, "udp"}, {"cds", {NULL}, 4115, "tcp"}, {"cds", {NULL}, 4115, "udp"}, {"smartcard-tls", {NULL}, 4116, "tcp"}, {"smartcard-tls", {NULL}, 4116, "udp"}, {"hillrserv", {NULL}, 4117, "tcp"}, {"hillrserv", {NULL}, 4117, "udp"}, {"netscript", {NULL}, 4118, "tcp"}, {"netscript", {NULL}, 4118, "udp"}, {"assuria-slm", {NULL}, 4119, "tcp"}, {"assuria-slm", {NULL}, 4119, "udp"}, {"e-builder", {NULL}, 4121, "tcp"}, {"e-builder", {NULL}, 4121, "udp"}, {"fprams", {NULL}, 4122, "tcp"}, {"fprams", {NULL}, 4122, "udp"}, {"z-wave", {NULL}, 4123, "tcp"}, {"z-wave", {NULL}, 4123, "udp"}, {"tigv2", {NULL}, 4124, "tcp"}, {"tigv2", {NULL}, 4124, "udp"}, {"opsview-envoy", {NULL}, 4125, "tcp"}, {"opsview-envoy", {NULL}, 4125, "udp"}, {"ddrepl", {NULL}, 4126, "tcp"}, {"ddrepl", {NULL}, 4126, "udp"}, {"unikeypro", {NULL}, 4127, "tcp"}, {"unikeypro", {NULL}, 4127, "udp"}, {"nufw", {NULL}, 4128, "tcp"}, {"nufw", {NULL}, 4128, "udp"}, {"nuauth", {NULL}, 4129, "tcp"}, {"nuauth", {NULL}, 4129, "udp"}, {"fronet", {NULL}, 4130, "tcp"}, {"fronet", {NULL}, 4130, "udp"}, {"stars", {NULL}, 4131, "tcp"}, {"stars", {NULL}, 4131, "udp"}, {"nuts_dem", {NULL}, 4132, "tcp"}, {"nuts_dem", {NULL}, 4132, "udp"}, {"nuts_bootp", {NULL}, 4133, "tcp"}, {"nuts_bootp", {NULL}, 4133, "udp"}, {"nifty-hmi", {NULL}, 4134, "tcp"}, {"nifty-hmi", {NULL}, 4134, "udp"}, {"cl-db-attach", {NULL}, 4135, "tcp"}, {"cl-db-attach", {NULL}, 4135, "udp"}, {"cl-db-request", {NULL}, 4136, "tcp"}, {"cl-db-request", {NULL}, 4136, "udp"}, {"cl-db-remote", {NULL}, 4137, "tcp"}, {"cl-db-remote", {NULL}, 4137, "udp"}, {"nettest", {NULL}, 4138, "tcp"}, {"nettest", {NULL}, 4138, "udp"}, {"thrtx", {NULL}, 4139, "tcp"}, {"thrtx", {NULL}, 4139, "udp"}, {"cedros_fds", {NULL}, 4140, "tcp"}, {"cedros_fds", {NULL}, 4140, "udp"}, {"oirtgsvc", {NULL}, 4141, "tcp"}, {"oirtgsvc", {NULL}, 4141, "udp"}, {"oidocsvc", {NULL}, 4142, "tcp"}, {"oidocsvc", {NULL}, 4142, "udp"}, {"oidsr", {NULL}, 4143, "tcp"}, {"oidsr", {NULL}, 4143, "udp"}, {"vvr-control", {NULL}, 4145, "tcp"}, {"vvr-control", {NULL}, 4145, "udp"}, {"tgcconnect", {NULL}, 4146, "tcp"}, {"tgcconnect", {NULL}, 4146, "udp"}, {"vrxpservman", {NULL}, 4147, "tcp"}, {"vrxpservman", {NULL}, 4147, "udp"}, {"hhb-handheld", {NULL}, 4148, "tcp"}, {"hhb-handheld", {NULL}, 4148, "udp"}, {"agslb", {NULL}, 4149, "tcp"}, {"agslb", {NULL}, 4149, "udp"}, {"PowerAlert-nsa", {NULL}, 4150, "tcp"}, {"PowerAlert-nsa", {NULL}, 4150, "udp"}, {"menandmice_noh", {NULL}, 4151, "tcp"}, {"menandmice_noh", {NULL}, 4151, "udp"}, {"idig_mux", {NULL}, 4152, "tcp"}, {"idig_mux", {NULL}, 4152, "udp"}, {"mbl-battd", {NULL}, 4153, "tcp"}, {"mbl-battd", {NULL}, 4153, "udp"}, {"atlinks", {NULL}, 4154, "tcp"}, {"atlinks", {NULL}, 4154, "udp"}, {"bzr", {NULL}, 4155, "tcp"}, {"bzr", {NULL}, 4155, "udp"}, {"stat-results", {NULL}, 4156, "tcp"}, {"stat-results", {NULL}, 4156, "udp"}, {"stat-scanner", {NULL}, 4157, "tcp"}, {"stat-scanner", {NULL}, 4157, "udp"}, {"stat-cc", {NULL}, 4158, "tcp"}, {"stat-cc", {NULL}, 4158, "udp"}, {"nss", {NULL}, 4159, "tcp"}, {"nss", {NULL}, 4159, "udp"}, {"jini-discovery", {NULL}, 4160, "tcp"}, {"jini-discovery", {NULL}, 4160, "udp"}, {"omscontact", {NULL}, 4161, "tcp"}, {"omscontact", {NULL}, 4161, "udp"}, {"omstopology", {NULL}, 4162, "tcp"}, {"omstopology", {NULL}, 4162, "udp"}, {"silverpeakpeer", {NULL}, 4163, "tcp"}, {"silverpeakpeer", {NULL}, 4163, "udp"}, {"silverpeakcomm", {NULL}, 4164, "tcp"}, {"silverpeakcomm", {NULL}, 4164, "udp"}, {"altcp", {NULL}, 4165, "tcp"}, {"altcp", {NULL}, 4165, "udp"}, {"joost", {NULL}, 4166, "tcp"}, {"joost", {NULL}, 4166, "udp"}, {"ddgn", {NULL}, 4167, "tcp"}, {"ddgn", {NULL}, 4167, "udp"}, {"pslicser", {NULL}, 4168, "tcp"}, {"pslicser", {NULL}, 4168, "udp"}, {"iadt", {NULL}, 4169, "tcp"}, {"iadt-disc", {NULL}, 4169, "udp"}, {"d-cinema-csp", {NULL}, 4170, "tcp"}, {"ml-svnet", {NULL}, 4171, "tcp"}, {"pcoip", {NULL}, 4172, "tcp"}, {"pcoip", {NULL}, 4172, "udp"}, {"smcluster", {NULL}, 4174, "tcp"}, {"bccp", {NULL}, 4175, "tcp"}, {"tl-ipcproxy", {NULL}, 4176, "tcp"}, {"wello", {NULL}, 4177, "tcp"}, {"wello", {NULL}, 4177, "udp"}, {"storman", {NULL}, 4178, "tcp"}, {"storman", {NULL}, 4178, "udp"}, {"MaxumSP", {NULL}, 4179, "tcp"}, {"MaxumSP", {NULL}, 4179, "udp"}, {"httpx", {NULL}, 4180, "tcp"}, {"httpx", {NULL}, 4180, "udp"}, {"macbak", {NULL}, 4181, "tcp"}, {"macbak", {NULL}, 4181, "udp"}, {"pcptcpservice", {NULL}, 4182, "tcp"}, {"pcptcpservice", {NULL}, 4182, "udp"}, {"gmmp", {NULL}, 4183, "tcp"}, {"gmmp", {NULL}, 4183, "udp"}, {"universe_suite", {NULL}, 4184, "tcp"}, {"universe_suite", {NULL}, 4184, "udp"}, {"wcpp", {NULL}, 4185, "tcp"}, {"wcpp", {NULL}, 4185, "udp"}, {"boxbackupstore", {NULL}, 4186, "tcp"}, {"csc_proxy", {NULL}, 4187, "tcp"}, {"vatata", {NULL}, 4188, "tcp"}, {"vatata", {NULL}, 4188, "udp"}, {"pcep", {NULL}, 4189, "tcp"}, {"sieve", {NULL}, 4190, "tcp"}, {"dsmipv6", {NULL}, 4191, "udp"}, {"azeti", {NULL}, 4192, "tcp"}, {"azeti-bd", {NULL}, 4192, "udp"}, {"pvxplusio", {NULL}, 4193, "tcp"}, {"eims-admin", {NULL}, 4199, "tcp"}, {"eims-admin", {NULL}, 4199, "udp"}, {"corelccam", {NULL}, 4300, "tcp"}, {"corelccam", {NULL}, 4300, "udp"}, {"d-data", {NULL}, 4301, "tcp"}, {"d-data", {NULL}, 4301, "udp"}, {"d-data-control", {NULL}, 4302, "tcp"}, {"d-data-control", {NULL}, 4302, "udp"}, {"srcp", {NULL}, 4303, "tcp"}, {"srcp", {NULL}, 4303, "udp"}, {"owserver", {NULL}, 4304, "tcp"}, {"owserver", {NULL}, 4304, "udp"}, {"batman", {NULL}, 4305, "tcp"}, {"batman", {NULL}, 4305, "udp"}, {"pinghgl", {NULL}, 4306, "tcp"}, {"pinghgl", {NULL}, 4306, "udp"}, {"visicron-vs", {NULL}, 4307, "tcp"}, {"visicron-vs", {NULL}, 4307, "udp"}, {"compx-lockview", {NULL}, 4308, "tcp"}, {"compx-lockview", {NULL}, 4308, "udp"}, {"dserver", {NULL}, 4309, "tcp"}, {"dserver", {NULL}, 4309, "udp"}, {"mirrtex", {NULL}, 4310, "tcp"}, {"mirrtex", {NULL}, 4310, "udp"}, {"p6ssmc", {NULL}, 4311, "tcp"}, {"pscl-mgt", {NULL}, 4312, "tcp"}, {"perrla", {NULL}, 4313, "tcp"}, {"fdt-rcatp", {NULL}, 4320, "tcp"}, {"fdt-rcatp", {NULL}, 4320, "udp"}, {"rwhois", {NULL}, 4321, "tcp"}, {"rwhois", {NULL}, 4321, "udp"}, {"trim-event", {NULL}, 4322, "tcp"}, {"trim-event", {NULL}, 4322, "udp"}, {"trim-ice", {NULL}, 4323, "tcp"}, {"trim-ice", {NULL}, 4323, "udp"}, {"balour", {NULL}, 4324, "tcp"}, {"balour", {NULL}, 4324, "udp"}, {"geognosisman", {NULL}, 4325, "tcp"}, {"geognosisman", {NULL}, 4325, "udp"}, {"geognosis", {NULL}, 4326, "tcp"}, {"geognosis", {NULL}, 4326, "udp"}, {"jaxer-web", {NULL}, 4327, "tcp"}, {"jaxer-web", {NULL}, 4327, "udp"}, {"jaxer-manager", {NULL}, 4328, "tcp"}, {"jaxer-manager", {NULL}, 4328, "udp"}, {"publiqare-sync", {NULL}, 4329, "tcp"}, {"gaia", {NULL}, 4340, "tcp"}, {"gaia", {NULL}, 4340, "udp"}, {"lisp-data", {NULL}, 4341, "tcp"}, {"lisp-data", {NULL}, 4341, "udp"}, {"lisp-cons", {NULL}, 4342, "tcp"}, {"lisp-control", {NULL}, 4342, "udp"}, {"unicall", {NULL}, 4343, "tcp"}, {"unicall", {NULL}, 4343, "udp"}, {"vinainstall", {NULL}, 4344, "tcp"}, {"vinainstall", {NULL}, 4344, "udp"}, {"m4-network-as", {NULL}, 4345, "tcp"}, {"m4-network-as", {NULL}, 4345, "udp"}, {"elanlm", {NULL}, 4346, "tcp"}, {"elanlm", {NULL}, 4346, "udp"}, {"lansurveyor", {NULL}, 4347, "tcp"}, {"lansurveyor", {NULL}, 4347, "udp"}, {"itose", {NULL}, 4348, "tcp"}, {"itose", {NULL}, 4348, "udp"}, {"fsportmap", {NULL}, 4349, "tcp"}, {"fsportmap", {NULL}, 4349, "udp"}, {"net-device", {NULL}, 4350, "tcp"}, {"net-device", {NULL}, 4350, "udp"}, {"plcy-net-svcs", {NULL}, 4351, "tcp"}, {"plcy-net-svcs", {NULL}, 4351, "udp"}, {"pjlink", {NULL}, 4352, "tcp"}, {"pjlink", {NULL}, 4352, "udp"}, {"f5-iquery", {NULL}, 4353, "tcp"}, {"f5-iquery", {NULL}, 4353, "udp"}, {"qsnet-trans", {NULL}, 4354, "tcp"}, {"qsnet-trans", {NULL}, 4354, "udp"}, {"qsnet-workst", {NULL}, 4355, "tcp"}, {"qsnet-workst", {NULL}, 4355, "udp"}, {"qsnet-assist", {NULL}, 4356, "tcp"}, {"qsnet-assist", {NULL}, 4356, "udp"}, {"qsnet-cond", {NULL}, 4357, "tcp"}, {"qsnet-cond", {NULL}, 4357, "udp"}, {"qsnet-nucl", {NULL}, 4358, "tcp"}, {"qsnet-nucl", {NULL}, 4358, "udp"}, {"omabcastltkm", {NULL}, 4359, "tcp"}, {"omabcastltkm", {NULL}, 4359, "udp"}, {"matrix_vnet", {NULL}, 4360, "tcp"}, {"nacnl", {NULL}, 4361, "udp"}, {"afore-vdp-disc", {NULL}, 4362, "udp"}, {"wxbrief", {NULL}, 4368, "tcp"}, {"wxbrief", {NULL}, 4368, "udp"}, {"epmd", {NULL}, 4369, "tcp"}, {"epmd", {NULL}, 4369, "udp"}, {"elpro_tunnel", {NULL}, 4370, "tcp"}, {"elpro_tunnel", {NULL}, 4370, "udp"}, {"l2c-control", {NULL}, 4371, "tcp"}, {"l2c-disc", {NULL}, 4371, "udp"}, {"l2c-data", {NULL}, 4372, "tcp"}, {"l2c-data", {NULL}, 4372, "udp"}, {"remctl", {NULL}, 4373, "tcp"}, {"remctl", {NULL}, 4373, "udp"}, {"psi-ptt", {NULL}, 4374, "tcp"}, {"tolteces", {NULL}, 4375, "tcp"}, {"tolteces", {NULL}, 4375, "udp"}, {"bip", {NULL}, 4376, "tcp"}, {"bip", {NULL}, 4376, "udp"}, {"cp-spxsvr", {NULL}, 4377, "tcp"}, {"cp-spxsvr", {NULL}, 4377, "udp"}, {"cp-spxdpy", {NULL}, 4378, "tcp"}, {"cp-spxdpy", {NULL}, 4378, "udp"}, {"ctdb", {NULL}, 4379, "tcp"}, {"ctdb", {NULL}, 4379, "udp"}, {"xandros-cms", {NULL}, 4389, "tcp"}, {"xandros-cms", {NULL}, 4389, "udp"}, {"wiegand", {NULL}, 4390, "tcp"}, {"wiegand", {NULL}, 4390, "udp"}, {"apwi-imserver", {NULL}, 4391, "tcp"}, {"apwi-rxserver", {NULL}, 4392, "tcp"}, {"apwi-rxspooler", {NULL}, 4393, "tcp"}, {"apwi-disc", {NULL}, 4394, "udp"}, {"omnivisionesx", {NULL}, 4395, "tcp"}, {"omnivisionesx", {NULL}, 4395, "udp"}, {"fly", {NULL}, 4396, "tcp"}, {"ds-srv", {NULL}, 4400, "tcp"}, {"ds-srv", {NULL}, 4400, "udp"}, {"ds-srvr", {NULL}, 4401, "tcp"}, {"ds-srvr", {NULL}, 4401, "udp"}, {"ds-clnt", {NULL}, 4402, "tcp"}, {"ds-clnt", {NULL}, 4402, "udp"}, {"ds-user", {NULL}, 4403, "tcp"}, {"ds-user", {NULL}, 4403, "udp"}, {"ds-admin", {NULL}, 4404, "tcp"}, {"ds-admin", {NULL}, 4404, "udp"}, {"ds-mail", {NULL}, 4405, "tcp"}, {"ds-mail", {NULL}, 4405, "udp"}, {"ds-slp", {NULL}, 4406, "tcp"}, {"ds-slp", {NULL}, 4406, "udp"}, {"nacagent", {NULL}, 4407, "tcp"}, {"slscc", {NULL}, 4408, "tcp"}, {"netcabinet-com", {NULL}, 4409, "tcp"}, {"itwo-server", {NULL}, 4410, "tcp"}, {"netrockey6", {NULL}, 4425, "tcp"}, {"netrockey6", {NULL}, 4425, "udp"}, {"beacon-port-2", {NULL}, 4426, "tcp"}, {"beacon-port-2", {NULL}, 4426, "udp"}, {"drizzle", {NULL}, 4427, "tcp"}, {"omviserver", {NULL}, 4428, "tcp"}, {"omviagent", {NULL}, 4429, "tcp"}, {"rsqlserver", {NULL}, 4430, "tcp"}, {"rsqlserver", {NULL}, 4430, "udp"}, {"wspipe", {NULL}, 4431, "tcp"}, {"netblox", {NULL}, 4441, "udp"}, {"saris", {NULL}, 4442, "tcp"}, {"saris", {NULL}, 4442, "udp"}, {"pharos", {NULL}, 4443, "tcp"}, {"pharos", {NULL}, 4443, "udp"}, {"krb524", {NULL}, 4444, "tcp"}, {"krb524", {NULL}, 4444, "udp"}, {"nv-video", {NULL}, 4444, "tcp"}, {"nv-video", {NULL}, 4444, "udp"}, {"upnotifyp", {NULL}, 4445, "tcp"}, {"upnotifyp", {NULL}, 4445, "udp"}, {"n1-fwp", {NULL}, 4446, "tcp"}, {"n1-fwp", {NULL}, 4446, "udp"}, {"n1-rmgmt", {NULL}, 4447, "tcp"}, {"n1-rmgmt", {NULL}, 4447, "udp"}, {"asc-slmd", {NULL}, 4448, "tcp"}, {"asc-slmd", {NULL}, 4448, "udp"}, {"privatewire", {NULL}, 4449, "tcp"}, {"privatewire", {NULL}, 4449, "udp"}, {"camp", {NULL}, 4450, "tcp"}, {"camp", {NULL}, 4450, "udp"}, {"ctisystemmsg", {NULL}, 4451, "tcp"}, {"ctisystemmsg", {NULL}, 4451, "udp"}, {"ctiprogramload", {NULL}, 4452, "tcp"}, {"ctiprogramload", {NULL}, 4452, "udp"}, {"nssalertmgr", {NULL}, 4453, "tcp"}, {"nssalertmgr", {NULL}, 4453, "udp"}, {"nssagentmgr", {NULL}, 4454, "tcp"}, {"nssagentmgr", {NULL}, 4454, "udp"}, {"prchat-user", {NULL}, 4455, "tcp"}, {"prchat-user", {NULL}, 4455, "udp"}, {"prchat-server", {NULL}, 4456, "tcp"}, {"prchat-server", {NULL}, 4456, "udp"}, {"prRegister", {NULL}, 4457, "tcp"}, {"prRegister", {NULL}, 4457, "udp"}, {"mcp", {NULL}, 4458, "tcp"}, {"mcp", {NULL}, 4458, "udp"}, {"hpssmgmt", {NULL}, 4484, "tcp"}, {"hpssmgmt", {NULL}, 4484, "udp"}, {"assyst-dr", {NULL}, 4485, "tcp"}, {"icms", {NULL}, 4486, "tcp"}, {"icms", {NULL}, 4486, "udp"}, {"prex-tcp", {NULL}, 4487, "tcp"}, {"awacs-ice", {NULL}, 4488, "tcp"}, {"awacs-ice", {NULL}, 4488, "udp"}, {"ipsec-nat-t", {NULL}, 4500, "tcp"}, {"ipsec-nat-t", {NULL}, 4500, "udp"}, {"ehs", {NULL}, 4535, "tcp"}, {"ehs", {NULL}, 4535, "udp"}, {"ehs-ssl", {NULL}, 4536, "tcp"}, {"ehs-ssl", {NULL}, 4536, "udp"}, {"wssauthsvc", {NULL}, 4537, "tcp"}, {"wssauthsvc", {NULL}, 4537, "udp"}, {"swx-gate", {NULL}, 4538, "tcp"}, {"swx-gate", {NULL}, 4538, "udp"}, {"worldscores", {NULL}, 4545, "tcp"}, {"worldscores", {NULL}, 4545, "udp"}, {"sf-lm", {NULL}, 4546, "tcp"}, {"sf-lm", {NULL}, 4546, "udp"}, {"lanner-lm", {NULL}, 4547, "tcp"}, {"lanner-lm", {NULL}, 4547, "udp"}, {"synchromesh", {NULL}, 4548, "tcp"}, {"synchromesh", {NULL}, 4548, "udp"}, {"aegate", {NULL}, 4549, "tcp"}, {"aegate", {NULL}, 4549, "udp"}, {"gds-adppiw-db", {NULL}, 4550, "tcp"}, {"gds-adppiw-db", {NULL}, 4550, "udp"}, {"ieee-mih", {NULL}, 4551, "tcp"}, {"ieee-mih", {NULL}, 4551, "udp"}, {"menandmice-mon", {NULL}, 4552, "tcp"}, {"menandmice-mon", {NULL}, 4552, "udp"}, {"icshostsvc", {NULL}, 4553, "tcp"}, {"msfrs", {NULL}, 4554, "tcp"}, {"msfrs", {NULL}, 4554, "udp"}, {"rsip", {NULL}, 4555, "tcp"}, {"rsip", {NULL}, 4555, "udp"}, {"dtn-bundle-tcp", {NULL}, 4556, "tcp"}, {"dtn-bundle-udp", {NULL}, 4556, "udp"}, {"mtcevrunqss", {NULL}, 4557, "udp"}, {"mtcevrunqman", {NULL}, 4558, "udp"}, {"hylafax", {NULL}, 4559, "tcp"}, {"hylafax", {NULL}, 4559, "udp"}, {"kwtc", {NULL}, 4566, "tcp"}, {"kwtc", {NULL}, 4566, "udp"}, {"tram", {NULL}, 4567, "tcp"}, {"tram", {NULL}, 4567, "udp"}, {"bmc-reporting", {NULL}, 4568, "tcp"}, {"bmc-reporting", {NULL}, 4568, "udp"}, {"iax", {NULL}, 4569, "tcp"}, {"iax", {NULL}, 4569, "udp"}, {"rid", {NULL}, 4590, "tcp"}, {"l3t-at-an", {NULL}, 4591, "tcp"}, {"l3t-at-an", {NULL}, 4591, "udp"}, {"hrpd-ith-at-an", {NULL}, 4592, "udp"}, {"ipt-anri-anri", {NULL}, 4593, "tcp"}, {"ipt-anri-anri", {NULL}, 4593, "udp"}, {"ias-session", {NULL}, 4594, "tcp"}, {"ias-session", {NULL}, 4594, "udp"}, {"ias-paging", {NULL}, 4595, "tcp"}, {"ias-paging", {NULL}, 4595, "udp"}, {"ias-neighbor", {NULL}, 4596, "tcp"}, {"ias-neighbor", {NULL}, 4596, "udp"}, {"a21-an-1xbs", {NULL}, 4597, "tcp"}, {"a21-an-1xbs", {NULL}, 4597, "udp"}, {"a16-an-an", {NULL}, 4598, "tcp"}, {"a16-an-an", {NULL}, 4598, "udp"}, {"a17-an-an", {NULL}, 4599, "tcp"}, {"a17-an-an", {NULL}, 4599, "udp"}, {"piranha1", {NULL}, 4600, "tcp"}, {"piranha1", {NULL}, 4600, "udp"}, {"piranha2", {NULL}, 4601, "tcp"}, {"piranha2", {NULL}, 4601, "udp"}, {"mtsserver", {NULL}, 4602, "tcp"}, {"menandmice-upg", {NULL}, 4603, "tcp"}, {"playsta2-app", {NULL}, 4658, "tcp"}, {"playsta2-app", {NULL}, 4658, "udp"}, {"playsta2-lob", {NULL}, 4659, "tcp"}, {"playsta2-lob", {NULL}, 4659, "udp"}, {"smaclmgr", {NULL}, 4660, "tcp"}, {"smaclmgr", {NULL}, 4660, "udp"}, {"kar2ouche", {NULL}, 4661, "tcp"}, {"kar2ouche", {NULL}, 4661, "udp"}, {"oms", {NULL}, 4662, "tcp"}, {"oms", {NULL}, 4662, "udp"}, {"noteit", {NULL}, 4663, "tcp"}, {"noteit", {NULL}, 4663, "udp"}, {"ems", {NULL}, 4664, "tcp"}, {"ems", {NULL}, 4664, "udp"}, {"contclientms", {NULL}, 4665, "tcp"}, {"contclientms", {NULL}, 4665, "udp"}, {"eportcomm", {NULL}, 4666, "tcp"}, {"eportcomm", {NULL}, 4666, "udp"}, {"mmacomm", {NULL}, 4667, "tcp"}, {"mmacomm", {NULL}, 4667, "udp"}, {"mmaeds", {NULL}, 4668, "tcp"}, {"mmaeds", {NULL}, 4668, "udp"}, {"eportcommdata", {NULL}, 4669, "tcp"}, {"eportcommdata", {NULL}, 4669, "udp"}, {"light", {NULL}, 4670, "tcp"}, {"light", {NULL}, 4670, "udp"}, {"acter", {NULL}, 4671, "tcp"}, {"acter", {NULL}, 4671, "udp"}, {"rfa", {NULL}, 4672, "tcp"}, {"rfa", {NULL}, 4672, "udp"}, {"cxws", {NULL}, 4673, "tcp"}, {"cxws", {NULL}, 4673, "udp"}, {"appiq-mgmt", {NULL}, 4674, "tcp"}, {"appiq-mgmt", {NULL}, 4674, "udp"}, {"dhct-status", {NULL}, 4675, "tcp"}, {"dhct-status", {NULL}, 4675, "udp"}, {"dhct-alerts", {NULL}, 4676, "tcp"}, {"dhct-alerts", {NULL}, 4676, "udp"}, {"bcs", {NULL}, 4677, "tcp"}, {"bcs", {NULL}, 4677, "udp"}, {"traversal", {NULL}, 4678, "tcp"}, {"traversal", {NULL}, 4678, "udp"}, {"mgesupervision", {NULL}, 4679, "tcp"}, {"mgesupervision", {NULL}, 4679, "udp"}, {"mgemanagement", {NULL}, 4680, "tcp"}, {"mgemanagement", {NULL}, 4680, "udp"}, {"parliant", {NULL}, 4681, "tcp"}, {"parliant", {NULL}, 4681, "udp"}, {"finisar", {NULL}, 4682, "tcp"}, {"finisar", {NULL}, 4682, "udp"}, {"spike", {NULL}, 4683, "tcp"}, {"spike", {NULL}, 4683, "udp"}, {"rfid-rp1", {NULL}, 4684, "tcp"}, {"rfid-rp1", {NULL}, 4684, "udp"}, {"autopac", {NULL}, 4685, "tcp"}, {"autopac", {NULL}, 4685, "udp"}, {"msp-os", {NULL}, 4686, "tcp"}, {"msp-os", {NULL}, 4686, "udp"}, {"nst", {NULL}, 4687, "tcp"}, {"nst", {NULL}, 4687, "udp"}, {"mobile-p2p", {NULL}, 4688, "tcp"}, {"mobile-p2p", {NULL}, 4688, "udp"}, {"altovacentral", {NULL}, 4689, "tcp"}, {"altovacentral", {NULL}, 4689, "udp"}, {"prelude", {NULL}, 4690, "tcp"}, {"prelude", {NULL}, 4690, "udp"}, {"mtn", {NULL}, 4691, "tcp"}, {"mtn", {NULL}, 4691, "udp"}, {"conspiracy", {NULL}, 4692, "tcp"}, {"conspiracy", {NULL}, 4692, "udp"}, {"netxms-agent", {NULL}, 4700, "tcp"}, {"netxms-agent", {NULL}, 4700, "udp"}, {"netxms-mgmt", {NULL}, 4701, "tcp"}, {"netxms-mgmt", {NULL}, 4701, "udp"}, {"netxms-sync", {NULL}, 4702, "tcp"}, {"netxms-sync", {NULL}, 4702, "udp"}, {"npqes-test", {NULL}, 4703, "tcp"}, {"assuria-ins", {NULL}, 4704, "tcp"}, {"truckstar", {NULL}, 4725, "tcp"}, {"truckstar", {NULL}, 4725, "udp"}, {"a26-fap-fgw", {NULL}, 4726, "udp"}, {"fcis", {NULL}, 4727, "tcp"}, {"fcis-disc", {NULL}, 4727, "udp"}, {"capmux", {NULL}, 4728, "tcp"}, {"capmux", {NULL}, 4728, "udp"}, {"gsmtap", {NULL}, 4729, "udp"}, {"gearman", {NULL}, 4730, "tcp"}, {"gearman", {NULL}, 4730, "udp"}, {"remcap", {NULL}, 4731, "tcp"}, {"ohmtrigger", {NULL}, 4732, "udp"}, {"resorcs", {NULL}, 4733, "tcp"}, {"ipdr-sp", {NULL}, 4737, "tcp"}, {"ipdr-sp", {NULL}, 4737, "udp"}, {"solera-lpn", {NULL}, 4738, "tcp"}, {"solera-lpn", {NULL}, 4738, "udp"}, {"ipfix", {NULL}, 4739, "tcp"}, {"ipfix", {NULL}, 4739, "udp"}, {"ipfix", {NULL}, 4739, "sctp"}, {"ipfixs", {NULL}, 4740, "tcp"}, {"ipfixs", {NULL}, 4740, "sctp"}, {"ipfixs", {NULL}, 4740, "udp"}, {"lumimgrd", {NULL}, 4741, "tcp"}, {"lumimgrd", {NULL}, 4741, "udp"}, {"sicct", {NULL}, 4742, "tcp"}, {"sicct-sdp", {NULL}, 4742, "udp"}, {"openhpid", {NULL}, 4743, "tcp"}, {"openhpid", {NULL}, 4743, "udp"}, {"ifsp", {NULL}, 4744, "tcp"}, {"ifsp", {NULL}, 4744, "udp"}, {"fmp", {NULL}, 4745, "tcp"}, {"fmp", {NULL}, 4745, "udp"}, {"profilemac", {NULL}, 4749, "tcp"}, {"profilemac", {NULL}, 4749, "udp"}, {"ssad", {NULL}, 4750, "tcp"}, {"ssad", {NULL}, 4750, "udp"}, {"spocp", {NULL}, 4751, "tcp"}, {"spocp", {NULL}, 4751, "udp"}, {"snap", {NULL}, 4752, "tcp"}, {"snap", {NULL}, 4752, "udp"}, {"bfd-multi-ctl", {NULL}, 4784, "tcp"}, {"bfd-multi-ctl", {NULL}, 4784, "udp"}, {"cncp", {NULL}, 4785, "udp"}, {"smart-install", {NULL}, 4786, "tcp"}, {"sia-ctrl-plane", {NULL}, 4787, "tcp"}, {"iims", {NULL}, 4800, "tcp"}, {"iims", {NULL}, 4800, "udp"}, {"iwec", {NULL}, 4801, "tcp"}, {"iwec", {NULL}, 4801, "udp"}, {"ilss", {NULL}, 4802, "tcp"}, {"ilss", {NULL}, 4802, "udp"}, {"notateit", {NULL}, 4803, "tcp"}, {"notateit-disc", {NULL}, 4803, "udp"}, {"aja-ntv4-disc", {NULL}, 4804, "udp"}, {"htcp", {NULL}, 4827, "tcp"}, {"htcp", {NULL}, 4827, "udp"}, {"varadero-0", {NULL}, 4837, "tcp"}, {"varadero-0", {NULL}, 4837, "udp"}, {"varadero-1", {NULL}, 4838, "tcp"}, {"varadero-1", {NULL}, 4838, "udp"}, {"varadero-2", {NULL}, 4839, "tcp"}, {"varadero-2", {NULL}, 4839, "udp"}, {"opcua-tcp", {NULL}, 4840, "tcp"}, {"opcua-udp", {NULL}, 4840, "udp"}, {"quosa", {NULL}, 4841, "tcp"}, {"quosa", {NULL}, 4841, "udp"}, {"gw-asv", {NULL}, 4842, "tcp"}, {"gw-asv", {NULL}, 4842, "udp"}, {"opcua-tls", {NULL}, 4843, "tcp"}, {"opcua-tls", {NULL}, 4843, "udp"}, {"gw-log", {NULL}, 4844, "tcp"}, {"gw-log", {NULL}, 4844, "udp"}, {"wcr-remlib", {NULL}, 4845, "tcp"}, {"wcr-remlib", {NULL}, 4845, "udp"}, {"contamac_icm", {NULL}, 4846, "tcp"}, {"contamac_icm", {NULL}, 4846, "udp"}, {"wfc", {NULL}, 4847, "tcp"}, {"wfc", {NULL}, 4847, "udp"}, {"appserv-http", {NULL}, 4848, "tcp"}, {"appserv-http", {NULL}, 4848, "udp"}, {"appserv-https", {NULL}, 4849, "tcp"}, {"appserv-https", {NULL}, 4849, "udp"}, {"sun-as-nodeagt", {NULL}, 4850, "tcp"}, {"sun-as-nodeagt", {NULL}, 4850, "udp"}, {"derby-repli", {NULL}, 4851, "tcp"}, {"derby-repli", {NULL}, 4851, "udp"}, {"unify-debug", {NULL}, 4867, "tcp"}, {"unify-debug", {NULL}, 4867, "udp"}, {"phrelay", {NULL}, 4868, "tcp"}, {"phrelay", {NULL}, 4868, "udp"}, {"phrelaydbg", {NULL}, 4869, "tcp"}, {"phrelaydbg", {NULL}, 4869, "udp"}, {"cc-tracking", {NULL}, 4870, "tcp"}, {"cc-tracking", {NULL}, 4870, "udp"}, {"wired", {NULL}, 4871, "tcp"}, {"wired", {NULL}, 4871, "udp"}, {"tritium-can", {NULL}, 4876, "tcp"}, {"tritium-can", {NULL}, 4876, "udp"}, {"lmcs", {NULL}, 4877, "tcp"}, {"lmcs", {NULL}, 4877, "udp"}, {"inst-discovery", {NULL}, 4878, "udp"}, {"wsdl-event", {NULL}, 4879, "tcp"}, {"hislip", {NULL}, 4880, "tcp"}, {"socp-t", {NULL}, 4881, "udp"}, {"socp-c", {NULL}, 4882, "udp"}, {"wmlserver", {NULL}, 4883, "tcp"}, {"hivestor", {NULL}, 4884, "tcp"}, {"hivestor", {NULL}, 4884, "udp"}, {"abbs", {NULL}, 4885, "tcp"}, {"abbs", {NULL}, 4885, "udp"}, {"lyskom", {NULL}, 4894, "tcp"}, {"lyskom", {NULL}, 4894, "udp"}, {"radmin-port", {NULL}, 4899, "tcp"}, {"radmin-port", {NULL}, 4899, "udp"}, {"hfcs", {NULL}, 4900, "tcp"}, {"hfcs", {NULL}, 4900, "udp"}, {"flr_agent", {NULL}, 4901, "tcp"}, {"magiccontrol", {NULL}, 4902, "tcp"}, {"lutap", {NULL}, 4912, "tcp"}, {"lutcp", {NULL}, 4913, "tcp"}, {"bones", {NULL}, 4914, "tcp"}, {"bones", {NULL}, 4914, "udp"}, {"frcs", {NULL}, 4915, "tcp"}, {"atsc-mh-ssc", {NULL}, 4937, "udp"}, {"eq-office-4940", {NULL}, 4940, "tcp"}, {"eq-office-4940", {NULL}, 4940, "udp"}, {"eq-office-4941", {NULL}, 4941, "tcp"}, {"eq-office-4941", {NULL}, 4941, "udp"}, {"eq-office-4942", {NULL}, 4942, "tcp"}, {"eq-office-4942", {NULL}, 4942, "udp"}, {"munin", {NULL}, 4949, "tcp"}, {"munin", {NULL}, 4949, "udp"}, {"sybasesrvmon", {NULL}, 4950, "tcp"}, {"sybasesrvmon", {NULL}, 4950, "udp"}, {"pwgwims", {NULL}, 4951, "tcp"}, {"pwgwims", {NULL}, 4951, "udp"}, {"sagxtsds", {NULL}, 4952, "tcp"}, {"sagxtsds", {NULL}, 4952, "udp"}, {"dbsyncarbiter", {NULL}, 4953, "tcp"}, {"ccss-qmm", {NULL}, 4969, "tcp"}, {"ccss-qmm", {NULL}, 4969, "udp"}, {"ccss-qsm", {NULL}, 4970, "tcp"}, {"ccss-qsm", {NULL}, 4970, "udp"}, {"webyast", {NULL}, 4984, "tcp"}, {"gerhcs", {NULL}, 4985, "tcp"}, {"mrip", {NULL}, 4986, "tcp"}, {"mrip", {NULL}, 4986, "udp"}, {"smar-se-port1", {NULL}, 4987, "tcp"}, {"smar-se-port1", {NULL}, 4987, "udp"}, {"smar-se-port2", {NULL}, 4988, "tcp"}, {"smar-se-port2", {NULL}, 4988, "udp"}, {"parallel", {NULL}, 4989, "tcp"}, {"parallel", {NULL}, 4989, "udp"}, {"busycal", {NULL}, 4990, "tcp"}, {"busycal", {NULL}, 4990, "udp"}, {"vrt", {NULL}, 4991, "tcp"}, {"vrt", {NULL}, 4991, "udp"}, {"hfcs-manager", {NULL}, 4999, "tcp"}, {"hfcs-manager", {NULL}, 4999, "udp"}, {"commplex-main", {NULL}, 5000, "tcp"}, {"commplex-main", {NULL}, 5000, "udp"}, {"commplex-link", {NULL}, 5001, "tcp"}, {"commplex-link", {NULL}, 5001, "udp"}, {"rfe", {NULL}, 5002, "tcp"}, {"rfe", {NULL}, 5002, "udp"}, {"fmpro-internal", {NULL}, 5003, "tcp"}, {"fmpro-internal", {NULL}, 5003, "udp"}, {"avt-profile-1", {NULL}, 5004, "tcp"}, {"avt-profile-1", {NULL}, 5004, "udp"}, {"avt-profile-1", {NULL}, 5004, "dccp"}, {"avt-profile-2", {NULL}, 5005, "tcp"}, {"avt-profile-2", {NULL}, 5005, "udp"}, {"avt-profile-2", {NULL}, 5005, "dccp"}, {"wsm-server", {NULL}, 5006, "tcp"}, {"wsm-server", {NULL}, 5006, "udp"}, {"wsm-server-ssl", {NULL}, 5007, "tcp"}, {"wsm-server-ssl", {NULL}, 5007, "udp"}, {"synapsis-edge", {NULL}, 5008, "tcp"}, {"synapsis-edge", {NULL}, 5008, "udp"}, {"winfs", {NULL}, 5009, "tcp"}, {"winfs", {NULL}, 5009, "udp"}, {"telelpathstart", {NULL}, 5010, "tcp"}, {"telelpathstart", {NULL}, 5010, "udp"}, {"telelpathattack", {NULL}, 5011, "tcp"}, {"telelpathattack", {NULL}, 5011, "udp"}, {"nsp", {NULL}, 5012, "tcp"}, {"nsp", {NULL}, 5012, "udp"}, {"fmpro-v6", {NULL}, 5013, "tcp"}, {"fmpro-v6", {NULL}, 5013, "udp"}, {"onpsocket", {NULL}, 5014, "udp"}, {"fmwp", {NULL}, 5015, "tcp"}, {"zenginkyo-1", {NULL}, 5020, "tcp"}, {"zenginkyo-1", {NULL}, 5020, "udp"}, {"zenginkyo-2", {NULL}, 5021, "tcp"}, {"zenginkyo-2", {NULL}, 5021, "udp"}, {"mice", {NULL}, 5022, "tcp"}, {"mice", {NULL}, 5022, "udp"}, {"htuilsrv", {NULL}, 5023, "tcp"}, {"htuilsrv", {NULL}, 5023, "udp"}, {"scpi-telnet", {NULL}, 5024, "tcp"}, {"scpi-telnet", {NULL}, 5024, "udp"}, {"scpi-raw", {NULL}, 5025, "tcp"}, {"scpi-raw", {NULL}, 5025, "udp"}, {"strexec-d", {NULL}, 5026, "tcp"}, {"strexec-d", {NULL}, 5026, "udp"}, {"strexec-s", {NULL}, 5027, "tcp"}, {"strexec-s", {NULL}, 5027, "udp"}, {"qvr", {NULL}, 5028, "tcp"}, {"infobright", {NULL}, 5029, "tcp"}, {"infobright", {NULL}, 5029, "udp"}, {"surfpass", {NULL}, 5030, "tcp"}, {"surfpass", {NULL}, 5030, "udp"}, {"dmp", {NULL}, 5031, "udp"}, {"asnaacceler8db", {NULL}, 5042, "tcp"}, {"asnaacceler8db", {NULL}, 5042, "udp"}, {"swxadmin", {NULL}, 5043, "tcp"}, {"swxadmin", {NULL}, 5043, "udp"}, {"lxi-evntsvc", {NULL}, 5044, "tcp"}, {"lxi-evntsvc", {NULL}, 5044, "udp"}, {"osp", {NULL}, 5045, "tcp"}, {"vpm-udp", {NULL}, 5046, "udp"}, {"iscape", {NULL}, 5047, "udp"}, {"texai", {NULL}, 5048, "tcp"}, {"ivocalize", {NULL}, 5049, "tcp"}, {"ivocalize", {NULL}, 5049, "udp"}, {"mmcc", {NULL}, 5050, "tcp"}, {"mmcc", {NULL}, 5050, "udp"}, {"ita-agent", {NULL}, 5051, "tcp"}, {"ita-agent", {NULL}, 5051, "udp"}, {"ita-manager", {NULL}, 5052, "tcp"}, {"ita-manager", {NULL}, 5052, "udp"}, {"rlm", {NULL}, 5053, "tcp"}, {"rlm-admin", {NULL}, 5054, "tcp"}, {"unot", {NULL}, 5055, "tcp"}, {"unot", {NULL}, 5055, "udp"}, {"intecom-ps1", {NULL}, 5056, "tcp"}, {"intecom-ps1", {NULL}, 5056, "udp"}, {"intecom-ps2", {NULL}, 5057, "tcp"}, {"intecom-ps2", {NULL}, 5057, "udp"}, {"locus-disc", {NULL}, 5058, "udp"}, {"sds", {NULL}, 5059, "tcp"}, {"sds", {NULL}, 5059, "udp"}, {"sip", {NULL}, 5060, "tcp"}, {"sip", {NULL}, 5060, "udp"}, {"sip-tls", {NULL}, 5061, "tcp"}, {"sip-tls", {NULL}, 5061, "udp"}, {"na-localise", {NULL}, 5062, "tcp"}, {"na-localise", {NULL}, 5062, "udp"}, {"csrpc", {NULL}, 5063, "tcp"}, {"ca-1", {NULL}, 5064, "tcp"}, {"ca-1", {NULL}, 5064, "udp"}, {"ca-2", {NULL}, 5065, "tcp"}, {"ca-2", {NULL}, 5065, "udp"}, {"stanag-5066", {NULL}, 5066, "tcp"}, {"stanag-5066", {NULL}, 5066, "udp"}, {"authentx", {NULL}, 5067, "tcp"}, {"authentx", {NULL}, 5067, "udp"}, {"bitforestsrv", {NULL}, 5068, "tcp"}, {"i-net-2000-npr", {NULL}, 5069, "tcp"}, {"i-net-2000-npr", {NULL}, 5069, "udp"}, {"vtsas", {NULL}, 5070, "tcp"}, {"vtsas", {NULL}, 5070, "udp"}, {"powerschool", {NULL}, 5071, "tcp"}, {"powerschool", {NULL}, 5071, "udp"}, {"ayiya", {NULL}, 5072, "tcp"}, {"ayiya", {NULL}, 5072, "udp"}, {"tag-pm", {NULL}, 5073, "tcp"}, {"tag-pm", {NULL}, 5073, "udp"}, {"alesquery", {NULL}, 5074, "tcp"}, {"alesquery", {NULL}, 5074, "udp"}, {"cp-spxrpts", {NULL}, 5079, "udp"}, {"onscreen", {NULL}, 5080, "tcp"}, {"onscreen", {NULL}, 5080, "udp"}, {"sdl-ets", {NULL}, 5081, "tcp"}, {"sdl-ets", {NULL}, 5081, "udp"}, {"qcp", {NULL}, 5082, "tcp"}, {"qcp", {NULL}, 5082, "udp"}, {"qfp", {NULL}, 5083, "tcp"}, {"qfp", {NULL}, 5083, "udp"}, {"llrp", {NULL}, 5084, "tcp"}, {"llrp", {NULL}, 5084, "udp"}, {"encrypted-llrp", {NULL}, 5085, "tcp"}, {"encrypted-llrp", {NULL}, 5085, "udp"}, {"aprigo-cs", {NULL}, 5086, "tcp"}, {"car", {NULL}, 5090, "sctp"}, {"cxtp", {NULL}, 5091, "sctp"}, {"magpie", {NULL}, 5092, "udp"}, {"sentinel-lm", {NULL}, 5093, "tcp"}, {"sentinel-lm", {NULL}, 5093, "udp"}, {"hart-ip", {NULL}, 5094, "tcp"}, {"hart-ip", {NULL}, 5094, "udp"}, {"sentlm-srv2srv", {NULL}, 5099, "tcp"}, {"sentlm-srv2srv", {NULL}, 5099, "udp"}, {"socalia", {NULL}, 5100, "tcp"}, {"socalia", {NULL}, 5100, "udp"}, {"talarian-tcp", {NULL}, 5101, "tcp"}, {"talarian-udp", {NULL}, 5101, "udp"}, {"oms-nonsecure", {NULL}, 5102, "tcp"}, {"oms-nonsecure", {NULL}, 5102, "udp"}, {"actifio-c2c", {NULL}, 5103, "tcp"}, {"tinymessage", {NULL}, 5104, "udp"}, {"hughes-ap", {NULL}, 5105, "udp"}, {"taep-as-svc", {NULL}, 5111, "tcp"}, {"taep-as-svc", {NULL}, 5111, "udp"}, {"pm-cmdsvr", {NULL}, 5112, "tcp"}, {"pm-cmdsvr", {NULL}, 5112, "udp"}, {"ev-services", {NULL}, 5114, "tcp"}, {"autobuild", {NULL}, 5115, "tcp"}, {"emb-proj-cmd", {NULL}, 5116, "udp"}, {"gradecam", {NULL}, 5117, "tcp"}, {"nbt-pc", {NULL}, 5133, "tcp"}, {"nbt-pc", {NULL}, 5133, "udp"}, {"ppactivation", {NULL}, 5134, "tcp"}, {"erp-scale", {NULL}, 5135, "tcp"}, {"minotaur-sa", {NULL}, 5136, "udp"}, {"ctsd", {NULL}, 5137, "tcp"}, {"ctsd", {NULL}, 5137, "udp"}, {"rmonitor_secure", {NULL}, 5145, "tcp"}, {"rmonitor_secure", {NULL}, 5145, "udp"}, {"social-alarm", {NULL}, 5146, "tcp"}, {"atmp", {NULL}, 5150, "tcp"}, {"atmp", {NULL}, 5150, "udp"}, {"esri_sde", {NULL}, 5151, "tcp"}, {"esri_sde", {NULL}, 5151, "udp"}, {"sde-discovery", {NULL}, 5152, "tcp"}, {"sde-discovery", {NULL}, 5152, "udp"}, {"toruxserver", {NULL}, 5153, "tcp"}, {"bzflag", {NULL}, 5154, "tcp"}, {"bzflag", {NULL}, 5154, "udp"}, {"asctrl-agent", {NULL}, 5155, "tcp"}, {"asctrl-agent", {NULL}, 5155, "udp"}, {"rugameonline", {NULL}, 5156, "tcp"}, {"mediat", {NULL}, 5157, "tcp"}, {"snmpssh", {NULL}, 5161, "tcp"}, {"snmpssh-trap", {NULL}, 5162, "tcp"}, {"sbackup", {NULL}, 5163, "tcp"}, {"vpa", {NULL}, 5164, "tcp"}, {"vpa-disc", {NULL}, 5164, "udp"}, {"ife_icorp", {NULL}, 5165, "tcp"}, {"ife_icorp", {NULL}, 5165, "udp"}, {"winpcs", {NULL}, 5166, "tcp"}, {"winpcs", {NULL}, 5166, "udp"}, {"scte104", {NULL}, 5167, "tcp"}, {"scte104", {NULL}, 5167, "udp"}, {"scte30", {NULL}, 5168, "tcp"}, {"scte30", {NULL}, 5168, "udp"}, {"aol", {NULL}, 5190, "tcp"}, {"aol", {NULL}, 5190, "udp"}, {"aol-1", {NULL}, 5191, "tcp"}, {"aol-1", {NULL}, 5191, "udp"}, {"aol-2", {NULL}, 5192, "tcp"}, {"aol-2", {NULL}, 5192, "udp"}, {"aol-3", {NULL}, 5193, "tcp"}, {"aol-3", {NULL}, 5193, "udp"}, {"cpscomm", {NULL}, 5194, "tcp"}, {"targus-getdata", {NULL}, 5200, "tcp"}, {"targus-getdata", {NULL}, 5200, "udp"}, {"targus-getdata1", {NULL}, 5201, "tcp"}, {"targus-getdata1", {NULL}, 5201, "udp"}, {"targus-getdata2", {NULL}, 5202, "tcp"}, {"targus-getdata2", {NULL}, 5202, "udp"}, {"targus-getdata3", {NULL}, 5203, "tcp"}, {"targus-getdata3", {NULL}, 5203, "udp"}, {"3exmp", {NULL}, 5221, "tcp"}, {"xmpp-client", {NULL}, 5222, "tcp"}, {"hpvirtgrp", {NULL}, 5223, "tcp"}, {"hpvirtgrp", {NULL}, 5223, "udp"}, {"hpvirtctrl", {NULL}, 5224, "tcp"}, {"hpvirtctrl", {NULL}, 5224, "udp"}, {"hp-server", {NULL}, 5225, "tcp"}, {"hp-server", {NULL}, 5225, "udp"}, {"hp-status", {NULL}, 5226, "tcp"}, {"hp-status", {NULL}, 5226, "udp"}, {"perfd", {NULL}, 5227, "tcp"}, {"perfd", {NULL}, 5227, "udp"}, {"hpvroom", {NULL}, 5228, "tcp"}, {"csedaemon", {NULL}, 5232, "tcp"}, {"enfs", {NULL}, 5233, "tcp"}, {"eenet", {NULL}, 5234, "tcp"}, {"eenet", {NULL}, 5234, "udp"}, {"galaxy-network", {NULL}, 5235, "tcp"}, {"galaxy-network", {NULL}, 5235, "udp"}, {"padl2sim", {NULL}, 5236, "tcp"}, {"padl2sim", {NULL}, 5236, "udp"}, {"mnet-discovery", {NULL}, 5237, "tcp"}, {"mnet-discovery", {NULL}, 5237, "udp"}, {"downtools", {NULL}, 5245, "tcp"}, {"downtools-disc", {NULL}, 5245, "udp"}, {"capwap-control", {NULL}, 5246, "udp"}, {"capwap-data", {NULL}, 5247, "udp"}, {"caacws", {NULL}, 5248, "tcp"}, {"caacws", {NULL}, 5248, "udp"}, {"caaclang2", {NULL}, 5249, "tcp"}, {"caaclang2", {NULL}, 5249, "udp"}, {"soagateway", {NULL}, 5250, "tcp"}, {"soagateway", {NULL}, 5250, "udp"}, {"caevms", {NULL}, 5251, "tcp"}, {"caevms", {NULL}, 5251, "udp"}, {"movaz-ssc", {NULL}, 5252, "tcp"}, {"movaz-ssc", {NULL}, 5252, "udp"}, {"kpdp", {NULL}, 5253, "tcp"}, {"3com-njack-1", {NULL}, 5264, "tcp"}, {"3com-njack-1", {NULL}, 5264, "udp"}, {"3com-njack-2", {NULL}, 5265, "tcp"}, {"3com-njack-2", {NULL}, 5265, "udp"}, {"xmpp-server", {NULL}, 5269, "tcp"}, {"xmp", {NULL}, 5270, "tcp"}, {"xmp", {NULL}, 5270, "udp"}, {"cuelink", {NULL}, 5271, "tcp"}, {"cuelink-disc", {NULL}, 5271, "udp"}, {"pk", {NULL}, 5272, "tcp"}, {"pk", {NULL}, 5272, "udp"}, {"xmpp-bosh", {NULL}, 5280, "tcp"}, {"undo-lm", {NULL}, 5281, "tcp"}, {"transmit-port", {NULL}, 5282, "tcp"}, {"transmit-port", {NULL}, 5282, "udp"}, {"presence", {NULL}, 5298, "tcp"}, {"presence", {NULL}, 5298, "udp"}, {"nlg-data", {NULL}, 5299, "tcp"}, {"nlg-data", {NULL}, 5299, "udp"}, {"hacl-hb", {NULL}, 5300, "tcp"}, {"hacl-hb", {NULL}, 5300, "udp"}, {"hacl-gs", {NULL}, 5301, "tcp"}, {"hacl-gs", {NULL}, 5301, "udp"}, {"hacl-cfg", {NULL}, 5302, "tcp"}, {"hacl-cfg", {NULL}, 5302, "udp"}, {"hacl-probe", {NULL}, 5303, "tcp"}, {"hacl-probe", {NULL}, 5303, "udp"}, {"hacl-local", {NULL}, 5304, "tcp"}, {"hacl-local", {NULL}, 5304, "udp"}, {"hacl-test", {NULL}, 5305, "tcp"}, {"hacl-test", {NULL}, 5305, "udp"}, {"sun-mc-grp", {NULL}, 5306, "tcp"}, {"sun-mc-grp", {NULL}, 5306, "udp"}, {"sco-aip", {NULL}, 5307, "tcp"}, {"sco-aip", {NULL}, 5307, "udp"}, {"cfengine", {NULL}, 5308, "tcp"}, {"cfengine", {NULL}, 5308, "udp"}, {"jprinter", {NULL}, 5309, "tcp"}, {"jprinter", {NULL}, 5309, "udp"}, {"outlaws", {NULL}, 5310, "tcp"}, {"outlaws", {NULL}, 5310, "udp"}, {"permabit-cs", {NULL}, 5312, "tcp"}, {"permabit-cs", {NULL}, 5312, "udp"}, {"rrdp", {NULL}, 5313, "tcp"}, {"rrdp", {NULL}, 5313, "udp"}, {"opalis-rbt-ipc", {NULL}, 5314, "tcp"}, {"opalis-rbt-ipc", {NULL}, 5314, "udp"}, {"hacl-poll", {NULL}, 5315, "tcp"}, {"hacl-poll", {NULL}, 5315, "udp"}, {"hpdevms", {NULL}, 5316, "tcp"}, {"hpdevms", {NULL}, 5316, "udp"}, {"bsfserver-zn", {NULL}, 5320, "tcp"}, {"bsfsvr-zn-ssl", {NULL}, 5321, "tcp"}, {"kfserver", {NULL}, 5343, "tcp"}, {"kfserver", {NULL}, 5343, "udp"}, {"xkotodrcp", {NULL}, 5344, "tcp"}, {"xkotodrcp", {NULL}, 5344, "udp"}, {"stuns", {NULL}, 5349, "tcp"}, {"stuns", {NULL}, 5349, "udp"}, {"turns", {NULL}, 5349, "tcp"}, {"turns", {NULL}, 5349, "udp"}, {"stun-behaviors", {NULL}, 5349, "tcp"}, {"stun-behaviors", {NULL}, 5349, "udp"}, {"nat-pmp-status", {NULL}, 5350, "tcp"}, {"nat-pmp-status", {NULL}, 5350, "udp"}, {"nat-pmp", {NULL}, 5351, "tcp"}, {"nat-pmp", {NULL}, 5351, "udp"}, {"dns-llq", {NULL}, 5352, "tcp"}, {"dns-llq", {NULL}, 5352, "udp"}, {"mdns", {NULL}, 5353, "tcp"}, {"mdns", {NULL}, 5353, "udp"}, {"mdnsresponder", {NULL}, 5354, "tcp"}, {"mdnsresponder", {NULL}, 5354, "udp"}, {"llmnr", {NULL}, 5355, "tcp"}, {"llmnr", {NULL}, 5355, "udp"}, {"ms-smlbiz", {NULL}, 5356, "tcp"}, {"ms-smlbiz", {NULL}, 5356, "udp"}, {"wsdapi", {NULL}, 5357, "tcp"}, {"wsdapi", {NULL}, 5357, "udp"}, {"wsdapi-s", {NULL}, 5358, "tcp"}, {"wsdapi-s", {NULL}, 5358, "udp"}, {"ms-alerter", {NULL}, 5359, "tcp"}, {"ms-alerter", {NULL}, 5359, "udp"}, {"ms-sideshow", {NULL}, 5360, "tcp"}, {"ms-sideshow", {NULL}, 5360, "udp"}, {"ms-s-sideshow", {NULL}, 5361, "tcp"}, {"ms-s-sideshow", {NULL}, 5361, "udp"}, {"serverwsd2", {NULL}, 5362, "tcp"}, {"serverwsd2", {NULL}, 5362, "udp"}, {"net-projection", {NULL}, 5363, "tcp"}, {"net-projection", {NULL}, 5363, "udp"}, {"stresstester", {NULL}, 5397, "tcp"}, {"stresstester", {NULL}, 5397, "udp"}, {"elektron-admin", {NULL}, 5398, "tcp"}, {"elektron-admin", {NULL}, 5398, "udp"}, {"securitychase", {NULL}, 5399, "tcp"}, {"securitychase", {NULL}, 5399, "udp"}, {"excerpt", {NULL}, 5400, "tcp"}, {"excerpt", {NULL}, 5400, "udp"}, {"excerpts", {NULL}, 5401, "tcp"}, {"excerpts", {NULL}, 5401, "udp"}, {"mftp", {NULL}, 5402, "tcp"}, {"mftp", {NULL}, 5402, "udp"}, {"hpoms-ci-lstn", {NULL}, 5403, "tcp"}, {"hpoms-ci-lstn", {NULL}, 5403, "udp"}, {"hpoms-dps-lstn", {NULL}, 5404, "tcp"}, {"hpoms-dps-lstn", {NULL}, 5404, "udp"}, {"netsupport", {NULL}, 5405, "tcp"}, {"netsupport", {NULL}, 5405, "udp"}, {"systemics-sox", {NULL}, 5406, "tcp"}, {"systemics-sox", {NULL}, 5406, "udp"}, {"foresyte-clear", {NULL}, 5407, "tcp"}, {"foresyte-clear", {NULL}, 5407, "udp"}, {"foresyte-sec", {NULL}, 5408, "tcp"}, {"foresyte-sec", {NULL}, 5408, "udp"}, {"salient-dtasrv", {NULL}, 5409, "tcp"}, {"salient-dtasrv", {NULL}, 5409, "udp"}, {"salient-usrmgr", {NULL}, 5410, "tcp"}, {"salient-usrmgr", {NULL}, 5410, "udp"}, {"actnet", {NULL}, 5411, "tcp"}, {"actnet", {NULL}, 5411, "udp"}, {"continuus", {NULL}, 5412, "tcp"}, {"continuus", {NULL}, 5412, "udp"}, {"wwiotalk", {NULL}, 5413, "tcp"}, {"wwiotalk", {NULL}, 5413, "udp"}, {"statusd", {NULL}, 5414, "tcp"}, {"statusd", {NULL}, 5414, "udp"}, {"ns-server", {NULL}, 5415, "tcp"}, {"ns-server", {NULL}, 5415, "udp"}, {"sns-gateway", {NULL}, 5416, "tcp"}, {"sns-gateway", {NULL}, 5416, "udp"}, {"sns-agent", {NULL}, 5417, "tcp"}, {"sns-agent", {NULL}, 5417, "udp"}, {"mcntp", {NULL}, 5418, "tcp"}, {"mcntp", {NULL}, 5418, "udp"}, {"dj-ice", {NULL}, 5419, "tcp"}, {"dj-ice", {NULL}, 5419, "udp"}, {"cylink-c", {NULL}, 5420, "tcp"}, {"cylink-c", {NULL}, 5420, "udp"}, {"netsupport2", {NULL}, 5421, "tcp"}, {"netsupport2", {NULL}, 5421, "udp"}, {"salient-mux", {NULL}, 5422, "tcp"}, {"salient-mux", {NULL}, 5422, "udp"}, {"virtualuser", {NULL}, 5423, "tcp"}, {"virtualuser", {NULL}, 5423, "udp"}, {"beyond-remote", {NULL}, 5424, "tcp"}, {"beyond-remote", {NULL}, 5424, "udp"}, {"br-channel", {NULL}, 5425, "tcp"}, {"br-channel", {NULL}, 5425, "udp"}, {"devbasic", {NULL}, 5426, "tcp"}, {"devbasic", {NULL}, 5426, "udp"}, {"sco-peer-tta", {NULL}, 5427, "tcp"}, {"sco-peer-tta", {NULL}, 5427, "udp"}, {"telaconsole", {NULL}, 5428, "tcp"}, {"telaconsole", {NULL}, 5428, "udp"}, {"base", {NULL}, 5429, "tcp"}, {"base", {NULL}, 5429, "udp"}, {"radec-corp", {NULL}, 5430, "tcp"}, {"radec-corp", {NULL}, 5430, "udp"}, {"park-agent", {NULL}, 5431, "tcp"}, {"park-agent", {NULL}, 5431, "udp"}, {"postgresql", {NULL}, 5432, "tcp"}, {"postgresql", {NULL}, 5432, "udp"}, {"pyrrho", {NULL}, 5433, "tcp"}, {"pyrrho", {NULL}, 5433, "udp"}, {"sgi-arrayd", {NULL}, 5434, "tcp"}, {"sgi-arrayd", {NULL}, 5434, "udp"}, {"sceanics", {NULL}, 5435, "tcp"}, {"sceanics", {NULL}, 5435, "udp"}, {"pmip6-cntl", {NULL}, 5436, "udp"}, {"pmip6-data", {NULL}, 5437, "udp"}, {"spss", {NULL}, 5443, "tcp"}, {"spss", {NULL}, 5443, "udp"}, {"surebox", {NULL}, 5453, "tcp"}, {"surebox", {NULL}, 5453, "udp"}, {"apc-5454", {NULL}, 5454, "tcp"}, {"apc-5454", {NULL}, 5454, "udp"}, {"apc-5455", {NULL}, 5455, "tcp"}, {"apc-5455", {NULL}, 5455, "udp"}, {"apc-5456", {NULL}, 5456, "tcp"}, {"apc-5456", {NULL}, 5456, "udp"}, {"silkmeter", {NULL}, 5461, "tcp"}, {"silkmeter", {NULL}, 5461, "udp"}, {"ttl-publisher", {NULL}, 5462, "tcp"}, {"ttl-publisher", {NULL}, 5462, "udp"}, {"ttlpriceproxy", {NULL}, 5463, "tcp"}, {"ttlpriceproxy", {NULL}, 5463, "udp"}, {"quailnet", {NULL}, 5464, "tcp"}, {"quailnet", {NULL}, 5464, "udp"}, {"netops-broker", {NULL}, 5465, "tcp"}, {"netops-broker", {NULL}, 5465, "udp"}, {"fcp-addr-srvr1", {NULL}, 5500, "tcp"}, {"fcp-addr-srvr1", {NULL}, 5500, "udp"}, {"fcp-addr-srvr2", {NULL}, 5501, "tcp"}, {"fcp-addr-srvr2", {NULL}, 5501, "udp"}, {"fcp-srvr-inst1", {NULL}, 5502, "tcp"}, {"fcp-srvr-inst1", {NULL}, 5502, "udp"}, {"fcp-srvr-inst2", {NULL}, 5503, "tcp"}, {"fcp-srvr-inst2", {NULL}, 5503, "udp"}, {"fcp-cics-gw1", {NULL}, 5504, "tcp"}, {"fcp-cics-gw1", {NULL}, 5504, "udp"}, {"checkoutdb", {NULL}, 5505, "tcp"}, {"checkoutdb", {NULL}, 5505, "udp"}, {"amc", {NULL}, 5506, "tcp"}, {"amc", {NULL}, 5506, "udp"}, {"sgi-eventmond", {NULL}, 5553, "tcp"}, {"sgi-eventmond", {NULL}, 5553, "udp"}, {"sgi-esphttp", {NULL}, 5554, "tcp"}, {"sgi-esphttp", {NULL}, 5554, "udp"}, {"personal-agent", {NULL}, 5555, "tcp"}, {"personal-agent", {NULL}, 5555, "udp"}, {"freeciv", {NULL}, 5556, "tcp"}, {"freeciv", {NULL}, 5556, "udp"}, {"farenet", {NULL}, 5557, "tcp"}, {"westec-connect", {NULL}, 5566, "tcp"}, {"m-oap", {NULL}, 5567, "tcp"}, {"m-oap", {NULL}, 5567, "udp"}, {"sdt", {NULL}, 5568, "tcp"}, {"sdt", {NULL}, 5568, "udp"}, {"sdmmp", {NULL}, 5573, "tcp"}, {"sdmmp", {NULL}, 5573, "udp"}, {"lsi-bobcat", {NULL}, 5574, "tcp"}, {"ora-oap", {NULL}, 5575, "tcp"}, {"fdtracks", {NULL}, 5579, "tcp"}, {"tmosms0", {NULL}, 5580, "tcp"}, {"tmosms0", {NULL}, 5580, "udp"}, {"tmosms1", {NULL}, 5581, "tcp"}, {"tmosms1", {NULL}, 5581, "udp"}, {"fac-restore", {NULL}, 5582, "tcp"}, {"fac-restore", {NULL}, 5582, "udp"}, {"tmo-icon-sync", {NULL}, 5583, "tcp"}, {"tmo-icon-sync", {NULL}, 5583, "udp"}, {"bis-web", {NULL}, 5584, "tcp"}, {"bis-web", {NULL}, 5584, "udp"}, {"bis-sync", {NULL}, 5585, "tcp"}, {"bis-sync", {NULL}, 5585, "udp"}, {"ininmessaging", {NULL}, 5597, "tcp"}, {"ininmessaging", {NULL}, 5597, "udp"}, {"mctfeed", {NULL}, 5598, "tcp"}, {"mctfeed", {NULL}, 5598, "udp"}, {"esinstall", {NULL}, 5599, "tcp"}, {"esinstall", {NULL}, 5599, "udp"}, {"esmmanager", {NULL}, 5600, "tcp"}, {"esmmanager", {NULL}, 5600, "udp"}, {"esmagent", {NULL}, 5601, "tcp"}, {"esmagent", {NULL}, 5601, "udp"}, {"a1-msc", {NULL}, 5602, "tcp"}, {"a1-msc", {NULL}, 5602, "udp"}, {"a1-bs", {NULL}, 5603, "tcp"}, {"a1-bs", {NULL}, 5603, "udp"}, {"a3-sdunode", {NULL}, 5604, "tcp"}, {"a3-sdunode", {NULL}, 5604, "udp"}, {"a4-sdunode", {NULL}, 5605, "tcp"}, {"a4-sdunode", {NULL}, 5605, "udp"}, {"ninaf", {NULL}, 5627, "tcp"}, {"ninaf", {NULL}, 5627, "udp"}, {"htrust", {NULL}, 5628, "tcp"}, {"htrust", {NULL}, 5628, "udp"}, {"symantec-sfdb", {NULL}, 5629, "tcp"}, {"symantec-sfdb", {NULL}, 5629, "udp"}, {"precise-comm", {NULL}, 5630, "tcp"}, {"precise-comm", {NULL}, 5630, "udp"}, {"pcanywheredata", {NULL}, 5631, "tcp"}, {"pcanywheredata", {NULL}, 5631, "udp"}, {"pcanywherestat", {NULL}, 5632, "tcp"}, {"pcanywherestat", {NULL}, 5632, "udp"}, {"beorl", {NULL}, 5633, "tcp"}, {"beorl", {NULL}, 5633, "udp"}, {"xprtld", {NULL}, 5634, "tcp"}, {"xprtld", {NULL}, 5634, "udp"}, {"sfmsso", {NULL}, 5635, "tcp"}, {"sfm-db-server", {NULL}, 5636, "tcp"}, {"cssc", {NULL}, 5637, "tcp"}, {"amqps", {NULL}, 5671, "tcp"}, {"amqps", {NULL}, 5671, "udp"}, {"amqp", {NULL}, 5672, "tcp"}, {"amqp", {NULL}, 5672, "udp"}, {"amqp", {NULL}, 5672, "sctp"}, {"jms", {NULL}, 5673, "tcp"}, {"jms", {NULL}, 5673, "udp"}, {"hyperscsi-port", {NULL}, 5674, "tcp"}, {"hyperscsi-port", {NULL}, 5674, "udp"}, {"v5ua", {NULL}, 5675, "tcp"}, {"v5ua", {NULL}, 5675, "udp"}, {"v5ua", {NULL}, 5675, "sctp"}, {"raadmin", {NULL}, 5676, "tcp"}, {"raadmin", {NULL}, 5676, "udp"}, {"questdb2-lnchr", {NULL}, 5677, "tcp"}, {"questdb2-lnchr", {NULL}, 5677, "udp"}, {"rrac", {NULL}, 5678, "tcp"}, {"rrac", {NULL}, 5678, "udp"}, {"dccm", {NULL}, 5679, "tcp"}, {"dccm", {NULL}, 5679, "udp"}, {"auriga-router", {NULL}, 5680, "tcp"}, {"auriga-router", {NULL}, 5680, "udp"}, {"ncxcp", {NULL}, 5681, "tcp"}, {"ncxcp", {NULL}, 5681, "udp"}, {"brightcore", {NULL}, 5682, "udp"}, {"ggz", {NULL}, 5688, "tcp"}, {"ggz", {NULL}, 5688, "udp"}, {"qmvideo", {NULL}, 5689, "tcp"}, {"qmvideo", {NULL}, 5689, "udp"}, {"proshareaudio", {NULL}, 5713, "tcp"}, {"proshareaudio", {NULL}, 5713, "udp"}, {"prosharevideo", {NULL}, 5714, "tcp"}, {"prosharevideo", {NULL}, 5714, "udp"}, {"prosharedata", {NULL}, 5715, "tcp"}, {"prosharedata", {NULL}, 5715, "udp"}, {"prosharerequest", {NULL}, 5716, "tcp"}, {"prosharerequest", {NULL}, 5716, "udp"}, {"prosharenotify", {NULL}, 5717, "tcp"}, {"prosharenotify", {NULL}, 5717, "udp"}, {"dpm", {NULL}, 5718, "tcp"}, {"dpm", {NULL}, 5718, "udp"}, {"dpm-agent", {NULL}, 5719, "tcp"}, {"dpm-agent", {NULL}, 5719, "udp"}, {"ms-licensing", {NULL}, 5720, "tcp"}, {"ms-licensing", {NULL}, 5720, "udp"}, {"dtpt", {NULL}, 5721, "tcp"}, {"dtpt", {NULL}, 5721, "udp"}, {"msdfsr", {NULL}, 5722, "tcp"}, {"msdfsr", {NULL}, 5722, "udp"}, {"omhs", {NULL}, 5723, "tcp"}, {"omhs", {NULL}, 5723, "udp"}, {"omsdk", {NULL}, 5724, "tcp"}, {"omsdk", {NULL}, 5724, "udp"}, {"ms-ilm", {NULL}, 5725, "tcp"}, {"ms-ilm-sts", {NULL}, 5726, "tcp"}, {"asgenf", {NULL}, 5727, "tcp"}, {"io-dist-data", {NULL}, 5728, "tcp"}, {"io-dist-group", {NULL}, 5728, "udp"}, {"openmail", {NULL}, 5729, "tcp"}, {"openmail", {NULL}, 5729, "udp"}, {"unieng", {NULL}, 5730, "tcp"}, {"unieng", {NULL}, 5730, "udp"}, {"ida-discover1", {NULL}, 5741, "tcp"}, {"ida-discover1", {NULL}, 5741, "udp"}, {"ida-discover2", {NULL}, 5742, "tcp"}, {"ida-discover2", {NULL}, 5742, "udp"}, {"watchdoc-pod", {NULL}, 5743, "tcp"}, {"watchdoc-pod", {NULL}, 5743, "udp"}, {"watchdoc", {NULL}, 5744, "tcp"}, {"watchdoc", {NULL}, 5744, "udp"}, {"fcopy-server", {NULL}, 5745, "tcp"}, {"fcopy-server", {NULL}, 5745, "udp"}, {"fcopys-server", {NULL}, 5746, "tcp"}, {"fcopys-server", {NULL}, 5746, "udp"}, {"tunatic", {NULL}, 5747, "tcp"}, {"tunatic", {NULL}, 5747, "udp"}, {"tunalyzer", {NULL}, 5748, "tcp"}, {"tunalyzer", {NULL}, 5748, "udp"}, {"rscd", {NULL}, 5750, "tcp"}, {"rscd", {NULL}, 5750, "udp"}, {"openmailg", {NULL}, 5755, "tcp"}, {"openmailg", {NULL}, 5755, "udp"}, {"x500ms", {NULL}, 5757, "tcp"}, {"x500ms", {NULL}, 5757, "udp"}, {"openmailns", {NULL}, 5766, "tcp"}, {"openmailns", {NULL}, 5766, "udp"}, {"s-openmail", {NULL}, 5767, "tcp"}, {"s-openmail", {NULL}, 5767, "udp"}, {"openmailpxy", {NULL}, 5768, "tcp"}, {"openmailpxy", {NULL}, 5768, "udp"}, {"spramsca", {NULL}, 5769, "tcp"}, {"spramsca", {NULL}, 5769, "udp"}, {"spramsd", {NULL}, 5770, "tcp"}, {"spramsd", {NULL}, 5770, "udp"}, {"netagent", {NULL}, 5771, "tcp"}, {"netagent", {NULL}, 5771, "udp"}, {"dali-port", {NULL}, 5777, "tcp"}, {"dali-port", {NULL}, 5777, "udp"}, {"vts-rpc", {NULL}, 5780, "tcp"}, {"3par-evts", {NULL}, 5781, "tcp"}, {"3par-evts", {NULL}, 5781, "udp"}, {"3par-mgmt", {NULL}, 5782, "tcp"}, {"3par-mgmt", {NULL}, 5782, "udp"}, {"3par-mgmt-ssl", {NULL}, 5783, "tcp"}, {"3par-mgmt-ssl", {NULL}, 5783, "udp"}, {"ibar", {NULL}, 5784, "udp"}, {"3par-rcopy", {NULL}, 5785, "tcp"}, {"3par-rcopy", {NULL}, 5785, "udp"}, {"cisco-redu", {NULL}, 5786, "udp"}, {"waascluster", {NULL}, 5787, "udp"}, {"xtreamx", {NULL}, 5793, "tcp"}, {"xtreamx", {NULL}, 5793, "udp"}, {"spdp", {NULL}, 5794, "udp"}, {"icmpd", {NULL}, 5813, "tcp"}, {"icmpd", {NULL}, 5813, "udp"}, {"spt-automation", {NULL}, 5814, "tcp"}, {"spt-automation", {NULL}, 5814, "udp"}, {"wherehoo", {NULL}, 5859, "tcp"}, {"wherehoo", {NULL}, 5859, "udp"}, {"ppsuitemsg", {NULL}, 5863, "tcp"}, {"ppsuitemsg", {NULL}, 5863, "udp"}, {"rfb", {NULL}, 5900, "tcp"}, {"rfb", {NULL}, 5900, "udp"}, {"cm", {NULL}, 5910, "tcp"}, {"cm", {NULL}, 5910, "udp"}, {"cpdlc", {NULL}, 5911, "tcp"}, {"cpdlc", {NULL}, 5911, "udp"}, {"fis", {NULL}, 5912, "tcp"}, {"fis", {NULL}, 5912, "udp"}, {"ads-c", {NULL}, 5913, "tcp"}, {"ads-c", {NULL}, 5913, "udp"}, {"indy", {NULL}, 5963, "tcp"}, {"indy", {NULL}, 5963, "udp"}, {"mppolicy-v5", {NULL}, 5968, "tcp"}, {"mppolicy-v5", {NULL}, 5968, "udp"}, {"mppolicy-mgr", {NULL}, 5969, "tcp"}, {"mppolicy-mgr", {NULL}, 5969, "udp"}, {"couchdb", {NULL}, 5984, "tcp"}, {"couchdb", {NULL}, 5984, "udp"}, {"wsman", {NULL}, 5985, "tcp"}, {"wsman", {NULL}, 5985, "udp"}, {"wsmans", {NULL}, 5986, "tcp"}, {"wsmans", {NULL}, 5986, "udp"}, {"wbem-rmi", {NULL}, 5987, "tcp"}, {"wbem-rmi", {NULL}, 5987, "udp"}, {"wbem-http", {NULL}, 5988, "tcp"}, {"wbem-http", {NULL}, 5988, "udp"}, {"wbem-https", {NULL}, 5989, "tcp"}, {"wbem-https", {NULL}, 5989, "udp"}, {"wbem-exp-https", {NULL}, 5990, "tcp"}, {"wbem-exp-https", {NULL}, 5990, "udp"}, {"nuxsl", {NULL}, 5991, "tcp"}, {"nuxsl", {NULL}, 5991, "udp"}, {"consul-insight", {NULL}, 5992, "tcp"}, {"consul-insight", {NULL}, 5992, "udp"}, {"cvsup", {NULL}, 5999, "tcp"}, {"cvsup", {NULL}, 5999, "udp"}, {"ndl-ahp-svc", {NULL}, 6064, "tcp"}, {"ndl-ahp-svc", {NULL}, 6064, "udp"}, {"winpharaoh", {NULL}, 6065, "tcp"}, {"winpharaoh", {NULL}, 6065, "udp"}, {"ewctsp", {NULL}, 6066, "tcp"}, {"ewctsp", {NULL}, 6066, "udp"}, {"gsmp", {NULL}, 6068, "tcp"}, {"gsmp", {NULL}, 6068, "udp"}, {"trip", {NULL}, 6069, "tcp"}, {"trip", {NULL}, 6069, "udp"}, {"messageasap", {NULL}, 6070, "tcp"}, {"messageasap", {NULL}, 6070, "udp"}, {"ssdtp", {NULL}, 6071, "tcp"}, {"ssdtp", {NULL}, 6071, "udp"}, {"diagnose-proc", {NULL}, 6072, "tcp"}, {"diagnose-proc", {NULL}, 6072, "udp"}, {"directplay8", {NULL}, 6073, "tcp"}, {"directplay8", {NULL}, 6073, "udp"}, {"max", {NULL}, 6074, "tcp"}, {"max", {NULL}, 6074, "udp"}, {"dpm-acm", {NULL}, 6075, "tcp"}, {"miami-bcast", {NULL}, 6083, "udp"}, {"p2p-sip", {NULL}, 6084, "tcp"}, {"konspire2b", {NULL}, 6085, "tcp"}, {"konspire2b", {NULL}, 6085, "udp"}, {"pdtp", {NULL}, 6086, "tcp"}, {"pdtp", {NULL}, 6086, "udp"}, {"ldss", {NULL}, 6087, "tcp"}, {"ldss", {NULL}, 6087, "udp"}, {"raxa-mgmt", {NULL}, 6099, "tcp"}, {"synchronet-db", {NULL}, 6100, "tcp"}, {"synchronet-db", {NULL}, 6100, "udp"}, {"synchronet-rtc", {NULL}, 6101, "tcp"}, {"synchronet-rtc", {NULL}, 6101, "udp"}, {"synchronet-upd", {NULL}, 6102, "tcp"}, {"synchronet-upd", {NULL}, 6102, "udp"}, {"rets", {NULL}, 6103, "tcp"}, {"rets", {NULL}, 6103, "udp"}, {"dbdb", {NULL}, 6104, "tcp"}, {"dbdb", {NULL}, 6104, "udp"}, {"primaserver", {NULL}, 6105, "tcp"}, {"primaserver", {NULL}, 6105, "udp"}, {"mpsserver", {NULL}, 6106, "tcp"}, {"mpsserver", {NULL}, 6106, "udp"}, {"etc-control", {NULL}, 6107, "tcp"}, {"etc-control", {NULL}, 6107, "udp"}, {"sercomm-scadmin", {NULL}, 6108, "tcp"}, {"sercomm-scadmin", {NULL}, 6108, "udp"}, {"globecast-id", {NULL}, 6109, "tcp"}, {"globecast-id", {NULL}, 6109, "udp"}, {"softcm", {NULL}, 6110, "tcp"}, {"softcm", {NULL}, 6110, "udp"}, {"spc", {NULL}, 6111, "tcp"}, {"spc", {NULL}, 6111, "udp"}, {"dtspcd", {NULL}, 6112, "tcp"}, {"dtspcd", {NULL}, 6112, "udp"}, {"dayliteserver", {NULL}, 6113, "tcp"}, {"wrspice", {NULL}, 6114, "tcp"}, {"xic", {NULL}, 6115, "tcp"}, {"xtlserv", {NULL}, 6116, "tcp"}, {"daylitetouch", {NULL}, 6117, "tcp"}, {"spdy", {NULL}, 6121, "tcp"}, {"bex-webadmin", {NULL}, 6122, "tcp"}, {"bex-webadmin", {NULL}, 6122, "udp"}, {"backup-express", {NULL}, 6123, "tcp"}, {"backup-express", {NULL}, 6123, "udp"}, {"pnbs", {NULL}, 6124, "tcp"}, {"pnbs", {NULL}, 6124, "udp"}, {"nbt-wol", {NULL}, 6133, "tcp"}, {"nbt-wol", {NULL}, 6133, "udp"}, {"pulsonixnls", {NULL}, 6140, "tcp"}, {"pulsonixnls", {NULL}, 6140, "udp"}, {"meta-corp", {NULL}, 6141, "tcp"}, {"meta-corp", {NULL}, 6141, "udp"}, {"aspentec-lm", {NULL}, 6142, "tcp"}, {"aspentec-lm", {NULL}, 6142, "udp"}, {"watershed-lm", {NULL}, 6143, "tcp"}, {"watershed-lm", {NULL}, 6143, "udp"}, {"statsci1-lm", {NULL}, 6144, "tcp"}, {"statsci1-lm", {NULL}, 6144, "udp"}, {"statsci2-lm", {NULL}, 6145, "tcp"}, {"statsci2-lm", {NULL}, 6145, "udp"}, {"lonewolf-lm", {NULL}, 6146, "tcp"}, {"lonewolf-lm", {NULL}, 6146, "udp"}, {"montage-lm", {NULL}, 6147, "tcp"}, {"montage-lm", {NULL}, 6147, "udp"}, {"ricardo-lm", {NULL}, 6148, "tcp"}, {"ricardo-lm", {NULL}, 6148, "udp"}, {"tal-pod", {NULL}, 6149, "tcp"}, {"tal-pod", {NULL}, 6149, "udp"}, {"efb-aci", {NULL}, 6159, "tcp"}, {"patrol-ism", {NULL}, 6161, "tcp"}, {"patrol-ism", {NULL}, 6161, "udp"}, {"patrol-coll", {NULL}, 6162, "tcp"}, {"patrol-coll", {NULL}, 6162, "udp"}, {"pscribe", {NULL}, 6163, "tcp"}, {"pscribe", {NULL}, 6163, "udp"}, {"lm-x", {NULL}, 6200, "tcp"}, {"lm-x", {NULL}, 6200, "udp"}, {"radmind", {NULL}, 6222, "tcp"}, {"radmind", {NULL}, 6222, "udp"}, {"jeol-nsdtp-1", {NULL}, 6241, "tcp"}, {"jeol-nsddp-1", {NULL}, 6241, "udp"}, {"jeol-nsdtp-2", {NULL}, 6242, "tcp"}, {"jeol-nsddp-2", {NULL}, 6242, "udp"}, {"jeol-nsdtp-3", {NULL}, 6243, "tcp"}, {"jeol-nsddp-3", {NULL}, 6243, "udp"}, {"jeol-nsdtp-4", {NULL}, 6244, "tcp"}, {"jeol-nsddp-4", {NULL}, 6244, "udp"}, {"tl1-raw-ssl", {NULL}, 6251, "tcp"}, {"tl1-raw-ssl", {NULL}, 6251, "udp"}, {"tl1-ssh", {NULL}, 6252, "tcp"}, {"tl1-ssh", {NULL}, 6252, "udp"}, {"crip", {NULL}, 6253, "tcp"}, {"crip", {NULL}, 6253, "udp"}, {"gld", {NULL}, 6267, "tcp"}, {"grid", {NULL}, 6268, "tcp"}, {"grid", {NULL}, 6268, "udp"}, {"grid-alt", {NULL}, 6269, "tcp"}, {"grid-alt", {NULL}, 6269, "udp"}, {"bmc-grx", {NULL}, 6300, "tcp"}, {"bmc-grx", {NULL}, 6300, "udp"}, {"bmc_ctd_ldap", {NULL}, 6301, "tcp"}, {"bmc_ctd_ldap", {NULL}, 6301, "udp"}, {"ufmp", {NULL}, 6306, "tcp"}, {"ufmp", {NULL}, 6306, "udp"}, {"scup", {NULL}, 6315, "tcp"}, {"scup-disc", {NULL}, 6315, "udp"}, {"abb-escp", {NULL}, 6316, "tcp"}, {"abb-escp", {NULL}, 6316, "udp"}, {"repsvc", {NULL}, 6320, "tcp"}, {"repsvc", {NULL}, 6320, "udp"}, {"emp-server1", {NULL}, 6321, "tcp"}, {"emp-server1", {NULL}, 6321, "udp"}, {"emp-server2", {NULL}, 6322, "tcp"}, {"emp-server2", {NULL}, 6322, "udp"}, {"sflow", {NULL}, 6343, "tcp"}, {"sflow", {NULL}, 6343, "udp"}, {"gnutella-svc", {NULL}, 6346, "tcp"}, {"gnutella-svc", {NULL}, 6346, "udp"}, {"gnutella-rtr", {NULL}, 6347, "tcp"}, {"gnutella-rtr", {NULL}, 6347, "udp"}, {"adap", {NULL}, 6350, "tcp"}, {"adap", {NULL}, 6350, "udp"}, {"pmcs", {NULL}, 6355, "tcp"}, {"pmcs", {NULL}, 6355, "udp"}, {"metaedit-mu", {NULL}, 6360, "tcp"}, {"metaedit-mu", {NULL}, 6360, "udp"}, {"metaedit-se", {NULL}, 6370, "tcp"}, {"metaedit-se", {NULL}, 6370, "udp"}, {"metatude-mds", {NULL}, 6382, "tcp"}, {"metatude-mds", {NULL}, 6382, "udp"}, {"clariion-evr01", {NULL}, 6389, "tcp"}, {"clariion-evr01", {NULL}, 6389, "udp"}, {"metaedit-ws", {NULL}, 6390, "tcp"}, {"metaedit-ws", {NULL}, 6390, "udp"}, {"faxcomservice", {NULL}, 6417, "tcp"}, {"faxcomservice", {NULL}, 6417, "udp"}, {"syserverremote", {NULL}, 6418, "tcp"}, {"svdrp", {NULL}, 6419, "tcp"}, {"nim-vdrshell", {NULL}, 6420, "tcp"}, {"nim-vdrshell", {NULL}, 6420, "udp"}, {"nim-wan", {NULL}, 6421, "tcp"}, {"nim-wan", {NULL}, 6421, "udp"}, {"pgbouncer", {NULL}, 6432, "tcp"}, {"sun-sr-https", {NULL}, 6443, "tcp"}, {"sun-sr-https", {NULL}, 6443, "udp"}, {"sge_qmaster", {NULL}, 6444, "tcp"}, {"sge_qmaster", {NULL}, 6444, "udp"}, {"sge_execd", {NULL}, 6445, "tcp"}, {"sge_execd", {NULL}, 6445, "udp"}, {"mysql-proxy", {NULL}, 6446, "tcp"}, {"mysql-proxy", {NULL}, 6446, "udp"}, {"skip-cert-recv", {NULL}, 6455, "tcp"}, {"skip-cert-send", {NULL}, 6456, "udp"}, {"lvision-lm", {NULL}, 6471, "tcp"}, {"lvision-lm", {NULL}, 6471, "udp"}, {"sun-sr-http", {NULL}, 6480, "tcp"}, {"sun-sr-http", {NULL}, 6480, "udp"}, {"servicetags", {NULL}, 6481, "tcp"}, {"servicetags", {NULL}, 6481, "udp"}, {"ldoms-mgmt", {NULL}, 6482, "tcp"}, {"ldoms-mgmt", {NULL}, 6482, "udp"}, {"SunVTS-RMI", {NULL}, 6483, "tcp"}, {"SunVTS-RMI", {NULL}, 6483, "udp"}, {"sun-sr-jms", {NULL}, 6484, "tcp"}, {"sun-sr-jms", {NULL}, 6484, "udp"}, {"sun-sr-iiop", {NULL}, 6485, "tcp"}, {"sun-sr-iiop", {NULL}, 6485, "udp"}, {"sun-sr-iiops", {NULL}, 6486, "tcp"}, {"sun-sr-iiops", {NULL}, 6486, "udp"}, {"sun-sr-iiop-aut", {NULL}, 6487, "tcp"}, {"sun-sr-iiop-aut", {NULL}, 6487, "udp"}, {"sun-sr-jmx", {NULL}, 6488, "tcp"}, {"sun-sr-jmx", {NULL}, 6488, "udp"}, {"sun-sr-admin", {NULL}, 6489, "tcp"}, {"sun-sr-admin", {NULL}, 6489, "udp"}, {"boks", {NULL}, 6500, "tcp"}, {"boks", {NULL}, 6500, "udp"}, {"boks_servc", {NULL}, 6501, "tcp"}, {"boks_servc", {NULL}, 6501, "udp"}, {"boks_servm", {NULL}, 6502, "tcp"}, {"boks_servm", {NULL}, 6502, "udp"}, {"boks_clntd", {NULL}, 6503, "tcp"}, {"boks_clntd", {NULL}, 6503, "udp"}, {"badm_priv", {NULL}, 6505, "tcp"}, {"badm_priv", {NULL}, 6505, "udp"}, {"badm_pub", {NULL}, 6506, "tcp"}, {"badm_pub", {NULL}, 6506, "udp"}, {"bdir_priv", {NULL}, 6507, "tcp"}, {"bdir_priv", {NULL}, 6507, "udp"}, {"bdir_pub", {NULL}, 6508, "tcp"}, {"bdir_pub", {NULL}, 6508, "udp"}, {"mgcs-mfp-port", {NULL}, 6509, "tcp"}, {"mgcs-mfp-port", {NULL}, 6509, "udp"}, {"mcer-port", {NULL}, 6510, "tcp"}, {"mcer-port", {NULL}, 6510, "udp"}, {"netconf-tls", {NULL}, 6513, "tcp"}, {"syslog-tls", {NULL}, 6514, "tcp"}, {"syslog-tls", {NULL}, 6514, "udp"}, {"syslog-tls", {NULL}, 6514, "dccp"}, {"elipse-rec", {NULL}, 6515, "tcp"}, {"elipse-rec", {NULL}, 6515, "udp"}, {"lds-distrib", {NULL}, 6543, "tcp"}, {"lds-distrib", {NULL}, 6543, "udp"}, {"lds-dump", {NULL}, 6544, "tcp"}, {"lds-dump", {NULL}, 6544, "udp"}, {"apc-6547", {NULL}, 6547, "tcp"}, {"apc-6547", {NULL}, 6547, "udp"}, {"apc-6548", {NULL}, 6548, "tcp"}, {"apc-6548", {NULL}, 6548, "udp"}, {"apc-6549", {NULL}, 6549, "tcp"}, {"apc-6549", {NULL}, 6549, "udp"}, {"fg-sysupdate", {NULL}, 6550, "tcp"}, {"fg-sysupdate", {NULL}, 6550, "udp"}, {"sum", {NULL}, 6551, "tcp"}, {"sum", {NULL}, 6551, "udp"}, {"xdsxdm", {NULL}, 6558, "tcp"}, {"xdsxdm", {NULL}, 6558, "udp"}, {"sane-port", {NULL}, 6566, "tcp"}, {"sane-port", {NULL}, 6566, "udp"}, {"esp", {NULL}, 6567, "tcp"}, {"esp", {NULL}, 6567, "udp"}, {"canit_store", {NULL}, 6568, "tcp"}, {"rp-reputation", {NULL}, 6568, "udp"}, {"affiliate", {NULL}, 6579, "tcp"}, {"affiliate", {NULL}, 6579, "udp"}, {"parsec-master", {NULL}, 6580, "tcp"}, {"parsec-master", {NULL}, 6580, "udp"}, {"parsec-peer", {NULL}, 6581, "tcp"}, {"parsec-peer", {NULL}, 6581, "udp"}, {"parsec-game", {NULL}, 6582, "tcp"}, {"parsec-game", {NULL}, 6582, "udp"}, {"joaJewelSuite", {NULL}, 6583, "tcp"}, {"joaJewelSuite", {NULL}, 6583, "udp"}, {"mshvlm", {NULL}, 6600, "tcp"}, {"mstmg-sstp", {NULL}, 6601, "tcp"}, {"wsscomfrmwk", {NULL}, 6602, "tcp"}, {"odette-ftps", {NULL}, 6619, "tcp"}, {"odette-ftps", {NULL}, 6619, "udp"}, {"kftp-data", {NULL}, 6620, "tcp"}, {"kftp-data", {NULL}, 6620, "udp"}, {"kftp", {NULL}, 6621, "tcp"}, {"kftp", {NULL}, 6621, "udp"}, {"mcftp", {NULL}, 6622, "tcp"}, {"mcftp", {NULL}, 6622, "udp"}, {"ktelnet", {NULL}, 6623, "tcp"}, {"ktelnet", {NULL}, 6623, "udp"}, {"datascaler-db", {NULL}, 6624, "tcp"}, {"datascaler-ctl", {NULL}, 6625, "tcp"}, {"wago-service", {NULL}, 6626, "tcp"}, {"wago-service", {NULL}, 6626, "udp"}, {"nexgen", {NULL}, 6627, "tcp"}, {"nexgen", {NULL}, 6627, "udp"}, {"afesc-mc", {NULL}, 6628, "tcp"}, {"afesc-mc", {NULL}, 6628, "udp"}, {"mxodbc-connect", {NULL}, 6632, "tcp"}, {"pcs-sf-ui-man", {NULL}, 6655, "tcp"}, {"emgmsg", {NULL}, 6656, "tcp"}, {"palcom-disc", {NULL}, 6657, "udp"}, {"vocaltec-gold", {NULL}, 6670, "tcp"}, {"vocaltec-gold", {NULL}, 6670, "udp"}, {"p4p-portal", {NULL}, 6671, "tcp"}, {"p4p-portal", {NULL}, 6671, "udp"}, {"vision_server", {NULL}, 6672, "tcp"}, {"vision_server", {NULL}, 6672, "udp"}, {"vision_elmd", {NULL}, 6673, "tcp"}, {"vision_elmd", {NULL}, 6673, "udp"}, {"vfbp", {NULL}, 6678, "tcp"}, {"vfbp-disc", {NULL}, 6678, "udp"}, {"osaut", {NULL}, 6679, "tcp"}, {"osaut", {NULL}, 6679, "udp"}, {"clever-ctrace", {NULL}, 6687, "tcp"}, {"clever-tcpip", {NULL}, 6688, "tcp"}, {"tsa", {NULL}, 6689, "tcp"}, {"tsa", {NULL}, 6689, "udp"}, {"babel", {NULL}, 6697, "udp"}, {"kti-icad-srvr", {NULL}, 6701, "tcp"}, {"kti-icad-srvr", {NULL}, 6701, "udp"}, {"e-design-net", {NULL}, 6702, "tcp"}, {"e-design-net", {NULL}, 6702, "udp"}, {"e-design-web", {NULL}, 6703, "tcp"}, {"e-design-web", {NULL}, 6703, "udp"}, {"frc-hp", {NULL}, 6704, "sctp"}, {"frc-mp", {NULL}, 6705, "sctp"}, {"frc-lp", {NULL}, 6706, "sctp"}, {"ibprotocol", {NULL}, 6714, "tcp"}, {"ibprotocol", {NULL}, 6714, "udp"}, {"fibotrader-com", {NULL}, 6715, "tcp"}, {"fibotrader-com", {NULL}, 6715, "udp"}, {"bmc-perf-agent", {NULL}, 6767, "tcp"}, {"bmc-perf-agent", {NULL}, 6767, "udp"}, {"bmc-perf-mgrd", {NULL}, 6768, "tcp"}, {"bmc-perf-mgrd", {NULL}, 6768, "udp"}, {"adi-gxp-srvprt", {NULL}, 6769, "tcp"}, {"adi-gxp-srvprt", {NULL}, 6769, "udp"}, {"plysrv-http", {NULL}, 6770, "tcp"}, {"plysrv-http", {NULL}, 6770, "udp"}, {"plysrv-https", {NULL}, 6771, "tcp"}, {"plysrv-https", {NULL}, 6771, "udp"}, {"dgpf-exchg", {NULL}, 6785, "tcp"}, {"dgpf-exchg", {NULL}, 6785, "udp"}, {"smc-jmx", {NULL}, 6786, "tcp"}, {"smc-jmx", {NULL}, 6786, "udp"}, {"smc-admin", {NULL}, 6787, "tcp"}, {"smc-admin", {NULL}, 6787, "udp"}, {"smc-http", {NULL}, 6788, "tcp"}, {"smc-http", {NULL}, 6788, "udp"}, {"smc-https", {NULL}, 6789, "tcp"}, {"smc-https", {NULL}, 6789, "udp"}, {"hnmp", {NULL}, 6790, "tcp"}, {"hnmp", {NULL}, 6790, "udp"}, {"hnm", {NULL}, 6791, "tcp"}, {"hnm", {NULL}, 6791, "udp"}, {"acnet", {NULL}, 6801, "tcp"}, {"acnet", {NULL}, 6801, "udp"}, {"pentbox-sim", {NULL}, 6817, "tcp"}, {"ambit-lm", {NULL}, 6831, "tcp"}, {"ambit-lm", {NULL}, 6831, "udp"}, {"netmo-default", {NULL}, 6841, "tcp"}, {"netmo-default", {NULL}, 6841, "udp"}, {"netmo-http", {NULL}, 6842, "tcp"}, {"netmo-http", {NULL}, 6842, "udp"}, {"iccrushmore", {NULL}, 6850, "tcp"}, {"iccrushmore", {NULL}, 6850, "udp"}, {"acctopus-cc", {NULL}, 6868, "tcp"}, {"acctopus-st", {NULL}, 6868, "udp"}, {"muse", {NULL}, 6888, "tcp"}, {"muse", {NULL}, 6888, "udp"}, {"jetstream", {NULL}, 6901, "tcp"}, {"xsmsvc", {NULL}, 6936, "tcp"}, {"xsmsvc", {NULL}, 6936, "udp"}, {"bioserver", {NULL}, 6946, "tcp"}, {"bioserver", {NULL}, 6946, "udp"}, {"otlp", {NULL}, 6951, "tcp"}, {"otlp", {NULL}, 6951, "udp"}, {"jmact3", {NULL}, 6961, "tcp"}, {"jmact3", {NULL}, 6961, "udp"}, {"jmevt2", {NULL}, 6962, "tcp"}, {"jmevt2", {NULL}, 6962, "udp"}, {"swismgr1", {NULL}, 6963, "tcp"}, {"swismgr1", {NULL}, 6963, "udp"}, {"swismgr2", {NULL}, 6964, "tcp"}, {"swismgr2", {NULL}, 6964, "udp"}, {"swistrap", {NULL}, 6965, "tcp"}, {"swistrap", {NULL}, 6965, "udp"}, {"swispol", {NULL}, 6966, "tcp"}, {"swispol", {NULL}, 6966, "udp"}, {"acmsoda", {NULL}, 6969, "tcp"}, {"acmsoda", {NULL}, 6969, "udp"}, {"MobilitySrv", {NULL}, 6997, "tcp"}, {"MobilitySrv", {NULL}, 6997, "udp"}, {"iatp-highpri", {NULL}, 6998, "tcp"}, {"iatp-highpri", {NULL}, 6998, "udp"}, {"iatp-normalpri", {NULL}, 6999, "tcp"}, {"iatp-normalpri", {NULL}, 6999, "udp"}, {"afs3-fileserver", {NULL}, 7000, "tcp"}, {"afs3-fileserver", {NULL}, 7000, "udp"}, {"afs3-callback", {NULL}, 7001, "tcp"}, {"afs3-callback", {NULL}, 7001, "udp"}, {"afs3-prserver", {NULL}, 7002, "tcp"}, {"afs3-prserver", {NULL}, 7002, "udp"}, {"afs3-vlserver", {NULL}, 7003, "tcp"}, {"afs3-vlserver", {NULL}, 7003, "udp"}, {"afs3-kaserver", {NULL}, 7004, "tcp"}, {"afs3-kaserver", {NULL}, 7004, "udp"}, {"afs3-volser", {NULL}, 7005, "tcp"}, {"afs3-volser", {NULL}, 7005, "udp"}, {"afs3-errors", {NULL}, 7006, "tcp"}, {"afs3-errors", {NULL}, 7006, "udp"}, {"afs3-bos", {NULL}, 7007, "tcp"}, {"afs3-bos", {NULL}, 7007, "udp"}, {"afs3-update", {NULL}, 7008, "tcp"}, {"afs3-update", {NULL}, 7008, "udp"}, {"afs3-rmtsys", {NULL}, 7009, "tcp"}, {"afs3-rmtsys", {NULL}, 7009, "udp"}, {"ups-onlinet", {NULL}, 7010, "tcp"}, {"ups-onlinet", {NULL}, 7010, "udp"}, {"talon-disc", {NULL}, 7011, "tcp"}, {"talon-disc", {NULL}, 7011, "udp"}, {"talon-engine", {NULL}, 7012, "tcp"}, {"talon-engine", {NULL}, 7012, "udp"}, {"microtalon-dis", {NULL}, 7013, "tcp"}, {"microtalon-dis", {NULL}, 7013, "udp"}, {"microtalon-com", {NULL}, 7014, "tcp"}, {"microtalon-com", {NULL}, 7014, "udp"}, {"talon-webserver", {NULL}, 7015, "tcp"}, {"talon-webserver", {NULL}, 7015, "udp"}, {"dpserve", {NULL}, 7020, "tcp"}, {"dpserve", {NULL}, 7020, "udp"}, {"dpserveadmin", {NULL}, 7021, "tcp"}, {"dpserveadmin", {NULL}, 7021, "udp"}, {"ctdp", {NULL}, 7022, "tcp"}, {"ctdp", {NULL}, 7022, "udp"}, {"ct2nmcs", {NULL}, 7023, "tcp"}, {"ct2nmcs", {NULL}, 7023, "udp"}, {"vmsvc", {NULL}, 7024, "tcp"}, {"vmsvc", {NULL}, 7024, "udp"}, {"vmsvc-2", {NULL}, 7025, "tcp"}, {"vmsvc-2", {NULL}, 7025, "udp"}, {"op-probe", {NULL}, 7030, "tcp"}, {"op-probe", {NULL}, 7030, "udp"}, {"arcp", {NULL}, 7070, "tcp"}, {"arcp", {NULL}, 7070, "udp"}, {"iwg1", {NULL}, 7071, "tcp"}, {"iwg1", {NULL}, 7071, "udp"}, {"empowerid", {NULL}, 7080, "tcp"}, {"empowerid", {NULL}, 7080, "udp"}, {"lazy-ptop", {NULL}, 7099, "tcp"}, {"lazy-ptop", {NULL}, 7099, "udp"}, {"font-service", {NULL}, 7100, "tcp"}, {"font-service", {NULL}, 7100, "udp"}, {"elcn", {NULL}, 7101, "tcp"}, {"elcn", {NULL}, 7101, "udp"}, {"aes-x170", {NULL}, 7107, "udp"}, {"virprot-lm", {NULL}, 7121, "tcp"}, {"virprot-lm", {NULL}, 7121, "udp"}, {"scenidm", {NULL}, 7128, "tcp"}, {"scenidm", {NULL}, 7128, "udp"}, {"scenccs", {NULL}, 7129, "tcp"}, {"scenccs", {NULL}, 7129, "udp"}, {"cabsm-comm", {NULL}, 7161, "tcp"}, {"cabsm-comm", {NULL}, 7161, "udp"}, {"caistoragemgr", {NULL}, 7162, "tcp"}, {"caistoragemgr", {NULL}, 7162, "udp"}, {"cacsambroker", {NULL}, 7163, "tcp"}, {"cacsambroker", {NULL}, 7163, "udp"}, {"fsr", {NULL}, 7164, "tcp"}, {"fsr", {NULL}, 7164, "udp"}, {"doc-server", {NULL}, 7165, "tcp"}, {"doc-server", {NULL}, 7165, "udp"}, {"aruba-server", {NULL}, 7166, "tcp"}, {"aruba-server", {NULL}, 7166, "udp"}, {"casrmagent", {NULL}, 7167, "tcp"}, {"cnckadserver", {NULL}, 7168, "tcp"}, {"ccag-pib", {NULL}, 7169, "tcp"}, {"ccag-pib", {NULL}, 7169, "udp"}, {"nsrp", {NULL}, 7170, "tcp"}, {"nsrp", {NULL}, 7170, "udp"}, {"drm-production", {NULL}, 7171, "tcp"}, {"drm-production", {NULL}, 7171, "udp"}, {"zsecure", {NULL}, 7173, "tcp"}, {"clutild", {NULL}, 7174, "tcp"}, {"clutild", {NULL}, 7174, "udp"}, {"fodms", {NULL}, 7200, "tcp"}, {"fodms", {NULL}, 7200, "udp"}, {"dlip", {NULL}, 7201, "tcp"}, {"dlip", {NULL}, 7201, "udp"}, {"ramp", {NULL}, 7227, "tcp"}, {"ramp", {NULL}, 7227, "udp"}, {"citrixupp", {NULL}, 7228, "tcp"}, {"citrixuppg", {NULL}, 7229, "tcp"}, {"pads", {NULL}, 7237, "tcp"}, {"cnap", {NULL}, 7262, "tcp"}, {"cnap", {NULL}, 7262, "udp"}, {"watchme-7272", {NULL}, 7272, "tcp"}, {"watchme-7272", {NULL}, 7272, "udp"}, {"oma-rlp", {NULL}, 7273, "tcp"}, {"oma-rlp", {NULL}, 7273, "udp"}, {"oma-rlp-s", {NULL}, 7274, "tcp"}, {"oma-rlp-s", {NULL}, 7274, "udp"}, {"oma-ulp", {NULL}, 7275, "tcp"}, {"oma-ulp", {NULL}, 7275, "udp"}, {"oma-ilp", {NULL}, 7276, "tcp"}, {"oma-ilp", {NULL}, 7276, "udp"}, {"oma-ilp-s", {NULL}, 7277, "tcp"}, {"oma-ilp-s", {NULL}, 7277, "udp"}, {"oma-dcdocbs", {NULL}, 7278, "tcp"}, {"oma-dcdocbs", {NULL}, 7278, "udp"}, {"ctxlic", {NULL}, 7279, "tcp"}, {"ctxlic", {NULL}, 7279, "udp"}, {"itactionserver1", {NULL}, 7280, "tcp"}, {"itactionserver1", {NULL}, 7280, "udp"}, {"itactionserver2", {NULL}, 7281, "tcp"}, {"itactionserver2", {NULL}, 7281, "udp"}, {"mzca-action", {NULL}, 7282, "tcp"}, {"mzca-alert", {NULL}, 7282, "udp"}, {"lcm-server", {NULL}, 7365, "tcp"}, {"lcm-server", {NULL}, 7365, "udp"}, {"mindfilesys", {NULL}, 7391, "tcp"}, {"mindfilesys", {NULL}, 7391, "udp"}, {"mrssrendezvous", {NULL}, 7392, "tcp"}, {"mrssrendezvous", {NULL}, 7392, "udp"}, {"nfoldman", {NULL}, 7393, "tcp"}, {"nfoldman", {NULL}, 7393, "udp"}, {"fse", {NULL}, 7394, "tcp"}, {"fse", {NULL}, 7394, "udp"}, {"winqedit", {NULL}, 7395, "tcp"}, {"winqedit", {NULL}, 7395, "udp"}, {"hexarc", {NULL}, 7397, "tcp"}, {"hexarc", {NULL}, 7397, "udp"}, {"rtps-discovery", {NULL}, 7400, "tcp"}, {"rtps-discovery", {NULL}, 7400, "udp"}, {"rtps-dd-ut", {NULL}, 7401, "tcp"}, {"rtps-dd-ut", {NULL}, 7401, "udp"}, {"rtps-dd-mt", {NULL}, 7402, "tcp"}, {"rtps-dd-mt", {NULL}, 7402, "udp"}, {"ionixnetmon", {NULL}, 7410, "tcp"}, {"ionixnetmon", {NULL}, 7410, "udp"}, {"mtportmon", {NULL}, 7421, "tcp"}, {"mtportmon", {NULL}, 7421, "udp"}, {"pmdmgr", {NULL}, 7426, "tcp"}, {"pmdmgr", {NULL}, 7426, "udp"}, {"oveadmgr", {NULL}, 7427, "tcp"}, {"oveadmgr", {NULL}, 7427, "udp"}, {"ovladmgr", {NULL}, 7428, "tcp"}, {"ovladmgr", {NULL}, 7428, "udp"}, {"opi-sock", {NULL}, 7429, "tcp"}, {"opi-sock", {NULL}, 7429, "udp"}, {"xmpv7", {NULL}, 7430, "tcp"}, {"xmpv7", {NULL}, 7430, "udp"}, {"pmd", {NULL}, 7431, "tcp"}, {"pmd", {NULL}, 7431, "udp"}, {"faximum", {NULL}, 7437, "tcp"}, {"faximum", {NULL}, 7437, "udp"}, {"oracleas-https", {NULL}, 7443, "tcp"}, {"oracleas-https", {NULL}, 7443, "udp"}, {"rise", {NULL}, 7473, "tcp"}, {"rise", {NULL}, 7473, "udp"}, {"telops-lmd", {NULL}, 7491, "tcp"}, {"telops-lmd", {NULL}, 7491, "udp"}, {"silhouette", {NULL}, 7500, "tcp"}, {"silhouette", {NULL}, 7500, "udp"}, {"ovbus", {NULL}, 7501, "tcp"}, {"ovbus", {NULL}, 7501, "udp"}, {"acplt", {NULL}, 7509, "tcp"}, {"ovhpas", {NULL}, 7510, "tcp"}, {"ovhpas", {NULL}, 7510, "udp"}, {"pafec-lm", {NULL}, 7511, "tcp"}, {"pafec-lm", {NULL}, 7511, "udp"}, {"saratoga", {NULL}, 7542, "tcp"}, {"saratoga", {NULL}, 7542, "udp"}, {"atul", {NULL}, 7543, "tcp"}, {"atul", {NULL}, 7543, "udp"}, {"nta-ds", {NULL}, 7544, "tcp"}, {"nta-ds", {NULL}, 7544, "udp"}, {"nta-us", {NULL}, 7545, "tcp"}, {"nta-us", {NULL}, 7545, "udp"}, {"cfs", {NULL}, 7546, "tcp"}, {"cfs", {NULL}, 7546, "udp"}, {"cwmp", {NULL}, 7547, "tcp"}, {"cwmp", {NULL}, 7547, "udp"}, {"tidp", {NULL}, 7548, "tcp"}, {"tidp", {NULL}, 7548, "udp"}, {"nls-tl", {NULL}, 7549, "tcp"}, {"nls-tl", {NULL}, 7549, "udp"}, {"sncp", {NULL}, 7560, "tcp"}, {"sncp", {NULL}, 7560, "udp"}, {"cfw", {NULL}, 7563, "tcp"}, {"vsi-omega", {NULL}, 7566, "tcp"}, {"vsi-omega", {NULL}, 7566, "udp"}, {"dell-eql-asm", {NULL}, 7569, "tcp"}, {"aries-kfinder", {NULL}, 7570, "tcp"}, {"aries-kfinder", {NULL}, 7570, "udp"}, {"sun-lm", {NULL}, 7588, "tcp"}, {"sun-lm", {NULL}, 7588, "udp"}, {"indi", {NULL}, 7624, "tcp"}, {"indi", {NULL}, 7624, "udp"}, {"simco", {NULL}, 7626, "tcp"}, {"simco", {NULL}, 7626, "sctp"}, {"soap-http", {NULL}, 7627, "tcp"}, {"soap-http", {NULL}, 7627, "udp"}, {"zen-pawn", {NULL}, 7628, "tcp"}, {"zen-pawn", {NULL}, 7628, "udp"}, {"xdas", {NULL}, 7629, "tcp"}, {"xdas", {NULL}, 7629, "udp"}, {"hawk", {NULL}, 7630, "tcp"}, {"tesla-sys-msg", {NULL}, 7631, "tcp"}, {"pmdfmgt", {NULL}, 7633, "tcp"}, {"pmdfmgt", {NULL}, 7633, "udp"}, {"cuseeme", {NULL}, 7648, "tcp"}, {"cuseeme", {NULL}, 7648, "udp"}, {"imqstomp", {NULL}, 7672, "tcp"}, {"imqstomps", {NULL}, 7673, "tcp"}, {"imqtunnels", {NULL}, 7674, "tcp"}, {"imqtunnels", {NULL}, 7674, "udp"}, {"imqtunnel", {NULL}, 7675, "tcp"}, {"imqtunnel", {NULL}, 7675, "udp"}, {"imqbrokerd", {NULL}, 7676, "tcp"}, {"imqbrokerd", {NULL}, 7676, "udp"}, {"sun-user-https", {NULL}, 7677, "tcp"}, {"sun-user-https", {NULL}, 7677, "udp"}, {"pando-pub", {NULL}, 7680, "tcp"}, {"pando-pub", {NULL}, 7680, "udp"}, {"collaber", {NULL}, 7689, "tcp"}, {"collaber", {NULL}, 7689, "udp"}, {"klio", {NULL}, 7697, "tcp"}, {"klio", {NULL}, 7697, "udp"}, {"em7-secom", {NULL}, 7700, "tcp"}, {"sync-em7", {NULL}, 7707, "tcp"}, {"sync-em7", {NULL}, 7707, "udp"}, {"scinet", {NULL}, 7708, "tcp"}, {"scinet", {NULL}, 7708, "udp"}, {"medimageportal", {NULL}, 7720, "tcp"}, {"medimageportal", {NULL}, 7720, "udp"}, {"nsdeepfreezectl", {NULL}, 7724, "tcp"}, {"nsdeepfreezectl", {NULL}, 7724, "udp"}, {"nitrogen", {NULL}, 7725, "tcp"}, {"nitrogen", {NULL}, 7725, "udp"}, {"freezexservice", {NULL}, 7726, "tcp"}, {"freezexservice", {NULL}, 7726, "udp"}, {"trident-data", {NULL}, 7727, "tcp"}, {"trident-data", {NULL}, 7727, "udp"}, {"smip", {NULL}, 7734, "tcp"}, {"smip", {NULL}, 7734, "udp"}, {"aiagent", {NULL}, 7738, "tcp"}, {"aiagent", {NULL}, 7738, "udp"}, {"scriptview", {NULL}, 7741, "tcp"}, {"scriptview", {NULL}, 7741, "udp"}, {"msss", {NULL}, 7742, "tcp"}, {"sstp-1", {NULL}, 7743, "tcp"}, {"sstp-1", {NULL}, 7743, "udp"}, {"raqmon-pdu", {NULL}, 7744, "tcp"}, {"raqmon-pdu", {NULL}, 7744, "udp"}, {"prgp", {NULL}, 7747, "tcp"}, {"prgp", {NULL}, 7747, "udp"}, {"cbt", {NULL}, 7777, "tcp"}, {"cbt", {NULL}, 7777, "udp"}, {"interwise", {NULL}, 7778, "tcp"}, {"interwise", {NULL}, 7778, "udp"}, {"vstat", {NULL}, 7779, "tcp"}, {"vstat", {NULL}, 7779, "udp"}, {"accu-lmgr", {NULL}, 7781, "tcp"}, {"accu-lmgr", {NULL}, 7781, "udp"}, {"minivend", {NULL}, 7786, "tcp"}, {"minivend", {NULL}, 7786, "udp"}, {"popup-reminders", {NULL}, 7787, "tcp"}, {"popup-reminders", {NULL}, 7787, "udp"}, {"office-tools", {NULL}, 7789, "tcp"}, {"office-tools", {NULL}, 7789, "udp"}, {"q3ade", {NULL}, 7794, "tcp"}, {"q3ade", {NULL}, 7794, "udp"}, {"pnet-conn", {NULL}, 7797, "tcp"}, {"pnet-conn", {NULL}, 7797, "udp"}, {"pnet-enc", {NULL}, 7798, "tcp"}, {"pnet-enc", {NULL}, 7798, "udp"}, {"altbsdp", {NULL}, 7799, "tcp"}, {"altbsdp", {NULL}, 7799, "udp"}, {"asr", {NULL}, 7800, "tcp"}, {"asr", {NULL}, 7800, "udp"}, {"ssp-client", {NULL}, 7801, "tcp"}, {"ssp-client", {NULL}, 7801, "udp"}, {"rbt-wanopt", {NULL}, 7810, "tcp"}, {"rbt-wanopt", {NULL}, 7810, "udp"}, {"apc-7845", {NULL}, 7845, "tcp"}, {"apc-7845", {NULL}, 7845, "udp"}, {"apc-7846", {NULL}, 7846, "tcp"}, {"apc-7846", {NULL}, 7846, "udp"}, {"mobileanalyzer", {NULL}, 7869, "tcp"}, {"rbt-smc", {NULL}, 7870, "tcp"}, {"pss", {NULL}, 7880, "tcp"}, {"pss", {NULL}, 7880, "udp"}, {"ubroker", {NULL}, 7887, "tcp"}, {"ubroker", {NULL}, 7887, "udp"}, {"mevent", {NULL}, 7900, "tcp"}, {"mevent", {NULL}, 7900, "udp"}, {"tnos-sp", {NULL}, 7901, "tcp"}, {"tnos-sp", {NULL}, 7901, "udp"}, {"tnos-dp", {NULL}, 7902, "tcp"}, {"tnos-dp", {NULL}, 7902, "udp"}, {"tnos-dps", {NULL}, 7903, "tcp"}, {"tnos-dps", {NULL}, 7903, "udp"}, {"qo-secure", {NULL}, 7913, "tcp"}, {"qo-secure", {NULL}, 7913, "udp"}, {"t2-drm", {NULL}, 7932, "tcp"}, {"t2-drm", {NULL}, 7932, "udp"}, {"t2-brm", {NULL}, 7933, "tcp"}, {"t2-brm", {NULL}, 7933, "udp"}, {"supercell", {NULL}, 7967, "tcp"}, {"supercell", {NULL}, 7967, "udp"}, {"micromuse-ncps", {NULL}, 7979, "tcp"}, {"micromuse-ncps", {NULL}, 7979, "udp"}, {"quest-vista", {NULL}, 7980, "tcp"}, {"quest-vista", {NULL}, 7980, "udp"}, {"sossd-collect", {NULL}, 7981, "tcp"}, {"sossd-agent", {NULL}, 7982, "tcp"}, {"sossd-disc", {NULL}, 7982, "udp"}, {"pushns", {NULL}, 7997, "tcp"}, {"usicontentpush", {NULL}, 7998, "udp"}, {"irdmi2", {NULL}, 7999, "tcp"}, {"irdmi2", {NULL}, 7999, "udp"}, {"irdmi", {NULL}, 8000, "tcp"}, {"irdmi", {NULL}, 8000, "udp"}, {"vcom-tunnel", {NULL}, 8001, "tcp"}, {"vcom-tunnel", {NULL}, 8001, "udp"}, {"teradataordbms", {NULL}, 8002, "tcp"}, {"teradataordbms", {NULL}, 8002, "udp"}, {"mcreport", {NULL}, 8003, "tcp"}, {"mcreport", {NULL}, 8003, "udp"}, {"mxi", {NULL}, 8005, "tcp"}, {"mxi", {NULL}, 8005, "udp"}, {"http-alt", {NULL}, 8008, "tcp"}, {"http-alt", {NULL}, 8008, "udp"}, {"qbdb", {NULL}, 8019, "tcp"}, {"qbdb", {NULL}, 8019, "udp"}, {"intu-ec-svcdisc", {NULL}, 8020, "tcp"}, {"intu-ec-svcdisc", {NULL}, 8020, "udp"}, {"intu-ec-client", {NULL}, 8021, "tcp"}, {"intu-ec-client", {NULL}, 8021, "udp"}, {"oa-system", {NULL}, 8022, "tcp"}, {"oa-system", {NULL}, 8022, "udp"}, {"ca-audit-da", {NULL}, 8025, "tcp"}, {"ca-audit-da", {NULL}, 8025, "udp"}, {"ca-audit-ds", {NULL}, 8026, "tcp"}, {"ca-audit-ds", {NULL}, 8026, "udp"}, {"pro-ed", {NULL}, 8032, "tcp"}, {"pro-ed", {NULL}, 8032, "udp"}, {"mindprint", {NULL}, 8033, "tcp"}, {"mindprint", {NULL}, 8033, "udp"}, {"vantronix-mgmt", {NULL}, 8034, "tcp"}, {"vantronix-mgmt", {NULL}, 8034, "udp"}, {"ampify", {NULL}, 8040, "tcp"}, {"ampify", {NULL}, 8040, "udp"}, {"fs-agent", {NULL}, 8042, "tcp"}, {"fs-server", {NULL}, 8043, "tcp"}, {"fs-mgmt", {NULL}, 8044, "tcp"}, {"senomix01", {NULL}, 8052, "tcp"}, {"senomix01", {NULL}, 8052, "udp"}, {"senomix02", {NULL}, 8053, "tcp"}, {"senomix02", {NULL}, 8053, "udp"}, {"senomix03", {NULL}, 8054, "tcp"}, {"senomix03", {NULL}, 8054, "udp"}, {"senomix04", {NULL}, 8055, "tcp"}, {"senomix04", {NULL}, 8055, "udp"}, {"senomix05", {NULL}, 8056, "tcp"}, {"senomix05", {NULL}, 8056, "udp"}, {"senomix06", {NULL}, 8057, "tcp"}, {"senomix06", {NULL}, 8057, "udp"}, {"senomix07", {NULL}, 8058, "tcp"}, {"senomix07", {NULL}, 8058, "udp"}, {"senomix08", {NULL}, 8059, "tcp"}, {"senomix08", {NULL}, 8059, "udp"}, {"gadugadu", {NULL}, 8074, "tcp"}, {"gadugadu", {NULL}, 8074, "udp"}, {"http-alt", {NULL}, 8080, "tcp"}, {"http-alt", {NULL}, 8080, "udp"}, {"sunproxyadmin", {NULL}, 8081, "tcp"}, {"sunproxyadmin", {NULL}, 8081, "udp"}, {"us-cli", {NULL}, 8082, "tcp"}, {"us-cli", {NULL}, 8082, "udp"}, {"us-srv", {NULL}, 8083, "tcp"}, {"us-srv", {NULL}, 8083, "udp"}, {"d-s-n", {NULL}, 8086, "tcp"}, {"d-s-n", {NULL}, 8086, "udp"}, {"simplifymedia", {NULL}, 8087, "tcp"}, {"simplifymedia", {NULL}, 8087, "udp"}, {"radan-http", {NULL}, 8088, "tcp"}, {"radan-http", {NULL}, 8088, "udp"}, {"jamlink", {NULL}, 8091, "tcp"}, {"sac", {NULL}, 8097, "tcp"}, {"sac", {NULL}, 8097, "udp"}, {"xprint-server", {NULL}, 8100, "tcp"}, {"xprint-server", {NULL}, 8100, "udp"}, {"ldoms-migr", {NULL}, 8101, "tcp"}, {"mtl8000-matrix", {NULL}, 8115, "tcp"}, {"mtl8000-matrix", {NULL}, 8115, "udp"}, {"cp-cluster", {NULL}, 8116, "tcp"}, {"cp-cluster", {NULL}, 8116, "udp"}, {"privoxy", {NULL}, 8118, "tcp"}, {"privoxy", {NULL}, 8118, "udp"}, {"apollo-data", {NULL}, 8121, "tcp"}, {"apollo-data", {NULL}, 8121, "udp"}, {"apollo-admin", {NULL}, 8122, "tcp"}, {"apollo-admin", {NULL}, 8122, "udp"}, {"paycash-online", {NULL}, 8128, "tcp"}, {"paycash-online", {NULL}, 8128, "udp"}, {"paycash-wbp", {NULL}, 8129, "tcp"}, {"paycash-wbp", {NULL}, 8129, "udp"}, {"indigo-vrmi", {NULL}, 8130, "tcp"}, {"indigo-vrmi", {NULL}, 8130, "udp"}, {"indigo-vbcp", {NULL}, 8131, "tcp"}, {"indigo-vbcp", {NULL}, 8131, "udp"}, {"dbabble", {NULL}, 8132, "tcp"}, {"dbabble", {NULL}, 8132, "udp"}, {"isdd", {NULL}, 8148, "tcp"}, {"isdd", {NULL}, 8148, "udp"}, {"patrol", {NULL}, 8160, "tcp"}, {"patrol", {NULL}, 8160, "udp"}, {"patrol-snmp", {NULL}, 8161, "tcp"}, {"patrol-snmp", {NULL}, 8161, "udp"}, {"vmware-fdm", {NULL}, 8182, "tcp"}, {"vmware-fdm", {NULL}, 8182, "udp"}, {"proremote", {NULL}, 8183, "tcp"}, {"itach", {NULL}, 8184, "tcp"}, {"itach", {NULL}, 8184, "udp"}, {"spytechphone", {NULL}, 8192, "tcp"}, {"spytechphone", {NULL}, 8192, "udp"}, {"blp1", {NULL}, 8194, "tcp"}, {"blp1", {NULL}, 8194, "udp"}, {"blp2", {NULL}, 8195, "tcp"}, {"blp2", {NULL}, 8195, "udp"}, {"vvr-data", {NULL}, 8199, "tcp"}, {"vvr-data", {NULL}, 8199, "udp"}, {"trivnet1", {NULL}, 8200, "tcp"}, {"trivnet1", {NULL}, 8200, "udp"}, {"trivnet2", {NULL}, 8201, "tcp"}, {"trivnet2", {NULL}, 8201, "udp"}, {"lm-perfworks", {NULL}, 8204, "tcp"}, {"lm-perfworks", {NULL}, 8204, "udp"}, {"lm-instmgr", {NULL}, 8205, "tcp"}, {"lm-instmgr", {NULL}, 8205, "udp"}, {"lm-dta", {NULL}, 8206, "tcp"}, {"lm-dta", {NULL}, 8206, "udp"}, {"lm-sserver", {NULL}, 8207, "tcp"}, {"lm-sserver", {NULL}, 8207, "udp"}, {"lm-webwatcher", {NULL}, 8208, "tcp"}, {"lm-webwatcher", {NULL}, 8208, "udp"}, {"rexecj", {NULL}, 8230, "tcp"}, {"rexecj", {NULL}, 8230, "udp"}, {"synapse-nhttps", {NULL}, 8243, "tcp"}, {"synapse-nhttps", {NULL}, 8243, "udp"}, {"pando-sec", {NULL}, 8276, "tcp"}, {"pando-sec", {NULL}, 8276, "udp"}, {"synapse-nhttp", {NULL}, 8280, "tcp"}, {"synapse-nhttp", {NULL}, 8280, "udp"}, {"blp3", {NULL}, 8292, "tcp"}, {"blp3", {NULL}, 8292, "udp"}, {"hiperscan-id", {NULL}, 8293, "tcp"}, {"blp4", {NULL}, 8294, "tcp"}, {"blp4", {NULL}, 8294, "udp"}, {"tmi", {NULL}, 8300, "tcp"}, {"tmi", {NULL}, 8300, "udp"}, {"amberon", {NULL}, 8301, "tcp"}, {"amberon", {NULL}, 8301, "udp"}, {"tnp-discover", {NULL}, 8320, "tcp"}, {"tnp-discover", {NULL}, 8320, "udp"}, {"tnp", {NULL}, 8321, "tcp"}, {"tnp", {NULL}, 8321, "udp"}, {"server-find", {NULL}, 8351, "tcp"}, {"server-find", {NULL}, 8351, "udp"}, {"cruise-enum", {NULL}, 8376, "tcp"}, {"cruise-enum", {NULL}, 8376, "udp"}, {"cruise-swroute", {NULL}, 8377, "tcp"}, {"cruise-swroute", {NULL}, 8377, "udp"}, {"cruise-config", {NULL}, 8378, "tcp"}, {"cruise-config", {NULL}, 8378, "udp"}, {"cruise-diags", {NULL}, 8379, "tcp"}, {"cruise-diags", {NULL}, 8379, "udp"}, {"cruise-update", {NULL}, 8380, "tcp"}, {"cruise-update", {NULL}, 8380, "udp"}, {"m2mservices", {NULL}, 8383, "tcp"}, {"m2mservices", {NULL}, 8383, "udp"}, {"cvd", {NULL}, 8400, "tcp"}, {"cvd", {NULL}, 8400, "udp"}, {"sabarsd", {NULL}, 8401, "tcp"}, {"sabarsd", {NULL}, 8401, "udp"}, {"abarsd", {NULL}, 8402, "tcp"}, {"abarsd", {NULL}, 8402, "udp"}, {"admind", {NULL}, 8403, "tcp"}, {"admind", {NULL}, 8403, "udp"}, {"svcloud", {NULL}, 8404, "tcp"}, {"svbackup", {NULL}, 8405, "tcp"}, {"espeech", {NULL}, 8416, "tcp"}, {"espeech", {NULL}, 8416, "udp"}, {"espeech-rtp", {NULL}, 8417, "tcp"}, {"espeech-rtp", {NULL}, 8417, "udp"}, {"cybro-a-bus", {NULL}, 8442, "tcp"}, {"cybro-a-bus", {NULL}, 8442, "udp"}, {"pcsync-https", {NULL}, 8443, "tcp"}, {"pcsync-https", {NULL}, 8443, "udp"}, {"pcsync-http", {NULL}, 8444, "tcp"}, {"pcsync-http", {NULL}, 8444, "udp"}, {"npmp", {NULL}, 8450, "tcp"}, {"npmp", {NULL}, 8450, "udp"}, {"cisco-avp", {NULL}, 8470, "tcp"}, {"pim-port", {NULL}, 8471, "tcp"}, {"pim-port", {NULL}, 8471, "sctp"}, {"otv", {NULL}, 8472, "tcp"}, {"otv", {NULL}, 8472, "udp"}, {"vp2p", {NULL}, 8473, "tcp"}, {"vp2p", {NULL}, 8473, "udp"}, {"noteshare", {NULL}, 8474, "tcp"}, {"noteshare", {NULL}, 8474, "udp"}, {"fmtp", {NULL}, 8500, "tcp"}, {"fmtp", {NULL}, 8500, "udp"}, {"rtsp-alt", {NULL}, 8554, "tcp"}, {"rtsp-alt", {NULL}, 8554, "udp"}, {"d-fence", {NULL}, 8555, "tcp"}, {"d-fence", {NULL}, 8555, "udp"}, {"oap-admin", {NULL}, 8567, "tcp"}, {"oap-admin", {NULL}, 8567, "udp"}, {"asterix", {NULL}, 8600, "tcp"}, {"asterix", {NULL}, 8600, "udp"}, {"canon-mfnp", {NULL}, 8610, "tcp"}, {"canon-mfnp", {NULL}, 8610, "udp"}, {"canon-bjnp1", {NULL}, 8611, "tcp"}, {"canon-bjnp1", {NULL}, 8611, "udp"}, {"canon-bjnp2", {NULL}, 8612, "tcp"}, {"canon-bjnp2", {NULL}, 8612, "udp"}, {"canon-bjnp3", {NULL}, 8613, "tcp"}, {"canon-bjnp3", {NULL}, 8613, "udp"}, {"canon-bjnp4", {NULL}, 8614, "tcp"}, {"canon-bjnp4", {NULL}, 8614, "udp"}, {"sun-as-jmxrmi", {NULL}, 8686, "tcp"}, {"sun-as-jmxrmi", {NULL}, 8686, "udp"}, {"vnyx", {NULL}, 8699, "tcp"}, {"vnyx", {NULL}, 8699, "udp"}, {"dtp-net", {NULL}, 8732, "udp"}, {"ibus", {NULL}, 8733, "tcp"}, {"ibus", {NULL}, 8733, "udp"}, {"mc-appserver", {NULL}, 8763, "tcp"}, {"mc-appserver", {NULL}, 8763, "udp"}, {"openqueue", {NULL}, 8764, "tcp"}, {"openqueue", {NULL}, 8764, "udp"}, {"ultraseek-http", {NULL}, 8765, "tcp"}, {"ultraseek-http", {NULL}, 8765, "udp"}, {"dpap", {NULL}, 8770, "tcp"}, {"dpap", {NULL}, 8770, "udp"}, {"msgclnt", {NULL}, 8786, "tcp"}, {"msgclnt", {NULL}, 8786, "udp"}, {"msgsrvr", {NULL}, 8787, "tcp"}, {"msgsrvr", {NULL}, 8787, "udp"}, {"sunwebadmin", {NULL}, 8800, "tcp"}, {"sunwebadmin", {NULL}, 8800, "udp"}, {"truecm", {NULL}, 8804, "tcp"}, {"truecm", {NULL}, 8804, "udp"}, {"dxspider", {NULL}, 8873, "tcp"}, {"dxspider", {NULL}, 8873, "udp"}, {"cddbp-alt", {NULL}, 8880, "tcp"}, {"cddbp-alt", {NULL}, 8880, "udp"}, {"secure-mqtt", {NULL}, 8883, "tcp"}, {"secure-mqtt", {NULL}, 8883, "udp"}, {"ddi-tcp-1", {NULL}, 8888, "tcp"}, {"ddi-udp-1", {NULL}, 8888, "udp"}, {"ddi-tcp-2", {NULL}, 8889, "tcp"}, {"ddi-udp-2", {NULL}, 8889, "udp"}, {"ddi-tcp-3", {NULL}, 8890, "tcp"}, {"ddi-udp-3", {NULL}, 8890, "udp"}, {"ddi-tcp-4", {NULL}, 8891, "tcp"}, {"ddi-udp-4", {NULL}, 8891, "udp"}, {"ddi-tcp-5", {NULL}, 8892, "tcp"}, {"ddi-udp-5", {NULL}, 8892, "udp"}, {"ddi-tcp-6", {NULL}, 8893, "tcp"}, {"ddi-udp-6", {NULL}, 8893, "udp"}, {"ddi-tcp-7", {NULL}, 8894, "tcp"}, {"ddi-udp-7", {NULL}, 8894, "udp"}, {"ospf-lite", {NULL}, 8899, "tcp"}, {"ospf-lite", {NULL}, 8899, "udp"}, {"jmb-cds1", {NULL}, 8900, "tcp"}, {"jmb-cds1", {NULL}, 8900, "udp"}, {"jmb-cds2", {NULL}, 8901, "tcp"}, {"jmb-cds2", {NULL}, 8901, "udp"}, {"manyone-http", {NULL}, 8910, "tcp"}, {"manyone-http", {NULL}, 8910, "udp"}, {"manyone-xml", {NULL}, 8911, "tcp"}, {"manyone-xml", {NULL}, 8911, "udp"}, {"wcbackup", {NULL}, 8912, "tcp"}, {"wcbackup", {NULL}, 8912, "udp"}, {"dragonfly", {NULL}, 8913, "tcp"}, {"dragonfly", {NULL}, 8913, "udp"}, {"twds", {NULL}, 8937, "tcp"}, {"cumulus-admin", {NULL}, 8954, "tcp"}, {"cumulus-admin", {NULL}, 8954, "udp"}, {"sunwebadmins", {NULL}, 8989, "tcp"}, {"sunwebadmins", {NULL}, 8989, "udp"}, {"http-wmap", {NULL}, 8990, "tcp"}, {"http-wmap", {NULL}, 8990, "udp"}, {"https-wmap", {NULL}, 8991, "tcp"}, {"https-wmap", {NULL}, 8991, "udp"}, {"bctp", {NULL}, 8999, "tcp"}, {"bctp", {NULL}, 8999, "udp"}, {"cslistener", {NULL}, 9000, "tcp"}, {"cslistener", {NULL}, 9000, "udp"}, {"etlservicemgr", {NULL}, 9001, "tcp"}, {"etlservicemgr", {NULL}, 9001, "udp"}, {"dynamid", {NULL}, 9002, "tcp"}, {"dynamid", {NULL}, 9002, "udp"}, {"ogs-client", {NULL}, 9007, "udp"}, {"ogs-server", {NULL}, 9008, "tcp"}, {"pichat", {NULL}, 9009, "tcp"}, {"pichat", {NULL}, 9009, "udp"}, {"sdr", {NULL}, 9010, "tcp"}, {"tambora", {NULL}, 9020, "tcp"}, {"tambora", {NULL}, 9020, "udp"}, {"panagolin-ident", {NULL}, 9021, "tcp"}, {"panagolin-ident", {NULL}, 9021, "udp"}, {"paragent", {NULL}, 9022, "tcp"}, {"paragent", {NULL}, 9022, "udp"}, {"swa-1", {NULL}, 9023, "tcp"}, {"swa-1", {NULL}, 9023, "udp"}, {"swa-2", {NULL}, 9024, "tcp"}, {"swa-2", {NULL}, 9024, "udp"}, {"swa-3", {NULL}, 9025, "tcp"}, {"swa-3", {NULL}, 9025, "udp"}, {"swa-4", {NULL}, 9026, "tcp"}, {"swa-4", {NULL}, 9026, "udp"}, {"versiera", {NULL}, 9050, "tcp"}, {"fio-cmgmt", {NULL}, 9051, "tcp"}, {"glrpc", {NULL}, 9080, "tcp"}, {"glrpc", {NULL}, 9080, "udp"}, {"lcs-ap", {NULL}, 9082, "sctp"}, {"emc-pp-mgmtsvc", {NULL}, 9083, "tcp"}, {"aurora", {NULL}, 9084, "tcp"}, {"aurora", {NULL}, 9084, "udp"}, {"aurora", {NULL}, 9084, "sctp"}, {"ibm-rsyscon", {NULL}, 9085, "tcp"}, {"ibm-rsyscon", {NULL}, 9085, "udp"}, {"net2display", {NULL}, 9086, "tcp"}, {"net2display", {NULL}, 9086, "udp"}, {"classic", {NULL}, 9087, "tcp"}, {"classic", {NULL}, 9087, "udp"}, {"sqlexec", {NULL}, 9088, "tcp"}, {"sqlexec", {NULL}, 9088, "udp"}, {"sqlexec-ssl", {NULL}, 9089, "tcp"}, {"sqlexec-ssl", {NULL}, 9089, "udp"}, {"websm", {NULL}, 9090, "tcp"}, {"websm", {NULL}, 9090, "udp"}, {"xmltec-xmlmail", {NULL}, 9091, "tcp"}, {"xmltec-xmlmail", {NULL}, 9091, "udp"}, {"XmlIpcRegSvc", {NULL}, 9092, "tcp"}, {"XmlIpcRegSvc", {NULL}, 9092, "udp"}, {"hp-pdl-datastr", {NULL}, 9100, "tcp"}, {"hp-pdl-datastr", {NULL}, 9100, "udp"}, {"pdl-datastream", {NULL}, 9100, "tcp"}, {"pdl-datastream", {NULL}, 9100, "udp"}, {"bacula-dir", {NULL}, 9101, "tcp"}, {"bacula-dir", {NULL}, 9101, "udp"}, {"bacula-fd", {NULL}, 9102, "tcp"}, {"bacula-fd", {NULL}, 9102, "udp"}, {"bacula-sd", {NULL}, 9103, "tcp"}, {"bacula-sd", {NULL}, 9103, "udp"}, {"peerwire", {NULL}, 9104, "tcp"}, {"peerwire", {NULL}, 9104, "udp"}, {"xadmin", {NULL}, 9105, "tcp"}, {"xadmin", {NULL}, 9105, "udp"}, {"astergate", {NULL}, 9106, "tcp"}, {"astergate-disc", {NULL}, 9106, "udp"}, {"astergatefax", {NULL}, 9107, "tcp"}, {"mxit", {NULL}, 9119, "tcp"}, {"mxit", {NULL}, 9119, "udp"}, {"dddp", {NULL}, 9131, "tcp"}, {"dddp", {NULL}, 9131, "udp"}, {"apani1", {NULL}, 9160, "tcp"}, {"apani1", {NULL}, 9160, "udp"}, {"apani2", {NULL}, 9161, "tcp"}, {"apani2", {NULL}, 9161, "udp"}, {"apani3", {NULL}, 9162, "tcp"}, {"apani3", {NULL}, 9162, "udp"}, {"apani4", {NULL}, 9163, "tcp"}, {"apani4", {NULL}, 9163, "udp"}, {"apani5", {NULL}, 9164, "tcp"}, {"apani5", {NULL}, 9164, "udp"}, {"sun-as-jpda", {NULL}, 9191, "tcp"}, {"sun-as-jpda", {NULL}, 9191, "udp"}, {"wap-wsp", {NULL}, 9200, "tcp"}, {"wap-wsp", {NULL}, 9200, "udp"}, {"wap-wsp-wtp", {NULL}, 9201, "tcp"}, {"wap-wsp-wtp", {NULL}, 9201, "udp"}, {"wap-wsp-s", {NULL}, 9202, "tcp"}, {"wap-wsp-s", {NULL}, 9202, "udp"}, {"wap-wsp-wtp-s", {NULL}, 9203, "tcp"}, {"wap-wsp-wtp-s", {NULL}, 9203, "udp"}, {"wap-vcard", {NULL}, 9204, "tcp"}, {"wap-vcard", {NULL}, 9204, "udp"}, {"wap-vcal", {NULL}, 9205, "tcp"}, {"wap-vcal", {NULL}, 9205, "udp"}, {"wap-vcard-s", {NULL}, 9206, "tcp"}, {"wap-vcard-s", {NULL}, 9206, "udp"}, {"wap-vcal-s", {NULL}, 9207, "tcp"}, {"wap-vcal-s", {NULL}, 9207, "udp"}, {"rjcdb-vcards", {NULL}, 9208, "tcp"}, {"rjcdb-vcards", {NULL}, 9208, "udp"}, {"almobile-system", {NULL}, 9209, "tcp"}, {"almobile-system", {NULL}, 9209, "udp"}, {"oma-mlp", {NULL}, 9210, "tcp"}, {"oma-mlp", {NULL}, 9210, "udp"}, {"oma-mlp-s", {NULL}, 9211, "tcp"}, {"oma-mlp-s", {NULL}, 9211, "udp"}, {"serverviewdbms", {NULL}, 9212, "tcp"}, {"serverviewdbms", {NULL}, 9212, "udp"}, {"serverstart", {NULL}, 9213, "tcp"}, {"serverstart", {NULL}, 9213, "udp"}, {"ipdcesgbs", {NULL}, 9214, "tcp"}, {"ipdcesgbs", {NULL}, 9214, "udp"}, {"insis", {NULL}, 9215, "tcp"}, {"insis", {NULL}, 9215, "udp"}, {"acme", {NULL}, 9216, "tcp"}, {"acme", {NULL}, 9216, "udp"}, {"fsc-port", {NULL}, 9217, "tcp"}, {"fsc-port", {NULL}, 9217, "udp"}, {"teamcoherence", {NULL}, 9222, "tcp"}, {"teamcoherence", {NULL}, 9222, "udp"}, {"mon", {NULL}, 9255, "tcp"}, {"mon", {NULL}, 9255, "udp"}, {"pegasus", {NULL}, 9278, "tcp"}, {"pegasus", {NULL}, 9278, "udp"}, {"pegasus-ctl", {NULL}, 9279, "tcp"}, {"pegasus-ctl", {NULL}, 9279, "udp"}, {"pgps", {NULL}, 9280, "tcp"}, {"pgps", {NULL}, 9280, "udp"}, {"swtp-port1", {NULL}, 9281, "tcp"}, {"swtp-port1", {NULL}, 9281, "udp"}, {"swtp-port2", {NULL}, 9282, "tcp"}, {"swtp-port2", {NULL}, 9282, "udp"}, {"callwaveiam", {NULL}, 9283, "tcp"}, {"callwaveiam", {NULL}, 9283, "udp"}, {"visd", {NULL}, 9284, "tcp"}, {"visd", {NULL}, 9284, "udp"}, {"n2h2server", {NULL}, 9285, "tcp"}, {"n2h2server", {NULL}, 9285, "udp"}, {"n2receive", {NULL}, 9286, "udp"}, {"cumulus", {NULL}, 9287, "tcp"}, {"cumulus", {NULL}, 9287, "udp"}, {"armtechdaemon", {NULL}, 9292, "tcp"}, {"armtechdaemon", {NULL}, 9292, "udp"}, {"storview", {NULL}, 9293, "tcp"}, {"storview", {NULL}, 9293, "udp"}, {"armcenterhttp", {NULL}, 9294, "tcp"}, {"armcenterhttp", {NULL}, 9294, "udp"}, {"armcenterhttps", {NULL}, 9295, "tcp"}, {"armcenterhttps", {NULL}, 9295, "udp"}, {"vrace", {NULL}, 9300, "tcp"}, {"vrace", {NULL}, 9300, "udp"}, {"sphinxql", {NULL}, 9306, "tcp"}, {"sphinxapi", {NULL}, 9312, "tcp"}, {"secure-ts", {NULL}, 9318, "tcp"}, {"secure-ts", {NULL}, 9318, "udp"}, {"guibase", {NULL}, 9321, "tcp"}, {"guibase", {NULL}, 9321, "udp"}, {"mpidcmgr", {NULL}, 9343, "tcp"}, {"mpidcmgr", {NULL}, 9343, "udp"}, {"mphlpdmc", {NULL}, 9344, "tcp"}, {"mphlpdmc", {NULL}, 9344, "udp"}, {"ctechlicensing", {NULL}, 9346, "tcp"}, {"ctechlicensing", {NULL}, 9346, "udp"}, {"fjdmimgr", {NULL}, 9374, "tcp"}, {"fjdmimgr", {NULL}, 9374, "udp"}, {"boxp", {NULL}, 9380, "tcp"}, {"boxp", {NULL}, 9380, "udp"}, {"d2dconfig", {NULL}, 9387, "tcp"}, {"d2ddatatrans", {NULL}, 9388, "tcp"}, {"adws", {NULL}, 9389, "tcp"}, {"otp", {NULL}, 9390, "tcp"}, {"fjinvmgr", {NULL}, 9396, "tcp"}, {"fjinvmgr", {NULL}, 9396, "udp"}, {"mpidcagt", {NULL}, 9397, "tcp"}, {"mpidcagt", {NULL}, 9397, "udp"}, {"sec-t4net-srv", {NULL}, 9400, "tcp"}, {"sec-t4net-srv", {NULL}, 9400, "udp"}, {"sec-t4net-clt", {NULL}, 9401, "tcp"}, {"sec-t4net-clt", {NULL}, 9401, "udp"}, {"sec-pc2fax-srv", {NULL}, 9402, "tcp"}, {"sec-pc2fax-srv", {NULL}, 9402, "udp"}, {"git", {NULL}, 9418, "tcp"}, {"git", {NULL}, 9418, "udp"}, {"tungsten-https", {NULL}, 9443, "tcp"}, {"tungsten-https", {NULL}, 9443, "udp"}, {"wso2esb-console", {NULL}, 9444, "tcp"}, {"wso2esb-console", {NULL}, 9444, "udp"}, {"sntlkeyssrvr", {NULL}, 9450, "tcp"}, {"sntlkeyssrvr", {NULL}, 9450, "udp"}, {"ismserver", {NULL}, 9500, "tcp"}, {"ismserver", {NULL}, 9500, "udp"}, {"sma-spw", {NULL}, 9522, "udp"}, {"mngsuite", {NULL}, 9535, "tcp"}, {"mngsuite", {NULL}, 9535, "udp"}, {"laes-bf", {NULL}, 9536, "tcp"}, {"laes-bf", {NULL}, 9536, "udp"}, {"trispen-sra", {NULL}, 9555, "tcp"}, {"trispen-sra", {NULL}, 9555, "udp"}, {"ldgateway", {NULL}, 9592, "tcp"}, {"ldgateway", {NULL}, 9592, "udp"}, {"cba8", {NULL}, 9593, "tcp"}, {"cba8", {NULL}, 9593, "udp"}, {"msgsys", {NULL}, 9594, "tcp"}, {"msgsys", {NULL}, 9594, "udp"}, {"pds", {NULL}, 9595, "tcp"}, {"pds", {NULL}, 9595, "udp"}, {"mercury-disc", {NULL}, 9596, "tcp"}, {"mercury-disc", {NULL}, 9596, "udp"}, {"pd-admin", {NULL}, 9597, "tcp"}, {"pd-admin", {NULL}, 9597, "udp"}, {"vscp", {NULL}, 9598, "tcp"}, {"vscp", {NULL}, 9598, "udp"}, {"robix", {NULL}, 9599, "tcp"}, {"robix", {NULL}, 9599, "udp"}, {"micromuse-ncpw", {NULL}, 9600, "tcp"}, {"micromuse-ncpw", {NULL}, 9600, "udp"}, {"streamcomm-ds", {NULL}, 9612, "tcp"}, {"streamcomm-ds", {NULL}, 9612, "udp"}, {"iadt-tls", {NULL}, 9614, "tcp"}, {"erunbook_agent", {NULL}, 9616, "tcp"}, {"erunbook_server", {NULL}, 9617, "tcp"}, {"condor", {NULL}, 9618, "tcp"}, {"condor", {NULL}, 9618, "udp"}, {"odbcpathway", {NULL}, 9628, "tcp"}, {"odbcpathway", {NULL}, 9628, "udp"}, {"uniport", {NULL}, 9629, "tcp"}, {"uniport", {NULL}, 9629, "udp"}, {"peoctlr", {NULL}, 9630, "tcp"}, {"peocoll", {NULL}, 9631, "tcp"}, {"mc-comm", {NULL}, 9632, "udp"}, {"pqsflows", {NULL}, 9640, "tcp"}, {"xmms2", {NULL}, 9667, "tcp"}, {"xmms2", {NULL}, 9667, "udp"}, {"tec5-sdctp", {NULL}, 9668, "tcp"}, {"tec5-sdctp", {NULL}, 9668, "udp"}, {"client-wakeup", {NULL}, 9694, "tcp"}, {"client-wakeup", {NULL}, 9694, "udp"}, {"ccnx", {NULL}, 9695, "tcp"}, {"ccnx", {NULL}, 9695, "udp"}, {"board-roar", {NULL}, 9700, "tcp"}, {"board-roar", {NULL}, 9700, "udp"}, {"l5nas-parchan", {NULL}, 9747, "tcp"}, {"l5nas-parchan", {NULL}, 9747, "udp"}, {"board-voip", {NULL}, 9750, "tcp"}, {"board-voip", {NULL}, 9750, "udp"}, {"rasadv", {NULL}, 9753, "tcp"}, {"rasadv", {NULL}, 9753, "udp"}, {"tungsten-http", {NULL}, 9762, "tcp"}, {"tungsten-http", {NULL}, 9762, "udp"}, {"davsrc", {NULL}, 9800, "tcp"}, {"davsrc", {NULL}, 9800, "udp"}, {"sstp-2", {NULL}, 9801, "tcp"}, {"sstp-2", {NULL}, 9801, "udp"}, {"davsrcs", {NULL}, 9802, "tcp"}, {"davsrcs", {NULL}, 9802, "udp"}, {"sapv1", {NULL}, 9875, "tcp"}, {"sapv1", {NULL}, 9875, "udp"}, {"sd", {NULL}, 9876, "tcp"}, {"sd", {NULL}, 9876, "udp"}, {"cyborg-systems", {NULL}, 9888, "tcp"}, {"cyborg-systems", {NULL}, 9888, "udp"}, {"gt-proxy", {NULL}, 9889, "tcp"}, {"gt-proxy", {NULL}, 9889, "udp"}, {"monkeycom", {NULL}, 9898, "tcp"}, {"monkeycom", {NULL}, 9898, "udp"}, {"sctp-tunneling", {NULL}, 9899, "tcp"}, {"sctp-tunneling", {NULL}, 9899, "udp"}, {"iua", {NULL}, 9900, "tcp"}, {"iua", {NULL}, 9900, "udp"}, {"iua", {NULL}, 9900, "sctp"}, {"enrp", {NULL}, 9901, "udp"}, {"enrp-sctp", {NULL}, 9901, "sctp"}, {"enrp-sctp-tls", {NULL}, 9902, "sctp"}, {"domaintime", {NULL}, 9909, "tcp"}, {"domaintime", {NULL}, 9909, "udp"}, {"sype-transport", {NULL}, 9911, "tcp"}, {"sype-transport", {NULL}, 9911, "udp"}, {"apc-9950", {NULL}, 9950, "tcp"}, {"apc-9950", {NULL}, 9950, "udp"}, {"apc-9951", {NULL}, 9951, "tcp"}, {"apc-9951", {NULL}, 9951, "udp"}, {"apc-9952", {NULL}, 9952, "tcp"}, {"apc-9952", {NULL}, 9952, "udp"}, {"acis", {NULL}, 9953, "tcp"}, {"acis", {NULL}, 9953, "udp"}, {"odnsp", {NULL}, 9966, "tcp"}, {"odnsp", {NULL}, 9966, "udp"}, {"dsm-scm-target", {NULL}, 9987, "tcp"}, {"dsm-scm-target", {NULL}, 9987, "udp"}, {"nsesrvr", {NULL}, 9988, "tcp"}, {"osm-appsrvr", {NULL}, 9990, "tcp"}, {"osm-appsrvr", {NULL}, 9990, "udp"}, {"osm-oev", {NULL}, 9991, "tcp"}, {"osm-oev", {NULL}, 9991, "udp"}, {"palace-1", {NULL}, 9992, "tcp"}, {"palace-1", {NULL}, 9992, "udp"}, {"palace-2", {NULL}, 9993, "tcp"}, {"palace-2", {NULL}, 9993, "udp"}, {"palace-3", {NULL}, 9994, "tcp"}, {"palace-3", {NULL}, 9994, "udp"}, {"palace-4", {NULL}, 9995, "tcp"}, {"palace-4", {NULL}, 9995, "udp"}, {"palace-5", {NULL}, 9996, "tcp"}, {"palace-5", {NULL}, 9996, "udp"}, {"palace-6", {NULL}, 9997, "tcp"}, {"palace-6", {NULL}, 9997, "udp"}, {"distinct32", {NULL}, 9998, "tcp"}, {"distinct32", {NULL}, 9998, "udp"}, {"distinct", {NULL}, 9999, "tcp"}, {"distinct", {NULL}, 9999, "udp"}, {"ndmp", {NULL}, 10000, "tcp"}, {"ndmp", {NULL}, 10000, "udp"}, {"scp-config", {NULL}, 10001, "tcp"}, {"scp-config", {NULL}, 10001, "udp"}, {"documentum", {NULL}, 10002, "tcp"}, {"documentum", {NULL}, 10002, "udp"}, {"documentum_s", {NULL}, 10003, "tcp"}, {"documentum_s", {NULL}, 10003, "udp"}, {"emcrmirccd", {NULL}, 10004, "tcp"}, {"emcrmird", {NULL}, 10005, "tcp"}, {"mvs-capacity", {NULL}, 10007, "tcp"}, {"mvs-capacity", {NULL}, 10007, "udp"}, {"octopus", {NULL}, 10008, "tcp"}, {"octopus", {NULL}, 10008, "udp"}, {"swdtp-sv", {NULL}, 10009, "tcp"}, {"swdtp-sv", {NULL}, 10009, "udp"}, {"rxapi", {NULL}, 10010, "tcp"}, {"zabbix-agent", {NULL}, 10050, "tcp"}, {"zabbix-agent", {NULL}, 10050, "udp"}, {"zabbix-trapper", {NULL}, 10051, "tcp"}, {"zabbix-trapper", {NULL}, 10051, "udp"}, {"qptlmd", {NULL}, 10055, "tcp"}, {"amanda", {NULL}, 10080, "tcp"}, {"amanda", {NULL}, 10080, "udp"}, {"famdc", {NULL}, 10081, "tcp"}, {"famdc", {NULL}, 10081, "udp"}, {"itap-ddtp", {NULL}, 10100, "tcp"}, {"itap-ddtp", {NULL}, 10100, "udp"}, {"ezmeeting-2", {NULL}, 10101, "tcp"}, {"ezmeeting-2", {NULL}, 10101, "udp"}, {"ezproxy-2", {NULL}, 10102, "tcp"}, {"ezproxy-2", {NULL}, 10102, "udp"}, {"ezrelay", {NULL}, 10103, "tcp"}, {"ezrelay", {NULL}, 10103, "udp"}, {"swdtp", {NULL}, 10104, "tcp"}, {"swdtp", {NULL}, 10104, "udp"}, {"bctp-server", {NULL}, 10107, "tcp"}, {"bctp-server", {NULL}, 10107, "udp"}, {"nmea-0183", {NULL}, 10110, "tcp"}, {"nmea-0183", {NULL}, 10110, "udp"}, {"netiq-endpoint", {NULL}, 10113, "tcp"}, {"netiq-endpoint", {NULL}, 10113, "udp"}, {"netiq-qcheck", {NULL}, 10114, "tcp"}, {"netiq-qcheck", {NULL}, 10114, "udp"}, {"netiq-endpt", {NULL}, 10115, "tcp"}, {"netiq-endpt", {NULL}, 10115, "udp"}, {"netiq-voipa", {NULL}, 10116, "tcp"}, {"netiq-voipa", {NULL}, 10116, "udp"}, {"iqrm", {NULL}, 10117, "tcp"}, {"iqrm", {NULL}, 10117, "udp"}, {"bmc-perf-sd", {NULL}, 10128, "tcp"}, {"bmc-perf-sd", {NULL}, 10128, "udp"}, {"bmc-gms", {NULL}, 10129, "tcp"}, {"qb-db-server", {NULL}, 10160, "tcp"}, {"qb-db-server", {NULL}, 10160, "udp"}, {"snmptls", {NULL}, 10161, "tcp"}, {"snmpdtls", {NULL}, 10161, "udp"}, {"snmptls-trap", {NULL}, 10162, "tcp"}, {"snmpdtls-trap", {NULL}, 10162, "udp"}, {"trisoap", {NULL}, 10200, "tcp"}, {"trisoap", {NULL}, 10200, "udp"}, {"rsms", {NULL}, 10201, "tcp"}, {"rscs", {NULL}, 10201, "udp"}, {"apollo-relay", {NULL}, 10252, "tcp"}, {"apollo-relay", {NULL}, 10252, "udp"}, {"axis-wimp-port", {NULL}, 10260, "tcp"}, {"axis-wimp-port", {NULL}, 10260, "udp"}, {"blocks", {NULL}, 10288, "tcp"}, {"blocks", {NULL}, 10288, "udp"}, {"cosir", {NULL}, 10321, "tcp"}, {"hip-nat-t", {NULL}, 10500, "udp"}, {"MOS-lower", {NULL}, 10540, "tcp"}, {"MOS-lower", {NULL}, 10540, "udp"}, {"MOS-upper", {NULL}, 10541, "tcp"}, {"MOS-upper", {NULL}, 10541, "udp"}, {"MOS-aux", {NULL}, 10542, "tcp"}, {"MOS-aux", {NULL}, 10542, "udp"}, {"MOS-soap", {NULL}, 10543, "tcp"}, {"MOS-soap", {NULL}, 10543, "udp"}, {"MOS-soap-opt", {NULL}, 10544, "tcp"}, {"MOS-soap-opt", {NULL}, 10544, "udp"}, {"gap", {NULL}, 10800, "tcp"}, {"gap", {NULL}, 10800, "udp"}, {"lpdg", {NULL}, 10805, "tcp"}, {"lpdg", {NULL}, 10805, "udp"}, {"nbd", {NULL}, 10809, "tcp"}, {"nmc-disc", {NULL}, 10810, "udp"}, {"helix", {NULL}, 10860, "tcp"}, {"helix", {NULL}, 10860, "udp"}, {"rmiaux", {NULL}, 10990, "tcp"}, {"rmiaux", {NULL}, 10990, "udp"}, {"irisa", {NULL}, 11000, "tcp"}, {"irisa", {NULL}, 11000, "udp"}, {"metasys", {NULL}, 11001, "tcp"}, {"metasys", {NULL}, 11001, "udp"}, {"netapp-icmgmt", {NULL}, 11104, "tcp"}, {"netapp-icdata", {NULL}, 11105, "tcp"}, {"sgi-lk", {NULL}, 11106, "tcp"}, {"sgi-lk", {NULL}, 11106, "udp"}, {"vce", {NULL}, 11111, "tcp"}, {"vce", {NULL}, 11111, "udp"}, {"dicom", {NULL}, 11112, "tcp"}, {"dicom", {NULL}, 11112, "udp"}, {"suncacao-snmp", {NULL}, 11161, "tcp"}, {"suncacao-snmp", {NULL}, 11161, "udp"}, {"suncacao-jmxmp", {NULL}, 11162, "tcp"}, {"suncacao-jmxmp", {NULL}, 11162, "udp"}, {"suncacao-rmi", {NULL}, 11163, "tcp"}, {"suncacao-rmi", {NULL}, 11163, "udp"}, {"suncacao-csa", {NULL}, 11164, "tcp"}, {"suncacao-csa", {NULL}, 11164, "udp"}, {"suncacao-websvc", {NULL}, 11165, "tcp"}, {"suncacao-websvc", {NULL}, 11165, "udp"}, {"snss", {NULL}, 11171, "udp"}, {"oemcacao-jmxmp", {NULL}, 11172, "tcp"}, {"oemcacao-rmi", {NULL}, 11174, "tcp"}, {"oemcacao-websvc", {NULL}, 11175, "tcp"}, {"smsqp", {NULL}, 11201, "tcp"}, {"smsqp", {NULL}, 11201, "udp"}, {"wifree", {NULL}, 11208, "tcp"}, {"wifree", {NULL}, 11208, "udp"}, {"memcache", {NULL}, 11211, "tcp"}, {"memcache", {NULL}, 11211, "udp"}, {"imip", {NULL}, 11319, "tcp"}, {"imip", {NULL}, 11319, "udp"}, {"imip-channels", {NULL}, 11320, "tcp"}, {"imip-channels", {NULL}, 11320, "udp"}, {"arena-server", {NULL}, 11321, "tcp"}, {"arena-server", {NULL}, 11321, "udp"}, {"atm-uhas", {NULL}, 11367, "tcp"}, {"atm-uhas", {NULL}, 11367, "udp"}, {"hkp", {NULL}, 11371, "tcp"}, {"hkp", {NULL}, 11371, "udp"}, {"asgcypresstcps", {NULL}, 11489, "tcp"}, {"tempest-port", {NULL}, 11600, "tcp"}, {"tempest-port", {NULL}, 11600, "udp"}, {"h323callsigalt", {NULL}, 11720, "tcp"}, {"h323callsigalt", {NULL}, 11720, "udp"}, {"intrepid-ssl", {NULL}, 11751, "tcp"}, {"intrepid-ssl", {NULL}, 11751, "udp"}, {"xoraya", {NULL}, 11876, "tcp"}, {"xoraya", {NULL}, 11876, "udp"}, {"x2e-disc", {NULL}, 11877, "udp"}, {"sysinfo-sp", {NULL}, 11967, "tcp"}, {"sysinfo-sp", {NULL}, 11967, "udp"}, {"wmereceiving", {NULL}, 11997, "sctp"}, {"wmedistribution", {NULL}, 11998, "sctp"}, {"wmereporting", {NULL}, 11999, "sctp"}, {"entextxid", {NULL}, 12000, "tcp"}, {"entextxid", {NULL}, 12000, "udp"}, {"entextnetwk", {NULL}, 12001, "tcp"}, {"entextnetwk", {NULL}, 12001, "udp"}, {"entexthigh", {NULL}, 12002, "tcp"}, {"entexthigh", {NULL}, 12002, "udp"}, {"entextmed", {NULL}, 12003, "tcp"}, {"entextmed", {NULL}, 12003, "udp"}, {"entextlow", {NULL}, 12004, "tcp"}, {"entextlow", {NULL}, 12004, "udp"}, {"dbisamserver1", {NULL}, 12005, "tcp"}, {"dbisamserver1", {NULL}, 12005, "udp"}, {"dbisamserver2", {NULL}, 12006, "tcp"}, {"dbisamserver2", {NULL}, 12006, "udp"}, {"accuracer", {NULL}, 12007, "tcp"}, {"accuracer", {NULL}, 12007, "udp"}, {"accuracer-dbms", {NULL}, 12008, "tcp"}, {"accuracer-dbms", {NULL}, 12008, "udp"}, {"edbsrvr", {NULL}, 12010, "tcp"}, {"vipera", {NULL}, 12012, "tcp"}, {"vipera", {NULL}, 12012, "udp"}, {"vipera-ssl", {NULL}, 12013, "tcp"}, {"vipera-ssl", {NULL}, 12013, "udp"}, {"rets-ssl", {NULL}, 12109, "tcp"}, {"rets-ssl", {NULL}, 12109, "udp"}, {"nupaper-ss", {NULL}, 12121, "tcp"}, {"nupaper-ss", {NULL}, 12121, "udp"}, {"cawas", {NULL}, 12168, "tcp"}, {"cawas", {NULL}, 12168, "udp"}, {"hivep", {NULL}, 12172, "tcp"}, {"hivep", {NULL}, 12172, "udp"}, {"linogridengine", {NULL}, 12300, "tcp"}, {"linogridengine", {NULL}, 12300, "udp"}, {"warehouse-sss", {NULL}, 12321, "tcp"}, {"warehouse-sss", {NULL}, 12321, "udp"}, {"warehouse", {NULL}, 12322, "tcp"}, {"warehouse", {NULL}, 12322, "udp"}, {"italk", {NULL}, 12345, "tcp"}, {"italk", {NULL}, 12345, "udp"}, {"tsaf", {NULL}, 12753, "tcp"}, {"tsaf", {NULL}, 12753, "udp"}, {"i-zipqd", {NULL}, 13160, "tcp"}, {"i-zipqd", {NULL}, 13160, "udp"}, {"bcslogc", {NULL}, 13216, "tcp"}, {"bcslogc", {NULL}, 13216, "udp"}, {"rs-pias", {NULL}, 13217, "tcp"}, {"rs-pias", {NULL}, 13217, "udp"}, {"emc-vcas-tcp", {NULL}, 13218, "tcp"}, {"emc-vcas-udp", {NULL}, 13218, "udp"}, {"powwow-client", {NULL}, 13223, "tcp"}, {"powwow-client", {NULL}, 13223, "udp"}, {"powwow-server", {NULL}, 13224, "tcp"}, {"powwow-server", {NULL}, 13224, "udp"}, {"doip-data", {NULL}, 13400, "tcp"}, {"doip-disc", {NULL}, 13400, "udp"}, {"bprd", {NULL}, 13720, "tcp"}, {"bprd", {NULL}, 13720, "udp"}, {"bpdbm", {NULL}, 13721, "tcp"}, {"bpdbm", {NULL}, 13721, "udp"}, {"bpjava-msvc", {NULL}, 13722, "tcp"}, {"bpjava-msvc", {NULL}, 13722, "udp"}, {"vnetd", {NULL}, 13724, "tcp"}, {"vnetd", {NULL}, 13724, "udp"}, {"bpcd", {NULL}, 13782, "tcp"}, {"bpcd", {NULL}, 13782, "udp"}, {"vopied", {NULL}, 13783, "tcp"}, {"vopied", {NULL}, 13783, "udp"}, {"nbdb", {NULL}, 13785, "tcp"}, {"nbdb", {NULL}, 13785, "udp"}, {"nomdb", {NULL}, 13786, "tcp"}, {"nomdb", {NULL}, 13786, "udp"}, {"dsmcc-config", {NULL}, 13818, "tcp"}, {"dsmcc-config", {NULL}, 13818, "udp"}, {"dsmcc-session", {NULL}, 13819, "tcp"}, {"dsmcc-session", {NULL}, 13819, "udp"}, {"dsmcc-passthru", {NULL}, 13820, "tcp"}, {"dsmcc-passthru", {NULL}, 13820, "udp"}, {"dsmcc-download", {NULL}, 13821, "tcp"}, {"dsmcc-download", {NULL}, 13821, "udp"}, {"dsmcc-ccp", {NULL}, 13822, "tcp"}, {"dsmcc-ccp", {NULL}, 13822, "udp"}, {"bmdss", {NULL}, 13823, "tcp"}, {"dta-systems", {NULL}, 13929, "tcp"}, {"dta-systems", {NULL}, 13929, "udp"}, {"medevolve", {NULL}, 13930, "tcp"}, {"scotty-ft", {NULL}, 14000, "tcp"}, {"scotty-ft", {NULL}, 14000, "udp"}, {"sua", {NULL}, 14001, "tcp"}, {"sua", {NULL}, 14001, "udp"}, {"sua", {NULL}, 14001, "sctp"}, {"sage-best-com1", {NULL}, 14033, "tcp"}, {"sage-best-com1", {NULL}, 14033, "udp"}, {"sage-best-com2", {NULL}, 14034, "tcp"}, {"sage-best-com2", {NULL}, 14034, "udp"}, {"vcs-app", {NULL}, 14141, "tcp"}, {"vcs-app", {NULL}, 14141, "udp"}, {"icpp", {NULL}, 14142, "tcp"}, {"icpp", {NULL}, 14142, "udp"}, {"gcm-app", {NULL}, 14145, "tcp"}, {"gcm-app", {NULL}, 14145, "udp"}, {"vrts-tdd", {NULL}, 14149, "tcp"}, {"vrts-tdd", {NULL}, 14149, "udp"}, {"vcscmd", {NULL}, 14150, "tcp"}, {"vad", {NULL}, 14154, "tcp"}, {"vad", {NULL}, 14154, "udp"}, {"cps", {NULL}, 14250, "tcp"}, {"cps", {NULL}, 14250, "udp"}, {"ca-web-update", {NULL}, 14414, "tcp"}, {"ca-web-update", {NULL}, 14414, "udp"}, {"hde-lcesrvr-1", {NULL}, 14936, "tcp"}, {"hde-lcesrvr-1", {NULL}, 14936, "udp"}, {"hde-lcesrvr-2", {NULL}, 14937, "tcp"}, {"hde-lcesrvr-2", {NULL}, 14937, "udp"}, {"hydap", {NULL}, 15000, "tcp"}, {"hydap", {NULL}, 15000, "udp"}, {"xpilot", {NULL}, 15345, "tcp"}, {"xpilot", {NULL}, 15345, "udp"}, {"3link", {NULL}, 15363, "tcp"}, {"3link", {NULL}, 15363, "udp"}, {"cisco-snat", {NULL}, 15555, "tcp"}, {"cisco-snat", {NULL}, 15555, "udp"}, {"bex-xr", {NULL}, 15660, "tcp"}, {"bex-xr", {NULL}, 15660, "udp"}, {"ptp", {NULL}, 15740, "tcp"}, {"ptp", {NULL}, 15740, "udp"}, {"2ping", {NULL}, 15998, "udp"}, {"programmar", {NULL}, 15999, "tcp"}, {"fmsas", {NULL}, 16000, "tcp"}, {"fmsascon", {NULL}, 16001, "tcp"}, {"gsms", {NULL}, 16002, "tcp"}, {"alfin", {NULL}, 16003, "udp"}, {"jwpc", {NULL}, 16020, "tcp"}, {"jwpc-bin", {NULL}, 16021, "tcp"}, {"sun-sea-port", {NULL}, 16161, "tcp"}, {"sun-sea-port", {NULL}, 16161, "udp"}, {"solaris-audit", {NULL}, 16162, "tcp"}, {"etb4j", {NULL}, 16309, "tcp"}, {"etb4j", {NULL}, 16309, "udp"}, {"pduncs", {NULL}, 16310, "tcp"}, {"pduncs", {NULL}, 16310, "udp"}, {"pdefmns", {NULL}, 16311, "tcp"}, {"pdefmns", {NULL}, 16311, "udp"}, {"netserialext1", {NULL}, 16360, "tcp"}, {"netserialext1", {NULL}, 16360, "udp"}, {"netserialext2", {NULL}, 16361, "tcp"}, {"netserialext2", {NULL}, 16361, "udp"}, {"netserialext3", {NULL}, 16367, "tcp"}, {"netserialext3", {NULL}, 16367, "udp"}, {"netserialext4", {NULL}, 16368, "tcp"}, {"netserialext4", {NULL}, 16368, "udp"}, {"connected", {NULL}, 16384, "tcp"}, {"connected", {NULL}, 16384, "udp"}, {"xoms", {NULL}, 16619, "tcp"}, {"newbay-snc-mc", {NULL}, 16900, "tcp"}, {"newbay-snc-mc", {NULL}, 16900, "udp"}, {"sgcip", {NULL}, 16950, "tcp"}, {"sgcip", {NULL}, 16950, "udp"}, {"intel-rci-mp", {NULL}, 16991, "tcp"}, {"intel-rci-mp", {NULL}, 16991, "udp"}, {"amt-soap-http", {NULL}, 16992, "tcp"}, {"amt-soap-http", {NULL}, 16992, "udp"}, {"amt-soap-https", {NULL}, 16993, "tcp"}, {"amt-soap-https", {NULL}, 16993, "udp"}, {"amt-redir-tcp", {NULL}, 16994, "tcp"}, {"amt-redir-tcp", {NULL}, 16994, "udp"}, {"amt-redir-tls", {NULL}, 16995, "tcp"}, {"amt-redir-tls", {NULL}, 16995, "udp"}, {"isode-dua", {NULL}, 17007, "tcp"}, {"isode-dua", {NULL}, 17007, "udp"}, {"soundsvirtual", {NULL}, 17185, "tcp"}, {"soundsvirtual", {NULL}, 17185, "udp"}, {"chipper", {NULL}, 17219, "tcp"}, {"chipper", {NULL}, 17219, "udp"}, {"integrius-stp", {NULL}, 17234, "tcp"}, {"integrius-stp", {NULL}, 17234, "udp"}, {"ssh-mgmt", {NULL}, 17235, "tcp"}, {"ssh-mgmt", {NULL}, 17235, "udp"}, {"db-lsp", {NULL}, 17500, "tcp"}, {"db-lsp-disc", {NULL}, 17500, "udp"}, {"ea", {NULL}, 17729, "tcp"}, {"ea", {NULL}, 17729, "udp"}, {"zep", {NULL}, 17754, "tcp"}, {"zep", {NULL}, 17754, "udp"}, {"zigbee-ip", {NULL}, 17755, "tcp"}, {"zigbee-ip", {NULL}, 17755, "udp"}, {"zigbee-ips", {NULL}, 17756, "tcp"}, {"zigbee-ips", {NULL}, 17756, "udp"}, {"sw-orion", {NULL}, 17777, "tcp"}, {"biimenu", {NULL}, 18000, "tcp"}, {"biimenu", {NULL}, 18000, "udp"}, {"radpdf", {NULL}, 18104, "tcp"}, {"racf", {NULL}, 18136, "tcp"}, {"opsec-cvp", {NULL}, 18181, "tcp"}, {"opsec-cvp", {NULL}, 18181, "udp"}, {"opsec-ufp", {NULL}, 18182, "tcp"}, {"opsec-ufp", {NULL}, 18182, "udp"}, {"opsec-sam", {NULL}, 18183, "tcp"}, {"opsec-sam", {NULL}, 18183, "udp"}, {"opsec-lea", {NULL}, 18184, "tcp"}, {"opsec-lea", {NULL}, 18184, "udp"}, {"opsec-omi", {NULL}, 18185, "tcp"}, {"opsec-omi", {NULL}, 18185, "udp"}, {"ohsc", {NULL}, 18186, "tcp"}, {"ohsc", {NULL}, 18186, "udp"}, {"opsec-ela", {NULL}, 18187, "tcp"}, {"opsec-ela", {NULL}, 18187, "udp"}, {"checkpoint-rtm", {NULL}, 18241, "tcp"}, {"checkpoint-rtm", {NULL}, 18241, "udp"}, {"gv-pf", {NULL}, 18262, "tcp"}, {"gv-pf", {NULL}, 18262, "udp"}, {"ac-cluster", {NULL}, 18463, "tcp"}, {"ac-cluster", {NULL}, 18463, "udp"}, {"rds-ib", {NULL}, 18634, "tcp"}, {"rds-ib", {NULL}, 18634, "udp"}, {"rds-ip", {NULL}, 18635, "tcp"}, {"rds-ip", {NULL}, 18635, "udp"}, {"ique", {NULL}, 18769, "tcp"}, {"ique", {NULL}, 18769, "udp"}, {"infotos", {NULL}, 18881, "tcp"}, {"infotos", {NULL}, 18881, "udp"}, {"apc-necmp", {NULL}, 18888, "tcp"}, {"apc-necmp", {NULL}, 18888, "udp"}, {"igrid", {NULL}, 19000, "tcp"}, {"igrid", {NULL}, 19000, "udp"}, {"j-link", {NULL}, 19020, "tcp"}, {"opsec-uaa", {NULL}, 19191, "tcp"}, {"opsec-uaa", {NULL}, 19191, "udp"}, {"ua-secureagent", {NULL}, 19194, "tcp"}, {"ua-secureagent", {NULL}, 19194, "udp"}, {"keysrvr", {NULL}, 19283, "tcp"}, {"keysrvr", {NULL}, 19283, "udp"}, {"keyshadow", {NULL}, 19315, "tcp"}, {"keyshadow", {NULL}, 19315, "udp"}, {"mtrgtrans", {NULL}, 19398, "tcp"}, {"mtrgtrans", {NULL}, 19398, "udp"}, {"hp-sco", {NULL}, 19410, "tcp"}, {"hp-sco", {NULL}, 19410, "udp"}, {"hp-sca", {NULL}, 19411, "tcp"}, {"hp-sca", {NULL}, 19411, "udp"}, {"hp-sessmon", {NULL}, 19412, "tcp"}, {"hp-sessmon", {NULL}, 19412, "udp"}, {"fxuptp", {NULL}, 19539, "tcp"}, {"fxuptp", {NULL}, 19539, "udp"}, {"sxuptp", {NULL}, 19540, "tcp"}, {"sxuptp", {NULL}, 19540, "udp"}, {"jcp", {NULL}, 19541, "tcp"}, {"jcp", {NULL}, 19541, "udp"}, {"iec-104-sec", {NULL}, 19998, "tcp"}, {"dnp-sec", {NULL}, 19999, "tcp"}, {"dnp-sec", {NULL}, 19999, "udp"}, {"dnp", {NULL}, 20000, "tcp"}, {"dnp", {NULL}, 20000, "udp"}, {"microsan", {NULL}, 20001, "tcp"}, {"microsan", {NULL}, 20001, "udp"}, {"commtact-http", {NULL}, 20002, "tcp"}, {"commtact-http", {NULL}, 20002, "udp"}, {"commtact-https", {NULL}, 20003, "tcp"}, {"commtact-https", {NULL}, 20003, "udp"}, {"openwebnet", {NULL}, 20005, "tcp"}, {"openwebnet", {NULL}, 20005, "udp"}, {"ss-idi-disc", {NULL}, 20012, "udp"}, {"ss-idi", {NULL}, 20013, "tcp"}, {"opendeploy", {NULL}, 20014, "tcp"}, {"opendeploy", {NULL}, 20014, "udp"}, {"nburn_id", {NULL}, 20034, "tcp"}, {"nburn_id", {NULL}, 20034, "udp"}, {"tmophl7mts", {NULL}, 20046, "tcp"}, {"tmophl7mts", {NULL}, 20046, "udp"}, {"mountd", {NULL}, 20048, "tcp"}, {"mountd", {NULL}, 20048, "udp"}, {"nfsrdma", {NULL}, 20049, "tcp"}, {"nfsrdma", {NULL}, 20049, "udp"}, {"nfsrdma", {NULL}, 20049, "sctp"}, {"tolfab", {NULL}, 20167, "tcp"}, {"tolfab", {NULL}, 20167, "udp"}, {"ipdtp-port", {NULL}, 20202, "tcp"}, {"ipdtp-port", {NULL}, 20202, "udp"}, {"ipulse-ics", {NULL}, 20222, "tcp"}, {"ipulse-ics", {NULL}, 20222, "udp"}, {"emwavemsg", {NULL}, 20480, "tcp"}, {"emwavemsg", {NULL}, 20480, "udp"}, {"track", {NULL}, 20670, "tcp"}, {"track", {NULL}, 20670, "udp"}, {"athand-mmp", {NULL}, 20999, "tcp"}, {"athand-mmp", {NULL}, 20999, "udp"}, {"irtrans", {NULL}, 21000, "tcp"}, {"irtrans", {NULL}, 21000, "udp"}, {"dfserver", {NULL}, 21554, "tcp"}, {"dfserver", {NULL}, 21554, "udp"}, {"vofr-gateway", {NULL}, 21590, "tcp"}, {"vofr-gateway", {NULL}, 21590, "udp"}, {"tvpm", {NULL}, 21800, "tcp"}, {"tvpm", {NULL}, 21800, "udp"}, {"webphone", {NULL}, 21845, "tcp"}, {"webphone", {NULL}, 21845, "udp"}, {"netspeak-is", {NULL}, 21846, "tcp"}, {"netspeak-is", {NULL}, 21846, "udp"}, {"netspeak-cs", {NULL}, 21847, "tcp"}, {"netspeak-cs", {NULL}, 21847, "udp"}, {"netspeak-acd", {NULL}, 21848, "tcp"}, {"netspeak-acd", {NULL}, 21848, "udp"}, {"netspeak-cps", {NULL}, 21849, "tcp"}, {"netspeak-cps", {NULL}, 21849, "udp"}, {"snapenetio", {NULL}, 22000, "tcp"}, {"snapenetio", {NULL}, 22000, "udp"}, {"optocontrol", {NULL}, 22001, "tcp"}, {"optocontrol", {NULL}, 22001, "udp"}, {"optohost002", {NULL}, 22002, "tcp"}, {"optohost002", {NULL}, 22002, "udp"}, {"optohost003", {NULL}, 22003, "tcp"}, {"optohost003", {NULL}, 22003, "udp"}, {"optohost004", {NULL}, 22004, "tcp"}, {"optohost004", {NULL}, 22004, "udp"}, {"optohost004", {NULL}, 22005, "tcp"}, {"optohost004", {NULL}, 22005, "udp"}, {"dcap", {NULL}, 22125, "tcp"}, {"gsidcap", {NULL}, 22128, "tcp"}, {"wnn6", {NULL}, 22273, "tcp"}, {"wnn6", {NULL}, 22273, "udp"}, {"cis", {NULL}, 22305, "tcp"}, {"cis", {NULL}, 22305, "udp"}, {"cis-secure", {NULL}, 22343, "tcp"}, {"cis-secure", {NULL}, 22343, "udp"}, {"WibuKey", {NULL}, 22347, "tcp"}, {"WibuKey", {NULL}, 22347, "udp"}, {"CodeMeter", {NULL}, 22350, "tcp"}, {"CodeMeter", {NULL}, 22350, "udp"}, {"vocaltec-wconf", {NULL}, 22555, "tcp"}, {"vocaltec-phone", {NULL}, 22555, "udp"}, {"talikaserver", {NULL}, 22763, "tcp"}, {"talikaserver", {NULL}, 22763, "udp"}, {"aws-brf", {NULL}, 22800, "tcp"}, {"aws-brf", {NULL}, 22800, "udp"}, {"brf-gw", {NULL}, 22951, "tcp"}, {"brf-gw", {NULL}, 22951, "udp"}, {"inovaport1", {NULL}, 23000, "tcp"}, {"inovaport1", {NULL}, 23000, "udp"}, {"inovaport2", {NULL}, 23001, "tcp"}, {"inovaport2", {NULL}, 23001, "udp"}, {"inovaport3", {NULL}, 23002, "tcp"}, {"inovaport3", {NULL}, 23002, "udp"}, {"inovaport4", {NULL}, 23003, "tcp"}, {"inovaport4", {NULL}, 23003, "udp"}, {"inovaport5", {NULL}, 23004, "tcp"}, {"inovaport5", {NULL}, 23004, "udp"}, {"inovaport6", {NULL}, 23005, "tcp"}, {"inovaport6", {NULL}, 23005, "udp"}, {"s102", {NULL}, 23272, "udp"}, {"elxmgmt", {NULL}, 23333, "tcp"}, {"elxmgmt", {NULL}, 23333, "udp"}, {"novar-dbase", {NULL}, 23400, "tcp"}, {"novar-dbase", {NULL}, 23400, "udp"}, {"novar-alarm", {NULL}, 23401, "tcp"}, {"novar-alarm", {NULL}, 23401, "udp"}, {"novar-global", {NULL}, 23402, "tcp"}, {"novar-global", {NULL}, 23402, "udp"}, {"aequus", {NULL}, 23456, "tcp"}, {"aequus-alt", {NULL}, 23457, "tcp"}, {"med-ltp", {NULL}, 24000, "tcp"}, {"med-ltp", {NULL}, 24000, "udp"}, {"med-fsp-rx", {NULL}, 24001, "tcp"}, {"med-fsp-rx", {NULL}, 24001, "udp"}, {"med-fsp-tx", {NULL}, 24002, "tcp"}, {"med-fsp-tx", {NULL}, 24002, "udp"}, {"med-supp", {NULL}, 24003, "tcp"}, {"med-supp", {NULL}, 24003, "udp"}, {"med-ovw", {NULL}, 24004, "tcp"}, {"med-ovw", {NULL}, 24004, "udp"}, {"med-ci", {NULL}, 24005, "tcp"}, {"med-ci", {NULL}, 24005, "udp"}, {"med-net-svc", {NULL}, 24006, "tcp"}, {"med-net-svc", {NULL}, 24006, "udp"}, {"filesphere", {NULL}, 24242, "tcp"}, {"filesphere", {NULL}, 24242, "udp"}, {"vista-4gl", {NULL}, 24249, "tcp"}, {"vista-4gl", {NULL}, 24249, "udp"}, {"ild", {NULL}, 24321, "tcp"}, {"ild", {NULL}, 24321, "udp"}, {"intel_rci", {NULL}, 24386, "tcp"}, {"intel_rci", {NULL}, 24386, "udp"}, {"tonidods", {NULL}, 24465, "tcp"}, {"tonidods", {NULL}, 24465, "udp"}, {"binkp", {NULL}, 24554, "tcp"}, {"binkp", {NULL}, 24554, "udp"}, {"canditv", {NULL}, 24676, "tcp"}, {"canditv", {NULL}, 24676, "udp"}, {"flashfiler", {NULL}, 24677, "tcp"}, {"flashfiler", {NULL}, 24677, "udp"}, {"proactivate", {NULL}, 24678, "tcp"}, {"proactivate", {NULL}, 24678, "udp"}, {"tcc-http", {NULL}, 24680, "tcp"}, {"tcc-http", {NULL}, 24680, "udp"}, {"cslg", {NULL}, 24754, "tcp"}, {"find", {NULL}, 24922, "tcp"}, {"find", {NULL}, 24922, "udp"}, {"icl-twobase1", {NULL}, 25000, "tcp"}, {"icl-twobase1", {NULL}, 25000, "udp"}, {"icl-twobase2", {NULL}, 25001, "tcp"}, {"icl-twobase2", {NULL}, 25001, "udp"}, {"icl-twobase3", {NULL}, 25002, "tcp"}, {"icl-twobase3", {NULL}, 25002, "udp"}, {"icl-twobase4", {NULL}, 25003, "tcp"}, {"icl-twobase4", {NULL}, 25003, "udp"}, {"icl-twobase5", {NULL}, 25004, "tcp"}, {"icl-twobase5", {NULL}, 25004, "udp"}, {"icl-twobase6", {NULL}, 25005, "tcp"}, {"icl-twobase6", {NULL}, 25005, "udp"}, {"icl-twobase7", {NULL}, 25006, "tcp"}, {"icl-twobase7", {NULL}, 25006, "udp"}, {"icl-twobase8", {NULL}, 25007, "tcp"}, {"icl-twobase8", {NULL}, 25007, "udp"}, {"icl-twobase9", {NULL}, 25008, "tcp"}, {"icl-twobase9", {NULL}, 25008, "udp"}, {"icl-twobase10", {NULL}, 25009, "tcp"}, {"icl-twobase10", {NULL}, 25009, "udp"}, {"rna", {NULL}, 25471, "sctp"}, {"sauterdongle", {NULL}, 25576, "tcp"}, {"vocaltec-hos", {NULL}, 25793, "tcp"}, {"vocaltec-hos", {NULL}, 25793, "udp"}, {"tasp-net", {NULL}, 25900, "tcp"}, {"tasp-net", {NULL}, 25900, "udp"}, {"niobserver", {NULL}, 25901, "tcp"}, {"niobserver", {NULL}, 25901, "udp"}, {"nilinkanalyst", {NULL}, 25902, "tcp"}, {"nilinkanalyst", {NULL}, 25902, "udp"}, {"niprobe", {NULL}, 25903, "tcp"}, {"niprobe", {NULL}, 25903, "udp"}, {"quake", {NULL}, 26000, "tcp"}, {"quake", {NULL}, 26000, "udp"}, {"scscp", {NULL}, 26133, "tcp"}, {"scscp", {NULL}, 26133, "udp"}, {"wnn6-ds", {NULL}, 26208, "tcp"}, {"wnn6-ds", {NULL}, 26208, "udp"}, {"ezproxy", {NULL}, 26260, "tcp"}, {"ezproxy", {NULL}, 26260, "udp"}, {"ezmeeting", {NULL}, 26261, "tcp"}, {"ezmeeting", {NULL}, 26261, "udp"}, {"k3software-svr", {NULL}, 26262, "tcp"}, {"k3software-svr", {NULL}, 26262, "udp"}, {"k3software-cli", {NULL}, 26263, "tcp"}, {"k3software-cli", {NULL}, 26263, "udp"}, {"exoline-tcp", {NULL}, 26486, "tcp"}, {"exoline-udp", {NULL}, 26486, "udp"}, {"exoconfig", {NULL}, 26487, "tcp"}, {"exoconfig", {NULL}, 26487, "udp"}, {"exonet", {NULL}, 26489, "tcp"}, {"exonet", {NULL}, 26489, "udp"}, {"imagepump", {NULL}, 27345, "tcp"}, {"imagepump", {NULL}, 27345, "udp"}, {"jesmsjc", {NULL}, 27442, "tcp"}, {"jesmsjc", {NULL}, 27442, "udp"}, {"kopek-httphead", {NULL}, 27504, "tcp"}, {"kopek-httphead", {NULL}, 27504, "udp"}, {"ars-vista", {NULL}, 27782, "tcp"}, {"ars-vista", {NULL}, 27782, "udp"}, {"tw-auth-key", {NULL}, 27999, "tcp"}, {"tw-auth-key", {NULL}, 27999, "udp"}, {"nxlmd", {NULL}, 28000, "tcp"}, {"nxlmd", {NULL}, 28000, "udp"}, {"pqsp", {NULL}, 28001, "tcp"}, {"siemensgsm", {NULL}, 28240, "tcp"}, {"siemensgsm", {NULL}, 28240, "udp"}, {"sgsap", {NULL}, 29118, "sctp"}, {"otmp", {NULL}, 29167, "tcp"}, {"otmp", {NULL}, 29167, "udp"}, {"sbcap", {NULL}, 29168, "sctp"}, {"iuhsctpassoc", {NULL}, 29169, "sctp"}, {"pago-services1", {NULL}, 30001, "tcp"}, {"pago-services1", {NULL}, 30001, "udp"}, {"pago-services2", {NULL}, 30002, "tcp"}, {"pago-services2", {NULL}, 30002, "udp"}, {"kingdomsonline", {NULL}, 30260, "tcp"}, {"kingdomsonline", {NULL}, 30260, "udp"}, {"ovobs", {NULL}, 30999, "tcp"}, {"ovobs", {NULL}, 30999, "udp"}, {"autotrac-acp", {NULL}, 31020, "tcp"}, {"yawn", {NULL}, 31029, "udp"}, {"xqosd", {NULL}, 31416, "tcp"}, {"xqosd", {NULL}, 31416, "udp"}, {"tetrinet", {NULL}, 31457, "tcp"}, {"tetrinet", {NULL}, 31457, "udp"}, {"lm-mon", {NULL}, 31620, "tcp"}, {"lm-mon", {NULL}, 31620, "udp"}, {"dsx_monitor", {NULL}, 31685, "tcp"}, {"gamesmith-port", {NULL}, 31765, "tcp"}, {"gamesmith-port", {NULL}, 31765, "udp"}, {"iceedcp_tx", {NULL}, 31948, "tcp"}, {"iceedcp_tx", {NULL}, 31948, "udp"}, {"iceedcp_rx", {NULL}, 31949, "tcp"}, {"iceedcp_rx", {NULL}, 31949, "udp"}, {"iracinghelper", {NULL}, 32034, "tcp"}, {"iracinghelper", {NULL}, 32034, "udp"}, {"t1distproc60", {NULL}, 32249, "tcp"}, {"t1distproc60", {NULL}, 32249, "udp"}, {"apm-link", {NULL}, 32483, "tcp"}, {"apm-link", {NULL}, 32483, "udp"}, {"sec-ntb-clnt", {NULL}, 32635, "tcp"}, {"sec-ntb-clnt", {NULL}, 32635, "udp"}, {"DMExpress", {NULL}, 32636, "tcp"}, {"DMExpress", {NULL}, 32636, "udp"}, {"filenet-powsrm", {NULL}, 32767, "tcp"}, {"filenet-powsrm", {NULL}, 32767, "udp"}, {"filenet-tms", {NULL}, 32768, "tcp"}, {"filenet-tms", {NULL}, 32768, "udp"}, {"filenet-rpc", {NULL}, 32769, "tcp"}, {"filenet-rpc", {NULL}, 32769, "udp"}, {"filenet-nch", {NULL}, 32770, "tcp"}, {"filenet-nch", {NULL}, 32770, "udp"}, {"filenet-rmi", {NULL}, 32771, "tcp"}, {"filenet-rmi", {NULL}, 32771, "udp"}, {"filenet-pa", {NULL}, 32772, "tcp"}, {"filenet-pa", {NULL}, 32772, "udp"}, {"filenet-cm", {NULL}, 32773, "tcp"}, {"filenet-cm", {NULL}, 32773, "udp"}, {"filenet-re", {NULL}, 32774, "tcp"}, {"filenet-re", {NULL}, 32774, "udp"}, {"filenet-pch", {NULL}, 32775, "tcp"}, {"filenet-pch", {NULL}, 32775, "udp"}, {"filenet-peior", {NULL}, 32776, "tcp"}, {"filenet-peior", {NULL}, 32776, "udp"}, {"filenet-obrok", {NULL}, 32777, "tcp"}, {"filenet-obrok", {NULL}, 32777, "udp"}, {"mlsn", {NULL}, 32801, "tcp"}, {"mlsn", {NULL}, 32801, "udp"}, {"retp", {NULL}, 32811, "tcp"}, {"idmgratm", {NULL}, 32896, "tcp"}, {"idmgratm", {NULL}, 32896, "udp"}, {"aurora-balaena", {NULL}, 33123, "tcp"}, {"aurora-balaena", {NULL}, 33123, "udp"}, {"diamondport", {NULL}, 33331, "tcp"}, {"diamondport", {NULL}, 33331, "udp"}, {"dgi-serv", {NULL}, 33333, "tcp"}, {"traceroute", {NULL}, 33434, "tcp"}, {"traceroute", {NULL}, 33434, "udp"}, {"snip-slave", {NULL}, 33656, "tcp"}, {"snip-slave", {NULL}, 33656, "udp"}, {"turbonote-2", {NULL}, 34249, "tcp"}, {"turbonote-2", {NULL}, 34249, "udp"}, {"p-net-local", {NULL}, 34378, "tcp"}, {"p-net-local", {NULL}, 34378, "udp"}, {"p-net-remote", {NULL}, 34379, "tcp"}, {"p-net-remote", {NULL}, 34379, "udp"}, {"dhanalakshmi", {NULL}, 34567, "tcp"}, {"profinet-rt", {NULL}, 34962, "tcp"}, {"profinet-rt", {NULL}, 34962, "udp"}, {"profinet-rtm", {NULL}, 34963, "tcp"}, {"profinet-rtm", {NULL}, 34963, "udp"}, {"profinet-cm", {NULL}, 34964, "tcp"}, {"profinet-cm", {NULL}, 34964, "udp"}, {"ethercat", {NULL}, 34980, "tcp"}, {"ethercat", {NULL}, 34980, "udp"}, {"allpeers", {NULL}, 36001, "tcp"}, {"allpeers", {NULL}, 36001, "udp"}, {"s1-control", {NULL}, 36412, "sctp"}, {"x2-control", {NULL}, 36422, "sctp"}, {"m2ap", {NULL}, 36443, "sctp"}, {"m3ap", {NULL}, 36444, "sctp"}, {"kastenxpipe", {NULL}, 36865, "tcp"}, {"kastenxpipe", {NULL}, 36865, "udp"}, {"neckar", {NULL}, 37475, "tcp"}, {"neckar", {NULL}, 37475, "udp"}, {"unisys-eportal", {NULL}, 37654, "tcp"}, {"unisys-eportal", {NULL}, 37654, "udp"}, {"galaxy7-data", {NULL}, 38201, "tcp"}, {"galaxy7-data", {NULL}, 38201, "udp"}, {"fairview", {NULL}, 38202, "tcp"}, {"fairview", {NULL}, 38202, "udp"}, {"agpolicy", {NULL}, 38203, "tcp"}, {"agpolicy", {NULL}, 38203, "udp"}, {"turbonote-1", {NULL}, 39681, "tcp"}, {"turbonote-1", {NULL}, 39681, "udp"}, {"safetynetp", {NULL}, 40000, "tcp"}, {"safetynetp", {NULL}, 40000, "udp"}, {"cscp", {NULL}, 40841, "tcp"}, {"cscp", {NULL}, 40841, "udp"}, {"csccredir", {NULL}, 40842, "tcp"}, {"csccredir", {NULL}, 40842, "udp"}, {"csccfirewall", {NULL}, 40843, "tcp"}, {"csccfirewall", {NULL}, 40843, "udp"}, {"ortec-disc", {NULL}, 40853, "udp"}, {"fs-qos", {NULL}, 41111, "tcp"}, {"fs-qos", {NULL}, 41111, "udp"}, {"tentacle", {NULL}, 41121, "tcp"}, {"crestron-cip", {NULL}, 41794, "tcp"}, {"crestron-cip", {NULL}, 41794, "udp"}, {"crestron-ctp", {NULL}, 41795, "tcp"}, {"crestron-ctp", {NULL}, 41795, "udp"}, {"candp", {NULL}, 42508, "tcp"}, {"candp", {NULL}, 42508, "udp"}, {"candrp", {NULL}, 42509, "tcp"}, {"candrp", {NULL}, 42509, "udp"}, {"caerpc", {NULL}, 42510, "tcp"}, {"caerpc", {NULL}, 42510, "udp"}, {"reachout", {NULL}, 43188, "tcp"}, {"reachout", {NULL}, 43188, "udp"}, {"ndm-agent-port", {NULL}, 43189, "tcp"}, {"ndm-agent-port", {NULL}, 43189, "udp"}, {"ip-provision", {NULL}, 43190, "tcp"}, {"ip-provision", {NULL}, 43190, "udp"}, {"noit-transport", {NULL}, 43191, "tcp"}, {"ew-mgmt", {NULL}, 43440, "tcp"}, {"ew-disc-cmd", {NULL}, 43440, "udp"}, {"ciscocsdb", {NULL}, 43441, "tcp"}, {"ciscocsdb", {NULL}, 43441, "udp"}, {"pmcd", {NULL}, 44321, "tcp"}, {"pmcd", {NULL}, 44321, "udp"}, {"pmcdproxy", {NULL}, 44322, "tcp"}, {"pmcdproxy", {NULL}, 44322, "udp"}, {"pcp", {NULL}, 44323, "udp"}, {"rbr-debug", {NULL}, 44553, "tcp"}, {"rbr-debug", {NULL}, 44553, "udp"}, {"EtherNet/IP-2", {NULL}, 44818, "tcp"}, {"EtherNet/IP-2", {NULL}, 44818, "udp"}, {"invision-ag", {NULL}, 45054, "tcp"}, {"invision-ag", {NULL}, 45054, "udp"}, {"eba", {NULL}, 45678, "tcp"}, {"eba", {NULL}, 45678, "udp"}, {"qdb2service", {NULL}, 45825, "tcp"}, {"qdb2service", {NULL}, 45825, "udp"}, {"ssr-servermgr", {NULL}, 45966, "tcp"}, {"ssr-servermgr", {NULL}, 45966, "udp"}, {"mediabox", {NULL}, 46999, "tcp"}, {"mediabox", {NULL}, 46999, "udp"}, {"mbus", {NULL}, 47000, "tcp"}, {"mbus", {NULL}, 47000, "udp"}, {"winrm", {NULL}, 47001, "tcp"}, {"dbbrowse", {NULL}, 47557, "tcp"}, {"dbbrowse", {NULL}, 47557, "udp"}, {"directplaysrvr", {NULL}, 47624, "tcp"}, {"directplaysrvr", {NULL}, 47624, "udp"}, {"ap", {NULL}, 47806, "tcp"}, {"ap", {NULL}, 47806, "udp"}, {"bacnet", {NULL}, 47808, "tcp"}, {"bacnet", {NULL}, 47808, "udp"}, {"nimcontroller", {NULL}, 48000, "tcp"}, {"nimcontroller", {NULL}, 48000, "udp"}, {"nimspooler", {NULL}, 48001, "tcp"}, {"nimspooler", {NULL}, 48001, "udp"}, {"nimhub", {NULL}, 48002, "tcp"}, {"nimhub", {NULL}, 48002, "udp"}, {"nimgtw", {NULL}, 48003, "tcp"}, {"nimgtw", {NULL}, 48003, "udp"}, {"nimbusdb", {NULL}, 48004, "tcp"}, {"nimbusdbctrl", {NULL}, 48005, "tcp"}, {"3gpp-cbsp", {NULL}, 48049, "tcp"}, {"isnetserv", {NULL}, 48128, "tcp"}, {"isnetserv", {NULL}, 48128, "udp"}, {"blp5", {NULL}, 48129, "tcp"}, {"blp5", {NULL}, 48129, "udp"}, {"com-bardac-dw", {NULL}, 48556, "tcp"}, {"com-bardac-dw", {NULL}, 48556, "udp"}, {"iqobject", {NULL}, 48619, "tcp"}, {"iqobject", {NULL}, 48619, "udp"}, #endif /* USE_IANA_REGISTERED_PORTS */ { NULL, {NULL}, 0, NULL } }; struct servent *getservbyport(int port, const char *proto) { unsigned short u_port; const char *protocol = NULL; int i, error = 0; u_port = ntohs((unsigned short)port); if (proto) { switch (strlen(proto)) { case 3: if (!strncasecmp(proto, "tcp", 3)) protocol = "tcp"; else if (!strncasecmp(proto, "udp", 3)) protocol = "udp"; else error = WSAEFAULT; break; case 4: if (!strncasecmp(proto, "sctp", 4)) protocol = "sctp"; else if (!strncasecmp(proto, "dccp", 4)) protocol = "dccp"; else error = WSAEFAULT; break; default: error = WSAEFAULT; } } if (!error) { for (i = 0; i < (sizeof(IANAports) / sizeof(IANAports[0])) - 1; i++) { if (u_port == IANAports[i].s_port) { if (!protocol || !strcasecmp(protocol, IANAports[i].s_proto)) return (struct servent *)&IANAports[i]; } } error = WSANO_DATA; } SET_SOCKERRNO(error); return NULL; } #endif /* _WIN32_WCE */ pycares-pycares-3.1.1/deps/c-ares/src/ares_platform.h000066400000000000000000000022011360572117400225320ustar00rootroot00000000000000#ifndef HEADER_CARES_PLATFORM_H #define HEADER_CARES_PLATFORM_H /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004 - 2011 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #if defined(WIN32) && !defined(MSDOS) typedef enum { WIN_UNKNOWN, WIN_3X, WIN_9X, WIN_NT, WIN_CE } win_platform; win_platform ares__getplatform(void); #endif #if defined(_WIN32_WCE) struct servent *getservbyport(int port, const char *proto); #endif #endif /* HEADER_CARES_PLATFORM_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_private.h000066400000000000000000000257541360572117400224020ustar00rootroot00000000000000#ifndef __ARES_PRIVATE_H #define __ARES_PRIVATE_H /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004-2010 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* * Define WIN32 when build target is Win32 API */ #if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) #define WIN32 #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef WATT32 #include #include #define writev(s,v,c) writev_s(s,v,c) #define HAVE_WRITEV 1 #endif #define DEFAULT_TIMEOUT 5000 /* milliseconds */ #define DEFAULT_TRIES 4 #ifndef INADDR_NONE #define INADDR_NONE 0xffffffff #endif #ifdef CARES_EXPOSE_STATICS /* Make some internal functions visible for testing */ #define STATIC_TESTABLE #else #define STATIC_TESTABLE static #endif #if defined(WIN32) && !defined(WATT32) #define WIN_NS_9X "System\\CurrentControlSet\\Services\\VxD\\MSTCP" #define WIN_NS_NT_KEY "System\\CurrentControlSet\\Services\\Tcpip\\Parameters" #define WIN_DNSCLIENT "Software\\Policies\\Microsoft\\System\\DNSClient" #define WIN_NT_DNSCLIENT "Software\\Policies\\Microsoft\\Windows NT\\DNSClient" #define NAMESERVER "NameServer" #define DHCPNAMESERVER "DhcpNameServer" #define DATABASEPATH "DatabasePath" #define WIN_PATH_HOSTS "\\hosts" #define SEARCHLIST_KEY "SearchList" #define PRIMARYDNSSUFFIX_KEY "PrimaryDNSSuffix" #define INTERFACES_KEY "Interfaces" #define DOMAIN_KEY "Domain" #define DHCPDOMAIN_KEY "DhcpDomain" #elif defined(WATT32) #define PATH_RESOLV_CONF "/dev/ENV/etc/resolv.conf" #elif defined(NETWARE) #define PATH_RESOLV_CONF "sys:/etc/resolv.cfg" #define PATH_HOSTS "sys:/etc/hosts" #elif defined(__riscos__) #define PATH_HOSTS "InetDBase:Hosts" #else #define PATH_RESOLV_CONF "/etc/resolv.conf" #ifdef ETC_INET #define PATH_HOSTS "/etc/inet/hosts" #else #define PATH_HOSTS "/etc/hosts" #endif #endif #define ARES_ID_KEY_LEN 31 #include "ares_ipv6.h" #include "ares_llist.h" #ifndef HAVE_GETENV # include "ares_getenv.h" # define getenv(ptr) ares_getenv(ptr) #endif #include "ares_strdup.h" #include "ares_strsplit.h" #ifndef HAVE_STRCASECMP # include "ares_strcasecmp.h" # define strcasecmp(p1,p2) ares_strcasecmp(p1,p2) #endif #ifndef HAVE_STRNCASECMP # include "ares_strcasecmp.h" # define strncasecmp(p1,p2,n) ares_strncasecmp(p1,p2,n) #endif #ifndef HAVE_WRITEV # include "ares_writev.h" # define writev(s,ptr,cnt) ares_writev(s,ptr,cnt) #endif /********* EDNS defines section ******/ #define EDNSPACKETSZ 1280 /* Reasonable UDP payload size, as suggested in RFC2671 */ #define MAXENDSSZ 4096 /* Maximum (local) limit for edns packet size */ #define EDNSFIXEDSZ 11 /* Size of EDNS header */ /********* EDNS defines section ******/ struct ares_addr { int family; union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; int udp_port; /* stored in network order */ int tcp_port; /* stored in network order */ }; #define addrV4 addr.addr4 #define addrV6 addr.addr6 struct query; struct send_request { /* Remaining data to send */ const unsigned char *data; size_t len; /* The query for which we're sending this data */ struct query* owner_query; /* The buffer we're using, if we have our own copy of the packet */ unsigned char *data_storage; /* Next request in queue */ struct send_request *next; }; struct server_state { struct ares_addr addr; ares_socket_t udp_socket; ares_socket_t tcp_socket; /* Mini-buffer for reading the length word */ unsigned char tcp_lenbuf[2]; int tcp_lenbuf_pos; int tcp_length; /* Buffer for reading actual TCP data */ unsigned char *tcp_buffer; int tcp_buffer_pos; /* TCP output queue */ struct send_request *qhead; struct send_request *qtail; /* Which incarnation of this connection is this? We don't want to * retransmit requests into the very same socket, but if the server * closes on us and we re-open the connection, then we do want to * re-send. */ int tcp_connection_generation; /* Circular, doubly-linked list of outstanding queries to this server */ struct list_node queries_to_server; /* Link back to owning channel */ ares_channel channel; /* Is this server broken? We mark connections as broken when a * request that is queued for sending times out. */ int is_broken; }; /* State to represent a DNS query */ struct query { /* Query ID from qbuf, for faster lookup, and current timeout */ unsigned short qid; struct timeval timeout; /* * Links for the doubly-linked lists in which we insert a query. * These circular, doubly-linked lists that are hash-bucketed based * the attributes we care about, help making most important * operations O(1). */ struct list_node queries_by_qid; /* hopefully in same cache line as qid */ struct list_node queries_by_timeout; struct list_node queries_to_server; struct list_node all_queries; /* Query buf with length at beginning, for TCP transmission */ unsigned char *tcpbuf; int tcplen; /* Arguments passed to ares_send() (qbuf points into tcpbuf) */ const unsigned char *qbuf; int qlen; ares_callback callback; void *arg; /* Query status */ int try_count; /* Number of times we tried this query already. */ int server; /* Server this query has last been sent to. */ struct query_server_info *server_info; /* per-server state */ int using_tcp; int error_status; int timeouts; /* number of timeouts we saw for this request */ }; /* Per-server state for a query */ struct query_server_info { int skip_server; /* should we skip server, due to errors, etc? */ int tcp_connection_generation; /* into which TCP connection did we send? */ }; /* An IP address pattern; matches an IP address X if X & mask == addr */ #define PATTERN_MASK 0x1 #define PATTERN_CIDR 0x2 struct apattern { union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; union { struct in_addr addr4; struct ares_in6_addr addr6; unsigned short bits; } mask; int family; unsigned short type; }; typedef struct rc4_key { unsigned char state[256]; unsigned char x; unsigned char y; } rc4_key; struct ares_channeldata { /* Configuration data */ int flags; int timeout; /* in milliseconds */ int tries; int ndots; int rotate; /* if true, all servers specified are used */ int udp_port; /* stored in network order */ int tcp_port; /* stored in network order */ int socket_send_buffer_size; int socket_receive_buffer_size; char **domains; int ndomains; struct apattern *sortlist; int nsort; char *lookups; int ednspsz; /* For binding to local devices and/or IP addresses. Leave * them null/zero for no binding. */ char local_dev_name[32]; unsigned int local_ip4; unsigned char local_ip6[16]; int optmask; /* the option bitfield passed in at init time */ /* Server addresses and communications state */ struct server_state *servers; int nservers; /* ID to use for next query */ unsigned short next_id; /* key to use when generating new ids */ rc4_key id_key; /* Generation number to use for the next TCP socket open/close */ int tcp_connection_generation; /* The time at which we last called process_timeouts(). Uses integer seconds just to draw the line somewhere. */ time_t last_timeout_processed; /* Last server we sent a query to. */ int last_server; /* Circular, doubly-linked list of queries, bucketed various ways.... */ /* All active queries in a single list: */ struct list_node all_queries; /* Queries bucketed by qid, for quickly dispatching DNS responses: */ #define ARES_QID_TABLE_SIZE 2048 struct list_node queries_by_qid[ARES_QID_TABLE_SIZE]; /* Queries bucketed by timeout, for quickly handling timeouts: */ #define ARES_TIMEOUT_TABLE_SIZE 1024 struct list_node queries_by_timeout[ARES_TIMEOUT_TABLE_SIZE]; ares_sock_state_cb sock_state_cb; void *sock_state_cb_data; ares_sock_create_callback sock_create_cb; void *sock_create_cb_data; ares_sock_config_callback sock_config_cb; void *sock_config_cb_data; const struct ares_socket_functions * sock_funcs; void *sock_func_cb_data; /* Path for resolv.conf file, configurable via ares_options */ char *resolvconf_path; }; /* Does the domain end in ".onion" or ".onion."? Case-insensitive. */ int ares__is_onion_domain(const char *name); /* Memory management functions */ extern void *(*ares_malloc)(size_t size); extern void *(*ares_realloc)(void *ptr, size_t size); extern void (*ares_free)(void *ptr); /* return true if now is exactly check time or later */ int ares__timedout(struct timeval *now, struct timeval *check); void ares__send_query(ares_channel channel, struct query *query, struct timeval *now); void ares__close_sockets(ares_channel channel, struct server_state *server); int ares__get_hostent(FILE *fp, int family, struct hostent **host); int ares__read_line(FILE *fp, char **buf, size_t *bufsize); void ares__free_query(struct query *query); unsigned short ares__generate_new_id(rc4_key* key); struct timeval ares__tvnow(void); int ares__expand_name_for_response(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen); void ares__init_servers_state(ares_channel channel); void ares__destroy_servers_state(ares_channel channel); #if 0 /* Not used */ long ares__tvdiff(struct timeval t1, struct timeval t2); #endif void ares__socket_close(ares_channel, ares_socket_t); #define ARES_SWAP_BYTE(a,b) \ { unsigned char swapByte = *(a); *(a) = *(b); *(b) = swapByte; } #define SOCK_STATE_CALLBACK(c, s, r, w) \ do { \ if ((c)->sock_state_cb) \ (c)->sock_state_cb((c)->sock_state_cb_data, (s), (r), (w)); \ } WHILE_FALSE #ifdef CURLDEBUG /* This is low-level hard-hacking memory leak tracking and similar. Using the libcurl lowlevel code from within library is ugly and only works when c-ares is built and linked with a similarly curldebug-enabled libcurl, but we do this anyway for convenience. */ #define HEADER_CURL_SETUP_ONCE_H #include "../lib/memdebug.h" #endif #endif /* __ARES_PRIVATE_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_process.c000066400000000000000000001333051360572117400223710ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004-2017 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_SYS_UIO_H # include #endif #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_NETINET_TCP_H # include #endif #ifdef HAVE_NETDB_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef NETWARE # include #endif #include #include #include #include "ares.h" #include "ares_dns.h" #include "ares_nowarn.h" #include "ares_private.h" static int try_again(int errnum); static void write_tcp_data(ares_channel channel, fd_set *write_fds, ares_socket_t write_fd, struct timeval *now); static void read_tcp_data(ares_channel channel, fd_set *read_fds, ares_socket_t read_fd, struct timeval *now); static void read_udp_packets(ares_channel channel, fd_set *read_fds, ares_socket_t read_fd, struct timeval *now); static void advance_tcp_send_queue(ares_channel channel, int whichserver, ares_ssize_t num_bytes); static void process_timeouts(ares_channel channel, struct timeval *now); static void process_broken_connections(ares_channel channel, struct timeval *now); static void process_answer(ares_channel channel, unsigned char *abuf, int alen, int whichserver, int tcp, struct timeval *now); static void handle_error(ares_channel channel, int whichserver, struct timeval *now); static void skip_server(ares_channel channel, struct query *query, int whichserver); static void next_server(ares_channel channel, struct query *query, struct timeval *now); static int open_tcp_socket(ares_channel channel, struct server_state *server); static int open_udp_socket(ares_channel channel, struct server_state *server); static int same_questions(const unsigned char *qbuf, int qlen, const unsigned char *abuf, int alen); static int same_address(struct sockaddr *sa, struct ares_addr *aa); static void end_query(ares_channel channel, struct query *query, int status, unsigned char *abuf, int alen); /* return true if now is exactly check time or later */ int ares__timedout(struct timeval *now, struct timeval *check) { long secs = (now->tv_sec - check->tv_sec); if(secs > 0) return 1; /* yes, timed out */ if(secs < 0) return 0; /* nope, not timed out */ /* if the full seconds were identical, check the sub second parts */ return (now->tv_usec - check->tv_usec >= 0); } /* add the specific number of milliseconds to the time in the first argument */ static void timeadd(struct timeval *now, int millisecs) { now->tv_sec += millisecs/1000; now->tv_usec += (millisecs%1000)*1000; if(now->tv_usec >= 1000000) { ++(now->tv_sec); now->tv_usec -= 1000000; } } /* * generic process function */ static void processfds(ares_channel channel, fd_set *read_fds, ares_socket_t read_fd, fd_set *write_fds, ares_socket_t write_fd) { struct timeval now = ares__tvnow(); write_tcp_data(channel, write_fds, write_fd, &now); read_tcp_data(channel, read_fds, read_fd, &now); read_udp_packets(channel, read_fds, read_fd, &now); process_timeouts(channel, &now); process_broken_connections(channel, &now); } /* Something interesting happened on the wire, or there was a timeout. * See what's up and respond accordingly. */ void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds) { processfds(channel, read_fds, ARES_SOCKET_BAD, write_fds, ARES_SOCKET_BAD); } /* Something interesting happened on the wire, or there was a timeout. * See what's up and respond accordingly. */ void ares_process_fd(ares_channel channel, ares_socket_t read_fd, /* use ARES_SOCKET_BAD or valid file descriptors */ ares_socket_t write_fd) { processfds(channel, NULL, read_fd, NULL, write_fd); } /* Return 1 if the specified error number describes a readiness error, or 0 * otherwise. This is mostly for HP-UX, which could return EAGAIN or * EWOULDBLOCK. See this man page * * http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html? * manpage=/usr/share/man/man2.Z/send.2 */ static int try_again(int errnum) { #if !defined EWOULDBLOCK && !defined EAGAIN #error "Neither EWOULDBLOCK nor EAGAIN defined" #endif switch (errnum) { #ifdef EWOULDBLOCK case EWOULDBLOCK: return 1; #endif #if defined EAGAIN && EAGAIN != EWOULDBLOCK case EAGAIN: return 1; #endif } return 0; } static ares_ssize_t socket_writev(ares_channel channel, ares_socket_t s, const struct iovec * vec, int len) { if (channel->sock_funcs) return channel->sock_funcs->asendv(s, vec, len, channel->sock_func_cb_data); return writev(s, vec, len); } static ares_ssize_t socket_write(ares_channel channel, ares_socket_t s, const void * data, size_t len) { if (channel->sock_funcs) { struct iovec vec; vec.iov_base = (void*)data; vec.iov_len = len; return channel->sock_funcs->asendv(s, &vec, 1, channel->sock_func_cb_data); } return swrite(s, data, len); } /* If any TCP sockets select true for writing, write out queued data * we have for them. */ static void write_tcp_data(ares_channel channel, fd_set *write_fds, ares_socket_t write_fd, struct timeval *now) { struct server_state *server; struct send_request *sendreq; struct iovec *vec; int i; ares_ssize_t scount; ares_ssize_t wcount; size_t n; if(!write_fds && (write_fd == ARES_SOCKET_BAD)) /* no possible action */ return; for (i = 0; i < channel->nservers; i++) { /* Make sure server has data to send and is selected in write_fds or write_fd. */ server = &channel->servers[i]; if (!server->qhead || server->tcp_socket == ARES_SOCKET_BAD || server->is_broken) continue; if(write_fds) { if(!FD_ISSET(server->tcp_socket, write_fds)) continue; } else { if(server->tcp_socket != write_fd) continue; } if(write_fds) /* If there's an error and we close this socket, then open * another with the same fd to talk to another server, then we * don't want to think that it was the new socket that was * ready. This is not disastrous, but is likely to result in * extra system calls and confusion. */ FD_CLR(server->tcp_socket, write_fds); /* Count the number of send queue items. */ n = 0; for (sendreq = server->qhead; sendreq; sendreq = sendreq->next) n++; /* Allocate iovecs so we can send all our data at once. */ vec = ares_malloc(n * sizeof(struct iovec)); if (vec) { /* Fill in the iovecs and send. */ n = 0; for (sendreq = server->qhead; sendreq; sendreq = sendreq->next) { vec[n].iov_base = (char *) sendreq->data; vec[n].iov_len = sendreq->len; n++; } wcount = socket_writev(channel, server->tcp_socket, vec, (int)n); ares_free(vec); if (wcount < 0) { if (!try_again(SOCKERRNO)) handle_error(channel, i, now); continue; } /* Advance the send queue by as many bytes as we sent. */ advance_tcp_send_queue(channel, i, wcount); } else { /* Can't allocate iovecs; just send the first request. */ sendreq = server->qhead; scount = socket_write(channel, server->tcp_socket, sendreq->data, sendreq->len); if (scount < 0) { if (!try_again(SOCKERRNO)) handle_error(channel, i, now); continue; } /* Advance the send queue by as many bytes as we sent. */ advance_tcp_send_queue(channel, i, scount); } } } /* Consume the given number of bytes from the head of the TCP send queue. */ static void advance_tcp_send_queue(ares_channel channel, int whichserver, ares_ssize_t num_bytes) { struct send_request *sendreq; struct server_state *server = &channel->servers[whichserver]; while (num_bytes > 0) { sendreq = server->qhead; if ((size_t)num_bytes >= sendreq->len) { num_bytes -= sendreq->len; server->qhead = sendreq->next; if (sendreq->data_storage) ares_free(sendreq->data_storage); ares_free(sendreq); if (server->qhead == NULL) { SOCK_STATE_CALLBACK(channel, server->tcp_socket, 1, 0); server->qtail = NULL; /* qhead is NULL so we cannot continue this loop */ break; } } else { sendreq->data += num_bytes; sendreq->len -= num_bytes; num_bytes = 0; } } } static ares_ssize_t socket_recvfrom(ares_channel channel, ares_socket_t s, void * data, size_t data_len, int flags, struct sockaddr *from, ares_socklen_t *from_len) { if (channel->sock_funcs) return channel->sock_funcs->arecvfrom(s, data, data_len, flags, from, from_len, channel->sock_func_cb_data); #ifdef HAVE_RECVFROM return recvfrom(s, data, data_len, flags, from, from_len); #else return sread(s, data, data_len); #endif } static ares_ssize_t socket_recv(ares_channel channel, ares_socket_t s, void * data, size_t data_len) { if (channel->sock_funcs) return channel->sock_funcs->arecvfrom(s, data, data_len, 0, 0, 0, channel->sock_func_cb_data); return sread(s, data, data_len); } /* If any TCP socket selects true for reading, read some data, * allocate a buffer if we finish reading the length word, and process * a packet if we finish reading one. */ static void read_tcp_data(ares_channel channel, fd_set *read_fds, ares_socket_t read_fd, struct timeval *now) { struct server_state *server; int i; ares_ssize_t count; if(!read_fds && (read_fd == ARES_SOCKET_BAD)) /* no possible action */ return; for (i = 0; i < channel->nservers; i++) { /* Make sure the server has a socket and is selected in read_fds. */ server = &channel->servers[i]; if (server->tcp_socket == ARES_SOCKET_BAD || server->is_broken) continue; if(read_fds) { if(!FD_ISSET(server->tcp_socket, read_fds)) continue; } else { if(server->tcp_socket != read_fd) continue; } if(read_fds) /* If there's an error and we close this socket, then open another * with the same fd to talk to another server, then we don't want to * think that it was the new socket that was ready. This is not * disastrous, but is likely to result in extra system calls and * confusion. */ FD_CLR(server->tcp_socket, read_fds); if (server->tcp_lenbuf_pos != 2) { /* We haven't yet read a length word, so read that (or * what's left to read of it). */ count = socket_recv(channel, server->tcp_socket, server->tcp_lenbuf + server->tcp_lenbuf_pos, 2 - server->tcp_lenbuf_pos); if (count <= 0) { if (!(count == -1 && try_again(SOCKERRNO))) handle_error(channel, i, now); continue; } server->tcp_lenbuf_pos += (int)count; if (server->tcp_lenbuf_pos == 2) { /* We finished reading the length word. Decode the * length and allocate a buffer for the data. */ server->tcp_length = server->tcp_lenbuf[0] << 8 | server->tcp_lenbuf[1]; server->tcp_buffer = ares_malloc(server->tcp_length); if (!server->tcp_buffer) { handle_error(channel, i, now); return; /* bail out on malloc failure. TODO: make this function return error codes */ } server->tcp_buffer_pos = 0; } } else { /* Read data into the allocated buffer. */ count = socket_recv(channel, server->tcp_socket, server->tcp_buffer + server->tcp_buffer_pos, server->tcp_length - server->tcp_buffer_pos); if (count <= 0) { if (!(count == -1 && try_again(SOCKERRNO))) handle_error(channel, i, now); continue; } server->tcp_buffer_pos += (int)count; if (server->tcp_buffer_pos == server->tcp_length) { /* We finished reading this answer; process it and * prepare to read another length word. */ process_answer(channel, server->tcp_buffer, server->tcp_length, i, 1, now); ares_free(server->tcp_buffer); server->tcp_buffer = NULL; server->tcp_lenbuf_pos = 0; server->tcp_buffer_pos = 0; } } } } /* If any UDP sockets select true for reading, process them. */ static void read_udp_packets(ares_channel channel, fd_set *read_fds, ares_socket_t read_fd, struct timeval *now) { struct server_state *server; int i; ares_ssize_t count; unsigned char buf[MAXENDSSZ + 1]; #ifdef HAVE_RECVFROM ares_socklen_t fromlen; union { struct sockaddr sa; struct sockaddr_in sa4; struct sockaddr_in6 sa6; } from; #endif if(!read_fds && (read_fd == ARES_SOCKET_BAD)) /* no possible action */ return; for (i = 0; i < channel->nservers; i++) { /* Make sure the server has a socket and is selected in read_fds. */ server = &channel->servers[i]; if (server->udp_socket == ARES_SOCKET_BAD || server->is_broken) continue; if(read_fds) { if(!FD_ISSET(server->udp_socket, read_fds)) continue; } else { if(server->udp_socket != read_fd) continue; } if(read_fds) /* If there's an error and we close this socket, then open * another with the same fd to talk to another server, then we * don't want to think that it was the new socket that was * ready. This is not disastrous, but is likely to result in * extra system calls and confusion. */ FD_CLR(server->udp_socket, read_fds); /* To reduce event loop overhead, read and process as many * packets as we can. */ do { if (server->udp_socket == ARES_SOCKET_BAD) count = 0; else { if (server->addr.family == AF_INET) fromlen = sizeof(from.sa4); else fromlen = sizeof(from.sa6); count = socket_recvfrom(channel, server->udp_socket, (void *)buf, sizeof(buf), 0, &from.sa, &fromlen); } if (count == -1 && try_again(SOCKERRNO)) continue; else if (count <= 0) handle_error(channel, i, now); #ifdef HAVE_RECVFROM else if (!same_address(&from.sa, &server->addr)) /* The address the response comes from does not match the address we * sent the request to. Someone may be attempting to perform a cache * poisoning attack. */ break; #endif else process_answer(channel, buf, (int)count, i, 0, now); } while (count > 0); } } /* If any queries have timed out, note the timeout and move them on. */ static void process_timeouts(ares_channel channel, struct timeval *now) { time_t t; /* the time of the timeouts we're processing */ struct query *query; struct list_node* list_head; struct list_node* list_node; /* Process all the timeouts that have fired since the last time we processed * timeouts. If things are going well, then we'll have hundreds/thousands of * queries that fall into future buckets, and only a handful of requests * that fall into the "now" bucket, so this should be quite quick. */ for (t = channel->last_timeout_processed; t <= now->tv_sec; t++) { list_head = &(channel->queries_by_timeout[t % ARES_TIMEOUT_TABLE_SIZE]); for (list_node = list_head->next; list_node != list_head; ) { query = list_node->data; list_node = list_node->next; /* in case the query gets deleted */ if (query->timeout.tv_sec && ares__timedout(now, &query->timeout)) { query->error_status = ARES_ETIMEOUT; ++query->timeouts; next_server(channel, query, now); } } } channel->last_timeout_processed = now->tv_sec; } /* Handle an answer from a server. */ static void process_answer(ares_channel channel, unsigned char *abuf, int alen, int whichserver, int tcp, struct timeval *now) { int tc, rcode, packetsz; unsigned short id; struct query *query; struct list_node* list_head; struct list_node* list_node; /* If there's no room in the answer for a header, we can't do much * with it. */ if (alen < HFIXEDSZ) return; /* Grab the query ID, truncate bit, and response code from the packet. */ id = DNS_HEADER_QID(abuf); tc = DNS_HEADER_TC(abuf); rcode = DNS_HEADER_RCODE(abuf); /* Find the query corresponding to this packet. The queries are * hashed/bucketed by query id, so this lookup should be quick. Note that * both the query id and the questions must be the same; when the query id * wraps around we can have multiple outstanding queries with the same query * id, so we need to check both the id and question. */ query = NULL; list_head = &(channel->queries_by_qid[id % ARES_QID_TABLE_SIZE]); for (list_node = list_head->next; list_node != list_head; list_node = list_node->next) { struct query *q = list_node->data; if ((q->qid == id) && same_questions(q->qbuf, q->qlen, abuf, alen)) { query = q; break; } } if (!query) return; packetsz = PACKETSZ; /* If we use EDNS and server answers with one of these RCODES, the protocol * extension is not understood by the responder. We must retry the query * without EDNS enabled. */ if (channel->flags & ARES_FLAG_EDNS) { packetsz = channel->ednspsz; if (rcode == NOTIMP || rcode == FORMERR || rcode == SERVFAIL) { int qlen = (query->tcplen - 2) - EDNSFIXEDSZ; channel->flags ^= ARES_FLAG_EDNS; query->tcplen -= EDNSFIXEDSZ; query->qlen -= EDNSFIXEDSZ; query->tcpbuf[0] = (unsigned char)((qlen >> 8) & 0xff); query->tcpbuf[1] = (unsigned char)(qlen & 0xff); DNS_HEADER_SET_ARCOUNT(query->tcpbuf + 2, 0); query->tcpbuf = ares_realloc(query->tcpbuf, query->tcplen); query->qbuf = query->tcpbuf + 2; ares__send_query(channel, query, now); return; } } /* If we got a truncated UDP packet and are not ignoring truncation, * don't accept the packet, and switch the query to TCP if we hadn't * done so already. */ if ((tc || alen > packetsz) && !tcp && !(channel->flags & ARES_FLAG_IGNTC)) { if (!query->using_tcp) { query->using_tcp = 1; ares__send_query(channel, query, now); } return; } /* Limit alen to PACKETSZ if we aren't using TCP (only relevant if we * are ignoring truncation. */ if (alen > packetsz && !tcp) alen = packetsz; /* If we aren't passing through all error packets, discard packets * with SERVFAIL, NOTIMP, or REFUSED response codes. */ if (!(channel->flags & ARES_FLAG_NOCHECKRESP)) { if (rcode == SERVFAIL || rcode == NOTIMP || rcode == REFUSED) { skip_server(channel, query, whichserver); if (query->server == whichserver) next_server(channel, query, now); return; } } end_query(channel, query, ARES_SUCCESS, abuf, alen); } /* Close all the connections that are no longer usable. */ static void process_broken_connections(ares_channel channel, struct timeval *now) { int i; for (i = 0; i < channel->nservers; i++) { struct server_state *server = &channel->servers[i]; if (server->is_broken) { handle_error(channel, i, now); } } } /* Swap the contents of two lists */ static void swap_lists(struct list_node* head_a, struct list_node* head_b) { int is_a_empty = ares__is_list_empty(head_a); int is_b_empty = ares__is_list_empty(head_b); struct list_node old_a = *head_a; struct list_node old_b = *head_b; if (is_a_empty) { ares__init_list_head(head_b); } else { *head_b = old_a; old_a.next->prev = head_b; old_a.prev->next = head_b; } if (is_b_empty) { ares__init_list_head(head_a); } else { *head_a = old_b; old_b.next->prev = head_a; old_b.prev->next = head_a; } } static void handle_error(ares_channel channel, int whichserver, struct timeval *now) { struct server_state *server; struct query *query; struct list_node list_head; struct list_node* list_node; server = &channel->servers[whichserver]; /* Reset communications with this server. */ ares__close_sockets(channel, server); /* Tell all queries talking to this server to move on and not try this * server again. We steal the current list of queries that were in-flight to * this server, since when we call next_server this can cause the queries to * be re-sent to this server, which will re-insert these queries in that * same server->queries_to_server list. */ ares__init_list_head(&list_head); swap_lists(&list_head, &(server->queries_to_server)); for (list_node = list_head.next; list_node != &list_head; ) { query = list_node->data; list_node = list_node->next; /* in case the query gets deleted */ assert(query->server == whichserver); skip_server(channel, query, whichserver); next_server(channel, query, now); } /* Each query should have removed itself from our temporary list as * it re-sent itself or finished up... */ assert(ares__is_list_empty(&list_head)); } static void skip_server(ares_channel channel, struct query *query, int whichserver) { /* The given server gave us problems with this query, so if we have the * luxury of using other servers, then let's skip the potentially broken * server and just use the others. If we only have one server and we need to * retry then we should just go ahead and re-use that server, since it's our * only hope; perhaps we just got unlucky, and retrying will work (eg, the * server timed out our TCP connection just as we were sending another * request). */ if (channel->nservers > 1) { query->server_info[whichserver].skip_server = 1; } } static void next_server(ares_channel channel, struct query *query, struct timeval *now) { /* We need to try each server channel->tries times. We have channel->nservers * servers to try. In total, we need to do channel->nservers * channel->tries * attempts. Use query->try to remember how many times we already attempted * this query. Use modular arithmetic to find the next server to try. */ while (++(query->try_count) < (channel->nservers * channel->tries)) { struct server_state *server; /* Move on to the next server. */ query->server = (query->server + 1) % channel->nservers; server = &channel->servers[query->server]; /* We don't want to use this server if (1) we decided this connection is * broken, and thus about to be closed, (2) we've decided to skip this * server because of earlier errors we encountered, or (3) we already * sent this query over this exact connection. */ if (!server->is_broken && !query->server_info[query->server].skip_server && !(query->using_tcp && (query->server_info[query->server].tcp_connection_generation == server->tcp_connection_generation))) { ares__send_query(channel, query, now); return; } /* You might think that with TCP we only need one try. However, even * when using TCP, servers can time-out our connection just as we're * sending a request, or close our connection because they die, or never * send us a reply because they get wedged or tickle a bug that drops * our request. */ } /* If we are here, all attempts to perform query failed. */ end_query(channel, query, query->error_status, NULL, 0); } void ares__send_query(ares_channel channel, struct query *query, struct timeval *now) { struct send_request *sendreq; struct server_state *server; int timeplus; server = &channel->servers[query->server]; if (query->using_tcp) { /* Make sure the TCP socket for this server is set up and queue * a send request. */ if (server->tcp_socket == ARES_SOCKET_BAD) { if (open_tcp_socket(channel, server) == -1) { skip_server(channel, query, query->server); next_server(channel, query, now); return; } } sendreq = ares_malloc(sizeof(struct send_request)); if (!sendreq) { end_query(channel, query, ARES_ENOMEM, NULL, 0); return; } memset(sendreq, 0, sizeof(struct send_request)); /* To make the common case fast, we avoid copies by using the query's * tcpbuf for as long as the query is alive. In the rare case where the * query ends while it's queued for transmission, then we give the * sendreq its own copy of the request packet and put it in * sendreq->data_storage. */ sendreq->data_storage = NULL; sendreq->data = query->tcpbuf; sendreq->len = query->tcplen; sendreq->owner_query = query; sendreq->next = NULL; if (server->qtail) server->qtail->next = sendreq; else { SOCK_STATE_CALLBACK(channel, server->tcp_socket, 1, 1); server->qhead = sendreq; } server->qtail = sendreq; query->server_info[query->server].tcp_connection_generation = server->tcp_connection_generation; } else { if (server->udp_socket == ARES_SOCKET_BAD) { if (open_udp_socket(channel, server) == -1) { skip_server(channel, query, query->server); next_server(channel, query, now); return; } } if (socket_write(channel, server->udp_socket, query->qbuf, query->qlen) == -1) { /* FIXME: Handle EAGAIN here since it likely can happen. */ skip_server(channel, query, query->server); next_server(channel, query, now); return; } } /* For each trip through the entire server list, double the channel's * assigned timeout, avoiding overflow. If channel->timeout is negative, * leave it as-is, even though that should be impossible here. */ timeplus = channel->timeout; { /* How many times do we want to double it? Presume sane values here. */ const int shift = query->try_count / channel->nservers; /* Is there enough room to shift timeplus left that many times? * * To find out, confirm that all of the bits we'll shift away are zero. * Stop considering a shift if we get to the point where we could shift * a 1 into the sign bit (i.e. when shift is within two of the bit * count). * * This has the side benefit of leaving negative numbers unchanged. */ if(shift <= (int)(sizeof(int) * CHAR_BIT - 1) && (timeplus >> (sizeof(int) * CHAR_BIT - 1 - shift)) == 0) { timeplus <<= shift; } } query->timeout = *now; timeadd(&query->timeout, timeplus); /* Keep track of queries bucketed by timeout, so we can process * timeout events quickly. */ ares__remove_from_list(&(query->queries_by_timeout)); ares__insert_in_list( &(query->queries_by_timeout), &(channel->queries_by_timeout[query->timeout.tv_sec % ARES_TIMEOUT_TABLE_SIZE])); /* Keep track of queries bucketed by server, so we can process server * errors quickly. */ ares__remove_from_list(&(query->queries_to_server)); ares__insert_in_list(&(query->queries_to_server), &(server->queries_to_server)); } /* * setsocknonblock sets the given socket to either blocking or non-blocking * mode based on the 'nonblock' boolean argument. This function is highly * portable. */ static int setsocknonblock(ares_socket_t sockfd, /* operate on this */ int nonblock /* TRUE or FALSE */) { #if defined(USE_BLOCKING_SOCKETS) return 0; /* returns success */ #elif defined(HAVE_FCNTL_O_NONBLOCK) /* most recent unix versions */ int flags; flags = fcntl(sockfd, F_GETFL, 0); if (FALSE != nonblock) return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); else return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK)); /* LCOV_EXCL_LINE */ #elif defined(HAVE_IOCTL_FIONBIO) /* older unix versions */ int flags = nonblock ? 1 : 0; return ioctl(sockfd, FIONBIO, &flags); #elif defined(HAVE_IOCTLSOCKET_FIONBIO) #ifdef WATT32 char flags = nonblock ? 1 : 0; #else /* Windows */ unsigned long flags = nonblock ? 1UL : 0UL; #endif return ioctlsocket(sockfd, FIONBIO, &flags); #elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO) /* Amiga */ long flags = nonblock ? 1L : 0L; return IoctlSocket(sockfd, FIONBIO, flags); #elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK) /* BeOS */ long b = nonblock ? 1L : 0L; return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b)); #else # error "no non-blocking method was found/used/set" #endif } static int configure_socket(ares_socket_t s, int family, ares_channel channel) { union { struct sockaddr sa; struct sockaddr_in sa4; struct sockaddr_in6 sa6; } local; /* do not set options for user-managed sockets */ if (channel->sock_funcs) return 0; (void)setsocknonblock(s, TRUE); #if defined(FD_CLOEXEC) && !defined(MSDOS) /* Configure the socket fd as close-on-exec. */ if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) return -1; /* LCOV_EXCL_LINE */ #endif /* Set the socket's send and receive buffer sizes. */ if ((channel->socket_send_buffer_size > 0) && setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void *)&channel->socket_send_buffer_size, sizeof(channel->socket_send_buffer_size)) == -1) return -1; if ((channel->socket_receive_buffer_size > 0) && setsockopt(s, SOL_SOCKET, SO_RCVBUF, (void *)&channel->socket_receive_buffer_size, sizeof(channel->socket_receive_buffer_size)) == -1) return -1; #ifdef SO_BINDTODEVICE if (channel->local_dev_name[0]) { if (setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, channel->local_dev_name, sizeof(channel->local_dev_name))) { /* Only root can do this, and usually not fatal if it doesn't work, so */ /* just continue on. */ } } #endif if (family == AF_INET) { if (channel->local_ip4) { memset(&local.sa4, 0, sizeof(local.sa4)); local.sa4.sin_family = AF_INET; local.sa4.sin_addr.s_addr = htonl(channel->local_ip4); if (bind(s, &local.sa, sizeof(local.sa4)) < 0) return -1; } } else if (family == AF_INET6) { if (memcmp(channel->local_ip6, &ares_in6addr_any, sizeof(channel->local_ip6)) != 0) { memset(&local.sa6, 0, sizeof(local.sa6)); local.sa6.sin6_family = AF_INET6; memcpy(&local.sa6.sin6_addr, channel->local_ip6, sizeof(channel->local_ip6)); if (bind(s, &local.sa, sizeof(local.sa6)) < 0) return -1; } } return 0; } static ares_socket_t open_socket(ares_channel channel, int af, int type, int protocol) { if (channel->sock_funcs != 0) return channel->sock_funcs->asocket(af, type, protocol, channel->sock_func_cb_data); return socket(af, type, protocol); } static int connect_socket(ares_channel channel, ares_socket_t sockfd, const struct sockaddr * addr, ares_socklen_t addrlen) { if (channel->sock_funcs != 0) return channel->sock_funcs->aconnect(sockfd, addr, addrlen, channel->sock_func_cb_data); return connect(sockfd, addr, addrlen); } static int open_tcp_socket(ares_channel channel, struct server_state *server) { ares_socket_t s; int opt; ares_socklen_t salen; union { struct sockaddr_in sa4; struct sockaddr_in6 sa6; } saddr; struct sockaddr *sa; switch (server->addr.family) { case AF_INET: sa = (void *)&saddr.sa4; salen = sizeof(saddr.sa4); memset(sa, 0, salen); saddr.sa4.sin_family = AF_INET; if (server->addr.tcp_port) { saddr.sa4.sin_port = aresx_sitous(server->addr.tcp_port); } else { saddr.sa4.sin_port = aresx_sitous(channel->tcp_port); } memcpy(&saddr.sa4.sin_addr, &server->addr.addrV4, sizeof(server->addr.addrV4)); break; case AF_INET6: sa = (void *)&saddr.sa6; salen = sizeof(saddr.sa6); memset(sa, 0, salen); saddr.sa6.sin6_family = AF_INET6; if (server->addr.tcp_port) { saddr.sa6.sin6_port = aresx_sitous(server->addr.tcp_port); } else { saddr.sa6.sin6_port = aresx_sitous(channel->tcp_port); } memcpy(&saddr.sa6.sin6_addr, &server->addr.addrV6, sizeof(server->addr.addrV6)); break; default: return -1; /* LCOV_EXCL_LINE */ } /* Acquire a socket. */ s = open_socket(channel, server->addr.family, SOCK_STREAM, 0); if (s == ARES_SOCKET_BAD) return -1; /* Configure it. */ if (configure_socket(s, server->addr.family, channel) < 0) { ares__socket_close(channel, s); return -1; } #ifdef TCP_NODELAY /* * Disable the Nagle algorithm (only relevant for TCP sockets, and thus not * in configure_socket). In general, in DNS lookups we're pretty much * interested in firing off a single request and then waiting for a reply, * so batching isn't very interesting. */ opt = 1; if (channel->sock_funcs == 0 && setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) == -1) { ares__socket_close(channel, s); return -1; } #endif if (channel->sock_config_cb) { int err = channel->sock_config_cb(s, SOCK_STREAM, channel->sock_config_cb_data); if (err < 0) { ares__socket_close(channel, s); return err; } } /* Connect to the server. */ if (connect_socket(channel, s, sa, salen) == -1) { int err = SOCKERRNO; if (err != EINPROGRESS && err != EWOULDBLOCK) { ares__socket_close(channel, s); return -1; } } if (channel->sock_create_cb) { int err = channel->sock_create_cb(s, SOCK_STREAM, channel->sock_create_cb_data); if (err < 0) { ares__socket_close(channel, s); return err; } } SOCK_STATE_CALLBACK(channel, s, 1, 0); server->tcp_buffer_pos = 0; server->tcp_socket = s; server->tcp_connection_generation = ++channel->tcp_connection_generation; return 0; } static int open_udp_socket(ares_channel channel, struct server_state *server) { ares_socket_t s; ares_socklen_t salen; union { struct sockaddr_in sa4; struct sockaddr_in6 sa6; } saddr; struct sockaddr *sa; switch (server->addr.family) { case AF_INET: sa = (void *)&saddr.sa4; salen = sizeof(saddr.sa4); memset(sa, 0, salen); saddr.sa4.sin_family = AF_INET; if (server->addr.udp_port) { saddr.sa4.sin_port = aresx_sitous(server->addr.udp_port); } else { saddr.sa4.sin_port = aresx_sitous(channel->udp_port); } memcpy(&saddr.sa4.sin_addr, &server->addr.addrV4, sizeof(server->addr.addrV4)); break; case AF_INET6: sa = (void *)&saddr.sa6; salen = sizeof(saddr.sa6); memset(sa, 0, salen); saddr.sa6.sin6_family = AF_INET6; if (server->addr.udp_port) { saddr.sa6.sin6_port = aresx_sitous(server->addr.udp_port); } else { saddr.sa6.sin6_port = aresx_sitous(channel->udp_port); } memcpy(&saddr.sa6.sin6_addr, &server->addr.addrV6, sizeof(server->addr.addrV6)); break; default: return -1; /* LCOV_EXCL_LINE */ } /* Acquire a socket. */ s = open_socket(channel, server->addr.family, SOCK_DGRAM, 0); if (s == ARES_SOCKET_BAD) return -1; /* Set the socket non-blocking. */ if (configure_socket(s, server->addr.family, channel) < 0) { ares__socket_close(channel, s); return -1; } if (channel->sock_config_cb) { int err = channel->sock_config_cb(s, SOCK_DGRAM, channel->sock_config_cb_data); if (err < 0) { ares__socket_close(channel, s); return err; } } /* Connect to the server. */ if (connect_socket(channel, s, sa, salen) == -1) { int err = SOCKERRNO; if (err != EINPROGRESS && err != EWOULDBLOCK) { ares__socket_close(channel, s); return -1; } } if (channel->sock_create_cb) { int err = channel->sock_create_cb(s, SOCK_DGRAM, channel->sock_create_cb_data); if (err < 0) { ares__socket_close(channel, s); return err; } } SOCK_STATE_CALLBACK(channel, s, 1, 0); server->udp_socket = s; return 0; } static int same_questions(const unsigned char *qbuf, int qlen, const unsigned char *abuf, int alen) { struct { const unsigned char *p; int qdcount; char *name; long namelen; int type; int dnsclass; } q, a; int i, j; if (qlen < HFIXEDSZ || alen < HFIXEDSZ) return 0; /* Extract qdcount from the request and reply buffers and compare them. */ q.qdcount = DNS_HEADER_QDCOUNT(qbuf); a.qdcount = DNS_HEADER_QDCOUNT(abuf); if (q.qdcount != a.qdcount) return 0; /* For each question in qbuf, find it in abuf. */ q.p = qbuf + HFIXEDSZ; for (i = 0; i < q.qdcount; i++) { /* Decode the question in the query. */ if (ares_expand_name(q.p, qbuf, qlen, &q.name, &q.namelen) != ARES_SUCCESS) return 0; q.p += q.namelen; if (q.p + QFIXEDSZ > qbuf + qlen) { ares_free(q.name); return 0; } q.type = DNS_QUESTION_TYPE(q.p); q.dnsclass = DNS_QUESTION_CLASS(q.p); q.p += QFIXEDSZ; /* Search for this question in the answer. */ a.p = abuf + HFIXEDSZ; for (j = 0; j < a.qdcount; j++) { /* Decode the question in the answer. */ if (ares_expand_name(a.p, abuf, alen, &a.name, &a.namelen) != ARES_SUCCESS) { ares_free(q.name); return 0; } a.p += a.namelen; if (a.p + QFIXEDSZ > abuf + alen) { ares_free(q.name); ares_free(a.name); return 0; } a.type = DNS_QUESTION_TYPE(a.p); a.dnsclass = DNS_QUESTION_CLASS(a.p); a.p += QFIXEDSZ; /* Compare the decoded questions. */ if (strcasecmp(q.name, a.name) == 0 && q.type == a.type && q.dnsclass == a.dnsclass) { ares_free(a.name); break; } ares_free(a.name); } ares_free(q.name); if (j == a.qdcount) return 0; } return 1; } static int same_address(struct sockaddr *sa, struct ares_addr *aa) { void *addr1; void *addr2; if (sa->sa_family == aa->family) { switch (aa->family) { case AF_INET: addr1 = &aa->addrV4; addr2 = &((struct sockaddr_in *)sa)->sin_addr; if (memcmp(addr1, addr2, sizeof(aa->addrV4)) == 0) return 1; /* match */ break; case AF_INET6: addr1 = &aa->addrV6; addr2 = &((struct sockaddr_in6 *)sa)->sin6_addr; if (memcmp(addr1, addr2, sizeof(aa->addrV6)) == 0) return 1; /* match */ break; default: break; /* LCOV_EXCL_LINE */ } } return 0; /* different */ } static void end_query (ares_channel channel, struct query *query, int status, unsigned char *abuf, int alen) { int i; /* First we check to see if this query ended while one of our send * queues still has pointers to it. */ for (i = 0; i < channel->nservers; i++) { struct server_state *server = &channel->servers[i]; struct send_request *sendreq; for (sendreq = server->qhead; sendreq; sendreq = sendreq->next) if (sendreq->owner_query == query) { sendreq->owner_query = NULL; assert(sendreq->data_storage == NULL); if (status == ARES_SUCCESS) { /* We got a reply for this query, but this queued sendreq * points into this soon-to-be-gone query's tcpbuf. Probably * this means we timed out and queued the query for * retransmission, then received a response before actually * retransmitting. This is perfectly fine, so we want to keep * the connection running smoothly if we can. But in the worst * case we may have sent only some prefix of the query, with * some suffix of the query left to send. Also, the buffer may * be queued on multiple queues. To prevent dangling pointers * to the query's tcpbuf and handle these cases, we just give * such sendreqs their own copy of the query packet. */ sendreq->data_storage = ares_malloc(sendreq->len); if (sendreq->data_storage != NULL) { memcpy(sendreq->data_storage, sendreq->data, sendreq->len); sendreq->data = sendreq->data_storage; } } if ((status != ARES_SUCCESS) || (sendreq->data_storage == NULL)) { /* We encountered an error (probably a timeout, suggesting the * DNS server we're talking to is probably unreachable, * wedged, or severely overloaded) or we couldn't copy the * request, so mark the connection as broken. When we get to * process_broken_connections() we'll close the connection and * try to re-send requests to another server. */ server->is_broken = 1; /* Just to be paranoid, zero out this sendreq... */ sendreq->data = NULL; sendreq->len = 0; } } } /* Invoke the callback */ query->callback(query->arg, status, query->timeouts, abuf, alen); ares__free_query(query); /* Simple cleanup policy: if no queries are remaining, close all network * sockets unless STAYOPEN is set. */ if (!(channel->flags & ARES_FLAG_STAYOPEN) && ares__is_list_empty(&(channel->all_queries))) { for (i = 0; i < channel->nservers; i++) ares__close_sockets(channel, &channel->servers[i]); } } void ares__free_query(struct query *query) { /* Remove the query from all the lists in which it is linked */ ares__remove_from_list(&(query->queries_by_qid)); ares__remove_from_list(&(query->queries_by_timeout)); ares__remove_from_list(&(query->queries_to_server)); ares__remove_from_list(&(query->all_queries)); /* Zero out some important stuff, to help catch bugs */ query->callback = NULL; query->arg = NULL; /* Deallocate the memory associated with the query */ ares_free(query->tcpbuf); ares_free(query->server_info); ares_free(query); } void ares__socket_close(ares_channel channel, ares_socket_t s) { if (channel->sock_funcs) channel->sock_funcs->aclose(s, channel->sock_func_cb_data); else sclose(s); } pycares-pycares-3.1.1/deps/c-ares/src/ares_query.c000066400000000000000000000116771360572117400220670ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_private.h" struct qquery { ares_callback callback; void *arg; }; static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, int alen); static void rc4(rc4_key* key, unsigned char *buffer_ptr, int buffer_len) { unsigned char x; unsigned char y; unsigned char* state; unsigned char xorIndex; short counter; x = key->x; y = key->y; state = &key->state[0]; for(counter = 0; counter < buffer_len; counter ++) { x = (unsigned char)((x + 1) % 256); y = (unsigned char)((state[x] + y) % 256); ARES_SWAP_BYTE(&state[x], &state[y]); xorIndex = (unsigned char)((state[x] + state[y]) % 256); buffer_ptr[counter] = (unsigned char)(buffer_ptr[counter]^state[xorIndex]); } key->x = x; key->y = y; } static struct query* find_query_by_id(ares_channel channel, unsigned short id) { unsigned short qid; struct list_node* list_head; struct list_node* list_node; DNS_HEADER_SET_QID(((unsigned char*)&qid), id); /* Find the query corresponding to this packet. */ list_head = &(channel->queries_by_qid[qid % ARES_QID_TABLE_SIZE]); for (list_node = list_head->next; list_node != list_head; list_node = list_node->next) { struct query *q = list_node->data; if (q->qid == qid) return q; } return NULL; } /* a unique query id is generated using an rc4 key. Since the id may already be used by a running query (as infrequent as it may be), a lookup is performed per id generation. In practice this search should happen only once per newly generated id */ static unsigned short generate_unique_id(ares_channel channel) { unsigned short id; do { id = ares__generate_new_id(&channel->id_key); } while (find_query_by_id(channel, id)); return (unsigned short)id; } unsigned short ares__generate_new_id(rc4_key* key) { unsigned short r=0; rc4(key, (unsigned char *)&r, sizeof(r)); return r; } void ares_query(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg) { struct qquery *qquery; unsigned char *qbuf; int qlen, rd, status; /* Compose the query. */ rd = !(channel->flags & ARES_FLAG_NORECURSE); status = ares_create_query(name, dnsclass, type, channel->next_id, rd, &qbuf, &qlen, (channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : 0); if (status != ARES_SUCCESS) { if (qbuf != NULL) ares_free(qbuf); callback(arg, status, 0, NULL, 0); return; } channel->next_id = generate_unique_id(channel); /* Allocate and fill in the query structure. */ qquery = ares_malloc(sizeof(struct qquery)); if (!qquery) { ares_free_string(qbuf); callback(arg, ARES_ENOMEM, 0, NULL, 0); return; } qquery->callback = callback; qquery->arg = arg; /* Send it off. qcallback will be called when we get an answer. */ ares_send(channel, qbuf, qlen, qcallback, qquery); ares_free_string(qbuf); } static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, int alen) { struct qquery *qquery = (struct qquery *) arg; unsigned int ancount; int rcode; if (status != ARES_SUCCESS) qquery->callback(qquery->arg, status, timeouts, abuf, alen); else { /* Pull the response code and answer count from the packet. */ rcode = DNS_HEADER_RCODE(abuf); ancount = DNS_HEADER_ANCOUNT(abuf); /* Convert errors. */ switch (rcode) { case NOERROR: status = (ancount > 0) ? ARES_SUCCESS : ARES_ENODATA; break; case FORMERR: status = ARES_EFORMERR; break; case SERVFAIL: status = ARES_ESERVFAIL; break; case NXDOMAIN: status = ARES_ENOTFOUND; break; case NOTIMP: status = ARES_ENOTIMP; break; case REFUSED: status = ARES_EREFUSED; break; } qquery->callback(qquery->arg, status, timeouts, abuf, alen); } ares_free(qquery); } pycares-pycares-3.1.1/deps/c-ares/src/ares_rules.h000066400000000000000000000102621360572117400220460ustar00rootroot00000000000000#ifndef __CARES_RULES_H #define __CARES_RULES_H /* Copyright (C) 2009 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* ================================================================ */ /* COMPILE TIME SANITY CHECKS */ /* ================================================================ */ /* * NOTE 1: * ------- * * All checks done in this file are intentionally placed in a public * header file which is pulled by ares.h when an application is * being built using an already built c-ares library. Additionally * this file is also included and used when building the library. * * If compilation fails on this file it is certainly sure that the * problem is elsewhere. It could be a problem in the ares_build.h * header file, or simply that you are using different compilation * settings than those used to build the library. * * Nothing in this file is intended to be modified or adjusted by the * c-ares library user nor by the c-ares library builder. * * Do not deactivate any check, these are done to make sure that the * library is properly built and used. * * You can find further help on the c-ares development mailing list: * http://cool.haxx.se/mailman/listinfo/c-ares/ * * NOTE 2 * ------ * * Some of the following compile time checks are based on the fact * that the dimension of a constant array can not be a negative one. * In this way if the compile time verification fails, the compilation * will fail issuing an error. The error description wording is compiler * dependent but it will be quite similar to one of the following: * * "negative subscript or subscript is too large" * "array must have at least one element" * "-1 is an illegal array size" * "size of array is negative" * * If you are building an application which tries to use an already * built c-ares library and you are getting this kind of errors on * this file, it is a clear indication that there is a mismatch between * how the library was built and how you are trying to use it for your * application. Your already compiled or binary library provider is the * only one who can give you the details you need to properly use it. */ /* * Verify that some macros are actually defined. */ #ifndef CARES_TYPEOF_ARES_SOCKLEN_T # error "CARES_TYPEOF_ARES_SOCKLEN_T definition is missing!" Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_is_missing #endif /* * Macros private to this header file. */ #define CareschkszEQ(t, s) sizeof(t) == s ? 1 : -1 #define CareschkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1 /* * Verify that the size previously defined and expected for * ares_socklen_t is actually the same as the one reported * by sizeof() at compile time. */ typedef char __cares_rule_02__ [CareschkszEQ(ares_socklen_t, sizeof(CARES_TYPEOF_ARES_SOCKLEN_T))]; /* * Verify at compile time that the size of ares_socklen_t as reported * by sizeof() is greater or equal than the one reported for int for * the current compilation. */ typedef char __cares_rule_03__ [CareschkszGE(ares_socklen_t, int)]; /* ================================================================ */ /* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */ /* ================================================================ */ /* * Get rid of macros private to this header file. */ #undef CareschkszEQ #undef CareschkszGE /* * Get rid of macros not intended to exist beyond this point. */ #undef CARES_PULL_WS2TCPIP_H #undef CARES_PULL_SYS_TYPES_H #undef CARES_PULL_SYS_SOCKET_H #undef CARES_TYPEOF_ARES_SOCKLEN_T #endif /* __CARES_RULES_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_search.c000066400000000000000000000232241360572117400221560ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_STRINGS_H # include #endif #include "ares.h" #include "ares_private.h" struct search_query { /* Arguments passed to ares_search */ ares_channel channel; char *name; /* copied into an allocated buffer */ int dnsclass; int type; ares_callback callback; void *arg; int status_as_is; /* error status from trying as-is */ int next_domain; /* next search domain to try */ int trying_as_is; /* current query is for name as-is */ int timeouts; /* number of timeouts we saw for this request */ int ever_got_nodata; /* did we ever get ARES_ENODATA along the way? */ }; static void search_callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen); static void end_squery(struct search_query *squery, int status, unsigned char *abuf, int alen); static int cat_domain(const char *name, const char *domain, char **s); STATIC_TESTABLE int single_domain(ares_channel channel, const char *name, char **s); void ares_search(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg) { struct search_query *squery; char *s; const char *p; int status, ndots; /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */ if (ares__is_onion_domain(name)) { callback(arg, ARES_ENOTFOUND, 0, NULL, 0); return; } /* If name only yields one domain to search, then we don't have * to keep extra state, so just do an ares_query(). */ status = single_domain(channel, name, &s); if (status != ARES_SUCCESS) { callback(arg, status, 0, NULL, 0); return; } if (s) { ares_query(channel, s, dnsclass, type, callback, arg); ares_free(s); return; } /* Allocate a search_query structure to hold the state necessary for * doing multiple lookups. */ squery = ares_malloc(sizeof(struct search_query)); if (!squery) { callback(arg, ARES_ENOMEM, 0, NULL, 0); return; } squery->channel = channel; squery->name = ares_strdup(name); if (!squery->name) { ares_free(squery); callback(arg, ARES_ENOMEM, 0, NULL, 0); return; } squery->dnsclass = dnsclass; squery->type = type; squery->status_as_is = -1; squery->callback = callback; squery->arg = arg; squery->timeouts = 0; squery->ever_got_nodata = 0; /* Count the number of dots in name. */ ndots = 0; for (p = name; *p; p++) { if (*p == '.') ndots++; } /* If ndots is at least the channel ndots threshold (usually 1), * then we try the name as-is first. Otherwise, we try the name * as-is last. */ if (ndots >= channel->ndots) { /* Try the name as-is first. */ squery->next_domain = 0; squery->trying_as_is = 1; ares_query(channel, name, dnsclass, type, search_callback, squery); } else { /* Try the name as-is last; start with the first search domain. */ squery->next_domain = 1; squery->trying_as_is = 0; status = cat_domain(name, channel->domains[0], &s); if (status == ARES_SUCCESS) { ares_query(channel, s, dnsclass, type, search_callback, squery); ares_free(s); } else { /* failed, free the malloc()ed memory */ ares_free(squery->name); ares_free(squery); callback(arg, status, 0, NULL, 0); } } } static void search_callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen) { struct search_query *squery = (struct search_query *) arg; ares_channel channel = squery->channel; char *s; squery->timeouts += timeouts; /* Stop searching unless we got a non-fatal error. */ if (status != ARES_ENODATA && status != ARES_ESERVFAIL && status != ARES_ENOTFOUND) end_squery(squery, status, abuf, alen); else { /* Save the status if we were trying as-is. */ if (squery->trying_as_is) squery->status_as_is = status; /* * If we ever get ARES_ENODATA along the way, record that; if the search * should run to the very end and we got at least one ARES_ENODATA, * then callers like ares_gethostbyname() may want to try a T_A search * even if the last domain we queried for T_AAAA resource records * returned ARES_ENOTFOUND. */ if (status == ARES_ENODATA) squery->ever_got_nodata = 1; if (squery->next_domain < channel->ndomains) { /* Try the next domain. */ status = cat_domain(squery->name, channel->domains[squery->next_domain], &s); if (status != ARES_SUCCESS) end_squery(squery, status, NULL, 0); else { squery->trying_as_is = 0; squery->next_domain++; ares_query(channel, s, squery->dnsclass, squery->type, search_callback, squery); ares_free(s); } } else if (squery->status_as_is == -1) { /* Try the name as-is at the end. */ squery->trying_as_is = 1; ares_query(channel, squery->name, squery->dnsclass, squery->type, search_callback, squery); } else { if (squery->status_as_is == ARES_ENOTFOUND && squery->ever_got_nodata) { end_squery(squery, ARES_ENODATA, NULL, 0); } else end_squery(squery, squery->status_as_is, NULL, 0); } } } static void end_squery(struct search_query *squery, int status, unsigned char *abuf, int alen) { squery->callback(squery->arg, status, squery->timeouts, abuf, alen); ares_free(squery->name); ares_free(squery); } /* Concatenate two domains. */ static int cat_domain(const char *name, const char *domain, char **s) { size_t nlen = strlen(name); size_t dlen = strlen(domain); *s = ares_malloc(nlen + 1 + dlen + 1); if (!*s) return ARES_ENOMEM; memcpy(*s, name, nlen); (*s)[nlen] = '.'; memcpy(*s + nlen + 1, domain, dlen); (*s)[nlen + 1 + dlen] = 0; return ARES_SUCCESS; } /* Determine if this name only yields one query. If it does, set *s to * the string we should query, in an allocated buffer. If not, set *s * to NULL. */ STATIC_TESTABLE int single_domain(ares_channel channel, const char *name, char **s) { size_t len = strlen(name); const char *hostaliases; FILE *fp; char *line = NULL; int status; size_t linesize; const char *p, *q; int error; /* If the name contains a trailing dot, then the single query is the name * sans the trailing dot. */ if ((len > 0) && (name[len - 1] == '.')) { *s = ares_strdup(name); return (*s) ? ARES_SUCCESS : ARES_ENOMEM; } if (!(channel->flags & ARES_FLAG_NOALIASES) && !strchr(name, '.')) { /* The name might be a host alias. */ hostaliases = getenv("HOSTALIASES"); if (hostaliases) { fp = fopen(hostaliases, "r"); if (fp) { while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { if (strncasecmp(line, name, len) != 0 || !ISSPACE(line[len])) continue; p = line + len; while (ISSPACE(*p)) p++; if (*p) { q = p + 1; while (*q && !ISSPACE(*q)) q++; *s = ares_malloc(q - p + 1); if (*s) { memcpy(*s, p, q - p); (*s)[q - p] = 0; } ares_free(line); fclose(fp); return (*s) ? ARES_SUCCESS : ARES_ENOMEM; } } ares_free(line); fclose(fp); if (status != ARES_SUCCESS && status != ARES_EOF) return status; } else { error = ERRNO; switch(error) { case ENOENT: case ESRCH: break; default: DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, strerror(error))); DEBUGF(fprintf(stderr, "Error opening file: %s\n", hostaliases)); *s = NULL; return ARES_EFILE; } } } } if (channel->flags & ARES_FLAG_NOSEARCH || channel->ndomains == 0) { /* No domain search to do; just try the name as-is. */ *s = ares_strdup(name); return (*s) ? ARES_SUCCESS : ARES_ENOMEM; } *s = NULL; return ARES_SUCCESS; } pycares-pycares-3.1.1/deps/c-ares/src/ares_send.c000066400000000000000000000101071360572117400216360ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_dns.h" #include "ares_private.h" void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen, ares_callback callback, void *arg) { struct query *query; int i, packetsz; struct timeval now; /* Verify that the query is at least long enough to hold the header. */ if (qlen < HFIXEDSZ || qlen >= (1 << 16)) { callback(arg, ARES_EBADQUERY, 0, NULL, 0); return; } /* Allocate space for query and allocated fields. */ query = ares_malloc(sizeof(struct query)); if (!query) { callback(arg, ARES_ENOMEM, 0, NULL, 0); return; } query->tcpbuf = ares_malloc(qlen + 2); if (!query->tcpbuf) { ares_free(query); callback(arg, ARES_ENOMEM, 0, NULL, 0); return; } if (channel->nservers < 1) { ares_free(query); callback(arg, ARES_ESERVFAIL, 0, NULL, 0); return; } query->server_info = ares_malloc(channel->nservers * sizeof(query->server_info[0])); if (!query->server_info) { ares_free(query->tcpbuf); ares_free(query); callback(arg, ARES_ENOMEM, 0, NULL, 0); return; } /* Compute the query ID. Start with no timeout. */ query->qid = DNS_HEADER_QID(qbuf); query->timeout.tv_sec = 0; query->timeout.tv_usec = 0; /* Form the TCP query buffer by prepending qlen (as two * network-order bytes) to qbuf. */ query->tcpbuf[0] = (unsigned char)((qlen >> 8) & 0xff); query->tcpbuf[1] = (unsigned char)(qlen & 0xff); memcpy(query->tcpbuf + 2, qbuf, qlen); query->tcplen = qlen + 2; /* Fill in query arguments. */ query->qbuf = query->tcpbuf + 2; query->qlen = qlen; query->callback = callback; query->arg = arg; /* Initialize query status. */ query->try_count = 0; /* Choose the server to send the query to. If rotation is enabled, keep track * of the next server we want to use. */ query->server = channel->last_server; if (channel->rotate == 1) channel->last_server = (channel->last_server + 1) % channel->nservers; for (i = 0; i < channel->nservers; i++) { query->server_info[i].skip_server = 0; query->server_info[i].tcp_connection_generation = 0; } packetsz = (channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : PACKETSZ; query->using_tcp = (channel->flags & ARES_FLAG_USEVC) || qlen > packetsz; query->error_status = ARES_ECONNREFUSED; query->timeouts = 0; /* Initialize our list nodes. */ ares__init_list_node(&(query->queries_by_qid), query); ares__init_list_node(&(query->queries_by_timeout), query); ares__init_list_node(&(query->queries_to_server), query); ares__init_list_node(&(query->all_queries), query); /* Chain the query into the list of all queries. */ ares__insert_in_list(&(query->all_queries), &(channel->all_queries)); /* Keep track of queries bucketed by qid, so we can process DNS * responses quickly. */ ares__insert_in_list( &(query->queries_by_qid), &(channel->queries_by_qid[query->qid % ARES_QID_TABLE_SIZE])); /* Perform the first query action. */ now = ares__tvnow(); ares__send_query(channel, query, &now); } pycares-pycares-3.1.1/deps/c-ares/src/ares_setup.h000066400000000000000000000134431360572117400220600ustar00rootroot00000000000000#ifndef HEADER_CARES_SETUP_H #define HEADER_CARES_SETUP_H /* Copyright (C) 2004 - 2012 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* * Define WIN32 when build target is Win32 API */ #if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) #define WIN32 #endif /* * Include configuration script results or hand-crafted * configuration file for platforms which lack config tool. */ #ifdef HAVE_CONFIG_H #include "ares_config.h" #else #ifdef WIN32 #include "config-win32.h" #endif #endif /* HAVE_CONFIG_H */ /* ================================================================ */ /* Definition of preprocessor macros/symbols which modify compiler */ /* behaviour or generated code characteristics must be done here, */ /* as appropriate, before any system header file is included. It is */ /* also possible to have them defined in the config file included */ /* before this point. As a result of all this we frown inclusion of */ /* system header files in our config files, avoid this at any cost. */ /* ================================================================ */ /* * AIX 4.3 and newer needs _THREAD_SAFE defined to build * proper reentrant code. Others may also need it. */ #ifdef NEED_THREAD_SAFE # ifndef _THREAD_SAFE # define _THREAD_SAFE # endif #endif /* * Tru64 needs _REENTRANT set for a few function prototypes and * things to appear in the system header files. Unixware needs it * to build proper reentrant code. Others may also need it. */ #ifdef NEED_REENTRANT # ifndef _REENTRANT # define _REENTRANT # endif #endif /* ================================================================ */ /* If you need to include a system header file for your platform, */ /* please, do it beyond the point further indicated in this file. */ /* ================================================================ */ /* * c-ares external interface definitions are also used internally, * and might also include required system header files to define them. */ #include /* * Compile time sanity checks must also be done when building the library. */ #include /* ================================================================= */ /* No system header file shall be included in this file before this */ /* point. The only allowed ones are those included from ares_build.h */ /* ================================================================= */ /* * Include header files for windows builds before redefining anything. * Use this preproessor block only to include or exclude windows.h, * winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs * to any other further and independent block. Under Cygwin things work * just as under linux (e.g. ) and the winsock headers should * never be included when __CYGWIN__ is defined. configure script takes * care of this, not defining HAVE_WINDOWS_H, HAVE_WINSOCK_H, HAVE_WINSOCK2_H, * neither HAVE_WS2TCPIP_H when __CYGWIN__ is defined. */ #ifdef HAVE_WINDOWS_H # ifndef WIN32_LEAN_AND_MEAN # define WIN32_LEAN_AND_MEAN # endif # include # ifdef HAVE_WINSOCK2_H # include # ifdef HAVE_WS2TCPIP_H # include # endif # else # ifdef HAVE_WINSOCK_H # include # endif # endif #endif /* * Define USE_WINSOCK to 2 if we have and use WINSOCK2 API, else * define USE_WINSOCK to 1 if we have and use WINSOCK API, else * undefine USE_WINSOCK. */ #undef USE_WINSOCK #ifdef HAVE_WINSOCK2_H # define USE_WINSOCK 2 #else # ifdef HAVE_WINSOCK_H # define USE_WINSOCK 1 # endif #endif /* * Work-arounds for systems without configure support */ #ifndef HAVE_CONFIG_H #if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__) #define HAVE_SYS_TIME_H #endif #if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER) #define HAVE_UNISTD_H 1 #endif #if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS) #define HAVE_SYS_UIO_H #endif #endif /* HAVE_CONFIG_H */ /* * Arg 2 type for gethostname in case it hasn't been defined in config file. */ #ifndef GETHOSTNAME_TYPE_ARG2 # ifdef USE_WINSOCK # define GETHOSTNAME_TYPE_ARG2 int # else # define GETHOSTNAME_TYPE_ARG2 size_t # endif #endif #ifdef __POCC__ # include # include # define ESRCH 3 #endif /* * Android does have the arpa/nameser.h header which is detected by configure * but it appears to be empty with recent NDK r7b / r7c, so we undefine here. */ #if (defined(ANDROID) || defined(__ANDROID__)) && defined(HAVE_ARPA_NAMESER_H) # undef HAVE_ARPA_NAMESER_H #endif /* * Recent autoconf versions define these symbols in ares_config.h. We don't * want them (since they collide with the libcurl ones when we build * --enable-debug) so we undef them again here. */ #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef VERSION #undef PACKAGE /* IPv6 compatibility */ #if !defined(HAVE_AF_INET6) #if defined(HAVE_PF_INET6) #define AF_INET6 PF_INET6 #else #define AF_INET6 AF_MAX+1 #endif #endif /* * Include macros and defines that should only be processed once. */ #ifndef __SETUP_ONCE_H #include "setup_once.h" #endif #endif /* HEADER_CARES_SETUP_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_strcasecmp.c000066400000000000000000000031501360572117400230510ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares_strcasecmp.h" #ifndef HAVE_STRCASECMP int ares_strcasecmp(const char *a, const char *b) { #if defined(HAVE_STRCMPI) return strcmpi(a, b); #elif defined(HAVE_STRICMP) return stricmp(a, b); #else size_t i; for (i = 0; i < (size_t)-1; i++) { int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i]; int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i]; if (c1 != c2) return c1-c2; if (!c1) break; } return 0; #endif } #endif #ifndef HAVE_STRNCASECMP int ares_strncasecmp(const char *a, const char *b, size_t n) { #if defined(HAVE_STRNCMPI) return strncmpi(a, b, n); #elif defined(HAVE_STRNICMP) return strnicmp(a, b, n); #else size_t i; for (i = 0; i < n; i++) { int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i]; int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i]; if (c1 != c2) return c1-c2; if (!c1) break; } return 0; #endif } #endif pycares-pycares-3.1.1/deps/c-ares/src/ares_strcasecmp.h000066400000000000000000000020071360572117400230560ustar00rootroot00000000000000#ifndef HEADER_CARES_STRCASECMP_H #define HEADER_CARES_STRCASECMP_H /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifndef HAVE_STRCASECMP extern int ares_strcasecmp(const char *a, const char *b); #endif #ifndef HAVE_STRNCASECMP extern int ares_strncasecmp(const char *a, const char *b, size_t n); #endif #endif /* HEADER_CARES_STRCASECMP_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_strdup.c000066400000000000000000000024051360572117400222300ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares_strdup.h" #include "ares.h" #include "ares_private.h" char *ares_strdup(const char *s1) { #ifdef HAVE_STRDUP if (ares_malloc == malloc) return strdup(s1); else #endif { size_t sz; char * s2; if(s1) { sz = strlen(s1); if(sz < (size_t)-1) { sz++; if(sz < ((size_t)-1) / sizeof(char)) { s2 = ares_malloc(sz * sizeof(char)); if(s2) { memcpy(s2, s1, sz * sizeof(char)); return s2; } } } } return (char *)NULL; } } pycares-pycares-3.1.1/deps/c-ares/src/ares_strdup.h000066400000000000000000000015461360572117400222420ustar00rootroot00000000000000#ifndef HEADER_CARES_STRDUP_H #define HEADER_CARES_STRDUP_H /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" extern char *ares_strdup(const char *s1); #endif /* HEADER_CARES_STRDUP_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_strerror.c000066400000000000000000000035531360572117400225760ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include #include "ares.h" const char *ares_strerror(int code) { /* Return a string literal from a table. */ const char *errtext[] = { "Successful completion", "DNS server returned answer with no data", "DNS server claims query was misformatted", "DNS server returned general failure", "Domain name not found", "DNS server does not implement requested operation", "DNS server refused query", "Misformatted DNS query", "Misformatted domain name", "Unsupported address family", "Misformatted DNS reply", "Could not contact DNS servers", "Timeout while contacting DNS servers", "End of file", "Error reading file", "Out of memory", "Channel is being destroyed", "Misformatted string", "Illegal flags specified", "Given hostname is not numeric", "Illegal hints flags specified", "c-ares library initialization not yet performed", "Error loading iphlpapi.dll", "Could not find GetNetworkParams function", "DNS query cancelled" }; if(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext))) return errtext[code]; else return "unknown"; } pycares-pycares-3.1.1/deps/c-ares/src/ares_strsplit.c000066400000000000000000000070141360572117400225740ustar00rootroot00000000000000/* Copyright (C) 2018 by John Schember * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares_strsplit.h" #include "ares.h" #include "ares_private.h" static int list_contains(char * const *list, size_t num_elem, const char *str, int insensitive) { size_t len; size_t i; len = strlen(str); for (i=0; i * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" /* Split a string on delem skipping empty elements. * * param in String to split. * param delims String of characters to treat as a delimitor. * Each character in the string is a delimitor so * there can be multiple delimitors to split on. * E.g. ", " will split on all comma's and spaces. * param make_set Have the list be a Set where there are no * duplicate entries. 1 for true, 0 or false. * param num_elm Return parameter of the number of elements * in the result array. * * returns an allocated array of allocated string elements. * */ char **ares_strsplit(const char *in, const char *delms, int make_set, size_t *num_elm); /* Frees the result returned from ares_strsplit(). */ void ares_strsplit_free(char **elms, size_t num_elm); #endif /* HEADER_CARES_STRSPLIT_H */ pycares-pycares-3.1.1/deps/c-ares/src/ares_timeout.c000066400000000000000000000052701360572117400224000ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_LIMITS_H #include #endif #include "ares.h" #include "ares_private.h" /* return time offset between now and (future) check, in milliseconds */ static long timeoffset(struct timeval *now, struct timeval *check) { return (check->tv_sec - now->tv_sec)*1000 + (check->tv_usec - now->tv_usec)/1000; } /* WARNING: Beware that this is linear in the number of outstanding * requests! You are probably far better off just calling ares_process() * once per second, rather than calling ares_timeout() to figure out * when to next call ares_process(). */ struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv, struct timeval *tvbuf) { struct query *query; struct list_node* list_head; struct list_node* list_node; struct timeval now; struct timeval nextstop; long offset, min_offset; /* No queries, no timeout (and no fetch of the current time). */ if (ares__is_list_empty(&(channel->all_queries))) return maxtv; /* Find the minimum timeout for the current set of queries. */ now = ares__tvnow(); min_offset = -1; list_head = &(channel->all_queries); for (list_node = list_head->next; list_node != list_head; list_node = list_node->next) { query = list_node->data; if (query->timeout.tv_sec == 0) continue; offset = timeoffset(&now, &query->timeout); if (offset < 0) offset = 0; if (min_offset == -1 || offset < min_offset) min_offset = offset; } /* If we found a minimum timeout and it's sooner than the one specified in * maxtv (if any), return it. Otherwise go with maxtv. */ if (min_offset != -1) { int ioffset = (min_offset > (long)INT_MAX) ? INT_MAX : (int)min_offset; nextstop.tv_sec = ioffset/1000; nextstop.tv_usec = (ioffset%1000)*1000; if (!maxtv || ares__timedout(maxtv, &nextstop)) { *tvbuf = nextstop; return tvbuf; } } return maxtv; } pycares-pycares-3.1.1/deps/c-ares/src/ares_version.c000066400000000000000000000002361360572117400223740ustar00rootroot00000000000000 #include "ares_setup.h" #include "ares.h" const char *ares_version(int *version) { if(version) *version = ARES_VERSION; return ARES_VERSION_STR; } pycares-pycares-3.1.1/deps/c-ares/src/ares_version.h000066400000000000000000000012101360572117400223720ustar00rootroot00000000000000 #ifndef ARES__VERSION_H #define ARES__VERSION_H /* This is the global package copyright */ #define ARES_COPYRIGHT "2004 - 2018 Daniel Stenberg, ." #define ARES_VERSION_MAJOR 1 #define ARES_VERSION_MINOR 15 #define ARES_VERSION_PATCH 0 #define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\ (ARES_VERSION_MINOR<<8)|\ (ARES_VERSION_PATCH)) #define ARES_VERSION_STR "1.15.0" #if (ARES_VERSION >= 0x010700) # define CARES_HAVE_ARES_LIBRARY_INIT 1 # define CARES_HAVE_ARES_LIBRARY_CLEANUP 1 #else # undef CARES_HAVE_ARES_LIBRARY_INIT # undef CARES_HAVE_ARES_LIBRARY_CLEANUP #endif #endif pycares-pycares-3.1.1/deps/c-ares/src/ares_writev.c000066400000000000000000000034071360572117400222320ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #ifdef HAVE_LIMITS_H # include #endif #include "ares.h" #include "ares_private.h" #ifndef HAVE_WRITEV ares_ssize_t ares_writev(ares_socket_t s, const struct iovec *iov, int iovcnt) { char *buffer, *bp; int i; size_t bytes = 0; ares_ssize_t result; /* Validate iovcnt */ if (iovcnt <= 0) { SET_ERRNO(EINVAL); return (-1); } /* Validate and find the sum of the iov_len values in the iov array */ for (i = 0; i < iovcnt; i++) { if (iov[i].iov_len > INT_MAX - bytes) { SET_ERRNO(EINVAL); return (-1); } bytes += iov[i].iov_len; } if (bytes == 0) return (0); /* Allocate a temporary buffer to hold the data */ buffer = ares_malloc(bytes); if (!buffer) { SET_ERRNO(ENOMEM); return (-1); } /* Copy the data into buffer */ for (bp = buffer, i = 0; i < iovcnt; ++i) { memcpy (bp, iov[i].iov_base, iov[i].iov_len); bp += iov[i].iov_len; } /* Send buffer contents */ result = swrite(s, buffer, bytes); ares_free(buffer); return (result); } #endif pycares-pycares-3.1.1/deps/c-ares/src/ares_writev.h000066400000000000000000000021211360572117400222270ustar00rootroot00000000000000#ifndef HEADER_CARES_WRITEV_H #define HEADER_CARES_WRITEV_H /* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #include "ares_setup.h" #include "ares.h" #ifndef HAVE_WRITEV /* Structure for scatter/gather I/O. */ struct iovec { void *iov_base; /* Pointer to data. */ size_t iov_len; /* Length of data. */ }; extern ares_ssize_t ares_writev(ares_socket_t s, const struct iovec *iov, int iovcnt); #endif #endif /* HEADER_CARES_WRITEV_H */ pycares-pycares-3.1.1/deps/c-ares/src/bitncmp.c000066400000000000000000000031401360572117400213260ustar00rootroot00000000000000 /* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1996,1999 by Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #ifndef HAVE_BITNCMP #include "ares_setup.h" #include "bitncmp.h" /* * int * bitncmp(l, r, n) * compare bit masks l and r, for n bits. * return: * <0, >0, or 0 in the libc tradition. * note: * network byte order assumed. this means 192.5.5.240/28 has * 0x11110000 in its fourth octet. * author: * Paul Vixie (ISC), June 1996 */ int ares__bitncmp(const void *l, const void *r, int n) { unsigned int lb, rb; int x, b; b = n / 8; x = memcmp(l, r, b); if (x || (n % 8) == 0) return (x); lb = ((const unsigned char *)l)[b]; rb = ((const unsigned char *)r)[b]; for (b = n % 8; b > 0; b--) { if ((lb & 0x80) != (rb & 0x80)) { if (lb & 0x80) return (1); return (-1); } lb <<= 1; rb <<= 1; } return (0); } #endif pycares-pycares-3.1.1/deps/c-ares/src/bitncmp.h000066400000000000000000000016111360572117400213340ustar00rootroot00000000000000#ifndef __ARES_BITNCMP_H #define __ARES_BITNCMP_H /* Copyright (C) 2005, 2013 by Dominick Meglio * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifndef HAVE_BITNCMP int ares__bitncmp(const void *l, const void *r, int n); #else #define ares__bitncmp(x,y,z) bitncmp(x,y,z) #endif #endif /* __ARES_BITNCMP_H */ pycares-pycares-3.1.1/deps/c-ares/src/config-win32.h000066400000000000000000000251521360572117400221130ustar00rootroot00000000000000#ifndef HEADER_CARES_CONFIG_WIN32_H #define HEADER_CARES_CONFIG_WIN32_H /* Copyright (C) 2004 - 2011 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ /* ================================================================ */ /* c-ares/config-win32.h - Hand crafted config file for Windows */ /* ================================================================ */ /* ---------------------------------------------------------------- */ /* HEADER FILES */ /* ---------------------------------------------------------------- */ /* Define if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define if you have the header file. */ #if defined(__MINGW32__) || defined(__POCC__) #define HAVE_GETOPT_H 1 #endif /* Define if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define if you have the header file. */ #ifndef __SALFORDC__ #define HAVE_PROCESS_H 1 #endif /* Define if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define if you have the header file */ /* #define HAVE_SYS_TIME_H 1 */ /* Define if you have the header file. */ #define HAVE_TIME_H 1 /* Define if you have the header file. */ #if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ defined(__POCC__) #define HAVE_UNISTD_H 1 #endif /* Define if you have the header file. */ #define HAVE_WINDOWS_H 1 /* Define if you have the header file. */ #define HAVE_WINSOCK_H 1 /* Define if you have the header file. */ #ifndef __SALFORDC__ #define HAVE_WINSOCK2_H 1 #endif /* Define if you have the header file. */ #ifndef __SALFORDC__ #define HAVE_WS2TCPIP_H 1 #endif /* ---------------------------------------------------------------- */ /* OTHER HEADER INFO */ /* ---------------------------------------------------------------- */ /* Define if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if you can safely include both and . */ /* #define TIME_WITH_SYS_TIME 1 */ /* ---------------------------------------------------------------- */ /* FUNCTIONS */ /* ---------------------------------------------------------------- */ /* Define if you have the closesocket function. */ #define HAVE_CLOSESOCKET 1 /* Define if you have the getenv function. */ #define HAVE_GETENV 1 /* Define if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define if you have the ioctlsocket function. */ #define HAVE_IOCTLSOCKET 1 /* Define if you have a working ioctlsocket FIONBIO function. */ #define HAVE_IOCTLSOCKET_FIONBIO 1 /* Define if you have the strcasecmp function. */ /* #define HAVE_STRCASECMP 1 */ /* Define if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define if you have the stricmp function. */ #define HAVE_STRICMP 1 /* Define if you have the strncasecmp function. */ /* #define HAVE_STRNCASECMP 1 */ /* Define if you have the strnicmp function. */ #define HAVE_STRNICMP 1 /* Define if you have the recv function. */ #define HAVE_RECV 1 /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 SOCKET /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 char * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 int /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV int /* Define if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 SOCKET /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 char /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 int /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 int /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV int /* Define if you have the send function. */ #define HAVE_SEND 1 /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 SOCKET /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 char * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 int /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV int /* Specifics for the Watt-32 tcp/ip stack. */ #ifdef WATT32 #define SOCKET int #define NS_INADDRSZ 4 #define HAVE_ARPA_NAMESER_H 1 #define HAVE_ARPA_INET_H 1 #define HAVE_NETDB_H 1 #define HAVE_NETINET_IN_H 1 #define HAVE_SYS_SOCKET_H 1 #define HAVE_NETINET_TCP_H 1 #define HAVE_AF_INET6 1 #define HAVE_PF_INET6 1 #define HAVE_STRUCT_IN6_ADDR 1 #define HAVE_STRUCT_SOCKADDR_IN6 1 #undef HAVE_WINSOCK_H #undef HAVE_WINSOCK2_H #undef HAVE_WS2TCPIP_H #endif /* ---------------------------------------------------------------- */ /* TYPEDEF REPLACEMENTS */ /* ---------------------------------------------------------------- */ /* Define if in_addr_t is not an available 'typedefed' type. */ #define in_addr_t unsigned long /* Define to the return type of signal handlers (int or void). */ #define RETSIGTYPE void #ifdef __cplusplus /* Compiling headers in C++ mode means bool is available */ #define HAVE_BOOL_T #endif /* ---------------------------------------------------------------- */ /* TYPE SIZES */ /* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */ /* STRUCT RELATED */ /* ---------------------------------------------------------------- */ /* Define if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define if you have struct sockaddr_storage. */ #if !defined(__SALFORDC__) && !defined(__BORLANDC__) #define HAVE_STRUCT_SOCKADDR_STORAGE 1 #endif /* Define if you have struct timeval. */ #define HAVE_STRUCT_TIMEVAL 1 /* ---------------------------------------------------------------- */ /* COMPILER SPECIFIC */ /* ---------------------------------------------------------------- */ /* Define to avoid VS2005 complaining about portable C functions. */ #if defined(_MSC_VER) && (_MSC_VER >= 1400) # define _CRT_SECURE_NO_DEPRECATE 1 # define _CRT_NONSTDC_NO_DEPRECATE 1 #endif /* Set the Target to Vista. However, any symbols required above Win2000 * should be loaded via LoadLibrary() */ #if defined(_MSC_VER) && (_MSC_VER >= 1500) # define VS2008_MIN_TARGET 0x0600 #endif /* VS2008 default target settings and minimum build target check. */ #if defined(_MSC_VER) && (_MSC_VER >= 1500) # ifndef _WIN32_WINNT # define _WIN32_WINNT VS2008_MIN_TARGET # endif # ifndef WINVER # define WINVER VS2008_MIN_TARGET # endif # if (_WIN32_WINNT < VS2008_MIN_TARGET) || (WINVER < VS2008_MIN_TARGET) # error VS2008 does not support Windows build targets prior to Windows 2000 # endif #endif /* When no build target is specified Pelles C 5.00 and later default build target is Windows Vista. */ #if defined(__POCC__) && (__POCC__ >= 500) # ifndef _WIN32_WINNT # define _WIN32_WINNT 0x0600 # endif # ifndef WINVER # define WINVER 0x0600 # endif #endif /* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is quite convoluted, compiler dependent and even build target dependent. */ #if defined(HAVE_WS2TCPIP_H) # if defined(__POCC__) # define HAVE_FREEADDRINFO 1 # define HAVE_GETADDRINFO 1 # define HAVE_GETNAMEINFO 1 # elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) # define HAVE_FREEADDRINFO 1 # define HAVE_GETADDRINFO 1 # define HAVE_GETNAMEINFO 1 # elif defined(_MSC_VER) && (_MSC_VER >= 1200) # define HAVE_FREEADDRINFO 1 # define HAVE_GETADDRINFO 1 # define HAVE_GETNAMEINFO 1 # endif #endif #if defined(__POCC__) # ifndef _MSC_VER # error Microsoft extensions /Ze compiler option is required # endif # ifndef __POCC__OLDNAMES # error Compatibility names /Go compiler option is required # endif #endif /* ---------------------------------------------------------------- */ /* IPV6 COMPATIBILITY */ /* ---------------------------------------------------------------- */ /* Define if you have address family AF_INET6. */ #ifdef HAVE_WINSOCK2_H #define HAVE_AF_INET6 1 #endif /* Define if you have protocol family PF_INET6. */ #ifdef HAVE_WINSOCK2_H #define HAVE_PF_INET6 1 #endif /* Define if you have struct in6_addr. */ #ifdef HAVE_WS2TCPIP_H #define HAVE_STRUCT_IN6_ADDR 1 #endif /* Define if you have struct sockaddr_in6. */ #ifdef HAVE_WS2TCPIP_H #define HAVE_STRUCT_SOCKADDR_IN6 1 #endif /* Define if you have sockaddr_in6 with scopeid. */ #ifdef HAVE_WS2TCPIP_H #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 #endif /* ---------------------------------------------------------------- */ /* Win CE */ /* ---------------------------------------------------------------- */ /* FIXME: A proper config-win32ce.h should be created to hold these */ /* * System error codes for Windows CE */ #if defined(_WIN32_WCE) && !defined(HAVE_ERRNO_H) # define ENOENT ERROR_FILE_NOT_FOUND # define ESRCH ERROR_PATH_NOT_FOUND # define ENOMEM ERROR_NOT_ENOUGH_MEMORY # define ENOSPC ERROR_INVALID_PARAMETER #endif #endif /* HEADER_CARES_CONFIG_WIN32_H */ pycares-pycares-3.1.1/deps/c-ares/src/config_android/000077500000000000000000000000001360572117400224755ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_android/ares_config.h000066400000000000000000000345251360572117400251360ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* Defined for build that exposes internal static functions for testing. */ /* #undef CARES_EXPOSE_STATICS */ /* Defined for build with symbol hiding. */ #define CARES_SYMBOL_HIDING 1 /* Definition to make a library symbol externally visible. */ #define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((__visibility__ ("default"))) /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* Use resolver library to configure cares */ /* #undef CARES_USE_LIBRESOLV */ /* if a /etc/inet dir is being used */ /* #undef ETC_INET */ /* Define to the type of arg 2 for gethostname. */ #define GETHOSTNAME_TYPE_ARG2 size_t /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 socklen_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ #define GETSERVBYPORT_R_ARGS 6 /* Specifies the size of the buffer to pass to getservbyport_r */ #define GETSERVBYPORT_R_BUFSIZE 4096 /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ //#define HAVE_ARPA_NAMESER_COMPAT_H 1 /* Define to 1 if you have the header file. */ //#define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ #define HAVE_CLOCK_GETTIME_MONOTONIC 1 /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ #define HAVE_GETADDRINFO_THREADSAFE 1 /* Define to 1 if you have the getenv function. */ #define HAVE_GETENV 1 /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ #define HAVE_GETSERVBYPORT_R 1 /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ /* #undef HAVE_INET_NET_PTON */ /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ #define HAVE_IOCTL_FIONBIO 1 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ #define HAVE_IOCTL_SIOCGIFADDR 1 /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ #define HAVE_MALLOC_H 1 /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ #define HAVE_MSG_NOSIGNAL 1 /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STROPTS_H 1 /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ /* #undef NEED_REENTRANT */ /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* cpu-machine-OS */ #define OS "i686-pc-linux-gnu" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type qualifier pointed by arg 5 for recvfrom. */ #define RECVFROM_QUAL_ARG5 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 socklen_t /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG6_IS_VOID */ /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV ssize_t /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV ssize_t /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV ssize_t /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.13.0" /* Define to avoid automatic inclusion of winsock.h */ /* #undef WIN32_LEAN_AND_MEAN */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* the signed version of size_t */ /* #undef ssize_t */ pycares-pycares-3.1.1/deps/c-ares/src/config_cygwin/000077500000000000000000000000001360572117400223555ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_cygwin/ares_config.h000066400000000000000000000350141360572117400250100ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* when building c-ares library */ /* #undef CARES_BUILDING_LIBRARY */ /* when not building a shared library */ /* #undef CARES_STATICLIB */ /* Define to 1 to enable hiding of library internal symbols. */ #define CARES_SYMBOL_HIDING 1 /* Definition to make a library symbol externally visible. */ #define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((visibility ("default"))) /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* if a /etc/inet dir is being used */ /* #undef ETC_INET */ /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 int /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ /* #undef GETSERVBYPORT_R_ARGS */ /* Specifies the size of the buffer to pass to getservbyport_r */ /* #undef GETSERVBYPORT_R_BUFSIZE */ /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_COMPAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ /* #undef HAVE_CLOCK_GETTIME_MONOTONIC */ /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ /* #undef HAVE_GETADDRINFO_THREADSAFE */ /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ /* #undef HAVE_GETSERVBYPORT_R */ /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have the `inet_net_pton' function. */ /* #undef HAVE_INET_NET_PTON */ /* Define to 1 if inet_net_pton supports IPv6. */ /* #undef HAVE_INET_NET_PTON_IPV6 */ /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ #define HAVE_IOCTL_FIONBIO 1 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ #define HAVE_IOCTL_SIOCGIFADDR 1 /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ #define HAVE_MALLOC_H 1 /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ #define HAVE_MSG_NOSIGNAL 1 /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ /* #undef HAVE_STROPTS_H */ /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you are building a native Windows target. */ /* #undef NATIVE_WINDOWS */ /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ /* #undef NEED_REENTRANT */ /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* cpu-machine-OS */ #define OS "i686-pc-cygwin" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list => http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 socklen_t /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG6_IS_VOID */ /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV int /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV int /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV int /* The size of `int', as computed by sizeof. */ #define SIZEOF_INT 4 /* The size of `long', as computed by sizeof. */ #define SIZEOF_LONG 4 /* The size of `size_t', as computed by sizeof. */ #define SIZEOF_SIZE_T 4 /* The size of `struct in6_addr', as computed by sizeof. */ #define SIZEOF_STRUCT_IN6_ADDR 16 /* The size of `struct in_addr', as computed by sizeof. */ #define SIZEOF_STRUCT_IN_ADDR 4 /* The size of `time_t', as computed by sizeof. */ #define SIZEOF_TIME_T 4 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.7.1" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* the signed version of size_t */ /* #undef ssize_t */ #define HAVE_GETENV 1 pycares-pycares-3.1.1/deps/c-ares/src/config_darwin/000077500000000000000000000000001360572117400223415ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_darwin/ares_config.h000066400000000000000000000344571360572117400250060ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* Defined for build that exposes internal static functions for testing. */ /* #undef CARES_EXPOSE_STATICS */ /* Defined for build with symbol hiding. */ #define CARES_SYMBOL_HIDING 1 /* Definition to make a library symbol externally visible. */ #define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((__visibility__ ("default"))) /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* Use resolver library to configure cares */ /* #undef CARES_USE_LIBRESOLV */ /* if a /etc/inet dir is being used */ /* #undef ETC_INET */ /* Define to the type of arg 2 for gethostname. */ #define GETHOSTNAME_TYPE_ARG2 size_t /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 socklen_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ /* #undef GETSERVBYPORT_R_ARGS */ /* Specifies the size of the buffer to pass to getservbyport_r */ /* #undef GETSERVBYPORT_R_BUFSIZE */ /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_COMPAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ /* #undef HAVE_CLOCK_GETTIME_MONOTONIC */ /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ #define HAVE_GETADDRINFO_THREADSAFE 1 /* Define to 1 if you have the getenv function. */ #define HAVE_GETENV 1 /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ /* #undef HAVE_GETSERVBYPORT_R */ /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ #define HAVE_INET_NET_PTON 1 /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ #define HAVE_IOCTL_FIONBIO 1 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ #define HAVE_IOCTL_SIOCGIFADDR 1 /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ /* #undef HAVE_MALLOC_H */ /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ /* #undef HAVE_MSG_NOSIGNAL */ /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ /* #undef HAVE_STROPTS_H */ /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ /* #undef NEED_REENTRANT */ /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* cpu-machine-OS */ #define OS "x86_64-apple-darwin16.7.0" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type qualifier pointed by arg 5 for recvfrom. */ #define RECVFROM_QUAL_ARG5 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 socklen_t /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG6_IS_VOID */ /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV ssize_t /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV ssize_t /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV ssize_t /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.13.0" /* Define to avoid automatic inclusion of winsock.h */ /* #undef WIN32_LEAN_AND_MEAN */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ pycares-pycares-3.1.1/deps/c-ares/src/config_freebsd/000077500000000000000000000000001360572117400224675ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_freebsd/ares_config.h000066400000000000000000000345321360572117400251260ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* Defined for build that exposes internal static functions for testing. */ /* #undef CARES_EXPOSE_STATICS */ /* Defined for build with symbol hiding. */ #define CARES_SYMBOL_HIDING 1 /* Definition to make a library symbol externally visible. */ #define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((__visibility__ ("default"))) /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* Use resolver library to configure cares */ /* #undef CARES_USE_LIBRESOLV */ /* if a /etc/inet dir is being used */ /* #undef ETC_INET */ /* Define to the type of arg 2 for gethostname. */ #define GETHOSTNAME_TYPE_ARG2 size_t /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 size_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ #define GETSERVBYPORT_R_ARGS 6 /* Specifies the size of the buffer to pass to getservbyport_r */ #define GETSERVBYPORT_R_BUFSIZE 4096 /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_COMPAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ #define HAVE_CLOCK_GETTIME_MONOTONIC 1 /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ #define HAVE_GETADDRINFO_THREADSAFE 1 /* Define to 1 if you have the getenv function. */ #define HAVE_GETENV 1 /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ #define HAVE_GETSERVBYPORT_R 1 /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ #define HAVE_INET_NET_PTON 1 /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ #define HAVE_IOCTL_FIONBIO 1 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ #define HAVE_IOCTL_SIOCGIFADDR 1 /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ /* #undef HAVE_MALLOC_H */ /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ #define HAVE_MSG_NOSIGNAL 1 /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ /* #undef HAVE_STROPTS_H */ /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ /* #undef NEED_REENTRANT */ /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* cpu-machine-OS */ #define OS "x86_64-unknown-freebsd10.3" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type qualifier pointed by arg 5 for recvfrom. */ #define RECVFROM_QUAL_ARG5 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 socklen_t /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG6_IS_VOID */ /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV ssize_t /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV ssize_t /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV ssize_t /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.13.0" /* Define to avoid automatic inclusion of winsock.h */ /* #undef WIN32_LEAN_AND_MEAN */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* the signed version of size_t */ /* #undef ssize_t */ pycares-pycares-3.1.1/deps/c-ares/src/config_linux/000077500000000000000000000000001360572117400222145ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_linux/ares_config.h000066400000000000000000000344321360572117400246520ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* Defined for build that exposes internal static functions for testing. */ /* #undef CARES_EXPOSE_STATICS */ /* Defined for build with symbol hiding. */ #define CARES_SYMBOL_HIDING 1 /* Definition to make a library symbol externally visible. */ #define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((__visibility__ ("default"))) /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* Use resolver library to configure cares */ /* #undef CARES_USE_LIBRESOLV */ /* if a /etc/inet dir is being used */ /* #undef ETC_INET */ /* Define to the type of arg 2 for gethostname. */ #define GETHOSTNAME_TYPE_ARG2 size_t /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 socklen_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ #define GETSERVBYPORT_R_ARGS 6 /* Specifies the size of the buffer to pass to getservbyport_r */ #define GETSERVBYPORT_R_BUFSIZE 4096 /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_COMPAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ #define HAVE_CLOCK_GETTIME_MONOTONIC 1 /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ #define HAVE_GETADDRINFO_THREADSAFE 1 /* Define to 1 if you have the getenv function. */ #define HAVE_GETENV 1 /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ #define HAVE_GETSERVBYPORT_R 1 /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ /* #undef HAVE_INET_NET_PTON */ /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ #define HAVE_IOCTL_FIONBIO 1 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ #define HAVE_IOCTL_SIOCGIFADDR 1 /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ #define HAVE_MALLOC_H 1 /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ #define HAVE_MSG_NOSIGNAL 1 /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STROPTS_H 1 /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ /* #undef NEED_REENTRANT */ /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* cpu-machine-OS */ #define OS "x86_64-pc-linux-gnu" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type qualifier pointed by arg 5 for recvfrom. */ #define RECVFROM_QUAL_ARG5 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 socklen_t /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG6_IS_VOID */ /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV ssize_t /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV ssize_t /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV ssize_t /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.13.0" /* Define to avoid automatic inclusion of winsock.h */ /* #undef WIN32_LEAN_AND_MEAN */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ pycares-pycares-3.1.1/deps/c-ares/src/config_netbsd/000077500000000000000000000000001360572117400223345ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_netbsd/ares_config.h000066400000000000000000000345221360572117400247720ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* Defined for build that exposes internal static functions for testing. */ /* #undef CARES_EXPOSE_STATICS */ /* Defined for build with symbol hiding. */ /* #undef CARES_SYMBOL_HIDING */ /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* Definition to make a library symbol externally visible. */ /* #undef CARES_SYMBOL_SCOPE_EXTERN */ /* Use resolver library to configure cares */ /* #undef CARES_USE_LIBRESOLV */ /* if a /etc/inet dir is being used */ /* #undef ETC_INET */ /* Define to the type of arg 2 for gethostname. */ #define GETHOSTNAME_TYPE_ARG2 size_t /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 size_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ #define GETSERVBYPORT_R_ARGS 4 /* Specifies the size of the buffer to pass to getservbyport_r */ #define GETSERVBYPORT_R_BUFSIZE sizeof(struct servent_data) /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_ARPA_NAMESER_COMPAT_H */ /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ #define HAVE_CLOCK_GETTIME_MONOTONIC 1 /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ /* #undef HAVE_GETADDRINFO_THREADSAFE */ /* Define to 1 if you have the getenv function. */ #define HAVE_GETENV 1 /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ #define HAVE_GETSERVBYPORT_R 1 /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ #define HAVE_INET_NET_PTON 1 /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ #define HAVE_IOCTL_FIONBIO 1 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ #define HAVE_IOCTL_SIOCGIFADDR 1 /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ #define HAVE_MALLOC_H 1 /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ /* #undef HAVE_MSG_NOSIGNAL */ /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ /* #undef HAVE_STROPTS_H */ /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ /* #undef NEED_REENTRANT */ /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* cpu-machine-OS */ #define OS "x86_64-unknown-freebsd10.3" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type qualifier pointed by arg 5 for recvfrom. */ #define RECVFROM_QUAL_ARG5 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 socklen_t /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG6_IS_VOID */ /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV ssize_t /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV ssize_t /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV ssize_t /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.13.0" /* Define to avoid automatic inclusion of winsock.h */ /* #undef WIN32_LEAN_AND_MEAN */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* the signed version of size_t */ /* #undef ssize_t */ pycares-pycares-3.1.1/deps/c-ares/src/config_openbsd/000077500000000000000000000000001360572117400225075ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_openbsd/ares_config.h000066400000000000000000000345221360572117400251450ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* Defined for build that exposes internal static functions for testing. */ /* #undef CARES_EXPOSE_STATICS */ /* Defined for build with symbol hiding. */ /* #undef CARES_SYMBOL_HIDING */ /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* Definition to make a library symbol externally visible. */ /* #undef CARES_SYMBOL_SCOPE_EXTERN */ /* Use resolver library to configure cares */ /* #undef CARES_USE_LIBRESOLV */ /* if a /etc/inet dir is being used */ /* #undef ETC_INET */ /* Define to the type of arg 2 for gethostname. */ #define GETHOSTNAME_TYPE_ARG2 size_t /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 size_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ #define GETSERVBYPORT_R_ARGS 4 /* Specifies the size of the buffer to pass to getservbyport_r */ #define GETSERVBYPORT_R_BUFSIZE sizeof(struct servent_data) /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_ARPA_NAMESER_COMPAT_H */ /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ #define HAVE_CLOCK_GETTIME_MONOTONIC 1 /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ /* #undef HAVE_GETADDRINFO_THREADSAFE */ /* Define to 1 if you have the getenv function. */ #define HAVE_GETENV 1 /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ #define HAVE_GETSERVBYPORT_R 1 /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ #define HAVE_INET_NET_PTON 1 /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ #define HAVE_IOCTL_FIONBIO 1 /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ #define HAVE_IOCTL_SIOCGIFADDR 1 /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ #define HAVE_MALLOC_H 1 /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ /* #undef HAVE_MSG_NOSIGNAL */ /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ /* #undef HAVE_STROPTS_H */ /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ /* #undef NEED_REENTRANT */ /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* cpu-machine-OS */ #define OS "x86_64-unknown-freebsd10.3" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type qualifier pointed by arg 5 for recvfrom. */ #define RECVFROM_QUAL_ARG5 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 socklen_t /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG6_IS_VOID */ /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV ssize_t /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV ssize_t /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV ssize_t /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.13.0" /* Define to avoid automatic inclusion of winsock.h */ /* #undef WIN32_LEAN_AND_MEAN */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* the signed version of size_t */ /* #undef ssize_t */ pycares-pycares-3.1.1/deps/c-ares/src/config_sunos/000077500000000000000000000000001360572117400222245ustar00rootroot00000000000000pycares-pycares-3.1.1/deps/c-ares/src/config_sunos/ares_config.h000066400000000000000000000344721360572117400246660ustar00rootroot00000000000000/* ares_config.h. Generated from ares_config.h.in by configure. */ /* ares_config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* define this if ares is built for a big endian system */ /* #undef ARES_BIG_ENDIAN */ /* when building as static part of libcurl */ /* #undef BUILDING_LIBCURL */ /* Defined for build that exposes internal static functions for testing. */ /* #undef CARES_EXPOSE_STATICS */ /* Defined for build with symbol hiding. */ #define CARES_SYMBOL_HIDING 1 /* Definition to make a library symbol externally visible. */ #define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((__visibility__ ("default"))) /* the signed version of size_t */ #define CARES_TYPEOF_ARES_SSIZE_T ssize_t /* Use resolver library to configure cares */ /* #undef CARES_USE_LIBRESOLV */ /* if a /etc/inet dir is being used */ #define ETC_INET 1 /* Define to the type of arg 2 for gethostname. */ #define GETHOSTNAME_TYPE_ARG2 int /* Define to the type qualifier of arg 1 for getnameinfo. */ #define GETNAMEINFO_QUAL_ARG1 const /* Define to the type of arg 1 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * /* Define to the type of arg 2 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG2 socklen_t /* Define to the type of args 4 and 6 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG46 size_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 int /* Specifies the number of arguments to getservbyport_r */ #define GETSERVBYPORT_R_ARGS 5 /* Specifies the size of the buffer to pass to getservbyport_r */ #define GETSERVBYPORT_R_BUFSIZE 4096 /* Define to 1 if you have AF_INET6. */ #define HAVE_AF_INET6 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_COMPAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ARPA_NAMESER_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 /* Define to 1 if you have the `bitncmp' function. */ /* #undef HAVE_BITNCMP */ /* Define to 1 if bool is an available type. */ #define HAVE_BOOL_T 1 /* Define to 1 if you have the clock_gettime function and monotonic timer. */ #define HAVE_CLOCK_GETTIME_MONOTONIC 1 /* Define to 1 if you have the closesocket function. */ /* #undef HAVE_CLOSESOCKET */ /* Define to 1 if you have the CloseSocket camel case function. */ /* #undef HAVE_CLOSESOCKET_CAMEL */ /* Define to 1 if you have the connect function. */ #define HAVE_CONNECT 1 /* define if the compiler supports basic C++11 syntax */ #define HAVE_CXX11 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have a working fcntl O_NONBLOCK function. */ #define HAVE_FCNTL_O_NONBLOCK 1 /* Define to 1 if you have the freeaddrinfo function. */ #define HAVE_FREEADDRINFO 1 /* Define to 1 if you have a working getaddrinfo function. */ #define HAVE_GETADDRINFO 1 /* Define to 1 if the getaddrinfo function is threadsafe. */ #define HAVE_GETADDRINFO_THREADSAFE 1 /* Define to 1 if you have the getenv function. */ #define HAVE_GETENV 1 /* Define to 1 if you have the gethostbyaddr function. */ #define HAVE_GETHOSTBYADDR 1 /* Define to 1 if you have the gethostbyname function. */ #define HAVE_GETHOSTBYNAME 1 /* Define to 1 if you have the gethostname function. */ #define HAVE_GETHOSTNAME 1 /* Define to 1 if you have the getnameinfo function. */ #define HAVE_GETNAMEINFO 1 /* Define to 1 if you have the getservbyport_r function. */ #define HAVE_GETSERVBYPORT_R 1 /* Define to 1 if you have the `gettimeofday' function. */ #define HAVE_GETTIMEOFDAY 1 /* Define to 1 if you have the `if_indextoname' function. */ #define HAVE_IF_INDEXTONAME 1 /* Define to 1 if you have a IPv6 capable working inet_net_pton function. */ /* #undef HAVE_INET_NET_PTON */ /* Define to 1 if you have a IPv6 capable working inet_ntop function. */ #define HAVE_INET_NTOP 1 /* Define to 1 if you have a IPv6 capable working inet_pton function. */ #define HAVE_INET_PTON 1 /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the ioctl function. */ #define HAVE_IOCTL 1 /* Define to 1 if you have the ioctlsocket function. */ /* #undef HAVE_IOCTLSOCKET */ /* Define to 1 if you have the IoctlSocket camel case function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL */ /* Define to 1 if you have a working IoctlSocket camel case FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */ /* Define to 1 if you have a working ioctlsocket FIONBIO function. */ /* #undef HAVE_IOCTLSOCKET_FIONBIO */ /* Define to 1 if you have a working ioctl FIONBIO function. */ /* #undef HAVE_IOCTL_FIONBIO */ /* Define to 1 if you have a working ioctl SIOCGIFADDR function. */ /* #undef HAVE_IOCTL_SIOCGIFADDR */ /* Define to 1 if you have the `resolve' library (-lresolve). */ /* #undef HAVE_LIBRESOLVE */ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* if your compiler supports LL */ #define HAVE_LL 1 /* Define to 1 if the compiler supports the 'long long' data type. */ #define HAVE_LONGLONG 1 /* Define to 1 if you have the malloc.h header file. */ #define HAVE_MALLOC_H 1 /* Define to 1 if you have the memory.h header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the MSG_NOSIGNAL flag. */ /* #undef HAVE_MSG_NOSIGNAL */ /* Define to 1 if you have the header file. */ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NETINET_TCP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_NET_IF_H 1 /* Define to 1 if you have PF_INET6. */ #define HAVE_PF_INET6 1 /* Define to 1 if you have the recv function. */ #define HAVE_RECV 1 /* Define to 1 if you have the recvfrom function. */ #define HAVE_RECVFROM 1 /* Define to 1 if you have the send function. */ #define HAVE_SEND 1 /* Define to 1 if you have the setsockopt function. */ #define HAVE_SETSOCKOPT 1 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */ /* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */ /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if sig_atomic_t is an available typedef. */ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if sig_atomic_t is already defined as volatile. */ /* #undef HAVE_SIG_ATOMIC_T_VOLATILE */ /* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 /* Define to 1 if you have the socket function. */ #define HAVE_SOCKET 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SOCKET_H */ /* Define to 1 if you have the header file. */ #define HAVE_STDBOOL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define to 1 if you have the strcmpi function. */ /* #undef HAVE_STRCMPI */ /* Define to 1 if you have the strdup function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the stricmp function. */ /* #undef HAVE_STRICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the strncasecmp function. */ #define HAVE_STRNCASECMP 1 /* Define to 1 if you have the strncmpi function. */ /* #undef HAVE_STRNCMPI */ /* Define to 1 if you have the strnicmp function. */ /* #undef HAVE_STRNICMP */ /* Define to 1 if you have the header file. */ #define HAVE_STROPTS_H 1 /* Define to 1 if you have struct addrinfo. */ #define HAVE_STRUCT_ADDRINFO 1 /* Define to 1 if you have struct in6_addr. */ #define HAVE_STRUCT_IN6_ADDR 1 /* Define to 1 if you have struct sockaddr_in6. */ #define HAVE_STRUCT_SOCKADDR_IN6 1 /* if struct sockaddr_storage is defined */ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 /* Define to 1 if you have the timeval struct. */ #define HAVE_STRUCT_TIMEVAL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_UIO_H 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the windows.h header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the winsock2.h header file. */ /* #undef HAVE_WINSOCK2_H */ /* Define to 1 if you have the winsock.h header file. */ /* #undef HAVE_WINSOCK_H */ /* Define to 1 if you have the writev function. */ #define HAVE_WRITEV 1 /* Define to 1 if you have the ws2tcpip.h header file. */ /* #undef HAVE_WS2TCPIP_H */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if you need the malloc.h header file even with stdlib.h */ /* #undef NEED_MALLOC_H */ /* Define to 1 if you need the memory.h header file even with stdlib.h */ /* #undef NEED_MEMORY_H */ /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */ #define NEED_REENTRANT 1 /* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */ /* #undef NEED_THREAD_SAFE */ /* cpu-machine-OS */ #define OS "i386-pc-solaris2.11" /* Name of package */ #define PACKAGE "c-ares" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares" /* Define to the full name of this package. */ #define PACKAGE_NAME "c-ares" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "c-ares 1.13.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "c-ares" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ #define PACKAGE_VERSION "1.13.0" /* a suitable file/device to read random data from */ #define RANDOM_FILE "/dev/urandom" /* Define to the type qualifier pointed by arg 5 for recvfrom. */ #define RECVFROM_QUAL_ARG5 /* Define to the type of arg 1 for recvfrom. */ #define RECVFROM_TYPE_ARG1 int /* Define to the type pointed by arg 2 for recvfrom. */ #define RECVFROM_TYPE_ARG2 void /* Define to 1 if the type pointed by arg 2 for recvfrom is void. */ #define RECVFROM_TYPE_ARG2_IS_VOID 1 /* Define to the type of arg 3 for recvfrom. */ #define RECVFROM_TYPE_ARG3 size_t /* Define to the type of arg 4 for recvfrom. */ #define RECVFROM_TYPE_ARG4 int /* Define to the type pointed by arg 5 for recvfrom. */ #define RECVFROM_TYPE_ARG5 struct sockaddr /* Define to 1 if the type pointed by arg 5 for recvfrom is void. */ /* #undef RECVFROM_TYPE_ARG5_IS_VOID */ /* Define to the type pointed by arg 6 for recvfrom. */ #define RECVFROM_TYPE_ARG6 void /* Define to 1 if the type pointed by arg 6 for recvfrom is void. */ #define RECVFROM_TYPE_ARG6_IS_VOID 1 /* Define to the function return type for recvfrom. */ #define RECVFROM_TYPE_RETV int /* Define to the type of arg 1 for recv. */ #define RECV_TYPE_ARG1 int /* Define to the type of arg 2 for recv. */ #define RECV_TYPE_ARG2 void * /* Define to the type of arg 3 for recv. */ #define RECV_TYPE_ARG3 size_t /* Define to the type of arg 4 for recv. */ #define RECV_TYPE_ARG4 int /* Define to the function return type for recv. */ #define RECV_TYPE_RETV int /* Define as the return type of signal handlers (`int' or `void'). */ #define RETSIGTYPE void /* Define to the type qualifier of arg 2 for send. */ #define SEND_QUAL_ARG2 const /* Define to the type of arg 1 for send. */ #define SEND_TYPE_ARG1 int /* Define to the type of arg 2 for send. */ #define SEND_TYPE_ARG2 void * /* Define to the type of arg 3 for send. */ #define SEND_TYPE_ARG3 size_t /* Define to the type of arg 4 for send. */ #define SEND_TYPE_ARG4 int /* Define to the function return type for send. */ #define SEND_TYPE_RETV int /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define to 1 if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define to disable non-blocking sockets. */ /* #undef USE_BLOCKING_SOCKETS */ /* Version number of package */ #define VERSION "1.13.0" /* Define to avoid automatic inclusion of winsock.h */ /* #undef WIN32_LEAN_AND_MEAN */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif /* Define to 1 if OS is AIX. */ #ifndef _ALL_SOURCE /* # undef _ALL_SOURCE */ #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #define _FILE_OFFSET_BITS 64 /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Type to use in place of in_addr_t when system does not provide it. */ /* #undef in_addr_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* the signed version of size_t */ /* #undef ssize_t */ pycares-pycares-3.1.1/deps/c-ares/src/inet_net_pton.c000066400000000000000000000263061360572117400225500ustar00rootroot00000000000000 /* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1996,1999 by Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_ipv6.h" #include "ares_nowarn.h" #include "ares_inet_net_pton.h" const struct ares_in6_addr ares_in6addr_any = { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }; #ifndef HAVE_INET_NET_PTON /* * static int * inet_net_pton_ipv4(src, dst, size) * convert IPv4 network number from presentation to network format. * accepts hex octets, hex strings, decimal octets, and /CIDR. * "size" is in bytes and describes "dst". * return: * number of bits, either imputed classfully or specified with /CIDR, * or -1 if some failure occurred (check errno). ENOENT means it was * not an IPv4 network specification. * note: * network byte order assumed. this means 192.5.5.240/28 has * 0b11110000 in its fourth octet. * note: * On Windows we store the error in the thread errno, not * in the winsock error code. This is to avoid loosing the * actual last winsock error. So use macro ERRNO to fetch the * errno this funtion sets when returning (-1), not SOCKERRNO. * author: * Paul Vixie (ISC), June 1996 */ static int inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size) { static const char xdigits[] = "0123456789abcdef"; static const char digits[] = "0123456789"; int n, ch, tmp = 0, dirty, bits; const unsigned char *odst = dst; ch = *src++; if (ch == '0' && (src[0] == 'x' || src[0] == 'X') && ISASCII(src[1]) && ISXDIGIT(src[1])) { /* Hexadecimal: Eat nybble string. */ if (!size) goto emsgsize; dirty = 0; src++; /* skip x or X. */ while ((ch = *src++) != '\0' && ISASCII(ch) && ISXDIGIT(ch)) { if (ISUPPER(ch)) ch = tolower(ch); n = aresx_sztosi(strchr(xdigits, ch) - xdigits); if (dirty == 0) tmp = n; else tmp = (tmp << 4) | n; if (++dirty == 2) { if (!size--) goto emsgsize; *dst++ = (unsigned char) tmp; dirty = 0; } } if (dirty) { /* Odd trailing nybble? */ if (!size--) goto emsgsize; *dst++ = (unsigned char) (tmp << 4); } } else if (ISASCII(ch) && ISDIGIT(ch)) { /* Decimal: eat dotted digit string. */ for (;;) { tmp = 0; do { n = aresx_sztosi(strchr(digits, ch) - digits); tmp *= 10; tmp += n; if (tmp > 255) goto enoent; } while ((ch = *src++) != '\0' && ISASCII(ch) && ISDIGIT(ch)); if (!size--) goto emsgsize; *dst++ = (unsigned char) tmp; if (ch == '\0' || ch == '/') break; if (ch != '.') goto enoent; ch = *src++; if (!ISASCII(ch) || !ISDIGIT(ch)) goto enoent; } } else goto enoent; bits = -1; if (ch == '/' && ISASCII(src[0]) && ISDIGIT(src[0]) && dst > odst) { /* CIDR width specifier. Nothing can follow it. */ ch = *src++; /* Skip over the /. */ bits = 0; do { n = aresx_sztosi(strchr(digits, ch) - digits); bits *= 10; bits += n; if (bits > 32) goto enoent; } while ((ch = *src++) != '\0' && ISASCII(ch) && ISDIGIT(ch)); if (ch != '\0') goto enoent; } /* Firey death and destruction unless we prefetched EOS. */ if (ch != '\0') goto enoent; /* If nothing was written to the destination, we found no address. */ if (dst == odst) goto enoent; /* LCOV_EXCL_LINE: all valid paths above increment dst */ /* If no CIDR spec was given, infer width from net class. */ if (bits == -1) { if (*odst >= 240) /* Class E */ bits = 32; else if (*odst >= 224) /* Class D */ bits = 8; else if (*odst >= 192) /* Class C */ bits = 24; else if (*odst >= 128) /* Class B */ bits = 16; else /* Class A */ bits = 8; /* If imputed mask is narrower than specified octets, widen. */ if (bits < ((dst - odst) * 8)) bits = aresx_sztosi(dst - odst) * 8; /* * If there are no additional bits specified for a class D * address adjust bits to 4. */ if (bits == 8 && *odst == 224) bits = 4; } /* Extend network to cover the actual mask. */ while (bits > ((dst - odst) * 8)) { if (!size--) goto emsgsize; *dst++ = '\0'; } return (bits); enoent: SET_ERRNO(ENOENT); return (-1); emsgsize: SET_ERRNO(EMSGSIZE); return (-1); } static int getbits(const char *src, int *bitsp) { static const char digits[] = "0123456789"; int n; int val; char ch; val = 0; n = 0; while ((ch = *src++) != '\0') { const char *pch; pch = strchr(digits, ch); if (pch != NULL) { if (n++ != 0 && val == 0) /* no leading zeros */ return (0); val *= 10; val += aresx_sztosi(pch - digits); if (val > 128) /* range */ return (0); continue; } return (0); } if (n == 0) return (0); *bitsp = val; return (1); } static int getv4(const char *src, unsigned char *dst, int *bitsp) { static const char digits[] = "0123456789"; unsigned char *odst = dst; int n; unsigned int val; char ch; val = 0; n = 0; while ((ch = *src++) != '\0') { const char *pch; pch = strchr(digits, ch); if (pch != NULL) { if (n++ != 0 && val == 0) /* no leading zeros */ return (0); val *= 10; val += aresx_sztoui(pch - digits); if (val > 255) /* range */ return (0); continue; } if (ch == '.' || ch == '/') { if (dst - odst > 3) /* too many octets? */ return (0); *dst++ = (unsigned char)val; if (ch == '/') return (getbits(src, bitsp)); val = 0; n = 0; continue; } return (0); } if (n == 0) return (0); if (dst - odst > 3) /* too many octets? */ return (0); *dst = (unsigned char)val; return 1; } static int inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size) { static const char xdigits_l[] = "0123456789abcdef", xdigits_u[] = "0123456789ABCDEF"; unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp; const char *xdigits, *curtok; int ch, saw_xdigit; unsigned int val; int digits; int bits; size_t bytes; int words; int ipv4; memset((tp = tmp), '\0', NS_IN6ADDRSZ); endp = tp + NS_IN6ADDRSZ; colonp = NULL; /* Leading :: requires some special handling. */ if (*src == ':') if (*++src != ':') goto enoent; curtok = src; saw_xdigit = 0; val = 0; digits = 0; bits = -1; ipv4 = 0; while ((ch = *src++) != '\0') { const char *pch; if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL) pch = strchr((xdigits = xdigits_u), ch); if (pch != NULL) { val <<= 4; val |= aresx_sztoui(pch - xdigits); if (++digits > 4) goto enoent; saw_xdigit = 1; continue; } if (ch == ':') { curtok = src; if (!saw_xdigit) { if (colonp) goto enoent; colonp = tp; continue; } else if (*src == '\0') goto enoent; if (tp + NS_INT16SZ > endp) return (0); *tp++ = (unsigned char)((val >> 8) & 0xff); *tp++ = (unsigned char)(val & 0xff); saw_xdigit = 0; digits = 0; val = 0; continue; } if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) && getv4(curtok, tp, &bits) > 0) { tp += NS_INADDRSZ; saw_xdigit = 0; ipv4 = 1; break; /* '\0' was seen by inet_pton4(). */ } if (ch == '/' && getbits(src, &bits) > 0) break; goto enoent; } if (saw_xdigit) { if (tp + NS_INT16SZ > endp) goto enoent; *tp++ = (unsigned char)((val >> 8) & 0xff); *tp++ = (unsigned char)(val & 0xff); } if (bits == -1) bits = 128; words = (bits + 15) / 16; if (words < 2) words = 2; if (ipv4) words = 8; endp = tmp + 2 * words; if (colonp != NULL) { /* * Since some memmove()'s erroneously fail to handle * overlapping regions, we'll do the shift by hand. */ const ares_ssize_t n = tp - colonp; ares_ssize_t i; if (tp == endp) goto enoent; for (i = 1; i <= n; i++) { *(endp - i) = *(colonp + n - i); *(colonp + n - i) = 0; } tp = endp; } if (tp != endp) goto enoent; bytes = (bits + 7) / 8; if (bytes > size) goto emsgsize; memcpy(dst, tmp, bytes); return (bits); enoent: SET_ERRNO(ENOENT); return (-1); emsgsize: SET_ERRNO(EMSGSIZE); return (-1); } /* * int * inet_net_pton(af, src, dst, size) * convert network number from presentation to network format. * accepts hex octets, hex strings, decimal octets, and /CIDR. * "size" is in bytes and describes "dst". * return: * number of bits, either imputed classfully or specified with /CIDR, * or -1 if some failure occurred (check errno). ENOENT means it was * not a valid network specification. * note: * On Windows we store the error in the thread errno, not * in the winsock error code. This is to avoid loosing the * actual last winsock error. So use macro ERRNO to fetch the * errno this funtion sets when returning (-1), not SOCKERRNO. * author: * Paul Vixie (ISC), June 1996 */ int ares_inet_net_pton(int af, const char *src, void *dst, size_t size) { switch (af) { case AF_INET: return (inet_net_pton_ipv4(src, dst, size)); case AF_INET6: return (inet_net_pton_ipv6(src, dst, size)); default: SET_ERRNO(EAFNOSUPPORT); return (-1); } } #endif /* HAVE_INET_NET_PTON */ #ifndef HAVE_INET_PTON int ares_inet_pton(int af, const char *src, void *dst) { int result; size_t size; if (af == AF_INET) size = sizeof(struct in_addr); else if (af == AF_INET6) size = sizeof(struct ares_in6_addr); else { SET_ERRNO(EAFNOSUPPORT); return -1; } result = ares_inet_net_pton(af, src, dst, size); if (result == -1 && ERRNO == ENOENT) return 0; return (result > -1 ? 1 : -1); } #else /* HAVE_INET_PTON */ int ares_inet_pton(int af, const char *src, void *dst) { /* just relay this to the underlying function */ return inet_pton(af, src, dst); } #endif pycares-pycares-3.1.1/deps/c-ares/src/inet_net_pton.h000066400000000000000000000021411360572117400225440ustar00rootroot00000000000000#ifndef HEADER_CARES_INET_NET_PTON_H #define HEADER_CARES_INET_NET_PTON_H /* Copyright (C) 2005-2010 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifdef HAVE_INET_PTON #define ares_inet_pton(x,y,z) inet_pton(x,y,z) #else int ares_inet_pton(int af, const char *src, void *dst); #endif #ifdef HAVE_INET_NET_PTON #define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z) #else int ares_inet_net_pton(int af, const char *src, void *dst, size_t size); #endif #endif /* HEADER_CARES_INET_NET_PTON_H */ pycares-pycares-3.1.1/deps/c-ares/src/inet_ntop.c000066400000000000000000000133761360572117400217050ustar00rootroot00000000000000/* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1996-1999 by Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H # include #endif #ifdef HAVE_ARPA_INET_H # include #endif #ifdef HAVE_ARPA_NAMESER_H # include #else # include "nameser.h" #endif #ifdef HAVE_ARPA_NAMESER_COMPAT_H # include #endif #include "ares.h" #include "ares_ipv6.h" #ifndef HAVE_INET_NTOP /* * WARNING: Don't even consider trying to compile this on a system where * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX. */ static const char *inet_ntop4(const unsigned char *src, char *dst, size_t size); static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size); /* char * * inet_ntop(af, src, dst, size) * convert a network format address to presentation format. * return: * pointer to presentation format address (`dst'), or NULL (see errno). * note: * On Windows we store the error in the thread errno, not * in the winsock error code. This is to avoid loosing the * actual last winsock error. So use macro ERRNO to fetch the * errno this function sets when returning NULL, not SOCKERRNO. * author: * Paul Vixie, 1996. */ const char * ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size) { switch (af) { case AF_INET: return (inet_ntop4(src, dst, (size_t)size)); case AF_INET6: return (inet_ntop6(src, dst, (size_t)size)); default: SET_ERRNO(EAFNOSUPPORT); return (NULL); } /* NOTREACHED */ } /* const char * * inet_ntop4(src, dst, size) * format an IPv4 address * return: * `dst' (as a const) * notes: * (1) uses no statics * (2) takes a unsigned char* not an in_addr as input * author: * Paul Vixie, 1996. */ static const char * inet_ntop4(const unsigned char *src, char *dst, size_t size) { static const char fmt[] = "%u.%u.%u.%u"; char tmp[sizeof("255.255.255.255")]; if ((size_t)sprintf(tmp, fmt, src[0], src[1], src[2], src[3]) >= size) { SET_ERRNO(ENOSPC); return (NULL); } strcpy(dst, tmp); return (dst); } /* const char * * inet_ntop6(src, dst, size) * convert IPv6 binary address into presentation (printable) format * author: * Paul Vixie, 1996. */ static const char * inet_ntop6(const unsigned char *src, char *dst, size_t size) { /* * Note that int32_t and int16_t need only be "at least" large enough * to contain a value of the specified size. On some systems, like * Crays, there is no such thing as an integer variable with 16 bits. * Keep this in mind if you think this function should have been coded * to use pointer overlays. All the world's not a VAX. */ char tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; char *tp; struct { int base, len; } best, cur; unsigned int words[NS_IN6ADDRSZ / NS_INT16SZ]; int i; /* * Preprocess: * Copy the input (bytewise) array into a wordwise array. * Find the longest run of 0x00's in src[] for :: shorthanding. */ memset(words, '\0', sizeof(words)); for (i = 0; i < NS_IN6ADDRSZ; i++) words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3)); best.base = -1; best.len = 0; cur.base = -1; cur.len = 0; for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) { if (words[i] == 0) { if (cur.base == -1) cur.base = i, cur.len = 1; else cur.len++; } else { if (cur.base != -1) { if (best.base == -1 || cur.len > best.len) best = cur; cur.base = -1; } } } if (cur.base != -1) { if (best.base == -1 || cur.len > best.len) best = cur; } if (best.base != -1 && best.len < 2) best.base = -1; /* * Format the result. */ tp = tmp; for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) { /* Are we inside the best run of 0x00's? */ if (best.base != -1 && i >= best.base && i < (best.base + best.len)) { if (i == best.base) *tp++ = ':'; continue; } /* Are we following an initial run of 0x00s or any real hex? */ if (i != 0) *tp++ = ':'; /* Is this address an encapsulated IPv4? */ if (i == 6 && best.base == 0 && (best.len == 6 || (best.len == 7 && words[7] != 0x0001) || (best.len == 5 && words[5] == 0xffff))) { if (!inet_ntop4(src+12, tp, sizeof(tmp) - (tp - tmp))) return (NULL); tp += strlen(tp); break; } tp += sprintf(tp, "%x", words[i]); } /* Was it a trailing run of 0x00's? */ if (best.base != -1 && (best.base + best.len) == (NS_IN6ADDRSZ / NS_INT16SZ)) *tp++ = ':'; *tp++ = '\0'; /* * Check for overflow, copy, and we're done. */ if ((size_t)(tp - tmp) > size) { SET_ERRNO(ENOSPC); return (NULL); } strcpy(dst, tmp); return (dst); } #else /* HAVE_INET_NTOP */ const char * ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size) { /* just relay this to the underlying function */ return inet_ntop(af, src, dst, size); } #endif /* HAVE_INET_NTOP */ pycares-pycares-3.1.1/deps/c-ares/src/inet_ntop.h000066400000000000000000000016461360572117400217070ustar00rootroot00000000000000#ifndef __ARES_INET_NTOP_H #define __ARES_INET_NTOP_H /* Copyright (C) 2005 by Dominick Meglio * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifdef HAVE_INET_NTOP #define ares_inet_ntop(w,x,y,z) inet_ntop(w,x,y,z) #else const char *ares_inet_ntop(int af, const void *src, char *dst, size_t size); #endif #endif /* __ARES_INET_NTOP_H */ pycares-pycares-3.1.1/deps/c-ares/src/nameser.h000066400000000000000000000203651360572117400213410ustar00rootroot00000000000000 #ifndef ARES_NAMESER_H #define ARES_NAMESER_H /* header file provided by liren@vivisimo.com */ #ifndef HAVE_ARPA_NAMESER_H #define NS_PACKETSZ 512 /* maximum packet size */ #define NS_MAXDNAME 256 /* maximum domain name */ #define NS_MAXCDNAME 255 /* maximum compressed domain name */ #define NS_MAXLABEL 63 #define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */ #define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */ #define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */ #define NS_INT16SZ 2 #define NS_INADDRSZ 4 #define NS_IN6ADDRSZ 16 #define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */ #define NS_DEFAULTPORT 53 /* For both TCP and UDP. */ typedef enum __ns_class { ns_c_invalid = 0, /* Cookie. */ ns_c_in = 1, /* Internet. */ ns_c_2 = 2, /* unallocated/unsupported. */ ns_c_chaos = 3, /* MIT Chaos-net. */ ns_c_hs = 4, /* MIT Hesiod. */ /* Query class values which do not appear in resource records */ ns_c_none = 254, /* for prereq. sections in update requests */ ns_c_any = 255, /* Wildcard match. */ ns_c_max = 65536 } ns_class; typedef enum __ns_type { ns_t_invalid = 0, /* Cookie. */ ns_t_a = 1, /* Host address. */ ns_t_ns = 2, /* Authoritative server. */ ns_t_md = 3, /* Mail destination. */ ns_t_mf = 4, /* Mail forwarder. */ ns_t_cname = 5, /* Canonical name. */ ns_t_soa = 6, /* Start of authority zone. */ ns_t_mb = 7, /* Mailbox domain name. */ ns_t_mg = 8, /* Mail group member. */ ns_t_mr = 9, /* Mail rename name. */ ns_t_null = 10, /* Null resource record. */ ns_t_wks = 11, /* Well known service. */ ns_t_ptr = 12, /* Domain name pointer. */ ns_t_hinfo = 13, /* Host information. */ ns_t_minfo = 14, /* Mailbox information. */ ns_t_mx = 15, /* Mail routing information. */ ns_t_txt = 16, /* Text strings. */ ns_t_rp = 17, /* Responsible person. */ ns_t_afsdb = 18, /* AFS cell database. */ ns_t_x25 = 19, /* X_25 calling address. */ ns_t_isdn = 20, /* ISDN calling address. */ ns_t_rt = 21, /* Router. */ ns_t_nsap = 22, /* NSAP address. */ ns_t_nsap_ptr = 23, /* Reverse NSAP lookup (deprecated). */ ns_t_sig = 24, /* Security signature. */ ns_t_key = 25, /* Security key. */ ns_t_px = 26, /* X.400 mail mapping. */ ns_t_gpos = 27, /* Geographical position (withdrawn). */ ns_t_aaaa = 28, /* Ip6 Address. */ ns_t_loc = 29, /* Location Information. */ ns_t_nxt = 30, /* Next domain (security). */ ns_t_eid = 31, /* Endpoint identifier. */ ns_t_nimloc = 32, /* Nimrod Locator. */ ns_t_srv = 33, /* Server Selection. */ ns_t_atma = 34, /* ATM Address */ ns_t_naptr = 35, /* Naming Authority PoinTeR */ ns_t_kx = 36, /* Key Exchange */ ns_t_cert = 37, /* Certification record */ ns_t_a6 = 38, /* IPv6 address (deprecates AAAA) */ ns_t_dname = 39, /* Non-terminal DNAME (for IPv6) */ ns_t_sink = 40, /* Kitchen sink (experimentatl) */ ns_t_opt = 41, /* EDNS0 option (meta-RR) */ ns_t_apl = 42, /* Address prefix list (RFC3123) */ ns_t_ds = 43, /* Delegation Signer (RFC4034) */ ns_t_sshfp = 44, /* SSH Key Fingerprint (RFC4255) */ ns_t_rrsig = 46, /* Resource Record Signature (RFC4034) */ ns_t_nsec = 47, /* Next Secure (RFC4034) */ ns_t_dnskey = 48, /* DNS Public Key (RFC4034) */ ns_t_tkey = 249, /* Transaction key */ ns_t_tsig = 250, /* Transaction signature. */ ns_t_ixfr = 251, /* Incremental zone transfer. */ ns_t_axfr = 252, /* Transfer zone of authority. */ ns_t_mailb = 253, /* Transfer mailbox records. */ ns_t_maila = 254, /* Transfer mail agent records. */ ns_t_any = 255, /* Wildcard match. */ ns_t_zxfr = 256, /* BIND-specific, nonstandard. */ ns_t_max = 65536 } ns_type; typedef enum __ns_opcode { ns_o_query = 0, /* Standard query. */ ns_o_iquery = 1, /* Inverse query (deprecated/unsupported). */ ns_o_status = 2, /* Name server status query (unsupported). */ /* Opcode 3 is undefined/reserved. */ ns_o_notify = 4, /* Zone change notification. */ ns_o_update = 5, /* Zone update message. */ ns_o_max = 6 } ns_opcode; typedef enum __ns_rcode { ns_r_noerror = 0, /* No error occurred. */ ns_r_formerr = 1, /* Format error. */ ns_r_servfail = 2, /* Server failure. */ ns_r_nxdomain = 3, /* Name error. */ ns_r_notimpl = 4, /* Unimplemented. */ ns_r_refused = 5, /* Operation refused. */ /* these are for BIND_UPDATE */ ns_r_yxdomain = 6, /* Name exists */ ns_r_yxrrset = 7, /* RRset exists */ ns_r_nxrrset = 8, /* RRset does not exist */ ns_r_notauth = 9, /* Not authoritative for zone */ ns_r_notzone = 10, /* Zone of record different from zone section */ ns_r_max = 11, /* The following are TSIG extended errors */ ns_r_badsig = 16, ns_r_badkey = 17, ns_r_badtime = 18 } ns_rcode; #endif /* HAVE_ARPA_NAMESER_H */ #ifndef HAVE_ARPA_NAMESER_COMPAT_H #define PACKETSZ NS_PACKETSZ #define MAXDNAME NS_MAXDNAME #define MAXCDNAME NS_MAXCDNAME #define MAXLABEL NS_MAXLABEL #define HFIXEDSZ NS_HFIXEDSZ #define QFIXEDSZ NS_QFIXEDSZ #define RRFIXEDSZ NS_RRFIXEDSZ #define INDIR_MASK NS_CMPRSFLGS #define NAMESERVER_PORT NS_DEFAULTPORT #define QUERY ns_o_query #define SERVFAIL ns_r_servfail #define NOTIMP ns_r_notimpl #define REFUSED ns_r_refused #undef NOERROR /* it seems this is already defined in winerror.h */ #define NOERROR ns_r_noerror #define FORMERR ns_r_formerr #define NXDOMAIN ns_r_nxdomain #define C_IN ns_c_in #define C_CHAOS ns_c_chaos #define C_HS ns_c_hs #define C_NONE ns_c_none #define C_ANY ns_c_any #define T_A ns_t_a #define T_NS ns_t_ns #define T_MD ns_t_md #define T_MF ns_t_mf #define T_CNAME ns_t_cname #define T_SOA ns_t_soa #define T_MB ns_t_mb #define T_MG ns_t_mg #define T_MR ns_t_mr #define T_NULL ns_t_null #define T_WKS ns_t_wks #define T_PTR ns_t_ptr #define T_HINFO ns_t_hinfo #define T_MINFO ns_t_minfo #define T_MX ns_t_mx #define T_TXT ns_t_txt #define T_RP ns_t_rp #define T_AFSDB ns_t_afsdb #define T_X25 ns_t_x25 #define T_ISDN ns_t_isdn #define T_RT ns_t_rt #define T_NSAP ns_t_nsap #define T_NSAP_PTR ns_t_nsap_ptr #define T_SIG ns_t_sig #define T_KEY ns_t_key #define T_PX ns_t_px #define T_GPOS ns_t_gpos #define T_AAAA ns_t_aaaa #define T_LOC ns_t_loc #define T_NXT ns_t_nxt #define T_EID ns_t_eid #define T_NIMLOC ns_t_nimloc #define T_SRV ns_t_srv #define T_ATMA ns_t_atma #define T_NAPTR ns_t_naptr #define T_KX ns_t_kx #define T_CERT ns_t_cert #define T_A6 ns_t_a6 #define T_DNAME ns_t_dname #define T_SINK ns_t_sink #define T_OPT ns_t_opt #define T_APL ns_t_apl #define T_DS ns_t_ds #define T_SSHFP ns_t_sshfp #define T_RRSIG ns_t_rrsig #define T_NSEC ns_t_nsec #define T_DNSKEY ns_t_dnskey #define T_TKEY ns_t_tkey #define T_TSIG ns_t_tsig #define T_IXFR ns_t_ixfr #define T_AXFR ns_t_axfr #define T_MAILB ns_t_mailb #define T_MAILA ns_t_maila #define T_ANY ns_t_any #endif /* HAVE_ARPA_NAMESER_COMPAT_H */ #endif /* ARES_NAMESER_H */ pycares-pycares-3.1.1/deps/c-ares/src/setup_once.h000066400000000000000000000360401360572117400220500ustar00rootroot00000000000000#ifndef __SETUP_ONCE_H #define __SETUP_ONCE_H /* Copyright (C) 2004 - 2013 by Daniel Stenberg et al * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. */ /******************************************************************** * NOTICE * * ======== * * * * Content of header files lib/setup_once.h and ares/setup_once.h * * must be kept in sync. Modify the other one if you change this. * * * ********************************************************************/ /* * Inclusion of common header files. */ #include #include #include #include #include #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef NEED_MALLOC_H #include #endif #ifdef NEED_MEMORY_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_SYS_TIME_H #include #ifdef TIME_WITH_SYS_TIME #include #endif #else #ifdef HAVE_TIME_H #include #endif #endif #ifdef WIN32 #include #include #endif #if defined(HAVE_STDBOOL_H) && defined(HAVE_BOOL_T) #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef __hpux # if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL) # ifdef _APP32_64BIT_OFF_T # define OLD_APP32_64BIT_OFF_T _APP32_64BIT_OFF_T # undef _APP32_64BIT_OFF_T # else # undef OLD_APP32_64BIT_OFF_T # endif # endif #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef __hpux # if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL) # ifdef OLD_APP32_64BIT_OFF_T # define _APP32_64BIT_OFF_T OLD_APP32_64BIT_OFF_T # undef OLD_APP32_64BIT_OFF_T # endif # endif #endif /* * Definition of timeval struct for platforms that don't have it. */ #ifndef HAVE_STRUCT_TIMEVAL struct timeval { long tv_sec; long tv_usec; }; #endif /* * If we have the MSG_NOSIGNAL define, make sure we use * it as the fourth argument of function send() */ #ifdef HAVE_MSG_NOSIGNAL #define SEND_4TH_ARG MSG_NOSIGNAL #else #define SEND_4TH_ARG 0 #endif #if defined(__minix) /* Minix doesn't support recv on TCP sockets */ #define sread(x,y,z) (ares_ssize_t)read((RECV_TYPE_ARG1)(x), \ (RECV_TYPE_ARG2)(y), \ (RECV_TYPE_ARG3)(z)) #elif defined(HAVE_RECV) /* * The definitions for the return type and arguments types * of functions recv() and send() belong and come from the * configuration file. Do not define them in any other place. * * HAVE_RECV is defined if you have a function named recv() * which is used to read incoming data from sockets. If your * function has another name then don't define HAVE_RECV. * * If HAVE_RECV is defined then RECV_TYPE_ARG1, RECV_TYPE_ARG2, * RECV_TYPE_ARG3, RECV_TYPE_ARG4 and RECV_TYPE_RETV must also * be defined. * * HAVE_SEND is defined if you have a function named send() * which is used to write outgoing data on a connected socket. * If yours has another name then don't define HAVE_SEND. * * If HAVE_SEND is defined then SEND_TYPE_ARG1, SEND_QUAL_ARG2, * SEND_TYPE_ARG2, SEND_TYPE_ARG3, SEND_TYPE_ARG4 and * SEND_TYPE_RETV must also be defined. */ #if !defined(RECV_TYPE_ARG1) || \ !defined(RECV_TYPE_ARG2) || \ !defined(RECV_TYPE_ARG3) || \ !defined(RECV_TYPE_ARG4) || \ !defined(RECV_TYPE_RETV) /* */ Error Missing_definition_of_return_and_arguments_types_of_recv /* */ #else #define sread(x,y,z) (ares_ssize_t)recv((RECV_TYPE_ARG1)(x), \ (RECV_TYPE_ARG2)(y), \ (RECV_TYPE_ARG3)(z), \ (RECV_TYPE_ARG4)(0)) #endif #else /* HAVE_RECV */ #ifndef sread /* */ Error Missing_definition_of_macro_sread /* */ #endif #endif /* HAVE_RECV */ #if defined(__minix) /* Minix doesn't support send on TCP sockets */ #define swrite(x,y,z) (ares_ssize_t)write((SEND_TYPE_ARG1)(x), \ (SEND_TYPE_ARG2)(y), \ (SEND_TYPE_ARG3)(z)) #elif defined(HAVE_SEND) #if !defined(SEND_TYPE_ARG1) || \ !defined(SEND_QUAL_ARG2) || \ !defined(SEND_TYPE_ARG2) || \ !defined(SEND_TYPE_ARG3) || \ !defined(SEND_TYPE_ARG4) || \ !defined(SEND_TYPE_RETV) /* */ Error Missing_definition_of_return_and_arguments_types_of_send /* */ #else #define swrite(x,y,z) (ares_ssize_t)send((SEND_TYPE_ARG1)(x), \ (SEND_TYPE_ARG2)(y), \ (SEND_TYPE_ARG3)(z), \ (SEND_TYPE_ARG4)(SEND_4TH_ARG)) #endif #else /* HAVE_SEND */ #ifndef swrite /* */ Error Missing_definition_of_macro_swrite /* */ #endif #endif /* HAVE_SEND */ #if 0 #if defined(HAVE_RECVFROM) /* * Currently recvfrom is only used on udp sockets. */ #if !defined(RECVFROM_TYPE_ARG1) || \ !defined(RECVFROM_TYPE_ARG2) || \ !defined(RECVFROM_TYPE_ARG3) || \ !defined(RECVFROM_TYPE_ARG4) || \ !defined(RECVFROM_TYPE_ARG5) || \ !defined(RECVFROM_TYPE_ARG6) || \ !defined(RECVFROM_TYPE_RETV) /* */ Error Missing_definition_of_return_and_arguments_types_of_recvfrom /* */ #else #define sreadfrom(s,b,bl,f,fl) (ares_ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \ (RECVFROM_TYPE_ARG2 *)(b), \ (RECVFROM_TYPE_ARG3) (bl), \ (RECVFROM_TYPE_ARG4) (0), \ (RECVFROM_TYPE_ARG5 *)(f), \ (RECVFROM_TYPE_ARG6 *)(fl)) #endif #else /* HAVE_RECVFROM */ #ifndef sreadfrom /* */ Error Missing_definition_of_macro_sreadfrom /* */ #endif #endif /* HAVE_RECVFROM */ #ifdef RECVFROM_TYPE_ARG6_IS_VOID # define RECVFROM_ARG6_T int #else # define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6 #endif #endif /* if 0 */ /* * Function-like macro definition used to close a socket. */ #if defined(HAVE_CLOSESOCKET) # define sclose(x) closesocket((x)) #elif defined(HAVE_CLOSESOCKET_CAMEL) # define sclose(x) CloseSocket((x)) #elif defined(HAVE_CLOSE_S) # define sclose(x) close_s((x)) #else # define sclose(x) close((x)) #endif /* * Uppercase macro versions of ANSI/ISO is*() functions/macros which * avoid negative number inputs with argument byte codes > 127. */ #define ISSPACE(x) (isspace((int) ((unsigned char)x))) #define ISDIGIT(x) (isdigit((int) ((unsigned char)x))) #define ISALNUM(x) (isalnum((int) ((unsigned char)x))) #define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x))) #define ISGRAPH(x) (isgraph((int) ((unsigned char)x))) #define ISALPHA(x) (isalpha((int) ((unsigned char)x))) #define ISPRINT(x) (isprint((int) ((unsigned char)x))) #define ISUPPER(x) (isupper((int) ((unsigned char)x))) #define ISLOWER(x) (islower((int) ((unsigned char)x))) #define ISASCII(x) (isascii((int) ((unsigned char)x))) #define ISBLANK(x) (int)((((unsigned char)x) == ' ') || \ (((unsigned char)x) == '\t')) #define TOLOWER(x) (tolower((int) ((unsigned char)x))) /* * 'bool' stuff compatible with HP-UX headers. */ #if defined(__hpux) && !defined(HAVE_BOOL_T) typedef int bool; # define false 0 # define true 1 # define HAVE_BOOL_T #endif /* * 'bool' exists on platforms with , i.e. C99 platforms. * On non-C99 platforms there's no bool, so define an enum for that. * On C99 platforms 'false' and 'true' also exist. Enum uses a * global namespace though, so use bool_false and bool_true. */ #ifndef HAVE_BOOL_T typedef enum { bool_false = 0, bool_true = 1 } bool; /* * Use a define to let 'true' and 'false' use those enums. There * are currently no use of true and false in libcurl proper, but * there are some in the examples. This will cater for any later * code happening to use true and false. */ # define false bool_false # define true bool_true # define HAVE_BOOL_T #endif /* * Redefine TRUE and FALSE too, to catch current use. With this * change, 'bool found = 1' will give a warning on MIPSPro, but * 'bool found = TRUE' will not. Change tested on IRIX/MIPSPro, * AIX 5.1/Xlc, Tru64 5.1/cc, w/make test too. */ #ifndef TRUE #define TRUE true #endif #ifndef FALSE #define FALSE false #endif /* * Macro WHILE_FALSE may be used to build single-iteration do-while loops, * avoiding compiler warnings. Mostly intended for other macro definitions. */ #define WHILE_FALSE while(0) #if defined(_MSC_VER) && !defined(__POCC__) # undef WHILE_FALSE # if (_MSC_VER < 1500) # define WHILE_FALSE while(1, 0) # else # define WHILE_FALSE \ __pragma(warning(push)) \ __pragma(warning(disable:4127)) \ while(0) \ __pragma(warning(pop)) # endif #endif /* * Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type. */ #ifndef HAVE_SIG_ATOMIC_T typedef int sig_atomic_t; #define HAVE_SIG_ATOMIC_T #endif /* * Convenience SIG_ATOMIC_T definition */ #ifdef HAVE_SIG_ATOMIC_T_VOLATILE #define SIG_ATOMIC_T static sig_atomic_t #else #define SIG_ATOMIC_T static volatile sig_atomic_t #endif /* * Default return type for signal handlers. */ #ifndef RETSIGTYPE #define RETSIGTYPE void #endif /* * Macro used to include code only in debug builds. */ #ifdef DEBUGBUILD #define DEBUGF(x) x #else #define DEBUGF(x) do { } WHILE_FALSE #endif /* * Macro used to include assertion code only in debug builds. */ #if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H) #define DEBUGASSERT(x) assert(x) #else #define DEBUGASSERT(x) do { } WHILE_FALSE #endif /* * Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno * (or equivalent) on this platform to hide platform details to code using it. */ #ifdef USE_WINSOCK #define SOCKERRNO ((int)WSAGetLastError()) #define SET_SOCKERRNO(x) (WSASetLastError((int)(x))) #else #define SOCKERRNO (errno) #define SET_SOCKERRNO(x) (errno = (x)) #endif /* * Macro ERRNO / SET_ERRNO() returns / sets the NOT *socket-related* errno * (or equivalent) on this platform to hide platform details to code using it. */ #if defined(WIN32) && !defined(WATT32) #define ERRNO ((int)GetLastError()) #define SET_ERRNO(x) (SetLastError((DWORD)(x))) #else #define ERRNO (errno) #define SET_ERRNO(x) (errno = (x)) #endif /* * Portable error number symbolic names defined to Winsock error codes. */ #ifdef USE_WINSOCK #undef EBADF /* override definition in errno.h */ #define EBADF WSAEBADF #undef EINTR /* override definition in errno.h */ #define EINTR WSAEINTR #undef EINVAL /* override definition in errno.h */ #define EINVAL WSAEINVAL #undef EWOULDBLOCK /* override definition in errno.h */ #define EWOULDBLOCK WSAEWOULDBLOCK #undef EINPROGRESS /* override definition in errno.h */ #define EINPROGRESS WSAEINPROGRESS #undef EALREADY /* override definition in errno.h */ #define EALREADY WSAEALREADY #undef ENOTSOCK /* override definition in errno.h */ #define ENOTSOCK WSAENOTSOCK #undef EDESTADDRREQ /* override definition in errno.h */ #define EDESTADDRREQ WSAEDESTADDRREQ #undef EMSGSIZE /* override definition in errno.h */ #define EMSGSIZE WSAEMSGSIZE #undef EPROTOTYPE /* override definition in errno.h */ #define EPROTOTYPE WSAEPROTOTYPE #undef ENOPROTOOPT /* override definition in errno.h */ #define ENOPROTOOPT WSAENOPROTOOPT #undef EPROTONOSUPPORT /* override definition in errno.h */ #define EPROTONOSUPPORT WSAEPROTONOSUPPORT #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT #undef EOPNOTSUPP /* override definition in errno.h */ #define EOPNOTSUPP WSAEOPNOTSUPP #define EPFNOSUPPORT WSAEPFNOSUPPORT #undef EAFNOSUPPORT /* override definition in errno.h */ #define EAFNOSUPPORT WSAEAFNOSUPPORT #undef EADDRINUSE /* override definition in errno.h */ #define EADDRINUSE WSAEADDRINUSE #undef EADDRNOTAVAIL /* override definition in errno.h */ #define EADDRNOTAVAIL WSAEADDRNOTAVAIL #undef ENETDOWN /* override definition in errno.h */ #define ENETDOWN WSAENETDOWN #undef ENETUNREACH /* override definition in errno.h */ #define ENETUNREACH WSAENETUNREACH #undef ENETRESET /* override definition in errno.h */ #define ENETRESET WSAENETRESET #undef ECONNABORTED /* override definition in errno.h */ #define ECONNABORTED WSAECONNABORTED #undef ECONNRESET /* override definition in errno.h */ #define ECONNRESET WSAECONNRESET #undef ENOBUFS /* override definition in errno.h */ #define ENOBUFS WSAENOBUFS #undef EISCONN /* override definition in errno.h */ #define EISCONN WSAEISCONN #undef ENOTCONN /* override definition in errno.h */ #define ENOTCONN WSAENOTCONN #define ESHUTDOWN WSAESHUTDOWN #define ETOOMANYREFS WSAETOOMANYREFS #undef ETIMEDOUT /* override definition in errno.h */ #define ETIMEDOUT WSAETIMEDOUT #undef ECONNREFUSED /* override definition in errno.h */ #define ECONNREFUSED WSAECONNREFUSED #undef ELOOP /* override definition in errno.h */ #define ELOOP WSAELOOP #ifndef ENAMETOOLONG /* possible previous definition in errno.h */ #define ENAMETOOLONG WSAENAMETOOLONG #endif #define EHOSTDOWN WSAEHOSTDOWN #undef EHOSTUNREACH /* override definition in errno.h */ #define EHOSTUNREACH WSAEHOSTUNREACH #ifndef ENOTEMPTY /* possible previous definition in errno.h */ #define ENOTEMPTY WSAENOTEMPTY #endif #define EPROCLIM WSAEPROCLIM #define EUSERS WSAEUSERS #define EDQUOT WSAEDQUOT #define ESTALE WSAESTALE #define EREMOTE WSAEREMOTE #endif /* * Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid() */ #if defined(__VMS) && \ defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64) #define getpwuid __32_getpwuid #endif /* * Macro argv_item_t hides platform details to code using it. */ #ifdef __VMS #define argv_item_t __char_ptr32 #else #define argv_item_t char * #endif /* * We use this ZERO_NULL to avoid picky compiler warnings, * when assigning a NULL pointer to a function pointer var. */ #define ZERO_NULL 0 #endif /* __SETUP_ONCE_H */ pycares-pycares-3.1.1/deps/c-ares/src/windows_port.c000066400000000000000000000006231360572117400224330ustar00rootroot00000000000000#include "ares_setup.h" /* only do the following on windows */ #if (defined(WIN32) || defined(WATT32)) && !defined(MSDOS) #ifdef __WATCOMC__ /* * Watcom needs a DllMain() in order to initialise the clib startup code. */ BOOL WINAPI DllMain (HINSTANCE hnd, DWORD reason, LPVOID reserved) { (void) hnd; (void) reason; (void) reserved; return (TRUE); } #endif #endif /* WIN32 builds only */ pycares-pycares-3.1.1/docs/000077500000000000000000000000001360572117400155645ustar00rootroot00000000000000pycares-pycares-3.1.1/docs/Makefile000066400000000000000000000127001360572117400172240ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/pycares.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/pycares.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/pycares" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pycares" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." pycares-pycares-3.1.1/docs/channel.rst000066400000000000000000000170631360572117400177350ustar00rootroot00000000000000.. _channel: .. currentmodule:: pycares ==================================== :py:class:`Channel` - Ares Channel ==================================== .. py:class:: Channel([flags, timeout, tries, ndots, tcp_port, udp_port, servers, domains, lookups, sock_state_cb, socket_send_buffer_size, socket_receive_buffer_size, rotate, local_ip, local_dev, resolvconf_path]) :param int flags: Flags controlling the behavior of the resolver. See ``constants`` for available values. :param float timeout: The number of seconds each name server is given to respond to a query on the first try. The default is five seconds. :param int tries: The number of tries the resolver will try contacting each name server before giving up. The default is four tries. :param int ndots: The number of dots which must be present in a domain name for it to be queried for "as is" prior to querying for it with the default domain extensions appended. The default value is 1 unless set otherwise by resolv.conf or the RES_OPTIONS environment variable. :param int tcp_port: The (TCP) port to use for queries. The default is 53. :param int udp_port: The (UDP) port to use for queries. The default is 53. :param list servers: List of nameservers to be used to do the lookups. :param list domains: The domains to search, instead of the domains specified in resolv.conf or the domain derived from the kernel hostname variable. :param str lookup: The lookups to perform for host queries. lookups should be set to a string of the characters "b" or "f", where "b" indicates a DNS lookup and "f" indicates a lookup in the hosts file. :param callable sock_state_cb: A callback function to be invoked when a socket changes state. Callback signature: ``sock_state_cb(self, fd, readable, writable)`` :param int socket_send_buffer_size: Size for the created socket's send buffer. :param int socket_receive_buffer_size: Size for the created socket's receive buffer. :param bool rotate: If set to True, the nameservers are rotated when doing queries. :param str local_ip: Sets the local IP address for DNS operations. :param str local_dev: Sets the local network adapter to use for DNS operations. Linux only. :param str resolvconf_path: Path to resolv.conf, defaults to /etc/resolv.conf. Unix only. The c-ares ``Channel`` provides asynchronous DNS operations. .. py:method:: gethostbyname(name, family, callback) :param string name: Name to query. :param int family: Socket family. :param callable callback: Callback to be called with the result of the query. Retrieves host information corresponding to a host name from a host database. Callback signature: ``callback(result, errorno)`` .. py:method:: gethostbyaddr(name, callback) :param string name: Name to query. :param callable callback: Callback to be called with the result of the query. Retrieves the host information corresponding to a network address. Callback signature: ``callback(result, errorno)`` .. py:method:: getnameinfo(name, port, flags, callback) :param string name: Name to query. :param int port: Port of the service to query. :param int flags: Query flags, see the NI flags section. :param callable callback: Callback to be called with the result of the query. Provides protocol-independent name resolution from an address to a host name and from a port number to the service name. Callback signature: ``callback(result, errorno)`` .. py:method:: query(name, query_type, callback) :param string name: Name to query. :param int query_type: Type of query to perform. :param callable callback: Callback to be called with the result of the query. Do a DNS query of the specified type. Available types: - ``QUERY_TYPE_A`` - ``QUERY_TYPE_AAAA`` - ``QUERY_TYPE_ANY`` - ``QUERY_TYPE_CNAME`` - ``QUERY_TYPE_MX`` - ``QUERY_TYPE_NAPTR`` - ``QUERY_TYPE_NS`` - ``QUERY_TYPE_PTR`` - ``QUERY_TYPE_SOA`` - ``QUERY_TYPE_SRV`` - ``QUERY_TYPE_TXT`` Callback signature: ``callback(result, errorno)``. The result type varies depending on the query type: - A: (list of) ``ares_query_a_result``, fields: - host - ttl - AAAA: (list of) ``ares_query_aaaa_result``, fields: - host - ttl - CNAME: ``ares_query_cname_result``, fields: - cname - ttl - MX: (list of) ``ares_query_mx_result``, fields: - host - priority - ttl - NAPTR: (list of) ``ares_query_naptr_result``, fields: - order - preference - flags - service - regex - replacement - ttl - NS: (list of) ``ares_query_ns_result``, fields: - host - ttl - PTR: (list of) ``ares_query_ptr_result``, fields: - name - ttl - SOA: ``ares_query_soa_result``, fields: - nsmane - hostmaster - serial - refresh - retry - expires - minttl - ttl - SRV: (list of) ``ares_query_srv_result``, fields: - host - port - priority - weight - ttl - TXT: (list of) ``ares_query_txt_result``, fields: - text - ttl - ANY: a list of any of the above. .. note:: TTL is not implemented for CNAME and NS), so it's set to -1. .. py:method:: search(name, query_type, callback) :param string name: Name to query. :param int query_type: Type of query to perform. :param callable callback: Callback to be called with the result of the query. Tis function does the same as :py:meth:`query` but it will honor the ``domain`` and ``search`` directives in ``resolv.conf``. .. py:method:: cancel() Cancel any pending query on this channel. All pending callbacks will be called with ARES_ECANCELLED errorno. .. py:method:: process_fd(read_fd, write_fd) :param int read_fd: File descriptor ready to read from. :param int write_fd: File descriptor ready to write to. Process the given file descriptors for read and/or write events. .. py:method:: getsock() Return a tuple containing 2 lists with the file descriptors ready to read and write. .. py:method:: timeout([max_timeout]) :param float max_timeout: Maximum timeout. Determines the maximum time for which the caller should wait before invoking ``process_fd`` to process timeouts. If the ``max_timeout`` parameter is specified, it is stored on the channel and the appropriate value is then returned. .. py:method:: set_local_ip(local_ip) :param str local_ip: IP address. Set the local IPv4 or IPv6 address from which the queries will be sent. .. py:method:: set_local_dev(local_dev) :param str local_dev: Network device name. Set the local ethernet device from which the queries will be sent. .. py:attribute:: servers List of nameservers to use for DNS queries. pycares-pycares-3.1.1/docs/conf.py000066400000000000000000000174631360572117400170760ustar00rootroot00000000000000# -*- coding: utf-8 -*- # # pycares documentation build configuration file, created by # sphinx-quickstart on Sun Jul 8 23:23:25 2012. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import re def get_version(): return re.search(r"""__version__\s+=\s+(?P['"])(?P.+?)(?P=quote)""", open('../src/pycares/_version.py').read()).group('version') _version = get_version() # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.viewcode'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'pycares' copyright = u'2012, Saúl Ibarra Corretgé' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = _version # The full version, including alpha/beta/rc tags. release = _version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'sphinx_rtd_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'pycaresdoc' # -- Options for LaTeX output -------------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'pycares.tex', u'pycares Documentation', u'Saúl Ibarra Corretgé', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'pycares', u'pycares Documentation', [u'Saúl Ibarra Corretgé'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'pycares', u'pycares Documentation', u'Saúl Ibarra Corretgé', 'pycares', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' pycares-pycares-3.1.1/docs/constants.rst000066400000000000000000000024571360572117400203420ustar00rootroot00000000000000.. _constants: ======================== c-ares library constants ======================== Channel flags ============= .. py:data:: pycares.ARES_FLAG_USEVC .. py:data:: pycares.ARES_FLAG_PRIMARY .. py:data:: pycares.ARES_FLAG_IGNTC .. py:data:: pycares.ARES_FLAG_NORECURSE .. py:data:: pycares.ARES_FLAG_STAYOPEN .. py:data:: pycares.ARES_FLAG_NOSEARCH .. py:data:: pycares.ARES_FLAG_NOALIASES .. py:data:: pycares.ARES_FLAG_NOCHECKRESP .. seealso:: `c-ares documentation for ares_init `_ Nameinfo constants ================== .. py:data:: pycares.ARES_NI_NOFQDN .. py:data:: pycares.ARES_NI_NUMERICHOST .. py:data:: pycares.ARES_NI_NAMEREQD .. py:data:: pycares.ARES_NI_NUMERICSERV .. py:data:: pycares.ARES_NI_DGRAM .. py:data:: pycares.ARES_NI_TCP .. py:data:: pycares.ARES_NI_UDP .. py:data:: pycares.ARES_NI_SCTP .. py:data:: pycares.ARES_NI_DCCP .. py:data:: pycares.ARES_NI_NUMERICSCOPE .. py:data:: pycares.ARES_NI_LOOKUPHOST .. py:data:: pycares.ARES_NI_LOOKUPSERVICE .. py:data:: pycares.ARES_NI_IDN .. py:data:: pycares.ARES_NI_IDN_ALLOW_UNASSIGNED .. py:data:: pycares.ARES_NI_IDN_USE_STD3_ASCII_RULES .. seealso:: `c-ares documentation for ares_getnameinfo `_ Others ====== .. py:data:: pycares.ARES_SOCKET_BAD pycares-pycares-3.1.1/docs/errno.rst000066400000000000000000000010161360572117400174410ustar00rootroot00000000000000.. _errno: .. currentmodule:: pycares ====================================================== :py:mod:`pycares.errno` --- Error constant definitions ====================================================== This module contains the defined error constants from c-ares. .. py:attribute:: pycares.errno.errorcode Mapping (code, string) with c-ares error codes. .. py:function:: pycares.errno.strerror(errorno) :param int errorno: Error number. Get the string representation of the given c-ares error number. pycares-pycares-3.1.1/docs/event_loops.rst000066400000000000000000000012701360572117400206530ustar00rootroot00000000000000.. _event_loops: ====================== Event loop integration ====================== pycares can be integrated in an already existing event loop without much trouble. The examples folder contains several examples: * cares-select.py: integration with plain select * cares-poll.py: integration with plain poll * cares-selectors.py: integration with the builtin selectors module * cares-resolver.py: integration with the pyuv event loop * cares-asyncio.py: integration with the asyncio framework Additionally, `Tornado `_ provides integration with pycaes through a `resolver module `_. pycares-pycares-3.1.1/docs/index.rst000066400000000000000000000010051360572117400174210ustar00rootroot00000000000000.. currentmodule:: pycares ################################# Welcome to pycares documentation! ################################# Python interface for c-ares. pycares is a Python module which provides an interface to c-ares. c-ares (http://c-ares.haxx.se/) c-ares is a C library that performs DNS requests and name resolves asynchronously. Contents ######## .. toctree:: :maxdepth: 3 :titlesonly: pycares Indices and tables ################## * :ref:`genindex` * :ref:`modindex` * :ref:`search` pycares-pycares-3.1.1/docs/make.bat000066400000000000000000000117521360572117400171770ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . set I18NSPHINXOPTS=%SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\pycares.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\pycares.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "texinfo" ( %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo if errorlevel 1 exit /b 1 echo. echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. goto end ) if "%1" == "gettext" ( %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale if errorlevel 1 exit /b 1 echo. echo.Build finished. The message catalogs are in %BUILDDIR%/locale. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end pycares-pycares-3.1.1/docs/pycares.rst000066400000000000000000000007151360572117400177670ustar00rootroot00000000000000.. _pycares: ************************************************* :py:mod:`pycares` --- Python interface to c-ares. ************************************************* .. py:module:: pycares :platform: POSIX, Windows :synopsis: Python interface to c-ares. .. seealso:: `c-ares source code `_. Objects ******* .. toctree:: :maxdepth: 2 :titlesonly: channel constants errno event_loops pycares-pycares-3.1.1/examples/000077500000000000000000000000001360572117400164525ustar00rootroot00000000000000pycares-pycares-3.1.1/examples/cares-asyncio.py000066400000000000000000000041061360572117400215650ustar00rootroot00000000000000 import asyncio import socket import pycares class DNSResolver(object): EVENT_READ = 0 EVENT_WRITE = 1 def __init__(self, loop=None): self._channel = pycares.Channel(sock_state_cb=self._sock_state_cb) self._timer = None self._fds = set() self.loop = loop or asyncio.get_event_loop() def _sock_state_cb(self, fd, readable, writable): if readable or writable: if readable: self.loop.add_reader(fd, self._process_events, fd, self.EVENT_READ) if writable: self.loop.add_writer(fd, self._process_events, fd, self.EVENT_WRITE) self._fds.add(fd) if self._timer is None: self._timer = self.loop.call_later(1.0, self._timer_cb) else: # socket is now closed self._fds.discard(fd) if not self._fds: self._timer.cancel() self._timer = None def _timer_cb(self): self._channel.process_fd(pycares.ARES_SOCKET_BAD, pycares.ARES_SOCKET_BAD) self._timer = self.loop.call_later(1.0, self._timer_cb) def _process_events(self, fd, event): if event == self.EVENT_READ: read_fd = fd write_fd = pycares.ARES_SOCKET_BAD elif event == self.EVENT_WRITE: read_fd = pycares.ARES_SOCKET_BAD write_fd = fd else: read_fd = write_fd = pycares.ARES_SOCKET_BAD self._channel.process_fd(read_fd, write_fd) def query(self, query_type, name, cb): self._channel.query(query_type, name, cb) def gethostbyname(self, name, cb): self._channel.gethostbyname(name, socket.AF_INET, cb) def main(): def cb(result, error): print("Result: {}, Error: {}".format(result, error)) loop = asyncio.get_event_loop() resolver = DNSResolver(loop) resolver.query('google.com', pycares.QUERY_TYPE_A, cb) resolver.query('sip2sip.info', pycares.QUERY_TYPE_SOA, cb) resolver.gethostbyname('apple.com', cb) loop.run_forever() if __name__ == '__main__': main() pycares-pycares-3.1.1/examples/cares-poll.py000066400000000000000000000043701360572117400210710ustar00rootroot00000000000000 import pycares import select import socket class DNSResolver(object): def __init__(self): self._channel = pycares.Channel(sock_state_cb=self._sock_state_cb) self.poll = select.epoll() if hasattr(select, "epoll") else select.poll() self._fd_map = set() def _sock_state_cb(self, fd, readable, writable): print("fd {} read {} write {}".format(fd, readable, writable)) if readable or writable: event = (select.POLLIN if readable else 0) | (select.POLLOUT if writable else 0) if fd not in self._fd_map: # New socket print("register %d" % fd) self.poll.register(fd, event) self._fd_map.add(fd) else: print("modify %d" % fd) self.poll.modify(fd, event) else: # Socket is now closed self._fd_map.remove(fd) print("unregister %d" % fd) self.poll.unregister(fd) def wait_channel(self): while True: if not self._fd_map: break timeout = self._channel.timeout(1.0) if not timeout: self._channel.process_fd(pycares.ARES_SOCKET_BAD, pycares.ARES_SOCKET_BAD) continue for fd, event in self.poll.poll(timeout): if event & (select.POLLIN | select.POLLPRI): self._channel.process_fd(fd, pycares.ARES_SOCKET_BAD) if event & select.POLLOUT: self._channel.process_fd(pycares.ARES_SOCKET_BAD, fd) def query(self, query_type, name, cb): self._channel.query(query_type, name, cb) def gethostbyname(self, name, cb): self._channel.gethostbyname(name, socket.AF_INET, cb) if __name__ == '__main__': def query_cb(result, error): print(result) print(error) def gethostbyname_cb(result, error): print(result) print(error) resolver = DNSResolver() resolver.query('google.com', pycares.QUERY_TYPE_A, query_cb) resolver.query('facebook.com', pycares.QUERY_TYPE_A, query_cb) resolver.query('sip2sip.info', pycares.QUERY_TYPE_SOA, query_cb) resolver.gethostbyname('apple.com', gethostbyname_cb) resolver.wait_channel() pycares-pycares-3.1.1/examples/cares-resolver.py000066400000000000000000000043651360572117400217700ustar00rootroot00000000000000 import pycares import pyuv import socket class DNSResolver(object): def __init__(self, loop): self._channel = pycares.Channel(sock_state_cb=self._sock_state_cb) self.loop = loop self._timer = pyuv.Timer(self.loop) self._fd_map = {} def _sock_state_cb(self, fd, readable, writable): if readable or writable: if fd not in self._fd_map: # New socket handle = pyuv.Poll(self.loop, fd) handle.fd = fd self._fd_map[fd] = handle else: handle = self._fd_map[fd] if not self._timer.active: self._timer.start(self._timer_cb, 1.0, 1.0) handle.start((pyuv.UV_READABLE if readable else 0) | (pyuv.UV_WRITABLE if writable else 0), self._poll_cb) else: # Socket is now closed handle = self._fd_map.pop(fd) handle.close() if not self._fd_map: self._timer.stop() def _timer_cb(self, timer): self._channel.process_fd(pycares.ARES_SOCKET_BAD, pycares.ARES_SOCKET_BAD) def _poll_cb(self, handle, events, error): read_fd = handle.fd write_fd = handle.fd if error is not None: # There was an error, pretend the socket is ready self._channel.process_fd(read_fd, write_fd) return if not events & pyuv.UV_READABLE: read_fd = pycares.ARES_SOCKET_BAD if not events & pyuv.UV_WRITABLE: write_fd = pycares.ARES_SOCKET_BAD self._channel.process_fd(read_fd, write_fd) def query(self, query_type, name, cb): self._channel.query(query_type, name, cb) def gethostbyname(self, name, cb): self._channel.gethostbyname(name, socket.AF_INET, cb) if __name__ == '__main__': def query_cb(result, error): print(result) print(error) def gethostbyname_cb(result, error): print(result) print(error) loop = pyuv.Loop.default_loop() resolver = DNSResolver(loop) resolver.query('google.com', pycares.QUERY_TYPE_A, query_cb) resolver.query('sip2sip.info', pycares.QUERY_TYPE_SOA, query_cb) resolver.gethostbyname('apple.com', gethostbyname_cb) loop.run() pycares-pycares-3.1.1/examples/cares-select.py000066400000000000000000000017051360572117400214010ustar00rootroot00000000000000 import pycares import select import socket def wait_channel(channel): while True: read_fds, write_fds = channel.getsock() if not read_fds and not write_fds: break timeout = channel.timeout() if not timeout: channel.process_fd(pycares.ARES_SOCKET_BAD, pycares.ARES_SOCKET_BAD) continue rlist, wlist, xlist = select.select(read_fds, write_fds, [], timeout) for fd in rlist: channel.process_fd(fd, pycares.ARES_SOCKET_BAD) for fd in wlist: channel.process_fd(pycares.ARES_SOCKET_BAD, fd) if __name__ == '__main__': def cb(result, error): print(result) print(error) channel = pycares.Channel() channel.gethostbyname('google.com', socket.AF_INET, cb) channel.query('google.com', pycares.QUERY_TYPE_A, cb) channel.query('sip2sip.info', pycares.QUERY_TYPE_SOA, cb) wait_channel(channel) print('Done!') pycares-pycares-3.1.1/examples/cares-selectors.py000066400000000000000000000044551360572117400221320ustar00rootroot00000000000000 import pycares import selectors import socket class DNSResolver(object): def __init__(self): self._channel = pycares.Channel(sock_state_cb=self._sock_state_cb) self.poll = selectors.DefaultSelector() self._fd_map = set() def _sock_state_cb(self, fd, readable, writable): print("fd {} read {} write {}".format(fd, readable, writable)) if readable or writable: event = (selectors.EVENT_READ if readable else 0) | (selectors.EVENT_WRITE if writable else 0) if fd not in self._fd_map: # New socket print("register %d" % fd) self.poll.register(fd, event) self._fd_map.add(fd) else: print("modify %d" % fd) self.poll.modify(fd, event) else: # Socket is now closed self._fd_map.remove(fd) print("unregister %d" % fd) self.poll.unregister(fd) def wait_channel(self): while True: if not self._fd_map: break timeout = self._channel.timeout(1.0) if not timeout: self._channel.process_fd(pycares.ARES_SOCKET_BAD, pycares.ARES_SOCKET_BAD) continue for key, event in self.poll.select(timeout): read_fd = key.fd if event & selectors.EVENT_READ else pycares.ARES_SOCKET_BAD write_fd = key.fd if event & selectors.EVENT_WRITE else pycares.ARES_SOCKET_BAD self._channel.process_fd(read_fd, write_fd) def query(self, query_type, name, cb): self._channel.query(query_type, name, cb) def gethostbyname(self, name, cb): self._channel.gethostbyname(name, socket.AF_INET, cb) if __name__ == '__main__': def query_cb(result, error): print(result) print(error) def gethostbyname_cb(result, error): print(result) print(error) resolver = DNSResolver() resolver.query('google.com', pycares.QUERY_TYPE_A, query_cb) resolver.query('google.com', pycares.QUERY_TYPE_AAAA, query_cb) resolver.query('facebook.com', pycares.QUERY_TYPE_A, query_cb) resolver.query('sip2sip.info', pycares.QUERY_TYPE_SOA, query_cb) resolver.gethostbyname('apple.com', gethostbyname_cb) resolver.wait_channel() pycares-pycares-3.1.1/setup.py000077500000000000000000000035611360572117400163560ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import codecs import re from setuptools import setup from setup_cares import cares_build_ext def get_version(): return re.search(r"""__version__\s+=\s+(?P['"])(?P.+?)(?P=quote)""", open('src/pycares/_version.py').read()).group('version') setup(name = 'pycares', version = get_version(), author = 'Saúl Ibarra Corretgé', author_email = 's@saghul.net', url = 'http://github.com/saghul/pycares', description = 'Python interface for c-ares', long_description = codecs.open('README.rst', encoding='utf-8').read(), long_description_content_type = 'text/x-rst', platforms = ['POSIX', 'Microsoft Windows'], classifiers = [ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Operating System :: POSIX', 'Operating System :: Microsoft :: Windows', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', ], cmdclass = {'build_ext': cares_build_ext}, setup_requires = ['cffi>=1.5.0'], install_requires = ['cffi>=1.5.0'], extras_require = {'idna': ['idna >= 2.1']}, cffi_modules = ['src/_cffi_src/build_cares.py:ffi'], package_dir = {'': 'src'}, packages = ['pycares'], ext_package = 'pycares', zip_safe = False ) pycares-pycares-3.1.1/setup_cares.py000066400000000000000000000113151360572117400175240ustar00rootroot00000000000000 import os import sys from distutils.command.build_ext import build_ext cares_sources = [ 'deps/c-ares/src/ares__close_sockets.c', 'deps/c-ares/src/ares__get_hostent.c', 'deps/c-ares/src/ares__read_line.c', 'deps/c-ares/src/ares__timeval.c', 'deps/c-ares/src/ares_android.c', 'deps/c-ares/src/ares_cancel.c', 'deps/c-ares/src/ares_create_query.c', 'deps/c-ares/src/ares_data.c', 'deps/c-ares/src/ares_destroy.c', 'deps/c-ares/src/ares_expand_name.c', 'deps/c-ares/src/ares_expand_string.c', 'deps/c-ares/src/ares_fds.c', 'deps/c-ares/src/ares_free_hostent.c', 'deps/c-ares/src/ares_free_string.c', 'deps/c-ares/src/ares_gethostbyaddr.c', 'deps/c-ares/src/ares_gethostbyname.c', 'deps/c-ares/src/ares_getnameinfo.c', 'deps/c-ares/src/ares_getopt.c', 'deps/c-ares/src/ares_getsock.c', 'deps/c-ares/src/ares_init.c', 'deps/c-ares/src/ares_library_init.c', 'deps/c-ares/src/ares_llist.c', 'deps/c-ares/src/ares_mkquery.c', 'deps/c-ares/src/ares_nowarn.c', 'deps/c-ares/src/ares_options.c', 'deps/c-ares/src/ares_parse_a_reply.c', 'deps/c-ares/src/ares_parse_aaaa_reply.c', 'deps/c-ares/src/ares_parse_mx_reply.c', 'deps/c-ares/src/ares_parse_naptr_reply.c', 'deps/c-ares/src/ares_parse_ns_reply.c', 'deps/c-ares/src/ares_parse_ptr_reply.c', 'deps/c-ares/src/ares_parse_soa_reply.c', 'deps/c-ares/src/ares_parse_srv_reply.c', 'deps/c-ares/src/ares_parse_txt_reply.c', 'deps/c-ares/src/ares_process.c', 'deps/c-ares/src/ares_query.c', 'deps/c-ares/src/ares_search.c', 'deps/c-ares/src/ares_send.c', 'deps/c-ares/src/ares_strcasecmp.c', 'deps/c-ares/src/ares_strdup.c', 'deps/c-ares/src/ares_strerror.c', 'deps/c-ares/src/ares_strsplit.c', 'deps/c-ares/src/ares_timeout.c', 'deps/c-ares/src/ares_version.c', 'deps/c-ares/src/ares_writev.c', 'deps/c-ares/src/bitncmp.c', 'deps/c-ares/src/inet_net_pton.c', 'deps/c-ares/src/inet_ntop.c', ] if sys.platform == 'win32': cares_sources += ['deps/c-ares/src/windows_port.c', 'deps/c-ares/src/ares_platform.c'] class cares_build_ext(build_ext): cares_dir = os.path.join('deps', 'c-ares') def build_extensions(self): self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src')) if sys.platform != 'win32': self.compiler.define_macro('HAVE_CONFIG_H', 1) self.compiler.define_macro('_LARGEFILE_SOURCE', 1) self.compiler.define_macro('_FILE_OFFSET_BITS', 64) if sys.platform.startswith('linux'): # Check if it's actually Android if os.environ.get('ANDROID_ROOT') and os.environ.get('ANDROID_DATA'): self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_android')) else: self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_linux')) self.compiler.add_library('dl') self.compiler.add_library('rt') elif sys.platform == 'darwin': self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_darwin')) self.compiler.define_macro('_DARWIN_USE_64_BIT_INODE', 1) elif sys.platform.startswith('freebsd'): self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_freebsd')) self.compiler.add_library('kvm') elif sys.platform.startswith('dragonfly'): self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_freebsd')) elif sys.platform.startswith('netbsd'): self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_netbsd')) elif sys.platform.startswith('openbsd'): self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_openbsd')) elif sys.platform.startswith('sunos'): self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_sunos')) self.compiler.add_library('socket') self.compiler.add_library('nsl') self.compiler.add_library('kstat') elif sys.platform == 'cygwin': self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_cygwin')) elif sys.platform == 'win32': if 'mingw' not in self.compiler.compiler_type: self.extensions[0].extra_link_args = ['/NODEFAULTLIB:libcmt'] self.compiler.add_library('advapi32') self.compiler.add_library('iphlpapi') self.compiler.add_library('psapi') self.compiler.add_library('ws2_32') self.compiler.define_macro('CARES_PULL_WS2TCPIP_H', 1) self.extensions[0].sources += cares_sources build_ext.build_extensions(self) pycares-pycares-3.1.1/src/000077500000000000000000000000001360572117400154235ustar00rootroot00000000000000pycares-pycares-3.1.1/src/_cffi_src/000077500000000000000000000000001360572117400173405ustar00rootroot00000000000000pycares-pycares-3.1.1/src/_cffi_src/build_cares.py000066400000000000000000000401431360572117400221700ustar00rootroot00000000000000 import cffi import sys if sys.platform == 'win32': PLATFORM_TYPES = """ typedef long time_t; typedef long suseconds_t; typedef short h_addrtype_t; typedef short h_length_t; typedef short sa_family_t; typedef unsigned short in_port_t; """ else: PLATFORM_TYPES = """ typedef long... time_t; typedef long... suseconds_t; typedef int h_addrtype_t; typedef int h_length_t; typedef int... sa_family_t; typedef uint16_t in_port_t; """ TYPES = """ struct in_addr { uint32_t s_addr; }; struct in6_addr { uint8_t s6_addr[16]; ...; }; struct timeval { time_t tv_sec; suseconds_t tv_usec; }; struct hostent { char *h_name; char **h_aliases; h_addrtype_t h_addrtype; h_length_t h_length; char **h_addr_list; }; struct sockaddr { sa_family_t sa_family; ...; }; struct sockaddr_in { sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; ...; }; struct sockaddr_in6 { sa_family_t sin6_family; in_port_t sin6_port; struct in6_addr sin6_addr; ...; }; #define INET_ADDRSTRLEN ... #define INET6_ADDRSTRLEN ... #define C_IN ... #define T_A ... #define T_AAAA ... #define T_ANY ... #define T_CNAME ... #define T_MX ... #define T_NAPTR ... #define T_NS ... #define T_PTR ... #define T_SOA ... #define T_SRV ... #define T_TXT ... typedef int... ares_socket_t; typedef int... ares_socklen_t; #define ARES_SUCCESS ... #define ARES_ENODATA ... #define ARES_EFORMERR ... #define ARES_ESERVFAIL ... #define ARES_ENOTFOUND ... #define ARES_ENOTIMP ... #define ARES_EREFUSED ... #define ARES_EBADQUERY ... #define ARES_EBADNAME ... #define ARES_EBADFAMILY ... #define ARES_EBADRESP ... #define ARES_ECONNREFUSED ... #define ARES_ETIMEOUT ... #define ARES_EOF ... #define ARES_EFILE ... #define ARES_ENOMEM ... #define ARES_EDESTRUCTION ... #define ARES_EBADSTR ... #define ARES_EBADFLAGS ... #define ARES_ENONAME ... #define ARES_EBADHINTS ... #define ARES_ENOTINITIALIZED ... #define ARES_ELOADIPHLPAPI ... #define ARES_EADDRGETNETWORKPARAMS ... #define ARES_ECANCELLED ... #define ARES_FLAG_USEVC ... #define ARES_FLAG_PRIMARY ... #define ARES_FLAG_IGNTC ... #define ARES_FLAG_NORECURSE ... #define ARES_FLAG_STAYOPEN ... #define ARES_FLAG_NOSEARCH ... #define ARES_FLAG_NOALIASES ... #define ARES_FLAG_NOCHECKRESP ... #define ARES_FLAG_EDNS ... #define ARES_OPT_FLAGS ... #define ARES_OPT_TIMEOUT ... #define ARES_OPT_TRIES ... #define ARES_OPT_NDOTS ... #define ARES_OPT_UDP_PORT ... #define ARES_OPT_TCP_PORT ... #define ARES_OPT_SERVERS ... #define ARES_OPT_DOMAINS ... #define ARES_OPT_LOOKUPS ... #define ARES_OPT_SOCK_STATE_CB ... #define ARES_OPT_SORTLIST ... #define ARES_OPT_SOCK_SNDBUF ... #define ARES_OPT_SOCK_RCVBUF ... #define ARES_OPT_TIMEOUTMS ... #define ARES_OPT_ROTATE ... #define ARES_OPT_EDNSPSZ ... #define ARES_OPT_RESOLVCONF ... #define ARES_NI_NOFQDN ... #define ARES_NI_NUMERICHOST ... #define ARES_NI_NAMEREQD ... #define ARES_NI_NUMERICSERV ... #define ARES_NI_DGRAM ... #define ARES_NI_TCP ... #define ARES_NI_UDP ... #define ARES_NI_SCTP ... #define ARES_NI_DCCP ... #define ARES_NI_NUMERICSCOPE ... #define ARES_NI_LOOKUPHOST ... #define ARES_NI_LOOKUPSERVICE ... #define ARES_NI_IDN ... #define ARES_NI_IDN_ALLOW_UNASSIGNED ... #define ARES_NI_IDN_USE_STD3_ASCII_RULES ... #define ARES_AI_CANONNAME ... #define ARES_AI_NUMERICHOST ... #define ARES_AI_PASSIVE ... #define ARES_AI_NUMERICSERV ... #define ARES_AI_V4MAPPED ... #define ARES_AI_ALL ... #define ARES_AI_ADDRCONFIG ... #define ARES_AI_IDN ... #define ARES_AI_IDN_ALLOW_UNASSIGNED ... #define ARES_AI_IDN_USE_STD3_ASCII_RULES ... #define ARES_AI_CANONIDN ... #define ARES_AI_MASK ... #define ARES_GETSOCK_MAXNUM ... int ARES_GETSOCK_READABLE(int, int); int ARES_GETSOCK_WRITABLE(int, int); #define ARES_LIB_INIT_ALL ... #define ARES_SOCKET_BAD ... typedef void (*ares_sock_state_cb)(void *data, ares_socket_t socket_fd, int readable, int writable); typedef void (*ares_callback)(void *arg, int status, int timeouts, unsigned char *abuf, int alen); typedef void (*ares_host_callback)(void *arg, int status, int timeouts, struct hostent *hostent); typedef void (*ares_nameinfo_callback)(void *arg, int status, int timeouts, char *node, char *service); typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd, int type, void *data); struct ares_channeldata; typedef struct ares_channeldata *ares_channel; struct ares_options { int flags; int timeout; int tries; int ndots; unsigned short udp_port; unsigned short tcp_port; int socket_send_buffer_size; int socket_receive_buffer_size; struct in_addr *servers; int nservers; char **domains; int ndomains; char *lookups; ares_sock_state_cb sock_state_cb; void *sock_state_cb_data; char *resolvconf_path; ...; }; struct ares_in6_addr { union { unsigned char _S6_u8[16]; } _S6_un; }; struct ares_addrttl { struct in_addr ipaddr; int ttl; }; struct ares_addr6ttl { struct ares_in6_addr ip6addr; int ttl; }; struct ares_srv_reply { struct ares_srv_reply *next; char *host; unsigned short priority; unsigned short weight; unsigned short port; int ttl; }; struct ares_mx_reply { struct ares_mx_reply *next; char *host; unsigned short priority; int ttl; }; struct ares_txt_reply { struct ares_txt_reply *next; unsigned char *txt; size_t length; int ttl; }; struct ares_txt_ext { struct ares_txt_ext *next; unsigned char *txt; size_t length; unsigned char record_start; int ttl; }; struct ares_naptr_reply { struct ares_naptr_reply *next; unsigned char *flags; unsigned char *service; unsigned char *regexp; char *replacement; unsigned short order; unsigned short preference; int ttl; }; struct ares_soa_reply { char *nsname; char *hostmaster; unsigned int serial; unsigned int refresh; unsigned int retry; unsigned int expire; unsigned int minttl; int ttl; }; struct ares_addr_node { struct ares_addr_node *next; int family; union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; }; """ FUNCTIONS = """ int ares_library_init(int flags); void ares_library_cleanup(void); const char *ares_version(int *version); int ares_init(ares_channel *channelptr); int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask); int ares_save_options(ares_channel channel, struct ares_options *options, int *optmask); void ares_destroy_options(struct ares_options *options); int ares_dup(ares_channel *dest, ares_channel src); void ares_destroy(ares_channel channel); void ares_cancel(ares_channel channel); void ares_set_local_ip4(ares_channel channel, unsigned int local_ip); void ares_set_local_ip6(ares_channel channel, const unsigned char* local_ip6); void ares_set_local_dev(ares_channel channel, const char* local_dev_name); void ares_set_socket_callback(ares_channel channel, ares_sock_create_callback callback, void *user_data); void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen, ares_callback callback, void *arg); void ares_query(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg); void ares_search(ares_channel channel, const char *name, int dnsclass, int type, ares_callback callback, void *arg); void ares_gethostbyname(ares_channel channel, const char *name, int family, ares_host_callback callback, void *arg); int ares_gethostbyname_file(ares_channel channel, const char *name, int family, struct hostent **host); void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen, int family, ares_host_callback callback, void *arg); void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, ares_socklen_t salen, int flags, ares_nameinfo_callback callback, void *arg); int ares_getsock(ares_channel channel, ares_socket_t *socks, int numsocks); struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv, struct timeval *tv); void ares_process_fd(ares_channel channel, ares_socket_t read_fd, ares_socket_t write_fd); int ares_create_query(const char *name, int dnsclass, int type, unsigned short id, int rd, unsigned char **buf, int *buflen, int max_udp_size); int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id, int rd, unsigned char **buf, int *buflen); int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen); int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, int alen, unsigned char **s, long *enclen); int ares_parse_a_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addrttl *addrttls, int *naddrttls); int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, struct hostent **host, struct ares_addr6ttl *addrttls, int *naddrttls); int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr, int addrlen, int family, struct hostent **host, int *hostttl); int ares_parse_ns_reply(const unsigned char *abuf, int alen, struct hostent **host); int ares_parse_srv_reply(const unsigned char* abuf, int alen, struct ares_srv_reply** srv_out); int ares_parse_mx_reply(const unsigned char* abuf, int alen, struct ares_mx_reply** mx_out); int ares_parse_txt_reply_ext(const unsigned char* abuf, int alen, struct ares_txt_ext** txt_out); int ares_parse_naptr_reply(const unsigned char* abuf, int alen, struct ares_naptr_reply** naptr_out); int ares_parse_soa_reply(const unsigned char* abuf, int alen, struct ares_soa_reply** soa_out); void ares_free_string(void *str); void ares_free_hostent(struct hostent *host); void ares_free_data(void *dataptr); const char *ares_strerror(int code); int ares_set_servers(ares_channel channel, struct ares_addr_node *servers); int ares_get_servers(ares_channel channel, struct ares_addr_node **servers); const char *ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size); int ares_inet_pton(int af, const char *src, void *dst); """ CALLBACKS = """ extern "Python" void _sock_state_cb(void *data, ares_socket_t socket_fd, int readable, int writable); extern "Python" void _host_cb(void *arg, int status, int timeouts, struct hostent *hostent); extern "Python" void _nameinfo_cb(void *arg, int status, int timeouts, char *node, char *service); extern "Python" void _query_cb(void *arg, int status, int timeouts, unsigned char *abuf, int alen); """ INCLUDES = """ #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN # include #else # include # include # include /* struct hostent */ # include /* struct sockaddr_in/sockaddr_in6 */ #endif #include #define CARES_STATICLIB 1 /* static link it */ #include """ ffi = cffi.FFI() ffi.cdef(PLATFORM_TYPES + TYPES + FUNCTIONS + CALLBACKS) ffi.set_source('_cares', INCLUDES) pycares-pycares-3.1.1/src/pycares/000077500000000000000000000000001360572117400170715ustar00rootroot00000000000000pycares-pycares-3.1.1/src/pycares/__init__.py000066400000000000000000000601241360572117400212050ustar00rootroot00000000000000 from ._cares import ffi as _ffi, lib as _lib import _cffi_backend # hint for bundler tools if _lib.ARES_SUCCESS != _lib.ares_library_init(_lib.ARES_LIB_INIT_ALL): raise RuntimeError('Could not initialize c-ares') from . import errno from .utils import ascii_bytes, maybe_str, parse_name from ._version import __version__ import collections.abc import socket import math import functools import sys exported_pycares_symbols = [ # Flag values 'ARES_FLAG_USEVC', 'ARES_FLAG_PRIMARY', 'ARES_FLAG_IGNTC', 'ARES_FLAG_NORECURSE', 'ARES_FLAG_STAYOPEN', 'ARES_FLAG_NOSEARCH', 'ARES_FLAG_NOALIASES', 'ARES_FLAG_NOCHECKRESP', # Nameinfo flag values 'ARES_NI_NOFQDN', 'ARES_NI_NUMERICHOST', 'ARES_NI_NAMEREQD', 'ARES_NI_NUMERICSERV', 'ARES_NI_DGRAM', 'ARES_NI_TCP', 'ARES_NI_UDP', 'ARES_NI_SCTP', 'ARES_NI_DCCP', 'ARES_NI_NUMERICSCOPE', 'ARES_NI_LOOKUPHOST', 'ARES_NI_LOOKUPSERVICE', 'ARES_NI_IDN', 'ARES_NI_IDN_ALLOW_UNASSIGNED', 'ARES_NI_IDN_USE_STD3_ASCII_RULES', # Bad socket 'ARES_SOCKET_BAD', ] for symbol in exported_pycares_symbols: globals()[symbol] = getattr(_lib, symbol) exported_pycares_symbols_map = { # Query types "QUERY_TYPE_A" : "T_A", "QUERY_TYPE_AAAA" : "T_AAAA", "QUERY_TYPE_ANY" : "T_ANY", "QUERY_TYPE_CNAME" : "T_CNAME", "QUERY_TYPE_MX" : "T_MX", "QUERY_TYPE_NAPTR" : "T_NAPTR", "QUERY_TYPE_NS" : "T_NS", "QUERY_TYPE_PTR" : "T_PTR", "QUERY_TYPE_SOA" : "T_SOA", "QUERY_TYPE_SRV" : "T_SRV", "QUERY_TYPE_TXT" : "T_TXT", } for k, v in exported_pycares_symbols_map.items(): globals()[k] = getattr(_lib, v) globals()['ARES_VERSION'] = maybe_str(_ffi.string(_lib.ares_version(_ffi.NULL))) PYCARES_ADDRTTL_SIZE = 256 class AresError(Exception): pass # callback helpers _global_set = set() @_ffi.def_extern() def _sock_state_cb(data, socket_fd, readable, writable): sock_state_cb = _ffi.from_handle(data) sock_state_cb(socket_fd, readable, writable) @_ffi.def_extern() def _host_cb(arg, status, timeouts, hostent): callback = _ffi.from_handle(arg) _global_set.discard(arg) if status != _lib.ARES_SUCCESS: result = None else: result = ares_host_result(hostent) status = None callback(result, status) @_ffi.def_extern() def _nameinfo_cb(arg, status, timeouts, node, service): callback = _ffi.from_handle(arg) _global_set.discard(arg) if status != _lib.ARES_SUCCESS: result = None else: result = ares_nameinfo_result(node, service) status = None callback(result, status) @_ffi.def_extern() def _query_cb(arg, status, timeouts, abuf, alen): callback, query_type = _ffi.from_handle(arg) _global_set.discard(arg) if status == _lib.ARES_SUCCESS: if query_type == _lib.T_ANY: result = [] for qtype in (_lib.T_A, _lib.T_AAAA, _lib.T_CNAME, _lib.T_MX, _lib.T_NAPTR, _lib.T_NS, _lib.T_PTR, _lib.T_SOA, _lib.T_SRV, _lib.T_TXT): r, status = parse_result(qtype, abuf, alen) if status not in (None, _lib.ARES_ENODATA, _lib.ARES_EBADRESP): result = None break if r is not None: if isinstance(r, collections.abc.Iterable): result.extend(r) else: result.append(r) else: status = None else: result, status = parse_result(query_type, abuf, alen) else: result = None callback(result, status) def parse_result(query_type, abuf, alen): if query_type == _lib.T_A: addrttls = _ffi.new("struct ares_addrttl[]", PYCARES_ADDRTTL_SIZE) naddrttls = _ffi.new("int*", PYCARES_ADDRTTL_SIZE) parse_status = _lib.ares_parse_a_reply(abuf, alen, _ffi.NULL, addrttls, naddrttls) if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = [ares_query_a_result(addrttls[i]) for i in range(naddrttls[0])] status = None elif query_type == _lib.T_AAAA: addrttls = _ffi.new("struct ares_addr6ttl[]", PYCARES_ADDRTTL_SIZE) naddrttls = _ffi.new("int*", PYCARES_ADDRTTL_SIZE) parse_status = _lib.ares_parse_aaaa_reply(abuf, alen, _ffi.NULL, addrttls, naddrttls) if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = [ares_query_aaaa_result(addrttls[i]) for i in range(naddrttls[0])] status = None elif query_type == _lib.T_CNAME: host = _ffi.new("struct hostent **") parse_status = _lib.ares_parse_a_reply(abuf, alen, host, _ffi.NULL, _ffi.NULL) if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = ares_query_cname_result(host[0]) _lib.ares_free_hostent(host[0]) status = None elif query_type == _lib.T_MX: mx_reply = _ffi.new("struct ares_mx_reply **") parse_status = _lib.ares_parse_mx_reply(abuf, alen, mx_reply); if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = [] mx_reply_ptr = mx_reply[0] while mx_reply_ptr != _ffi.NULL: result.append(ares_query_mx_result(mx_reply_ptr)) mx_reply_ptr = mx_reply_ptr.next _lib.ares_free_data(mx_reply[0]) status = None elif query_type == _lib.T_NAPTR: naptr_reply = _ffi.new("struct ares_naptr_reply **") parse_status = _lib.ares_parse_naptr_reply(abuf, alen, naptr_reply); if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = [] naptr_reply_ptr = naptr_reply[0] while naptr_reply_ptr != _ffi.NULL: result.append(ares_query_naptr_result(naptr_reply_ptr)) naptr_reply_ptr = naptr_reply_ptr.next _lib.ares_free_data(naptr_reply[0]) status = None elif query_type == _lib.T_NS: hostent = _ffi.new("struct hostent **") parse_status = _lib.ares_parse_ns_reply(abuf, alen, hostent); if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = [] host = hostent[0] i = 0 while host.h_aliases[i] != _ffi.NULL: result.append(ares_query_ns_result(host.h_aliases[i])) i += 1 _lib.ares_free_hostent(host) status = None elif query_type == _lib.T_PTR: hostent = _ffi.new("struct hostent **") hostttl = _ffi.new("int*", PYCARES_ADDRTTL_SIZE) parse_status = _lib.ares_parse_ptr_reply(abuf, alen, _ffi.NULL, 0, socket.AF_UNSPEC, hostent, hostttl); if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: aliases = [] host = hostent[0] i = 0 while host.h_aliases[i] != _ffi.NULL: aliases.append(maybe_str(_ffi.string(host.h_aliases[i]))) i += 1 result = ares_query_ptr_result(host, hostttl[0], aliases) _lib.ares_free_hostent(host) status = None elif query_type == _lib.T_SOA: soa_reply = _ffi.new("struct ares_soa_reply **") parse_status = _lib.ares_parse_soa_reply(abuf, alen, soa_reply); if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = ares_query_soa_result(soa_reply[0]) _lib.ares_free_data(soa_reply[0]) status = None elif query_type == _lib.T_SRV: srv_reply = _ffi.new("struct ares_srv_reply **") parse_status = _lib.ares_parse_srv_reply(abuf, alen, srv_reply); if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = [] srv_reply_ptr = srv_reply[0] while srv_reply_ptr != _ffi.NULL: result.append(ares_query_srv_result(srv_reply_ptr)) srv_reply_ptr = srv_reply_ptr.next _lib.ares_free_data(srv_reply[0]) status = None elif query_type == _lib.T_TXT: txt_reply = _ffi.new("struct ares_txt_ext **") parse_status = _lib.ares_parse_txt_reply_ext(abuf, alen, txt_reply); if parse_status != _lib.ARES_SUCCESS: result = None status = parse_status else: result = [] txt_reply_ptr = txt_reply[0] tmp_obj = None while True: if txt_reply_ptr == _ffi.NULL: if tmp_obj is not None: result.append(ares_query_txt_result(tmp_obj)) break if txt_reply_ptr.record_start == 1: if tmp_obj is not None: result.append(ares_query_txt_result(tmp_obj)) tmp_obj = ares_query_txt_result_chunk(txt_reply_ptr) else: new_chunk = ares_query_txt_result_chunk(txt_reply_ptr) tmp_obj.text += new_chunk.text txt_reply_ptr = txt_reply_ptr.next _lib.ares_free_data(txt_reply[0]) status = None else: raise ValueError("invalid query type specified") return result, status class Channel: __qtypes__ = (_lib.T_A, _lib.T_AAAA, _lib.T_ANY, _lib.T_CNAME, _lib.T_MX, _lib.T_NAPTR, _lib.T_NS, _lib.T_PTR, _lib.T_SOA, _lib.T_SRV, _lib.T_TXT) def __init__(self, flags = None, timeout = None, tries = None, ndots = None, tcp_port = None, udp_port = None, servers = None, domains = None, lookups = None, sock_state_cb = None, socket_send_buffer_size = None, socket_receive_buffer_size = None, rotate = False, local_ip = None, local_dev = None, resolvconf_path = None): channel = _ffi.new("ares_channel *") options = _ffi.new("struct ares_options *") optmask = 0 if flags is not None: options.flags = flags optmask = optmask | _lib.ARES_OPT_FLAGS if timeout is not None: options.timeout = int(timeout * 1000) optmask = optmask | _lib.ARES_OPT_TIMEOUTMS if tries is not None: options.tries = tries optmask = optmask | _lib.ARES_OPT_TRIES if ndots is not None: options.ndots = ndots optmask = optmask | _lib.ARES_OPT_NDOTS if tcp_port is not None: options.tcp_port = tcp_port optmask = optmask | _lib.ARES_OPT_TCP_PORT if udp_port is not None: options.udp_port = udp_port optmask = optmask | _lib.ARES_OPT_UDP_PORT if socket_send_buffer_size is not None: options.socket_send_buffer_size = socket_send_buffer_size optmask = optmask | _lib.ARES_OPT_SOCK_SNDBUF if socket_receive_buffer_size is not None: options.socket_receive_buffer_size = socket_receive_buffer_size optmask = optmask | _lib.ARES_OPT_SOCK_RCVBUF if sock_state_cb: if not callable(sock_state_cb): raise TypeError("sock_state_cb is not callable") userdata = _ffi.new_handle(sock_state_cb) # This must be kept alive while the channel is alive. self._sock_state_cb_handle = userdata options.sock_state_cb = _lib._sock_state_cb options.sock_state_cb_data = userdata optmask = optmask | _lib.ARES_OPT_SOCK_STATE_CB if lookups: options.lookups = _ffi.new('char[]', ascii_bytes(lookups)) optmask = optmask | _lib.ARES_OPT_LOOKUPS if domains: strs = [_ffi.new("char[]", ascii_bytes(i)) for i in domains] c = _ffi.new("char *[%d]" % (len(domains) + 1)) for i in range(len(domains)): c[i] = strs[i] options.domains = c options.ndomains = len(domains) optmask = optmask | _lib.ARES_OPT_DOMAINS if rotate: optmask = optmask | _lib.ARES_OPT_ROTATE if resolvconf_path is not None: optmask = optmask | _lib.ARES_OPT_RESOLVCONF options.resolvconf_path = _ffi.new('char[]', ascii_bytes(resolvconf_path)) r = _lib.ares_init_options(channel, options, optmask) if r != _lib.ARES_SUCCESS: raise AresError('Failed to initialize c-ares channel') self._channel = _ffi.gc(channel, lambda x: _lib.ares_destroy(x[0])) if servers: self.servers = servers if local_ip: self.set_local_ip(local_ip) if local_dev: self.set_local_dev(local_dev) def cancel(self): _lib.ares_cancel(self._channel[0]) @property def servers(self): servers = _ffi.new("struct ares_addr_node **") r = _lib.ares_get_servers(self._channel[0], servers) if r != _lib.ARES_SUCCESS: raise AresError(r, errno.strerror(r)) server_list = [] server = _ffi.new("struct ares_addr_node **", servers[0]) while True: if server == _ffi.NULL: break ip = _ffi.new("char []", _lib.INET6_ADDRSTRLEN) s = server[0] if _ffi.NULL != _lib.ares_inet_ntop(s.family, _ffi.addressof(s.addr), ip, _lib.INET6_ADDRSTRLEN): server_list.append(maybe_str(_ffi.string(ip, _lib.INET6_ADDRSTRLEN))) server = s.next return server_list @servers.setter def servers(self, servers): c = _ffi.new("struct ares_addr_node[%d]" % len(servers)) for i, server in enumerate(servers): if _lib.ares_inet_pton(socket.AF_INET, ascii_bytes(server), _ffi.addressof(c[i].addr.addr4)) == 1: c[i].family = socket.AF_INET elif _lib.ares_inet_pton(socket.AF_INET6, ascii_bytes(server), _ffi.addressof(c[i].addr.addr6)) == 1: c[i].family = socket.AF_INET6 else: raise ValueError("invalid IP address") if i > 0: c[i - 1].next = _ffi.addressof(c[i]) r = _lib.ares_set_servers(self._channel[0], c) if r != _lib.ARES_SUCCESS: raise AresError(r, errno.strerror(r)) def getsock(self): rfds = [] wfds = [] socks = _ffi.new("ares_socket_t [%d]" % _lib.ARES_GETSOCK_MAXNUM) bitmask = _lib.ares_getsock(self._channel[0], socks, _lib.ARES_GETSOCK_MAXNUM) for i in range(_lib.ARES_GETSOCK_MAXNUM): if _lib.ARES_GETSOCK_READABLE(bitmask, i): rfds.append(socks[i]) if _lib.ARES_GETSOCK_WRITABLE(bitmask, i): wfds.append(socks[i]) return rfds, wfds def process_fd(self, read_fd, write_fd): _lib.ares_process_fd(self._channel[0], _ffi.cast("ares_socket_t", read_fd), _ffi.cast("ares_socket_t", write_fd)) def timeout(self, t = None): maxtv = _ffi.NULL tv = _ffi.new("struct timeval*") if t is not None: if t >= 0.0: maxtv = _ffi.new("struct timeval*") maxtv.tv_sec = int(math.floor(t)) maxtv.tv_usec = int(math.fmod(t, 1.0) * 1000000) else: raise ValueError("timeout needs to be a positive number or None") _lib.ares_timeout(self._channel[0], maxtv, tv) if tv == _ffi.NULL: return 0.0 return (tv.tv_sec + tv.tv_usec / 1000000.0) def gethostbyaddr(self, addr, callback): if not callable(callback): raise TypeError("a callable is required") addr4 = _ffi.new("struct in_addr*") addr6 = _ffi.new("struct ares_in6_addr*") if _lib.ares_inet_pton(socket.AF_INET, ascii_bytes(addr), (addr4)) == 1: address = addr4 family = socket.AF_INET elif _lib.ares_inet_pton(socket.AF_INET6, ascii_bytes(addr), (addr6)) == 1: address = addr6 family = socket.AF_INET6 else: raise ValueError("invalid IP address") userdata = _ffi.new_handle(callback) _global_set.add(userdata) _lib.ares_gethostbyaddr(self._channel[0], address, _ffi.sizeof(address[0]), family, _lib._host_cb, userdata) def gethostbyname(self, name, family, callback): if not callable(callback): raise TypeError("a callable is required") userdata = _ffi.new_handle(callback) _global_set.add(userdata) _lib.ares_gethostbyname(self._channel[0], parse_name(name), family, _lib._host_cb, userdata) def query(self, name, query_type, callback): self._do_query(_lib.ares_query, name, query_type, callback) def search(self, name, query_type, callback): self._do_query(_lib.ares_search, name, query_type, callback) def _do_query(self, func, name, query_type, callback): if not callable(callback): raise TypeError('a callable is required') if query_type not in self.__qtypes__: raise ValueError('invalid query type specified') userdata = _ffi.new_handle((callback, query_type)) _global_set.add(userdata) func(self._channel[0], parse_name(name), _lib.C_IN, query_type, _lib._query_cb, userdata) def set_local_ip(self, ip): addr4 = _ffi.new("struct in_addr*") addr6 = _ffi.new("struct ares_in6_addr*") if _lib.ares_inet_pton(socket.AF_INET, ascii_bytes(ip), addr4) == 1: _lib.ares_set_local_ip4(self._channel[0], socket.ntohl(addr4.s_addr)) elif _lib.ares_inet_pton(socket.AF_INET6, ascii_bytes(ip), addr6) == 1: _lib.ares_set_local_ip6(self._channel[0], addr6) else: raise ValueError("invalid IP address") def getnameinfo(self, ip_port, flags, callback): if not callable(callback): raise TypeError("a callable is required") ip, port = ip_port if port < 0 or port > 65535: raise ValueError("port must be between 0 and 65535") sa4 = _ffi.new("struct sockaddr_in*") sa6 = _ffi.new("struct sockaddr_in6*") if _lib.ares_inet_pton(socket.AF_INET, ascii_bytes(ip), _ffi.addressof(sa4.sin_addr)) == 1: sa4.sin_family = socket.AF_INET sa4.sin_port = socket.htons(port) sa = sa4 elif _lib.ares_inet_pton(socket.AF_INET6, ascii_bytes(ip), _ffi.addressof(sa6.sin6_addr)) == 1: sa6.sin6_family = socket.AF_INET6 sa6.sin6_port = socket.htons(port) sa = sa6 else: raise ValueError("invalid IP address") userdata = _ffi.new_handle(callback) _global_set.add(userdata) _lib.ares_getnameinfo(self._channel[0], _ffi.cast("struct sockaddr*", sa), _ffi.sizeof(sa[0]), flags, _lib._nameinfo_cb, userdata) def set_local_dev(self, dev): _lib.ares_set_local_dev(self._channel[0], dev) class AresResult: __slots__ = () def __repr__(self): attrs = ['%s=%s' % (a, getattr(self, a)) for a in self.__slots__] return '<%s> %s' % (self.__class__.__name__, ', '.join(attrs)) # DNS query result types # class ares_query_a_result(AresResult): __slots__ = ('host', 'ttl') type = 'A' def __init__(self, ares_addrttl): buf = _ffi.new("char[]", _lib.INET6_ADDRSTRLEN) _lib.ares_inet_ntop(socket.AF_INET, _ffi.addressof(ares_addrttl.ipaddr), buf, _lib.INET6_ADDRSTRLEN) self.host = maybe_str(_ffi.string(buf, _lib.INET6_ADDRSTRLEN)) self.ttl = ares_addrttl.ttl class ares_query_aaaa_result(AresResult): __slots__ = ('host', 'ttl') type = 'AAAA' def __init__(self, ares_addrttl): buf = _ffi.new("char[]", _lib.INET6_ADDRSTRLEN) _lib.ares_inet_ntop(socket.AF_INET6, _ffi.addressof(ares_addrttl.ip6addr), buf, _lib.INET6_ADDRSTRLEN) self.host = maybe_str(_ffi.string(buf, _lib.INET6_ADDRSTRLEN)) self.ttl = ares_addrttl.ttl class ares_query_cname_result(AresResult): __slots__ = ('cname', 'ttl') type = 'CNAME' def __init__(self, host): self.cname = maybe_str(_ffi.string(host.h_name)) self.ttl = -1 class ares_query_mx_result(AresResult): __slots__ = ('host', 'priority', 'ttl') type = 'MX' def __init__(self, mx): self.host = maybe_str(_ffi.string(mx.host)) self.priority = mx.priority self.ttl = mx.ttl class ares_query_naptr_result(AresResult): __slots__ = ('order', 'preference', 'flags', 'service', 'regex', 'replacement', 'ttl') type = 'NAPTR' def __init__(self, naptr): self.order = naptr.order self.preference = naptr.preference self.flags = maybe_str(_ffi.string(naptr.flags)) self.service = maybe_str(_ffi.string(naptr.service)) self.regex = maybe_str(_ffi.string(naptr.regexp)) self.replacement = maybe_str(_ffi.string(naptr.replacement)) self.ttl = naptr.ttl class ares_query_ns_result(AresResult): __slots__ = ('host', 'ttl') type = 'NS' def __init__(self, ns): self.host = maybe_str(_ffi.string(ns)) self.ttl = -1 class ares_query_ptr_result(AresResult): __slots__ = ('name', 'ttl', 'aliases') type = 'PTR' def __init__(self, hostent, ttl, aliases): self.name = maybe_str(_ffi.string(hostent.h_name)) self.ttl = ttl self.aliases = aliases class ares_query_soa_result(AresResult): __slots__ = ('nsname', 'hostmaster', 'serial', 'refresh', 'retry', 'expires', 'minttl', 'ttl') type = 'SOA' def __init__(self, soa): self.nsname = maybe_str(_ffi.string(soa.nsname)) self.hostmaster = maybe_str(_ffi.string(soa.hostmaster)) self.serial = soa.serial self.refresh = soa.refresh self.retry = soa.retry self.expires = soa.expire self.minttl = soa.minttl self.ttl = soa.ttl class ares_query_srv_result(AresResult): __slots__ = ('host', 'port', 'priority', 'weight', 'ttl') type = 'SRV' def __init__(self, srv): self.host = maybe_str(_ffi.string(srv.host)) self.port = srv.port self.priority = srv.priority self.weight = srv.weight self.ttl = srv.ttl class ares_query_txt_result(AresResult): __slots__ = ('text', 'ttl') type = 'TXT' def __init__(self, txt_chunk): self.text = maybe_str(txt_chunk.text) self.ttl = txt_chunk.ttl class ares_query_txt_result_chunk(AresResult): __slots__ = ('text', 'ttl') type = 'TXT' def __init__(self, txt): self.text = _ffi.string(txt.txt) self.ttl = txt.ttl # Other result types # class ares_host_result(AresResult): __slots__ = ('name', 'aliases', 'addresses') def __init__(self, hostent): self.name = maybe_str(_ffi.string(hostent.h_name)) self.aliases = [] self.addresses = [] i = 0 while hostent.h_aliases[i] != _ffi.NULL: self.aliases.append(maybe_str(_ffi.string(hostent.h_aliases[i]))) i += 1 i = 0 while hostent.h_addr_list[i] != _ffi.NULL: buf = _ffi.new("char[]", _lib.INET6_ADDRSTRLEN) if _ffi.NULL != _lib.ares_inet_ntop(hostent.h_addrtype, hostent.h_addr_list[i], buf, _lib.INET6_ADDRSTRLEN): self.addresses.append(maybe_str(_ffi.string(buf, _lib.INET6_ADDRSTRLEN))) i += 1 class ares_nameinfo_result(AresResult): __slots__ = ('node', 'service') def __init__(self, node, service): self.node = maybe_str(_ffi.string(node)) self.service = maybe_str(_ffi.string(service)) if service != _ffi.NULL else None __all__ = exported_pycares_symbols + list(exported_pycares_symbols_map.keys()) + ['AresError', 'Channel', 'errno', '__version__'] del exported_pycares_symbols, exported_pycares_symbols_map pycares-pycares-3.1.1/src/pycares/__main__.py000066400000000000000000000051621360572117400211670ustar00rootroot00000000000000 import collections.abc import pycares import select import socket import sys def wait_channel(channel): while True: read_fds, write_fds = channel.getsock() if not read_fds and not write_fds: break timeout = channel.timeout() if not timeout: channel.process_fd(pycares.ARES_SOCKET_BAD, pycares.ARES_SOCKET_BAD) continue rlist, wlist, xlist = select.select(read_fds, write_fds, [], timeout) for fd in rlist: channel.process_fd(fd, pycares.ARES_SOCKET_BAD) for fd in wlist: channel.process_fd(pycares.ARES_SOCKET_BAD, fd) def cb(result, error): if error is not None: print('Error: (%d) %s' % (error, pycares.errno.strerror(error))) else: parts = [ ';; QUESTION SECTION:', ';%s\t\t\tIN\t%s' % (hostname, qtype.upper()), '', ';; ANSWER SECTION:' ] if not isinstance(result, collections.abc.Iterable): result = [result] for r in result: txt = '%s\t\t%d\tIN\t%s' % (hostname, r.ttl, r.type) if r.type in ('A', 'AAAA'): parts.append('%s\t%s' % (txt, r.host)) elif r.type == 'CNAME': parts.append('%s\t%s' % (txt, r.cname)) elif r.type == 'MX': parts.append('%s\t%d %s' % (txt, r.priority, r.host)) elif r.type == 'NAPTR': parts.append('%s\t%d %d "%s" "%s" "%s" %s' % (txt, r.order, r.preference, r.flags, r.service, r.regex, r.replacement)) elif r.type == 'NS': parts.append('%s\t%s' % (txt, r.host)) elif r.type == 'PTR': parts.append('%s\t%s' % (txt, r.name)) elif r.type == 'SOA': parts.append('%s\t%s %s %d %d %d %d %d' % (txt, r.nsname, r.hostmaster, r.serial, r.refresh, r.retry, r.expires, r.minttl)) elif r.type == 'SRV': parts.append('%s\t%d %d %d %s' % (txt, r.priority, r.weight, r.port, r.host)) elif r.type == 'TXT': parts.append('%s\t"%s"' % (txt, r.text)) print('\n'.join(parts)) channel = pycares.Channel() if len(sys.argv) not in (2, 3): print('Invalid arguments! Usage: python -m pycares [query_type] hostname') sys.exit(1) if len(sys.argv) == 2: _, hostname = sys.argv qtype = 'A' else: _, qtype, hostname = sys.argv try: query_type = getattr(pycares, 'QUERY_TYPE_%s' % qtype.upper()) except Exception: print('Invalid query type: %s' % qtype) sys.exit(1) channel.query(hostname, query_type, cb) wait_channel(channel) pycares-pycares-3.1.1/src/pycares/_version.py000066400000000000000000000000271360572117400212660ustar00rootroot00000000000000 __version__ = '3.1.1' pycares-pycares-3.1.1/src/pycares/errno.py000066400000000000000000000017731360572117400206000ustar00rootroot00000000000000 from ._cares import ffi as _ffi, lib as _lib from .utils import maybe_str exported_pycares_symbols = [ 'ARES_SUCCESS', # error codes 'ARES_ENODATA', 'ARES_EFORMERR', 'ARES_ESERVFAIL', 'ARES_ENOTFOUND', 'ARES_ENOTIMP', 'ARES_EREFUSED', 'ARES_EBADQUERY', 'ARES_EBADNAME', 'ARES_EBADFAMILY', 'ARES_EBADRESP', 'ARES_ECONNREFUSED', 'ARES_ETIMEOUT', 'ARES_EOF', 'ARES_EFILE', 'ARES_ENOMEM', 'ARES_EDESTRUCTION', 'ARES_EBADSTR', 'ARES_EBADFLAGS', 'ARES_ENONAME', 'ARES_EBADHINTS', 'ARES_ENOTINITIALIZED', 'ARES_ELOADIPHLPAPI', 'ARES_EADDRGETNETWORKPARAMS', 'ARES_ECANCELLED', ] errorcode = {} for symbol in exported_pycares_symbols: value = getattr(_lib, symbol) globals()[symbol] = value globals()["errorcode"][value] = symbol def strerror(code): return maybe_str(_ffi.string(_lib.ares_strerror(code))) __all__ = exported_pycares_symbols + ['errorcode', 'strerror'] del exported_pycares_symbols pycares-pycares-3.1.1/src/pycares/utils.py000066400000000000000000000024771360572117400206150ustar00rootroot00000000000000 try: import idna as idna2008 except ImportError: idna2008 = None def ascii_bytes(data): if isinstance(data, str): return data.encode('ascii') if isinstance(data, bytes): return data raise TypeError('only str (ascii encoding) and bytes are supported') def maybe_str(data): if isinstance(data, str): return data if isinstance(data, bytes): try: return data.decode('ascii') except UnicodeDecodeError: return data raise TypeError('only str (ascii encoding) and bytes are supported') def is_all_ascii(text): for c in text: if ord(c) > 0x7f: return False return True def parse_name_idna2008(name): parts = name.split('.') r = [] for part in parts: if is_all_ascii(part): r.append(part.encode('ascii')) else: r.append(idna2008.encode(part)) return b'.'.join(r) def parse_name(name): if isinstance(name, str): if is_all_ascii(name): return name.encode('ascii') if idna2008 is not None: return parse_name_idna2008(name) return name.encode('idna') if isinstance(name, bytes): return name raise TypeError('only str and bytes are supported') __all__ = ['ascii_bytes', 'maybe_str', 'parse_name'] pycares-pycares-3.1.1/tasks.py000066400000000000000000000005511360572117400163340ustar00rootroot00000000000000 import re from invoke import task def get_version(): return re.search(r"""__version__\s+=\s+(?P['"])(?P.+?)(?P=quote)""", open('src/pycares/_version.py').read()).group('version') @task def release(c): version = get_version() c.run("git tag -a pycares-{0} -m \"pycares {0} release\"".format(version)) c.run("git push --tags") pycares-pycares-3.1.1/tests/000077500000000000000000000000001360572117400157765ustar00rootroot00000000000000pycares-pycares-3.1.1/tests/fixtures/000077500000000000000000000000001360572117400176475ustar00rootroot00000000000000pycares-pycares-3.1.1/tests/fixtures/badresolv.conf000066400000000000000000000000231360572117400224720ustar00rootroot00000000000000nameserver 1.2.3.4 pycares-pycares-3.1.1/tests/tests.py000077500000000000000000000552531360572117400175270ustar00rootroot00000000000000#!/usr/bin/env python import ipaddress import os import select import socket import sys import unittest import pycares FIXTURES_PATH = os.path.realpath(os.path.join(os.path.dirname(__file__), 'fixtures')) class DNSTest(unittest.TestCase): def setUp(self): self.channel = pycares.Channel(timeout=5.0, tries=1) def tearDown(self): self.channel = None def wait(self): while True: read_fds, write_fds = self.channel.getsock() if not read_fds and not write_fds: break timeout = self.channel.timeout() if timeout == 0.0: self.channel.process_fd(pycares.ARES_SOCKET_BAD, pycares.ARES_SOCKET_BAD) continue rlist, wlist, xlist = select.select(read_fds, write_fds, [], timeout) for fd in rlist: self.channel.process_fd(fd, pycares.ARES_SOCKET_BAD) for fd in wlist: self.channel.process_fd(pycares.ARES_SOCKET_BAD, fd) def assertNoError(self, errorno): if errorno == pycares.errno.ARES_ETIMEOUT and (os.environ.get('APPVEYOR') or os.environ.get('TRAVIS')): raise unittest.SkipTest('timeout') self.assertEqual(errorno, None) @unittest.skipIf(sys.platform == 'win32', 'skipped on Windows') def test_gethostbyaddr(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.gethostbyaddr('127.0.0.1', cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_host_result) @unittest.skipIf(sys.platform == 'win32', 'skipped on Windows') @unittest.skipIf(os.environ.get('TRAVIS') is not None, 'skipped on Travis') def test_gethostbyaddr6(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.gethostbyaddr('::1', cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_host_result) @unittest.skipIf(sys.platform == 'win32', 'skipped on Windows') def test_gethostbyname(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.gethostbyname('localhost', socket.AF_INET, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_host_result) @unittest.skipIf(sys.platform == 'win32', 'skipped on Windows') def test_gethostbyname_small_timeout(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel = pycares.Channel(timeout=0.5, tries=1) self.channel.gethostbyname('localhost', socket.AF_INET, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_host_result) @unittest.skipIf(sys.platform == 'win32', 'skipped on Windows') def test_getnameinfo(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.getnameinfo(('127.0.0.1', 80), pycares.ARES_NI_LOOKUPHOST|pycares.ARES_NI_LOOKUPSERVICE, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_nameinfo_result) self.assertIn(self.result.node, ('localhost.localdomain', 'localhost')) self.assertEqual(self.result.service, 'http') def test_query_a(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_a_result) self.assertNotEqual(r.host, None) self.assertTrue(r.ttl >= 0) def test_query_a_bad(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('hgf8g2od29hdohid.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ENOTFOUND) def test_query_a_rotate(self): self.result, self.errorno = None, None self.errorno_count, self.count = 0, 0 def cb(result, errorno): self.result, self.errorno = result, errorno if errorno: self.errorno_count += 1 self.count += 1 self.channel = pycares.Channel(timeout=1.0, tries=1, rotate=True) self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.count, 3) self.assertEqual(self.errorno_count, 0) def test_query_aaaa(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('ipv6.google.com', pycares.QUERY_TYPE_AAAA, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_aaaa_result) self.assertNotEqual(r.host, None) self.assertTrue(r.ttl >= 0) def test_query_cname(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('www.amazon.com', pycares.QUERY_TYPE_CNAME, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_query_cname_result) def test_query_mx(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_MX, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_mx_result) self.assertTrue(r.ttl >= 0) def test_query_ns(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_NS, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_ns_result) def test_query_txt(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_TXT, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_txt_result) self.assertTrue(r.ttl >= 0) def test_query_txt_chunked(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('jobscoutdaily.com', pycares.QUERY_TYPE_TXT, cb) self.wait() self.assertNoError(self.errorno) # If the chunks are aggregated, only one TXT record should be visible. Three would show if they are not properly merged. # jobscoutdaily.com. 21600 IN TXT "v=spf1 " "include:emailcampaigns.net include:spf.dynect.net include:ccsend.com include:_spf.elasticemail.com ip4:67.200.116.86 ip4:67.200.116.90 ip4:67.200.116.97 ip4:67.200.116.111 ip4:74.199.198.2 " " ~all" self.assertEqual(len(self.result), 1) self.assertEqual(self.result[0].text, 'v=spf1 include:emailcampaigns.net include:spf.dynect.net include:ccsend.com include:_spf.elasticemail.com ip4:67.200.116.86 ip4:67.200.116.90 ip4:67.200.116.97 ip4:67.200.116.111 ip4:74.199.198.2 ~all') def test_query_txt_multiple_chunked(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('s-pulse.co.jp', pycares.QUERY_TYPE_TXT, cb) self.wait() self.assertNoError(self.errorno) # s-pulse.co.jp. 3600 IN TXT "MS=ms18955624" # s-pulse.co.jp. 3600 IN TXT "amazonses:lOgEcA9DwKFkIusIbgjpvZ2kCxaVADMlaxq9hSO3k4o=" # s-pulse.co.jp. 3600 IN TXT "v=spf1 " "include:spf-bma.mpme.jp ip4:202.248.11.9 ip4:202.248.11.10 " "ip4:218.223.68.132 ip4:218.223.68.77 ip4:210.254.139.121 " "ip4:211.128.73.121 ip4:210.254.139.122 ip4:211.128.73.122 " "ip4:210.254.139.123 ip4:211.128.73.123 ip4:210.254.139.124 " "ip4:211.128.73.124 ip4:210.254.139.13 ip4:211.128.73.13 " "ip4:52.68.199.198 include:spf.betrend.com " "include:spf.protection.outlook.com include:crmstyle.com " "~all" self.assertEqual(len(self.result), 3) def test_query_txt_bytes1(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_TXT, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_txt_result) self.assertIsInstance(r.text, str) # it's ASCII self.assertTrue(r.ttl >= 0) def test_query_txt_bytes2(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('wide.com.es', pycares.QUERY_TYPE_TXT, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_txt_result) self.assertIsInstance(r.text, bytes) self.assertTrue(r.ttl >= 0) def test_query_txt_multiple_chunked_with_non_ascii_content(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('txt-non-ascii.dns-test.hmnid.ru', pycares.QUERY_TYPE_TXT, cb) self.wait() self.assertNoError(self.errorno) # txt-non-ascii.dns-test.hmnid.ru. IN TXT "ascii string" "some\208misc\208stuff" self.assertEqual(len(self.result), 1) r = self.result[0] self.assertEqual(type(r), pycares.ares_query_txt_result) self.assertIsInstance(r.text, bytes) self.assertTrue(r.ttl >= 0) def test_query_soa(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_SOA, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_query_soa_result) self.assertTrue(self.result.ttl >= 0) def test_query_srv(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('_xmpp-server._tcp.google.com', pycares.QUERY_TYPE_SRV, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_srv_result) self.assertTrue(r.ttl >= 0) def test_query_naptr(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('sip2sip.info', pycares.QUERY_TYPE_NAPTR, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_naptr_result) self.assertTrue(r.ttl >= 0) def test_query_ptr(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno ip = '8.8.8.8' self.channel.query(ipaddress.ip_address(ip).reverse_pointer, pycares.QUERY_TYPE_PTR, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_query_ptr_result) self.assertIsInstance(self.result.ttl, int) self.assertGreaterEqual(self.result.ttl, 0) self.assertLessEqual(self.result.ttl, 2**31-1) self.assertEqual(type(self.result.aliases), list) def test_query_ptr_ipv6(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno ip = '2001:4860:4860::8888' self.channel.query(ipaddress.ip_address(ip).reverse_pointer, pycares.QUERY_TYPE_PTR, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_query_ptr_result) self.assertIsInstance(self.result.ttl, int) self.assertGreaterEqual(self.result.ttl, 0) self.assertLessEqual(self.result.ttl, 2**31-1) self.assertEqual(type(self.result.aliases), list) def test_query_any(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_ANY, cb) self.wait() self.assertNoError(self.errorno) self.assertTrue(len(self.result) > 1) def test_query_cancelled(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('google.com', pycares.QUERY_TYPE_NS, cb) self.channel.cancel() self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ECANCELLED) def test_query_bad_type(self): self.assertRaises(ValueError, self.channel.query, 'google.com', 667, lambda *x: None) self.wait() def test_query_timeout(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.servers = ['1.2.3.4'] self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ETIMEOUT) def test_query_onion(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('foo.onion', pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ENOTFOUND) def test_channel_nameservers(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel = pycares.Channel(timeout=5.0, tries=1, servers=['8.8.8.8']) self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertNoError(self.errorno) def test_channel_nameservers2(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.servers = ['8.8.8.8'] self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertNoError(self.errorno) def test_channel_nameservers3(self): servers = ['8.8.8.8', '8.8.4.4'] self.channel.servers = servers servers2 = self.channel.servers self.assertEqual(servers, servers2) def test_channel_local_ip(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel = pycares.Channel(timeout=5.0, tries=1, servers=['8.8.8.8'], local_ip='127.0.0.1') self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ECONNREFUSED) def test_channel_local_ip2(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.servers = ['8.8.8.8'] self.channel.set_local_ip('127.0.0.1') self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ECONNREFUSED) self.assertRaises(ValueError, self.channel.set_local_ip, 'an invalid ip') def test_channel_timeout(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel = pycares.Channel(timeout=0.5, tries=1) self.channel.gethostbyname('google.com', socket.AF_INET, cb) timeout = self.channel.timeout() self.assertTrue(timeout > 0.0) self.channel.cancel() self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ECANCELLED) def test_import_errno(self): from pycares.errno import ARES_SUCCESS self.assertTrue(True) def test_result_not_ascii(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.query('ayesas.com', pycares.QUERY_TYPE_SOA, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_query_soa_result) self.assertIsInstance(self.result.hostmaster, bytes) # it's not ASCII self.assertTrue(self.result.ttl >= 0) def test_idna_encoding(self): host = 'españa.icom.museum' self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno # try encoding it as utf-8 self.channel.gethostbyname(host.encode(), socket.AF_INET, cb) self.wait() self.assertEqual(self.errorno, pycares.errno.ARES_ENOTFOUND) self.assertEqual(self.result, None) # use it as is (it's IDNA encoded internally) self.channel.gethostbyname(host, socket.AF_INET, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_host_result) def test_idna_encoding_query_a(self): host = 'españa.icom.museum' self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno # try encoding it as utf-8 self.channel.query(host.encode(), pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.errorno, pycares.errno.ARES_ENOTFOUND) self.assertEqual(self.result, None) # use it as is (it's IDNA encoded internally) self.channel.query(host, pycares.QUERY_TYPE_A, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_a_result) self.assertNotEqual(r.host, None) def test_idna2008_encoding(self): try: import idna except ImportError: raise unittest.SkipTest('idna module not installed') host = 'straße.de' self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel.gethostbyname(host, socket.AF_INET, cb) self.wait() self.assertNoError(self.errorno) self.assertEqual(type(self.result), pycares.ares_host_result) self.assertTrue('81.169.145.78' in self.result.addresses) @unittest.skipIf(sys.platform == 'win32', 'skipped on Windows') def test_custom_resolvconf(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel = pycares.Channel(tries=1, timeout=2.0, resolvconf_path=os.path.join(FIXTURES_PATH, 'badresolv.conf')) self.channel.query('google.com', pycares.QUERY_TYPE_A, cb) self.wait() self.assertEqual(self.result, None) self.assertEqual(self.errorno, pycares.errno.ARES_ETIMEOUT) def test_errorcode_dict(self): for err in ('ARES_SUCCESS', 'ARES_ENODATA', 'ARES_ECANCELLED'): val = getattr(pycares.errno, err) self.assertEqual(pycares.errno.errorcode[val], err) def test_search(self): self.result, self.errorno = None, None def cb(result, errorno): self.result, self.errorno = result, errorno self.channel = pycares.Channel(timeout=5.0, tries=1, domains=['google.com']) self.channel.search('cloud', pycares.QUERY_TYPE_A, cb) self.wait() self.assertNoError(self.errorno) for r in self.result: self.assertEqual(type(r), pycares.ares_query_a_result) self.assertNotEqual(r.host, None) def test_lookup(self): channel = pycares.Channel( lookups="b", timeout=1, tries=1, socket_receive_buffer_size=4096, servers=["8.8.8.8", "8.8.4.4"], tcp_port=53, udp_port=53, rotate=True, ) def on_result(result, errorno): self.result, self.errorno = result, errorno for domain in [ "google.com", "microsoft.com", "apple.com", "amazon.com", "baidu.com", "alipay.com", "tencent.com", ]: self.result, self.errorno = None, None self.channel.query(domain, pycares.QUERY_TYPE_A, on_result) self.wait() self.assertNoError(self.errorno) self.assertTrue(self.result is not None and len(self.result) > 0) for r in self.result: self.assertEqual(type(r), pycares.ares_query_a_result) self.assertNotEqual(r.host, None) self.assertTrue(r.type == 'A') self.assertTrue(r.ttl >= 0) def test_strerror_str(self): for key in pycares.errno.errorcode: self.assertTrue(type(pycares.errno.strerror(key)), str) if __name__ == '__main__': unittest.main(verbosity=2) pycares-pycares-3.1.1/tox.ini000066400000000000000000000002021360572117400161410ustar00rootroot00000000000000[tox] envlist = py35, py36, py37 [testenv] commands = python tests/tests.py [testenv:idna] extras = idna basepython = python3