Add c-ares dependency
authorBert Belder <bertbelder@gmail.com>
Mon, 6 Aug 2012 19:27:47 +0000 (21:27 +0200)
committerBert Belder <bertbelder@gmail.com>
Mon, 6 Aug 2012 23:49:02 +0000 (01:49 +0200)
This is the c-ares code that used to live in the libuv source tree.
It is based on c-ares 1.9.0.

92 files changed:
deps/cares/.gitignore [new file with mode: 0644]
deps/cares/build/gcc_version.py [new file with mode: 0644]
deps/cares/cares.gyp [new file with mode: 0644]
deps/cares/common.gypi [new file with mode: 0644]
deps/cares/config/cygwin/ares_config.h [new file with mode: 0644]
deps/cares/config/darwin/ares_config.h [new file with mode: 0644]
deps/cares/config/freebsd/ares_config.h [new file with mode: 0644]
deps/cares/config/linux/ares_config.h [new file with mode: 0644]
deps/cares/config/netbsd/ares_config.h [new file with mode: 0644]
deps/cares/config/openbsd/ares_config.h [new file with mode: 0644]
deps/cares/config/sunos/ares_config.h [new file with mode: 0644]
deps/cares/config/win32/ares_config.h [new file with mode: 0644]
deps/cares/include/ares.h [new file with mode: 0644]
deps/cares/include/ares_version.h [new file with mode: 0644]
deps/cares/include/nameser.h [new file with mode: 0644]
deps/cares/src/AUTHORS [new file with mode: 0644]
deps/cares/src/CHANGES [new file with mode: 0644]
deps/cares/src/NEWS [new file with mode: 0644]
deps/cares/src/README [new file with mode: 0644]
deps/cares/src/README.cares [new file with mode: 0644]
deps/cares/src/README.msvc [new file with mode: 0644]
deps/cares/src/RELEASE-NOTES [new file with mode: 0644]
deps/cares/src/TODO [new file with mode: 0644]
deps/cares/src/ares__close_sockets.c [new file with mode: 0644]
deps/cares/src/ares__get_hostent.c [new file with mode: 0644]
deps/cares/src/ares__read_line.c [new file with mode: 0644]
deps/cares/src/ares__timeval.c [new file with mode: 0644]
deps/cares/src/ares_cancel.c [new file with mode: 0644]
deps/cares/src/ares_data.c [new file with mode: 0644]
deps/cares/src/ares_data.h [new file with mode: 0644]
deps/cares/src/ares_destroy.c [new file with mode: 0644]
deps/cares/src/ares_dns.h [new file with mode: 0644]
deps/cares/src/ares_expand_name.c [new file with mode: 0644]
deps/cares/src/ares_expand_string.c [new file with mode: 0644]
deps/cares/src/ares_fds.c [new file with mode: 0644]
deps/cares/src/ares_free_hostent.c [new file with mode: 0644]
deps/cares/src/ares_free_string.c [new file with mode: 0644]
deps/cares/src/ares_getenv.c [new file with mode: 0644]
deps/cares/src/ares_getenv.h [new file with mode: 0644]
deps/cares/src/ares_gethostbyaddr.c [new file with mode: 0644]
deps/cares/src/ares_gethostbyname.c [new file with mode: 0644]
deps/cares/src/ares_getnameinfo.c [new file with mode: 0644]
deps/cares/src/ares_getopt.c [new file with mode: 0644]
deps/cares/src/ares_getopt.h [new file with mode: 0644]
deps/cares/src/ares_getsock.c [new file with mode: 0644]
deps/cares/src/ares_init.c [new file with mode: 0644]
deps/cares/src/ares_iphlpapi.h [new file with mode: 0644]
deps/cares/src/ares_ipv6.h [new file with mode: 0644]
deps/cares/src/ares_library_init.c [new file with mode: 0644]
deps/cares/src/ares_library_init.h [new file with mode: 0644]
deps/cares/src/ares_llist.c [new file with mode: 0644]
deps/cares/src/ares_llist.h [new file with mode: 0644]
deps/cares/src/ares_mkquery.c [new file with mode: 0644]
deps/cares/src/ares_nowarn.c [new file with mode: 0644]
deps/cares/src/ares_nowarn.h [new file with mode: 0644]
deps/cares/src/ares_options.c [new file with mode: 0644]
deps/cares/src/ares_parse_a_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_aaaa_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_mx_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_naptr_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_ns_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_ptr_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_soa_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_srv_reply.c [new file with mode: 0644]
deps/cares/src/ares_parse_txt_reply.c [new file with mode: 0644]
deps/cares/src/ares_platform.c [new file with mode: 0644]
deps/cares/src/ares_platform.h [new file with mode: 0644]
deps/cares/src/ares_private.h [new file with mode: 0644]
deps/cares/src/ares_process.c [new file with mode: 0644]
deps/cares/src/ares_query.c [new file with mode: 0644]
deps/cares/src/ares_rules.h [new file with mode: 0644]
deps/cares/src/ares_search.c [new file with mode: 0644]
deps/cares/src/ares_send.c [new file with mode: 0644]
deps/cares/src/ares_setup.h [new file with mode: 0644]
deps/cares/src/ares_strcasecmp.c [new file with mode: 0644]
deps/cares/src/ares_strcasecmp.h [new file with mode: 0644]
deps/cares/src/ares_strdup.c [new file with mode: 0644]
deps/cares/src/ares_strdup.h [new file with mode: 0644]
deps/cares/src/ares_strerror.c [new file with mode: 0644]
deps/cares/src/ares_timeout.c [new file with mode: 0644]
deps/cares/src/ares_version.c [new file with mode: 0644]
deps/cares/src/ares_writev.c [new file with mode: 0644]
deps/cares/src/ares_writev.h [new file with mode: 0644]
deps/cares/src/bitncmp.c [new file with mode: 0644]
deps/cares/src/bitncmp.h [new file with mode: 0644]
deps/cares/src/get_ver.awk [new file with mode: 0644]
deps/cares/src/inet_net_pton.c [new file with mode: 0644]
deps/cares/src/inet_net_pton.h [new file with mode: 0644]
deps/cares/src/inet_ntop.c [new file with mode: 0644]
deps/cares/src/inet_ntop.h [new file with mode: 0644]
deps/cares/src/setup_once.h [new file with mode: 0644]
deps/cares/src/windows_port.c [new file with mode: 0644]

