pax_global_header00006660000000000000000000000064127745677770014547gustar00rootroot0000000000000052 comment=4853d895a69d5850dad758f2d9c943cff1f0b78f pycares-pycares-2.1.1/000077500000000000000000000000001277456777700146625ustar00rootroot00000000000000pycares-pycares-2.1.1/.gitignore000066400000000000000000000002471277456777700166550ustar00rootroot00000000000000#python specific *.pyc *.so build/* dist/* MANIFEST __pycache__/ *.egg-info/ ## generic files to ignore *~ *.lock *.DS_Store *.swp *.out *.o *.a .tox/ docs/_build/ pycares-pycares-2.1.1/.travis.yml000066400000000000000000000014421277456777700167740ustar00rootroot00000000000000language: python sudo: false python: - "2.7" - "3.3" - "3.4" - "3.5" - "pypy" install: - | if [ "$TRAVIS_PYTHON_VERSION" = "pypy" ]; then export PYENV_ROOT="$HOME/.pyenv" if [ -f "$PYENV_ROOT/bin/pyenv" ]; then pushd "$PYENV_ROOT" && git pull && popd else rm -rf "$PYENV_ROOT" && git clone --depth 1 https://github.com/yyuu/pyenv.git "$PYENV_ROOT" fi export PYPY_VERSION="5.4.1" "$PYENV_ROOT/bin/pyenv" install --skip-existing "pypy-$PYPY_VERSION" virtualenv --python="$PYENV_ROOT/versions/pypy-$PYPY_VERSION/bin/python" "$HOME/virtualenvs/pypy-$PYPY_VERSION" source "$HOME/virtualenvs/pypy-$PYPY_VERSION/bin/activate" fi - python -V - python setup.py install script: - ./tests/tests.py pycares-pycares-2.1.1/ChangeLog000066400000000000000000000062401277456777700164360ustar00rootroot00000000000000Version 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-2.1.1/LICENSE000066400000000000000000000020561277456777700156720ustar00rootroot00000000000000Copyright (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-2.1.1/MANIFEST.in000066400000000000000000000006011277456777700164150ustar00rootroot00000000000000include README.rst LICENSE TODO ChangeLog include build_inplace setup.py setup_cares.py tox.ini recursive-include docs * recursive-include examples * recursive-include src * recursive-include tests * recursive-include deps * recursive-include pycares * recursive-exclude * __pycache__ recursive-exclude * *.py[co] recursive-exclude * *.[ao] recursive-exclude * *.so prune docs/_build pycares-pycares-2.1.1/README.rst000066400000000000000000000045521277456777700163570ustar00rootroot00000000000000 ==================================== pycares: 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 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. Building ======== Linux: :: ./build_inplace Mac OSX: :: (XCode needs to be installed) export ARCHFLAGS="-arch x86_64" ./build_inplace Microsoft Windows (with Visual Studio 2008, 2010, 2015 or the Windows SDK): :: ./build_inplace 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 py27,py33,py34,py35`` this will run the test suite on Python 2.7, 3.3, 3.4 and 3.5 (you'll need to have them installed beforehand) Author ====== Saúl Ibarra Corretgé License ======= Unless stated otherwise on-file pycares uses the MIT license, check LICENSE file. Python versions =============== Python >= 2.7 and >= 3.3 are supported. Other older versions might work too, but they are not actively tested. Both CPython and PyPy (tested with version 5) 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-2.1.1/TODO000066400000000000000000000000431277456777700153470ustar00rootroot00000000000000 - channel init options: sortlist pycares-pycares-2.1.1/appveyor.yml000066400000000000000000000052211277456777700172520ustar00rootroot00000000000000environment: 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:\\Python27" PYTHON_VERSION: "2.7.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python27-x64" PYTHON_VERSION: "2.7.x" PYTHON_ARCH: "64" PYCARES_CFFI: "1" # force CFFI build - PYTHON: "C:\\Python27-x64" PYTHON_VERSION: "2.7.x" PYTHON_ARCH: "64" - PYTHON: "C:\\Python33" PYTHON_VERSION: "3.3.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python33-x64" PYTHON_VERSION: "3.3.x" PYTHON_ARCH: "64" - PYTHON: "C:\\Python34" PYTHON_VERSION: "3.4.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python34-x64" PYTHON_VERSION: "3.4.x" PYTHON_ARCH: "64" - PYTHON: "C:\\Python35" PYTHON_VERSION: "3.5.x" PYTHON_ARCH: "32" - PYTHON: "C:\\Python35-x64" PYTHON_VERSION: "3.5.x" PYTHON_ARCH: "64" PYCARES_CFFI: "1" # force CFFI build - PYTHON: "C:\\Python35-x64" PYTHON_VERSION: "3.5.x" PYTHON_ARCH: "64" 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 - "pip install --disable-pip-version-check --user --upgrade pip" # Install wheel - "%CMD_IN_ENV% pip install wheel" 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" after_test: # If tests are successful, create binary packages for the project. - "%CMD_IN_ENV% python setup.py bdist_wheel" - ps: "ls dist" artifacts: # Archive the generated packages in the ci.appveyor.com build report. - path: dist\*.whl #on_success: # - TODO: upload the content of dist/*.whl to a public wheelhouse # pycares-pycares-2.1.1/appveyor/000077500000000000000000000000001277456777700165275ustar00rootroot00000000000000pycares-pycares-2.1.1/appveyor/install.ps1000066400000000000000000000072421277456777700206270ustar00rootroot00000000000000# 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-2.1.1/appveyor/run_with_env.cmd000066400000000000000000000064461277456777700217350ustar00rootroot00000000000000:: 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-2.1.1/build_inplace000077500000000000000000000001271277456777700174020ustar00rootroot00000000000000#!/bin/bash rm -f core.* rm -rf build python setup.py build_ext --inplace --force $@ pycares-pycares-2.1.1/deps/000077500000000000000000000000001277456777700156155ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/000077500000000000000000000000001277456777700167675ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/000077500000000000000000000000001277456777700175565ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/AUTHORS000066400000000000000000000020041277456777700206220ustar00rootroot00000000000000c-ares is based on ares, and these are the people that have worked on it since the fork was made: Albert Chin Alexander Lazic Alexey Simak Andreas Rieke Andrew Andkjar Andrew Ayer Andrew C. Morrow Ashish Sharma Ben Greear Ben Noordhuis BogDan Vatra Brad House Brad Spencer Bram Matthys Dan Fandrich Daniel Johnson Daniel Stenberg David Drysdale David Stuart Denis Bilenko Dima Tisnek Dirk Manske Dominick Meglio Doug Goldstein Doug Kwan Duncan Wilcox Eino Tuominen Erik Kline Fedor Indutny Frederic Germain George Neill Gisle Vanem Gregor Jasny Guenter Knauf Guilherme Balena Versiani Gunter Knauf Henrik Stoerner Jakub Hrozek James Bursa Jérémy Lal Lei Shi Marko Kreen Michael Wallner Mike Crowe Nick Alcock Nick Mathewson Nicolas "Pixel" Noble Patrik Thunstrom Peter Pentchev Phil Blundell Poul Thomas Lomholt Ravi Pratap Robin Cornelius Sebastian at basti79.de Shmulik Regev Stefan Bühler Steinar H. Gunderson Svante Karlsson Tofu Linden Tom Hughes Tor Arntsen Vlad Dinulescu William Ahern Yang Tse liren at vivisimo.com pycares-pycares-2.1.1/deps/c-ares/src/CHANGES000066400000000000000000000003741277456777700205550ustar00rootroot00000000000000This file no longer holds the changelog. Now you can generate it yourself like this: $ git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./git2changes.pl The older, manually edited, changelog is found in git named CHANGES.0 pycares-pycares-2.1.1/deps/c-ares/src/NEWS000066400000000000000000000015261277456777700202610ustar00rootroot00000000000000Major changes since: * see the CHANGES file Major changes in release 1.1.1: * ares should now compile as C++ code (no longer uses reserved word "class"). * Added SRV support to adig test program. * Fixed a few error handling bugs in query processing. Major changes in release 1.1.0: * Added ares_free_string() function so that memory can be freed in the same layer as it is allocated, a desirable feature in some environments. * A few of the ares_dns.h macros are fixed to use the proper bitwise operator. * Fixed a couple of fenceposts fixed in ares_expand_name()'s bounds-checking. * In process_timeouts(), extract query->next before calling next_server() and possibly freeing the query structure. * Casted arguments to ctype macros casted to unsigned char, since not all char values are valid inputs to those macros according to ANSI. pycares-pycares-2.1.1/deps/c-ares/src/README000066400000000000000000000050031277456777700204340ustar00rootroot00000000000000c-ares ====== This is c-ares, an asynchronous resolver library. It is intended for applications which need to perform DNS queries without blocking, or need to perform multiple DNS queries in parallel. The primary examples of such applications are servers which communicate with multiple clients and programs with graphical user interfaces. The full source code is available in the 'c-ares' release archives, and in a git repository: http://github.com/bagder/c-ares If you find bugs, correct flaws, have questions or have comments in general in regard to c-ares (or by all means the original ares too), get in touch with us on the c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares c-ares is of course distributed under the same MIT-style license as the original ares. You'll find all c-ares details and news here: http://c-ares.haxx.se/ NOTES FOR C-ARES HACKERS * The distributed ares_build.h file is only intended to be used on systems which can not run the also distributed configure script. * The distributed ares_build.h file is generated as a copy of ares_build.h.dist when the c-ares source code distribution archive file is originally created. * 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 before being able of compiling the library. * 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, this new file is generated from the ares_build.h.in template file. * If you intend to distribute an already compiled c-ares library you _MUST_ also distribute along with it the generated ares_build.h which has been used to compile it. Otherwise the library will be of no use for the users of the library that you have built. It is _your_ responsibility to provide this file. No one at the c-ares project can know how you have built the library. * File ares_build.h includes platform and configuration dependent info, and must not be modified by anyone. Configure script generates it for you. * We cannot assume anything else but very basic compiler features being present. While c-ares requires an ANSI C compiler to build, some of the earlier ANSI compilers clearly can't deal with some preprocessor operators. * Newlines must remain unix-style for older compilers' sake. * Comments must be written in the old-style /* unnested C-fashion */ pycares-pycares-2.1.1/deps/c-ares/src/README.cares000066400000000000000000000012611277456777700215320ustar00rootroot00000000000000c-ares ====== This package is based on ares 1.1.1 (written by Greg Hudson). Daniel Stenberg decided to fork and release a separate project since the original ares author didn't want the improvements that were vital for our use of it. This package is dubbed 'c-ares' since Daniel wanted this for use within the curl project (hence the letter C) and it makes a nice pun. c-ares is not API compatible with ares: a new name makes that more obvious to the public. The original libares was distributed at ftp://athena-dist.mit.edu:pub/ATHENA/ares (which seems to not be alive anymore). A local copy of the original ares package is kept here: http://c-ares.haxx.se/download/ares-1.1.1.tar.gz pycares-pycares-2.1.1/deps/c-ares/src/README.msvc000066400000000000000000000125261277456777700214130ustar00rootroot00000000000000 ___ __ _ _ __ ___ ___ / __| ___ / _` | '__/ _ \/ __| | (_ |___| (_| | | | __/\__ \ \___| \__,_|_| \___||___/ How to build c-ares using MSVC or Visual Studio ================================================= How to build using MSVC from the command line --------------------------------------------- Open a command prompt window and ensure that the environment is properly set up in order to use MSVC or Visual Studio compiler tools. Change to c-ares source folder where Makefile.msvc file is located and run: > nmake -f Makefile.msvc This will build all c-ares libraries as well as three sample programs. Once the above command has finished a new folder named MSVCXX will exist below the folder where makefile.msvc is found. The name of the folder depends on the MSVC compiler version being used to build c-ares. Below the MSVCXX folder there will exist four folders named 'cares', 'ahost', 'acountry', and 'adig'. The 'cares' folder is the one that holds the c-ares libraries you have just generated, the other three hold sample programs that use the libraries. The above command builds four versions of the c-ares library, dynamic and static versions and each one in release and debug flavours. Each of these is found in folders named dll-release, dll-debug, lib-release, and lib-debug, which hang from the 'cares' folder mentioned above. Each sample program also has folders with the same names to reflect which library version it is using. How to install using MSVC from the command line ----------------------------------------------- In order to allow easy usage of c-ares libraries it may be convenient to install c-ares libraries and header files to a common subdirectory tree. Once that c-ares libraries have been built using procedure described above, use same command prompt window to define environment variable INSTALL_DIR to designate the top subdirectory where installation of c-ares libraries and header files will be done. > set INSTALL_DIR=c:\c-ares Afterwards, run following command to actually perform the installation: > nmake -f Makefile.msvc install Installation procedure will copy c-ares libraries to subdirectory 'lib' and c-ares header files to subdirectory 'include' below the INSTALL_DIR subdir. When environment variable INSTALL_DIR is not defined, installation is done to c-ares source folder where Makefile.msvc file is located. How to build using Visual Studio 6 IDE -------------------------------------- A VC++ 6.0 reference workspace (vc6aws.dsw) is available within the 'vc' folder to allow proper building of the library and sample programs. 1) Open the vc6aws.dsw workspace with MSVC6's IDE. 2) Select 'Build' from top menu. 3) Select 'Batch Build' from dropdown menu. 4) Make sure that the sixteen project configurations are 'checked'. 5) Click on the 'Build' button. 6) Once the sixteen project configurations are built you are done. Dynamic and static c-ares libraries are built in debug and release flavours, and can be located each one in its own subdirectory, dll-debug, dll-release, lib-debug and lib-release, all of them below the 'vc\cares' subdirectory. In the same way four executable versions of each sample program are built, each using its respective library. The resulting sample executables are located in its own subdirectory, dll-debug, dll-release, lib-debug and lib-release, below the 'vc\acountry', 'vc\adig' and 'vc\ahost'folders. These reference VC++ 6.0 configurations are generated using the dynamic CRT. How to build using Visual Studio 2003 or newer IDE -------------------------------------------------- First you have to convert the VC++ 6.0 reference workspace and project files to the Visual Studio IDE version you are using, following next steps: 1) Open vc\vc6aws.dsw with VS20XX. 2) Allow VS20XX to update all projects and workspaces. 3) Save ALL and close VS20XX. 4) Open vc\vc6aws.sln with VS20XX. 5) Select batch build, check 'all' projects and click 'build' button. Same comments relative to generated files and folders as done above for Visual Studio 6 IDE apply here. Relationship between c-ares library file names and versions ----------------------------------------------------------- c-ares static release library version files: libcares.lib -> static release library c-ares static debug library version files: libcaresd.lib -> static debug library c-ares dynamic release library version files: cares.dll -> dynamic release library cares.lib -> import library for the dynamic release library cares.exp -> export file for the dynamic release library c-ares dynamic debug library version files: caresd.dll -> dynamic debug library caresd.lib -> import library for the dynamic debug library caresd.exp -> export file for the dynamic debug library caresd.pdb -> debug symbol file for the dynamic debug library How to use c-ares static libraries ---------------------------------- When using the c-ares static library in your program, you will have to define preprocessor symbol CARES_STATICLIB while building your program, otherwise you will get errors at linkage stage. Have Fun! pycares-pycares-2.1.1/deps/c-ares/src/TODO000066400000000000000000000013271277456777700202510ustar00rootroot00000000000000TODO ==== ares_reinit() - To allow an app to force a re-read of /etc/resolv.conf etc, pretty much like the res_init() resolver function offers ares_gethostbyname - When built to support IPv6, it needs to also support PF_UNSPEC or similar, so that an application can ask for any protocol and then c-ares would return all known resolves and not just explicitly IPv4 _or_ IPv6 resolves. ares_process - Upon next ABI breakage ares_process() should be changed to return 'int' and return ARES_ENOTINITIALIZED if ares_library_init() has not been called. ares_process_fd - Upon next ABI breakage ares_process_fd() should be changed to return 'int' and return ARES_ENOTINITIALIZED if library has not been initialized. pycares-pycares-2.1.1/deps/c-ares/src/ares.h000066400000000000000000000564021277456777700206700ustar00rootroot00000000000000 /* 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 */ /* * Define WIN32 when build target is Win32 API */ #if (defined(_WIN32) || defined(__WIN32__)) && \ !defined(WIN32) && !defined(__SYMBIAN32__) # define WIN32 #endif /*************************** libuv patch ***************/ /* * We want to avoid autoconf altogether since there are a finite number of * operating systems and simply build c-ares. Therefore we do not want the * configurations provided by ares_build.h since we are always statically * linking c-ares into libuv. Having a system dependent ares_build.h forces * all users of ares.h to include the correct ares_build.h. We do not care * about the linking checks provided by ares_rules.h. This would complicate * the libuv build process. */ #if defined(WIN32) /* Configure process defines this to 1 when it finds out that system */ /* header file ws2tcpip.h must be included by the external interface. */ /* #undef CARES_PULL_WS2TCPIP_H */ # include # include # include #else /* Not Windows */ # include # include # include #endif #if 0 /* The size of `long', as computed by sizeof. */ #define CARES_SIZEOF_LONG 4 #endif /* Integral data type used for ares_socklen_t. */ #define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t #if 0 /* The size of `ares_socklen_t', as computed by sizeof. */ #define CARES_SIZEOF_ARES_SOCKLEN_T 4 #endif /* Data type definition of ares_socklen_t. */ typedef int ares_socklen_t; #if 0 /* libuv disabled */ #include "ares_rules.h" /* c-ares rules enforcement */ #endif /*********************** end libuv patch ***************/ #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__) #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 #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__) # 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) /* 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; }; 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)); 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); 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); 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-2.1.1/deps/c-ares/src/ares__close_sockets.c000066400000000000000000000036421277456777700237400ustar00rootroot00000000000000 /* 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); sclose(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); sclose(server->udp_socket); server->udp_socket = ARES_SOCKET_BAD; } } pycares-pycares-2.1.1/deps/c-ares/src/ares__get_hostent.c000066400000000000000000000154551277456777700234300ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares__read_line.c000066400000000000000000000042201277456777700230130ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares__timeval.c000066400000000000000000000060531277456777700225400ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_cancel.c000066400000000000000000000042651277456777700221700ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_create_query.c000066400000000000000000000140451277456777700234300ustar00rootroot00000000000000 /* 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; /* 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 == '.') { 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) { 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 > (MAXCDNAME + HFIXEDSZ + QFIXEDSZ + (max_udp_size ? EDNSFIXEDSZ : 0))) { 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-2.1.1/deps/c-ares/src/ares_data.c000066400000000000000000000142641277456777700216540ustar00rootroot00000000000000 /* 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) { struct ares_data *ptr; if (!dataptr) return; #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) ares_free_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) ares_free_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) ares_free_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) ares_free_data(ptr->data.addr_node.next); break; case ARES_DATATYPE_ADDR_PORT_NODE: if (ptr->data.addr_port_node.next) ares_free_data(ptr->data.addr_port_node.next); break; case ARES_DATATYPE_NAPTR_REPLY: if (ptr->data.naptr_reply.next) ares_free_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); } /* ** 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-2.1.1/deps/c-ares/src/ares_data.h000066400000000000000000000060631277456777700216570ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_destroy.c000066400000000000000000000055721277456777700224360ustar00rootroot00000000000000 /* 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); } 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); 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-2.1.1/deps/c-ares/src/ares_dns.h000066400000000000000000000122721277456777700215310ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_expand_name.c000066400000000000000000000140021277456777700232100ustar00rootroot00000000000000 /* 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 */ 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 { 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. */ if (++indir > alen) 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-2.1.1/deps/c-ares/src/ares_expand_string.c000066400000000000000000000035071277456777700236060ustar00rootroot00000000000000 /* 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 { 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-2.1.1/deps/c-ares/src/ares_fds.c000066400000000000000000000036571277456777700215230ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_free_hostent.c000066400000000000000000000023561277456777700234270ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_free_string.c000066400000000000000000000014771277456777700232540ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_getenv.c000066400000000000000000000015421277456777700222260ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_getenv.h000066400000000000000000000016031277456777700222310ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_gethostbyaddr.c000066400000000000000000000207071277456777700236050ustar00rootroot00000000000000 /* 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); } else { addrlen = sizeof(aquery->addr.addrV6); status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV6, (int)addrlen, AF_INET6, &host); } end_aquery(aquery, status, host); } else if (status == ARES_EDESTRUCTION) 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 (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts) == ERROR_SUCCESS) { DWORD dwLength = MAX_PATH; RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, &dwLength); ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH); RegCloseKey(hkeyHosts); } } else if (platform == WIN_9X) GetWindowsDirectory(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-2.1.1/deps/c-ares/src/ares_gethostbyname.c000066400000000000000000000363671277456777700236240ustar00rootroot00000000000000 /* 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; } 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; #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 (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts) == ERROR_SUCCESS) { DWORD dwLength = MAX_PATH; RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, &dwLength); ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH); RegCloseKey(hkeyHosts); } } else if (platform == WIN_9X) GetWindowsDirectory(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-2.1.1/deps/c-ares/src/ares_getnameinfo.c000066400000000000000000000311641277456777700232350ustar00rootroot00000000000000 /* 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 static const char fmt_u[] = "%u"; static const char fmt_lu[] = "%lu"; char tmpbuf[IF_NAMESIZE + 2]; size_t bufl; const char *fmt = (sizeof(addr6->sin6_scope_id) > sizeof(unsigned int))? fmt_lu:fmt_u; 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)) { sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id); } else { if (if_indextoname(addr6->sin6_scope_id, &tmpbuf[1]) == NULL) sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id); } #else sprintf(&tmpbuf[1], fmt, 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; } pycares-pycares-2.1.1/deps/c-ares/src/ares_getopt.c000066400000000000000000000107211277456777700222370ustar00rootroot00000000000000/* * 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-2.1.1/deps/c-ares/src/ares_getopt.h000066400000000000000000000040051277456777700222420ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_getsock.c000066400000000000000000000044001277456777700223710ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_inet_net_pton.h000066400000000000000000000017261277456777700236140ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_init.c000066400000000000000000001646711277456777700217160ustar00rootroot00000000000000 /* 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 /* 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, 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; int status2; 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->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. */ if (status == ARES_SUCCESS) { 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 (status == ARES_SUCCESS) { 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. */ status2 = init_by_defaults(channel); if (status2 != ARES_SUCCESS) { DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n", ares_strerror(status))); if (status == ARES_SUCCESS) status = status2; } /* 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))); } if (status != ARES_SUCCESS) { /* Something failed; clean up memory we may have allocated. */ if (channel->servers) ares_free(channel->servers); 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); 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; strncpy((*dest)->local_dev_name, src->local_dev_name, sizeof(src->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) | (channel->optmask & ARES_OPT_ROTATE); /* 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; 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_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; } 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 = RegQueryValueEx(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 = RegQueryValueEx(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 = RegQueryValueEx(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 = RegQueryValueEx(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 = RegEnumKeyEx(hKeyParent, enumKeyIdx++, enumKeyName, &enumKeyNameBuffSize, 0, NULL, NULL, NULL); if (res != ERROR_SUCCESS) break; res = RegOpenKeyEx(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 = RegOpenKeyEx(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 = RegOpenKeyEx(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 = RegOpenKeyEx(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; } /* * commajoin() * * RTF code. */ static void commajoin(char **dst, const char *src) { char *tmp; if (*dst) { tmp = ares_malloc(strlen(*dst) + strlen(src) + 2); if (!tmp) return; sprintf(tmp, "%s,%s", *dst, src); ares_free(*dst); *dst = tmp; } else { *dst = ares_malloc(strlen(src) + 1); if (!*dst) return; strcpy(*dst, 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; } /* * 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; union { struct sockaddr *sa; struct sockaddr_in *sa4; struct sockaddr_in6 *sa6; } namesrvr; char txtaddr[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; *outptr = NULL; /* Verify run-time availability of GetAdaptersAddresses() */ if (ares_fpGetAdaptersAddresses == ZERO_NULL) return 0; ipaa = ares_malloc(Bufsz); if (!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 (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; if (! ares_inet_ntop(AF_INET, &namesrvr.sa4->sin_addr, txtaddr, sizeof(txtaddr))) continue; } else if (namesrvr.sa->sa_family == AF_INET6) { /* Windows apparently always reports some IPv6 DNS servers that * prefixed with fec0:0:0:ffff. These ususally do not point to * working DNS servers, so we ignore them. */ if (strncmp(txtaddr, "fec0:0:0:ffff:", 14) == 0) continue; if (memcmp(&namesrvr.sa6->sin6_addr, &ares_in6addr_any, sizeof(namesrvr.sa6->sin6_addr)) == 0) continue; if (! ares_inet_ntop(AF_INET6, &namesrvr.sa6->sin6_addr, txtaddr, sizeof(txtaddr))) continue; } else continue; commajoin(outptr, txtaddr); if (!*outptr) goto done; } } done: 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) { /* Use GetNetworkParams First in case of multiple adapter is enabled on this machine. GetAdaptersAddresses will retrive dummy dns servers. That will slowing DNS lookup. */ /* Try using IP helper API GetNetworkParams() */ if (get_DNS_NetworkParams(outptr)) return 1; /* Try using IP helper API GetAdaptersAddresses() */ if (get_DNS_AdaptersAddresses(outptr)) return 1; /* Fall-back to registry information */ return get_DNS_Registry(outptr); } #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 (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]=""; 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; } #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; /* 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); fp = fopen(PATH_RESOLV_CONF, "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) { rc = ARES_EBADNAME; goto error; } } 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(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 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) 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) { int n; const char *p, *q; if(channel->ndomains != -1) { /* LCOV_EXCL_START: all callers check ndomains == -1 */ /* if we already have some domains present, free them first */ for(n=0; n < channel->ndomains; n++) ares_free(channel->domains[n]); ares_free(channel->domains); channel->domains = NULL; channel->ndomains = -1; } /* LCOV_EXCL_STOP */ /* Count the domains given. */ n = 0; p = str; while (*p) { while (*p && !ISSPACE(*p)) p++; while (ISSPACE(*p)) p++; n++; } if (!n) { channel->ndomains = 0; return ARES_SUCCESS; } channel->domains = ares_malloc(n * sizeof(char *)); if (!channel->domains) return ARES_ENOMEM; /* Now copy the domains. */ n = 0; p = str; while (*p) { channel->ndomains = n; q = p; while (*q && !ISSPACE(*q)) q++; channel->domains[n] = ares_malloc(q - p + 1); if (!channel->domains[n]) return ARES_ENOMEM; memcpy(channel->domains[n], p, q - p); channel->domains[n][q - p] = 0; p = q; while (ISSPACE(*p)) p++; n++; } channel->ndomains = n; 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, 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; } 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-2.1.1/deps/c-ares/src/ares_iphlpapi.h000066400000000000000000000134661277456777700225610ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_ipv6.h000066400000000000000000000036361277456777700216350ustar00rootroot00000000000000 /* 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 #if SIZEOF_STRUCT_IN6_ADDR == 0 /* 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-2.1.1/deps/c-ares/src/ares_library_init.c000066400000000000000000000101651277456777700234260ustar00rootroot00000000000000 /* 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; #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 */ void *(*ares_malloc)(size_t size) = malloc; void *(*ares_realloc)(void *ptr, size_t size) = realloc; void (*ares_free)(void *ptr) = 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 */ } /* * 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(); 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-2.1.1/deps/c-ares/src/ares_library_init.h000066400000000000000000000030031277456777700234240ustar00rootroot00000000000000#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* ); /* 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; #endif /* USE_WINSOCK */ #endif /* HEADER_CARES_LIBRARY_INIT_H */ pycares-pycares-2.1.1/deps/c-ares/src/ares_llist.c000066400000000000000000000035071277456777700220700ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_llist.h000066400000000000000000000023451277456777700220740ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_mkquery.c000066400000000000000000000017041277456777700224330ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_nowarn.c000066400000000000000000000123251277456777700222430ustar00rootroot00000000000000 /* 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 ssize_t to signed int */ int aresx_sztosi(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 & (ssize_t) CARES_MASK_SINT); #ifdef __INTEL_COMPILER # pragma warning(pop) #endif } /* ** signed ssize_t to unsigned int */ unsigned int aresx_sztoui(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 & (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-2.1.1/deps/c-ares/src/ares_nowarn.h000066400000000000000000000033041277456777700222450ustar00rootroot00000000000000#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(ssize_t sznum); unsigned int aresx_sztoui(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-2.1.1/deps/c-ares/src/ares_options.c000066400000000000000000000256641277456777700224440ustar00rootroot00000000000000 /* 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; 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; 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; ares__destroy_servers_state(channel); 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-2.1.1/deps/c-ares/src/ares_parse_a_reply.c000066400000000000000000000172231277456777700235660ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_parse_aaaa_reply.c000066400000000000000000000174021277456777700242300ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_parse_mx_reply.c000066400000000000000000000107071277456777700237720ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_parse_naptr_reply.c000066400000000000000000000121701277456777700244660ustar00rootroot00000000000000 /* 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 */ /* 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-2.1.1/deps/c-ares/src/ares_parse_ns_reply.c000066400000000000000000000117521277456777700237670ustar00rootroot00000000000000/* 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-2.1.1/deps/c-ares/src/ares_parse_ptr_reply.c000066400000000000000000000151521277456777700241520ustar00rootroot00000000000000 /* 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 #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) { unsigned int qdcount, ancount; int status, i, rr_type, rr_class, rr_len; 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; /* 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, &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); 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; aliases[aliascnt] = ares_malloc((strlen(rr_data)+1) * sizeof(char)); if (!aliases[aliascnt]) { ares_free(rr_name); status = ARES_ENOMEM; break; } strncpy(aliases[aliascnt], rr_data, strlen(rr_data)+1); 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 (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; 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; /* allocate result struct */ soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY); if (!soa) { status = ARES_ENOMEM; goto failed_stat; } /* skip rr_type, rr_class, rr_ttl, rr_rdlen */ if (aptr + RRFIXEDSZ > abuf + alen) goto failed; soa->ttl = DNS_RR_TTL(aptr); aptr += RRFIXEDSZ; /* 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); 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-2.1.1/deps/c-ares/src/ares_parse_srv_reply.c000066400000000000000000000113711277456777700241560ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_parse_txt_reply.c000066400000000000000000000140201277456777700241550ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_platform.c000066400000000000000000017026101277456777700225670ustar00rootroot00000000000000 /* 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); if (!GetVersionEx((void *)&OsvEx)) { memset(&OsvEx, 0, sizeof(OsvEx)); OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); if (!GetVersionEx((void *)&OsvEx)) return WIN_UNKNOWN; } 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-2.1.1/deps/c-ares/src/ares_platform.h000066400000000000000000000022011277456777700225600ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_private.h000066400000000000000000000243411277456777700224170ustar00rootroot00000000000000#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 NAMESERVER "NameServer" #define DHCPNAMESERVER "DhcpNameServer" #define DATABASEPATH "DatabasePath" #define WIN_PATH_HOSTS "\\hosts" #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" #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; }; /* 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 #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-2.1.1/deps/c-ares/src/ares_process.c000066400000000000000000001243341277456777700224210ustar00rootroot00000000000000 /* Copyright 1998 by the Massachusetts Institute of Technology. * Copyright (C) 2004-2016 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_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 "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, 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; } /* 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; ssize_t scount; 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 = (ssize_t)writev(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 = swrite(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, 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; } } } /* 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; 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 = sread(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 = sread(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); if (server->tcp_buffer) 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; 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 { #ifdef HAVE_RECVFROM if (server->addr.family == AF_INET) fromlen = sizeof(from.sa4); else fromlen = sizeof(from.sa6); count = (ssize_t)recvfrom(server->udp_socket, (void *)buf, sizeof(buf), 0, &from.sa, &fromlen); #else count = sread(server->udp_socket, buf, sizeof(buf)); #endif } 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 (swrite(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; } } timeplus = channel->timeout << (query->try_count / channel->nservers); timeplus = (timeplus * (9 + (rand () & 7))) / 16; 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; (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 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 = socket(server->addr.family, SOCK_STREAM, 0); if (s == ARES_SOCKET_BAD) return -1; /* Configure it. */ if (configure_socket(s, server->addr.family, channel) < 0) { sclose(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 (setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) == -1) { sclose(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) { sclose(s); return err; } } /* Connect to the server. */ if (connect(s, sa, salen) == -1) { int err = SOCKERRNO; if (err != EINPROGRESS && err != EWOULDBLOCK) { sclose(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) { sclose(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 = socket(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) { sclose(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) { sclose(s); return err; } } /* Connect to the server. */ if (connect(s, sa, salen) == -1) { int err = SOCKERRNO; if (err != EINPROGRESS && err != EWOULDBLOCK) { sclose(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) { sclose(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); } pycares-pycares-2.1.1/deps/c-ares/src/ares_query.c000066400000000000000000000116771277456777700221150ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_rules.h000066400000000000000000000105341277456777700220760ustar00rootroot00000000000000#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 #ifndef CARES_SIZEOF_ARES_SOCKLEN_T # error "CARES_SIZEOF_ARES_SOCKLEN_T definition is missing!" Error Compilation_aborted_CARES_SIZEOF_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 the same as the one reported * by sizeof() at compile time. */ typedef char __cares_rule_02__ [CareschkszEQ(ares_socklen_t, CARES_SIZEOF_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-2.1.1/deps/c-ares/src/ares_search.c000066400000000000000000000227271277456777700222130ustar00rootroot00000000000000 /* 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; /* 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-2.1.1/deps/c-ares/src/ares_send.c000066400000000000000000000077071277456777700217000ustar00rootroot00000000000000 /* 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; } 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-2.1.1/deps/c-ares/src/ares_setup.h000066400000000000000000000136031277456777700221040ustar00rootroot00000000000000#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. */ /* ================================================================ */ #if 1 /* libuv hack */ #include /* needed on windows */ #else /* * 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 #endif /* libuv hack */ /* ================================================================= */ /* 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-2.1.1/deps/c-ares/src/ares_strcasecmp.c000066400000000000000000000031501277456777700230770ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_strcasecmp.h000066400000000000000000000020071277456777700231040ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_strdup.c000066400000000000000000000024051277456777700222560ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_strdup.h000066400000000000000000000015461277456777700222700ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/ares_strerror.c000066400000000000000000000035531277456777700226240ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_timeout.c000066400000000000000000000052701277456777700224260ustar00rootroot00000000000000 /* 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-2.1.1/deps/c-ares/src/ares_version.c000066400000000000000000000002361277456777700224220ustar00rootroot00000000000000 #include "ares_setup.h" #include "ares.h" const char *ares_version(int *version) { if(version) *version = ARES_VERSION; return ARES_VERSION_STR; } pycares-pycares-2.1.1/deps/c-ares/src/ares_version.h000066400000000000000000000012141277456777700224240ustar00rootroot00000000000000 #ifndef ARES__VERSION_H #define ARES__VERSION_H /* This is the global package copyright */ #define ARES_COPYRIGHT "2004 - 2016 Daniel Stenberg, ." #define ARES_VERSION_MAJOR 1 #define ARES_VERSION_MINOR 11 #define ARES_VERSION_PATCH 1 #define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\ (ARES_VERSION_MINOR<<8)|\ (ARES_VERSION_PATCH)) #define ARES_VERSION_STR "1.11.1-DEV" #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-2.1.1/deps/c-ares/src/ares_writev.c000066400000000000000000000033751277456777700222640ustar00rootroot00000000000000 /* 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 ssize_t ares_writev(ares_socket_t s, const struct iovec *iov, int iovcnt) { char *buffer, *bp; int i; size_t bytes = 0; 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-2.1.1/deps/c-ares/src/ares_writev.h000066400000000000000000000021141277456777700222570ustar00rootroot00000000000000#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 ssize_t ares_writev(ares_socket_t s, const struct iovec *iov, int iovcnt); #endif #endif /* HEADER_CARES_WRITEV_H */ pycares-pycares-2.1.1/deps/c-ares/src/bitncmp.c000066400000000000000000000031401277456777700213540ustar00rootroot00000000000000 /* * 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-2.1.1/deps/c-ares/src/bitncmp.h000066400000000000000000000016111277456777700213620ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/config_darwin/000077500000000000000000000000001277456777700223675ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/config_darwin/ares_config.h000066400000000000000000000347231277456777700250300ustar00rootroot00000000000000/* 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"))) /* 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 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 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 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. */ #define HAVE_INET_NET_PTON 1 /* Define to 1 if inet_net_pton supports IPv6. */ #define HAVE_INET_NET_PTON_IPV6 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 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 "i386-apple-darwin9.8.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.7.1" /* 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.7.1" /* 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 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 /* 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-2.1.1/deps/c-ares/src/config_freebsd/000077500000000000000000000000001277456777700225155ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/config_freebsd/ares_config.h000066400000000000000000000346741277456777700251630ustar00rootroot00000000000000/* 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"))) /* 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 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 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 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 the `inet_net_pton' function. */ #define HAVE_INET_NET_PTON 1 /* 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. */ /* #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 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 "i386-portbld-freebsd8.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.7.1" /* 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.7.1" /* 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-2.1.1/deps/c-ares/src/config_linux/000077500000000000000000000000001277456777700222425ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/config_linux/ares_config.h000066400000000000000000000346721277456777700247060ustar00rootroot00000000000000/* 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"))) /* 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 size_t /* Define to the type of arg 7 for getnameinfo. */ #define GETNAMEINFO_TYPE_ARG7 unsigned 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 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 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 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. */ #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 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-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.7.1" /* 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.7.1" /* 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. */ #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 */ #define HAVE_GETENV 1 pycares-pycares-2.1.1/deps/c-ares/src/config_netbsd/000077500000000000000000000000001277456777700223625ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/config_netbsd/ares_config.h000066400000000000000000000346701277456777700250240ustar00rootroot00000000000000/* 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. */ /* #undef CARES_SYMBOL_HIDING */ /* Definition to make a library symbol externally visible. */ /* #undef CARES_SYMBOL_SCOPE_EXTERN */ /* 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 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 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. */ #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 the `inet_net_pton' function. */ #define HAVE_INET_NET_PTON 1 /* 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. */ /* #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 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 "i386-unknown-openbsd4.7" /* 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.7.1" /* 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.7.1" /* 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-2.1.1/deps/c-ares/src/config_openbsd/000077500000000000000000000000001277456777700225355ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/config_openbsd/ares_config.h000066400000000000000000000346701277456777700251770ustar00rootroot00000000000000/* 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. */ /* #undef CARES_SYMBOL_HIDING */ /* Definition to make a library symbol externally visible. */ /* #undef CARES_SYMBOL_SCOPE_EXTERN */ /* 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 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 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. */ #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 the `inet_net_pton' function. */ #define HAVE_INET_NET_PTON 1 /* 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. */ /* #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 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 "i386-unknown-openbsd4.7" /* 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.7.1" /* 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.7.1" /* 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-2.1.1/deps/c-ares/src/config_sunos/000077500000000000000000000000001277456777700222525ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/config_sunos/ares_config.h000066400000000000000000000346151277456777700247130ustar00rootroot00000000000000/* 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. */ /* #undef CARES_SYMBOL_HIDING */ /* Definition to make a library symbol externally visible. */ /* #undef CARES_SYMBOL_SCOPE_EXTERN */ /* if a /etc/inet dir is being used */ #define ETC_INET 1 /* 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 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 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 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. */ /* #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 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. */ #define NEED_REENTRANT 1 /* 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 "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.7.1" /* 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.7.1" /* 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 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 /* 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. */ #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 */ #define HAVE_GETENV 1 pycares-pycares-2.1.1/deps/c-ares/src/config_win32/000077500000000000000000000000001277456777700220455ustar00rootroot00000000000000pycares-pycares-2.1.1/deps/c-ares/src/config_win32/ares_config.h000066400000000000000000000263321277456777700245030ustar00rootroot00000000000000#ifndef __ARES_CONFIG_WIN32_H #define __ARES_CONFIG_WIN32_H /* when building c-ares library */ #define CARES_BUILDING_LIBRARY 1 /* Copyright (C) 2004 - 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. */ #define ARES_ /* ================================================================ */ /* ares/config-win32.h - Hand crafted config file for Windows */ /* ================================================================ */ /* ---------------------------------------------------------------- */ /* HEADER FILES */ /* ---------------------------------------------------------------- */ /* 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 */ #if defined(__MINGW32__) #define HAVE_SYS_TIME_H 1 #endif /* 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 windows.h 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 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 getenv function. */ #define HAVE_GETENV 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 this if in_addr_t is not an available 'typedefed' type */ #define in_addr_t unsigned long /* Define as the return type of signal handlers (int or void). */ #define RETSIGTYPE void /* Define ssize_t if it is not an available 'typedefed' type */ #ifndef _SSIZE_T_DEFINED # if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \ defined(__POCC__) || \ defined(__MINGW32__) # elif defined(_WIN64) # define _SSIZE_T_DEFINED # define ssize_t __int64 # else # define _SSIZE_T_DEFINED # define ssize_t int # endif #endif /* ---------------------------------------------------------------- */ /* TYPE SIZES */ /* ---------------------------------------------------------------- */ /* The size of `int', as computed by sizeof. */ #define SIZEOF_INT 4 /* The size of `short', as computed by sizeof. */ #define SIZEOF_SHORT 2 /* The size of `size_t', as computed by sizeof. */ #if defined(_WIN64) # define SIZEOF_SIZE_T 8 #else # define SIZEOF_SIZE_T 4 #endif /* ---------------------------------------------------------------- */ /* STRUCT RELATED */ /* ---------------------------------------------------------------- */ /* Define this if you have struct addrinfo */ #define HAVE_STRUCT_ADDRINFO 1 /* Define this if you have struct sockaddr_storage */ #ifndef __SALFORDC__ #define HAVE_STRUCT_SOCKADDR_STORAGE 1 #endif /* Define this 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 /* Officially, Microsoft's Windows SDK versions 6.X do not support Windows 2000 as a supported build target. VS2008 default installations provide an embedded Windows SDK v6.0A along with the claim that Windows 2000 is a valid build target for VS2008. Popular belief is that binaries built using Windows SDK versions 6.X and Windows 2000 as a build target are functional */ #if defined(_MSC_VER) && (_MSC_VER >= 1500) # define VS2008_MINIMUM_TARGET 0x0500 #endif /* When no build target is specified VS2008 default build target is Windows Vista, which leaves out even Winsows XP. If no build target has been given for VS2008 we will target the minimum Officially supported build target, which happens to be Windows XP. */ #if defined(_MSC_VER) && (_MSC_VER >= 1500) # define VS2008_DEFAULT_TARGET 0x0501 #endif /* VS2008 default target settings and minimum build target check */ #if defined(_MSC_VER) && (_MSC_VER >= 1500) # ifndef _WIN32_WINNT # define _WIN32_WINNT VS2008_DEFAULT_TARGET # endif # ifndef WINVER # define WINVER VS2008_DEFAULT_TARGET # endif # if (_WIN32_WINNT < VS2008_MINIMUM_TARGET) || (WINVER < VS2008_MINIMUM_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. We override default target to be Windows 2000. */ #if defined(__POCC__) && (__POCC__ >= 500) # ifndef _WIN32_WINNT # define _WIN32_WINNT 0x0500 # endif # ifndef WINVER # define WINVER 0x0500 # 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 this if you have address family AF_INET6 */ #ifdef HAVE_WINSOCK2_H #define HAVE_AF_INET6 1 #endif /* Define this if you have protocol family PF_INET6 */ #ifdef HAVE_WINSOCK2_H #define HAVE_PF_INET6 1 #endif /* Define this if you have struct in6_addr */ #ifdef HAVE_WS2TCPIP_H #define HAVE_STRUCT_IN6_ADDR 1 #endif /* Define this if you have struct sockaddr_in6 */ #ifdef HAVE_WS2TCPIP_H #define HAVE_STRUCT_SOCKADDR_IN6 1 #endif /* Define this if you have sockaddr_in6 with scopeid */ #ifdef HAVE_WS2TCPIP_H #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 #endif #endif /* __ARES_CONFIG_WIN32_H */ pycares-pycares-2.1.1/deps/c-ares/src/get_ver.awk000066400000000000000000000022341277456777700217160ustar00rootroot00000000000000# *************************************************************************** # * Project: c-ares # * # *************************************************************************** # awk script which fetches c-ares version number and string from input # file and writes them to STDOUT. Here you can get an awk version for Win32: # http://www.gknw.net/development/prgtools/awk-20100523.zip # BEGIN { while ((getline < ARGV[1]) > 0) { sub("\r", "") # make MSYS gawk work with CRLF header input. if (match ($0, /^#define ARES_COPYRIGHT "[^"]+"$/)) copyright_string = substr($0, 25, length($0)-25) else if (match ($0, /^#define ARES_VERSION_STR "[^"]+"$/)) version_string = substr($3, 2, length($3)-2) else if (match ($0, /^#define ARES_VERSION_MAJOR [0-9]+$/)) version_major = $3 else if (match ($0, /^#define ARES_VERSION_MINOR [0-9]+$/)) version_minor = $3 else if (match ($0, /^#define ARES_VERSION_PATCH [0-9]+$/)) version_patch = $3 } print "LIBCARES_VERSION = " version_major "," version_minor "," version_patch print "LIBCARES_VERSION_STR = " version_string print "LIBCARES_COPYRIGHT_STR = " copyright_string } pycares-pycares-2.1.1/deps/c-ares/src/inet_net_pton.c000066400000000000000000000262741277456777700226020ustar00rootroot00000000000000 /* * 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 ssize_t n = tp - colonp; 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-2.1.1/deps/c-ares/src/inet_net_pton.h000066400000000000000000000021411277456777700225720ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/inet_ntop.c000066400000000000000000000134041277456777700217230ustar00rootroot00000000000000/* * 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 funtion 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-2.1.1/deps/c-ares/src/inet_ntop.h000066400000000000000000000016461277456777700217350ustar00rootroot00000000000000#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-2.1.1/deps/c-ares/src/nameser.h000066400000000000000000000203651277456777700213670ustar00rootroot00000000000000 #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-2.1.1/deps/c-ares/src/setup_once.h000066400000000000000000000360071277456777700221010ustar00rootroot00000000000000#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) (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) (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) (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) (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) (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-2.1.1/deps/c-ares/src/windows_port.c000066400000000000000000000006231277456777700224610ustar00rootroot00000000000000#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-2.1.1/docs/000077500000000000000000000000001277456777700156125ustar00rootroot00000000000000pycares-pycares-2.1.1/docs/Makefile000066400000000000000000000127001277456777700172520ustar00rootroot00000000000000# 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-2.1.1/docs/TODO.rst000066400000000000000000000002051277456777700171060ustar00rootroot00000000000000.. _TODO: .. title:: ToDo .. currentmodule:: pycares Things yet to be done ********************* .. literalinclude:: ../TODO pycares-pycares-2.1.1/docs/channel.rst000066400000000000000000000156551277456777700177700ustar00rootroot00000000000000.. _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]) :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. 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_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 and AAAA: ``ares_query_simple_result``, fields: - host - ttl - CNAME: ``ares_query_cname_result``, fields: - cname - ttl - MX: ``ares_query_mx_result``, fields: - host - priority - ttl - NAPTR: ``ares_query_naptr_result``, fields: - order - preference - flags - service - regex - replacement - ttl - NS: ``ares_query_ns_result``, fields: - host - ttl - PTR: ``ares_query_ptr_result``, fields: - name - ttl - SOA: ``ares_query_soa_result``, fields: - nsmane - hostmaster - serial - refresh - retry - expires - minttl - ttl - SRV: ``ares_query_srv_result``, fields: - host - port - priority - weight - ttl - TXT: ``ares_query_txt_result``, fields: - text - ttl .. note:: TTL is not implemented for CNAME, NS and PTR), so it's set to None. .. py:method:: cancel() Cancel any pending query on this channel. All pending callbacks will be called with ARES_ECANCELLED errorno. .. py:method:: destroy() Destroy the channel. All pending callbacks will be called with ARES_EDESTRUCTION 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_ip4(local_ip) :param str local_ip: IP address. Set the local IPv4 address from which the queries will be sent. .. py:method:: set_local_ip6(local_ip) :param str local_ip: IP address. Set the local 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-2.1.1/docs/conf.py000066400000000000000000000174571277456777700171270ustar00rootroot00000000000000# -*- 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('../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-2.1.1/docs/constants.rst000066400000000000000000000024571277456777700203700ustar00rootroot00000000000000.. _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-2.1.1/docs/errno.rst000066400000000000000000000010161277456777700174670ustar00rootroot00000000000000.. _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-2.1.1/docs/event_loops.rst000066400000000000000000000011061277456777700206770ustar00rootroot00000000000000.. _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: ntegration with plain select * 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-2.1.1/docs/index.rst000066400000000000000000000010721277456777700174530ustar00rootroot00000000000000.. 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 ToDo #### .. toctree:: :maxdepth: 1 TODO Indices and tables ################## * :ref:`genindex` * :ref:`modindex` * :ref:`search` pycares-pycares-2.1.1/docs/make.bat000066400000000000000000000117521277456777700172250ustar00rootroot00000000000000@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-2.1.1/docs/pycares.rst000066400000000000000000000007271277456777700200200ustar00rootroot00000000000000.. _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 utils constants errno event_loops pycares-pycares-2.1.1/docs/utils.rst000066400000000000000000000010151277456777700175010ustar00rootroot00000000000000.. _utils: ================= Utility functions ================= .. py:function:: pycares.reverse_address(ip_adress) :param string ip_address: IP address to be reversed. Returns the reversed representation of an IP address, usually used when doing PTR queries. Example: :: pycares.reverse_address('1.2.3.4') '4.3.2.1.in-addr.arpa' pycares.reverse_address('2a03:2880:10:cf01:face:b00c::') '0.0.0.0.0.0.0.0.c.0.0.b.e.c.a.f.1.0.f.c.0.1.0.0.0.8.8.2.3.0.a.2.ip6.arpa' pycares-pycares-2.1.1/examples/000077500000000000000000000000001277456777700165005ustar00rootroot00000000000000pycares-pycares-2.1.1/examples/cares-asyncio.py000066400000000000000000000041061277456777700216130ustar00rootroot00000000000000 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-2.1.1/examples/cares-resolver.py000066400000000000000000000043611277456777700220120ustar00rootroot00000000000000 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-2.1.1/examples/cares-select.py000066400000000000000000000017021277456777700214240ustar00rootroot00000000000000 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-2.1.1/pycares/000077500000000000000000000000001277456777700163305ustar00rootroot00000000000000pycares-pycares-2.1.1/pycares/__init__.py000066400000000000000000000001631277456777700204410ustar00rootroot00000000000000 from ._version import __version__ try: from ._core import * except ImportError: from ._cfficore import * pycares-pycares-2.1.1/pycares/_cfficore/000077500000000000000000000000001277456777700202475ustar00rootroot00000000000000pycares-pycares-2.1.1/pycares/_cfficore/__init__.py000066400000000000000000000546701277456777700223740ustar00rootroot00000000000000 from _pycares_cffi import ffi as _ffi, lib as _lib import _cffi_backend # hint for bundler tools from . import errno from .errno import ARES_SUCCESS import socket import math import functools import sys IS_PY2 = sys.version_info[0] < 3 if IS_PY2: b2s = lambda s: s s2b = lambda s: s _ffi_string = _ffi.string else: def b2s(b): return b.decode('utf-8') def s2b(s): return s.encode('utf-8') _ffi_string = lambda r, maxlen=-1: b2s(_ffi.string(r, maxlen)) 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_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'] = _ffi_string(_lib.ares_version(_ffi.NULL)) PYCARES_ADDRTTL_SIZE = 256 class Error(Exception): pass class Warning(Exception): pass class InterfaceError(Error): pass class AresError(Error): pass class NotSupportedError(Exception): pass def check_channel(f): @functools.wraps(f) def wrapper(self, *args, **kwds): if not self.channel: raise AresError("Channel has already been destroyed") return f(self, *args, **kwds) return wrapper # callback helpers _global_set = set() @_ffi.callback("void (void *data, ares_socket_t socket_fd, int readable, int writable )") def _sock_state_cb(data, socket_fd, readable, writable): sock_state_cb = _ffi.from_handle(data) sock_state_cb(socket_fd, readable, writable) _global_set.discard(data) @_ffi.callback("void (void *arg, int status, int timeouts, struct hostent *hostent)") def _host_cb(arg, status, timeouts, hostent): callback = _ffi.from_handle(arg) if status != _lib.ARES_SUCCESS: result = None else: result = ares_host_result(hostent) status = None callback(result, status) _global_set.discard(arg) @_ffi.callback("void (void *arg, int status, int timeouts, char *node, char *service)") def _nameinfo_cb(arg, status, timeouts, node, service): callback = _ffi.from_handle(arg) if status != _lib.ARES_SUCCESS: result = None else: result = ares_nameinfo_result(node, service) status = None callback(result, status) _global_set.discard(arg) @_ffi.callback("void (void *arg, int status, int timeouts, unsigned char *abuf, int alen)") def _query_cb(arg, status, timeouts, abuf, alen): result = None callback, query_type = _ffi.from_handle(arg) if status == _lib.ARES_SUCCESS: 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 != ARES_SUCCESS: result = None status = parse_status else: result = [ares_query_simple_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 != ARES_SUCCESS: result = None status = parse_status else: result = [ares_query_simple_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 != 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 != ARES_SUCCESS: result = None status = parse_status else: result = [] mx_reply_ptr = _ffi.new("struct ares_mx_reply **") mx_reply_ptr[0] = mx_reply[0] while True: if mx_reply_ptr[0] == _ffi.NULL: break result.append(ares_query_mx_result(mx_reply[0])) mx_reply_ptr[0] = mx_reply_ptr[0].next _lib.ares_free_data(mx_reply) 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 != ARES_SUCCESS: result = None status = parse_status else: result = [] naptr_reply_ptr = _ffi.new("struct ares_naptr_reply **") naptr_reply_ptr[0] = naptr_reply[0] while True: if naptr_reply_ptr[0] == _ffi.NULL: break result.append(ares_query_naptr_result(naptr_reply[0])) naptr_reply_ptr[0] = naptr_reply_ptr[0].next _lib.ares_free_data(naptr_reply) 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 != ARES_SUCCESS: result = None status = parse_status else: result = [] host = hostent[0] for i in range(100): if host.h_aliases[i] == _ffi.NULL: break result.append(ares_query_ns_result(host.h_aliases[i])) _lib.ares_free_hostent(host) status = None elif query_type == _lib.T_PTR: hostent = _ffi.new("struct hostent **") parse_status = _lib.ares_parse_ptr_reply(abuf, alen, _ffi.NULL, 0, socket.AF_UNSPEC, hostent); if parse_status != ARES_SUCCESS: result = None status = parse_status else: result = ares_query_ptr_result(hostent[0]) _lib.ares_free_hostent(hostent[0]) 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 != 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 != ARES_SUCCESS: result = None status = parse_status else: result = [] srv_reply_ptr = _ffi.new("struct ares_srv_reply **") srv_reply_ptr[0] = srv_reply[0] while True: if srv_reply_ptr[0] == _ffi.NULL: break result.append(ares_query_srv_result(srv_reply_ptr[0])) srv_reply_ptr[0] = srv_reply_ptr[0].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 != ARES_SUCCESS: result = None status = parse_status else: result = [] txt_reply_ptr = _ffi.new("struct ares_txt_ext **") txt_reply_ptr[0] = txt_reply[0] tmp_obj = None while True: if txt_reply_ptr[0] == _ffi.NULL: if tmp_obj is not None: result.append(tmp_obj) break if txt_reply_ptr[0].record_start == 1: if tmp_obj is not None: result.append(tmp_obj) tmp_obj = ares_query_txt_result(txt_reply_ptr[0]) else: new_chunk = ares_query_txt_result(txt_reply_ptr[0]) tmp_obj.text += new_chunk.text txt_reply_ptr[0] = txt_reply_ptr[0].next _lib.ares_free_data(txt_reply[0]) status = None else: raise ValueError("invalid query type specified") callback(result, status) _global_set.discard(arg) class Channel(object): def __init__(self, flags = -1, timeout = -1.0, tries = -1, ndots = -1, tcp_port = -1, udp_port = -1, servers = None, domains = None, lookups = None, sock_state_cb = None, socket_send_buffer_size = -1, socket_receive_buffer_size = -1, rotate = False): channel = _ffi.new("ares_channel *") options = _ffi.new("struct ares_options *") optmask = 0 if flags != -1: options.flags = flags optmask = optmask | _lib.ARES_OPT_FLAGS if timeout != -1: options.timeout = int(timeout * 1000) optmask = optmask | _lib.ARES_OPT_TIMEOUTMS if tries != -1: options.tries = tries optmask = optmask | _lib.ARES_OPT_TRIES if ndots != -1: options.ndots = ndots optmask = optmask | _lib.ARES_OPT_NDOTS if tcp_port != -1: options.tcp_port = tcp_port optmask = optmask | _lib.ARES_OPT_TCP_PORT if udp_port != -1: options.udp_port = udp_port optmask = optmask | _lib.ARES_OPT_UDP_PORT if socket_send_buffer_size != -1: options.socket_send_buffer_size = socket_send_buffer_size optmask = optmask | _lib.ARES_OPT_SOCK_SNDBUF if socket_receive_buffer_size != -1: 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 AresError("sock_state_cb is not callable") userdata = _ffi.new_handle(sock_state_cb) _global_set.add(userdata) # must keep this alive! options.sock_state_cb = _sock_state_cb options.sock_state_cb_data = userdata optmask = optmask | _lib.ARES_OPT_SOCK_STATE_CB if lookups: options.lookups = lookups optmask = optmask | _lib.ARES_OPT_LOOKUPS if domains: strs = [_ffi.new("char[]", s2b(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 == True: optmask = optmask | _lib.ARES_OPT_ROTATE r = _lib.ares_init_options(channel, options, optmask) if r != _lib.ARES_SUCCESS: raise AresError() self.channel = channel[0] if servers: self._set_servers(servers) def __del__(self): self.destroy() def destroy(self): if self.channel: _lib.ares_destroy(self.channel) self.channel = None @check_channel def cancel(self): _lib.ares_cancel(self.channel) @check_channel def _set_servers(self, servers): c = _ffi.new("struct ares_addr_node[%d]" % len(servers)) for i in range(len(servers)): if 1 == _lib.ares_inet_pton(socket.AF_INET, s2b(servers[i]), _ffi.addressof(c[i].addr.addr4)): c[i].family = socket.AF_INET elif 1 == _lib.ares_inet_pton(socket.AF_INET6, s2b(servers[i]), _ffi.addressof(c[i].addr.addr6)): 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, c) if r != _lib.ARES_SUCCESS: raise AresError() @check_channel def _get_servers(self): servers = _ffi.new("struct ares_addr_node **") r = _lib.ares_get_servers(self.channel, servers) if r != ARES_SUCCESS: raise AresError(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) if _ffi.NULL != _lib.ares_inet_ntop(server.family, _ffi.addressof(server.addr), ip, _lib.INET6_ADDRSTRLEN): server_list.append(_ffi_string(ip, _lib.INET6_ADDRSTRLEN)) server = server.next return server_list servers = property(_get_servers, _set_servers) @check_channel def getsock(self): rfds = [] wfds = [] socks = _ffi.new("ares_socket_t [%d]" % _lib.ARES_GETSOCK_MAXNUM) bitmask = _lib.ares_getsock(self.channel, socks, _lib.ARES_GETSOCK_MAXNUM) for i in range(_lib.ARES_GETSOCK_MAXNUM): if bitmask & (1 << i): rfds.append(socks[i]) if bitmask & (1 << (i + _lib.ARES_GETSOCK_MAXNUM)): wfds.append(socks[i]) return rfds, wfds @check_channel def process_fd(self, read_fd, write_fd): _lib.ares_process_fd(self.channel, _ffi.cast("ares_socket_t", read_fd), _ffi.cast("ares_socket_t", write_fd)) @check_channel def timeout(self, t = -1): maxtv = _ffi.NULL tv = _ffi.new("struct timeval*") 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) elif t == -1: pass else: raise ValueError("timeout needs to be a positive number") _lib.ares_timeout(self.channel, maxtv, tv) return (tv.tv_sec + tv.tv_usec / 1000000.0) @check_channel def gethostbyaddr(self, name, 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 1 == _lib.ares_inet_pton(socket.AF_INET,s2b(name), (addr4)): address = addr4 family = socket.AF_INET elif 1 == _lib.ares_inet_pton(socket.AF_INET6, s2b(name), (addr6)): 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, (address), _ffi.sizeof(address[0]), family, _host_cb, userdata) @check_channel 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, s2b(name), family, _host_cb, userdata) def query(self, name, query_type, callback): if not callable(callback): raise TypeError("a callable is required") if query_type not 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): raise ValueError("invalid query type specified") userdata = _ffi.new_handle((callback, query_type)) _global_set.add(userdata) _lib.ares_query(self.channel, s2b(name), _lib.C_IN, query_type, _query_cb, userdata) @check_channel def set_local_ip(self, ip): addr4 = _ffi.new("struct in_addr*") addr6 = _ffi.new("struct ares_in6_addr*") if 1 == _lib.ares_inet_pton(socket.AF_INET, s2b(ip), addr4): _lib.ares_set_local_ip4(self.channel, socket.ntohl(addr4.s_addr)) elif 1 == _lib.ares_inet_pton(socket.AF_INET6, s2b(ip), addr6): _lib.ares_set_local_ip6(self.channel, addr6) else: raise ValueError("invalid IP address") @check_channel def getnameinfo(self, ip_port, flags, callback): if not callable(callback): raise AresError("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 1 == _lib.ares_inet_pton(socket.AF_INET, s2b(ip), _ffi.addressof(sa4.sin_addr)): sa4.sin_family = socket.AF_INET sa4.sin_port = socket.htons(port) sa = sa4 elif 1 == _lib.ares_inet_pton(socket.AF_INET6, s2b(ip), _ffi.addressof(sa6.sin6_addr)): 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, _ffi.cast("struct sockaddr*", sa), _ffi.sizeof(sa[0]), flags, _nameinfo_cb, userdata) @check_channel def set_local_dev(self, dev): _lib.ares_set_local_dev(self.channel, dev) class ares_host_result(object): def __init__(self, hostent): self.name = _ffi_string(hostent.h_name) self.aliases = [] self.addresses = [] for i in range(100): if hostent.h_aliases[i] == _ffi.NULL: break self.aliases.append(_ffi_string(hostent.h_aliases[i])) for i in range(100): if hostent.h_addr_list[i] == _ffi.NULL: break 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(_ffi_string(buf, _lib.INET6_ADDRSTRLEN)) class ares_query_simple_result(object): def __init__(self, ares_addrttl): buf = _ffi.new("char[]", _lib.INET6_ADDRSTRLEN) if _ffi.typeof(ares_addrttl) is _ffi.typeof("struct ares_addrttl"): _lib.ares_inet_ntop(socket.AF_INET, _ffi.addressof(ares_addrttl.ipaddr), buf, _lib.INET6_ADDRSTRLEN) elif _ffi.typeof(ares_addrttl) is _ffi.typeof("struct ares_addr6ttl"): _lib.ares_inet_ntop(socket.AF_INET6, _ffi.addressof(ares_addrttl.ip6addr), buf, _lib.INET6_ADDRSTRLEN) else: raise TypeError() self.host = _ffi_string(buf, _lib.INET6_ADDRSTRLEN) self.ttl = ares_addrttl.ttl class ares_query_cname_result(object): def __init__(self, host): self.cname = _ffi_string(host.h_name) self.ttl = None class ares_query_mx_result(object): def __init__(self, mx): self.host = _ffi_string(mx.host) self.priority = mx.priority self.ttl = mx.ttl class ares_query_naptr_result(object): def __init__(self, naptr): self.order = naptr.order self.preference = naptr.preference self.flags = _ffi_string(naptr.flags) self.service = _ffi_string(naptr.service) self.regex = _ffi_string(naptr.regexp) self.replacement = _ffi_string(naptr.replacement) self.ttl = naptr.ttl class ares_query_ns_result(object): def __init__(self, ns): self.host = _ffi_string(ns) self.ttl = None class ares_query_ptr_result(object): def __init__(self, hostent): self.name = _ffi_string(hostent.h_name) self.ttl = None class ares_query_soa_result(object): def __init__(self, soa): self.nsname = _ffi_string(soa.nsname) self.hostmaster = _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(object): def __init__(self, srv): self.host = _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(object): def __init__(self, txt): self.text = _ffi_string(txt.txt) self.ttl = txt.ttl class ares_nameinfo_result(object): def __init__(self, node, service): self.node = _ffi_string(node) self.service = _ffi_string(service) if service != _ffi.NULL else None def reverse_address(ip): """Get reverse representation of an IP address""" name = _ffi.new("char []", 128) if _ffi.NULL == _lib.reverse_address(s2b(ip), name): raise ValueError("invalid IP address") return _ffi_string(name, 128) if _lib.ARES_SUCCESS != _lib.ares_library_init(_lib.ARES_LIB_INIT_ALL): assert False #_lib.ares_library_cleanup() pycares-pycares-2.1.1/pycares/_cfficore/errno.py000066400000000000000000000016041277456777700217470ustar00rootroot00000000000000 from _pycares_cffi import ffi as _ffi, lib as _lib 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', ] globals()["errorcode"] = {} for symbol in exported_pycares_symbols: globals()[symbol] = getattr(_lib, symbol) globals()["errorcode"][symbol] = getattr(_lib, symbol) def strerror(code): return _ffi.string(_lib.ares_strerror(code)) pycares-pycares-2.1.1/pycares/_cfficore/pycares_build.py000066400000000000000000000531621277456777700234550ustar00rootroot00000000000000 import cffi import sys import os import re current_dir = os.path.dirname(__file__) extra_libraries = [] ffi = cffi.FFI() if sys.platform == 'win32': extra_libraries.extend(["ws2_32", "advapi32", "iphlpapi", "psapi"]) ffi.cdef(re.sub(r"\b(_In_|_Inout_|_Out_|_Outptr_|FAR)(opt_)?\b", " ", """ typedef unsigned short... u_short; typedef unsigned long... u_long; typedef struct fd_set { ...; } fd_set; struct in_addr { uint8_t s_addr[4]; }; struct in6_addr { uint8_t s6_addr[16]; }; typedef struct hostent { char FAR *h_name; char FAR FAR **h_aliases; short h_addrtype; short h_length; char FAR FAR **h_addr_list; } HOSTENT, *PHOSTENT, FAR *LPHOSTENT; struct timeval { long tv_sec; /* seconds */ long tv_usec; /* and microseconds */ }; struct sockaddr { short sa_family; ...; }; struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct sockaddr_in6 { short sin6_family; u_short sin6_port; u_long sin6_flowinfo; struct in6_addr sin6_addr; u_long sin6_scope_id; }; """)) else: ffi.cdef(""" /* fd_set for select and pselect. */ typedef struct { ...; } fd_set; struct in_addr { uint8_t s_addr[4]; }; struct in6_addr { uint8_t s6_addr[16]; }; typedef long... time_t; typedef long... suseconds_t; struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */ }; struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses */ }; typedef int... sa_family_t; typedef uint16_t in_port_t; struct sockaddr { sa_family_t sa_family; ...; }; struct sockaddr_in { sa_family_t sin_family; /* Address family */ in_port_t sin_port; /* Port number */ struct in_addr sin_addr; /* Internet address */ ...; }; struct sockaddr_in6 { sa_family_t sin6_family; /* AF_INET6 */ in_port_t sin6_port; /* Transport layer port # */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* scope id (new in RFC2553) */ ...; }; """) ffi.cdef(""" #define INET_ADDRSTRLEN ... #define INET6_ADDRSTRLEN ... #define C_IN ... #define T_A ... #define T_AAAA ... #define T_CNAME ... #define T_MX ... #define T_NAPTR ... #define T_NS ... #define T_PTR ... #define T_SOA ... #define T_SRV ... #define T_TXT ... /* ares_build.h */ typedef int... ares_socket_t; typedef int... ares_socklen_t; #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 ... #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 ... /* Option mask values */ #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 ... /* Nameinfo flag values */ #define ARES_NI_NOFQDN ... #define ARES_NI_NUMERICHOST ... #define ARES_NI_NAMEREQD ... #define ARES_NI_NUMERICSERV ... #define ARES_NI_DGRAM ... #define ARES_NI_TCP 0 #define ARES_NI_UDP ... #define ARES_NI_SCTP ... #define ARES_NI_DCCP ... #define ARES_NI_NUMERICSCOPE ... #define ARES_NI_LOOKUPHOST ... #define ARES_NI_LOOKUPSERVICE ... /* Reserved for future use */ #define ARES_NI_IDN ... #define ARES_NI_IDN_ALLOW_UNASSIGNED ... #define ARES_NI_IDN_USE_STD3_ASCII_RULES ... /* Addrinfo flag values */ #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 ... /* Reserved for future use */ #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 ... /* 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 ... #define ARES_LIB_INIT_WIN32 ... #define ARES_LIB_INIT_ALL ... /* * Typedef our socket type */ //typedef int ares_socket_t; #define ARES_SOCKET_BAD ... 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; }; 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); 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); /* 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. */ void ares_set_local_ip4(ares_channel channel, unsigned int local_ip); /* local_ip6 should be 16 bytes in length */ void ares_set_local_ip6(ares_channel channel, const unsigned char* local_ip6); /* local_dev_name should be null terminated. */ 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_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds); 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(ares_channel channel, fd_set *read_fds, fd_set *write_fds); 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); /* * 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. */ 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 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); /* TODO: Hold port here as well. */ struct ares_addr_node { struct ares_addr_node *next; int family; union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; }; int ares_set_servers(ares_channel channel, struct ares_addr_node *servers); /* Incomming string format: host[:port][,host[:port]]... */ int ares_set_servers_csv(ares_channel channel, const char* 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); /* declare */ char* reverse_address(const char *ip_address, char *name); """) ffi.set_source("_pycares_cffi", """ #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN # include #else # include # include # include /* struct hostent */ # include /* struct sockaddr_in/sockaddr_in6 */ #endif #define CARES_STATICLIB 1 /* static link it */ #include # include char* reverse_address(const char *ip_address, char *name) { /*char name[128]; */ unsigned long laddr, a1, a2, a3, a4; unsigned char *bytes; struct in_addr addr4; struct in6_addr addr6; if (ares_inet_pton(AF_INET, ip_address, &addr4) == 1) { laddr = ntohl(addr4.s_addr); a1 = (laddr >> 24UL) & 0xFFUL; a2 = (laddr >> 16UL) & 0xFFUL; a3 = (laddr >> 8UL) & 0xFFUL; a4 = laddr & 0xFFUL; sprintf(name, "%lu.%lu.%lu.%lu.in-addr.arpa", a4, a3, a2, a1); } else if (ares_inet_pton(AF_INET6, ip_address, &addr6) == 1) { bytes = (unsigned char *)&addr6; /* 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); } else { return NULL; } return name; } """, libraries=(extra_libraries), include_dirs=[os.path.join(current_dir, "../../deps/c-ares/src"),], library_dirs=[os.path.join(current_dir, "../../deps/c-ares"),]) if __name__ == "__main__": ffi.compile(verbose=True) pycares-pycares-2.1.1/pycares/_version.py000066400000000000000000000000271277456777700205250ustar00rootroot00000000000000 __version__ = '2.1.1' pycares-pycares-2.1.1/pycares/errno.py000066400000000000000000000001341277456777700200250ustar00rootroot00000000000000 try: from ._core.errno import * except ImportError: from ._cfficore.errno import * pycares-pycares-2.1.1/setup.py000077500000000000000000000040511277456777700163770ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import codecs import os import platform import re from setuptools import setup, Extension from setup_cares import cares_build_ext kwargs = {} packages = ['pycares'] if (platform.python_implementation() == 'PyPy' or os.environ.get('PYCARES_CFFI', '0') != '0'): # cffi module kwargs['setup_requires'] = ['cffi>=1.5.0'] kwargs['install_requires'] = ['cffi>=1.5.0'] kwargs['cffi_modules'] = ['pycares/_cfficore/pycares_build.py:ffi'] packages.append('pycares._cfficore') else: kwargs['ext_modules'] = [Extension('pycares._core', sources = ['src/pycares.c'])] kwargs['packages'] = packages def get_version(): return re.search(r"""__version__\s+=\s+(?P['"])(?P.+?)(?P=quote)""", open('pycares/_version.py').read()).group('version') setup(name = 'pycares', version = get_version(), author = 'Saúl Ibarra Corretgé', author_email = 'saghul@gmail.com', url = 'http://github.com/saghul/pycares', description = 'Python interface for c-ares', long_description = codecs.open('README.rst', encoding='utf-8').read(), 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 :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', ], cmdclass = {'build_ext': cares_build_ext}, **kwargs ) pycares-pycares-2.1.1/setup_cares.py000066400000000000000000000102001277456777700175420ustar00rootroot00000000000000 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_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_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.define_macro('HAVE_CONFIG_H', 1) self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src')) if sys.platform != 'win32': self.compiler.define_macro('_LARGEFILE_SOURCE', 1) self.compiler.define_macro('_FILE_OFFSET_BITS', 64) if sys.platform.startswith('linux'): 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_library('socket') self.compiler.add_library('nsl') self.compiler.add_library('lkstat') elif sys.platform == 'win32': self.compiler.add_include_dir(os.path.join(self.cares_dir, 'src/config_win32')) 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.extensions[0].sources += cares_sources build_ext.build_extensions(self) pycares-pycares-2.1.1/src/000077500000000000000000000000001277456777700154515ustar00rootroot00000000000000pycares-pycares-2.1.1/src/cares.c000066400000000000000000001401561277456777700167210ustar00rootroot00000000000000 #ifdef PYCARES_WINDOWS #include #include #else /* __POSIX__ */ #include #include #endif #include "nameser.h" #include "bytesobject.h" #define PYCARES_ADDRTTL_SIZE 256 static PyObject* PyExc_AresError; /* Helpers borrowed from libuv */ struct sockaddr_in uv_ip4_addr(const char* ip, int port) { struct sockaddr_in addr; memset(&addr, 0, sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_port = htons(port); ares_inet_pton(AF_INET, ip, &addr.sin_addr.s_addr); return addr; } struct sockaddr_in6 uv_ip6_addr(const char* ip, int port) { struct sockaddr_in6 addr; memset(&addr, 0, sizeof(struct sockaddr_in6)); addr.sin6_family = AF_INET6; addr.sin6_port = htons(port); ares_inet_pton(AF_INET6, ip, &addr.sin6_addr); return addr; } static void ares__sock_state_cb(void *data, ares_socket_t socket_fd, int readable, int writable) { PyGILState_STATE gstate = PyGILState_Ensure(); Channel *self; PyObject *result, *fd, *py_readable, *py_writable; self = (Channel *)data; ASSERT(self); /* Object could go out of scope in the callback, increase refcount to avoid it */ Py_INCREF(self); fd = PyInt_FromLong((long)socket_fd); py_readable = PyBool_FromLong((long)readable); py_writable = PyBool_FromLong((long)writable); result = PyObject_CallFunctionObjArgs(self->sock_state_cb, fd, py_readable, py_writable, NULL); if (result == NULL) { PyErr_WriteUnraisable(self->sock_state_cb); } Py_XDECREF(result); Py_DECREF(fd); Py_DECREF(py_readable); Py_DECREF(py_writable); Py_DECREF(self); PyGILState_Release(gstate); } static void query_a_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; char ip[INET6_ADDRSTRLEN]; int i; struct ares_addrttl addrttls[PYCARES_ADDRTTL_SIZE]; int naddrttls = PYCARES_ADDRTTL_SIZE; PyObject *dns_result, *errorno, *tmp, *result, *callback; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_a_reply(answer_buf, answer_len, NULL, addrttls, &naddrttls); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyList_New(0); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } for (i = 0; i < naddrttls; i++) { ares_inet_ntop(AF_INET, &addrttls[i].ipaddr, ip, sizeof(ip)); tmp = PyStructSequence_New(&AresQuerySimpleResultType); if (tmp == NULL) { break; } PyStructSequence_SET_ITEM(tmp, 0, Py_BuildValue("s", ip)); PyStructSequence_SET_ITEM(tmp, 1, PyInt_FromLong((long)addrttls[i].ttl)); PyList_Append(dns_result, tmp); Py_DECREF(tmp); } errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); Py_DECREF(callback); PyGILState_Release(gstate); } static void query_aaaa_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; char ip[INET6_ADDRSTRLEN]; int i; struct ares_addr6ttl addrttls[PYCARES_ADDRTTL_SIZE]; int naddrttls = PYCARES_ADDRTTL_SIZE; PyObject *dns_result, *errorno, *tmp, *result, *callback; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_aaaa_reply(answer_buf, answer_len, NULL, addrttls, &naddrttls); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyList_New(0); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } for (i = 0; i < naddrttls; i++) { ares_inet_ntop(AF_INET6, &addrttls[i].ip6addr, ip, sizeof(ip)); tmp = PyStructSequence_New(&AresQuerySimpleResultType); if (tmp == NULL) { break; } PyStructSequence_SET_ITEM(tmp, 0, Py_BuildValue("s", ip)); PyStructSequence_SET_ITEM(tmp, 1, PyInt_FromLong((long)addrttls[i].ttl)); PyList_Append(dns_result, tmp); Py_DECREF(tmp); } errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); Py_DECREF(callback); PyGILState_Release(gstate); } static void query_cname_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; struct hostent *hostent = NULL; PyObject *dns_result, *errorno, *result, *callback; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_a_reply(answer_buf, answer_len, &hostent, NULL, NULL); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyStructSequence_New(&AresQueryCNAMEResultType); PyStructSequence_SET_ITEM(dns_result, 0, Py_BuildValue("s", hostent->h_name)); /* TODO: add (real) TTL */ PyStructSequence_SET_ITEM(dns_result, 1, Py_None); Py_INCREF(Py_None); errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (hostent) { ares_free_hostent(hostent); } Py_DECREF(callback); PyGILState_Release(gstate); } static void query_mx_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; struct ares_mx_reply *mx_reply, *mx_ptr; PyObject *dns_result, *errorno, *tmp, *result, *callback; mx_reply = NULL; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_mx_reply(answer_buf, answer_len, &mx_reply); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyList_New(0); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } for (mx_ptr = mx_reply; mx_ptr != NULL; mx_ptr = mx_ptr->next) { tmp = PyStructSequence_New(&AresQueryMXResultType); if (tmp == NULL) { break; } PyStructSequence_SET_ITEM(tmp, 0, Py_BuildValue("s", mx_ptr->host)); PyStructSequence_SET_ITEM(tmp, 1, PyInt_FromLong((long)mx_ptr->priority)); PyStructSequence_SET_ITEM(tmp, 2, PyInt_FromLong((long)mx_ptr->ttl)); PyList_Append(dns_result, tmp); Py_DECREF(tmp); } errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (mx_reply) { ares_free_data(mx_reply); } Py_DECREF(callback); PyGILState_Release(gstate); } static void query_ns_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; char **ptr; struct hostent *hostent = NULL; PyObject *dns_result, *errorno, *tmp, *result, *callback; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_ns_reply(answer_buf, answer_len, &hostent); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyList_New(0); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } for (ptr = hostent->h_aliases; *ptr != NULL; ptr++) { tmp = PyStructSequence_New(&AresQueryNSResultType); if (tmp == NULL) { break; } PyStructSequence_SET_ITEM(tmp, 0, Py_BuildValue("s", *ptr)); /* TODO: add (real) TTL */ PyStructSequence_SET_ITEM(tmp, 1, Py_None); Py_INCREF(Py_None); PyList_Append(dns_result, tmp); Py_DECREF(tmp); } errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (hostent) { ares_free_hostent(hostent); } Py_DECREF(callback); PyGILState_Release(gstate); } static void query_ptr_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; struct hostent *hostent = NULL; PyObject *dns_result, *errorno, *result, *callback; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } /* addr is only used to populate the hostent struct, it's not used to validate the response */ parse_status = ares_parse_ptr_reply(answer_buf, answer_len, NULL, 0, AF_UNSPEC, &hostent); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyStructSequence_New(&AresQueryPTRResultType); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } PyStructSequence_SET_ITEM(dns_result, 0, Py_BuildValue("s", hostent->h_name)); /* TODO: add (real) TTL */ PyStructSequence_SET_ITEM(dns_result, 1, Py_None); Py_INCREF(Py_None); errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (hostent) { ares_free_hostent(hostent); } Py_DECREF(callback); PyGILState_Release(gstate); } static void query_txt_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; struct ares_txt_ext *txt_reply, *txt_ptr; PyObject *dns_result, *errorno, *tmp_obj, *result, *callback; PyObject *assembled_txt; txt_reply = NULL; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_txt_reply_ext(answer_buf, answer_len, &txt_reply); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyList_New(0); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } tmp_obj = NULL; assembled_txt = NULL; txt_ptr = txt_reply; while (1) { if (txt_ptr == NULL || txt_ptr->record_start == 1) { if (tmp_obj != NULL) { /* Add the assembled record to the result when seeing a new record (except for the first time) and after the last chunk has been seen */ PyStructSequence_SET_ITEM(tmp_obj, 0, Py_BuildValue("s", PyBytes_AS_STRING(assembled_txt))); PyList_Append(dns_result, tmp_obj); Py_DECREF(tmp_obj); Py_DECREF(assembled_txt); } if (txt_ptr == NULL) { /* Exit while loop when last chunk has been seen */ break; } } if (txt_ptr->record_start == 1) { /* In case of a new record, prepare its object */ tmp_obj = PyStructSequence_New(&AresQueryTXTResultType); if (tmp_obj == NULL) { break; } /* ttl of the first chunk is representative for the entire record */ PyStructSequence_SET_ITEM(tmp_obj, 1, PyInt_FromLong((long)txt_ptr->ttl)); assembled_txt = PyBytes_FromString(""); } /* Concatenate each chunk's text onto the assembled record */ PyBytes_ConcatAndDel(&assembled_txt, PyBytes_FromString((char*)txt_ptr->txt)); if (assembled_txt == NULL) { Py_DECREF(tmp_obj); break; } /* Move on to the next chunk */ txt_ptr = txt_ptr->next; } errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (txt_reply) { ares_free_data(txt_reply); } Py_DECREF(callback); PyGILState_Release(gstate); } static void query_soa_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; struct ares_soa_reply *soa_reply = NULL; PyObject *dns_result, *errorno, *result, *callback; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_soa_reply(answer_buf, answer_len, &soa_reply); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyStructSequence_New(&AresQuerySOAResultType); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } PyStructSequence_SET_ITEM(dns_result, 0, Py_BuildValue("s", soa_reply->nsname)); PyStructSequence_SET_ITEM(dns_result, 1, Py_BuildValue("s", soa_reply->hostmaster)); PyStructSequence_SET_ITEM(dns_result, 2, PyInt_FromLong((long)soa_reply->serial)); PyStructSequence_SET_ITEM(dns_result, 3, PyInt_FromLong((long)soa_reply->refresh)); PyStructSequence_SET_ITEM(dns_result, 4, PyInt_FromLong((long)soa_reply->retry)); PyStructSequence_SET_ITEM(dns_result, 5, PyInt_FromLong((long)soa_reply->expire)); PyStructSequence_SET_ITEM(dns_result, 6, PyInt_FromLong((long)soa_reply->minttl)); PyStructSequence_SET_ITEM(dns_result, 7, PyInt_FromLong((long)soa_reply->ttl)); errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (soa_reply) { ares_free_data(soa_reply); } Py_DECREF(callback); PyGILState_Release(gstate); } static void query_srv_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; struct ares_srv_reply *srv_reply, *srv_ptr; PyObject *dns_result, *errorno, *tmp, *result, *callback; srv_reply = NULL; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_srv_reply(answer_buf, answer_len, &srv_reply); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyList_New(0); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } for (srv_ptr = srv_reply; srv_ptr != NULL; srv_ptr = srv_ptr->next) { tmp = PyStructSequence_New(&AresQuerySRVResultType); if (tmp == NULL) { break; } PyStructSequence_SET_ITEM(tmp, 0, Py_BuildValue("s", srv_ptr->host)); PyStructSequence_SET_ITEM(tmp, 1, PyInt_FromLong((long)srv_ptr->port)); PyStructSequence_SET_ITEM(tmp, 2, PyInt_FromLong((long)srv_ptr->priority)); PyStructSequence_SET_ITEM(tmp, 3, PyInt_FromLong((long)srv_ptr->weight)); PyStructSequence_SET_ITEM(tmp, 4, PyInt_FromLong((long)srv_ptr->ttl)); PyList_Append(dns_result, tmp); Py_DECREF(tmp); } errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (srv_reply) { ares_free_data(srv_reply); } Py_DECREF(callback); PyGILState_Release(gstate); } static void query_naptr_cb(void *arg, int status,int timeouts, unsigned char *answer_buf, int answer_len) { PyGILState_STATE gstate = PyGILState_Ensure(); int parse_status; struct ares_naptr_reply *naptr_reply, *naptr_ptr; PyObject *dns_result, *errorno, *tmp, *result, *callback; naptr_reply = NULL; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } parse_status = ares_parse_naptr_reply(answer_buf, answer_len, &naptr_reply); if (parse_status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)parse_status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyList_New(0); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } for (naptr_ptr = naptr_reply; naptr_ptr != NULL; naptr_ptr = naptr_ptr->next) { tmp = PyStructSequence_New(&AresQueryNAPTRResultType); if (tmp == NULL) { break; } PyStructSequence_SET_ITEM(tmp, 0, PyInt_FromLong((long)naptr_ptr->order)); PyStructSequence_SET_ITEM(tmp, 1, PyInt_FromLong((long)naptr_ptr->preference)); PyStructSequence_SET_ITEM(tmp, 2, Py_BuildValue("s", (char *)naptr_ptr->flags)); PyStructSequence_SET_ITEM(tmp, 3, Py_BuildValue("s", (char *)naptr_ptr->service)); PyStructSequence_SET_ITEM(tmp, 4, Py_BuildValue("s", (char *)naptr_ptr->regexp)); PyStructSequence_SET_ITEM(tmp, 5, Py_BuildValue("s", naptr_ptr->replacement)); PyStructSequence_SET_ITEM(tmp, 6, PyInt_FromLong((long)naptr_ptr->ttl)); PyList_Append(dns_result, tmp); Py_DECREF(tmp); } errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); if (naptr_reply) { ares_free_data(naptr_reply); } Py_DECREF(callback); PyGILState_Release(gstate); } static void host_cb(void *arg, int status, int timeouts, struct hostent *hostent) { PyGILState_STATE gstate = PyGILState_Ensure(); char ip[INET6_ADDRSTRLEN]; char **ptr; PyObject *callback, *dns_name, *errorno, *dns_aliases, *dns_addrlist, *dns_result, *tmp, *result; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_aliases = PyList_New(0); dns_addrlist = PyList_New(0); dns_result = PyStructSequence_New(&AresHostResultType); if (!(dns_aliases && dns_addrlist && dns_result)) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); Py_XDECREF(dns_aliases); Py_XDECREF(dns_addrlist); Py_XDECREF(dns_result); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } for (ptr = hostent->h_aliases; *ptr != NULL; ptr++) { if (*ptr != hostent->h_name && strcmp(*ptr, hostent->h_name)) { tmp = Py_BuildValue("s", *ptr); if (tmp == NULL) { break; } PyList_Append(dns_aliases, tmp); Py_DECREF(tmp); } } for (ptr = hostent->h_addr_list; *ptr != NULL; ptr++) { if (hostent->h_addrtype == AF_INET) { ares_inet_ntop(AF_INET, *ptr, ip, INET_ADDRSTRLEN); tmp = Py_BuildValue("s", ip); } else if (hostent->h_addrtype == AF_INET6) { ares_inet_ntop(AF_INET6, *ptr, ip, INET6_ADDRSTRLEN); tmp = Py_BuildValue("s", ip); } else { continue; } if (tmp == NULL) { break; } PyList_Append(dns_addrlist, tmp); Py_DECREF(tmp); } dns_name = Py_BuildValue("s", hostent->h_name); PyStructSequence_SET_ITEM(dns_result, 0, dns_name); PyStructSequence_SET_ITEM(dns_result, 1, dns_aliases); PyStructSequence_SET_ITEM(dns_result, 2, dns_addrlist); errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); Py_DECREF(callback); PyGILState_Release(gstate); } static void nameinfo_cb(void *arg, int status, int timeouts, char *node, char *service) { PyGILState_STATE gstate = PyGILState_Ensure(); PyObject *callback, *errorno, *dns_node, *dns_service, *dns_result, *result; callback = (PyObject *)arg; ASSERT(callback); if (status != ARES_SUCCESS) { errorno = PyInt_FromLong((long)status); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_result = PyStructSequence_New(&AresNameinfoResultType); if (!dns_result) { PyErr_NoMemory(); PyErr_WriteUnraisable(Py_None); errorno = PyInt_FromLong((long)ARES_ENOMEM); dns_result = Py_None; Py_INCREF(Py_None); goto callback; } dns_node = Py_BuildValue("s", node); if (service) { dns_service = Py_BuildValue("s", service); } else { dns_service = Py_None; Py_INCREF(Py_None); } PyStructSequence_SET_ITEM(dns_result, 0, dns_node); PyStructSequence_SET_ITEM(dns_result, 1, dns_service); errorno = Py_None; Py_INCREF(Py_None); callback: result = PyObject_CallFunctionObjArgs(callback, dns_result, errorno, NULL); if (result == NULL) { PyErr_WriteUnraisable(callback); } Py_XDECREF(result); Py_DECREF(dns_result); Py_DECREF(errorno); Py_DECREF(callback); PyGILState_Release(gstate); } static PyObject * Channel_func_query(Channel *self, PyObject *args) { char *name; int query_type; PyObject *callback, *ret; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "etiO:query", "idna", &name, &query_type, &callback)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); ret = NULL; goto finally; } Py_INCREF(callback); switch (query_type) { case T_A: { ares_query(self->channel, name, C_IN, T_A, &query_a_cb, (void *)callback); break; } case T_AAAA: { ares_query(self->channel, name, C_IN, T_AAAA, &query_aaaa_cb, (void *)callback); break; } case T_CNAME: { ares_query(self->channel, name, C_IN, T_CNAME, &query_cname_cb, (void *)callback); break; } case T_MX: { ares_query(self->channel, name, C_IN, T_MX, &query_mx_cb, (void *)callback); break; } case T_NAPTR: { ares_query(self->channel, name, C_IN, T_NAPTR, &query_naptr_cb, (void *)callback); break; } case T_NS: { ares_query(self->channel, name, C_IN, T_NS, &query_ns_cb, (void *)callback); break; } case T_PTR: { ares_query(self->channel, name, C_IN, T_PTR, &query_ptr_cb, (void *)callback); break; } case T_SOA: { ares_query(self->channel, name, C_IN, T_SOA, &query_soa_cb, (void *)callback); break; } case T_SRV: { ares_query(self->channel, name, C_IN, T_SRV, &query_srv_cb, (void *)callback); break; } case T_TXT: { ares_query(self->channel, name, C_IN, T_TXT, &query_txt_cb, (void *)callback); break; } default: { Py_DECREF(callback); PyErr_SetString(PyExc_ValueError, "invalid query type specified"); ret = NULL; goto finally; } } ret = Py_None; finally: PyMem_Free(name); Py_XINCREF(ret); return ret; } static PyObject * Channel_func_gethostbyname(Channel *self, PyObject *args) { char *name; int family; PyObject *callback, *ret; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "etiO:gethostbyname", "idna", &name, &family, &callback)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); ret = NULL; goto finally; } Py_INCREF(callback); ares_gethostbyname(self->channel, name, family, &host_cb, (void *)callback); ret = Py_None; finally: PyMem_Free(name); Py_XINCREF(ret); return ret; } static PyObject * Channel_func_gethostbyaddr(Channel *self, PyObject *args) { char *name; int family, length; void *address; struct in_addr addr4; struct in6_addr addr6; PyObject *callback; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "sO:gethostbyaddr", &name, &callback)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); return NULL; } if (ares_inet_pton(AF_INET, name, &addr4) == 1) { length = sizeof(struct in_addr); address = (void *)&addr4; family = AF_INET; } else if (ares_inet_pton(AF_INET6, name, &addr6) == 1) { length = sizeof(struct in6_addr); address = (void *)&addr6; family = AF_INET6; } else { PyErr_SetString(PyExc_ValueError, "invalid IP address"); return NULL; } Py_INCREF(callback); ares_gethostbyaddr(self->channel, address, length, family, &host_cb, (void *)callback); Py_RETURN_NONE; } static PyObject * Channel_func_getnameinfo(Channel *self, PyObject *args) { char *addr; int port, flags, length; struct in_addr addr4; struct in6_addr addr6; struct sockaddr *sa; struct sockaddr_in sa4; struct sockaddr_in6 sa6; PyObject *callback; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "(si)iO:getnameinfo", &addr, &port, &flags, &callback)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); return NULL; } if (port < 0 || port > 65535) { PyErr_SetString(PyExc_ValueError, "port must be between 0 and 65535"); return NULL; } if (ares_inet_pton(AF_INET, addr, &addr4) == 1) { sa4 = uv_ip4_addr(addr, port); sa = (struct sockaddr *)&sa4; length = sizeof(struct sockaddr_in); } else if (ares_inet_pton(AF_INET6, addr, &addr6) == 1) { sa6 = uv_ip6_addr(addr, port); sa = (struct sockaddr *)&sa6; length = sizeof(struct sockaddr_in6); } else { PyErr_SetString(PyExc_ValueError, "invalid IP address"); return NULL; } Py_INCREF(callback); ares_getnameinfo(self->channel, sa, length, flags, &nameinfo_cb, (void *)callback); Py_RETURN_NONE; } static PyObject * Channel_func_cancel(Channel *self) { CHECK_CHANNEL(self); ares_cancel(self->channel); Py_RETURN_NONE; } static PyObject * Channel_func_destroy(Channel *self) { CHECK_CHANNEL(self); ares_destroy(self->channel); self->channel = NULL; Py_RETURN_NONE; } static PyObject * Channel_func_set_local_ip(Channel *self, PyObject *args) { char *ip; struct in_addr addr4; struct in6_addr addr6; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "s:set_local_ip", &ip)) { return NULL; } if (ares_inet_pton(AF_INET, ip, &addr4) == 1) { ares_set_local_ip4(self->channel, ntohl(addr4.s_addr)); } else if (ares_inet_pton(AF_INET6, ip, &addr6) == 1) { ares_set_local_ip6(self->channel, addr6.s6_addr); } else { PyErr_SetString(PyExc_ValueError, "invalid IP address"); return NULL; } Py_RETURN_NONE; } static PyObject * Channel_func_set_local_dev(Channel *self, PyObject *args) { char *dev; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "s:set_local_dev", &dev)) { return NULL; } ares_set_local_dev(self->channel, dev); Py_RETURN_NONE; } static PyObject * Channel_func_process_fd(Channel *self, PyObject *args) { long read_fd, write_fd; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "ll:process_fd", &read_fd, &write_fd)) { return NULL; } ares_process_fd(self->channel, (ares_socket_t)read_fd, (ares_socket_t)write_fd); Py_RETURN_NONE; } /* borrowed from signalmodule.c */ static inline void timeval_from_double(double d, struct timeval *tv) { tv->tv_sec = (long)floor(d); tv->tv_usec = (long)(fmod(d, 1.0) * 1000000.0); } static inline double double_from_timeval(struct timeval *tv) { return (double)tv->tv_sec + (double)(tv->tv_usec / 1000000.0); } static PyObject * Channel_func_timeout(Channel *self, PyObject *args) { double timeout = -1; struct timeval tv, maxtv, *tvp, *maxtvp; CHECK_CHANNEL(self); if (!PyArg_ParseTuple(args, "|d:timeout", &timeout)) { return NULL; } if (timeout != -1 && timeout < 0.0) { PyErr_SetString(PyExc_ValueError, "timeout needs to be a positive number"); return NULL; } if (timeout != -1) { timeval_from_double(timeout, &maxtv); maxtvp = &maxtv; } else { maxtvp = NULL; } tvp = ares_timeout(self->channel, maxtvp, &tv); if (tvp == NULL) return PyFloat_FromDouble(0.0); else return PyFloat_FromDouble(double_from_timeval(tvp)); } static PyObject * Channel_func_getsock(Channel *self) { int i, bitmask; ares_socket_t socks[ARES_GETSOCK_MAXNUM]; PyObject *tpl, *rfds, *wfds, *item; CHECK_CHANNEL(self); tpl = PyTuple_New(2); rfds = PyList_New(0); wfds = PyList_New(0); if (!tpl || !rfds || !wfds) { PyErr_NoMemory(); Py_XDECREF(tpl); Py_XDECREF(rfds); Py_XDECREF(wfds); return NULL; } bitmask = ares_getsock(self->channel, socks, ARES_GETSOCK_MAXNUM); for(i=0; i < ARES_GETSOCK_MAXNUM; i++) { if(ARES_GETSOCK_READABLE(bitmask, i)) { item = PyInt_FromLong((long)socks[i]); PyList_Append(rfds, item); Py_DECREF(item); } if(ARES_GETSOCK_WRITABLE(bitmask, i)) { item = PyInt_FromLong((long)socks[i]); PyList_Append(wfds, item); Py_DECREF(item); } } PyTuple_SET_ITEM(tpl, 0, rfds); PyTuple_SET_ITEM(tpl, 1, wfds); return tpl; } static int set_nameservers(Channel *self, PyObject *value) { char *server; int i, r, length, ret; struct ares_addr_node *servers; Py_buffer pbuf; PyObject *server_list, *item, *data_fast; servers = NULL; server_list = value; ret = 0; if ((data_fast = PySequence_Fast(server_list, "argument 1 must be an iterable")) == NULL) { return -1; } length = PySequence_Fast_GET_SIZE(data_fast); if (length > INT_MAX) { PyErr_SetString(PyExc_ValueError, "argument 1 is too long"); Py_DECREF(data_fast); return -1; } if (length == 0) { /* c-ares doesn't do anything */ return 0; } servers = PyMem_Malloc(sizeof(struct ares_addr_node) * length); if (!servers) { PyErr_NoMemory(); ret = -1; goto end; } for (i = 0; i < length; i++) { item = PySequence_Fast_GET_ITEM(data_fast, i); if (!item || !PyArg_Parse(item, "s*;args contains a non-string value", &pbuf)) { goto end; } server = pbuf.buf; if (ares_inet_pton(AF_INET, server, &servers[i].addr.addr4) == 1) { servers[i].family = AF_INET; } else if (ares_inet_pton(AF_INET6, server, &servers[i].addr.addr6) == 1) { servers[i].family = AF_INET6; } else { PyErr_SetString(PyExc_ValueError, "invalid IP address"); PyBuffer_Release(&pbuf); ret = -1; goto end; } PyBuffer_Release(&pbuf); if (i > 0) { servers[i-1].next = &servers[i]; } } if (servers) { servers[length-1].next = NULL; } r = ares_set_servers(self->channel, servers); if (r != ARES_SUCCESS) { RAISE_ARES_EXCEPTION(r); ret = -1; } end: PyMem_Free(servers); return ret; } static PyObject * Channel_servers_get(Channel *self, void *closure) { int r; char ip[INET6_ADDRSTRLEN]; struct ares_addr_node *server, *servers; PyObject *server_list; PyObject *tmp; UNUSED_ARG(closure); if (!self->channel) { PyErr_SetString(PyExc_AresError, "Channel has already been destroyed"); return NULL; } server_list = PyList_New(0); if (!server_list) { PyErr_NoMemory(); return NULL; } r = ares_get_servers(self->channel, &servers); if (r != ARES_SUCCESS) { RAISE_ARES_EXCEPTION(r); return NULL; } for (server = servers; server != NULL; server = server->next) { if (server->family == AF_INET) { ares_inet_ntop(AF_INET, &(server->addr.addr4), ip, INET_ADDRSTRLEN); tmp = Py_BuildValue("s", ip); } else { ares_inet_ntop(AF_INET6, &(server->addr.addr6), ip, INET6_ADDRSTRLEN); tmp = Py_BuildValue("s", ip); } if (tmp == NULL) { break; } r = PyList_Append(server_list, tmp); Py_DECREF(tmp); if (r != 0) { break; } } return server_list; } static int Channel_servers_set(Channel *self, PyObject *value, void *closure) { UNUSED_ARG(closure); if (!self->channel) { PyErr_SetString(PyExc_AresError, "Channel has already been destroyed"); return -1; } return set_nameservers(self, value); } static void free_domains(char **domains) { char **ptr; if (domains) { for (ptr = domains; *ptr; ptr++) { PyMem_Free(*ptr); } PyMem_Free(domains); } } static void process_domains(PyObject *domains, char ***rdomains, int *ndomains) { Py_ssize_t i, n; PyObject *item, *data_fast; char **c_domains; char *arg_str, *tmp_str; c_domains = NULL; *rdomains = NULL; *ndomains = 0; if ((data_fast = PySequence_Fast(domains, "argument 1 must be an iterable")) == NULL) { goto cleanup; } n = PySequence_Fast_GET_SIZE(data_fast); if (n > INT_MAX) { PyErr_SetString(PyExc_ValueError, "argument 1 is too long"); goto cleanup; } if (n == 0) { return; } c_domains = (char **)PyMem_Malloc(sizeof(char *) * n+1); if (!c_domains) { PyErr_NoMemory(); goto cleanup; } memset(c_domains, 0, n+1); i = 0; while (i < n) { item = PySequence_Fast_GET_ITEM(data_fast, i); if (!item || !PyArg_Parse(item, "s;args contains a non-string value", &arg_str)) { Py_XDECREF(item); goto cleanup; } Py_DECREF(item); tmp_str = (char *) PyMem_Malloc(strlen(arg_str) + 1); if (!tmp_str) { PyErr_NoMemory(); goto cleanup; } strcpy(tmp_str, arg_str); c_domains[i] = tmp_str; i++; } c_domains[n] = NULL; *rdomains = c_domains; *ndomains = n; return; cleanup: *rdomains = NULL; *ndomains = -1; free_domains(c_domains); } static int Channel_tp_init(Channel *self, PyObject *args, PyObject *kwargs) { int r, flags, tries, ndots, tcp_port, udp_port, optmask, ndomains, socket_send_buffer_size, socket_receive_buffer_size; char *lookups; char **c_domains; double timeout; struct ares_options options; PyObject *servers, *domains, *sock_state_cb, *rotate; static char *kwlist[] = {"flags", "timeout", "tries", "ndots", "tcp_port", "udp_port", "servers", "domains", "lookups", "sock_state_cb", "socket_send_buffer_size", "socket_receive_buffer_size", "rotate", NULL}; optmask = 0; flags = tries = ndots = tcp_port = udp_port = socket_send_buffer_size = socket_receive_buffer_size = -1; timeout = -1.0; lookups = NULL; c_domains = NULL; servers = domains = sock_state_cb = NULL; rotate = Py_False; if (self->channel) { PyErr_SetString(PyExc_AresError, "Object already initialized"); return -1; } if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|idiiiiOOsOiiO!:__init__", kwlist, &flags, &timeout, &tries, &ndots, &tcp_port, &udp_port, &servers, &domains, &lookups, &sock_state_cb, &socket_send_buffer_size, &socket_receive_buffer_size, &PyBool_Type, &rotate)) { return -1; } if (sock_state_cb && !PyCallable_Check(sock_state_cb)) { PyErr_SetString(PyExc_TypeError, "sock_state_cb is not callable"); return -1; } r = ares_library_init(ARES_LIB_INIT_ALL); if (r != ARES_SUCCESS) { RAISE_ARES_EXCEPTION(r); return -1; } self->lib_initialized = True; memset(&options, 0, sizeof(struct ares_options)); if (flags != -1) { options.flags = flags; optmask |= ARES_OPT_FLAGS; } if (timeout != -1) { options.timeout = (int)(timeout * 1000); optmask |= ARES_OPT_TIMEOUTMS; } if (tries != -1) { options.tries = tries; optmask |= ARES_OPT_TRIES; } if (ndots != -1) { options.ndots = ndots; optmask |= ARES_OPT_NDOTS; } if (tcp_port != -1) { options.tcp_port = tcp_port; optmask |= ARES_OPT_TCP_PORT; } if (udp_port != -1) { options.udp_port = udp_port; optmask |= ARES_OPT_UDP_PORT; } if (socket_send_buffer_size != -1) { options.socket_send_buffer_size = socket_send_buffer_size; optmask |= ARES_OPT_SOCK_SNDBUF; } if (socket_receive_buffer_size != -1) { options.socket_receive_buffer_size = socket_receive_buffer_size; optmask |= ARES_OPT_SOCK_RCVBUF; } if (sock_state_cb) { options.sock_state_cb = ares__sock_state_cb; options.sock_state_cb_data = (void *)self; optmask |= ARES_OPT_SOCK_STATE_CB; Py_INCREF(sock_state_cb); self->sock_state_cb = sock_state_cb; } if (lookups) { options.lookups = lookups; optmask |= ARES_OPT_LOOKUPS; } if (domains) { process_domains(domains, &c_domains, &ndomains); if (ndomains == -1) { goto error; } options.domains = c_domains; options.ndomains = ndomains; optmask |= ARES_OPT_DOMAINS; } if (rotate == Py_True) { optmask |= ARES_OPT_ROTATE; } r = ares_init_options(&self->channel, &options, optmask); if (r != ARES_SUCCESS) { RAISE_ARES_EXCEPTION(r); goto error; } free_domains(c_domains); if (servers) { return set_nameservers(self, servers); } return 0; error: free_domains(c_domains); Py_XDECREF(sock_state_cb); return -1; } static PyObject * Channel_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) { Channel *self = (Channel *)PyType_GenericNew(type, args, kwargs); if (!self) { return NULL; } self->channel = NULL; self->lib_initialized = False; return (PyObject *)self; } static int Channel_tp_traverse(Channel *self, visitproc visit, void *arg) { Py_VISIT(self->sock_state_cb); return 0; } static int Channel_tp_clear(Channel *self) { Py_CLEAR(self->sock_state_cb); return 0; } static void Channel_tp_dealloc(Channel *self) { if (self->channel) { ares_destroy(self->channel); self->channel = NULL; } if (self->lib_initialized) { ares_library_cleanup(); } Channel_tp_clear(self); Py_TYPE(self)->tp_free((PyObject *)self); } static PyMethodDef Channel_tp_methods[] = { { "gethostbyname", (PyCFunction)Channel_func_gethostbyname, METH_VARARGS, "Gethostbyname" }, { "gethostbyaddr", (PyCFunction)Channel_func_gethostbyaddr, METH_VARARGS, "Gethostbyaddr" }, { "getnameinfo", (PyCFunction)Channel_func_getnameinfo, METH_VARARGS, "Getnameinfo" }, { "query", (PyCFunction)Channel_func_query, METH_VARARGS, "Run a DNS query of the specified type" }, { "cancel", (PyCFunction)Channel_func_cancel, METH_NOARGS, "Cancel all pending queries on this resolver" }, { "destroy", (PyCFunction)Channel_func_destroy, METH_NOARGS, "Destroy this channel, it will no longer be usable" }, { "process_fd", (PyCFunction)Channel_func_process_fd, METH_VARARGS, "Process file descriptors actions" }, { "getsock", (PyCFunction)Channel_func_getsock, METH_NOARGS, "Set of file descriptors the application needs to poll" }, { "set_local_ip", (PyCFunction)Channel_func_set_local_ip, METH_VARARGS, "Set source IP address" }, { "set_local_dev", (PyCFunction)Channel_func_set_local_dev, METH_VARARGS, "Set source device name" }, { "timeout", (PyCFunction)Channel_func_timeout, METH_VARARGS, "Determine polling timeout" }, { NULL } }; static PyGetSetDef Channel_tp_getsets[] = { {"servers", (getter)Channel_servers_get, (setter)Channel_servers_set, "DNS nameservers", NULL}, {NULL} }; static PyTypeObject ChannelType = { PyVarObject_HEAD_INIT(NULL, 0) "pycares.Channel", /*tp_name*/ sizeof(Channel), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)Channel_tp_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_compare*/ 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash */ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ (traverseproc)Channel_tp_traverse, /*tp_traverse*/ (inquiry)Channel_tp_clear, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ Channel_tp_methods, /*tp_methods*/ 0, /*tp_members*/ Channel_tp_getsets, /*tp_getsets*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ (initproc)Channel_tp_init, /*tp_init*/ 0, /*tp_alloc*/ Channel_tp_new, /*tp_new*/ }; pycares-pycares-2.1.1/src/errno.c000066400000000000000000000046771277456777700167600ustar00rootroot00000000000000 /* Borrowed code from Python (Modules/errnomodule.c) */ static void inscode(PyObject *module_dict, PyObject *other_dict, const char *name, int code) { PyObject *error_name = Py_BuildValue("s", name); PyObject *error_code = PyInt_FromLong((long) code); /* Don't bother checking for errors; they'll be caught at the end * of the module initialization function by the caller of * init_errno(). */ if (error_name && error_code) { PyDict_SetItem(module_dict, error_name, error_code); PyDict_SetItem(other_dict, error_code, error_name); } Py_XDECREF(error_name); Py_XDECREF(error_code); } static PyObject * Errno_func_strerror(PyObject *obj, PyObject *args) { int errorno; UNUSED_ARG(obj); if (!PyArg_ParseTuple(args, "i:strerror", &errorno)) { return NULL; } return Py_BuildValue("s", ares_strerror(errorno)); } static PyMethodDef Errno_methods[] = { { "strerror", (PyCFunction)Errno_func_strerror, METH_VARARGS, "Get string representation of a c-ares error code." }, { NULL } }; #ifdef PYCARES_PYTHON3 static PyModuleDef pycares_errorno_module = { PyModuleDef_HEAD_INIT, "pycares._core.errno", /*m_name*/ NULL, /*m_doc*/ -1, /*m_size*/ Errno_methods, /*m_methods*/ }; #endif PyObject * init_errno(void) { PyObject *module; PyObject *module_dict; PyObject *errorcode_dict; #ifdef PYCARES_PYTHON3 module = PyModule_Create(&pycares_errorno_module); #else module = Py_InitModule("pycares._core.errno", Errno_methods); #endif if (module == NULL) { return NULL; } module_dict = PyModule_GetDict(module); errorcode_dict = PyDict_New(); if (!module_dict || !errorcode_dict || PyDict_SetItemString(module_dict, "errorcode", errorcode_dict) < 0) { return NULL; } #define XX(name) inscode(module_dict, errorcode_dict, __STRING(ARES_##name), ARES_##name); XX(SUCCESS) XX(ENODATA) XX(EFORMERR) XX(ESERVFAIL) XX(ENOTFOUND) XX(ENOTIMP) XX(EREFUSED) XX(EBADQUERY) XX(EBADNAME) XX(EBADFAMILY) XX(EBADRESP) XX(ECONNREFUSED) XX(ETIMEOUT) XX(EOF) XX(EFILE) XX(ENOMEM) XX(EDESTRUCTION) XX(EBADSTR) XX(EBADFLAGS) XX(ENONAME) XX(EBADHINTS) XX(ENOTINITIALIZED) XX(ELOADIPHLPAPI) XX(EADDRGETNETWORKPARAMS) XX(ECANCELLED) #undef XX Py_DECREF(errorcode_dict); return module; } pycares-pycares-2.1.1/src/pycares.c000066400000000000000000000200421277456777700172610ustar00rootroot00000000000000 #include "pycares.h" #include "cares.c" #include "errno.c" /* adapted from ares_gethostbyaddr.c */ static PyObject * pycares_func_reverse_address(PyObject *obj, PyObject *args) { char *ip_address; char name[128]; unsigned long laddr, a1, a2, a3, a4; unsigned char *bytes; struct in_addr addr4; struct in6_addr addr6; if (!PyArg_ParseTuple(args, "s:reverse_address", &ip_address)) { return NULL; } if (ares_inet_pton(AF_INET, ip_address, &addr4) == 1) { laddr = ntohl(addr4.s_addr); a1 = (laddr >> 24UL) & 0xFFUL; a2 = (laddr >> 16UL) & 0xFFUL; a3 = (laddr >> 8UL) & 0xFFUL; a4 = laddr & 0xFFUL; sprintf(name, "%lu.%lu.%lu.%lu.in-addr.arpa", a4, a3, a2, a1); } else if (ares_inet_pton(AF_INET6, ip_address, &addr6) == 1) { bytes = (unsigned char *)&addr6; /* 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); } else { PyErr_SetString(PyExc_ValueError, "invalid IP address"); return NULL; } return Py_BuildValue("s", name); } static PyMethodDef pycares_methods[] = { { "reverse_address", (PyCFunction)pycares_func_reverse_address, METH_VARARGS, "Get reverse representation of an IP address" }, { NULL } }; #ifdef PYCARES_PYTHON3 static PyModuleDef pycares_module = { PyModuleDef_HEAD_INIT, "pycares._core", /*m_name*/ NULL, /*m_doc*/ -1, /*m_size*/ pycares_methods, /*m_methods*/ }; #endif /* Module */ PyObject * init_pycares(void) { /* Modules */ PyObject *pycares; PyObject *errno_module; /* Main module */ #ifdef PYCARES_PYTHON3 pycares = PyModule_Create(&pycares_module); #else pycares = Py_InitModule("pycares._core", pycares_methods); #endif /* Errno module */ errno_module = init_errno(); if (errno_module == NULL) { goto fail; } PyCaresModule_AddObject(pycares, "errno", errno_module); #ifdef PYCARES_PYTHON3 PyDict_SetItemString(PyImport_GetModuleDict(), pycares_errorno_module.m_name, errno_module); Py_DECREF(errno_module); #endif /* Exceptions */ PyExc_AresError = PyErr_NewException("pycares.AresError", NULL, NULL); PyCaresModule_AddType(pycares, "AresError", (PyTypeObject *)PyExc_AresError); /* Initialize PyStructSequence types */ if (AresHostResultType.tp_name == 0) { PyStructSequence_InitType(&AresHostResultType, &ares_host_result_desc); PyCaresModule_AddType(pycares, "ares_host_result", &AresHostResultType); } if (AresNameinfoResultType.tp_name == 0) { PyStructSequence_InitType(&AresNameinfoResultType, &ares_nameinfo_result_desc); PyCaresModule_AddType(pycares, "ares_nameinfo_result", &AresNameinfoResultType); } if (AresQuerySimpleResultType.tp_name == 0) { PyStructSequence_InitType(&AresQuerySimpleResultType, &ares_query_simple_result_desc); PyCaresModule_AddType(pycares, "ares_query_simple_result", &AresQuerySimpleResultType); } if (AresQueryCNAMEResultType.tp_name == 0) { PyStructSequence_InitType(&AresQueryCNAMEResultType, &ares_query_cname_result_desc); PyCaresModule_AddType(pycares, "ares_query_cname_result", &AresQueryCNAMEResultType); } if (AresQueryMXResultType.tp_name == 0) { PyStructSequence_InitType(&AresQueryMXResultType, &ares_query_mx_result_desc); PyCaresModule_AddType(pycares, "ares_query_mx_result", &AresQueryMXResultType); } if (AresQueryNSResultType.tp_name == 0) { PyStructSequence_InitType(&AresQueryNSResultType, &ares_query_ns_result_desc); PyCaresModule_AddType(pycares, "ares_query_ns_result", &AresQueryNSResultType); } if (AresQueryPTRResultType.tp_name == 0) { PyStructSequence_InitType(&AresQueryPTRResultType, &ares_query_ptr_result_desc); PyCaresModule_AddType(pycares, "ares_query_ptr_result", &AresQueryPTRResultType); } if (AresQuerySOAResultType.tp_name == 0) { PyStructSequence_InitType(&AresQuerySOAResultType, &ares_query_soa_result_desc); PyCaresModule_AddType(pycares, "ares_query_soa_result", &AresQuerySOAResultType); } if (AresQuerySRVResultType.tp_name == 0) { PyStructSequence_InitType(&AresQuerySRVResultType, &ares_query_srv_result_desc); PyCaresModule_AddType(pycares, "ares_query_srv_result", &AresQuerySRVResultType); } if (AresQueryTXTResultType.tp_name == 0) { PyStructSequence_InitType(&AresQueryTXTResultType, &ares_query_txt_result_desc); PyCaresModule_AddType(pycares, "ares_query_txt_result", &AresQueryTXTResultType); } if (AresQueryNAPTRResultType.tp_name == 0) { PyStructSequence_InitType(&AresQueryNAPTRResultType, &ares_query_naptr_result_desc); PyCaresModule_AddType(pycares, "ares_query_naptr_result", &AresQueryNAPTRResultType); } /* Flag values */ PyModule_AddIntMacro(pycares, ARES_FLAG_USEVC); PyModule_AddIntMacro(pycares, ARES_FLAG_PRIMARY); PyModule_AddIntMacro(pycares, ARES_FLAG_IGNTC); PyModule_AddIntMacro(pycares, ARES_FLAG_NORECURSE); PyModule_AddIntMacro(pycares, ARES_FLAG_STAYOPEN); PyModule_AddIntMacro(pycares, ARES_FLAG_NOSEARCH); PyModule_AddIntMacro(pycares, ARES_FLAG_NOALIASES); PyModule_AddIntMacro(pycares, ARES_FLAG_NOCHECKRESP); /* Nameinfo flag values */ PyModule_AddIntMacro(pycares, ARES_NI_NOFQDN); PyModule_AddIntMacro(pycares, ARES_NI_NUMERICHOST); PyModule_AddIntMacro(pycares, ARES_NI_NAMEREQD); PyModule_AddIntMacro(pycares, ARES_NI_NUMERICSERV); PyModule_AddIntMacro(pycares, ARES_NI_DGRAM); PyModule_AddIntMacro(pycares, ARES_NI_TCP); PyModule_AddIntMacro(pycares, ARES_NI_UDP); PyModule_AddIntMacro(pycares, ARES_NI_SCTP); PyModule_AddIntMacro(pycares, ARES_NI_DCCP); PyModule_AddIntMacro(pycares, ARES_NI_NUMERICSCOPE); PyModule_AddIntMacro(pycares, ARES_NI_LOOKUPHOST); PyModule_AddIntMacro(pycares, ARES_NI_LOOKUPSERVICE); PyModule_AddIntMacro(pycares, ARES_NI_IDN); PyModule_AddIntMacro(pycares, ARES_NI_IDN_ALLOW_UNASSIGNED); PyModule_AddIntMacro(pycares, ARES_NI_IDN_USE_STD3_ASCII_RULES); /* Bad socket */ PyModule_AddIntMacro(pycares, ARES_SOCKET_BAD); /* Query types */ PyModule_AddIntConstant(pycares, "QUERY_TYPE_A", T_A); PyModule_AddIntConstant(pycares, "QUERY_TYPE_AAAA", T_AAAA); PyModule_AddIntConstant(pycares, "QUERY_TYPE_CNAME", T_CNAME); PyModule_AddIntConstant(pycares, "QUERY_TYPE_MX", T_MX); PyModule_AddIntConstant(pycares, "QUERY_TYPE_NAPTR", T_NAPTR); PyModule_AddIntConstant(pycares, "QUERY_TYPE_NS", T_NS); PyModule_AddIntConstant(pycares, "QUERY_TYPE_PTR", T_PTR); PyModule_AddIntConstant(pycares, "QUERY_TYPE_SOA", T_SOA); PyModule_AddIntConstant(pycares, "QUERY_TYPE_SRV", T_SRV); PyModule_AddIntConstant(pycares, "QUERY_TYPE_TXT", T_TXT); PyCaresModule_AddType(pycares, "Channel", &ChannelType); /* c-ares version */ PyModule_AddStringConstant(pycares, "ARES_VERSION", ares_version(NULL)); return pycares; fail: #ifdef PYCARES_PYTHON3 Py_DECREF(pycares); #endif return NULL; } #ifdef PYCARES_PYTHON3 PyMODINIT_FUNC PyInit__core(void) { return init_pycares(); } #else PyMODINIT_FUNC init_core(void) { init_pycares(); } #endif pycares-pycares-2.1.1/src/pycares.h000066400000000000000000000157321277456777700173000ustar00rootroot00000000000000 #ifndef PYCARES_H #define PYCARES_H /* python */ #define PY_SSIZE_T_CLEAN #include "Python.h" #include "bytesobject.h" #include "structmember.h" #include "structseq.h" /* Python3 */ #if PY_MAJOR_VERSION >= 3 #define PYCARES_PYTHON3 #define PyInt_FromLong PyLong_FromLong #endif /* c-ares */ #define CARES_STATICLIB 1 #include "ares.h" /* Custom types */ typedef int Bool; #define True 1 #define False 0 /* Utility macros */ #ifndef __STRING #define __STRING(x) #x #endif #define __MSTR(x) __STRING(x) #define UNUSED_ARG(arg) (void)arg #if defined(__MINGW32__) || defined(_MSC_VER) #define PYCARES_WINDOWS #endif #if defined(_MSC_VER) #define __func__ __FUNCTION__ #define inline __inline #endif #define ASSERT(x) \ do { \ if (!(x)) { \ fprintf (stderr, "%s:%u: %s: Assertion `" #x "' failed.\n", \ __FILE__, __LINE__, __func__); \ abort(); \ } \ } while(0) \ #define CHECK_CHANNEL(ch) \ do { \ if (!ch->channel) { \ PyErr_SetString(PyExc_AresError, "Channel has already been destroyed"); \ return NULL; \ } \ } while(0) \ #define RAISE_ARES_EXCEPTION(code) \ do { \ PyObject *exc_data = Py_BuildValue("(is)", code, ares_strerror(code)); \ if (exc_data != NULL) { \ PyErr_SetObject(PyExc_AresError, exc_data); \ Py_DECREF(exc_data); \ } \ } while(0) \ /* Python types */ typedef struct { PyObject_HEAD PyObject *sock_state_cb; ares_channel channel; Bool lib_initialized; } Channel; static PyTypeObject ChannelType; static PyTypeObject AresHostResultType; static PyStructSequence_Field ares_host_result_fields[] = { {"name", ""}, {"aliases", ""}, {"addresses", ""}, {NULL} }; static PyStructSequence_Desc ares_host_result_desc = { "ares_host_result", NULL, ares_host_result_fields, 3 }; static PyTypeObject AresNameinfoResultType; static PyStructSequence_Field ares_nameinfo_result_fields[] = { {"node", ""}, {"service", ""}, {NULL} }; static PyStructSequence_Desc ares_nameinfo_result_desc = { "ares_nameinfo_result", NULL, ares_nameinfo_result_fields, 2 }; static PyTypeObject AresQuerySimpleResultType; static PyStructSequence_Field ares_query_simple_result_fields[] = { {"host", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_simple_result_desc = { "ares_query_simple_result", NULL, ares_query_simple_result_fields, 2 }; static PyTypeObject AresQueryCNAMEResultType; static PyStructSequence_Field ares_query_cname_result_fields[] = { {"cname", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_cname_result_desc = { "ares_query_cname_result", NULL, ares_query_cname_result_fields, 2 }; static PyTypeObject AresQueryMXResultType; static PyStructSequence_Field ares_query_mx_result_fields[] = { {"host", ""}, {"priority", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_mx_result_desc = { "ares_query_mx_result", NULL, ares_query_mx_result_fields, 3 }; static PyTypeObject AresQueryNSResultType; static PyStructSequence_Field ares_query_ns_result_fields[] = { {"host", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_ns_result_desc = { "ares_query_ns_result", NULL, ares_query_ns_result_fields, 2 }; static PyTypeObject AresQueryPTRResultType; static PyStructSequence_Field ares_query_ptr_result_fields[] = { {"name", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_ptr_result_desc = { "ares_query_ptr_result", NULL, ares_query_ptr_result_fields, 2 }; static PyTypeObject AresQuerySOAResultType; static PyStructSequence_Field ares_query_soa_result_fields[] = { {"nsname", ""}, {"hostmaster", ""}, {"serial", ""}, {"refresh", ""}, {"retry", ""}, {"expires", ""}, {"minttl", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_soa_result_desc = { "ares_query_soa_result", NULL, ares_query_soa_result_fields, 8 }; static PyTypeObject AresQuerySRVResultType; static PyStructSequence_Field ares_query_srv_result_fields[] = { {"host", ""}, {"port", ""}, {"priority", ""}, {"weight", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_srv_result_desc = { "ares_query_srv_result", NULL, ares_query_srv_result_fields, 5 }; static PyTypeObject AresQueryTXTResultType; static PyStructSequence_Field ares_query_txt_result_fields[] = { {"text", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_txt_result_desc = { "ares_query_txt_result", NULL, ares_query_txt_result_fields, 2 }; static PyTypeObject AresQueryNAPTRResultType; static PyStructSequence_Field ares_query_naptr_result_fields[] = { {"order", ""}, {"preference", ""}, {"flags", ""}, {"service", ""}, {"regex", ""}, {"replacement", ""}, {"ttl", ""}, {NULL} }; static PyStructSequence_Desc ares_query_naptr_result_desc = { "ares_query_naptr_result", NULL, ares_query_naptr_result_fields, 7 }; /* Some helper stuff */ /* Add a type to a module */ static int PyCaresModule_AddType(PyObject *module, const char *name, PyTypeObject *type) { if (PyType_Ready(type)) { return -1; } Py_INCREF(type); if (PyModule_AddObject(module, name, (PyObject *)type)) { Py_DECREF(type); return -1; } return 0; } /* Add a type to a module */ static int PyCaresModule_AddObject(PyObject *module, const char *name, PyObject *value) { Py_INCREF(value); if (PyModule_AddObject(module, name, value)) { Py_DECREF(value); return -1; } return 0; } #endif pycares-pycares-2.1.1/tasks.py000066400000000000000000000005431277456777700163630ustar00rootroot00000000000000 import invoke # Based on https://github.com/pyca/cryptography/blob/master/tasks.py @invoke.task def release(version): invoke.run("git tag -a pycares-{0} -m \"pycares {0} release\"".format(version)) invoke.run("git push --tags") invoke.run("python setup.py sdist") invoke.run("twine upload -r pypi dist/pycares-{0}*".format(version)) pycares-pycares-2.1.1/tests/000077500000000000000000000000001277456777700160245ustar00rootroot00000000000000pycares-pycares-2.1.1/tests/tests.py000077500000000000000000000334051277456777700175500ustar00rootroot00000000000000#!/usr/bin/env python import select import socket import sys import unittest import pycares 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) @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.assertEqual(self.errorno, None) self.assertEqual(type(self.result), pycares.ares_host_result) @unittest.skipIf(sys.platform == 'win32', 'skipped on Windows') 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) for r in self.result: self.assertEqual(type(r), pycares.ares_query_simple_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.assertEqual(self.errorno, None) for r in self.result: self.assertEqual(type(r), pycares.ares_query_simple_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('livechat.ripe.net', pycares.QUERY_TYPE_CNAME, cb) self.wait() self.assertEqual(type(self.result), pycares.ares_query_cname_result) self.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) # 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.assertEqual(self.errorno, None) # s-pulse.co.jp. 3600 IN TXT "MS=ms18955624" # 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 " "~all" self.assertEqual(len(self.result), 2) 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.assertEqual(type(self.result), pycares.ares_query_soa_result) self.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) 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(pycares.reverse_address(ip), pycares.QUERY_TYPE_PTR, cb) self.wait() self.assertEqual(type(self.result), pycares.ares_query_ptr_result) self.assertEqual(self.errorno, None) 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(pycares.reverse_address(ip), pycares.QUERY_TYPE_PTR, cb) self.wait() self.assertEqual(type(self.result), pycares.ares_query_ptr_result) self.assertEqual(self.errorno, None) 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_channel_destroyed(self): self.channel.destroy() self.assertRaises(pycares.AresError, self.channel.gethostbyname, 'google.com', socket.AF_INET, lambda *x: None) 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_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.assertEqual(self.errorno, None) 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.assertEqual(self.errorno, None) def test_reverse_address(self): s = '1.2.3.4' expected = '4.3.2.1.in-addr.arpa' self.assertEqual(pycares.reverse_address(s), expected) s = '2607:f8b0:4010:801::1013' expected = '3.1.0.1.0.0.0.0.0.0.0.0.0.0.0.0.1.0.8.0.0.1.0.4.0.b.8.f.7.0.6.2.ip6.arpa' self.assertEqual(pycares.reverse_address(s), expected) 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) if __name__ == '__main__': unittest.main(verbosity=2) pycares-pycares-2.1.1/tox.ini000066400000000000000000000001251277456777700161730ustar00rootroot00000000000000[tox] envlist = py27, py33, py34, py35 [testenv] commands = python tests/tests.py