diff --git a/deps/cares/.gitignore b/deps/cares/.gitignore
new file mode 100644 (file)
index 0000000..79b4d2a
--- /dev/null
@@ -0,0 +1,15 @@
+/Debug/
+/out/
+/Release/
+
+/cares.Makefile
+/cares.target.mk
+/Makefile
+
+/*.opensdf
+/*.sdf
+/*.sln
+/*.suo
+/*.vcxproj
+/*.vcxproj.filters
+/*.vcxproj.user
diff --git a/deps/cares/build/gcc_version.py b/deps/cares/build/gcc_version.py
new file mode 100644 (file)
index 0000000..da019e8
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+
+import os
+import re
+import subprocess
+import sys
+
+
+def DoMain(*args):
+  cc = os.environ.get('CC', 'gcc')
+  stdin, stderr = os.pipe()
+  subprocess.call([cc, '-v'], stderr=stderr)
+  output = os.read(stdin, 4096)
+  match = re.search("\ngcc version (\d+\.\d+\.\d+)", output)
+  if match:
+    print(match.group(1))
+
+
+if __name__ == '__main__':
+  DoMain(*sys.argv)
diff --git a/deps/cares/cares.gyp b/deps/cares/cares.gyp
new file mode 100644 (file)
index 0000000..39f4e85
--- /dev/null
@@ -0,0 +1,160 @@
+{
+  'target_defaults': {
+    'conditions': [
+      ['OS!="win"', {
+        'defines': [
+          '_DARWIN_USE_64_BIT_INODE=1',
+          '_LARGEFILE_SOURCE',
+          '_FILE_OFFSET_BITS=64',
+          '_GNU_SOURCE'
+        ]
+      }],
+      ['OS=="solaris"', {
+        'defines': [
+          '__EXTENSIONS__',
+          '_XOPEN_SOURCE=500'
+        ]
+      }]
+    ]
+  },
+
+  'targets': [
+    {
+      'target_name': 'cares',
+      'type': '<(library)',
+      'include_dirs': [ 'include', 'src' ],
+      'direct_dependent_settings': {
+        'include_dirs': [ 'include' ]
+      },
+      'defines': [ 'HAVE_CONFIG_H' ],
+      'sources': [
+        'common.gypi',
+        'include/ares.h',
+        'include/ares_version.h',
+        'include/nameser.h',
+        'src/ares_cancel.c',
+        'src/ares__close_sockets.c',
+        'src/ares_data.c',
+        'src/ares_data.h',
+        'src/ares_destroy.c',
+        'src/ares_dns.h',
+        'src/ares_expand_name.c',
+        'src/ares_expand_string.c',
+        'src/ares_fds.c',
+        'src/ares_free_hostent.c',
+        'src/ares_free_string.c',
+        'src/ares_getenv.h',
+        'src/ares_gethostbyaddr.c',
+        'src/ares_gethostbyname.c',
+        'src/ares__get_hostent.c',
+        'src/ares_getnameinfo.c',
+        'src/ares_getopt.c',
+        'src/ares_getopt.h',
+        'src/ares_getsock.c',
+        'src/ares_init.c',
+        'src/ares_ipv6.h',
+        'src/ares_library_init.c',
+        'src/ares_library_init.h',
+        'src/ares_llist.c',
+        'src/ares_llist.h',
+        'src/ares_mkquery.c',
+        'src/ares_nowarn.c',
+        'src/ares_nowarn.h',
+        'src/ares_options.c',
+        'src/ares_parse_aaaa_reply.c',
+        'src/ares_parse_a_reply.c',
+        'src/ares_parse_mx_reply.c',
+        'src/ares_parse_naptr_reply.c',
+        'src/ares_parse_ns_reply.c',
+        'src/ares_parse_ptr_reply.c',
+        'src/ares_parse_soa_reply.c',
+        'src/ares_parse_srv_reply.c',
+        'src/ares_parse_txt_reply.c',
+        'src/ares_platform.h',
+        'src/ares_private.h',
+        'src/ares_process.c',
+        'src/ares_query.c',
+        'src/ares__read_line.c',
+        'src/ares_rules.h',
+        'src/ares_search.c',
+        'src/ares_send.c',
+        'src/ares_setup.h',
+        'src/ares_strcasecmp.c',
+        'src/ares_strcasecmp.h',
+        'src/ares_strdup.c',
+        'src/ares_strdup.h',
+        'src/ares_strerror.c',
+        'src/ares_timeout.c',
+        'src/ares__timeval.c',
+        'src/ares_version.c',
+        'src/ares_writev.c',
+        'src/ares_writev.h',
+        'src/bitncmp.c',
+        'src/bitncmp.h',
+        'src/inet_net_pton.c',
+        'src/inet_net_pton.h',
+        'src/inet_ntop.c',
+        'src/inet_ntop.h',
+        'src/setup_once.h',
+        'src/windows_port.c'
+      ],
+      'conditions': [
+        [ 'library=="static_library"', {
+          'defines': [ 'CARES_STATICLIB' ]
+        }, {
+          'defines': [ 'CARES_BUILDING_LIBRARY' ]
+        }],
+        [ 'OS=="win"', {
+          'include_dirs': [ 'config/win32' ],
+          'sources': [
+            'config/win32/ares_config.h',
+            'src/windows_port.c',
+            'src/ares_getenv.c',
+            'src/ares_iphlpapi.h',
+            'src/ares_platform.c'
+          ],
+          'libraries': [
+            '-lws2_32.lib',
+            '-liphlpapi.lib'
+          ],
+        }, {
+          # Not Windows i.e. POSIX
+          'cflags': [
+            '-g',
+            '--std=gnu89',
+            '-pedantic',
+            '-Wall',
+            '-Wextra',
+            '-Wno-unused-parameter'
+          ],
+        }],
+        [ 'OS=="linux"', {
+          'include_dirs': [ 'config/linux' ],
+          'sources': [ 'config/linux/ares_config.h' ]
+        }],
+        [ 'OS=="mac"', {
+          'include_dirs': [ 'config/darwin' ],
+          'sources': [ 'config/darwin/ares_config.h' ]
+        }],
+        [ 'OS=="freebsd"', {
+          'include_dirs': [ 'config/freebsd' ],
+          'sources': [ 'config/freebsd/ares_config.h' ]
+        }],
+        [ 'OS=="openbsd"', {
+          'include_dirs': [ 'config/openbsd' ],
+          'sources': [ 'config/openbsd/ares_config.h' ]
+        }],
+        [ 'OS=="solaris"', {
+          'include_dirs': [ 'config/sunos' ],
+          'sources': [ 'config/sunos/ares_config.h' ],
+          'direct_dependent_settings': {
+            'libraries': [
+              '-lsocket',
+              '-lnsl'
+            ]
+          }
+        }]
+      ]
+    }
+  ]
+}
diff --git a/deps/cares/common.gypi b/deps/cares/common.gypi
new file mode 100644 (file)
index 0000000..e707e44
--- /dev/null
@@ -0,0 +1,172 @@
+{
+  'variables': {
+    'visibility%': 'hidden',
+    'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
+    'component%': 'static_library',
+    'host_arch%': '',
+    'target_arch%': ''
+   },
+
+  'target_defaults': {
+    'default_configuration': 'Debug',
+    'configurations': {
+
+      'Debug': {
+        'defines': [ 'DEBUG', '_DEBUG' ],
+        'cflags': [ '-g', '-O0' ],
+        'msvs_settings': {
+          'VCCLCompilerTool': {
+            'target_conditions': [
+              ['library=="static_library"', {
+                'RuntimeLibrary': 1 # static debug
+              }, {
+                'RuntimeLibrary': 3 # DLL debug
+              }]
+            ],
+            'Optimization': 0, # /Od, no optimization
+            'MinimalRebuild': 'false',
+            'OmitFramePointers': 'false',
+            'BasicRuntimeChecks': 3 # /RTC1
+          },
+          'VCLinkerTool': {
+            'LinkIncremental': 2 # enable incremental linking
+          }
+        },
+        'xcode_settings': {
+          'GCC_OPTIMIZATION_LEVEL': '0'
+        }
+      },
+
+      'Release': {
+        'defines': [ 'NDEBUG' ],
+        'cflags': [
+          '-O3',
+          '-fomit-frame-pointer',
+          '-fdata-sections',
+          '-ffunction-sections'
+        ],
+        'msvs_settings': {
+          'VCCLCompilerTool': {
+            'target_conditions': [
+              ['library=="static_library"', {
+                'RuntimeLibrary': 0, # static release
+              }, {
+                'RuntimeLibrary': 2, # debug release
+              }],
+            ],
+            'Optimization': 3, # /Ox, full optimization
+            'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
+            'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
+            'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG
+            'OmitFramePointers': 'true',
+            'EnableFunctionLevelLinking': 'true',
+            'EnableIntrinsicFunctions': 'true'
+          },
+          'VCLibrarianTool': {
+            'AdditionalOptions': [
+              '/LTCG' # link time code generation
+            ]
+          },
+          'VCLinkerTool': {
+            'LinkTimeCodeGeneration': 1, # link-time code generation
+            'OptimizeReferences': 2, # /OPT:REF
+            'EnableCOMDATFolding': 2, # /OPT:ICF
+            'LinkIncremental': 1 # disable incremental linking
+          },
+        },
+      }
+    },
+
+    'msvs_settings': {
+      'VCCLCompilerTool': {
+        'StringPooling': 'true', # pool string literals
+        'DebugInformationFormat': 3, # Generate a PDB
+        'WarningLevel': 3,
+        'BufferSecurityCheck': 'true',
+        'ExceptionHandling': 1, # /EHsc
+        'SuppressStartupBanner': 'true',
+        'WarnAsError': 'false',
+        'AdditionalOptions': [
+           '/MP', # compile across multiple CPUs
+         ],
+      },
+      'VCLinkerTool': {
+        'GenerateDebugInformation': 'true',
+        'RandomizedBaseAddress': 2, # enable ASLR
+        'DataExecutionPrevention': 2, # enable DEP
+        'AllowIsolation': 'true',
+        'SuppressStartupBanner': 'true',
+        'target_conditions': [
+          ['_type=="executable"', {
+            'SubSystem': 1, # console executable
+          }],
+        ],
+      },
+    },
+
+    'xcode_settings': {
+      'ALWAYS_SEARCH_USER_PATHS': 'NO',
+      'GCC_CW_ASM_SYNTAX': 'NO',                # No -fasm-blocks
+      'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',        # -fno-exceptions
+      'GCC_ENABLE_CPP_RTTI': 'NO',              # -fno-rtti
+      'GCC_ENABLE_PASCAL_STRINGS': 'NO',        # No -mpascal-strings
+      # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden
+      'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
+      'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES',      # -fvisibility=hidden
+      'GCC_THREADSAFE_STATICS': 'NO',           # -fno-threadsafe-statics
+      'GCC_WARN_ABOUT_MISSING_NEWLINE': 'YES',  # -Wnewline-eof
+      'PREBINDING': 'NO',                       # No -Wl,-prebind
+      'USE_HEADERMAP': 'NO',
+      'WARNING_CFLAGS': [
+        '-Wall',
+        '-Wendif-labels',
+        '-W',
+        '-Wno-unused-parameter'
+      ]
+    },
+
+    'conditions': [
+      ['OS == "win"', {
+        'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
+        'defines': [
+          'WIN32',
+          # we don't want VC++ warning us about how dangerous C functions are.
+          '_CRT_SECURE_NO_DEPRECATE',
+          # ... or that C implementations shouldn't use POSIX names
+          '_CRT_NONSTDC_NO_DEPRECATE'
+        ],
+      }],
+
+      [ 'OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris"', {
+        'variables': {
+          'gcc_version%': '<!(python build/gcc_version.py)>)'
+        },
+        'cflags': [ '-Wall' ],
+        'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
+        'conditions': [
+          [ 'host_arch != target_arch and target_arch=="ia32"', {
+            'cflags': [ '-m32' ],
+            'ldflags': [ '-m32' ]
+          }],
+          [ 'OS=="linux"', {
+            'cflags': [ '-ansi' ]
+          }],
+          [ 'visibility=="hidden" and gcc_version >= "4.0.0"', {
+            'cflags': [ '-fvisibility=hidden' ]
+          }],
+        ]
+      }]
+    ],
+
+    'target_conditions': [
+      ['_type!="static_library"', {
+        'cflags': [ '-fPIC' ],
+        'xcode_settings': {
+          'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic
+                                      # (Equivalent to -fPIC)
+          'OTHER_LDFLAGS': [ '-Wl,-search_paths_first' ]
+        }
+      }]
+    ]
+  }
+}
diff --git a/deps/cares/config/cygwin/ares_config.h b/deps/cares/config/cygwin/ares_config.h
new file mode 100644 (file)
index 0000000..592a245
--- /dev/null
@@ -0,0 +1,512 @@
+/* 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 int
+
+/* Define to the type of arg 7 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG7 int
+
+/* Specifies the number of arguments to getservbyport_r */
+/* #undef GETSERVBYPORT_R_ARGS */
+
+/* Specifies the size of the buffer to pass to getservbyport_r */
+/* #undef GETSERVBYPORT_R_BUFSIZE */
+
+/* Define to 1 if you have AF_INET6. */
+#define HAVE_AF_INET6 1
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> 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 <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> 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 <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
+#define HAVE_FCNTL_O_NONBLOCK 1
+
+/* Define to 1 if you have the freeaddrinfo function. */
+#define HAVE_FREEADDRINFO 1
+
+/* Define to 1 if you have a working getaddrinfo function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if the getaddrinfo function is threadsafe. */
+/* #undef HAVE_GETADDRINFO_THREADSAFE */
+
+/* Define to 1 if you have the gethostbyaddr function. */
+#define HAVE_GETHOSTBYADDR 1
+
+/* Define to 1 if you have the gethostbyname function. */
+#define HAVE_GETHOSTBYNAME 1
+
+/* Define to 1 if you have the gethostname function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the getnameinfo function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define to 1 if you have the getservbyport_r function. */
+/* #undef HAVE_GETSERVBYPORT_R */
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `if_indextoname' function. */
+#define HAVE_IF_INDEXTONAME 1
+
+/* Define to 1 if you have the `inet_net_pton' function. */
+/* #undef HAVE_INET_NET_PTON */
+
+/* Define to 1 if inet_net_pton supports IPv6. */
+/* #undef HAVE_INET_NET_PTON_IPV6 */
+
+/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have a IPv6 capable working inet_pton function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the <inttypes.h> 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 <limits.h> 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 <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> 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 <signal.h> 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 <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> 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 <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> 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 <stropts.h> 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 <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the windows.h header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the winsock2.h header file. */
+/* #undef HAVE_WINSOCK2_H */
+
+/* Define to 1 if you have the winsock.h header file. */
+/* #undef HAVE_WINSOCK_H */
+
+/* Define to 1 if you have the writev function. */
+#define HAVE_WRITEV 1
+
+/* Define to 1 if you have the ws2tcpip.h header file. */
+/* #undef HAVE_WS2TCPIP_H */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 if you are building a native Windows target. */
+/* #undef NATIVE_WINDOWS */
+
+/* Define to 1 if you need the malloc.h header file even with stdlib.h */
+/* #undef NEED_MALLOC_H */
+
+/* Define to 1 if you need the memory.h header file even with stdlib.h */
+/* #undef NEED_MEMORY_H */
+
+/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
+/* #undef NEED_REENTRANT */
+
+/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
+/* #undef NEED_THREAD_SAFE */
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O */
+
+/* cpu-machine-OS */
+#define OS "i686-pc-cygwin"
+
+/* Name of package */
+#define PACKAGE "c-ares"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "c-ares mailing list => http://cool.haxx.se/mailman/listinfo/c-ares"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "c-ares"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "c-ares 1.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 <sys/time.h> and <time.h>. */
+#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 <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/cares/config/darwin/ares_config.h b/deps/cares/config/darwin/ares_config.h
new file mode 100644 (file)
index 0000000..920d922
--- /dev/null
@@ -0,0 +1,512 @@
+/* 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 <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> 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 <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> 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 <fcntl.h> 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 <inttypes.h> 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 <limits.h> 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 <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> 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 <signal.h> 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 <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> 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 <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> 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 <stropts.h> 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 <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
+#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 <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/cares/config/freebsd/ares_config.h b/deps/cares/config/freebsd/ares_config.h
new file mode 100644 (file)
index 0000000..2f9b75d
--- /dev/null
@@ -0,0 +1,512 @@
+/* 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 <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> 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 <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> 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 <fcntl.h> 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 <inttypes.h> 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 <limits.h> 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 <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> 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 <signal.h> 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 <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> 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 <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> 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 <stropts.h> 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 <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
+#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 <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/cares/config/linux/ares_config.h b/deps/cares/config/linux/ares_config.h
new file mode 100644 (file)
index 0000000..8f8e330
--- /dev/null
@@ -0,0 +1,512 @@
+/* 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 <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> 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 <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> 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 <fcntl.h> 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 <inttypes.h> 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 <limits.h> 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 <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> 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 <signal.h> 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 <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> 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 <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> 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 <stropts.h> 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 <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
+#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 <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/cares/config/netbsd/ares_config.h b/deps/cares/config/netbsd/ares_config.h
new file mode 100644 (file)
index 0000000..b589148
--- /dev/null
@@ -0,0 +1,512 @@
+/* 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 <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+/* #undef HAVE_ARPA_NAMESER_COMPAT_H */
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> 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 <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> 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 <fcntl.h> 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 <inttypes.h> 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 <limits.h> 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 <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> 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 <signal.h> 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 <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> 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 <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> 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 <stropts.h> 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 <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
+#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 <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/cares/config/openbsd/ares_config.h b/deps/cares/config/openbsd/ares_config.h
new file mode 100644 (file)
index 0000000..b589148
--- /dev/null
@@ -0,0 +1,512 @@
+/* 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 <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+/* #undef HAVE_ARPA_NAMESER_COMPAT_H */
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> 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 <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> 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 <fcntl.h> 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 <inttypes.h> 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 <limits.h> 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 <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> 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 <signal.h> 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 <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> 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 <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> 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 <stropts.h> 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 <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
+#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 <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/cares/config/sunos/ares_config.h b/deps/cares/config/sunos/ares_config.h
new file mode 100644 (file)
index 0000000..fb8565e
--- /dev/null
@@ -0,0 +1,512 @@
+/* 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 <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
+#define HAVE_ARPA_NAMESER_COMPAT_H 1
+
+/* Define to 1 if you have the <arpa/nameser.h> header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the <assert.h> 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 <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <errno.h> 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 <fcntl.h> 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 <inttypes.h> 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 <limits.h> 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 <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> 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 <signal.h> 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 <socket.h> header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> 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 <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> 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 <stropts.h> 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 <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
+#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 <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/cares/config/win32/ares_config.h b/deps/cares/config/win32/ares_config.h
new file mode 100644 (file)
index 0000000..6ded638
--- /dev/null
@@ -0,0 +1,369 @@
+#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 <getopt.h> header file.  */
+#if defined(__MINGW32__) || defined(__POCC__)
+#define HAVE_GETOPT_H 1
+#endif
+
+/* Define if you have the <limits.h> header file.  */
+#define HAVE_LIMITS_H 1
+
+/* Define if you have the <process.h> header file.  */
+#ifndef __SALFORDC__
+#define HAVE_PROCESS_H 1
+#endif
+
+/* Define if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define if you have the <sys/time.h> header file */
+#if defined(__MINGW32__)
+#define HAVE_SYS_TIME_H 1
+#endif
+
+/* Define if you have the <time.h> header file.  */
+#define HAVE_TIME_H 1
+
+/* Define if you have the <unistd.h> 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 <winsock.h> header file.  */
+#define HAVE_WINSOCK_H 1
+
+/* Define if you have the <winsock2.h> header file.  */
+#ifndef __SALFORDC__
+#define HAVE_WINSOCK2_H 1
+#endif
+
+/* Define if you have the <ws2tcpip.h> 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 <sys/time.h> and <time.h>.  */
+/* #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 */
diff --git a/deps/cares/include/ares.h b/deps/cares/include/ares.h
new file mode 100644 (file)
index 0000000..96eccab
--- /dev/null
@@ -0,0 +1,622 @@
+
+/* Copyright 1998, 2009 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2007-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.
+ */
+
+#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 <winsock2.h>
+# include <ws2tcpip.h>
+# include <windows.h>
+
+#else /* Not Windows */
+
+# include <sys/time.h>
+# include <sys/types.h>
+# include <sys/socket.h>
+#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 <sys/types.h>
+
+/* 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 <sys/select.h>
+#endif
+#if (defined(NETWARE) && !defined(__NOVELL_LIBC__))
+#include <sys/bsdskt.h>
+#endif
+
+#if defined(WATT32)
+#  include <netinet/in.h>
+#  include <sys/socket.h>
+#  include <tcp.h>
+#elif defined(_WIN32_WCE)
+#  ifndef WIN32_LEAN_AND_MEAN
+#    define WIN32_LEAN_AND_MEAN
+#  endif
+#  include <windows.h>
+#  include <winsock.h>
+#elif defined(WIN32)
+#  ifndef WIN32_LEAN_AND_MEAN
+#    define WIN32_LEAN_AND_MEAN
+#  endif
+#  include <windows.h>
+#  include <winsock2.h>
+#  include <ws2tcpip.h>
+#else
+#  include <sys/socket.h>
+#  include <netinet/in.h>
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/*
+** c-ares external API function linkage decorations.
+*/
+
+#if !defined(CARES_STATICLIB) && \
+   (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__))
+   /* __declspec function decoration for Win32 and Symbian DLL's */
+#  if defined(CARES_BUILDING_LIBRARY)
+#    define CARES_EXTERN  __declspec(dllexport)
+#  else
+#    define CARES_EXTERN  __declspec(dllimport)
+#  endif
+#else
+   /* visibility function decoration for other cases */
+#  if !defined(CARES_SYMBOL_HIDING) || \
+     defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)
+#    define CARES_EXTERN
+#  else
+#    define CARES_EXTERN CARES_SYMBOL_SCOPE_EXTERN
+#  endif
+#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)
+
+/* 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)
+
+/* 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;
+};
+
+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);
+
+CARES_EXTERN int ares_library_init(int flags);
+
+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_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_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;
+};
+
+struct ares_mx_reply {
+  struct ares_mx_reply   *next;
+  char                   *host;
+  unsigned short          priority;
+};
+
+struct ares_txt_reply {
+  struct ares_txt_reply  *next;
+  unsigned char          *txt;
+  size_t                  length;  /* length excludes null termination */
+};
+
+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;
+};
+
+struct ares_soa_reply {
+  char        *nsname;
+  char        *hostmaster;
+  unsigned int serial;
+  unsigned int refresh;
+  unsigned int retry;
+  unsigned int expire;
+  unsigned int minttl;
+};
+
+/*
+** 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_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_soa(struct ares_soa_reply *soa);
+
+CARES_EXTERN void ares_free_data(void *dataptr);
+
+CARES_EXTERN 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;
+};
+
+CARES_EXTERN int ares_set_servers(ares_channel channel,
+                                  struct ares_addr_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_get_servers(ares_channel channel,
+                                  struct ares_addr_node **servers);
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* ARES__H */
diff --git a/deps/cares/include/ares_version.h b/deps/cares/include/ares_version.h
new file mode 100644 (file)
index 0000000..84b97cd
--- /dev/null
@@ -0,0 +1,24 @@
+
+#ifndef ARES__VERSION_H
+#define ARES__VERSION_H
+
+/* This is the global package copyright */
+#define ARES_COPYRIGHT "2004 - 2012 Daniel Stenberg, <daniel@haxx.se>."
+
+#define ARES_VERSION_MAJOR 1
+#define ARES_VERSION_MINOR 9
+#define ARES_VERSION_PATCH 0
+#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
+                       (ARES_VERSION_MINOR<<8)|\
+                       (ARES_VERSION_PATCH))
+#define ARES_VERSION_STR "1.9.0-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
diff --git a/deps/cares/include/nameser.h b/deps/cares/include/nameser.h
new file mode 100644 (file)
index 0000000..45f1e3e
--- /dev/null
@@ -0,0 +1,203 @@
+
+#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_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_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 */
diff --git a/deps/cares/src/AUTHORS b/deps/cares/src/AUTHORS
new file mode 100644 (file)
index 0000000..e197a74
--- /dev/null
@@ -0,0 +1,37 @@
+c-ares is based on ares, and these are the people that have worked on it since
+the fork was made:
+
+Alexander Lazic
+Alexey Simak
+Andreas Rieke
+Ashish Sharma
+Brad House
+Brad Spencer
+Bram Matthys
+Dan Fandrich
+Daniel Stenberg
+Dirk Manske
+Dominick Meglio
+Doug Goldstein
+Duncan Wilcox
+Eino Tuominen
+Erik Kline
+George Neill
+Gisle Vanem
+Guilherme Balena Versiani
+Gunter Knauf
+Henrik Stoerner
+James Bursa
+Michael Wallner
+Nick Mathewson
+Phil Blundell
+Ravi Pratap
+Robin Cornelius
+Sebastian at basti79.de
+Shmulik Regev
+Steinar H. Gunderson
+Tofu Linden
+Vlad Dinulescu
+William Ahern
+Yang Tse
+liren at vivisimo.com
diff --git a/deps/cares/src/CHANGES b/deps/cares/src/CHANGES
new file mode 100644 (file)
index 0000000..f1426fd
--- /dev/null
@@ -0,0 +1,7 @@
+This 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
diff --git a/deps/cares/src/NEWS b/deps/cares/src/NEWS
new file mode 100644 (file)
index 0000000..95a2eee
--- /dev/null
@@ -0,0 +1,21 @@
+Major 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.
diff --git a/deps/cares/src/README b/deps/cares/src/README
new file mode 100644 (file)
index 0000000..56a43c5
--- /dev/null
@@ -0,0 +1,60 @@
+c-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 following notes apply to c-ares version 1.7.0 and later.
+
+* 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 */
+
diff --git a/deps/cares/src/README.cares b/deps/cares/src/README.cares
new file mode 100644 (file)
index 0000000..aca54c8
--- /dev/null
@@ -0,0 +1,13 @@
+c-ares
+======
+
+This package is based on ares 1.1.1 (written by Greg Hudson). I decided to
+fork and release a separate project since the ares author didn't want the
+improvements that were vital for our use of it.
+
+This package is dubbed 'c-ares' since I (Daniel Stenberg) wanted this for use
+within the curl project (hence the letter C) and it makes a nice pun. Also,
+c-ares is not API compatible with ares: a new name makes that more obvious to
+the public.
+
+The original libares was distributed at athena-dist.mit.edu:pub/ATHENA/ares.
diff --git a/deps/cares/src/README.msvc b/deps/cares/src/README.msvc
new file mode 100644 (file)
index 0000000..4ff8700
--- /dev/null
@@ -0,0 +1,142 @@
+
+
+                          ___       __ _ _ __ ___  ___ 
+                         / __| ___ / _` | '__/ _ \/ __|
+                        | (_  |___| (_| | | |  __/\__ \
+                         \___|     \__,_|_|  \___||___/
+
+
+                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!
diff --git a/deps/cares/src/RELEASE-NOTES b/deps/cares/src/RELEASE-NOTES
new file mode 100644 (file)
index 0000000..3c43730
--- /dev/null
@@ -0,0 +1,16 @@
+c-ares version 1.9.0
+
+Changed:
+
+ o Added ares_parse_soa_reply
+
+Fixed:
+
+ o libcares.pc generation for static MingW* cross builds
+ o ares_dup: UDP and TCP port byte order in saved options
+Thanks go to these friendly people for their efforts and contributions:
+
+ Yang Tse, Nick Alcock, Marko Kreen
+
+Have fun!
diff --git a/deps/cares/src/TODO b/deps/cares/src/TODO
new file mode 100644 (file)
index 0000000..fa31cea
--- /dev/null
@@ -0,0 +1,23 @@
+TODO
+====
+
+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.
diff --git a/deps/cares/src/ares__close_sockets.c b/deps/cares/src/ares__close_sockets.c
new file mode 100644 (file)
index 0000000..5d391a9
--- /dev/null
@@ -0,0 +1,66 @@
+
+/* 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 <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#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)
+        free(sendreq->data_storage);
+      free(sendreq);
+    }
+  server->qtail = NULL;
+
+  /* Reset any existing input buffer. */
+  if (server->tcp_buffer)
+    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;
+    }
+}
diff --git a/deps/cares/src/ares__get_hostent.c b/deps/cares/src/ares__get_hostent.c
new file mode 100644 (file)
index 0000000..94428ee
--- /dev/null
@@ -0,0 +1,264 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+
+#include "ares.h"
+#include "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;
+
+      /* 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 = 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 = strdup(txthost);
+      if (!hostent->h_name)
+        break;
+
+      /* Copy network address. */
+      hostent->h_addr_list = malloc(2 * sizeof(char *));
+      if (!hostent->h_addr_list)
+        break;
+      hostent->h_addr_list[1] = NULL;
+      hostent->h_addr_list[0] = 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 = 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 = 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. */
+      free(line);
+
+      /* Return hostent successfully */
+      *host = hostent;
+      return ARES_SUCCESS;
+
+    }
+
+  /* If allocated, free line buffer. */
+  if (line)
+    free(line);
+
+  if (status == ARES_SUCCESS)
+    {
+      /* Memory allocation failure; clean up. */
+      if (hostent)
+        {
+          if (hostent->h_name)
+            free((char *) hostent->h_name);
+          if (hostent->h_aliases)
+            {
+              for (alias = hostent->h_aliases; *alias; alias++)
+                free(*alias);
+              free(hostent->h_aliases);
+            }
+          if (hostent->h_addr_list)
+            {
+              if (hostent->h_addr_list[0])
+                free(hostent->h_addr_list[0]);
+              free(hostent->h_addr_list);
+            }
+          free(hostent);
+        }
+      return ARES_ENOMEM;
+    }
+
+  return status;
+}
diff --git a/deps/cares/src/ares__read_line.c b/deps/cares/src/ares__read_line.c
new file mode 100644 (file)
index 0000000..ca01803
--- /dev/null
@@ -0,0 +1,71 @@
+
+/* 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 <stdio.h>
+#include <stdlib.h>
+#include <string.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 = 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 = realloc(*buf, *bufsize * 2);
+      if (!newbuf)
+        return ARES_ENOMEM;
+      *buf = newbuf;
+      *bufsize *= 2;
+    }
+  return ARES_SUCCESS;
+}
diff --git a/deps/cares/src/ares__timeval.c b/deps/cares/src/ares__timeval.c
new file mode 100644 (file)
index 0000000..f7aa788
--- /dev/null
@@ -0,0 +1,111 @@
+
+/* 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);
+#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
+
diff --git a/deps/cares/src/ares_cancel.c b/deps/cares/src/ares_cancel.c
new file mode 100644 (file)
index 0000000..eb790ae
--- /dev/null
@@ -0,0 +1,63 @@
+
+/* 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 <assert.h>
+#include <stdlib.h>
+#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;
+  struct list_node* list_node;
+  int i;
+
+  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_ECANCELLED, 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
+  if (!(channel->flags & ARES_FLAG_STAYOPEN))
+  {
+    if (channel->servers)
+    {
+      for (i = 0; i < channel->nservers; i++)
+        ares__close_sockets(channel, &channel->servers[i]);
+    }
+  }
+}
diff --git a/deps/cares/src/ares_data.c b/deps/cares/src/ares_data.c
new file mode 100644 (file)
index 0000000..7c04650
--- /dev/null
@@ -0,0 +1,231 @@
+
+/* Copyright (C) 2009-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.
+ */
+
+
+#include "ares_setup.h"
+
+#include <stddef.h>
+
+#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)
+          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)
+          free(ptr->data.srv_reply.host);
+        break;
+
+      case ARES_DATATYPE_TXT_REPLY:
+
+        if (ptr->data.txt_reply.next)
+          ares_free_data(ptr->data.txt_reply.next);
+        if (ptr->data.txt_reply.txt)
+          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_NAPTR_REPLY:
+
+        if (ptr->data.naptr_reply.next)
+          ares_free_data(ptr->data.naptr_reply.next);
+        if (ptr->data.naptr_reply.flags)
+          free(ptr->data.naptr_reply.flags);
+        if (ptr->data.naptr_reply.service)
+          free(ptr->data.naptr_reply.service);
+        if (ptr->data.naptr_reply.regexp)
+          free(ptr->data.naptr_reply.regexp);
+        if (ptr->data.naptr_reply.replacement)
+          free(ptr->data.naptr_reply.replacement);
+        break;
+
+      case ARES_DATATYPE_SOA_REPLY:
+        if (ptr->data.soa_reply.nsname)
+          free(ptr->data.soa_reply.nsname);
+        if (ptr->data.soa_reply.hostmaster)
+          free(ptr->data.soa_reply.hostmaster);
+       break;
+
+      default:
+        return;
+    }
+
+  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 = 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_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_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:
+        free(ptr);
+        return NULL;
+    }
+
+  ptr->mark = ARES_DATATYPE_MARK;
+  ptr->type = type;
+
+  return &ptr->data;
+}
+
+
+/*
+** ares_get_datatype() - c-ares internal helper function.
+**
+** This function returns the ares_datatype of the data stored in a
+** private ares_data struct when given the public API pointer.
+*/
+
+ares_datatype ares_get_datatype(void * dataptr)
+{
+  struct ares_data *ptr;
+
+#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 ptr->type;
+
+  return ARES_DATATYPE_UNKNOWN;
+}
diff --git a/deps/cares/src/ares_data.h b/deps/cares/src/ares_data.h
new file mode 100644 (file)
index 0000000..8974295
--- /dev/null
@@ -0,0 +1,69 @@
+
+/* Copyright (C) 2009-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.
+ */
+
+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_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_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_srv_reply   srv_reply;
+    struct ares_addr_node   addr_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);
+
+ares_datatype ares_get_datatype(void * dataptr);
diff --git a/deps/cares/src/ares_destroy.c b/deps/cares/src/ares_destroy.c
new file mode 100644 (file)
index 0000000..a3f6ea2
--- /dev/null
@@ -0,0 +1,107 @@
+
+/* 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 <assert.h>
+#include <stdlib.h>
+#include "ares.h"
+#include "ares_private.h"
+
+void ares_destroy_options(struct ares_options *options)
+{
+  int i;
+
+  if(options->servers)
+    free(options->servers);
+  for (i = 0; i < options->ndomains; i++)
+    free(options->domains[i]);
+  if(options->domains)
+    free(options->domains);
+  if(options->sortlist)
+    free(options->sortlist);
+  if(options->lookups)
+    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++)
+      free(channel->domains[i]);
+    free(channel->domains);
+  }
+
+  if(channel->sortlist)
+    free(channel->sortlist);
+
+  if (channel->lookups)
+    free(channel->lookups);
+
+  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));
+        }
+      free(channel->servers);
+      channel->servers = NULL;
+    }
+  channel->nservers = -1;
+}
diff --git a/deps/cares/src/ares_dns.h b/deps/cares/src/ares_dns.h
new file mode 100644 (file)
index 0000000..34cf790
--- /dev/null
@@ -0,0 +1,103 @@
+#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)              DNS__SET16BIT(r, v)
+#define DNS_RR_SET_CLASS(r)             DNS__SET16BIT((r) + 2, v)
+#define DNS_RR_SET_TTL(r)               DNS__SET32BIT((r) + 4, v)
+#define DNS_RR_SET_LEN(r)               DNS__SET16BIT((r) + 8, v)
+
+#endif /* HEADER_CARES_DNS_H */
diff --git a/deps/cares/src/ares_expand_name.c b/deps/cares/src/ares_expand_name.c
new file mode 100644 (file)
index 0000000..71ff0da
--- /dev/null
@@ -0,0 +1,201 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#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 = 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 */
+
+  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;
+
+  /* Allow the caller to pass us abuf + alen and have us check for it. */
+  if (encoded == abuf + alen)
+    return -1;
+
+  while (*encoded)
+    {
+      if ((*encoded & INDIR_MASK) == 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
+        {
+          offset = *encoded;
+          if (encoded + offset + 1 >= abuf + alen)
+            return -1;
+          encoded++;
+          while (offset--)
+            {
+              n += (*encoded == '.' || *encoded == '\\') ? 2 : 1;
+              encoded++;
+            }
+          n++;
+        }
+    }
+
+  /* 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;
+}
diff --git a/deps/cares/src/ares_expand_string.c b/deps/cares/src/ares_expand_string.c
new file mode 100644 (file)
index 0000000..f24cccf
--- /dev/null
@@ -0,0 +1,75 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+#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 = 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;
+}
+
diff --git a/deps/cares/src/ares_fds.c b/deps/cares/src/ares_fds.c
new file mode 100644 (file)
index 0000000..ac5eedb
--- /dev/null
@@ -0,0 +1,63 @@
+
+/* 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_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#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;
+}
diff --git a/deps/cares/src/ares_free_hostent.c b/deps/cares/src/ares_free_hostent.c
new file mode 100644 (file)
index 0000000..349d379
--- /dev/null
@@ -0,0 +1,42 @@
+
+/* 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 <stdlib.h>
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#include "ares.h"
+#include "ares_private.h" /* for memdebug */
+
+void ares_free_hostent(struct hostent *host)
+{
+  char **p;
+
+  if (!host)
+    return;
+
+  free((char *)(host->h_name));
+  for (p = host->h_aliases; *p; p++)
+    free(*p);
+  free(host->h_aliases);
+  free(host->h_addr_list[0]); /* no matter if there is one or many entries,
+                                 there is only one malloc for all of them */
+  free(host->h_addr_list);
+  free(host);
+}
diff --git a/deps/cares/src/ares_free_string.c b/deps/cares/src/ares_free_string.c
new file mode 100644 (file)
index 0000000..e0545c1
--- /dev/null
@@ -0,0 +1,25 @@
+
+/* 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 <stdlib.h>
+#include "ares.h"
+#include "ares_private.h"
+
+void ares_free_string(void *str)
+{
+  free(str);
+}
diff --git a/deps/cares/src/ares_getenv.c b/deps/cares/src/ares_getenv.c
new file mode 100644 (file)
index 0000000..1b2e85d
--- /dev/null
@@ -0,0 +1,30 @@
+
+
+/* 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
diff --git a/deps/cares/src/ares_getenv.h b/deps/cares/src/ares_getenv.h
new file mode 100644 (file)
index 0000000..6da6cc5
--- /dev/null
@@ -0,0 +1,26 @@
+#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 */
diff --git a/deps/cares/src/ares_gethostbyaddr.c b/deps/cares/src/ares_gethostbyaddr.c
new file mode 100644 (file)
index 0000000..4b4c8a7
--- /dev/null
@@ -0,0 +1,301 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ares.h"
+#include "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 = 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);
+  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);
+    }
+}
diff --git a/deps/cares/src/ares_gethostbyname.c b/deps/cares/src/ares_gethostbyname.c
new file mode 100644 (file)
index 0000000..4869402
--- /dev/null
@@ -0,0 +1,524 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+
+#include "ares.h"
+#include "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 = malloc(sizeof(struct host_query));
+  if (!hquery)
+    {
+      callback(arg, ARES_ENOMEM, 0, NULL);
+      return;
+    }
+  hquery->channel = channel;
+  hquery->name = strdup(name);
+  hquery->want_family = family;
+  hquery->sent_family = -1; /* nothing is sent yet */
+  if (!hquery->name) {
+    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) &&
+               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. */
+            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);
+  free(hquery->name);
+  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 *)&in;
+    }
+  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 = 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);
+
+  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;
+}
diff --git a/deps/cares/src/ares_getnameinfo.c b/deps/cares/src/ares_getnameinfo.c
new file mode 100644 (file)
index 0000000..cdcd516
--- /dev/null
@@ -0,0 +1,427 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "ares.h"
+#include "ares_ipv6.h"
+#include "inet_ntop.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 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 = 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);
+      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);
+      free(niquery);
+      return;
+    }
+  niquery->callback(niquery->arg, status, niquery->timeouts, NULL, NULL);
+  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];
+
+  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
+          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;
+#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 */
+        strcpy(tmpbuf, sep->s_name);
+      else
+        /* get port as a string */
+        sprintf(tmpbuf, "%u", (unsigned int)ntohs(port));
+      if (strlen(tmpbuf) < buflen)
+        /* return it if buffer big enough */
+        strcpy(buf, tmpbuf);
+      else
+        /* avoid reusing previous one */
+        buf[0] = '\0';
+      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 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++;
+        }
+    }
+  if (c2 == c1 && c2 == NULL)
+    return (char *)c1_begin;
+  return NULL;
+}
diff --git a/deps/cares/src/ares_getopt.c b/deps/cares/src/ares_getopt.c
new file mode 100644 (file)
index 0000000..1e02d08
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#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 */
+}
diff --git a/deps/cares/src/ares_getopt.h b/deps/cares/src/ares_getopt.h
new file mode 100644 (file)
index 0000000..63acb3b
--- /dev/null
@@ -0,0 +1,53 @@
+#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 */
diff --git a/deps/cares/src/ares_getsock.c b/deps/cares/src/ares_getsock.c
new file mode 100644 (file)
index 0000000..72e467f
--- /dev/null
@@ -0,0 +1,72 @@
+
+/* 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"
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#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) && (sockindex < ARES_GETSOCK_MAXNUM);
+       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)
+            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)
+           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;
+}
diff --git a/deps/cares/src/ares_init.c b/deps/cares/src/ares_init.c
new file mode 100644 (file)
index 0000000..4aef21a
--- /dev/null
@@ -0,0 +1,2021 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2007-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.
+ */
+
+#include "ares_setup.h"
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#ifdef HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <time.h>
+
+#if defined(ANDROID) || defined(__ANDROID__)
+#include <sys/system_properties.h>
+/* From the Bionic sources */
+#define DNS_PROP_NAME_PREFIX  "net.dns"
+#define MAX_DNS_PROPERTIES    8
+#endif
+
+#include "ares.h"
+#include "inet_ntop.h"
+#include "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);
+
+#if !defined(WIN32) && !defined(WATT32) && \
+    !defined(ANDROID) && !defined(__ANDROID__)
+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);
+static int config_domain(ares_channel channel, char *str);
+static int config_lookup(ares_channel channel, const char *str,
+                         const char *bindch, const char *filech);
+static int config_sortlist(struct apattern **sortlist, int *nsort,
+                           const char *str);
+static char *try_config(char *s, const char *opt, char scc);
+#endif
+
+#define ARES_CONFIG_CHECK(x) (x->lookups && x->nsort > -1 && \
+                             x->nservers > -1 && \
+                             x->ndomains > -1 && \
+                             x->ndots > -1 && x->timeout > -1 && \
+                             x->tries > -1)
+
+int ares_init(ares_channel *channelptr)
+{
+  return ares_init_options(channelptr, NULL, 0);
+}
+
+int ares_init_options(ares_channel *channelptr, struct ares_options *options,
+                      int optmask)
+{
+  ares_channel channel;
+  int i;
+  int status = ARES_SUCCESS;
+  struct timeval now;
+
+#ifdef CURLDEBUG
+  const char *env = getenv("CARES_MEMDEBUG");
+
+  if (env)
+    curl_memdebug(env);
+  env = getenv("CARES_MEMLIMIT");
+  if (env) {
+    char *endptr;
+    long num = strtol(env, &endptr, 10);
+    if((endptr != env) && (endptr == env + strlen(env)) && (num > 0))
+      curl_memlimit(num);
+  }
+#endif
+
+  if (ares_library_initialized() != ARES_SUCCESS)
+    return ARES_ENOTINITIALIZED;
+
+  channel = 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->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->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.
+   */
+  status = init_by_defaults(channel);
+  if (status != ARES_SUCCESS)
+    DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n",
+                   ares_strerror(status)));
+
+  /* Generate random key */
+
+  if (status == ARES_SUCCESS) {
+    status = init_id_key(&channel->id_key, ARES_ID_KEY_LEN);
+    if (status == ARES_SUCCESS)
+      channel->next_id = ares__generate_new_id(&channel->id_key);
+    else
+      DEBUGF(fprintf(stderr, "Error: init_id_key failed: %s\n",
+                     ares_strerror(status)));
+  }
+
+  if (status != ARES_SUCCESS)
+    {
+      /* Something failed; clean up memory we may have allocated. */
+      if (channel->servers)
+        free(channel->servers);
+      if (channel->domains)
+        {
+          for (i = 0; i < channel->ndomains; i++)
+            free(channel->domains[i]);
+          free(channel->domains);
+        }
+      if (channel->sortlist)
+        free(channel->sortlist);
+      if(channel->lookups)
+        free(channel->lookups);
+      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_node *servers;
+  int ipv6_nservers = 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)
+    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;
+
+  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 when not all are IPv4 */
+  for (i = 0; i < src->nservers; i++)
+    {
+      if (src->servers[i].addr.family != AF_INET) {
+        ipv6_nservers++;
+        break;
+      }
+    }
+  if (ipv6_nservers) {
+    rc = ares_get_servers(src, &servers);
+    if (rc != ARES_SUCCESS)
+      return rc;
+    rc = ares_set_servers(*dest, servers);
+    ares_free_data(servers);
+    if (rc != ARES_SUCCESS)
+      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 */
+  if (channel->nservers) {
+    for (i = 0; i < channel->nservers; i++)
+    {
+      if (channel->servers[i].addr.family == AF_INET)
+        ipv4_nservers++;
+    }
+    if (ipv4_nservers) {
+      options->servers = 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)
+          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 = malloc(channel->ndomains * sizeof(char *));
+    if (!options->domains)
+      return ARES_ENOMEM;
+
+    for (i = 0; i < channel->ndomains; i++)
+    {
+      options->ndomains = i;
+      options->domains[i] = strdup(channel->domains[i]);
+      if (!options->domains[i])
+        return ARES_ENOMEM;
+    }
+  }
+  options->ndomains = channel->ndomains;
+
+  /* copy lookups */
+  if (channel->lookups) {
+    options->lookups = strdup(channel->lookups);
+    if (!options->lookups && channel->lookups)
+      return ARES_ENOMEM;
+  }
+
+  /* copy sortlist */
+  if (channel->nsort) {
+    options->sortlist = 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;
+
+  /* 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 =
+            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;
+              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 = malloc(options->ndomains * sizeof(char *));
+        if (!channel->domains)
+          return ARES_ENOMEM;
+        for (i = 0; i < options->ndomains; i++)
+          {
+            channel->ndomains = i;
+            channel->domains[i] = 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 = strdup(options->lookups);
+      if (!channel->lookups)
+        return ARES_ENOMEM;
+    }
+
+  /* copy sortlist */
+  if ((optmask & ARES_OPT_SORTLIST) && (channel->nsort == -1) &&
+      (options->nsort>0)) {
+    channel->sortlist = 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;
+    }
+
+  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 = 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))
+  {
+    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 = 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))
+  {
+    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 = malloc(strlen(*dst) + strlen(src) + 2);
+    if (!tmp)
+      return;
+    sprintf(tmp, "%s,%s", *dst, src);
+    free(*dst);
+    *dst = tmp;
+  }
+  else
+  {
+    *dst = 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 = malloc(size);
+  if (!fi)
+    return 0;
+
+  res = (*ares_fpGetNetworkParams) (fi, &size);
+  if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS))
+    goto done;
+
+  newfi = 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)
+    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 = 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 = 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)
+  {
+    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_INET, &namesrvr.sa6->sin6_addr,
+                             txtaddr, sizeof(txtaddr)))
+          continue;
+      }
+      else
+        continue;
+
+      commajoin(outptr, txtaddr);
+
+      if (!*outptr)
+        goto done;
+    }
+  }
+
+done:
+  if (ipaa)
+    free(ipaa);
+
+  if (!*outptr)
+    return 0;
+
+  return 1;
+}
+
+/*
+ * get_DNS_Windows()
+ *
+ * Locates DNS info from Windows employing most suitable methods available at
+ * run-time no matter which Windows version it is. When located, this returns
+ * a pointer in *outptr to a newly allocated memory area holding a string with
+ * a space or comma seperated list of DNS IP addresses, null-terminated.
+ *
+ * Returns 0 and nullifies *outptr upon inability to return DNSes string.
+ *
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
+ *
+ * Implementation supports Windows 95 and newer.
+ */
+static int get_DNS_Windows(char **outptr)
+{
+  /* Try using IP helper API GetAdaptersAddresses() */
+  if (get_DNS_AdaptersAddresses(outptr))
+    return 1;
+
+  /* Try using IP helper API GetNetworkParams() */
+  if (get_DNS_NetworkParams(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)
+  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);
+    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 = 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;
+
+    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 = calloc(i, sizeof(struct server_state));
+  if (!servers)
+     return ARES_ENOMEM;
+
+  for (i = 0; def_nameservers[i]; i++)
+  {
+    servers[i].addr.addrV4.s_addr = htonl(def_nameservers[i]);
+    servers[i].addr.family = AF_INET;
+  }
+  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;
+  }
+#else
+  {
+    char *p;
+    FILE *fp;
+    size_t linesize;
+    int error;
+
+    /* Don't read resolv.conf and friends if we don't have to */
+    if (ARES_CONFIG_CHECK(channel))
+        return ARES_SUCCESS;
+
+    fp = fopen(PATH_RESOLV_CONF, "r");
+    if (fp) {
+      while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
+      {
+        if ((p = try_config(line, "domain", ';')))
+          status = config_domain(channel, p);
+        else if ((p = try_config(line, "lookup", ';')) && !channel->lookups)
+          status = config_lookup(channel, p, "bind", "file");
+        else if ((p = try_config(line, "search", ';')))
+          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)
+            /* ignore errors */
+            (void)config_lookup(channel, p, "dns", "files");
+        }
+        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",
+                         "/etc/nsswitch.conf"));
+          status = ARES_EFILE;
+        }
+      }
+    }
+
+    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", "hosts");
+        }
+        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",
+                         "/etc/host.conf"));
+          status = ARES_EFILE;
+        }
+      }
+    }
+
+    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", "local");
+        }
+        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", "/etc/svc.conf"));
+          status = ARES_EFILE;
+        }
+      }
+    }
+
+    if(line)
+      free(line);
+  }
+
+#endif
+
+  /* Handle errors. */
+  if (status != ARES_EOF)
+    {
+      if (servers != NULL)
+        free(servers);
+      if (sortlist != NULL)
+        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->nservers == -1) {
+    /* If nobody specified servers, try a local named. */
+    channel->servers = 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->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 = malloc(len);
+    if(!hostname) {
+      rc = ARES_ENOMEM;
+      goto error;
+    }
+
+    do {
+      res = gethostname(hostname, lenv);
+
+      if(toolong(res)) {
+        char *p;
+        len *= 2;
+        lenv *= 2;
+        p = realloc(hostname, len);
+        if(!p) {
+          rc = ARES_ENOMEM;
+          goto error;
+        }
+        hostname = p;
+        continue;
+      }
+      else if(res) {
+        rc = ARES_EBADNAME;
+        goto error;
+      }
+
+    } WHILE_FALSE;
+
+    dot = strchr(hostname, '.');
+    if (dot) {
+      /* a dot was found */
+      channel->domains = malloc(sizeof(char *));
+      if (!channel->domains) {
+        rc = ARES_ENOMEM;
+        goto error;
+      }
+      channel->domains[0] = 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 = strdup("fb");
+    if (!channel->lookups)
+      rc = ARES_ENOMEM;
+  }
+
+  error:
+  if(rc) {
+    if(channel->servers) {
+      free(channel->servers);
+      channel->servers = NULL;
+    }
+
+    if(channel->domains && channel->domains[0])
+      free(channel->domains[0]);
+    if(channel->domains) {
+      free(channel->domains);
+      channel->domains = NULL;
+    }
+
+    if(channel->lookups) {
+      free(channel->lookups);
+      channel->lookups = NULL;
+    }
+  }
+
+  if(hostname)
+    free(hostname);
+
+  return rc;
+}
+
+#if !defined(WIN32) && !defined(WATT32) && \
+    !defined(ANDROID) && !defined(__ANDROID__)
+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 *filech)
+{
+  char lookups[3], *l;
+  const char *vqualifier p;
+
+  /* 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 == *filech) && l < lookups + 2) {
+        if (*p == *bindch) *l++ = 'b';
+        else *l++ = 'f';
+      }
+      while (*p && !ISSPACE(*p) && (*p != ','))
+        p++;
+      while (*p && (ISSPACE(*p) || (*p == ',')))
+        p++;
+    }
+  *l = '\0';
+  channel->lookups = strdup(lookups);
+  return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM;
+}
+#endif  /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ */
+
+#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 = realloc(*servers, (*nservers + 1) *
+                        sizeof(struct server_state));
+      if (!newserv)
+        return ARES_ENOMEM;
+
+      /* Store address data. */
+      newserv[*nservers].addr.family = host.family;
+      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;
+}
+
+#if !defined(WIN32) && !defined(ANDROID) && !defined(__ANDROID__)
+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))
+            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))
+            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))
+            return ARES_ENOMEM;
+        }
+      else
+        {
+          while (*q && *q != ';' && !ISSPACE(*q))
+            q++;
+        }
+      str = q;
+      while (ISSPACE(*str))
+        str++;
+    }
+
+  return ARES_SUCCESS;
+}
+#endif  /* !WIN32 & !ANDROID & !__ANDROID__ */
+#endif  /* !WATT32 */
+
+static int set_search(ares_channel channel, const char *str)
+{
+  int n;
+  const char *p, *q;
+
+  if(channel->ndomains != -1) {
+    /* if we already have some domains present, free them first */
+    for(n=0; n < channel->ndomains; n++)
+      free(channel->domains[n]);
+    free(channel->domains);
+    channel->domains = NULL;
+    channel->ndomains = -1;
+  }
+
+  /* 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 = 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] = 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__)
+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;
+
+  /* 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;
+
+  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;
+
+  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;
+}
+
+static int sortlist_alloc(struct apattern **sortlist, int *nsort,
+                          struct apattern *pat)
+{
+  struct apattern *newsort;
+  newsort = realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern));
+  if (!newsort)
+    return 0;
+  newsort[*nsort] = *pat;
+  *sortlist = newsort;
+  (*nsort)++;
+  return 1;
+}
+
+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);
+}
+#endif  /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ */
+
+/* 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 (;counter<key_data_len;counter++)
+      key[counter]=(unsigned char)(rand() % 256);
+  }
+}
+
+static int init_id_key(rc4_key* key,int key_data_len)
+{
+  unsigned char index1;
+  unsigned char index2;
+  unsigned char* state;
+  short counter;
+  unsigned char *key_data_ptr = 0;
+
+  key_data_ptr = calloc(1,key_data_len);
+  if (!key_data_ptr)
+    return ARES_ENOMEM;
+
+  state = &key->state[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);
+  }
+  free(key_data_ptr);
+  return ARES_SUCCESS;
+}
+
+unsigned short ares__generate_new_id(rc4_key* key)
+{
+  unsigned short r=0;
+  ares__rc4(key, (unsigned char *)&r, sizeof(r));
+  return r;
+}
+
+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__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;
+    }
+}
diff --git a/deps/cares/src/ares_iphlpapi.h b/deps/cares/src/ares_iphlpapi.h
new file mode 100644 (file)
index 0000000..343aee3
--- /dev/null
@@ -0,0 +1,221 @@
+#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 */
diff --git a/deps/cares/src/ares_ipv6.h b/deps/cares/src/ares_ipv6.h
new file mode 100644 (file)
index 0000000..6f1022a
--- /dev/null
@@ -0,0 +1,78 @@
+
+/* 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 ares_net_pton.c for no particular reason. */
+extern const struct ares_in6_addr ares_in6addr_any; /* :: */
+
+
+#endif /* ARES_IPV6_H */
diff --git a/deps/cares/src/ares_library_init.c b/deps/cares/src/ares_library_init.c
new file mode 100644 (file)
index 0000000..f0137a1
--- /dev/null
@@ -0,0 +1,142 @@
+
+/* 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;
+
+#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 = LoadLibrary("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 = LoadLibrary("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)
+    return ARES_SUCCESS;
+  ares_initialized++;
+
+  if (flags & ARES_LIB_INIT_WIN32)
+    {
+      res = ares_win32_init();
+      if (res != ARES_SUCCESS)
+        return res;
+    }
+
+  ares_init_flags = flags;
+
+  return ARES_SUCCESS;
+}
+
+
+void ares_library_cleanup(void)
+{
+  if (!ares_initialized)
+    return;
+  ares_initialized--;
+
+  if (ares_init_flags & ARES_LIB_INIT_WIN32)
+    ares_win32_cleanup();
+
+  ares_init_flags = ARES_LIB_INIT_NONE;
+}
+
+
+int ares_library_initialized(void)
+{
+#ifdef USE_WINSOCK
+  if (!ares_initialized)
+    return ARES_ENOTINITIALIZED;
+#endif
+  return ARES_SUCCESS;
+}
+
+
diff --git a/deps/cares/src/ares_library_init.h b/deps/cares/src/ares_library_init.h
new file mode 100644 (file)
index 0000000..59e5cc5
--- /dev/null
@@ -0,0 +1,42 @@
+#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 <iphlpapi.h>
+#include <ares_iphlpapi.h>
+
+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 */
+
diff --git a/deps/cares/src/ares_llist.c b/deps/cares/src/ares_llist.c
new file mode 100644 (file)
index 0000000..c0acd90
--- /dev/null
@@ -0,0 +1,86 @@
+
+/* 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;
+  }
+}
+
+/* Swap the contents of two lists */
+void ares__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;
+  }
+}
diff --git a/deps/cares/src/ares_llist.h b/deps/cares/src/ares_llist.h
new file mode 100644 (file)
index 0000000..b09f0de
--- /dev/null
@@ -0,0 +1,42 @@
+#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);
+
+void ares__swap_lists(struct list_node* head_a,
+                      struct list_node* head_b);
+
+#endif /* __ARES_LLIST_H */
diff --git a/deps/cares/src/ares_mkquery.c b/deps/cares/src/ares_mkquery.c
new file mode 100644 (file)
index 0000000..e33f13f
--- /dev/null
@@ -0,0 +1,195 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include "ares.h"
+#include "ares_dns.h"
+#include "ares_private.h"
+
+/* 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_mkquery(const char *name, int dnsclass, int type, unsigned short id,
+                 int rd, unsigned char **buf, int *buflen)
+{
+  int len;
+  unsigned char *q;
+  const char *p;
+
+  /* Set our results early, in case we bail out early with an error. */
+  *buflen = 0;
+  *buf = NULL;
+
+  /* Compute the length of the encoded name so we can check buflen.
+   * Start counting at 1 for the zero-length label at the end. */
+  len = 1;
+  for (p = name; *p; p++)
+    {
+      if (*p == '\\' && *(p + 1) != 0)
+        p++;
+      len++;
+    }
+  /* If there are n periods in the name, there are n + 1 labels, and
+   * thus n + 1 length fields, unless the name is empty or ends with a
+   * period.  So add 1 unless name is empty or ends with a period.
+   */
+  if (*name && *(p - 1) != '.')
+    len++;
+
+  /* Immediately 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."). We aren't
+   * doing this just to be a stickler about RFCs. For names that are
+   * too long, 'dnscache' closes its TCP connection to us immediately
+   * (when using TCP) and ignores the request when using UDP, and
+   * BIND's named returns ServFail (TCP or UDP). Sending a request
+   * that we know will cause 'dnscache' to close the TCP connection is
+   * painful, since that makes any other outstanding requests on that
+   * connection fail. And sending a UDP request that we know
+   * 'dnscache' will ignore is bad because resources will be tied up
+   * until we time-out the request.
+   */
+  if (len > MAXCDNAME)
+    return ARES_EBADNAME;
+
+  *buflen = len + HFIXEDSZ + QFIXEDSZ;
+  *buf = malloc(*buflen);
+  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);
+
+  /* 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 == '.')
+        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)
+        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);
+
+  return ARES_SUCCESS;
+}
diff --git a/deps/cares/src/ares_nowarn.c b/deps/cares/src/ares_nowarn.c
new file mode 100644 (file)
index 0000000..e29efd3
--- /dev/null
@@ -0,0 +1,249 @@
+
+/* 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.
+ */
+
+
+#include "ares_setup.h"
+
+#ifdef HAVE_ASSERT_H
+#  include <assert.h>
+#endif
+
+#if defined(__INTEL_COMPILER) && defined(__unix__)
+
+#ifdef HAVE_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#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__ */
diff --git a/deps/cares/src/ares_nowarn.h b/deps/cares/src/ares_nowarn.h
new file mode 100644 (file)
index 0000000..9b76d66
--- /dev/null
@@ -0,0 +1,61 @@
+#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 */
diff --git a/deps/cares/src/ares_options.c b/deps/cares/src/ares_options.c
new file mode 100644 (file)
index 0000000..5174ef2
--- /dev/null
@@ -0,0 +1,248 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2008-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 HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+
+#include "ares.h"
+#include "ares_data.h"
+#include "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_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;
+
+  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 = 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;
+          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]]... */
+int ares_set_servers_csv(ares_channel channel,
+                         const char* _csv)
+{
+  size_t i;
+  char* csv = NULL;
+  char* ptr;
+  char* start_host;
+  int rv = ARES_SUCCESS;
+  struct ares_addr_node *servers = NULL;
+  struct ares_addr_node *last = NULL;
+
+  if (ares_library_initialized() != ARES_SUCCESS)
+    return ARES_ENOTINITIALIZED;
+
+  if (!channel)
+    return ARES_ENODATA;
+
+  ares__destroy_servers_state(channel);
+
+  i = strlen(_csv);
+  if (i == 0)
+     return ARES_SUCCESS; /* blank all servers */
+
+  csv = malloc(i + 2);
+  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 == ',') {
+      char* pp = ptr - 1;
+      struct in_addr in4;
+      struct ares_in6_addr in6;
+      struct ares_addr_node *s = NULL;
+
+      *ptr = 0; /* null terminate host:port string */
+      /* Got an entry..see if port was specified. */
+      while (pp > start_host) {
+        if (*pp == ':')
+          break; /* yes */
+        if (!ISDIGIT(*pp)) {
+          /* Found end of digits before we found :, so wasn't a port */
+          pp = ptr;
+          break;
+        }
+        pp--;
+      }
+      if ((pp != start_host) && ((pp + 1) < ptr)) {
+        /* Found it. Parse over the port number */
+        (void)strtol(pp + 1, 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 = 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 = malloc(sizeof(*s));
+        if (!s) {
+          rv = ARES_ENOMEM;
+          goto out;
+        }
+        s->family = AF_INET;
+        memcpy(&s->addr, &in4, sizeof(struct in_addr));
+      }
+      if (s) {
+        /* TODO:  Add port to ares_addr_node and assign it here. */
+
+        s->next = NULL;
+        if (last) {
+          last->next = s;
+        }
+        else {
+          servers = s;
+          last = s;
+        }
+      }
+
+      /* Set up for next one */
+      start_host = ptr + 1;
+    }
+  }
+
+  rv = ares_set_servers(channel, servers);
+
+  out:
+  if (csv)
+    free(csv);
+  while (servers) {
+    struct ares_addr_node *s = servers;
+    servers = servers->next;
+    free(s);
+  }
+
+  return rv;
+}
diff --git a/deps/cares/src/ares_parse_a_reply.c b/deps/cares/src/ares_parse_a_reply.c
new file mode 100644 (file)
index 0000000..4bd0845
--- /dev/null
@@ -0,0 +1,263 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+#  include <strings.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_LIMITS_H
+#  include <limits.h>
+#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)
+    {
+      free(hostname);
+      return ARES_EBADRESP;
+    }
+  aptr += len + QFIXEDSZ;
+
+  if (host)
+    {
+      /* Allocate addresses and aliases; ancount gives an upper bound for
+         both. */
+      addrs = malloc(ancount * sizeof(struct in_addr));
+      if (!addrs)
+        {
+          free(hostname);
+          return ARES_ENOMEM;
+        }
+      aliases = malloc((ancount + 1) * sizeof(char *));
+      if (!aliases)
+        {
+          free(hostname);
+          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)
+        {
+          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 (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)
+              {
+                free(rr_name);
+                status = ARES_EBADRESP;
+                break;
+              }
+              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)
+              {
+                free(rr_name);
+                status = ARES_EBADRESP;
+                break;
+              }
+              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
+            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;
+          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
+        free(rr_name);
+
+      aptr += rr_len;
+      if (aptr > abuf + alen)
+        {
+          status = ARES_EBADRESP;
+          break;
+        }
+    }
+
+  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 = malloc(sizeof(struct hostent));
+          if (hostent)
+            {
+              hostent->h_addr_list = 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)
+                    free(addrs);
+                  *host = hostent;
+                  return ARES_SUCCESS;
+                }
+              free(hostent);
+            }
+          status = ARES_ENOMEM;
+        }
+     }
+  if (aliases)
+    {
+      for (i = 0; i < naliases; i++)
+        free(aliases[i]);
+      free(aliases);
+    }
+  free(addrs);
+  free(hostname);
+  return status;
+}
diff --git a/deps/cares/src/ares_parse_aaaa_reply.c b/deps/cares/src/ares_parse_aaaa_reply.c
new file mode 100644 (file)
index 0000000..b11df52
--- /dev/null
@@ -0,0 +1,261 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+#  include <strings.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_LIMITS_H
+#  include <limits.h>
+#endif
+
+#include "ares.h"
+#include "ares_dns.h"
+#include "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)
+    {
+      free(hostname);
+      return ARES_EBADRESP;
+    }
+  aptr += len + QFIXEDSZ;
+
+  /* Allocate addresses and aliases; ancount gives an upper bound for both. */
+  if (host)
+    {
+      addrs = malloc(ancount * sizeof(struct ares_in6_addr));
+      if (!addrs)
+        {
+          free(hostname);
+          return ARES_ENOMEM;
+        }
+      aliases = malloc((ancount + 1) * sizeof(char *));
+      if (!aliases)
+        {
+          free(hostname);
+          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)
+        {
+          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 (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)
+              {
+                free(rr_name);
+                status = ARES_EBADRESP;
+                break;
+              }
+              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)
+              {
+                free(rr_name);
+                status = ARES_EBADRESP;
+                break;
+              }
+              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
+            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;
+          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
+        free(rr_name);
+
+      aptr += rr_len;
+      if (aptr > abuf + alen)
+        {
+          status = ARES_EBADRESP;
+          break;
+        }
+    }
+
+  /* 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 = malloc(sizeof(struct hostent));
+          if (hostent)
+            {
+              hostent->h_addr_list = 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;
+                  *host = hostent;
+                  return ARES_SUCCESS;
+                }
+              free(hostent);
+            }
+          status = ARES_ENOMEM;
+        }
+    }
+  if (aliases)
+    {
+      for (i = 0; i < naliases; i++)
+        free(aliases[i]);
+      free(aliases);
+    }
+  free(addrs);
+  free(hostname);
+  return status;
+}
diff --git a/deps/cares/src/ares_parse_mx_reply.c b/deps/cares/src/ares_parse_mx_reply.c
new file mode 100644 (file)
index 0000000..2180054
--- /dev/null
@@ -0,0 +1,170 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2010 Jeremy Lal <kapouer@melix.org>
+ *
+ * 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_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#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;
+  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)
+    {
+      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);
+      aptr += RRFIXEDSZ;
+
+      /* 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);
+          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 */
+      free (rr_name);
+      rr_name = NULL;
+
+      /* Move on to the next record */
+      aptr += rr_len;
+    }
+
+  if (hostname)
+    free (hostname);
+  if (rr_name)
+    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;
+}
diff --git a/deps/cares/src/ares_parse_naptr_reply.c b/deps/cares/src/ares_parse_naptr_reply.c
new file mode 100644 (file)
index 0000000..6a9d09e
--- /dev/null
@@ -0,0 +1,188 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com>
+ *
+ * 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_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#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;
+  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)
+    {
+      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);
+      aptr += RRFIXEDSZ;
+
+      /* 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;
+
+          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 */
+      free (rr_name);
+      rr_name = NULL;
+
+      /* Move on to the next record */
+      aptr += rr_len;
+    }
+
+  if (hostname)
+    free (hostname);
+  if (rr_name)
+    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;
+}
+
diff --git a/deps/cares/src/ares_parse_ns_reply.c b/deps/cares/src/ares_parse_ns_reply.c
new file mode 100644 (file)
index 0000000..5e9af71
--- /dev/null
@@ -0,0 +1,182 @@
+/* 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 <vlad.dinulescu@avira.com>
+ *      on behalf of AVIRA Gmbh - http://www.avira.com
+ */
+
+#include "ares_setup.h"
+
+#ifdef HAVE_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#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 )
+  {
+    free( hostname );
+    return ARES_EBADRESP;
+  }
+  aptr += len + QFIXEDSZ;
+
+  /* Allocate nameservers array; ancount gives an upper bound */
+  nameservers = malloc( ( ancount + 1 ) * sizeof( char * ) );
+  if ( !nameservers )
+  {
+    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;
+      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 ( 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 )
+      {
+        free(rr_name);
+        break;
+      }
+
+      nameservers[nameservers_num] = malloc(strlen(rr_data)+1);
+
+      if (nameservers[nameservers_num]==NULL)
+      {
+        free(rr_name);
+        free(rr_data);
+        status=ARES_ENOMEM;
+        break;
+      }
+      strcpy(nameservers[nameservers_num],rr_data);
+      free(rr_data);
+
+      nameservers_num++;
+    }
+
+    free( rr_name );
+
+    aptr += rr_len;
+    if ( aptr > abuf + alen )
+    {
+      status = ARES_EBADRESP;
+      break;
+    }
+  }
+
+  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 = malloc( sizeof( struct hostent ) );
+    if ( hostent )
+    {
+      hostent->h_addr_list = 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;
+      }
+      free( hostent );
+    }
+    status = ARES_ENOMEM;
+  }
+  for ( i = 0; i < nameservers_num; i++ )
+    free( nameservers[i] );
+  free( nameservers );
+  free( hostname );
+  return status;
+}
diff --git a/deps/cares/src/ares_parse_ptr_reply.c b/deps/cares/src/ares_parse_ptr_reply.c
new file mode 100644 (file)
index 0000000..ed4a405
--- /dev/null
@@ -0,0 +1,218 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+#  include <strings.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#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)
+    {
+      free(ptrname);
+      return ARES_EBADRESP;
+    }
+  aptr += len + QFIXEDSZ;
+
+  /* Examine each answer resource record (RR) in turn. */
+  hostname = NULL;
+  aliases = malloc(alias_alloc * sizeof(char *));
+  if (!aliases)
+    {
+      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)
+        {
+          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 (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)
+            {
+              free(rr_name);
+              break;
+            }
+          if (hostname)
+            free(hostname);
+          hostname = rr_data;
+          aliases[aliascnt] = malloc((strlen(rr_data)+1) * sizeof(char));
+          if (!aliases[aliascnt])
+            {
+              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 = realloc(aliases, alias_alloc * sizeof(char *));
+            if(!ptr) {
+              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)
+            {
+              free(rr_name);
+              break;
+            }
+          free(ptrname);
+          ptrname = rr_data;
+        }
+
+      free(rr_name);
+      aptr += rr_len;
+      if (aptr > abuf + alen)
+        {
+          status = ARES_EBADRESP;
+          break;
+        }
+    }
+
+  if (status == ARES_SUCCESS && !hostname)
+    status = ARES_ENODATA;
+  if (status == ARES_SUCCESS)
+    {
+      /* We got our answer.  Allocate memory to build the host entry. */
+      hostent = malloc(sizeof(struct hostent));
+      if (hostent)
+        {
+          hostent->h_addr_list = malloc(2 * sizeof(char *));
+          if (hostent->h_addr_list)
+            {
+              hostent->h_addr_list[0] = malloc(addrlen);
+              if (hostent->h_addr_list[0])
+                {
+                  hostent->h_aliases = malloc((aliascnt+1) * sizeof (char *));
+                  if (hostent->h_aliases)
+                    {
+                      /* Fill in the hostent and return successfully. */
+                      hostent->h_name = hostname;
+                      for (i=0 ; i<aliascnt ; i++)
+                        hostent->h_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;
+                      free(aliases);
+                      free(ptrname);
+                      return ARES_SUCCESS;
+                    }
+                  free(hostent->h_addr_list[0]);
+                }
+              free(hostent->h_addr_list);
+            }
+          free(hostent);
+        }
+      status = ARES_ENOMEM;
+    }
+  for (i=0 ; i<aliascnt ; i++)
+    if (aliases[i]) 
+      free(aliases[i]);
+  free(aliases);
+  if (hostname)
+    free(hostname);
+  free(ptrname);
+  return status;
+}
diff --git a/deps/cares/src/ares_parse_soa_reply.c b/deps/cares/src/ares_parse_soa_reply.c
new file mode 100644 (file)
index 0000000..b811954
--- /dev/null
@@ -0,0 +1,135 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2012 Marko Kreen <markokr@gmail.com>
+ *
+ * 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_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#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;
+
+  /* skip rr_type, rr_class, rr_ttl, rr_rdlen */
+  if (aptr + RRFIXEDSZ > abuf + alen)
+    goto failed;
+  aptr += RRFIXEDSZ;
+
+  /* allocate result struct */
+  soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY);
+  if (!soa)
+    return ARES_ENOMEM;
+
+  /* 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);
+
+  free(qname);
+  free(rr_name);
+
+  *soa_out = soa;
+
+  return ARES_SUCCESS;
+
+failed:
+  status = ARES_EBADRESP;
+
+failed_stat:
+  ares_free_data(soa);
+  if (qname)
+    free(qname);
+  if (rr_name)
+    free(rr_name);
+  return status;
+}
+
diff --git a/deps/cares/src/ares_parse_srv_reply.c b/deps/cares/src/ares_parse_srv_reply.c
new file mode 100644 (file)
index 0000000..9c7eb6e
--- /dev/null
@@ -0,0 +1,179 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com>
+ *
+ * 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_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#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;
+  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)
+    {
+      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);
+      aptr += RRFIXEDSZ;
+
+      /* 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);
+
+          status = ares_expand_name (vptr, abuf, alen, &srv_curr->host, &len);
+          if (status != ARES_SUCCESS)
+            break;
+        }
+
+      /* Don't lose memory in the next iteration */
+      free (rr_name);
+      rr_name = NULL;
+
+      /* Move on to the next record */
+      aptr += rr_len;
+    }
+
+  if (hostname)
+    free (hostname);
+  if (rr_name)
+    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;
+}
diff --git a/deps/cares/src/ares_parse_txt_reply.c b/deps/cares/src/ares_parse_txt_reply.c
new file mode 100644 (file)
index 0000000..5165332
--- /dev/null
@@ -0,0 +1,201 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com>
+ *
+ * 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_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+#  include <strings.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "ares.h"
+#include "ares_dns.h"
+#include "ares_data.h"
+#include "ares_private.h"
+
+int
+ares_parse_txt_reply (const unsigned char *abuf, int alen,
+                      struct ares_txt_reply **txt_out)
+{
+  size_t substr_len, str_len;
+  unsigned int qdcount, ancount, i;
+  const unsigned char *aptr;
+  const unsigned char *strptr;
+  int status, rr_type, rr_class, rr_len;
+  long len;
+  char *hostname = NULL, *rr_name = NULL;
+  struct ares_txt_reply *txt_head = NULL;
+  struct ares_txt_reply *txt_last = NULL;
+  struct ares_txt_reply *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)
+    {
+      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);
+      aptr += RRFIXEDSZ;
+
+      /* Check if we are really looking at a TXT record */
+      if (rr_class == C_IN && rr_type == T_TXT)
+        {
+          /* Allocate storage for this TXT answer appending it to the list */
+          txt_curr = ares_malloc_data(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;
+
+          /*
+           * 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.
+           */
+
+          /* Compute total length to allow a single memory allocation */
+          strptr = aptr;
+          while (strptr < (aptr + rr_len))
+            {
+              substr_len = (unsigned char)*strptr;
+              txt_curr->length += substr_len;
+              strptr += substr_len + 1;
+            }
+
+          /* Including null byte */
+          txt_curr->txt = malloc (txt_curr->length + 1);
+          if (txt_curr->txt == NULL)
+            {
+              status = ARES_ENOMEM;
+              break;
+            }
+
+          /* Step through the list of substrings, concatenating them */
+          str_len = 0;
+          strptr = aptr;
+          while (strptr < (aptr + rr_len))
+            {
+              substr_len = (unsigned char)*strptr;
+              strptr++;
+              memcpy ((char *) txt_curr->txt + str_len, strptr, substr_len);
+              str_len += substr_len;
+              strptr += substr_len;
+            }
+          /* Make sure we NULL-terminate */
+          *((char *) txt_curr->txt + txt_curr->length) = '\0';
+        }
+
+      /* Don't lose memory in the next iteration */
+      free (rr_name);
+      rr_name = NULL;
+
+      /* Move on to the next record */
+      aptr += rr_len;
+    }
+
+  if (hostname)
+    free (hostname);
+  if (rr_name)
+    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;
+}
diff --git a/deps/cares/src/ares_platform.c b/deps/cares/src/ares_platform.c
new file mode 100644 (file)
index 0000000..c200615
--- /dev/null
@@ -0,0 +1,11035 @@
+
+
+/* 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 */
diff --git a/deps/cares/src/ares_platform.h b/deps/cares/src/ares_platform.h
new file mode 100644 (file)
index 0000000..e6885ae
--- /dev/null
@@ -0,0 +1,43 @@
+#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 */
diff --git a/deps/cares/src/ares_private.h b/deps/cares/src/ares_private.h
new file mode 100644 (file)
index 0000000..3c56bbc
--- /dev/null
@@ -0,0 +1,355 @@
+#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
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#ifdef WATT32
+#include <tcp.h>
+#include <sys/ioctl.h>
+#define writev(s,v,c)     writev_s(s,v,c)
+#define HAVE_WRITEV 1
+#endif
+
+#ifdef NETWARE
+#include <time.h>
+#endif
+
+#define DEFAULT_TIMEOUT         5000 /* milliseconds */
+#define DEFAULT_TRIES           4
+#ifndef INADDR_NONE
+#define INADDR_NONE 0xffffffff
+#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
+
+#ifndef HAVE_STRDUP
+#  include "ares_strdup.h"
+#  define strdup(ptr) ares_strdup(ptr)
+#endif
+
+#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
+
+struct ares_addr {
+  int family;
+  union {
+    struct in_addr       addr4;
+    struct ares_in6_addr addr6;
+  } addr;
+};
+#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;
+  int tcp_port;
+  int socket_send_buffer_size;
+  int socket_receive_buffer_size;
+  char **domains;
+  int ndomains;
+  struct apattern *sortlist;
+  int nsort;
+  char *lookups;
+
+  /* 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;
+};
+
+/* return true if now is exactly check time or later */
+int ares__timedout(struct timeval *now,
+                   struct timeval *check);
+/* add the specific number of milliseconds to the time in the first argument */
+int ares__timeadd(struct timeval *now,
+                  int millisecs);
+/* return time offset between now and (future) check, in milliseconds */
+long ares__timeoffset(struct timeval *now,
+                      struct timeval *check);
+/* returns ARES_SUCCESS if library has been initialized */
+int ares_library_initialized(void);
+void ares__rc4(rc4_key* key,unsigned char *buffer_ptr, int buffer_len);
+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. */
+#include "../lib/memdebug.h"
+#endif
+
+#endif /* __ARES_PRIVATE_H */
diff --git a/deps/cares/src/ares_process.c b/deps/cares/src/ares_process.c
new file mode 100644 (file)
index 0000000..79a999f
--- /dev/null
@@ -0,0 +1,1294 @@
+
+/* Copyright 1998 by the Massachusetts Institute of Technology.
+ * Copyright (C) 2004-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.
+ */
+
+#include "ares_setup.h"
+
+#ifdef HAVE_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_UIO_H
+#  include <sys/uio.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#  include <netinet/tcp.h>
+#endif
+#ifdef HAVE_NETDB_H
+#  include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+#  include <sys/time.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+#  include <strings.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+#  include <sys/ioctl.h>
+#endif
+#ifdef NETWARE
+#  include <sys/filio.h>
+#endif
+
+#include <assert.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <time.h>
+
+#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 */
+int ares__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;
+  }
+
+  return 0;
+}
+
+/* return time offset between now and (future) check, in milliseconds */
+long ares__timeoffset(struct timeval *now,
+                      struct timeval *check)
+{
+  return (check->tv_sec - now->tv_sec)*1000 +
+         (check->tv_usec - now->tv_usec)/1000;
+}
+
+
+/*
+ * 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 = 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);
+          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)
+        free(sendreq->data_storage);
+      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 = malloc(server->tcp_length);
+              if (!server->tcp_buffer)
+                handle_error(channel, i, now);
+              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)
+                        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[PACKETSZ + 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 {
+#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;
+  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;
+
+  /* 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);
+        }
+    }
+}
+
+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);
+  ares__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 = calloc(1, sizeof(struct send_request));
+      if (!sendreq)
+        {
+        end_query(channel, query, ARES_ENOMEM, NULL, 0);
+          return;
+        }
+      /* 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;
+    ares__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));
+
+#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;
+
+  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;
+#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;
+        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;
+        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;
+    }
+
+  /* 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
+
+  /* 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;
+        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;
+        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;
+    }
+
+  /* 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;
+    }
+
+  /* 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)
+        {
+          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)
+            {
+              free(q.name);
+              return 0;
+            }
+          a.p += a.namelen;
+          if (a.p + QFIXEDSZ > abuf + alen)
+            {
+              free(q.name);
+              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)
+            {
+              free(a.name);
+              break;
+            }
+          free(a.name);
+        }
+
+      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;
+        }
+    }
+  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 = 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 */
+  free(query->tcpbuf);
+  free(query->server_info);
+  free(query);
+}
diff --git a/deps/cares/src/ares_query.c b/deps/cares/src/ares_query.c
new file mode 100644 (file)
index 0000000..63652e2
--- /dev/null
@@ -0,0 +1,183 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#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);
+
+void ares__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;
+}
+
+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_mkquery(name, dnsclass, type, channel->next_id, rd, &qbuf,
+                        &qlen);
+  if (status != ARES_SUCCESS)
+    {
+      if (qbuf != NULL) free(qbuf);
+      callback(arg, status, 0, NULL, 0);
+      return;
+    }
+
+  channel->next_id = generate_unique_id(channel);
+
+  /* Allocate and fill in the query structure. */
+  qquery = 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);
+    }
+  free(qquery);
+}
diff --git a/deps/cares/src/ares_rules.h b/deps/cares/src/ares_rules.h
new file mode 100644 (file)
index 0000000..f94c5b5
--- /dev/null
@@ -0,0 +1,144 @@
+#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_SIZEOF_LONG
+#  error "CARES_SIZEOF_LONG definition is missing!"
+   Error Compilation_aborted_CARES_SIZEOF_LONG_is_missing
+#endif
+
+#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 long
+ * is the same as the one reported by sizeof() at compile time.
+ */
+
+typedef char
+  __cares_rule_01__
+    [CareschkszEQ(long, CARES_SIZEOF_LONG)];
+
+/*
+ * 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 */
diff --git a/deps/cares/src/ares_search.c b/deps/cares/src/ares_search.c
new file mode 100644 (file)
index 0000000..1877c19
--- /dev/null
@@ -0,0 +1,321 @@
+
+/* 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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#ifdef HAVE_STRINGS_H
+#  include <strings.h>
+#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 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);
+      free(s);
+      return;
+    }
+
+  /* Allocate a search_query structure to hold the state necessary for
+   * doing multiple lookups.
+   */
+  squery = malloc(sizeof(struct search_query));
+  if (!squery)
+    {
+      callback(arg, ARES_ENOMEM, 0, NULL, 0);
+      return;
+    }
+  squery->channel = channel;
+  squery->name = strdup(name);
+  if (!squery->name)
+    {
+      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);
+          free(s);
+        }
+      else
+      {
+        /* failed, free the malloc()ed memory */
+        free(squery->name);
+        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);
+              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);
+  free(squery->name);
+  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 = 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 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 (name[len - 1] == '.')
+    {
+      *s = 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 = malloc(q - p + 1);
+                      if (*s)
+                        {
+                          memcpy(*s, p, q - p);
+                          (*s)[q - p] = 0;
+                        }
+                      free(line);
+                      fclose(fp);
+                      return (*s) ? ARES_SUCCESS : ARES_ENOMEM;
+                    }
+                }
+              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 = strdup(name);
+      return (*s) ? ARES_SUCCESS : ARES_ENOMEM;
+    }
+
+  *s = NULL;
+  return ARES_SUCCESS;
+}
diff --git a/deps/cares/src/ares_send.c b/deps/cares/src/ares_send.c
new file mode 100644 (file)
index 0000000..75a84f6
--- /dev/null
@@ -0,0 +1,134 @@
+
+/* 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#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;
+  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 = malloc(sizeof(struct query));
+  if (!query)
+    {
+      callback(arg, ARES_ENOMEM, 0, NULL, 0);
+      return;
+    }
+  query->tcpbuf = malloc(qlen + 2);
+  if (!query->tcpbuf)
+    {
+      free(query);
+      callback(arg, ARES_ENOMEM, 0, NULL, 0);
+      return;
+    }
+  query->server_info = malloc(channel->nservers *
+                              sizeof(query->server_info[0]));
+  if (!query->server_info)
+    {
+      free(query->tcpbuf);
+      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;
+    }
+  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);
+}
diff --git a/deps/cares/src/ares_setup.h b/deps/cares/src/ares_setup.h
new file mode 100644 (file)
index 0000000..18e1455
--- /dev/null
@@ -0,0 +1,221 @@
+#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 <errno.h> /* 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 <ares_build.h>
+
+/*
+ * Compile time sanity checks must also be done when building the library.
+ */
+
+#include <ares_rules.h>
+#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. <sys/socket.h>) 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 <windows.h>
+#  ifdef HAVE_WINSOCK2_H
+#    include <winsock2.h>
+#    ifdef HAVE_WS2TCPIP_H
+#       include <ws2tcpip.h>
+#    endif
+#  else
+#    ifdef HAVE_WINSOCK_H
+#      include <winsock.h>
+#    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 <sys/types.h>
+#  include <unistd.h>
+#  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 */
diff --git a/deps/cares/src/ares_strcasecmp.c b/deps/cares/src/ares_strcasecmp.c
new file mode 100644 (file)
index 0000000..f9c85e2
--- /dev/null
@@ -0,0 +1,66 @@
+
+
+/* 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
+
diff --git a/deps/cares/src/ares_strcasecmp.h b/deps/cares/src/ares_strcasecmp.h
new file mode 100644 (file)
index 0000000..57d86f9
--- /dev/null
@@ -0,0 +1,30 @@
+#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 */
diff --git a/deps/cares/src/ares_strdup.c b/deps/cares/src/ares_strdup.c
new file mode 100644 (file)
index 0000000..1804327
--- /dev/null
@@ -0,0 +1,42 @@
+
+
+/* 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"
+
+#ifndef HAVE_STRDUP
+char *ares_strdup(const char *s1)
+{
+  size_t sz;
+  char * s2;
+
+  if(s1) {
+    sz = strlen(s1);
+    if(sz < (size_t)-1) {
+      sz++;
+      if(sz < ((size_t)-1) / sizeof(char)) {
+        s2 = malloc(sz * sizeof(char));
+        if(s2) {
+          memcpy(s2, s1, sz * sizeof(char));
+          return s2;
+        }
+      }
+    }
+  }
+  return (char *)NULL;
+}
+#endif
diff --git a/deps/cares/src/ares_strdup.h b/deps/cares/src/ares_strdup.h
new file mode 100644 (file)
index 0000000..c413a94
--- /dev/null
@@ -0,0 +1,26 @@
+#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"
+
+#ifndef HAVE_STRDUP
+extern char *ares_strdup(const char *s1);
+#endif
+
+#endif /* HEADER_CARES_STRDUP_H */
diff --git a/deps/cares/src/ares_strerror.c b/deps/cares/src/ares_strerror.c
new file mode 100644 (file)
index 0000000..c3ecbd7
--- /dev/null
@@ -0,0 +1,56 @@
+
+/* 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 <assert.h>
+#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";
+}
diff --git a/deps/cares/src/ares_timeout.c b/deps/cares/src/ares_timeout.c
new file mode 100644 (file)
index 0000000..738ad15
--- /dev/null
@@ -0,0 +1,81 @@
+
+/* 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_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#include <time.h>
+
+#include "ares.h"
+#include "ares_private.h"
+
+/* 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 = ares__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)
+    {
+      nextstop.tv_sec = min_offset/1000;
+      nextstop.tv_usec = (min_offset%1000)*1000;
+
+      if (!maxtv || ares__timedout(maxtv, &nextstop))
+        {
+          *tvbuf = nextstop;
+          return tvbuf;
+        }
+    }
+
+  return maxtv;
+}
diff --git a/deps/cares/src/ares_version.c b/deps/cares/src/ares_version.c
new file mode 100644 (file)
index 0000000..4f8c42f
--- /dev/null
@@ -0,0 +1,11 @@
+
+#include "ares_setup.h"
+#include "ares.h"
+
+const char *ares_version(int *version)
+{
+  if(version)
+    *version = ARES_VERSION;
+
+  return ARES_VERSION_STR;
+}
diff --git a/deps/cares/src/ares_writev.c b/deps/cares/src/ares_writev.c
new file mode 100644 (file)
index 0000000..9e8e2d6
--- /dev/null
@@ -0,0 +1,79 @@
+
+
+/* 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 <limits.h>
+#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 = 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);
+
+  free(buffer);
+
+  return (result);
+}
+#endif
+
diff --git a/deps/cares/src/ares_writev.h b/deps/cares/src/ares_writev.h
new file mode 100644 (file)
index 0000000..1a23a0f
--- /dev/null
@@ -0,0 +1,36 @@
+#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 */
diff --git a/deps/cares/src/bitncmp.c b/deps/cares/src/bitncmp.c
new file mode 100644 (file)
index 0000000..5c89506
--- /dev/null
@@ -0,0 +1,59 @@
+
+/*
+ * 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:
+ *     -1, 1, 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
diff --git a/deps/cares/src/bitncmp.h b/deps/cares/src/bitncmp.h
new file mode 100644 (file)
index 0000000..b0a5c81
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef __ARES_BITNCMP_H
+#define __ARES_BITNCMP_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.
+ */
+
+#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 */
diff --git a/deps/cares/src/get_ver.awk b/deps/cares/src/get_ver.awk
new file mode 100644 (file)
index 0000000..a63c729
--- /dev/null
@@ -0,0 +1,35 @@
+# ***************************************************************************
+# *  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-20070501.zip
+#
+BEGIN {
+  if (match (ARGV[1], /ares_version.h/)) {
+    while ((getline < ARGV[1]) > 0) {
+      if (match ($0, /^#define ARES_COPYRIGHT "[^"]+"$/)) {
+        libcares_copyright_str = substr($0, 25, length($0)-25);
+      }
+      else if (match ($0, /^#define ARES_VERSION_STR "[^"]+"$/)) {
+        libcares_ver_str = substr($3, 2, length($3)-2);
+      }
+      else if (match ($0, /^#define ARES_VERSION_MAJOR [0-9]+$/)) {
+        libcares_ver_major = substr($3, 1, length($3));
+      }
+      else if (match ($0, /^#define ARES_VERSION_MINOR [0-9]+$/)) {
+        libcares_ver_minor = substr($3, 1, length($3));
+      }
+      else if (match ($0, /^#define ARES_VERSION_PATCH [0-9]+$/)) {
+        libcares_ver_patch = substr($3, 1, length($3));
+      }
+    }
+    libcares_ver = libcares_ver_major "," libcares_ver_minor "," libcares_ver_patch;
+    print "LIBCARES_VERSION = " libcares_ver "";
+    print "LIBCARES_VERSION_STR = " libcares_ver_str "";
+    print "LIBCARES_COPYRIGHT_STR = " libcares_copyright_str "";
+  }
+}
+
+
diff --git a/deps/cares/src/inet_net_pton.c b/deps/cares/src/inet_net_pton.c
new file mode 100644 (file)
index 0000000..45bb5d4
--- /dev/null
@@ -0,0 +1,451 @@
+
+/*
+ * 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "ares.h"
+#include "ares_ipv6.h"
+#include "ares_nowarn.h"
+#include "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;
+  /* 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);
+}
+#endif
diff --git a/deps/cares/src/inet_net_pton.h b/deps/cares/src/inet_net_pton.h
new file mode 100644 (file)
index 0000000..5396a7f
--- /dev/null
@@ -0,0 +1,31 @@
+#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 */
diff --git a/deps/cares/src/inet_ntop.c b/deps/cares/src/inet_ntop.c
new file mode 100644 (file)
index 0000000..57e1146
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * 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_SYS_SOCKET_H
+#  include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#  include <netinet/in.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+#  include <arpa/inet.h>
+#endif
+#ifdef HAVE_ARPA_NAMESER_H
+#  include <arpa/nameser.h>
+#else
+#  include "nameser.h"
+#endif
+#ifdef HAVE_ARPA_NAMESER_COMPAT_H
+#  include <arpa/nameser_compat.h>
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "ares.h"
+#include "ares_ipv6.h"
+#include "inet_ntop.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, size_t size)
+{
+  switch (af) {
+  case AF_INET:
+    return (inet_ntop4(src, dst, size));
+  case AF_INET6:
+    return (inet_ntop6(src, dst, 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);
+}
+#endif
diff --git a/deps/cares/src/inet_ntop.h b/deps/cares/src/inet_ntop.h
new file mode 100644 (file)
index 0000000..c583488
--- /dev/null
@@ -0,0 +1,26 @@
+#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 */
diff --git a/deps/cares/src/setup_once.h b/deps/cares/src/setup_once.h
new file mode 100644 (file)
index 0000000..fc630ef
--- /dev/null
@@ -0,0 +1,512 @@
+#ifndef __SETUP_ONCE_H
+#define __SETUP_ONCE_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.
+ */
+
+
+/********************************************************************
+ *                              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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include <ctype.h>
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef NEED_MALLOC_H
+#include <malloc.h>
+#endif
+
+#ifdef NEED_MEMORY_H
+#include <memory.h>
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#ifdef TIME_WITH_SYS_TIME
+#include <time.h>
+#endif
+#else
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#endif
+
+#ifdef WIN32
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+#if defined(HAVE_STDBOOL_H) && defined(HAVE_BOOL_T)
+#include <stdbool.h>
+#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))
+#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' exists on platforms with <stdbool.h>, 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 */
diff --git a/deps/cares/src/windows_port.c b/deps/cares/src/windows_port.c
new file mode 100644 (file)
index 0000000..03acd1c
--- /dev/null
@@ -0,0 +1,22 @@
+#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 */