From 96246336d775f23589279f0df88a0872a3795ee4 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sat, 28 Oct 2023 12:42:44 +0000 Subject: [PATCH 1/2] deps: update c-ares to 1.21.0 --- deps/cares/CHANGES | 437 +- deps/cares/CMakeLists.txt | 28 +- deps/cares/Makefile.am | 4 +- deps/cares/Makefile.in | 6 +- deps/cares/README.md | 2 +- deps/cares/RELEASE-NOTES | 95 +- deps/cares/aclocal.m4 | 3 + deps/cares/aminclude_static.am | 2 +- deps/cares/cmake/EnableWarnings.cmake | 408 + deps/cares/configure | 248 +- deps/cares/configure.ac | 43 +- deps/cares/docs/Makefile.in | 3 + deps/cares/docs/ares_dup.3 | 6 +- deps/cares/docs/ares_expand_name.3 | 3 +- deps/cares/docs/ares_free_data.3 | 61 +- deps/cares/docs/ares_getaddrinfo.3 | 13 +- deps/cares/docs/ares_inet_ntop.3 | 4 +- deps/cares/docs/ares_inet_pton.3 | 4 +- deps/cares/docs/ares_init.3 | 10 +- deps/cares/docs/ares_init_options.3 | 21 +- deps/cares/docs/ares_library_cleanup.3 | 11 +- deps/cares/docs/ares_library_init.3 | 18 +- deps/cares/docs/ares_library_init_android.3 | 4 +- deps/cares/docs/ares_library_initialized.3 | 4 +- deps/cares/docs/ares_parse_mx_reply.3 | 2 +- deps/cares/docs/ares_parse_naptr_reply.3 | 2 +- deps/cares/docs/ares_parse_soa_reply.3 | 2 +- deps/cares/docs/ares_parse_srv_reply.3 | 2 +- deps/cares/docs/ares_parse_txt_reply.3 | 23 +- deps/cares/docs/ares_parse_uri_reply.3 | 14 +- deps/cares/docs/ares_set_servers.3 | 2 +- deps/cares/docs/ares_set_socket_callback.3 | 3 +- .../docs/ares_set_socket_configure_callback.3 | 3 +- deps/cares/docs/ares_set_socket_functions.3 | 14 +- deps/cares/docs/ares_set_sortlist.3 | 2 +- deps/cares/include/Makefile.in | 3 + deps/cares/include/ares.h | 682 +- deps/cares/include/ares_dns.h | 116 +- deps/cares/include/ares_nameser.h | 378 +- deps/cares/include/ares_rules.h | 21 +- deps/cares/include/ares_version.h | 14 +- deps/cares/m4/ax_append_compile_flags.m4 | 65 + deps/cares/m4/ax_append_flag.m4 | 69 + deps/cares/m4/ax_check_compile_flag.m4 | 72 + deps/cares/m4/cares-compilers.m4 | 64 +- deps/cares/m4/cares-confopts.m4 | 9 +- deps/cares/src/Makefile.in | 3 + deps/cares/src/lib/CMakeLists.txt | 9 + deps/cares/src/lib/Makefile.in | 140 +- deps/cares/src/lib/Makefile.inc | 22 +- deps/cares/src/lib/ares__addrinfo2hostent.c | 315 +- deps/cares/src/lib/ares__addrinfo_localhost.c | 242 +- deps/cares/src/lib/ares__buf.c | 698 +- deps/cares/src/lib/ares__buf.h | 206 +- deps/cares/src/lib/ares__close_sockets.c | 16 +- deps/cares/src/lib/ares__get_hostent.c | 378 +- deps/cares/src/lib/ares__htable.c | 213 +- deps/cares/src/lib/ares__htable.h | 59 +- deps/cares/src/lib/ares__htable_asvp.c | 101 +- deps/cares/src/lib/ares__htable_asvp.h | 46 +- deps/cares/src/lib/ares__htable_stvp.c | 98 +- deps/cares/src/lib/ares__htable_stvp.h | 46 +- deps/cares/src/lib/ares__llist.c | 117 +- deps/cares/src/lib/ares__llist.h | 64 +- .../cares/src/lib/ares__parse_into_addrinfo.c | 303 +- deps/cares/src/lib/ares__read_line.c | 64 +- deps/cares/src/lib/ares__readaddrinfo.c | 331 +- deps/cares/src/lib/ares__slist.c | 224 +- deps/cares/src/lib/ares__slist.h | 81 +- deps/cares/src/lib/ares__sortaddrinfo.c | 518 +- deps/cares/src/lib/ares__timeval.c | 41 +- deps/cares/src/lib/ares_android.c | 325 +- deps/cares/src/lib/ares_android.h | 4 +- deps/cares/src/lib/ares_cancel.c | 15 +- deps/cares/src/lib/ares_config.h.cmake | 4 +- deps/cares/src/lib/ares_create_query.c | 108 +- deps/cares/src/lib/ares_data.c | 230 +- deps/cares/src/lib/ares_data.h | 48 +- deps/cares/src/lib/ares_destroy.c | 72 +- deps/cares/src/lib/ares_dns_mapping.c | 520 + deps/cares/src/lib/ares_dns_parse.c | 1043 + deps/cares/src/lib/ares_dns_record.c | 935 + deps/cares/src/lib/ares_dns_record.h | 798 + deps/cares/src/lib/ares_expand_name.c | 308 +- deps/cares/src/lib/ares_expand_string.c | 81 +- deps/cares/src/lib/ares_fds.c | 17 +- deps/cares/src/lib/ares_free_hostent.c | 15 +- deps/cares/src/lib/ares_freeaddrinfo.c | 31 +- deps/cares/src/lib/ares_getaddrinfo.c | 1017 +- deps/cares/src/lib/ares_gethostbyaddr.c | 307 +- deps/cares/src/lib/ares_gethostbyname.c | 337 +- deps/cares/src/lib/ares_getnameinfo.c | 604 +- deps/cares/src/lib/ares_getsock.c | 31 +- deps/cares/src/lib/ares_inet_net_pton.h | 2 +- deps/cares/src/lib/ares_init.c | 2014 +- deps/cares/src/lib/ares_iphlpapi.h | 119 +- deps/cares/src/lib/ares_ipv6.h | 37 +- deps/cares/src/lib/ares_library_init.c | 99 +- deps/cares/src/lib/ares_math.c | 67 + deps/cares/src/lib/ares_nowarn.c | 269 - deps/cares/src/lib/ares_nowarn.h | 70 - deps/cares/src/lib/ares_options.c | 418 +- deps/cares/src/lib/ares_parse_a_reply.c | 55 +- deps/cares/src/lib/ares_parse_aaaa_reply.c | 54 +- deps/cares/src/lib/ares_parse_caa_reply.c | 278 +- deps/cares/src/lib/ares_parse_mx_reply.c | 180 +- deps/cares/src/lib/ares_parse_naptr_reply.c | 222 +- deps/cares/src/lib/ares_parse_ns_reply.c | 226 +- deps/cares/src/lib/ares_parse_ptr_reply.c | 327 +- deps/cares/src/lib/ares_parse_soa_reply.c | 206 +- deps/cares/src/lib/ares_parse_srv_reply.c | 200 +- deps/cares/src/lib/ares_parse_txt_reply.c | 257 +- deps/cares/src/lib/ares_parse_uri_reply.c | 206 +- deps/cares/src/lib/ares_platform.c | 21909 ++++++++-------- deps/cares/src/lib/ares_private.h | 418 +- deps/cares/src/lib/ares_process.c | 866 +- deps/cares/src/lib/ares_query.c | 124 +- deps/cares/src/lib/ares_rand.c | 123 +- deps/cares/src/lib/ares_search.c | 406 +- deps/cares/src/lib/ares_send.c | 98 +- deps/cares/src/lib/ares_setup.h | 77 +- .../src/lib/{ares_strdup.c => ares_str.c} | 79 +- .../src/lib/{ares_strdup.h => ares_str.h} | 17 +- deps/cares/src/lib/ares_strcasecmp.c | 33 +- deps/cares/src/lib/ares_strerror.c | 88 +- deps/cares/src/lib/ares_strsplit.c | 46 +- deps/cares/src/lib/ares_strsplit.h | 3 +- deps/cares/src/lib/ares_timeout.c | 26 +- deps/cares/src/lib/ares_version.c | 3 +- deps/cares/src/lib/bitncmp.c | 20 +- deps/cares/src/lib/bitncmp.h | 4 +- deps/cares/src/lib/config-dos.h | 163 +- deps/cares/src/lib/config-win32.h | 66 +- deps/cares/src/lib/inet_net_pton.c | 280 +- deps/cares/src/lib/inet_ntop.c | 99 +- deps/cares/src/lib/setup_once.h | 417 +- deps/cares/src/lib/windows_port.c | 13 +- deps/cares/src/tools/CMakeLists.txt | 6 + deps/cares/src/tools/Makefile.in | 53 +- deps/cares/src/tools/Makefile.inc | 2 - deps/cares/src/tools/adig.c | 1069 +- deps/cares/src/tools/ahost.c | 228 +- deps/cares/src/tools/ares_getopt.c | 122 +- deps/cares/src/tools/ares_getopt.h | 26 +- .../maintaining/maintaining-dependencies.md | 6 +- 145 files changed, 24992 insertions(+), 21389 deletions(-) create mode 100644 deps/cares/cmake/EnableWarnings.cmake create mode 100644 deps/cares/m4/ax_append_compile_flags.m4 create mode 100644 deps/cares/m4/ax_append_flag.m4 create mode 100644 deps/cares/m4/ax_check_compile_flag.m4 create mode 100644 deps/cares/src/lib/ares_dns_mapping.c create mode 100644 deps/cares/src/lib/ares_dns_parse.c create mode 100644 deps/cares/src/lib/ares_dns_record.c create mode 100644 deps/cares/src/lib/ares_dns_record.h create mode 100644 deps/cares/src/lib/ares_math.c delete mode 100644 deps/cares/src/lib/ares_nowarn.c delete mode 100644 deps/cares/src/lib/ares_nowarn.h rename deps/cares/src/lib/{ares_strdup.c => ares_str.c} (63%) rename deps/cares/src/lib/{ares_strdup.h => ares_str.h} (70%) diff --git a/deps/cares/CHANGES b/deps/cares/CHANGES index 6523436d3af31d..e171d13dc09e99 100644 --- a/deps/cares/CHANGES +++ b/deps/cares/CHANGES @@ -1,5 +1,252 @@ Changelog for the c-ares project. Generated with git2changes.pl +Version 1.21.0 (26 Oct 2023) + +Brad House (26 Oct 2023) +- SonarCloud: reduce reported complexity that exists for no reason. + +- SonarCloud: fix some #undef codesmells + +- formatting + +- document ARES_RR_* records + +- no reason to limit on truncation + +- linguist fixes + +- don't use test cases to determine language of c-ares + +- fix grammar + +- fix count + +GitHub (25 Oct 2023) +- [Brad House brought this change] + + 1.21.0 release prep (#585) + +Brad House (25 Oct 2023) +- fix build warning + +GitHub (25 Oct 2023) +- [Brad House brought this change] + + SonarCloud: clean up more codesmells (#584) + +Brad House (25 Oct 2023) +- resolve reported memory leaks + +- add test vector said to cause a memory leak + +GitHub (25 Oct 2023) +- [Brad House brought this change] + + sonarcloud: fix more codesmells (#583) + +- [Brad House brought this change] + + sonarcloud easy codesmells (#582) + + Fix By: Brad House (@bradh352) + +- [Brad House brought this change] + + Modernization: replace multiple hand-parsers with new memory-safe parser (#581) + + New DNS record parsing code. The old code was basically just some helper macros and functions for parsing an entire DNS message. The caller had to know the RFCs to use the parsers, except for some pre-made exceptions. The new parsing code parses the entire DNS message into an opaque data structure in a memory safe manner with various accessors for reading and manipulating the data. + + The existing parser helpers for the various record types were reimplemented as wrappers around the new parser. + + The accessors allow easy iteration across the DNS record datastructure, and can be used to easily create dig-like output without needing to know anything about the various record types and formats as dynamic helpers are provided for enumeration of values and data types of those values. + + At some point in the future, this new DNS record structure, accessors, and parser will be exposed publicly. This is not done at this point as we don't want to do that until the API is completely stable. Likely a write() function to output the DNS record back into an actual message buffer will be introduced with the stable API as well. + + Some subtle bugs in the existing code were uncovered, some which had test cases which turned out to be bogus. Validation with third-party implementations (e.g. BIND9) were performed to validate such cases were indeed bugs. + + Adding additional RR parsers such as for TLSA (#470) or SVCB/HTTPS (#566) are trivial now since focus can be put on only parsing the data within the RR, not the entire message. That said, as the new parser is not yet public, it isn't clear the best way to expose any new RRs (probably best to wait for the new parser to be public rather than hacking in another legacy function). + + Some additional RRs that are part of DNS RFC1035 or EDNS RFC6891 that didn't have previously implemented parsers are now also implemented (e.g. HINFO, OPT). Any unrecognized RRs are encapsulated into a "RAW_RR" as binary data which can be inserted or extracted, but are otherwise not interpreted in any way. + + Fix By: Brad House (@bradh352) + +- [Gregor Jasny brought this change] + + feat: use CMake to control symbol visibility (#574) + + In contrast to #572 this solution does not need any extra headers. But it is also limited to GCC-like compilers. + + Fix By: Gregor Jasny (@gjasny) + +- [Brad House brought this change] + + remove ares_nowarn helpers #580 + + Now that the code internally is using proper datatypes, there is no longer a need for ares_nowarn helpers. Remove them. + + Fix By: Brad House (@bradh352) + +Brad House (16 Oct 2023) +- clang-format: fix structure alignment + + It appears the structure alignment chosen just doesn't work right. + Switch to 'left', it appears to be mostly correct. + + Fix By: Brad House (@bradh352) + +GitHub (15 Oct 2023) +- [Brad House brought this change] + + Reformat code using clang-format (#579) + + c-ares uses multiple code styles, standardize on one. Talking with @bagder he feels strongly about maintaining an 80 column limit, but feels less strongly about things I feel strongly about (like alignment). + + Can re-run the formatter on the codebase via: + ``` + clang-format -i */*.c */*.h */*/*.c */*/*.h + ``` + + Fix By: Brad House (@bradh352) + +Brad House (15 Oct 2023) +- inet_ntop requires ares_private.h + +- SonarCloud: Fix additional code smells + + Fix By: Brad House (@bradh352) + +- SonarCloud: Ignore codesmells c89 doesn't support + + C89 doesn't support iterator declaration in for loop, kill warning. + + Fix By: Brad House (@bradh352) + +GitHub (15 Oct 2023) +- [Brad House brought this change] + + set compiler standard to ISO C90/ANSI C89 (#577) + + SonarCloud is outputting some code smells for things that aren't possible for C89. Hopefully setting the code standard to C89/C90 properly will fix those bogus warnings. + + Fix By: Brad House (@bradh352) + +Brad House (15 Oct 2023) +- fix new ares_strcpy to ensure null termination + +- build fix + +GitHub (15 Oct 2023) +- [Brad House brought this change] + + SonarCloud: Fix up codesmells due to strlen(), strcpy(), and strncpy() (#576) + + Create ares_strlen() and ares_strcpy() in order to resolve SonarCloud codesmells related to their use. + + ares_strlen() just becomes null-safe. + + ares_strcpy() is equivalent to strlcpy(), so unlike strncpy() it guarantees NULL termination. + + Fix By: Brad House (@bradh352) + +Brad House (15 Oct 2023) +- SonarCloud: try to appease it better + +- SonarCloud: Fix reported bugs + + SonarCloud reported a few bugs, this commit should fix those reports. + + Fix By: Brad House (@bradh352) + +GitHub (15 Oct 2023) +- [Brad House brought this change] + + Fix internal datatype usage and warnings (#573) + + PR #568 increased the warning levels and c-ares code emitted a bunch of warnings. This PR fixes those warnings and starts transitioning internal data types into more proper forms (e.g. data lengths should be size_t not int). It does, however, have to manually cast back to what the public API needs due to API and ABI compliance (we aren't looking to break integrations, just clean up internals). + + Fix By: Brad House (@bradh352) + +Brad House (15 Oct 2023) +- SonarCloud: exclude tests + +- fix source directories + +GitHub (15 Oct 2023) +- [Brad House brought this change] + + Sonarcloud (#575) + +- [Brad House brought this change] + + Increase compiler warnings by default (#568) + + c-ares was missing a couple of common compiler warnings during building that are widely recognized as a best practice. This PR makes no code changes, only build system changes to increase warning levels. + + This PR does cause some new warnings to be emitted, a follow-up PR will address those. + + Fix By: Brad House (@bradh352) + +- [Brad House brought this change] + + introduce ares_bool_t datatype (#570) + + c-ares currently uses int for boolean, which can be confusing as there are some functions which return int but use '0' as the success condition. Some internal variable usage is similar. Lets try to identify the boolean use cases and split them out into their own data type of ares_bool_t. Since we're trying to keep C89 compatibility, we can't rely on stdbool.h or the _Bool C99 data type, so we'll define our own. + + Also, chose using an enum rather than say unsigned char or int because of the type safety benefits it provides. Compilers should warn if you try to pass, ARES_TRUE on to a ares_status_t enum (or similar) since they are different enums. + + Fix By: Brad House (@bradh352) + +Brad House (12 Oct 2023) +- Socket callbacks were passed SOCK_STREAM instead of SOCK_DGRAM on udp + + A regression was introduced in 1.20.0 that would pass SOCK_STREAM on udp + connections due to code refactoring. If a client application validated this + data, it could cause issues as seen in gRPC. + + Fixes Issue: #571 + Fix By: Brad House (@bradh352) + +- Enhance test of ares_getsock() + + In an attempt to see if ares_getsock() was broken as per #571, do + further sanity checks of the results of ares_getsock(). It seems + as though ares_getsock() is fine. + + Fix By: Brad House (@bradh352) + +GitHub (10 Oct 2023) +- [Brad House brought this change] + + Tool: STAYOPEN flag could make tools not terminate (#569) + + If a flag is set to keep the connections to the DNS servers open even if there are no queries, the tools would not exit until the remote server closed the connection due to the user of ares_fds() to determine if there are any active queries. Instead, rely on ares_timeout() returning NULL if there are no active queries (technically this returns the value passed to max_tv in ares_timeout(), but in our use case, that is always NULL). + + Fixes Issue: #452 + Fix By: Brad House (@bradh352) + +- [Brad House brought this change] + + ares_status_t enum for status codes (#567) + + The list of possible error codes in c-ares was a #define list. This not only doesn't provide for any sort of type safety but it also lacks clarification on what a function may return or what it takes, as an int could be an ares status, a boolean, or possibly even a length in the current code. + + We are not changing any public APIs as though the C standard states the underlying size and type of an enum is int, there are compiler attributes to override this as well as compiler flags like -fshort-enums. GCC in particular is known to expand an enum's width based on the data values (e.g., it can emit a 64bit integer enum). + + All internal usages should be changed by this PR, but of course, there may be some I missed. + + Fix By: Brad House (@bradh352) + +Daniel Stenberg (9 Oct 2023) +- docs: provide better man page references + + When referring to another c-ares function use \fI function(3) \fP to let + the webpage rendering find and cross-link them appropriately. + + SEE ALSO references should be ".BR name (3),", with a space before the + open parenthesis. This helps the manpage to HTML renderer. + + Closes #565 + Version 1.20.1 (8 Oct 2023) GitHub (8 Oct 2023) @@ -5515,193 +5762,3 @@ Yang Tse (3 Dec 2010) - configure: undo using autobuilds to temporarily verify strict aliasing warnings. - fix compiler warning: rounding, sign extension, or loss of accuracy may result - -Daniel Stenberg (2 Dec 2010) -- [Ben Noordhuis brought this change] - - ares_parse_a_reply: fix CNAME response parsing - - Reply to a CNAME query doesn't contain addresses, causing - ares_parse_a_reply() to bail out with ARES_ENODATA - - Bug: http://groups.google.com/group/nodejs/browse_thread/thread/a1268c9ea5e9ad9b - -Yang Tse (1 Dec 2010) -- fix compiler warning: conversion may lose significant bits - -- atoi: remove atoi usage - -- ares_init: fix compiler warning: conversion may lose significant bits - -- configure: fix autoconf warning - -- inet_pton: fix compiler warning - -- configure: use autobuilds to temporarily verify strict aliasing warnings. - - Temporarily, When cross-compiling with gcc 3.0 or later, enable strict aliasing - rules and warnings. Given that cross-compiled targets autobuilds do not run the - test-suite, there is no risk of running code that violates strict aliasing rules - -- ares_getnameinfo: Partially revert commit 85520d66e0ac7ac73411bc25e98769a88b2f - - Upon socket address family and length validation failure return ARES_ENOTIMP - in callback again, this is the error code documented in man page and used - mostly all over the library. - -- ares_getnameinfo: Validate socket address family and length. - - Validate socket address family and that the socket address length is appropriate - for the specified family. Failure is reported with ARES_EBADFAMILY in callback. - -- ares_getnameinfo: fix two compiler warnings - -- Added another VS10 version string - -- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'. - -- Revert commit 494274e653936335c255a47599970de3df21e7c4 - -- configure: fix autoconf 2.68 warning: no AC_LANG_SOURCE call detected in body - -- Fix compiler warning: array subscript has type 'char' - -- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'. - -- Revert following commits: - 07bc7ea79509bcc9ef6e09151e81766ed00d3392 - 3392a50ea3f8573ea4b7a9d82b9833dab60cb0e9 - 9912637d32c9987719a1ea12db591aee2941891c - - The purpose of the whole patch was to silence a compiler warning triggered - with GCC 4 on file ares_process.c The specific compiler warning was - 'dereferencing type-punned pointer might break strict-aliasing rules'. - - A simpler patch will follow to equally silence the warning. - -- ares_options: reorder header inclusions to make inclusion of - ares_private.h the last included one again. - -Daniel Stenberg (12 Nov 2010) -- [Patrik Thunstrom brought this change] - - adig: fix NAPTR parsing - - I ran across a small "issue" in your adig example. - - It is simply the last part of the NAPTR record, the replacement element, - which is not a string, as currently handled in adig, but a domain name. - -- ares_save_options: assignments instead of memcpy - -- init_by_options: don't copy an empty sortlist - - If there aren't any sort items to copy, don't bother. Without this - little precaution it would do a malloc(0) which causes undefined - behaviors and is frowned upon by curl's memdebug-system. - -Guenter Knauf (3 Oct 2010) -- Minor Watcom makefile tweaks. - -Daniel Stenberg (30 Sep 2010) -- [Mike Crowe brought this change] - - Fix lookup with HOSTALIASES set. - - ares__read_line returns ARES_EOF when it reaches the end of the - file. This will happen every time when reading to the end of the - HOSTALIASES file. Unfortunately single_domain treats this error as - being fatal. - - Signed-off-by: Mike Crowe - -Ben Greear (24 Aug 2010) -- Add missing break that caused get_ares_servers to fail. - - Reported-by: Ning Dong - Signed-off-by: Ben Greear - -Yang Tse (11 Aug 2010) -- configure: werror related adjustments - -Guenter Knauf (8 Aug 2010) -- Added copyright string to ares_version.h and make use of it in other files. - -- Block created ares_build.h for NetWare to avoid usage from other platforms. - -- Fix to overwrite default libname. - -- Some more Watcom makefile massage ... - -- Some more Watcom makefile massage ... - -Ben Greear (4 Aug 2010) -- sock-addr-storage: Detect and deal with lack of .ss_family member. - - AIX, at least, does not have sockaddr_storage.ss_family member. - Detect this in the configure logic and use proper #ifdefs in the - ares_process logic. - - Signed-off-by: Ben Greear - Tested-by: Tor Arntsen - -Guenter Knauf (3 Aug 2010) -- Added Watcom makefile based on libcurl's Makefile.Watcom. - -Ben Greear (31 Jul 2010) -- typo: Fix compile bug for platforms that don't have sockaddr_storage. - - Bug was introduced by me in previous commit. - - Signed-off-by: Ben Greear - -- Fix aliasing warning in gcc 4.4.4 (at least). - - Should be no functional change, though the code gets a bit - ugglier. - - Signed-off-by: Ben Greear - -Daniel Stenberg (31 Jul 2010) -- ares_set_servers_csv: use ISDIGIT - - The IS*() set of macros are preferred to the regular is*() functions as - they help us avoid the most common pitfalls. - -Ben Greear (30 Jul 2010) -- cast arg to isdigit to int - - Looks like it might silence a warning on Netware build. - - Signed-off-by: Ben Greear - -- remove all uses of uint32_t - - Previous fix forgot a few. - - Signed-off-by: Ben Greear - -- fix signed v/s unsigned casts warning in ares_gethostbyaddr.c - - Signed-off-by: Ben Greear - -- local-bind-fixup: Fix inet_pton warning. - - Conditionally include for inet_pton - headers. - - Signed-off-by: Ben Greear - -- build: Enable compiling with -Werror. - - This helps find compile warnings because they simply break - the build. - - To use: - ./configure --enable-warnings --enable-werror - - Signed-off-by: Ben Greear - -- ipv6: Fix some build issues related to the local-bind feature. - - Signed-off-by: Ben Greear diff --git a/deps/cares/CMakeLists.txt b/deps/cares/CMakeLists.txt index bd901733626678..47c6193fd961c1 100644 --- a/deps/cares/CMakeLists.txt +++ b/deps/cares/CMakeLists.txt @@ -1,6 +1,8 @@ # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT -CMAKE_MINIMUM_REQUIRED (VERSION 3.1.0) +CMAKE_MINIMUM_REQUIRED (VERSION 3.5.0) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") INCLUDE (CheckIncludeFiles) INCLUDE (CheckTypeSize) @@ -10,10 +12,12 @@ INCLUDE (CheckCSourceCompiles) INCLUDE (CheckStructHasMember) INCLUDE (CheckLibraryExists) -PROJECT (c-ares LANGUAGES C VERSION "1.20.1" ) +PROJECT (c-ares LANGUAGES C VERSION "1.21.0" ) + +INCLUDE (EnableWarnings) # Set this version before release -SET (CARES_VERSION "1.20.1") +SET (CARES_VERSION "1.21.0") INCLUDE (GNUInstallDirs) # include this *AFTER* PROJECT(), otherwise paths are wrong. @@ -28,7 +32,7 @@ INCLUDE (GNUInstallDirs) # include this *AFTER* PROJECT(), otherwise paths are w # For example, a version of 4:0:2 would generate output such as: # libname.so -> libname.so.2 # libname.so.2 -> libname.so.2.2.0 -SET (CARES_LIB_VERSIONINFO "9:1:7") +SET (CARES_LIB_VERSIONINFO "9:2:7") OPTION (CARES_STATIC "Build as a static library" OFF) @@ -38,6 +42,7 @@ OPTION (CARES_STATIC_PIC "Build the static library as PIC (position independent) OPTION (CARES_BUILD_TESTS "Build and run tests" OFF) OPTION (CARES_BUILD_CONTAINER_TESTS "Build and run container tests (implies CARES_BUILD_TESTS, Linux only)" OFF) OPTION (CARES_BUILD_TOOLS "Build tools" ON) +OPTION (CARES_SYMBOL_HIDING "Hide private symbols in shared libraries" OFF) SET (CARES_RANDOM_FILE "/dev/urandom" CACHE STRING "Suitable File / Device Path for entropy, such as /dev/urandom") @@ -70,6 +75,21 @@ IF (MSVC) ENDIF () ENDIF () +IF (CARES_SYMBOL_HIDING) + IF (CMAKE_VERSION VERSION_LESS 3.12) + MESSAGE (FATAL_ERROR "Hiding symbols requires CMake 3.12") + ENDIF () + CMAKE_POLICY (SET CMP0063 NEW) + SET (CARES_SYMBOL_SCOPE_EXTERN [=[__attribute__ ((visibility("default")))]=]) + CHECK_C_SOURCE_COMPILES (" + ${CARES_SYMBOL_SCOPE_EXTERN} int somefunc() { return 0; } + int main() { return somefunc(); } + " HAVE_VISIBILITY_ATTRIBUTE) + IF (NOT HAVE_VISIBILITY_ATTRIBUTE) + MESSAGE (FATAL_ERROR "C compiler does not accept visibility attribute") + ENDIF () +ENDIF () + # Keep build organized. SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}") SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") diff --git a/deps/cares/Makefile.am b/deps/cares/Makefile.am index cc22ac13b31b96..d1ab53cb3407bd 100644 --- a/deps/cares/Makefile.am +++ b/deps/cares/Makefile.am @@ -30,8 +30,8 @@ EXTRA_DIST = AUTHORS CHANGES README.cares $(man_MANS) RELEASE-NOTES \ c-ares-config.cmake.in libcares.pc.cmake libcares.pc.in buildconf get_ver.awk \ maketgz TODO README.msvc $(MSVCFILES) INSTALL.md README.md LICENSE.md \ CMakeLists.txt Makefile.dj Makefile.m32 Makefile.netware Makefile.msvc \ - Makefile.Watcom AUTHORS CONTRIBUTING.md SECURITY.md TODO - + Makefile.Watcom AUTHORS CONTRIBUTING.md SECURITY.md TODO \ + cmake/EnableWarnings.cmake CLEANFILES = $(PDFPAGES) $(HTMLPAGES) diff --git a/deps/cares/Makefile.in b/deps/cares/Makefile.in index 271369e15a67cd..0aa9ca8985a784 100644 --- a/deps/cares/Makefile.in +++ b/deps/cares/Makefile.in @@ -115,6 +115,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ + $(top_srcdir)/m4/ax_append_compile_flags.m4 \ + $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ @@ -430,7 +433,8 @@ EXTRA_DIST = AUTHORS CHANGES README.cares $(man_MANS) RELEASE-NOTES \ c-ares-config.cmake.in libcares.pc.cmake libcares.pc.in buildconf get_ver.awk \ maketgz TODO README.msvc $(MSVCFILES) INSTALL.md README.md LICENSE.md \ CMakeLists.txt Makefile.dj Makefile.m32 Makefile.netware Makefile.msvc \ - Makefile.Watcom AUTHORS CONTRIBUTING.md SECURITY.md TODO + Makefile.Watcom AUTHORS CONTRIBUTING.md SECURITY.md TODO \ + cmake/EnableWarnings.cmake CLEANFILES = $(PDFPAGES) $(HTMLPAGES) DISTCLEANFILES = include/ares_build.h diff --git a/deps/cares/README.md b/deps/cares/README.md index 40d3c08114eaaa..4857dd324076c9 100644 --- a/deps/cares/README.md +++ b/deps/cares/README.md @@ -21,7 +21,7 @@ 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: https://lists.haxx.se/listinfo/c-ares -c-ares is distributed the MIT license. +c-ares is distributed under the MIT license. You'll find all c-ares details and news here: https://c-ares.org/ diff --git a/deps/cares/RELEASE-NOTES b/deps/cares/RELEASE-NOTES index 169a39fcb33b4e..f26ba4b072ae7d 100644 --- a/deps/cares/RELEASE-NOTES +++ b/deps/cares/RELEASE-NOTES @@ -1,74 +1,39 @@ -c-ares version 1.20.1 +c-ares version 1.21.0 -This release resolves a significant issue in the 1.20.0 release. - -Bug fixes: - o Resolve use-after-free issue when TCP connection is terminated before a - response is returned [17] - o Reduce number of queries for a load test case to prevent overloading some - build systems - o Fix fuzz test build target [18] - - -c-ares 1.20.0 notes below: - -This is a feature and bugfix release with some significant internal changes. +This is a bugfix and cleanup release with some significant internal changes. Changes: - o Update from 1989 MIT license text to modern MIT license text [1] - o Remove acountry from built tools as nerd.dk is gone [3] - o Add new ARES_OPT_UDP_MAX_QUERIES configuration option to limit the number of - queries that can be made from a single ephemeral port [7] - o Default per-query timeout has been reduced to 2s with a 3x retry count [8] - o Modernization: start implementing some common data structures that are easy - to use and hard to misuse. This will make code refactoring easier and remove - some varied implementations in use. This change also makes ares_timeout() - more efficient [9] - o Use SPDX identifiers and a REUSE CI job to verify [12] - o rand: add support for getrandom() [14] - -Bug fixes: - o TCP back to back queries were broken [2] - o Ensure queries for ares_getaddrinfo() are not requeued during destruction [4] - o ares_getaddrinfo() should not retry other address classes if one address - class has already been returned [5] - o Avoid production ill-formed result when qualifying a name with the root - domain [6] - o Fix missing prefix for CMake generated libcares.pc [10] - o DNS server ports will now be read from system configuration instead of - defaulting to port 53 [11] - o Remove some unreachable code [13] - o Replace usages of sprintf with snprintf [15] - o Fix Watcom instructions and update Windows URLs [16] + o Provide better man page cross-links. [1] + o Introduce ares_status_t as an enum rather than using #define list and + integer data type for internal functions. [2] + o Introduce ares_bool_t datatype rather than using an integer with 0/1 so + it is clear based on the function prototype what it returns. [5] + o Increase compiler warning levels by default. [6] + o Use size_t and other more proper datatypes internally (rather than int). [7] + o Many developers have used different code styles over the years, standardize + on one and use clang-format to enforce the style. [8] + o CMake can now control symbol visibility [9] + o Replace multiple DNS hand-made parsers with new memory-safe DNS message + parser. [10] + +Bug Fixes: + o Tools: STAYOPEN flag could make tools not terminate. [3] + o Socket callbacks were passed SOCK_STREAM instead of SOCK_DGRAM on udp. [4] Thanks go to these friendly people for their efforts and contributions: - Alexey A Tikhonov (@alexey-tikhonov) - Ben Noordhuis (@bnoordhuis) Brad House (@bradh352) - @Chilledheart Daniel Stenberg (@bagder) - Douglas R. Reno (@renodr) - Jérôme Duval (@korli) - Sam Morris (@yrro) - Tim Wojtulewicz (@timwoj) -(9 contributors) + Gregor Jasny (@gjasny) +(3 contributors) References to bug reports and discussions on issues: - [1] = https://github.com/c-ares/c-ares/pull/556 - [2] = https://github.com/c-ares/c-ares/pull/552 - [3] = https://github.com/c-ares/c-ares/pull/554 - [4] = https://github.com/c-ares/c-ares/pull/553 - [5] = https://github.com/c-ares/c-ares/pull/551 - [6] = https://github.com/c-ares/c-ares/pull/546 - [7] = https://github.com/c-ares/c-ares/pull/549 - [8] = https://github.com/c-ares/c-ares/pull/542 - [9] = https://github.com/c-ares/c-ares/pull/540 - [10] = https://github.com/c-ares/c-ares/pull/530 - [11] = https://github.com/c-ares/c-ares/pull/534 - [12] = https://github.com/c-ares/c-ares/commit/c1b00c41 - [13] = https://github.com/c-ares/c-ares/pull/527 - [14] = https://github.com/c-ares/c-ares/pull/526 - [15] = https://github.com/c-ares/c-ares/pull/525 - [16] = https://github.com/c-ares/c-ares/pull/524 - [17] = https://github.com/c-ares/c-ares/pull/562 - [18] = https://github.com/c-ares/c-ares/pull/559 + [1] = https://github.com/c-ares/c-ares/pull/565 + [2] = https://github.com/c-ares/c-ares/pull/567 + [3] = https://github.com/c-ares/c-ares/pull/569 + [4] = https://github.com/c-ares/c-ares/commit/a070d78 + [5] = https://github.com/c-ares/c-ares/pull/570 + [6] = https://github.com/c-ares/c-ares/pull/568 + [7] = https://github.com/c-ares/c-ares/pull/573 + [8] = https://github.com/c-ares/c-ares/pull/579 + [9] = https://github.com/c-ares/c-ares/pull/574 + [10] = https://github.com/c-ares/c-ares/pull/581 diff --git a/deps/cares/aclocal.m4 b/deps/cares/aclocal.m4 index ef2987bfa003df..0ce0d0b10aa0d0 100644 --- a/deps/cares/aclocal.m4 +++ b/deps/cares/aclocal.m4 @@ -1188,6 +1188,9 @@ m4_include([m4/ax_ac_append_to_file.m4]) m4_include([m4/ax_ac_print_to_file.m4]) m4_include([m4/ax_add_am_macro_static.m4]) m4_include([m4/ax_am_macros_static.m4]) +m4_include([m4/ax_append_compile_flags.m4]) +m4_include([m4/ax_append_flag.m4]) +m4_include([m4/ax_check_compile_flag.m4]) m4_include([m4/ax_check_gnu_make.m4]) m4_include([m4/ax_code_coverage.m4]) m4_include([m4/ax_cxx_compile_stdcxx.m4]) diff --git a/deps/cares/aminclude_static.am b/deps/cares/aminclude_static.am index d35c73b8f4bf68..1b76c9f94bb4bc 100644 --- a/deps/cares/aminclude_static.am +++ b/deps/cares/aminclude_static.am @@ -1,6 +1,6 @@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Sun Oct 8 23:23:39 CEST 2023 +# from AX_AM_MACROS_STATIC on Fri Oct 27 08:44:51 CEST 2023 # Code coverage diff --git a/deps/cares/cmake/EnableWarnings.cmake b/deps/cares/cmake/EnableWarnings.cmake new file mode 100644 index 00000000000000..ddc82047a31b94 --- /dev/null +++ b/deps/cares/cmake/EnableWarnings.cmake @@ -0,0 +1,408 @@ +# Copyright (c) Monetra Technologies LLC +# SPDX-License-Identifier: MIT + +# EnableWarnings.cmake +# +# Checks for and turns on a large number of warning C flags. +# +# Adds the following helper functions: +# +# remove_warnings(... list of warnings ...) +# Turn off given list of individual warnings for all targets and subdirectories added after this. +# +# remove_all_warnings() +# Remove all warning flags, add -w to suppress built-in warnings. +# +# remove_all_warnings_from_targets(... list of targets ...) +# Suppress warnings for the given targets only. +# +# push_warnings() +# Save current warning flags by pushing them onto an internal stack. Note that modifications to the internal +# stack are only visible in the current CMakeLists.txt file and its children. +# +# Note: changing warning flags multiple times in the same directory only affects add_subdirectory() calls. +# Targets in the directory will always use the warning flags in effect at the end of the CMakeLists.txt +# file - this is due to really weird and annoying legacy behavior of CMAKE_C_FLAGS. +# +# pop_warnings() +# Restore the last set of flags that were saved with push_warnings(). Note that modifications to the internal +# stack are only visible in the current CMakeLists.txt file and its children. +# + +if (_internal_enable_warnings_already_run) + return() +endif () +set(_internal_enable_warnings_already_run TRUE) + +include(CheckCCompilerFlag) +include(CheckCXXCompilerFlag) + +get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) + +# internal helper: _int_enable_warnings_set_flags_ex(langs_var configs_var [warnings flags]) +function(_int_enable_warnings_set_flags_ex langs_var configs_var) + if (NOT ARGN) + return() + endif () + + if (NOT ${configs_var}) + set(${configs_var} "NONE") + endif () + string(TOUPPER "${${configs_var}}" ${configs_var}) + + foreach(_flag ${ARGN}) + string(MAKE_C_IDENTIFIER "HAVE_${_flag}" varname) + + if ("C" IN_LIST ${langs_var}) + check_c_compiler_flag(${_flag} ${varname}) + if (${varname}) + foreach (config IN LISTS ${configs_var}) + if (config STREQUAL "NONE") + set(config) + else () + set(config "_${config}") + endif () + string(APPEND CMAKE_C_FLAGS${config} " ${_flag}") + endforeach () + endif () + endif () + + if ("CXX" IN_LIST ${langs_var}) + string(APPEND varname "_CXX") + check_cxx_compiler_flag(${_flag} ${varname}) + if (${varname}) + foreach (config IN LISTS ${configs_var}) + if (config STREQUAL "NONE") + set(config) + else () + set(config "_${config}") + endif () + string(APPEND CMAKE_CXX_FLAGS${config} " ${_flag}") + endforeach () + endif () + endif () + endforeach() + + foreach(lang C CXX) + foreach (config IN LISTS ${configs_var}) + string(TOUPPER "${config}" config) + if (config STREQUAL "NONE") + set(config) + else () + set(config "_${config}") + endif () + string(STRIP "${CMAKE_${lang}_FLAGS${config}}" CMAKE_${lang}_FLAGS${config}) + set(CMAKE_${lang}_FLAGS${config} "${CMAKE_${lang}_FLAGS${config}}" PARENT_SCOPE) + endforeach () + endforeach() +endfunction() + +# internal helper: _int_enable_warnings_set_flags(langs_var [warnings flags]) +macro(_int_enable_warnings_set_flags langs_var) + set(configs "NONE") + _int_enable_warnings_set_flags_ex(${langs_var} configs ${ARGN}) +endmacro() + +set(_flags_C) +set(_flags_CXX) +set(_debug_flags_C) +set(_debug_flags_CXX) + +if (MSVC) + # Visual Studio uses a completely different nomenclature for warnings than gcc/mingw/clang, so none of the + # "-W[name]" warnings will work. + + # W4 would be better but it produces unnecessary warnings like: + # * warning C4706: assignment within conditional expression + # Triggered when doing "while(1)" + # * warning C4115: 'timeval' : named type definition in parentheses + # * warning C4201: nonstandard extension used : nameless struct/union + # Triggered by system includes (commctrl.h, shtypes.h, Shlobj.h) + set(_flags + /W3 + /we4013 # Treat "function undefined, assuming extern returning int" warning as an error. https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4013 + ) + + # Disable some warnings to reduce noise level on visual studio. + if (NOT WIN32_STRICT_WARNINGS) + list(APPEND _flags + /wd4018 # Disable signed/unsigned mismatch warnings. https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4018 + /wd4068 # Disable unknown pragma warning. https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4068 + /wd4244 # Disable integer type conversion warnings. https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244 + /wd4267 # Disable warnings about converting size_t to a smaller type. https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4267 + ) + endif () + list(APPEND _flags_C ${_flags}) + list(APPEND _flags_CXX ${_flags}) + +elseif (CMAKE_C_COMPILER_ID MATCHES "Intel") + # Intel's compiler warning flags are more like Visual Studio than GCC, though the numbers aren't the same. + set(_flags + # Use warning level 3, quite wordy. + -w3 + # Disable warnings we don't care about (add more as they are encountered). + -wd383 # Spammy warning about initializing from a temporary object in C++ (which is done all the time ...). + -wd11074 # Diagnostic related to inlining. + -wd11076 # Diagnostic related to inlining. + ) + + list(APPEND _flags_C ${_flags}) + list(APPEND _flags_CXX ${_flags}) + +elseif (CMAKE_C_COMPILER_ID MATCHES "XL") + set (_flags + -qwarn64 + -qformat=all + -qflag=i:i + ) + list(APPEND _flags_C ${_flags}) + list(APPEND _flags_CXX ${_flags}) + +else () + # If we're compiling with GCC / Clang / MinGW (or anything else besides Visual Studio or Intel): + # C Flags: + list(APPEND _flags_C + -Wall + -Wextra + + # Enable additional warnings not covered by Wall and Wextra. + -Wcast-align + -Wconversion + -Wdeclaration-after-statement + -Wdouble-promotion + -Wfloat-equal + -Wformat-security + -Winit-self + -Wjump-misses-init + -Wlogical-op + -Wmissing-braces + -Wmissing-declarations + -Wmissing-format-attribute + -Wmissing-include-dirs + -Wmissing-prototypes + -Wnested-externs + -Wno-coverage-mismatch + -Wold-style-definition + -Wpacked + -Wpointer-arith + -Wredundant-decls + -Wshadow + -Wsign-conversion + -Wstrict-overflow + -Wstrict-prototypes + -Wtrampolines + -Wundef + -Wunused + -Wvariadic-macros + -Wvla + -Wwrite-strings + + # On Windows MinGW I think implicit fallthrough enabled by -Wextra must not default to 3 + -Wimplicit-fallthrough=3 + + # Treat implicit variable typing and implicit function declarations as errors. + -Werror=implicit-int + -Werror=implicit-function-declaration + + # Make MacOSX honor -mmacosx-version-min + -Werror=partial-availability + + # Some clang versions might warn if an argument like "-I/path/to/headers" is unused, + # silence these. + -Qunused-arguments + ) + + # C++ flags: + list(APPEND _flags_CXX + -Wall + -Wextra + + # Enable additional warnings not covered by Wall and Wextra. + -Wcast-align + -Wformat-security + -Wmissing-declarations + -Wmissing-format-attribute + -Wpacked-bitfield-compat + -Wredundant-decls + -Wvla + + # Turn off unused parameter warnings with C++ (they happen often in C++ and Qt). + -Wno-unused-parameter + + # Some clang versions might warn if an argument like "-I/path/to/headers" is unused, + # silence these. + -Qunused-arguments + ) + + # Note: when cross-compiling to Windows from Cygwin, the Qt Mingw packages have a bunch of + # noisy type-conversion warnings in headers. So, only enable those warnings if we're + # not building that configuration. + if (NOT (WIN32 AND (CMAKE_HOST_SYSTEM_NAME MATCHES "CYGWIN"))) + list(APPEND _flags_CXX + -Wconversion + -Wfloat-equal + -Wsign-conversion + ) + endif () + + # Add flags to force colored output even when output is redirected via pipe. + if (CMAKE_GENERATOR MATCHES "Ninja") + set(color_default TRUE) + else () + set(color_default FALSE) + endif () + option(FORCE_COLOR "Force compiler to always colorize, even when output is redirected." ${color_default}) + mark_as_advanced(FORCE FORCE_COLOR) + if (FORCE_COLOR) + set(_flags + -fdiagnostics-color=always # GCC + -fcolor-diagnostics # Clang + ) + list(APPEND _flags_C ${_flags}) + list(APPEND _flags_CXX ${_flags}) + endif () + + # Add -fno-omit-frame-pointer (and optionally -fno-inline) to make debugging and stack dumps nicer. + set(_flags + -fno-omit-frame-pointer + ) + option(M_NO_INLINE "Disable function inlining for RelWithDebInfo and Debug configurations?" FALSE) + if (M_NO_INLINE) + list(APPEND _flags + -fno-inline + ) + endif () + list(APPEND _debug_flags_C ${_flags}) + list(APPEND _debug_flags_CXX ${_flags}) +endif () + +# Check and set compiler flags. +set(_debug_configs + RelWithDebInfo + Debug +) +foreach(_lang ${languages}) + _int_enable_warnings_set_flags(_lang ${_flags_${_lang}}) + _int_enable_warnings_set_flags_ex(_lang _debug_configs ${_debug_flags_${_lang}}) + + # Ensure pure Debug builds are NOT optimized (not possible on Visual Studio). + # Any optimization of a Debug build will prevent debuggers like lldb from + # fully displaying backtraces and stepping. + if (NOT MSVC) + set(_config Debug) + _int_enable_warnings_set_flags_ex(_lang _config -O0) + endif () +endforeach() + + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Helper functions + + +# This function can be called in subdirectories, to prune out warnings that they don't want. +# vararg: warning flags to remove from list of enabled warnings. All "no" flags after EXPLICIT_DISABLE +# will be added to C flags. +# +# Ex.: remove_warnings(-Wall -Wdouble-promotion -Wcomment) prunes those warnings flags from the compile command. +function(remove_warnings) + get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) + set(langs C) + if ("CXX" IN_LIST languages) + list(APPEND langs CXX) + endif () + + foreach(lang ${langs}) + set(toadd) + set(in_explicit_disable FALSE) + foreach (flag ${ARGN}) + if (flag STREQUAL "EXPLICIT_DISABLE") + set(in_explicit_disable TRUE) + elseif (in_explicit_disable) + list(APPEND toadd "${flag}") + else () + string(REGEX REPLACE "${flag}([ \t]+|$)" "" CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}") + endif () + endforeach () + _int_enable_warnings_set_flags(lang ${toadd}) + string(STRIP "${CMAKE_${lang}_FLAGS}" CMAKE_${lang}_FLAGS) + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}" PARENT_SCOPE) + endforeach() +endfunction() + + +# Explicitly suppress all warnings. As long as this flag is the last warning flag, warnings will be +# suppressed even if earlier flags enabled warnings. +function(remove_all_warnings) + get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) + set(langs C) + if ("CXX" IN_LIST languages) + list(APPEND langs CXX) + endif () + + foreach(lang ${langs}) + string(REGEX REPLACE "[-/][Ww][^ \t]*([ \t]+|$)" "" CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}") + if (MSVC) + string(APPEND CMAKE_${lang}_FLAGS " /w") + else () + string(APPEND CMAKE_${lang}_FLAGS " -w") + endif () + string(STRIP "${CMAKE_${lang}_FLAGS}" CMAKE_${lang}_FLAGS) + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}" PARENT_SCOPE) + endforeach() +endfunction() + + +function(remove_all_warnings_from_targets) + foreach (target ${ARGN}) + if (MSVC) + target_compile_options(${target} PRIVATE "/w") + else () + target_compile_options(${target} PRIVATE "-w") + endif () + endforeach() +endfunction() + + +# Save the current warning settings to an internal variable. +function(push_warnings) + get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) + set(langs C) + if ("CXX" IN_LIST languages) + list(APPEND langs CXX) + endif () + + foreach(lang ${langs}) + if (CMAKE_${lang}_FLAGS MATCHES ";") + message(AUTHOR_WARNING "Cannot push warnings for ${lang}, CMAKE_${lang}_FLAGS contains semicolons") + continue() + endif () + # Add current flags to end of internal list. + list(APPEND _enable_warnings_internal_${lang}_flags_stack "${CMAKE_${lang}_FLAGS}") + # Propagate results up to caller's scope. + set(_enable_warnings_internal_${lang}_flags_stack "${_enable_warnings_internal_${lang}_flags_stack}" PARENT_SCOPE) + endforeach() +endfunction() + + +# Restore the current warning settings from an internal variable. +function(pop_warnings) + get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) + set(langs C) + if ("CXX" IN_LIST languages) + list(APPEND langs CXX) + endif () + + foreach(lang ${langs}) + if (NOT _enable_warnings_internal_${lang}_flags_stack) + continue() + endif () + # Pop flags off of end of list, overwrite current flags with whatever we popped off. + list(GET _enable_warnings_internal_${lang}_flags_stack -1 CMAKE_${lang}_FLAGS) + list(REMOVE_AT _enable_warnings_internal_${lang}_flags_stack -1) + # Propagate results up to caller's scope. + set(_enable_warnings_internal_${lang}_flags_stack "${_enable_warnings_internal_${lang}_flags_stack}" PARENT_SCOPE) + string(STRIP "${CMAKE_${lang}_FLAGS}" CMAKE_${lang}_FLAGS) + set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS}" PARENT_SCOPE) + endforeach() +endfunction() diff --git a/deps/cares/configure b/deps/cares/configure index ebaa43c2df287f..d79785c689e300 100755 --- a/deps/cares/configure +++ b/deps/cares/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for c-ares 1.20.1. +# Generated by GNU Autoconf 2.71 for c-ares 1.21.0. # # Report bugs to . # @@ -855,8 +855,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='c-ares' PACKAGE_TARNAME='c-ares' -PACKAGE_VERSION='1.20.1' -PACKAGE_STRING='c-ares 1.20.1' +PACKAGE_VERSION='1.21.0' +PACKAGE_STRING='c-ares 1.21.0' PACKAGE_BUGREPORT='c-ares mailing list: http://lists.haxx.se/listinfo/c-ares' PACKAGE_URL='' @@ -1650,7 +1650,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures c-ares 1.20.1 to adapt to many kinds of systems. +\`configure' configures c-ares 1.21.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1721,7 +1721,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of c-ares 1.20.1:";; + short | recursive ) echo "Configuration of c-ares 1.21.0:";; esac cat <<\_ACEOF @@ -1861,7 +1861,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -c-ares configure 1.20.1 +c-ares configure 1.21.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2453,7 +2453,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by c-ares $as_me 1.20.1, which was +It was created by c-ares $as_me 1.21.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3426,7 +3426,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -CARES_VERSION_INFO="9:1:7" +CARES_VERSION_INFO="9:2:7" @@ -3563,20 +3563,17 @@ printf "%s\n" "yes" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable strict compiler warnings" >&5 printf %s "checking whether to enable strict compiler warnings... " >&6; } - OPT_COMPILER_WARNINGS="default" + OPT_COMPILER_WARNINGS="yes" # Check whether --enable-warnings was given. if test ${enable_warnings+y} then : - enableval=$enable_warnings; OPT_COMPILER_WARNINGS=$enableval + enableval=$enable_warnings; OPT_COMPILER_WARNINGS=yes fi case "$OPT_COMPILER_WARNINGS" in no) want_warnings="no" ;; - default) - want_warnings="$want_debug" - ;; *) want_warnings="yes" ;; @@ -7060,7 +7057,7 @@ fi # Define the identity of the package. PACKAGE='c-ares' - VERSION='1.20.1' + VERSION='1.21.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -22714,26 +22711,13 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -pedantic" - tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra" - tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings" - tmp_CFLAGS="$tmp_CFLAGS -Wshadow" - tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs" - tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations" - tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes" + tmp_CFLAGS="$tmp_CFLAGS -Winline" tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" - tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal" tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare" - tmp_CFLAGS="$tmp_CFLAGS -Wundef" tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" - tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes" - tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement" - tmp_CFLAGS="$tmp_CFLAGS -Wcast-align" + tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels" tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" tmp_CFLAGS="$tmp_CFLAGS -Wshorten-64-to-32" - # - if test "$compiler_num" -ge "101"; then - tmp_CFLAGS="$tmp_CFLAGS -Wunused" - fi fi ;; # @@ -22753,21 +22737,12 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} tmp_CFLAGS="$tmp_CFLAGS -pedantic" fi # - tmp_CFLAGS="$tmp_CFLAGS -Wall -W" - # - if test "$compiler_num" -ge "104"; then - tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings" - if test "x$cross_compiling" != "xyes" || - test "$compiler_num" -ge "300"; then - tmp_CFLAGS="$tmp_CFLAGS -Wunused -Wshadow" - fi - fi + tmp_CFLAGS="$tmp_CFLAGS -W" # if test "$compiler_num" -ge "207"; then - tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs" + tmp_CFLAGS="$tmp_CFLAGS -Winline" if test "x$cross_compiling" != "xyes" || test "$compiler_num" -ge "300"; then - tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations" tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes" fi fi @@ -22777,9 +22752,7 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} fi # if test "$compiler_num" -ge "296"; then - tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal" tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare" - tmp_CFLAGS="$tmp_CFLAGS -Wundef" fi # if test "$compiler_num" -ge "297"; then @@ -22791,26 +22764,18 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} fi # if test "$compiler_num" -ge "303"; then - tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes" - fi - # - if test "$compiler_num" -ge "304"; then - tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement" + tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels" fi # if test "$compiler_num" -ge "400"; then tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3" fi - # - if test "$compiler_num" -ge "402"; then - tmp_CFLAGS="$tmp_CFLAGS -Wcast-align" - fi # if test "$compiler_num" -ge "403"; then tmp_CFLAGS="$tmp_CFLAGS -Wtype-limits -Wold-style-declaration" tmp_CFLAGS="$tmp_CFLAGS -Wmissing-parameter-type -Wempty-body" tmp_CFLAGS="$tmp_CFLAGS -Wclobbered -Wignored-qualifiers" - tmp_CFLAGS="$tmp_CFLAGS -Wconversion -Wno-sign-conversion -Wvla" + tmp_CFLAGS="$tmp_CFLAGS -Wno-sign-conversion" fi # if test "$compiler_num" -ge "405"; then @@ -22852,15 +22817,13 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} # if test "$want_warnings" = "yes"; then if test "$compiler_num" -gt "600"; then - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall -w2" + tmp_CPPFLAGS="$tmp_CPPFLAGS -w2" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcheck" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcomment" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wdeprecated" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wmissing-prototypes" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wp64" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wpointer-arith" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wreturn-type" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wshadow" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wuninitialized" tmp_CPPFLAGS="$tmp_CPPFLAGS -Wunused-function" fi @@ -22910,8 +22873,7 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} TINY_C) # if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -Wall" - tmp_CFLAGS="$tmp_CFLAGS -Wwrite-strings" + tmp_CFLAGS="$tmp_CFLAGS" tmp_CFLAGS="$tmp_CFLAGS -Wunsupported" fi ;; @@ -22919,7 +22881,7 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} WATCOM_UNIX_C) # if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra" + tmp_CFLAGS="$tmp_CFLAGS" fi ;; # @@ -23077,6 +23039,172 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPF fi +if test "$want_warnings" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts " >&5 +printf %s "checking whether C compiler accepts ... " >&6; } +if test ${ax_cv_check_cflags__+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS " + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ax_cv_check_cflags__=yes +else $as_nop + ax_cv_check_cflags__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags__" >&5 +printf "%s\n" "$ax_cv_check_cflags__" >&6; } +if test x"$ax_cv_check_cflags__" = xyes +then : + : +else $as_nop + : +fi + +if test ${CFLAGS+y} +then : + case " $CFLAGS " in + *" "*) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains "; } >&5 + (: CFLAGS already contains ) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; + *) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \""; } >&5 + (: CFLAGS="$CFLAGS ") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + CFLAGS="$CFLAGS " + ;; + esac +else $as_nop + CFLAGS="" +fi + + + +for flag in -Wall \ + -Wextra \ + -Wcast-align \ + -Wconversion \ + -Wdeclaration-after-statement \ + -Wdouble-promotion \ + -Wfloat-equal \ + -Wformat-security \ + -Winit-self \ + -Wjump-misses-init \ + -Wlogical-op \ + -Wmissing-braces \ + -Wmissing-declarations \ + -Wmissing-format-attribute \ + -Wmissing-include-dirs \ + -Wmissing-prototypes \ + -Wnested-externs \ + -Wno-coverage-mismatch \ + -Wold-style-definition \ + -Wpacked \ + -Wpointer-arith \ + -Wredundant-decls \ + -Wshadow \ + -Wsign-conversion \ + -Wstrict-overflow \ + -Wstrict-prototypes \ + -Wtrampolines \ + -Wundef \ + -Wunused \ + -Wvariadic-macros \ + -Wvla \ + -Wwrite-strings \ + -Werror=implicit-int \ + -Werror=implicit-function-declaration \ + -Werror=partial-availability \ + ; do + as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags_-Werror_$flag" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5 +printf %s "checking whether C compiler accepts $flag... " >&6; } +if eval test \${$as_CACHEVAR+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + ax_check_save_flags=$CFLAGS + CFLAGS="$CFLAGS -Werror $flag" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$as_CACHEVAR=yes" +else $as_nop + eval "$as_CACHEVAR=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + CFLAGS=$ax_check_save_flags +fi +eval ac_res=\$$as_CACHEVAR + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if test x"`eval 'as_val=${'$as_CACHEVAR'};printf "%s\n" "$as_val"'`" = xyes +then : + if test ${CFLAGS+y} +then : + case " $CFLAGS " in + *" $flag "*) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5 + (: CFLAGS already contains $flag) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; + *) + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS \$flag\""; } >&5 + (: CFLAGS="$CFLAGS $flag") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + CFLAGS="$CFLAGS $flag" + ;; + esac +else $as_nop + CFLAGS="$flag" +fi + +else $as_nop + : +fi + +done + +fi + if test "$compiler_id" = "INTEL_UNIX_C"; then # if test "$compiler_num" -ge "1000"; then @@ -35354,7 +35482,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by c-ares $as_me 1.20.1, which was +This file was extended by c-ares $as_me 1.21.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -35422,7 +35550,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -c-ares config.status 1.20.1 +c-ares config.status 1.21.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/deps/cares/configure.ac b/deps/cares/configure.ac index e3b73faa124f21..7bc578da0c300b 100644 --- a/deps/cares/configure.ac +++ b/deps/cares/configure.ac @@ -20,10 +20,10 @@ ############################################################# AC_PREREQ([2.60]) -AC_INIT([c-ares], [1.20.1], +AC_INIT([c-ares], [1.21.0], [c-ares mailing list: http://lists.haxx.se/listinfo/c-ares]) -CARES_VERSION_INFO="9:1:7" +CARES_VERSION_INFO="9:2:7" dnl This flag accepts an argument of the form current[:revision[:age]]. So, dnl passing -version-info 3:12:1 sets current to 3, revision to 12, and age to dnl 1. @@ -202,6 +202,45 @@ CARES_SET_COMPILER_DEBUG_OPTS CARES_SET_COMPILER_OPTIMIZE_OPTS CARES_SET_COMPILER_WARNING_OPTS +if test "$want_warnings" = "yes"; then + AX_APPEND_COMPILE_FLAGS([-Wall \ + -Wextra \ + -Wcast-align \ + -Wconversion \ + -Wdeclaration-after-statement \ + -Wdouble-promotion \ + -Wfloat-equal \ + -Wformat-security \ + -Winit-self \ + -Wjump-misses-init \ + -Wlogical-op \ + -Wmissing-braces \ + -Wmissing-declarations \ + -Wmissing-format-attribute \ + -Wmissing-include-dirs \ + -Wmissing-prototypes \ + -Wnested-externs \ + -Wno-coverage-mismatch \ + -Wold-style-definition \ + -Wpacked \ + -Wpointer-arith \ + -Wredundant-decls \ + -Wshadow \ + -Wsign-conversion \ + -Wstrict-overflow \ + -Wstrict-prototypes \ + -Wtrampolines \ + -Wundef \ + -Wunused \ + -Wvariadic-macros \ + -Wvla \ + -Wwrite-strings \ + -Werror=implicit-int \ + -Werror=implicit-function-declaration \ + -Werror=partial-availability \ + ], [CFLAGS], [-Werror]) +fi + if test "$compiler_id" = "INTEL_UNIX_C"; then # if test "$compiler_num" -ge "1000"; then diff --git a/deps/cares/docs/Makefile.in b/deps/cares/docs/Makefile.in index 710fa60584139f..02eac58ed10fcd 100644 --- a/deps/cares/docs/Makefile.in +++ b/deps/cares/docs/Makefile.in @@ -96,6 +96,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ + $(top_srcdir)/m4/ax_append_compile_flags.m4 \ + $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ diff --git a/deps/cares/docs/ares_dup.3 b/deps/cares/docs/ares_dup.3 index 879be0e1661ebe..ba68c7cf269cac 100644 --- a/deps/cares/docs/ares_dup.3 +++ b/deps/cares/docs/ares_dup.3 @@ -31,9 +31,9 @@ set the variable pointed to by \fIdest\fP to a handle used to identify the name service channel. The caller should invoke \fIares_destroy(3)\fP on the handle when the channel is no longer needed. .SH SEE ALSO -.BR ares_destroy(3), -.BR ares_init(3), -.BR ares_library_init(3) +.BR ares_destroy (3), +.BR ares_init (3), +.BR ares_library_init (3) .SH AVAILABILITY \fIares_dup(3)\fP was added in c-ares 1.6.0 .SH AUTHOR diff --git a/deps/cares/docs/ares_expand_name.3 b/deps/cares/docs/ares_expand_name.3 index a4f340e4fca1fb..2f3866bb00fcb6 100644 --- a/deps/cares/docs/ares_expand_name.3 +++ b/deps/cares/docs/ares_expand_name.3 @@ -60,7 +60,8 @@ The encoded domain name was malformed and could not be expanded. .B ARES_ENOMEM Memory was exhausted. .SH SEE ALSO -.BR ares_mkquery (3), ares_free_string (3) +.BR ares_mkquery (3), +.BR ares_free_string (3) .SH AUTHOR Greg Hudson, MIT Information Systems .br diff --git a/deps/cares/docs/ares_free_data.3 b/deps/cares/docs/ares_free_data.3 index f4159729f3b5a4..67cde08e50ecfa 100644 --- a/deps/cares/docs/ares_free_data.3 +++ b/deps/cares/docs/ares_free_data.3 @@ -27,53 +27,52 @@ void ares_free_data(void *\fIdataptr\fP) .fi .SH DESCRIPTION .PP -The -.B ares_free_data(3) -function frees one or more data structures allocated and returned -by several c-ares functions. Specifically the data returned by the -following list of functions must be deallocated using this function. +The \fBares_free_data(3)\fP function frees one or more data structures +allocated and returned by several c-ares functions. Specifically the data +returned by the following list of functions must be deallocated using this +function. .TP 5 .B ares_get_servers(3) -When used to free the data returned by ares_get_servers(3) this -will free the whole linked list of ares_addr_node structures returned -by ares_get_servers(3). +When used to free the data returned by \fIares_get_servers(3)\fP this will +free the whole linked list of ares_addr_node structures returned by +\fIares_get_servers(3)\fP. .TP .B ares_parse_srv_reply(3) -When used to free the data returned by ares_parse_srv_reply(3) this -will free the whole linked list of ares_srv_reply structures returned -by ares_parse_srv_reply(3), along with any additional storage -associated with those structures. +When used to free the data returned by \fIares_parse_srv_reply(3)\fP this will +free the whole linked list of ares_srv_reply structures returned by +\fIares_parse_srv_reply(3)\fP, along with any additional storage associated +with those structures. .TP .B ares_parse_mx_reply(3) -When used to free the data returned by ares_parse_mx_reply(3) this -will free the whole linked list of ares_mx_reply structures returned -by ares_parse_mx_reply(3), along with any additional storage -associated with those structures. +When used to free the data returned by \fIares_parse_mx_reply(3)\fP this will +free the whole linked list of ares_mx_reply structures returned by +\fIares_parse_mx_reply(3)\fP, along with any additional storage associated +with those structures. .TP .B ares_parse_txt_reply(3) -When used to free the data returned by ares_parse_txt_reply(3) this -will free the whole linked list of ares_txt_reply structures returned -by ares_parse_txt_reply(3), along with any additional storage -associated with those structures. +When used to free the data returned by \fIares_parse_txt_reply(3)\fP this will +free the whole linked list of ares_txt_reply structures returned by +\fIares_parse_txt_reply(3)\fP, along with any additional storage associated +with those structures. .TP .B ares_parse_soa_reply(3) -When used to free the data returned by ares_parse_soa_reply(3) this -will free the ares_soa_reply structure, along with any additional storage +When used to free the data returned by \fIares_parse_soa_reply(3)\fP this will +free the ares_soa_reply structure, along with any additional storage associated with those structure. .B ares_parse_uri_reply(3) -When used to free the data returned by ares_parse_uri_reply(3) this -will free list of ares_uri_reply structures, along with any additional -storage associated with those structure. +When used to free the data returned by \fIares_parse_uri_reply(3)\fP this will +free list of ares_uri_reply structures, along with any additional storage +associated with those structure. .SH RETURN VALUE -The ares_free_data() function does not return a value. +The \fIares_free_data(3)\fP function does not return a value. .SH AVAILABILITY This function was first introduced in c-ares version 1.7.0. .SH SEE ALSO -.BR ares_get_servers(3), -.BR ares_parse_srv_reply(3), -.BR ares_parse_mx_reply(3), -.BR ares_parse_txt_reply(3), -.BR ares_parse_soa_reply(3) +.BR ares_get_servers (3), +.BR ares_parse_srv_reply (3), +.BR ares_parse_mx_reply (3), +.BR ares_parse_txt_reply (3), +.BR ares_parse_soa_reply (3) .SH AUTHOR Yang Tse .PP diff --git a/deps/cares/docs/ares_getaddrinfo.3 b/deps/cares/docs/ares_getaddrinfo.3 index ea90f9c7f86d77..407020deb78403 100644 --- a/deps/cares/docs/ares_getaddrinfo.3 +++ b/deps/cares/docs/ares_getaddrinfo.3 @@ -32,10 +32,8 @@ void ares_getaddrinfo(ares_channel \fIchannel\fP, const char *\fIname\fP, ares_addrinfo_callback \fIcallback\fP, void *\fIarg\fP) .fi .SH DESCRIPTION -The -.B ares_getaddrinfo -function initiates a host query by name on the name service channel -identified by +The \fBares_getaddrinfo(3)\fP function initiates a host query by name on the +name service channel identified by .IR channel . The .I name @@ -95,9 +93,7 @@ during a later call to \fIares_process(3)\fP, \fIares_destroy(3)\fP or .PP The callback argument .I arg -is copied from the -.B ares_getaddrinfo -argument +is copied from the \fBares_getaddrinfo(3)\fP argument .IR arg . The callback argument .I status @@ -183,8 +179,7 @@ struct ares_addrinfo_cname { .EE .RE .PP -The reserved memory has to be deleted by -.B ares_freeaddrinfo. +The reserved memory has to be deleted by \fBares_freeaddrinfo(3)\fP. The result is sorted according to RFC6724 except: - Rule 3 (Avoid deprecated addresses) diff --git a/deps/cares/docs/ares_inet_ntop.3 b/deps/cares/docs/ares_inet_ntop.3 index 68d1db9b95cd39..83306a1a12e5db 100644 --- a/deps/cares/docs/ares_inet_ntop.3 +++ b/deps/cares/docs/ares_inet_ntop.3 @@ -40,8 +40,8 @@ the size of this buffer, which shall be large enough to hold the text string (INET_ADDRSTRLEN (16) characters for IPv4, INET6_ADDRSTRLEN (46) characters for IPv6). .SH SEE ALSO -.BR ares_init(3), -.BR ares_inet_pton(3) +.BR ares_init (3), +.BR ares_inet_pton (3) .SH AVAILABILITY made properly publicly available in c-ares for real in version 1.10.0 .SH AUTHOR diff --git a/deps/cares/docs/ares_inet_pton.3 b/deps/cares/docs/ares_inet_pton.3 index 21c4eacdab6414..d727533cff7944 100644 --- a/deps/cares/docs/ares_inet_pton.3 +++ b/deps/cares/docs/ares_inet_pton.3 @@ -36,8 +36,8 @@ in. The \fBdst\fP argument points to a buffer into which the function stores the numeric address; this shall be large enough to hold the numeric address (32 bits for AF_INET, 128 bits for AF_INET6). .SH SEE ALSO -.BR ares_init(3), -.BR ares_inet_ntop(3) +.BR ares_init (3), +.BR ares_inet_ntop (3) .SH AVAILABILITY made properly publicly available in c-ares for real in version 1.10.0 .SH AUTHOR diff --git a/deps/cares/docs/ares_init.3 b/deps/cares/docs/ares_init.3 index d68e2241f4ee2e..9c8347a051252a 100644 --- a/deps/cares/docs/ares_init.3 +++ b/deps/cares/docs/ares_init.3 @@ -70,11 +70,11 @@ please see the .BR resolv.conf (5) manual page. .SH SEE ALSO -.BR ares_init_options(3), -.BR ares_destroy(3), -.BR ares_dup(3), -.BR ares_library_init(3), -.BR ares_set_servers(3) +.BR ares_init_options (3), +.BR ares_destroy (3), +.BR ares_dup (3), +.BR ares_library_init (3), +.BR ares_set_servers (3) .SH AUTHOR Greg Hudson, MIT Information Systems .br diff --git a/deps/cares/docs/ares_init_options.3 b/deps/cares/docs/ares_init_options.3 index 2fc14c569a9dd0..46a45e9fc8a4ad 100644 --- a/deps/cares/docs/ares_init_options.3 +++ b/deps/cares/docs/ares_init_options.3 @@ -120,10 +120,9 @@ The default value is 53, the standard name service port. .B int \fInservers\fP; .br The list of IPv4 servers to contact, instead of the servers specified in -resolv.conf or the local named. In order to allow specification of either -IPv4 or IPv6 name servers, the -.BR ares_set_servers(3) -function must be used instead. +resolv.conf or the local named. In order to allow specification of either IPv4 +or IPv6 name servers, the \Bares_set_servers(3)\fP function must be used +instead. .TP 18 .B ARES_OPT_DOMAINS .B char **\fIdomains\fP; @@ -300,13 +299,13 @@ the last occurrence wins. For more information, please see the .BR resolv.conf (5) manual page. .SH SEE ALSO -.BR ares_init(3), -.BR ares_destroy(3), -.BR ares_dup(3), -.BR ares_library_init(3), -.BR ares_save_options(3), -.BR ares_set_servers(3), -.BR ares_set_sortlist(3) +.BR ares_init (3), +.BR ares_destroy (3), +.BR ares_dup (3), +.BR ares_library_init (3), +.BR ares_save_options (3), +.BR ares_set_servers (3), +.BR ares_set_sortlist (3) .SH AUTHOR Greg Hudson, MIT Information Systems .br diff --git a/deps/cares/docs/ares_library_cleanup.3 b/deps/cares/docs/ares_library_cleanup.3 index 1af89d78d3f002..d6d76959b9d845 100644 --- a/deps/cares/docs/ares_library_cleanup.3 +++ b/deps/cares/docs/ares_library_cleanup.3 @@ -63,11 +63,10 @@ the DllMain function. Doing so will produce deadlocks and other problems. This function was first introduced in c-ares version 1.7.0 along with the definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_CLEANUP\fP as an indication of the availability of this function. Reference counting in -\fIares_library_init()\fP and \fIares_library_cleanup()\fP, which requires +\fIares_library_init(3)\fP and \fIares_library_cleanup(3)\fP, which requires calls to the former function to match calls to the latter, is present since -c-ares version 1.10.0. -Earlier versions would deinitialize the library on the first call -to \fIares_library_cleanup()\fP. +c-ares version 1.10.0. Earlier versions would deinitialize the library on the +first call to \fIares_library_cleanup(3)\fP. .PP Since the introduction of this function, it is absolutely mandatory to call it for any Win32/64 program using c-ares. @@ -76,8 +75,8 @@ Non-Win32/64 systems can still use c-ares version 1.7.0 without calling \fIares_library_cleanup(3)\fP due to the fact that \fIcurrently\fP it is nearly a do-nothing function on non-Win32/64 platforms. .SH SEE ALSO -.BR ares_library_init(3), -.BR ares_cancel(3) +.BR ares_library_init (3), +.BR ares_cancel (3) .SH AUTHOR Yang Tse .PP diff --git a/deps/cares/docs/ares_library_init.3 b/deps/cares/docs/ares_library_init.3 index 286702da56f8c0..2f61ce2fcf8844 100644 --- a/deps/cares/docs/ares_library_init.3 +++ b/deps/cares/docs/ares_library_init.3 @@ -87,18 +87,18 @@ as there are no currently dynamically loaded libraries. .B ARES_LIB_INIT_NONE Initialize nothing extra. This sets no bit. .SH RETURN VALUE -Upon successful completion, ares_library_init() will return 0. Otherwise, a -non-zero error number will be returned to indicate the error. Except for +Upon successful completion, \fIares_library_init(3)\fP returns 0. Otherwise, +a non-zero error number is returned to indicate the error. Except for \fIares_strerror(3)\fP, you shall not call any other c-ares function upon \fIares_library_init(3)\fP failure. .SH AVAILABILITY This function was first introduced in c-ares version 1.7.0 along with the definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_INIT\fP as an -indication of the availability of this function. Its recursive behavior, -which requires a matching number of calls to \fIares_library_cleanup()\fP -in order to deinitialize the library, is present since c-ares version -1.10.0. Earlier versions would deinitialize the library on the first call -to \fIares_library_cleanup()\fP. +indication of the availability of this function. Its recursive behavior, which +requires a matching number of calls to \fIares_library_cleanup(3)\fP in order +to deinitialize the library, is present since c-ares version 1.10.0. Earlier +versions would deinitialize the library on the first call to +\fIares_library_cleanup(3)\fP. .PP Since the introduction of this function it is absolutely mandatory to call it for any Win32/64 program using c-ares. @@ -107,8 +107,8 @@ Non-Win32/64 systems can still use c-ares version 1.7.0 without calling \fIares_library_init(3)\fP due to the fact that \fIcurrently\fP it is nearly a do-nothing function on non-Win32/64 platforms at this point. .SH SEE ALSO -.BR ares_library_cleanup(3), -.BR ares_strerror(3) +.BR ares_library_cleanup (3), +.BR ares_strerror (3) .SH AUTHOR Yang Tse .PP diff --git a/deps/cares/docs/ares_library_init_android.3 b/deps/cares/docs/ares_library_init_android.3 index 51ec20d5bd7948..7370a8a0e9d3c1 100644 --- a/deps/cares/docs/ares_library_init_android.3 +++ b/deps/cares/docs/ares_library_init_android.3 @@ -135,8 +135,8 @@ Context. It is assumed the JVM has aleady been registered through .SH AVAILABILITY This function was first introduced in c-ares version 1.15.0. .SH SEE ALSO -.BR ares_library_init(3), -.BR ares_library_cleanup(3), +.BR ares_library_init (3), +.BR ares_library_cleanup (3), .SH AUTHOR John Schember .PP diff --git a/deps/cares/docs/ares_library_initialized.3 b/deps/cares/docs/ares_library_initialized.3 index c9baad37e1962d..8ddc14539a190b 100644 --- a/deps/cares/docs/ares_library_initialized.3 +++ b/deps/cares/docs/ares_library_initialized.3 @@ -32,5 +32,5 @@ initialization is needed. .SH AVAILABILITY This function was first introduced in c-ares version 1.11.0 .SH SEE ALSO -.BR ares_library_init(3), -.BR ares_library_cleanup(3) +.BR ares_library_init (3), +.BR ares_library_cleanup (3) diff --git a/deps/cares/docs/ares_parse_mx_reply.3 b/deps/cares/docs/ares_parse_mx_reply.3 index 05e6cc4e9bbf2c..851380ad7ef90c 100644 --- a/deps/cares/docs/ares_parse_mx_reply.3 +++ b/deps/cares/docs/ares_parse_mx_reply.3 @@ -40,7 +40,7 @@ memory and a pointer to it stored into the variable pointed to by It is the caller's responsibility to free the resulting .IR mx_out structure when it is no longer needed using the function -.B ares_free_data +\fBares_free_data(3)\fP. .PP The structure .I ares_mx_reply diff --git a/deps/cares/docs/ares_parse_naptr_reply.3 b/deps/cares/docs/ares_parse_naptr_reply.3 index 5cefa2604fd936..b5ef19c508fee2 100644 --- a/deps/cares/docs/ares_parse_naptr_reply.3 +++ b/deps/cares/docs/ares_parse_naptr_reply.3 @@ -41,7 +41,7 @@ memory and a pointer to it stored into the variable pointed to by It is the caller's responsibility to free the resulting .IR naptr_out structure when it is no longer needed using the function -.B ares_free_data +\fBares_free_data(3)\fP. .PP The structure .I ares_naptr_reply diff --git a/deps/cares/docs/ares_parse_soa_reply.3 b/deps/cares/docs/ares_parse_soa_reply.3 index 04d70fa79a39fd..f816126ff554e0 100644 --- a/deps/cares/docs/ares_parse_soa_reply.3 +++ b/deps/cares/docs/ares_parse_soa_reply.3 @@ -40,7 +40,7 @@ memory and a pointer to it stored into the variable pointed to by It is the caller's responsibility to free the resulting .IR soa_out structure when it is no longer needed using the function -.B ares_free_data +\fBares_free_data(3)\fP. .PP The structure .I ares_soa_reply diff --git a/deps/cares/docs/ares_parse_srv_reply.3 b/deps/cares/docs/ares_parse_srv_reply.3 index 1a04b6282d4274..d16f0d8a4ee458 100644 --- a/deps/cares/docs/ares_parse_srv_reply.3 +++ b/deps/cares/docs/ares_parse_srv_reply.3 @@ -41,7 +41,7 @@ memory and a pointer to it stored into the variable pointed to by It is the caller's responsibility to free the resulting .IR srv_out structure when it is no longer needed using the function -.B ares_free_data +\fBares_free_data(3)\fP. .PP The structure .I ares_srv_reply diff --git a/deps/cares/docs/ares_parse_txt_reply.3 b/deps/cares/docs/ares_parse_txt_reply.3 index e4d7aa736ec799..22807facf5d8bf 100644 --- a/deps/cares/docs/ares_parse_txt_reply.3 +++ b/deps/cares/docs/ares_parse_txt_reply.3 @@ -29,10 +29,9 @@ int ares_parse_txt_reply_ext(const unsigned char* \fIabuf\fP, int \fIalen\fP, struct ares_txt_ext **\fItxt_out\fP); .fi .SH DESCRIPTION -The -.BR "ares_parse_txt_reply" " (" "ares_parse_txt_reply_ext" ")" -function parses the response to a query of type TXT into a -linked list (one element per sub-string) of +The \fIares_parse_txt_reply(3)\fP and \fIares_parse_txt_reply_ext(3)\fP +functions parse the response to a query of type TXT into a linked list (one +element per sub-string) of .IR "struct ares_txt_reply" " (" "struct ares_txt_ext" ")" The parameters .I abuf @@ -44,13 +43,11 @@ memory and a pointer to it stored into the variable pointed to by It is the caller's responsibility to free the resulting .IR txt_out structure when it is no longer needed using the function -.B ares_free_data -.PP +\fBares_free_data(3)\fP. + The structure .I ares_txt_reply contains the following fields: -.sp -.in +4n .nf struct ares_txt_reply { struct ares_txt_reply *next; @@ -58,13 +55,10 @@ struct ares_txt_reply { unsigned char *txt; }; .fi -.in -.PP + The structure .I ares_txt_ext contains the following fields: -.sp -.in +4n .nf struct ares_txt_ext { struct ares_txt_ext *next; @@ -73,8 +67,6 @@ struct ares_txt_ext { unsigned char record_start; }; .fi -.in -.PP The .I record_start field in @@ -87,7 +79,7 @@ will have at least one item with equal to 1, and may have some items with .I record_start equal to 0 between them. -.PP + These sequences of .I struct ares_txt_ext (starting from the item with @@ -95,7 +87,6 @@ These sequences of equal to 1, and ending right before the record start item) may be treated as either components of a single TXT record or as a multi-parted TXT record, depending on particular use case. -.PP .SH RETURN VALUES .BR "ares_parse_txt_reply" " (" "ares_parse_txt_reply_ext" ")" can return any of the following values: diff --git a/deps/cares/docs/ares_parse_uri_reply.3 b/deps/cares/docs/ares_parse_uri_reply.3 index 2c2268c1c51ee6..d2ec037bdae9d9 100644 --- a/deps/cares/docs/ares_parse_uri_reply.3 +++ b/deps/cares/docs/ares_parse_uri_reply.3 @@ -26,10 +26,8 @@ int ares_parse_uri_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP, struct ares_uri_reply** \fIuri_out\fP); .fi .SH DESCRIPTION -The -.B ares_parse_uri_reply -function parses the response to a query of type URI into a -linked list of +The \fIares_parse_uri_reply(3)\fP function parses the response to a query of +type URI into a linked list of .I struct ares_uri_reply The parameters .I abuf @@ -41,13 +39,11 @@ memory and a pointer to it stored into the variable pointed to by It is the caller's responsibility to free the resulting .IR uri_out structure when it is no longer needed using the function -.B ares_free_data -.PP +\fBares_free_data(3)\fP. + The structure .I ares_uri_reply contains the following fields: -.sp -.in +4n .nf struct ares_uri_reply { struct ares_uri_reply *next; @@ -57,8 +53,6 @@ struct ares_uri_reply { int ttl; }; .fi -.in -.PP .SH RETURN VALUES .B ares_parse_uri_reply can return any of the following values: diff --git a/deps/cares/docs/ares_set_servers.3 b/deps/cares/docs/ares_set_servers.3 index 6634ef5a2573f6..c455d1bbc727f2 100644 --- a/deps/cares/docs/ares_set_servers.3 +++ b/deps/cares/docs/ares_set_servers.3 @@ -84,7 +84,7 @@ Changing name servers configuration while queries are outstanding is not impleme .BR ares_set_servers_csv (3), .BR ares_get_servers (3), .BR ares_init_options (3), -.BR ares_dup(3) +.BR ares_dup (3) .SH AVAILABILITY \fBares_set_servers(3)\fP was added in c-ares 1.7.1; \fBares_set_servers_ports(3)\fP was added in c-ares 1.11.0. diff --git a/deps/cares/docs/ares_set_socket_callback.3 b/deps/cares/docs/ares_set_socket_callback.3 index d251eb821b083e..11ee0de8c2edbc 100644 --- a/deps/cares/docs/ares_set_socket_callback.3 +++ b/deps/cares/docs/ares_set_socket_callback.3 @@ -27,7 +27,8 @@ connected to the remote server. The callback must return ARES_SUCCESS if things are fine, or return -1 to signal an error. A returned error will abort the ares operation. .SH SEE ALSO -.BR ares_init_options (3), ares_set_socket_configure_callback (3) +.BR ares_init_options (3), +.BR ares_set_socket_configure_callback (3) .SH AVAILABILITY ares_set_socket_callback(3) was added in c-ares 1.6.0 .SH AUTHOR diff --git a/deps/cares/docs/ares_set_socket_configure_callback.3 b/deps/cares/docs/ares_set_socket_configure_callback.3 index 7cc27fe60b7609..e0a93d5c024cb8 100644 --- a/deps/cares/docs/ares_set_socket_configure_callback.3 +++ b/deps/cares/docs/ares_set_socket_configure_callback.3 @@ -25,7 +25,8 @@ to configure various socket options. The callback must return ARES_SUCCESS if things are fine, or return -1 to signal an error. A returned error will abort the ares operation. .SH SEE ALSO -.BR ares_init_options (3), ares_set_socket_callback (3) +.BR ares_init_options (3), +.BR ares_set_socket_callback (3) .SH AVAILABILITY ares_set_socket_configure_callback(3) was added in c-ares 1.11.0 .SH AUTHOR diff --git a/deps/cares/docs/ares_set_socket_functions.3 b/deps/cares/docs/ares_set_socket_functions.3 index 1b4e1aaee32d8f..09cb1ac75d924d 100644 --- a/deps/cares/docs/ares_set_socket_functions.3 +++ b/deps/cares/docs/ares_set_socket_functions.3 @@ -90,12 +90,12 @@ and must thus remain valid through out the channels and any created socket's lif Added in c-ares 1.13.0 .SH SEE ALSO .BR ares_init_options (3), -.BR socket(2), -.BR close(2), -.BR connect(2), -.BR recv(2), -.BR recvfrom(2), -.BR send(2), -.BR writev(2) +.BR socket (2), +.BR close (2), +.BR connect (2), +.BR recv (2), +.BR recvfrom (2), +.BR send (2), +.BR writev (2) .SH AUTHOR Carl Wilund diff --git a/deps/cares/docs/ares_set_sortlist.3 b/deps/cares/docs/ares_set_sortlist.3 index 24c3c35a7319eb..365d9763fc06b5 100644 --- a/deps/cares/docs/ares_set_sortlist.3 +++ b/deps/cares/docs/ares_set_sortlist.3 @@ -56,6 +56,6 @@ was invalid. c-ares library initialization not yet performed. .SH SEE ALSO .BR ares_init_options (3), -.BR ares_dup(3) +.BR ares_dup (3) .SH AVAILABILITY ares_set_sortlist(3) was added in c-ares 1.11.0 diff --git a/deps/cares/include/Makefile.in b/deps/cares/include/Makefile.in index bd37daee03e43f..decb4e3074c192 100644 --- a/deps/cares/include/Makefile.in +++ b/deps/cares/include/Makefile.in @@ -94,6 +94,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ + $(top_srcdir)/m4/ax_append_compile_flags.m4 \ + $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ diff --git a/deps/cares/include/ares.h b/deps/cares/include/ares.h index d2c1e9e3a6f327..49eb6e10d3ffa0 100644 --- a/deps/cares/include/ares.h +++ b/deps/cares/include/ares.h @@ -28,16 +28,16 @@ #ifndef ARES__H #define ARES__H -#include "ares_version.h" /* c-ares version defines */ -#include "ares_build.h" /* c-ares build definitions */ -#include "ares_rules.h" /* c-ares rules enforcement */ +#include "ares_version.h" /* c-ares version defines */ +#include "ares_build.h" /* c-ares build definitions */ +#include "ares_rules.h" /* c-ares rules enforcement */ /* * Define WIN32 when build target is Win32 API */ -#if (defined(_WIN32) || defined(__WIN32__)) && \ - !defined(WIN32) && !defined(__SYMBIAN32__) +#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) && \ + !defined(__SYMBIAN32__) # define WIN32 #endif @@ -47,13 +47,13 @@ libc5-based Linux systems. Only include it on system that are known to require it! */ #if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \ - defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ - defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ - defined(__QNXNTO__) || defined(__MVS__) || defined(__HAIKU__) -#include + defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \ + defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \ + defined(__QNXNTO__) || defined(__MVS__) || defined(__HAIKU__) +# include #endif #if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) -#include +# include #endif #if defined(WATT32) @@ -86,10 +86,10 @@ #endif #if defined(ANDROID) || defined(__ANDROID__) -#include +# include #endif -#ifdef __cplusplus +#ifdef __cplusplus extern "C" { #endif @@ -101,9 +101,9 @@ extern "C" { # define CARES_EXTERN #elif defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__) # if defined(CARES_BUILDING_LIBRARY) -# define CARES_EXTERN __declspec(dllexport) +# define CARES_EXTERN __declspec(dllexport) # else -# define CARES_EXTERN __declspec(dllimport) +# define CARES_EXTERN __declspec(dllimport) # endif #elif defined(CARES_BUILDING_LIBRARY) && defined(CARES_SYMBOL_HIDING) # define CARES_EXTERN CARES_SYMBOL_SCOPE_EXTERN @@ -112,59 +112,66 @@ extern "C" { #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 */ - -/* More ares_getaddrinfo error codes */ -#define ARES_ESERVICE 25 /* introduced in 1.?.0 */ +typedef enum { + ARES_SUCCESS = 0, + + /* Server error codes (ARES_ENODATA indicates no relevant answer) */ + ARES_ENODATA = 1, + ARES_EFORMERR = 2, + ARES_ESERVFAIL = 3, + ARES_ENOTFOUND = 4, + ARES_ENOTIMP = 5, + ARES_EREFUSED = 6, + + /* Locally generated error codes */ + ARES_EBADQUERY = 7, + ARES_EBADNAME = 8, + ARES_EBADFAMILY = 9, + ARES_EBADRESP = 10, + ARES_ECONNREFUSED = 11, + ARES_ETIMEOUT = 12, + ARES_EOF = 13, + ARES_EFILE = 14, + ARES_ENOMEM = 15, + ARES_EDESTRUCTION = 16, + ARES_EBADSTR = 17, + + /* ares_getnameinfo error codes */ + ARES_EBADFLAGS = 18, + + /* ares_getaddrinfo error codes */ + ARES_ENONAME = 19, + ARES_EBADHINTS = 20, + + /* Uninitialized library error code */ + ARES_ENOTINITIALIZED = 21, /* introduced in 1.7.0 */ + + /* ares_library_init error codes */ + ARES_ELOADIPHLPAPI = 22, /* introduced in 1.7.0 */ + ARES_EADDRGETNETWORKPARAMS = 23, /* introduced in 1.7.0 */ + + /* More error codes */ + ARES_ECANCELLED = 24, /* introduced in 1.7.0 */ + + /* More ares_getaddrinfo error codes */ + ARES_ESERVICE = 25 /* introduced in 1.?.0 */ +} ares_status_t; + +typedef enum { + ARES_FALSE = 0, + ARES_TRUE = 1 +} ares_bool_t; /* Flag values */ -#define ARES_FLAG_USEVC (1 << 0) -#define ARES_FLAG_PRIMARY (1 << 1) -#define ARES_FLAG_IGNTC (1 << 2) -#define ARES_FLAG_NORECURSE (1 << 3) -#define ARES_FLAG_STAYOPEN (1 << 4) -#define ARES_FLAG_NOSEARCH (1 << 5) -#define ARES_FLAG_NOALIASES (1 << 6) -#define ARES_FLAG_NOCHECKRESP (1 << 7) -#define ARES_FLAG_EDNS (1 << 8) +#define ARES_FLAG_USEVC (1 << 0) +#define ARES_FLAG_PRIMARY (1 << 1) +#define ARES_FLAG_IGNTC (1 << 2) +#define ARES_FLAG_NORECURSE (1 << 3) +#define ARES_FLAG_STAYOPEN (1 << 4) +#define ARES_FLAG_NOSEARCH (1 << 5) +#define ARES_FLAG_NOALIASES (1 << 6) +#define ARES_FLAG_NOCHECKRESP (1 << 7) +#define ARES_FLAG_EDNS (1 << 8) /* Option mask values */ #define ARES_OPT_FLAGS (1 << 0) @@ -189,52 +196,53 @@ extern "C" { #define ARES_OPT_UDP_MAX_QUERIES (1 << 19) /* 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) +#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 (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) -#define ARES_AI_NOSORT (1 << 7) -#define ARES_AI_ENVHOSTS (1 << 8) +#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) +#define ARES_AI_NOSORT (1 << 7) +#define ARES_AI_ENVHOSTS (1 << 8) /* Reserved for future use */ -#define ARES_AI_IDN (1 << 10) -#define ARES_AI_IDN_ALLOW_UNASSIGNED (1 << 11) +#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))) +#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) +#define ARES_LIB_INIT_NONE (0) +#define ARES_LIB_INIT_WIN32 (1 << 0) +#define ARES_LIB_INIT_ALL (ARES_LIB_INIT_WIN32) /* @@ -242,20 +250,18 @@ extern "C" { */ #ifndef ares_socket_typedef -#ifdef WIN32 +# ifdef WIN32 typedef SOCKET ares_socket_t; -#define ARES_SOCKET_BAD INVALID_SOCKET -#else +# define ARES_SOCKET_BAD INVALID_SOCKET +# else typedef int ares_socket_t; -#define ARES_SOCKET_BAD -1 -#endif -#define ares_socket_typedef +# 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); +typedef void (*ares_sock_state_cb)(void *data, ares_socket_t socket_fd, + int readable, int writable); struct apattern; @@ -277,27 +283,27 @@ struct apattern; */ struct ares_options { - int flags; - int timeout; /* in seconds or milliseconds, depending on options */ - int tries; - int ndots; + 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; + int socket_send_buffer_size; + int socket_receive_buffer_size; + struct in_addr *servers; + int nservers; + char **domains; + int ndomains; + char *lookups; ares_sock_state_cb sock_state_cb; - void *sock_state_cb_data; - struct apattern *sortlist; - int nsort; - int ednspsz; - char *resolvconf_path; - char *hosts_path; - int udp_max_queries; + void *sock_state_cb_data; + struct apattern *sortlist; + int nsort; + int ednspsz; + char *resolvconf_path; + char *hosts_path; + int udp_max_queries; }; struct hostent; @@ -309,107 +315,89 @@ struct ares_addrinfo_hints; typedef struct ares_channeldata *ares_channel; -typedef void (*ares_callback)(void *arg, - int status, - int timeouts, - unsigned char *abuf, - int alen); +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, +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 void (*ares_nameinfo_callback)(void *arg, int status, int timeouts, + char *node, char *service); -typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd, - int type, - void *data); +typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd, int type, + void *data); -typedef int (*ares_sock_config_callback)(ares_socket_t socket_fd, - int type, - void *data); +typedef int (*ares_sock_config_callback)(ares_socket_t socket_fd, int type, + void *data); -typedef void (*ares_addrinfo_callback)(void *arg, - int status, - int timeouts, - struct ares_addrinfo *res); +typedef void (*ares_addrinfo_callback)(void *arg, int status, int timeouts, + struct ares_addrinfo *res); CARES_EXTERN int ares_library_init(int flags); -CARES_EXTERN int ares_library_init_mem(int flags, - void *(*amalloc)(size_t size), - void (*afree)(void *ptr), - void *(*arealloc)(void *ptr, size_t size)); +CARES_EXTERN int ares_library_init_mem(int flags, void *(*amalloc)(size_t size), + void (*afree)(void *ptr), + void *(*arealloc)(void *ptr, + size_t size)); #if defined(ANDROID) || defined(__ANDROID__) CARES_EXTERN void ares_library_init_jvm(JavaVM *jvm); -CARES_EXTERN int ares_library_init_android(jobject connectivity_manager); -CARES_EXTERN int ares_library_android_initialized(void); +CARES_EXTERN int ares_library_init_android(jobject connectivity_manager); +CARES_EXTERN int ares_library_android_initialized(void); #endif -CARES_EXTERN int ares_library_initialized(void); +CARES_EXTERN int ares_library_initialized(void); -CARES_EXTERN void ares_library_cleanup(void); +CARES_EXTERN void ares_library_cleanup(void); CARES_EXTERN const char *ares_version(int *version); -CARES_EXTERN int ares_init(ares_channel *channelptr); +CARES_EXTERN int ares_init(ares_channel *channelptr); -CARES_EXTERN int ares_init_options(ares_channel *channelptr, - struct ares_options *options, - int optmask); +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 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 void ares_destroy_options(struct ares_options *options); -CARES_EXTERN int ares_dup(ares_channel *dest, - ares_channel src); +CARES_EXTERN int ares_dup(ares_channel *dest, ares_channel src); -CARES_EXTERN void ares_destroy(ares_channel channel); +CARES_EXTERN void ares_destroy(ares_channel channel); -CARES_EXTERN void ares_cancel(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); +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); +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_local_dev(ares_channel channel, + const char *local_dev_name); -CARES_EXTERN void ares_set_socket_callback(ares_channel channel, - ares_sock_create_callback callback, - void *user_data); +CARES_EXTERN void ares_set_socket_callback(ares_channel channel, + ares_sock_create_callback callback, + void *user_data); -CARES_EXTERN void ares_set_socket_configure_callback(ares_channel channel, - ares_sock_config_callback callback, - void *user_data); +CARES_EXTERN void ares_set_socket_configure_callback( + ares_channel channel, ares_sock_config_callback callback, void *user_data); -CARES_EXTERN int ares_set_sortlist(ares_channel channel, - const char *sortstr); +CARES_EXTERN int ares_set_sortlist(ares_channel channel, const char *sortstr); -CARES_EXTERN void ares_getaddrinfo(ares_channel channel, - const char* node, - const char* service, - const struct ares_addrinfo_hints* hints, - ares_addrinfo_callback callback, - void* arg); +CARES_EXTERN void ares_getaddrinfo(ares_channel channel, const char *node, + const char *service, + const struct ares_addrinfo_hints *hints, + ares_addrinfo_callback callback, void *arg); -CARES_EXTERN void ares_freeaddrinfo(struct ares_addrinfo* ai); +CARES_EXTERN void ares_freeaddrinfo(struct ares_addrinfo *ai); /* * Virtual function set to have user-managed socket IO. @@ -420,111 +408,80 @@ CARES_EXTERN void ares_freeaddrinfo(struct ares_addrinfo* ai); * ares_sock_config_callback call. */ struct iovec; + struct ares_socket_functions { - ares_socket_t(*asocket)(int, int, int, void *); - int(*aclose)(ares_socket_t, void *); - int(*aconnect)(ares_socket_t, const struct sockaddr *, ares_socklen_t, void *); - ares_ssize_t(*arecvfrom)(ares_socket_t, void *, size_t, int, struct sockaddr *, ares_socklen_t *, void *); - ares_ssize_t(*asendv)(ares_socket_t, const struct iovec *, int, void *); + ares_socket_t (*asocket)(int, int, int, void *); + int (*aclose)(ares_socket_t, void *); + int (*aconnect)(ares_socket_t, const struct sockaddr *, ares_socklen_t, + void *); + ares_ssize_t (*arecvfrom)(ares_socket_t, void *, size_t, int, + struct sockaddr *, ares_socklen_t *, void *); + ares_ssize_t (*asendv)(ares_socket_t, const struct iovec *, int, void *); }; -CARES_EXTERN void ares_set_socket_functions(ares_channel channel, - const struct ares_socket_functions * funcs, - void *user_data); - -CARES_EXTERN void ares_send(ares_channel channel, - const unsigned char *qbuf, - int qlen, - ares_callback callback, - void *arg); - -CARES_EXTERN void ares_query(ares_channel channel, - const char *name, - int dnsclass, - int type, - ares_callback callback, +CARES_EXTERN void + ares_set_socket_functions(ares_channel channel, + const struct ares_socket_functions *funcs, + void *user_data); + +CARES_EXTERN void ares_send(ares_channel channel, const unsigned char *qbuf, + int qlen, ares_callback callback, void *arg); + +CARES_EXTERN void ares_query(ares_channel channel, const char *name, + int dnsclass, int type, ares_callback callback, void *arg); -CARES_EXTERN void ares_search(ares_channel channel, - const char *name, - int dnsclass, - int type, - ares_callback callback, +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, +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 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_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, +CARES_EXTERN void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, - ares_socklen_t salen, - int flags, - ares_nameinfo_callback callback, - void *arg); + 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_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 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 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, +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, +CARES_EXTERN void ares_process_fd(ares_channel channel, ares_socket_t read_fd, ares_socket_t write_fd); -CARES_EXTERN int ares_create_query(const char *name, - int dnsclass, - int type, - unsigned short id, - int rd, - unsigned char **buf, - int *buflen, - int max_udp_size); - -CARES_EXTERN int ares_mkquery(const char *name, - int dnsclass, - int type, - unsigned short id, - int rd, - unsigned char **buf, - int *buflen); - -CARES_EXTERN int ares_expand_name(const unsigned char *encoded, - const unsigned char *abuf, - int alen, - char **s, - long *enclen); - -CARES_EXTERN int ares_expand_string(const unsigned char *encoded, - const unsigned char *abuf, - int alen, - unsigned char **s, - long *enclen); +CARES_EXTERN int ares_create_query(const char *name, int dnsclass, int type, + unsigned short id, int rd, + unsigned char **buf, int *buflen, + int max_udp_size); + +CARES_EXTERN int ares_mkquery(const char *name, int dnsclass, int type, + unsigned short id, int rd, unsigned char **buf, + int *buflen); + +CARES_EXTERN int ares_expand_name(const unsigned char *encoded, + const unsigned char *abuf, int alen, char **s, + long *enclen); + +CARES_EXTERN int ares_expand_string(const unsigned char *encoded, + const unsigned char *abuf, int alen, + unsigned char **s, long *enclen); /* * NOTE: before c-ares 1.7.0 we would most often use the system in6_addr @@ -546,47 +503,47 @@ struct ares_addrttl { struct ares_addr6ttl { struct ares_in6_addr ip6addr; - int ttl; + int ttl; }; struct ares_caa_reply { - struct ares_caa_reply *next; - int critical; - unsigned char *property; - size_t plength; /* plength excludes null termination */ - unsigned char *value; - size_t length; /* length excludes null termination */ + struct ares_caa_reply *next; + int critical; + unsigned char *property; + size_t plength; /* plength excludes null termination */ + unsigned char *value; + size_t length; /* length excludes null termination */ }; struct ares_srv_reply { - struct ares_srv_reply *next; - char *host; - unsigned short priority; - unsigned short weight; - unsigned short port; + 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_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_txt_reply *next; + unsigned char *txt; + size_t length; /* length excludes null termination */ }; /* NOTE: This structure is a superset of ares_txt_reply */ struct ares_txt_ext { - struct ares_txt_ext *next; - unsigned char *txt; - size_t length; + struct ares_txt_ext *next; + unsigned char *txt; + size_t length; /* 1 - if start of new record * 0 - if a chunk in the same record */ - unsigned char record_start; + unsigned char record_start; }; struct ares_naptr_reply { @@ -610,11 +567,11 @@ struct ares_soa_reply { }; struct ares_uri_reply { - struct ares_uri_reply *next; - unsigned short priority; - unsigned short weight; - char *uri; - int ttl; + struct ares_uri_reply *next; + unsigned short priority; + unsigned short weight; + char *uri; + int ttl; }; /* @@ -664,60 +621,46 @@ struct ares_addrinfo_hints { ** 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_caa_reply(const unsigned char* abuf, - int alen, - struct ares_caa_reply** caa_out); - -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_a_reply(const unsigned char *abuf, int alen, + struct hostent **host, + struct ares_addrttl *addrttls, + int *naddrttls); -CARES_EXTERN int ares_parse_ns_reply(const unsigned char *abuf, - int alen, - struct hostent **host); +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_srv_reply(const unsigned char* abuf, - int alen, - struct ares_srv_reply** srv_out); +CARES_EXTERN int ares_parse_caa_reply(const unsigned char *abuf, int alen, + struct ares_caa_reply **caa_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_ptr_reply(const unsigned char *abuf, int alen, + const void *addr, int addrlen, int family, + struct hostent **host); -CARES_EXTERN int ares_parse_txt_reply(const unsigned char* abuf, - int alen, - struct ares_txt_reply** txt_out); +CARES_EXTERN int ares_parse_ns_reply(const unsigned char *abuf, int alen, + struct hostent **host); + +CARES_EXTERN int ares_parse_srv_reply(const unsigned char *abuf, int alen, + struct ares_srv_reply **srv_out); + +CARES_EXTERN int ares_parse_mx_reply(const unsigned char *abuf, int alen, + struct ares_mx_reply **mx_out); + +CARES_EXTERN int ares_parse_txt_reply(const unsigned char *abuf, int alen, + struct ares_txt_reply **txt_out); -CARES_EXTERN int ares_parse_txt_reply_ext(const unsigned char* abuf, - int alen, - struct ares_txt_ext** txt_out); +CARES_EXTERN int ares_parse_txt_reply_ext(const unsigned char *abuf, int alen, + struct ares_txt_ext **txt_out); -CARES_EXTERN int ares_parse_naptr_reply(const unsigned char* abuf, - int alen, - struct ares_naptr_reply** naptr_out); +CARES_EXTERN int ares_parse_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 int ares_parse_soa_reply(const unsigned char *abuf, int alen, + struct ares_soa_reply **soa_out); -CARES_EXTERN int ares_parse_uri_reply(const unsigned char* abuf, - int alen, - struct ares_uri_reply** uri_out); +CARES_EXTERN int ares_parse_uri_reply(const unsigned char *abuf, int alen, + struct ares_uri_reply **uri_out); CARES_EXTERN void ares_free_string(void *str); @@ -729,7 +672,8 @@ CARES_EXTERN const char *ares_strerror(int code); struct ares_addr_node { struct ares_addr_node *next; - int family; + int family; + union { struct in_addr addr4; struct ares_in6_addr addr6; @@ -738,38 +682,40 @@ struct ares_addr_node { struct ares_addr_port_node { struct ares_addr_port_node *next; - int family; + int family; + union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; + int udp_port; int tcp_port; }; -CARES_EXTERN int ares_set_servers(ares_channel channel, - struct ares_addr_node *servers); -CARES_EXTERN int ares_set_servers_ports(ares_channel channel, - struct ares_addr_port_node *servers); +CARES_EXTERN int ares_set_servers(ares_channel channel, + struct ares_addr_node *servers); +CARES_EXTERN int ares_set_servers_ports(ares_channel channel, + struct ares_addr_port_node *servers); /* Incomming string format: host[:port][,host[:port]]... */ -CARES_EXTERN int ares_set_servers_csv(ares_channel channel, - const char* servers); -CARES_EXTERN int ares_set_servers_ports_csv(ares_channel channel, - const char* servers); +CARES_EXTERN int ares_set_servers_csv(ares_channel channel, + const char *servers); +CARES_EXTERN int ares_set_servers_ports_csv(ares_channel channel, + const char *servers); -CARES_EXTERN int ares_get_servers(ares_channel channel, - struct ares_addr_node **servers); -CARES_EXTERN int ares_get_servers_ports(ares_channel channel, - struct ares_addr_port_node **servers); +CARES_EXTERN int ares_get_servers(ares_channel channel, + struct ares_addr_node **servers); +CARES_EXTERN int ares_get_servers_ports(ares_channel channel, + struct ares_addr_port_node **servers); CARES_EXTERN const char *ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size); -CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst); +CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst); -#ifdef __cplusplus +#ifdef __cplusplus } #endif diff --git a/deps/cares/include/ares_dns.h b/deps/cares/include/ares_dns.h index e49c3d26ab1aa8..46edbbbc5289c6 100644 --- a/deps/cares/include/ares_dns.h +++ b/deps/cares/include/ares_dns.h @@ -40,84 +40,88 @@ * 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]))))) +#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__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))) +#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) +# 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) +#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) +#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) +#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) +#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) +#define DNS_RR_TYPE(r) DNS__16BIT(r) +#define DNS_RR_CLASS(r) DNS__16BIT((r) + 2) +#define DNS_RR_TTL(r) DNS__32BIT((r) + 4) +#define DNS_RR_LEN(r) DNS__16BIT((r) + 8) /* Macros for constructing the fixed part of a DNS resource record */ -#define DNS_RR_SET_TYPE(r, v) DNS__SET16BIT(r, v) -#define DNS_RR_SET_CLASS(r, v) DNS__SET16BIT((r) + 2, v) -#define DNS_RR_SET_TTL(r, v) DNS__SET32BIT((r) + 4, v) -#define DNS_RR_SET_LEN(r, v) DNS__SET16BIT((r) + 8, v) +#define DNS_RR_SET_TYPE(r, v) DNS__SET16BIT(r, v) +#define DNS_RR_SET_CLASS(r, v) DNS__SET16BIT((r) + 2, v) +#define DNS_RR_SET_TTL(r, v) DNS__SET32BIT((r) + 4, v) +#define DNS_RR_SET_LEN(r, v) DNS__SET16BIT((r) + 8, v) #endif /* HEADER_CARES_DNS_H */ diff --git a/deps/cares/include/ares_nameser.h b/deps/cares/include/ares_nameser.h index 3138d89d747fad..bdc746bd6d046a 100644 --- a/deps/cares/include/ares_nameser.h +++ b/deps/cares/include/ares_nameser.h @@ -44,51 +44,51 @@ */ #ifndef NS_PACKETSZ -# define NS_PACKETSZ 512 /* maximum packet size */ +# define NS_PACKETSZ 512 /* maximum packet size */ #endif #ifndef NS_MAXDNAME -# define NS_MAXDNAME 256 /* maximum domain name */ +# define NS_MAXDNAME 256 /* maximum domain name */ #endif #ifndef NS_MAXCDNAME -# define NS_MAXCDNAME 255 /* maximum compressed domain name */ +# define NS_MAXCDNAME 255 /* maximum compressed domain name */ #endif #ifndef NS_MAXLABEL -# define NS_MAXLABEL 63 +# define NS_MAXLABEL 63 #endif #ifndef NS_HFIXEDSZ -# define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */ +# define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */ #endif #ifndef NS_QFIXEDSZ -# define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */ +# define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */ #endif #ifndef NS_RRFIXEDSZ -# define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */ +# define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */ #endif #ifndef NS_INT16SZ -# define NS_INT16SZ 2 +# define NS_INT16SZ 2 #endif #ifndef NS_INADDRSZ -# define NS_INADDRSZ 4 +# define NS_INADDRSZ 4 #endif #ifndef NS_IN6ADDRSZ -# define NS_IN6ADDRSZ 16 +# define NS_IN6ADDRSZ 16 #endif #ifndef NS_CMPRSFLGS -# define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */ +# define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */ #endif #ifndef NS_DEFAULTPORT -# define NS_DEFAULTPORT 53 /* For both TCP and UDP. */ +# define NS_DEFAULTPORT 53 /* For both TCP and UDP. */ #endif /* ============================================================================ @@ -99,106 +99,106 @@ #ifndef CARES_HAVE_ARPA_NAMESER_H 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_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_uri = 256, /* Uniform Resource Identifier (RFC7553) */ - ns_t_caa = 257, /* Certification Authority Authorization. */ - ns_t_max = 65536 + 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_uri = 256, /* Uniform Resource Identifier (RFC7553) */ + ns_t_caa = 257, /* Certification Authority Authorization. */ + 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_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_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 /* CARES_HAVE_ARPA_NAMESER_H */ @@ -212,45 +212,45 @@ typedef enum __ns_rcode { */ #ifndef PACKETSZ -# define PACKETSZ NS_PACKETSZ +# define PACKETSZ NS_PACKETSZ #endif #ifndef MAXDNAME -# define MAXDNAME NS_MAXDNAME +# define MAXDNAME NS_MAXDNAME #endif #ifndef MAXCDNAME -# define MAXCDNAME NS_MAXCDNAME +# define MAXCDNAME NS_MAXCDNAME #endif #ifndef MAXLABEL -# define MAXLABEL NS_MAXLABEL +# define MAXLABEL NS_MAXLABEL #endif #ifndef HFIXEDSZ -# define HFIXEDSZ NS_HFIXEDSZ +# define HFIXEDSZ NS_HFIXEDSZ #endif #ifndef QFIXEDSZ -# define QFIXEDSZ NS_QFIXEDSZ +# define QFIXEDSZ NS_QFIXEDSZ #endif #ifndef RRFIXEDSZ -# define RRFIXEDSZ NS_RRFIXEDSZ +# define RRFIXEDSZ NS_RRFIXEDSZ #endif #ifndef INDIR_MASK -# define INDIR_MASK NS_CMPRSFLGS +# define INDIR_MASK NS_CMPRSFLGS #endif #ifndef NAMESERVER_PORT -# define NAMESERVER_PORT NS_DEFAULTPORT +# define NAMESERVER_PORT NS_DEFAULTPORT #endif /* opcodes */ #ifndef O_QUERY -# define O_QUERY 0 /* ns_o_query */ +# define O_QUERY 0 /* ns_o_query */ #endif #ifndef O_IQUERY # define O_IQUERY 1 /* ns_o_iquery */ @@ -268,242 +268,242 @@ typedef enum __ns_rcode { /* response codes */ #ifndef SERVFAIL -# define SERVFAIL ns_r_servfail +# define SERVFAIL ns_r_servfail #endif #ifndef NOTIMP -# define NOTIMP ns_r_notimpl +# define NOTIMP ns_r_notimpl #endif #ifndef REFUSED -# define REFUSED ns_r_refused +# define REFUSED ns_r_refused #endif #if defined(_WIN32) && !defined(HAVE_ARPA_NAMESER_COMPAT_H) && defined(NOERROR) # undef NOERROR /* it seems this is already defined in winerror.h */ #endif #ifndef NOERROR -# define NOERROR ns_r_noerror +# define NOERROR ns_r_noerror #endif #ifndef FORMERR -# define FORMERR ns_r_formerr +# define FORMERR ns_r_formerr #endif #ifndef NXDOMAIN -# define NXDOMAIN ns_r_nxdomain +# define NXDOMAIN ns_r_nxdomain #endif /* Non-standard response codes, use numeric values */ #ifndef YXDOMAIN -# define YXDOMAIN 6 /* ns_r_yxdomain */ +# define YXDOMAIN 6 /* ns_r_yxdomain */ #endif #ifndef YXRRSET -# define YXRRSET 7 /* ns_r_yxrrset */ +# define YXRRSET 7 /* ns_r_yxrrset */ #endif #ifndef NXRRSET -# define NXRRSET 8 /* ns_r_nxrrset */ +# define NXRRSET 8 /* ns_r_nxrrset */ #endif #ifndef NOTAUTH -# define NOTAUTH 9 /* ns_r_notauth */ +# define NOTAUTH 9 /* ns_r_notauth */ #endif #ifndef NOTZONE -# define NOTZONE 10 /* ns_r_notzone */ +# define NOTZONE 10 /* ns_r_notzone */ #endif #ifndef TSIG_BADSIG -# define TSIG_BADSIG 16 /* ns_r_badsig */ +# define TSIG_BADSIG 16 /* ns_r_badsig */ #endif #ifndef TSIG_BADKEY -# define TSIG_BADKEY 17 /* ns_r_badkey */ +# define TSIG_BADKEY 17 /* ns_r_badkey */ #endif #ifndef TSIG_BADTIME -# define TSIG_BADTIME 18 /* ns_r_badtime */ +# define TSIG_BADTIME 18 /* ns_r_badtime */ #endif /* classes */ #ifndef C_IN -# define C_IN 1 /* ns_c_in */ +# define C_IN 1 /* ns_c_in */ #endif #ifndef C_CHAOS -# define C_CHAOS 3 /* ns_c_chaos */ +# define C_CHAOS 3 /* ns_c_chaos */ #endif #ifndef C_HS -# define C_HS 4 /* ns_c_hs */ +# define C_HS 4 /* ns_c_hs */ #endif #ifndef C_NONE -# define C_NONE 254 /* ns_c_none */ +# define C_NONE 254 /* ns_c_none */ #endif #ifndef C_ANY -# define C_ANY 255 /* ns_c_any */ +# define C_ANY 255 /* ns_c_any */ #endif /* types */ #ifndef T_A -# define T_A 1 /* ns_t_a */ +# define T_A 1 /* ns_t_a */ #endif #ifndef T_NS -# define T_NS 2 /* ns_t_ns */ +# define T_NS 2 /* ns_t_ns */ #endif #ifndef T_MD -# define T_MD 3 /* ns_t_md */ +# define T_MD 3 /* ns_t_md */ #endif #ifndef T_MF -# define T_MF 4 /* ns_t_mf */ +# define T_MF 4 /* ns_t_mf */ #endif #ifndef T_CNAME -# define T_CNAME 5 /* ns_t_cname */ +# define T_CNAME 5 /* ns_t_cname */ #endif #ifndef T_SOA -# define T_SOA 6 /* ns_t_soa */ +# define T_SOA 6 /* ns_t_soa */ #endif #ifndef T_MB -# define T_MB 7 /* ns_t_mb */ +# define T_MB 7 /* ns_t_mb */ #endif #ifndef T_MG -# define T_MG 8 /* ns_t_mg */ +# define T_MG 8 /* ns_t_mg */ #endif #ifndef T_MR -# define T_MR 9 /* ns_t_mr */ +# define T_MR 9 /* ns_t_mr */ #endif #ifndef T_NULL -# define T_NULL 10 /* ns_t_null */ +# define T_NULL 10 /* ns_t_null */ #endif #ifndef T_WKS -# define T_WKS 11 /* ns_t_wks */ +# define T_WKS 11 /* ns_t_wks */ #endif #ifndef T_PTR -# define T_PTR 12 /* ns_t_ptr */ +# define T_PTR 12 /* ns_t_ptr */ #endif #ifndef T_HINFO -# define T_HINFO 13 /* ns_t_hinfo */ +# define T_HINFO 13 /* ns_t_hinfo */ #endif #ifndef T_MINFO -# define T_MINFO 14 /* ns_t_minfo */ +# define T_MINFO 14 /* ns_t_minfo */ #endif #ifndef T_MX -# define T_MX 15 /* ns_t_mx */ +# define T_MX 15 /* ns_t_mx */ #endif #ifndef T_TXT -# define T_TXT 16 /* ns_t_txt */ +# define T_TXT 16 /* ns_t_txt */ #endif #ifndef T_RP -# define T_RP 17 /* ns_t_rp */ +# define T_RP 17 /* ns_t_rp */ #endif #ifndef T_AFSDB -# define T_AFSDB 18 /* ns_t_afsdb */ +# define T_AFSDB 18 /* ns_t_afsdb */ #endif #ifndef T_X25 -# define T_X25 19 /* ns_t_x25 */ +# define T_X25 19 /* ns_t_x25 */ #endif #ifndef T_ISDN -# define T_ISDN 20 /* ns_t_isdn */ +# define T_ISDN 20 /* ns_t_isdn */ #endif #ifndef T_RT -# define T_RT 21 /* ns_t_rt */ +# define T_RT 21 /* ns_t_rt */ #endif #ifndef T_NSAP -# define T_NSAP 22 /* ns_t_nsap */ +# define T_NSAP 22 /* ns_t_nsap */ #endif #ifndef T_NSAP_PTR -# define T_NSAP_PTR 23 /* ns_t_nsap_ptr */ +# define T_NSAP_PTR 23 /* ns_t_nsap_ptr */ #endif #ifndef T_SIG -# define T_SIG 24 /* ns_t_sig */ +# define T_SIG 24 /* ns_t_sig */ #endif #ifndef T_KEY -# define T_KEY 25 /* ns_t_key */ +# define T_KEY 25 /* ns_t_key */ #endif #ifndef T_PX -# define T_PX 26 /* ns_t_px */ +# define T_PX 26 /* ns_t_px */ #endif #ifndef T_GPOS -# define T_GPOS 27 /* ns_t_gpos */ +# define T_GPOS 27 /* ns_t_gpos */ #endif #ifndef T_AAAA -# define T_AAAA 28 /* ns_t_aaaa */ +# define T_AAAA 28 /* ns_t_aaaa */ #endif #ifndef T_LOC -# define T_LOC 29 /* ns_t_loc */ +# define T_LOC 29 /* ns_t_loc */ #endif #ifndef T_NXT -# define T_NXT 30 /* ns_t_nxt */ +# define T_NXT 30 /* ns_t_nxt */ #endif #ifndef T_EID -# define T_EID 31 /* ns_t_eid */ +# define T_EID 31 /* ns_t_eid */ #endif #ifndef T_NIMLOC -# define T_NIMLOC 32 /* ns_t_nimloc */ +# define T_NIMLOC 32 /* ns_t_nimloc */ #endif #ifndef T_SRV -# define T_SRV 33 /* ns_t_srv */ +# define T_SRV 33 /* ns_t_srv */ #endif #ifndef T_ATMA -# define T_ATMA 34 /* ns_t_atma */ +# define T_ATMA 34 /* ns_t_atma */ #endif #ifndef T_NAPTR -# define T_NAPTR 35 /* ns_t_naptr */ +# define T_NAPTR 35 /* ns_t_naptr */ #endif #ifndef T_KX -# define T_KX 36 /* ns_t_kx */ +# define T_KX 36 /* ns_t_kx */ #endif #ifndef T_CERT -# define T_CERT 37 /* ns_t_cert */ +# define T_CERT 37 /* ns_t_cert */ #endif #ifndef T_A6 -# define T_A6 38 /* ns_t_a6 */ +# define T_A6 38 /* ns_t_a6 */ #endif #ifndef T_DNAME -# define T_DNAME 39 /* ns_t_dname */ +# define T_DNAME 39 /* ns_t_dname */ #endif #ifndef T_SINK -# define T_SINK 40 /* ns_t_sink */ +# define T_SINK 40 /* ns_t_sink */ #endif #ifndef T_OPT -# define T_OPT 41 /* ns_t_opt */ +# define T_OPT 41 /* ns_t_opt */ #endif #ifndef T_APL -# define T_APL 42 /* ns_t_apl */ +# define T_APL 42 /* ns_t_apl */ #endif #ifndef T_DS -# define T_DS 43 /* ns_t_ds */ +# define T_DS 43 /* ns_t_ds */ #endif #ifndef T_SSHFP -# define T_SSHFP 44 /* ns_t_sshfp */ +# define T_SSHFP 44 /* ns_t_sshfp */ #endif #ifndef T_RRSIG -# define T_RRSIG 46 /* ns_t_rrsig */ +# define T_RRSIG 46 /* ns_t_rrsig */ #endif #ifndef T_NSEC -# define T_NSEC 47 /* ns_t_nsec */ +# define T_NSEC 47 /* ns_t_nsec */ #endif #ifndef T_DNSKEY -# define T_DNSKEY 48 /* ns_t_dnskey */ +# define T_DNSKEY 48 /* ns_t_dnskey */ #endif #ifndef T_TKEY -# define T_TKEY 249 /* ns_t_tkey */ +# define T_TKEY 249 /* ns_t_tkey */ #endif #ifndef T_TSIG -# define T_TSIG 250 /* ns_t_tsig */ +# define T_TSIG 250 /* ns_t_tsig */ #endif #ifndef T_IXFR -# define T_IXFR 251 /* ns_t_ixfr */ +# define T_IXFR 251 /* ns_t_ixfr */ #endif #ifndef T_AXFR -# define T_AXFR 252 /* ns_t_axfr */ +# define T_AXFR 252 /* ns_t_axfr */ #endif #ifndef T_MAILB -# define T_MAILB 253 /* ns_t_mailb */ +# define T_MAILB 253 /* ns_t_mailb */ #endif #ifndef T_MAILA -# define T_MAILA 254 /* ns_t_maila */ +# define T_MAILA 254 /* ns_t_maila */ #endif #ifndef T_ANY -# define T_ANY 255 /* ns_t_any */ +# define T_ANY 255 /* ns_t_any */ #endif #ifndef T_URI -# define T_URI 256 /* ns_t_uri */ +# define T_URI 256 /* ns_t_uri */ #endif #ifndef T_CAA -# define T_CAA 257 /* ns_t_caa */ +# define T_CAA 257 /* ns_t_caa */ #endif #ifndef T_MAX -# define T_MAX 65536 /* ns_t_max */ +# define T_MAX 65536 /* ns_t_max */ #endif diff --git a/deps/cares/include/ares_rules.h b/deps/cares/include/ares_rules.h index f6b1f663e2dbf0..450dc8ab2d5fd2 100644 --- a/deps/cares/include/ares_rules.h +++ b/deps/cares/include/ares_rules.h @@ -81,7 +81,7 @@ #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 +Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_is_missing #endif /* @@ -92,15 +92,14 @@ #define CareschkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1 -/* - * Verify that the size previously defined and expected for - * ares_socklen_t is actually the same as the one reported - * by sizeof() at compile time. - */ + /* + * Verify that the size previously defined and expected for + * ares_socklen_t is actually the same as the one reported + * by sizeof() at compile time. + */ -typedef char - __cares_rule_02__ - [CareschkszEQ(ares_socklen_t, sizeof(CARES_TYPEOF_ARES_SOCKLEN_T))]; + typedef char __cares_rule_02__[CareschkszEQ( + ares_socklen_t, sizeof(CARES_TYPEOF_ARES_SOCKLEN_T))]; /* * Verify at compile time that the size of ares_socklen_t as reported @@ -108,9 +107,7 @@ typedef char * the current compilation. */ -typedef char - __cares_rule_03__ - [CareschkszGE(ares_socklen_t, int)]; +typedef char __cares_rule_03__[CareschkszGE(ares_socklen_t, int)]; /* ================================================================ */ /* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */ diff --git a/deps/cares/include/ares_version.h b/deps/cares/include/ares_version.h index 34784e2ed44731..1fadc7efd3e755 100644 --- a/deps/cares/include/ares_version.h +++ b/deps/cares/include/ares_version.h @@ -31,15 +31,15 @@ #define ARES_COPYRIGHT "2004 - 2023 Daniel Stenberg, ." #define ARES_VERSION_MAJOR 1 -#define ARES_VERSION_MINOR 20 -#define ARES_VERSION_PATCH 1 -#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\ - (ARES_VERSION_MINOR<<8)|\ - (ARES_VERSION_PATCH)) -#define ARES_VERSION_STR "1.20.1" +#define ARES_VERSION_MINOR 21 +#define ARES_VERSION_PATCH 0 +#define ARES_VERSION \ + ((ARES_VERSION_MAJOR << 16) | (ARES_VERSION_MINOR << 8) | \ + (ARES_VERSION_PATCH)) +#define ARES_VERSION_STR "1.21.0" #if (ARES_VERSION >= 0x010700) -# define CARES_HAVE_ARES_LIBRARY_INIT 1 +# define CARES_HAVE_ARES_LIBRARY_INIT 1 # define CARES_HAVE_ARES_LIBRARY_CLEANUP 1 #else # undef CARES_HAVE_ARES_LIBRARY_INIT diff --git a/deps/cares/m4/ax_append_compile_flags.m4 b/deps/cares/m4/ax_append_compile_flags.m4 new file mode 100644 index 00000000000000..1f8e70845c20d9 --- /dev/null +++ b/deps/cares/m4/ax_append_compile_flags.m4 @@ -0,0 +1,65 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS]) +# +# DESCRIPTION +# +# For every FLAG1, FLAG2 it is checked whether the compiler works with the +# flag. If it does, the flag is added FLAGS-VARIABLE +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. During the check the flag is always added to the +# current language's flags. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# NOTE: This macro depends on the AX_APPEND_FLAG and +# AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with +# AX_APPEND_LINK_FLAGS. +# +# LICENSE +# +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 3 + +AC_DEFUN([AX_APPEND_COMPILE_FLAGS], +[AC_REQUIRE([AX_CHECK_COMPILE_FLAG]) +AC_REQUIRE([AX_APPEND_FLAG]) +for flag in $1; do + AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3]) +done +])dnl AX_APPEND_COMPILE_FLAGS diff --git a/deps/cares/m4/ax_append_flag.m4 b/deps/cares/m4/ax_append_flag.m4 new file mode 100644 index 00000000000000..1d38b76fb8e157 --- /dev/null +++ b/deps/cares/m4/ax_append_flag.m4 @@ -0,0 +1,69 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_append_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE]) +# +# DESCRIPTION +# +# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space +# added in between. +# +# If FLAGS-VARIABLE is not specified, the current language's flags (e.g. +# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains +# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly +# FLAG. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 2 + +AC_DEFUN([AX_APPEND_FLAG], +[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX +AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])dnl +AS_VAR_SET_IF(FLAGS, + [case " AS_VAR_GET(FLAGS) " in + *" $1 "*) + AC_RUN_LOG([: FLAGS already contains $1]) + ;; + *) + AC_RUN_LOG([: FLAGS="$FLAGS $1"]) + AS_VAR_SET(FLAGS, ["AS_VAR_GET(FLAGS) $1"]) + ;; + esac], + [AS_VAR_SET(FLAGS,["$1"])]) +AS_VAR_POPDEF([FLAGS])dnl +])dnl AX_APPEND_FLAG diff --git a/deps/cares/m4/ax_check_compile_flag.m4 b/deps/cares/m4/ax_check_compile_flag.m4 new file mode 100644 index 00000000000000..c3a8d695a1bcda --- /dev/null +++ b/deps/cares/m4/ax_check_compile_flag.m4 @@ -0,0 +1,72 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) +# +# DESCRIPTION +# +# Check whether the given FLAG works with the current language's compiler +# or gives an error. (Warnings, however, are ignored) +# +# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on +# success/failure. +# +# If EXTRA-FLAGS is defined, it is added to the current language's default +# flags (e.g. CFLAGS) when the check is done. The check is thus made with +# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to +# force the compiler to issue an error when a bad flag is given. +# +# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this +# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# Copyright (c) 2011 Maarten Bosmans +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 2 + +AC_DEFUN([AX_CHECK_COMPILE_FLAG], +[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX +AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl +AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ + ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS + _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], + [AS_VAR_SET(CACHEVAR,[yes])], + [AS_VAR_SET(CACHEVAR,[no])]) + _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) +AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], + [m4_default([$2], :)], + [m4_default([$3], :)]) +AS_VAR_POPDEF([CACHEVAR])dnl +])dnl AX_CHECK_COMPILE_FLAGS diff --git a/deps/cares/m4/cares-compilers.m4 b/deps/cares/m4/cares-compilers.m4 index e11b35c33ef1bb..ffce98165031fd 100644 --- a/deps/cares/m4/cares-compilers.m4 +++ b/deps/cares/m4/cares-compilers.m4 @@ -852,27 +852,13 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ # if test "$want_warnings" = "yes"; then tmp_CFLAGS="$tmp_CFLAGS -pedantic" - tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra" - tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings" - tmp_CFLAGS="$tmp_CFLAGS -Wshadow" - tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs" - tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations" - tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes" + tmp_CFLAGS="$tmp_CFLAGS -Winline" tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" - tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal" tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare" - tmp_CFLAGS="$tmp_CFLAGS -Wundef" tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" - tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes" - tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement" - tmp_CFLAGS="$tmp_CFLAGS -Wcast-align" + tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels" tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" tmp_CFLAGS="$tmp_CFLAGS -Wshorten-64-to-32" - # - dnl Only clang 1.1 or later - if test "$compiler_num" -ge "101"; then - tmp_CFLAGS="$tmp_CFLAGS -Wunused" - fi fi ;; # @@ -896,25 +882,14 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ fi # dnl Set of options we believe *ALL* gcc versions support: - tmp_CFLAGS="$tmp_CFLAGS -Wall -W" - # - dnl Only gcc 1.4 or later - if test "$compiler_num" -ge "104"; then - tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings" - dnl If not cross-compiling with a gcc older than 3.0 - if test "x$cross_compiling" != "xyes" || - test "$compiler_num" -ge "300"; then - tmp_CFLAGS="$tmp_CFLAGS -Wunused -Wshadow" - fi - fi + tmp_CFLAGS="$tmp_CFLAGS -W" # dnl Only gcc 2.7 or later if test "$compiler_num" -ge "207"; then - tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs" + tmp_CFLAGS="$tmp_CFLAGS -Winline" dnl If not cross-compiling with a gcc older than 3.0 if test "x$cross_compiling" != "xyes" || test "$compiler_num" -ge "300"; then - tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations" tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes" fi fi @@ -926,12 +901,7 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ # dnl Only gcc 2.96 or later if test "$compiler_num" -ge "296"; then - tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal" tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare" - dnl -Wundef used only if gcc is 2.96 or later since we get - dnl lots of "`_POSIX_C_SOURCE' is not defined" in system - dnl headers with gcc 2.95.4 on FreeBSD 4.9 - tmp_CFLAGS="$tmp_CFLAGS -Wundef" fi # dnl Only gcc 2.97 or later @@ -950,12 +920,7 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ # dnl Only gcc 3.3 or later if test "$compiler_num" -ge "303"; then - tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes" - fi - # - dnl Only gcc 3.4 or later - if test "$compiler_num" -ge "304"; then - tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement" + tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels" fi # dnl Only gcc 4.0 or later @@ -963,17 +928,12 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3" fi # - dnl Only gcc 4.2 or later - if test "$compiler_num" -ge "402"; then - tmp_CFLAGS="$tmp_CFLAGS -Wcast-align" - fi - # dnl Only gcc 4.3 or later if test "$compiler_num" -ge "403"; then tmp_CFLAGS="$tmp_CFLAGS -Wtype-limits -Wold-style-declaration" tmp_CFLAGS="$tmp_CFLAGS -Wmissing-parameter-type -Wempty-body" tmp_CFLAGS="$tmp_CFLAGS -Wclobbered -Wignored-qualifiers" - tmp_CFLAGS="$tmp_CFLAGS -Wconversion -Wno-sign-conversion -Wvla" + tmp_CFLAGS="$tmp_CFLAGS -Wno-sign-conversion" fi # dnl Only gcc 4.5 or later @@ -1025,7 +985,7 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ if test "$want_warnings" = "yes"; then if test "$compiler_num" -gt "600"; then dnl Show errors, warnings, and remarks - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall -w2" + tmp_CPPFLAGS="$tmp_CPPFLAGS -w2" dnl Perform extra compile-time code checking tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcheck" dnl Warn on nested comments @@ -1036,12 +996,8 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wmissing-prototypes" dnl Enable warnings for 64-bit portability issues tmp_CPPFLAGS="$tmp_CPPFLAGS -Wp64" - dnl Enable warnings for questionable pointer arithmetic - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wpointer-arith" dnl Check for function return typw issues tmp_CPPFLAGS="$tmp_CPPFLAGS -Wreturn-type" - dnl Warn on variable declarations hiding a previous one - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wshadow" dnl Warn when a variable is used before initialized tmp_CPPFLAGS="$tmp_CPPFLAGS -Wuninitialized" dnl Warn if a declared function is not used @@ -1109,9 +1065,7 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ # if test "$want_warnings" = "yes"; then dnl Activate all warnings - tmp_CFLAGS="$tmp_CFLAGS -Wall" - dnl Make string constants be of type const char * - tmp_CFLAGS="$tmp_CFLAGS -Wwrite-strings" + tmp_CFLAGS="$tmp_CFLAGS" dnl Warn use of unsupported GCC features ignored by TCC tmp_CFLAGS="$tmp_CFLAGS -Wunsupported" fi @@ -1121,7 +1075,7 @@ AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [ # if test "$want_warnings" = "yes"; then dnl Issue all warnings - tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra" + tmp_CFLAGS="$tmp_CFLAGS" fi ;; # diff --git a/deps/cares/m4/cares-confopts.m4 b/deps/cares/m4/cares-confopts.m4 index 0c6f1484fb232a..1a42eb3b72b1b1 100644 --- a/deps/cares/m4/cares-confopts.m4 +++ b/deps/cares/m4/cares-confopts.m4 @@ -229,21 +229,16 @@ AC_DEFUN([CARES_CHECK_OPTION_WARNINGS], [ AC_BEFORE([$0],[CARES_CHECK_OPTION_WERROR])dnl AC_BEFORE([$0],[XC_CHECK_PROG_CC])dnl AC_MSG_CHECKING([whether to enable strict compiler warnings]) - OPT_COMPILER_WARNINGS="default" + OPT_COMPILER_WARNINGS="yes" AC_ARG_ENABLE(warnings, AS_HELP_STRING([--enable-warnings],[Enable strict compiler warnings]) AS_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]), - OPT_COMPILER_WARNINGS=$enableval) + OPT_COMPILER_WARNINGS=yes) case "$OPT_COMPILER_WARNINGS" in no) dnl --disable-warnings option used want_warnings="no" ;; - default) - dnl configure option not specified, so - dnl use same setting as --enable-debug - want_warnings="$want_debug" - ;; *) dnl --enable-warnings option used want_warnings="yes" diff --git a/deps/cares/src/Makefile.in b/deps/cares/src/Makefile.in index af4e680b76afdb..7ac8b7c28cd17e 100644 --- a/deps/cares/src/Makefile.in +++ b/deps/cares/src/Makefile.in @@ -93,6 +93,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ + $(top_srcdir)/m4/ax_append_compile_flags.m4 \ + $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ diff --git a/deps/cares/src/lib/CMakeLists.txt b/deps/cares/src/lib/CMakeLists.txt index 34dc9c3d68afed..7cb37f166d7251 100644 --- a/deps/cares/src/lib/CMakeLists.txt +++ b/deps/cares/src/lib/CMakeLists.txt @@ -34,8 +34,16 @@ IF (CARES_SHARED) COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} SOVERSION ${CARES_LIB_VERSION_MAJOR} VERSION "${CARES_LIB_VERSION_MAJOR}.${CARES_LIB_VERSION_MINOR}.${CARES_LIB_VERSION_RELEASE}" + C_STANDARD 90 ) + IF (CARES_SYMBOL_HIDING) + SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES + C_VISIBILITY_PRESET hidden + VISIBILITY_INLINES_HIDDEN YES + ) + ENDIF () + TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME} PUBLIC "$" "$" @@ -78,6 +86,7 @@ IF (CARES_STATIC) OUTPUT_NAME cares${STATIC_SUFFIX} COMPILE_PDB_NAME cares${STATIC_SUFFIX} COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + C_STANDARD 90 ) IF (CARES_STATIC_PIC) diff --git a/deps/cares/src/lib/Makefile.in b/deps/cares/src/lib/Makefile.in index 0dd3c19661cdb0..14987278002883 100644 --- a/deps/cares/src/lib/Makefile.in +++ b/deps/cares/src/lib/Makefile.in @@ -15,7 +15,7 @@ @SET_MAKE@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Sat Oct 7 13:47:45 CEST 2023 +# from AX_AM_MACROS_STATIC on Thu Oct 26 10:36:46 CEST 2023 # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT @@ -107,6 +107,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ + $(top_srcdir)/m4/ax_append_compile_flags.m4 \ + $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ @@ -166,17 +169,18 @@ LTLIBRARIES = $(lib_LTLIBRARIES) libcares_la_LIBADD = am__objects_1 = libcares_la-ares__addrinfo2hostent.lo \ libcares_la-ares__addrinfo_localhost.lo \ - libcares_la-ares__close_sockets.lo \ + libcares_la-ares__buf.lo libcares_la-ares__close_sockets.lo \ libcares_la-ares__get_hostent.lo libcares_la-ares__htable.lo \ libcares_la-ares__htable_asvp.lo \ libcares_la-ares__htable_stvp.lo libcares_la-ares__llist.lo \ libcares_la-ares__parse_into_addrinfo.lo \ - libcares_la-ares__buf.lo libcares_la-ares__readaddrinfo.lo \ - libcares_la-ares__slist.lo libcares_la-ares__sortaddrinfo.lo \ - libcares_la-ares__read_line.lo libcares_la-ares__timeval.lo \ + libcares_la-ares__read_line.lo \ + libcares_la-ares__readaddrinfo.lo libcares_la-ares__slist.lo \ + libcares_la-ares__sortaddrinfo.lo libcares_la-ares__timeval.lo \ libcares_la-ares_android.lo libcares_la-ares_cancel.lo \ libcares_la-ares_data.lo libcares_la-ares_destroy.lo \ - libcares_la-ares_expand_name.lo \ + libcares_la-ares_dns_mapping.lo libcares_la-ares_dns_parse.lo \ + libcares_la-ares_dns_record.lo libcares_la-ares_expand_name.lo \ libcares_la-ares_expand_string.lo libcares_la-ares_fds.lo \ libcares_la-ares_free_hostent.lo \ libcares_la-ares_free_string.lo \ @@ -186,8 +190,8 @@ am__objects_1 = libcares_la-ares__addrinfo2hostent.lo \ libcares_la-ares_gethostbyname.lo \ libcares_la-ares_getnameinfo.lo libcares_la-ares_getsock.lo \ libcares_la-ares_init.lo libcares_la-ares_library_init.lo \ - libcares_la-ares_mkquery.lo libcares_la-ares_create_query.lo \ - libcares_la-ares_nowarn.lo libcares_la-ares_options.lo \ + libcares_la-ares_math.lo libcares_la-ares_mkquery.lo \ + libcares_la-ares_create_query.lo libcares_la-ares_options.lo \ libcares_la-ares_parse_a_reply.lo \ libcares_la-ares_parse_aaaa_reply.lo \ libcares_la-ares_parse_caa_reply.lo \ @@ -202,7 +206,7 @@ am__objects_1 = libcares_la-ares__addrinfo2hostent.lo \ libcares_la-ares_platform.lo libcares_la-ares_process.lo \ libcares_la-ares_query.lo libcares_la-ares_rand.lo \ libcares_la-ares_search.lo libcares_la-ares_send.lo \ - libcares_la-ares_strcasecmp.lo libcares_la-ares_strdup.lo \ + libcares_la-ares_strcasecmp.lo libcares_la-ares_str.lo \ libcares_la-ares_strerror.lo libcares_la-ares_strsplit.lo \ libcares_la-ares_timeout.lo libcares_la-ares_version.lo \ libcares_la-bitncmp.lo libcares_la-inet_net_pton.lo \ @@ -253,6 +257,9 @@ am__depfiles_remade = \ ./$(DEPDIR)/libcares_la-ares_create_query.Plo \ ./$(DEPDIR)/libcares_la-ares_data.Plo \ ./$(DEPDIR)/libcares_la-ares_destroy.Plo \ + ./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo \ + ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo \ + ./$(DEPDIR)/libcares_la-ares_dns_record.Plo \ ./$(DEPDIR)/libcares_la-ares_expand_name.Plo \ ./$(DEPDIR)/libcares_la-ares_expand_string.Plo \ ./$(DEPDIR)/libcares_la-ares_fds.Plo \ @@ -267,8 +274,8 @@ am__depfiles_remade = \ ./$(DEPDIR)/libcares_la-ares_getsock.Plo \ ./$(DEPDIR)/libcares_la-ares_init.Plo \ ./$(DEPDIR)/libcares_la-ares_library_init.Plo \ + ./$(DEPDIR)/libcares_la-ares_math.Plo \ ./$(DEPDIR)/libcares_la-ares_mkquery.Plo \ - ./$(DEPDIR)/libcares_la-ares_nowarn.Plo \ ./$(DEPDIR)/libcares_la-ares_options.Plo \ ./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo \ ./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo \ @@ -287,8 +294,8 @@ am__depfiles_remade = \ ./$(DEPDIR)/libcares_la-ares_rand.Plo \ ./$(DEPDIR)/libcares_la-ares_search.Plo \ ./$(DEPDIR)/libcares_la-ares_send.Plo \ + ./$(DEPDIR)/libcares_la-ares_str.Plo \ ./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo \ - ./$(DEPDIR)/libcares_la-ares_strdup.Plo \ ./$(DEPDIR)/libcares_la-ares_strerror.Plo \ ./$(DEPDIR)/libcares_la-ares_strsplit.Plo \ ./$(DEPDIR)/libcares_la-ares_timeout.Plo \ @@ -587,6 +594,7 @@ libcares_la_CFLAGS = $(AM_CFLAGS) $(libcares_la_CFLAGS_EXTRA) libcares_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcares_la_CPPFLAGS_EXTRA) CSOURCES = ares__addrinfo2hostent.c \ ares__addrinfo_localhost.c \ + ares__buf.c \ ares__close_sockets.c \ ares__get_hostent.c \ ares__htable.c \ @@ -594,16 +602,18 @@ CSOURCES = ares__addrinfo2hostent.c \ ares__htable_stvp.c \ ares__llist.c \ ares__parse_into_addrinfo.c \ - ares__buf.c \ + ares__read_line.c \ ares__readaddrinfo.c \ - ares__slist.c \ + ares__slist.c \ ares__sortaddrinfo.c \ - ares__read_line.c \ ares__timeval.c \ ares_android.c \ ares_cancel.c \ ares_data.c \ ares_destroy.c \ + ares_dns_mapping.c \ + ares_dns_parse.c \ + ares_dns_record.c \ ares_expand_name.c \ ares_expand_string.c \ ares_fds.c \ @@ -618,9 +628,9 @@ CSOURCES = ares__addrinfo2hostent.c \ ares_getsock.c \ ares_init.c \ ares_library_init.c \ + ares_math.c \ ares_mkquery.c \ ares_create_query.c \ - ares_nowarn.c \ ares_options.c \ ares_parse_a_reply.c \ ares_parse_aaaa_reply.c \ @@ -640,7 +650,7 @@ CSOURCES = ares__addrinfo2hostent.c \ ares_search.c \ ares_send.c \ ares_strcasecmp.c \ - ares_strdup.c \ + ares_str.c \ ares_strerror.c \ ares_strsplit.c \ ares_timeout.c \ @@ -650,23 +660,23 @@ CSOURCES = ares__addrinfo2hostent.c \ inet_ntop.c \ windows_port.c -HHEADERS = ares__htable.h \ +HHEADERS = ares__buf.h \ + ares__htable.h \ ares__htable_asvp.h \ ares__htable_stvp.h \ ares__llist.h \ - ares__buf.h \ ares__slist.h \ ares_android.h \ ares_data.h \ + ares_dns_record.h \ ares_getenv.h \ ares_inet_net_pton.h \ ares_iphlpapi.h \ ares_ipv6.h \ - ares_nowarn.h \ ares_platform.h \ ares_private.h \ ares_strcasecmp.h \ - ares_strdup.h \ + ares_str.h \ ares_strsplit.h \ bitncmp.h \ ares_setup.h \ @@ -790,6 +800,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_create_query.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_data.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_destroy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_parse.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_record.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_expand_name.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_expand_string.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_fds.Plo@am__quote@ # am--include-marker @@ -804,8 +817,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_getsock.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_init.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_library_init.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_math.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_mkquery.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_nowarn.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_options.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo@am__quote@ # am--include-marker @@ -824,8 +837,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_rand.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_search.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_send.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_str.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strdup.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strerror.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strsplit.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_timeout.Plo@am__quote@ # am--include-marker @@ -879,6 +892,13 @@ libcares_la-ares__addrinfo_localhost.lo: ares__addrinfo_localhost.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__addrinfo_localhost.lo `test -f 'ares__addrinfo_localhost.c' || echo '$(srcdir)/'`ares__addrinfo_localhost.c +libcares_la-ares__buf.lo: ares__buf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__buf.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__buf.Tpo -c -o libcares_la-ares__buf.lo `test -f 'ares__buf.c' || echo '$(srcdir)/'`ares__buf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__buf.Tpo $(DEPDIR)/libcares_la-ares__buf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__buf.c' object='libcares_la-ares__buf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__buf.lo `test -f 'ares__buf.c' || echo '$(srcdir)/'`ares__buf.c + libcares_la-ares__close_sockets.lo: ares__close_sockets.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__close_sockets.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__close_sockets.Tpo -c -o libcares_la-ares__close_sockets.lo `test -f 'ares__close_sockets.c' || echo '$(srcdir)/'`ares__close_sockets.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__close_sockets.Tpo $(DEPDIR)/libcares_la-ares__close_sockets.Plo @@ -928,12 +948,12 @@ libcares_la-ares__parse_into_addrinfo.lo: ares__parse_into_addrinfo.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__parse_into_addrinfo.lo `test -f 'ares__parse_into_addrinfo.c' || echo '$(srcdir)/'`ares__parse_into_addrinfo.c -libcares_la-ares__buf.lo: ares__buf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__buf.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__buf.Tpo -c -o libcares_la-ares__buf.lo `test -f 'ares__buf.c' || echo '$(srcdir)/'`ares__buf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__buf.Tpo $(DEPDIR)/libcares_la-ares__buf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__buf.c' object='libcares_la-ares__buf.lo' libtool=yes @AMDEPBACKSLASH@ +libcares_la-ares__read_line.lo: ares__read_line.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__read_line.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__read_line.Tpo -c -o libcares_la-ares__read_line.lo `test -f 'ares__read_line.c' || echo '$(srcdir)/'`ares__read_line.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__read_line.Tpo $(DEPDIR)/libcares_la-ares__read_line.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__read_line.c' object='libcares_la-ares__read_line.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__buf.lo `test -f 'ares__buf.c' || echo '$(srcdir)/'`ares__buf.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__read_line.lo `test -f 'ares__read_line.c' || echo '$(srcdir)/'`ares__read_line.c libcares_la-ares__readaddrinfo.lo: ares__readaddrinfo.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__readaddrinfo.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__readaddrinfo.Tpo -c -o libcares_la-ares__readaddrinfo.lo `test -f 'ares__readaddrinfo.c' || echo '$(srcdir)/'`ares__readaddrinfo.c @@ -956,13 +976,6 @@ libcares_la-ares__sortaddrinfo.lo: ares__sortaddrinfo.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__sortaddrinfo.lo `test -f 'ares__sortaddrinfo.c' || echo '$(srcdir)/'`ares__sortaddrinfo.c -libcares_la-ares__read_line.lo: ares__read_line.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__read_line.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__read_line.Tpo -c -o libcares_la-ares__read_line.lo `test -f 'ares__read_line.c' || echo '$(srcdir)/'`ares__read_line.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__read_line.Tpo $(DEPDIR)/libcares_la-ares__read_line.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares__read_line.c' object='libcares_la-ares__read_line.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__read_line.lo `test -f 'ares__read_line.c' || echo '$(srcdir)/'`ares__read_line.c - libcares_la-ares__timeval.lo: ares__timeval.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__timeval.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__timeval.Tpo -c -o libcares_la-ares__timeval.lo `test -f 'ares__timeval.c' || echo '$(srcdir)/'`ares__timeval.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__timeval.Tpo $(DEPDIR)/libcares_la-ares__timeval.Plo @@ -998,6 +1011,27 @@ libcares_la-ares_destroy.lo: ares_destroy.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_destroy.lo `test -f 'ares_destroy.c' || echo '$(srcdir)/'`ares_destroy.c +libcares_la-ares_dns_mapping.lo: ares_dns_mapping.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_mapping.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_mapping.Tpo -c -o libcares_la-ares_dns_mapping.lo `test -f 'ares_dns_mapping.c' || echo '$(srcdir)/'`ares_dns_mapping.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_mapping.Tpo $(DEPDIR)/libcares_la-ares_dns_mapping.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_mapping.c' object='libcares_la-ares_dns_mapping.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_mapping.lo `test -f 'ares_dns_mapping.c' || echo '$(srcdir)/'`ares_dns_mapping.c + +libcares_la-ares_dns_parse.lo: ares_dns_parse.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_parse.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_parse.Tpo -c -o libcares_la-ares_dns_parse.lo `test -f 'ares_dns_parse.c' || echo '$(srcdir)/'`ares_dns_parse.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_parse.Tpo $(DEPDIR)/libcares_la-ares_dns_parse.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_parse.c' object='libcares_la-ares_dns_parse.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_parse.lo `test -f 'ares_dns_parse.c' || echo '$(srcdir)/'`ares_dns_parse.c + +libcares_la-ares_dns_record.lo: ares_dns_record.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_dns_record.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_dns_record.Tpo -c -o libcares_la-ares_dns_record.lo `test -f 'ares_dns_record.c' || echo '$(srcdir)/'`ares_dns_record.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_dns_record.Tpo $(DEPDIR)/libcares_la-ares_dns_record.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_dns_record.c' object='libcares_la-ares_dns_record.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_record.lo `test -f 'ares_dns_record.c' || echo '$(srcdir)/'`ares_dns_record.c + libcares_la-ares_expand_name.lo: ares_expand_name.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_expand_name.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_expand_name.Tpo -c -o libcares_la-ares_expand_name.lo `test -f 'ares_expand_name.c' || echo '$(srcdir)/'`ares_expand_name.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_expand_name.Tpo $(DEPDIR)/libcares_la-ares_expand_name.Plo @@ -1096,6 +1130,13 @@ libcares_la-ares_library_init.lo: ares_library_init.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_library_init.lo `test -f 'ares_library_init.c' || echo '$(srcdir)/'`ares_library_init.c +libcares_la-ares_math.lo: ares_math.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_math.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_math.Tpo -c -o libcares_la-ares_math.lo `test -f 'ares_math.c' || echo '$(srcdir)/'`ares_math.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_math.Tpo $(DEPDIR)/libcares_la-ares_math.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_math.c' object='libcares_la-ares_math.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_math.lo `test -f 'ares_math.c' || echo '$(srcdir)/'`ares_math.c + libcares_la-ares_mkquery.lo: ares_mkquery.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_mkquery.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_mkquery.Tpo -c -o libcares_la-ares_mkquery.lo `test -f 'ares_mkquery.c' || echo '$(srcdir)/'`ares_mkquery.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_mkquery.Tpo $(DEPDIR)/libcares_la-ares_mkquery.Plo @@ -1110,13 +1151,6 @@ libcares_la-ares_create_query.lo: ares_create_query.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_create_query.lo `test -f 'ares_create_query.c' || echo '$(srcdir)/'`ares_create_query.c -libcares_la-ares_nowarn.lo: ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_nowarn.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_nowarn.Tpo -c -o libcares_la-ares_nowarn.lo `test -f 'ares_nowarn.c' || echo '$(srcdir)/'`ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_nowarn.Tpo $(DEPDIR)/libcares_la-ares_nowarn.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_nowarn.c' object='libcares_la-ares_nowarn.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_nowarn.lo `test -f 'ares_nowarn.c' || echo '$(srcdir)/'`ares_nowarn.c - libcares_la-ares_options.lo: ares_options.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_options.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_options.Tpo -c -o libcares_la-ares_options.lo `test -f 'ares_options.c' || echo '$(srcdir)/'`ares_options.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_options.Tpo $(DEPDIR)/libcares_la-ares_options.Plo @@ -1250,12 +1284,12 @@ libcares_la-ares_strcasecmp.lo: ares_strcasecmp.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_strcasecmp.lo `test -f 'ares_strcasecmp.c' || echo '$(srcdir)/'`ares_strcasecmp.c -libcares_la-ares_strdup.lo: ares_strdup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_strdup.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_strdup.Tpo -c -o libcares_la-ares_strdup.lo `test -f 'ares_strdup.c' || echo '$(srcdir)/'`ares_strdup.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_strdup.Tpo $(DEPDIR)/libcares_la-ares_strdup.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_strdup.c' object='libcares_la-ares_strdup.lo' libtool=yes @AMDEPBACKSLASH@ +libcares_la-ares_str.lo: ares_str.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_str.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_str.Tpo -c -o libcares_la-ares_str.lo `test -f 'ares_str.c' || echo '$(srcdir)/'`ares_str.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_str.Tpo $(DEPDIR)/libcares_la-ares_str.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ares_str.c' object='libcares_la-ares_str.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_strdup.lo `test -f 'ares_strdup.c' || echo '$(srcdir)/'`ares_strdup.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_str.lo `test -f 'ares_str.c' || echo '$(srcdir)/'`ares_str.c libcares_la-ares_strerror.lo: ares_strerror.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_strerror.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_strerror.Tpo -c -o libcares_la-ares_strerror.lo `test -f 'ares_strerror.c' || echo '$(srcdir)/'`ares_strerror.c @@ -1540,6 +1574,9 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_create_query.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_data.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_destroy.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_dns_record.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_expand_name.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_expand_string.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_fds.Plo @@ -1554,8 +1591,8 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_getsock.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_init.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_library_init.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_math.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_mkquery.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_nowarn.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_options.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo @@ -1574,8 +1611,8 @@ distclean: distclean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_rand.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_search.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_send.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_str.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_strdup.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strerror.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strsplit.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_timeout.Plo @@ -1649,6 +1686,9 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_create_query.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_data.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_destroy.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_dns_mapping.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_dns_record.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_expand_name.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_expand_string.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_fds.Plo @@ -1663,8 +1703,8 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_getsock.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_init.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_library_init.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_math.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_mkquery.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_nowarn.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_options.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_parse_a_reply.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_parse_aaaa_reply.Plo @@ -1683,8 +1723,8 @@ maintainer-clean: maintainer-clean-recursive -rm -f ./$(DEPDIR)/libcares_la-ares_rand.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_search.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_send.Plo + -rm -f ./$(DEPDIR)/libcares_la-ares_str.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strcasecmp.Plo - -rm -f ./$(DEPDIR)/libcares_la-ares_strdup.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strerror.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_strsplit.Plo -rm -f ./$(DEPDIR)/libcares_la-ares_timeout.Plo diff --git a/deps/cares/src/lib/Makefile.inc b/deps/cares/src/lib/Makefile.inc index ef0a8aca98104a..36de54afc082cd 100644 --- a/deps/cares/src/lib/Makefile.inc +++ b/deps/cares/src/lib/Makefile.inc @@ -3,6 +3,7 @@ CSOURCES = ares__addrinfo2hostent.c \ ares__addrinfo_localhost.c \ + ares__buf.c \ ares__close_sockets.c \ ares__get_hostent.c \ ares__htable.c \ @@ -10,16 +11,18 @@ CSOURCES = ares__addrinfo2hostent.c \ ares__htable_stvp.c \ ares__llist.c \ ares__parse_into_addrinfo.c \ - ares__buf.c \ + ares__read_line.c \ ares__readaddrinfo.c \ - ares__slist.c \ + ares__slist.c \ ares__sortaddrinfo.c \ - ares__read_line.c \ ares__timeval.c \ ares_android.c \ ares_cancel.c \ ares_data.c \ ares_destroy.c \ + ares_dns_mapping.c \ + ares_dns_parse.c \ + ares_dns_record.c \ ares_expand_name.c \ ares_expand_string.c \ ares_fds.c \ @@ -34,9 +37,9 @@ CSOURCES = ares__addrinfo2hostent.c \ ares_getsock.c \ ares_init.c \ ares_library_init.c \ + ares_math.c \ ares_mkquery.c \ ares_create_query.c \ - ares_nowarn.c \ ares_options.c \ ares_parse_a_reply.c \ ares_parse_aaaa_reply.c \ @@ -56,7 +59,7 @@ CSOURCES = ares__addrinfo2hostent.c \ ares_search.c \ ares_send.c \ ares_strcasecmp.c \ - ares_strdup.c \ + ares_str.c \ ares_strerror.c \ ares_strsplit.c \ ares_timeout.c \ @@ -66,26 +69,25 @@ CSOURCES = ares__addrinfo2hostent.c \ inet_ntop.c \ windows_port.c -HHEADERS = ares__htable.h \ +HHEADERS = ares__buf.h \ + ares__htable.h \ ares__htable_asvp.h \ ares__htable_stvp.h \ ares__llist.h \ - ares__buf.h \ ares__slist.h \ ares_android.h \ ares_data.h \ + ares_dns_record.h \ ares_getenv.h \ ares_inet_net_pton.h \ ares_iphlpapi.h \ ares_ipv6.h \ - ares_nowarn.h \ ares_platform.h \ ares_private.h \ ares_strcasecmp.h \ - ares_strdup.h \ + ares_str.h \ ares_strsplit.h \ bitncmp.h \ ares_setup.h \ setup_once.h - diff --git a/deps/cares/src/lib/ares__addrinfo2hostent.c b/deps/cares/src/lib/ares__addrinfo2hostent.c index 1798fc69fa2abc..ec1121778978c7 100644 --- a/deps/cares/src/lib/ares__addrinfo2hostent.c +++ b/deps/cares/src/lib/ares__addrinfo2hostent.c @@ -54,147 +54,143 @@ #include "ares_inet_net_pton.h" #include "ares_private.h" -int ares__addrinfo2hostent(const struct ares_addrinfo *ai, int family, - struct hostent **host) +ares_status_t ares__addrinfo2hostent(const struct ares_addrinfo *ai, int family, + struct hostent **host) { - struct ares_addrinfo_node *next; + struct ares_addrinfo_node *next; struct ares_addrinfo_cname *next_cname; - char **aliases = NULL; - char *addrs = NULL; - int naliases = 0, naddrs = 0, alias = 0, i; - - if (ai == NULL || host == NULL) + char **aliases = NULL; + char *addrs = NULL; + size_t naliases = 0; + size_t naddrs = 0; + size_t alias = 0; + size_t i; + + if (ai == NULL || host == NULL) { return ARES_EBADQUERY; - - *host = ares_malloc(sizeof(**host)); - if (!(*host)) - { - goto enomem; - } - memset(*host, 0, sizeof(**host)); + } /* Use the first node of the response as the family, since hostent can only * represent one family. We assume getaddrinfo() returned a sorted list if * the user requested AF_UNSPEC. */ - if (family == AF_UNSPEC && ai->nodes) + if (family == AF_UNSPEC && ai->nodes) { family = ai->nodes->ai_family; + } + + if (family != AF_INET && family != AF_INET6) { + return ARES_EBADQUERY; + } + + *host = ares_malloc(sizeof(**host)); + if (!(*host)) { + goto enomem; + } + memset(*host, 0, sizeof(**host)); next = ai->nodes; - while (next) - { - if(next->ai_family == family) - { - ++naddrs; - } - next = next->ai_next; + while (next) { + if (next->ai_family == family) { + ++naddrs; } + next = next->ai_next; + } next_cname = ai->cnames; - while (next_cname) - { - if(next_cname->alias) - ++naliases; - next_cname = next_cname->next; + while (next_cname) { + if (next_cname->alias) { + ++naliases; } + next_cname = next_cname->next; + } aliases = ares_malloc((naliases + 1) * sizeof(char *)); - if (!aliases) - { - goto enomem; - } + if (!aliases) { + goto enomem; + } (*host)->h_aliases = aliases; memset(aliases, 0, (naliases + 1) * sizeof(char *)); - if (naliases) - { - next_cname = ai->cnames; - while (next_cname) - { - if(next_cname->alias) { - aliases[alias] = ares_strdup(next_cname->alias); - if (!aliases[alias]) { - goto enomem; - } - alias++; - } - next_cname = next_cname->next; - } + if (naliases) { + for (next_cname = ai->cnames; next_cname != NULL; + next_cname = next_cname->next) { + if (next_cname->alias == NULL) { + continue; + } + aliases[alias] = ares_strdup(next_cname->alias); + if (!aliases[alias]) { + goto enomem; + } + alias++; } + } (*host)->h_addr_list = ares_malloc((naddrs + 1) * sizeof(char *)); - if (!(*host)->h_addr_list) - { - goto enomem; - } + if (!(*host)->h_addr_list) { + goto enomem; + } memset((*host)->h_addr_list, 0, (naddrs + 1) * sizeof(char *)); - if (ai->cnames) - { - (*host)->h_name = ares_strdup(ai->cnames->name); - if ((*host)->h_name == NULL && ai->cnames->name) - { - goto enomem; - } + if (ai->cnames) { + (*host)->h_name = ares_strdup(ai->cnames->name); + if ((*host)->h_name == NULL && ai->cnames->name) { + goto enomem; } - else - { - (*host)->h_name = ares_strdup(ai->name); - if ((*host)->h_name == NULL && ai->name) - { - goto enomem; - } + } else { + (*host)->h_name = ares_strdup(ai->name); + if ((*host)->h_name == NULL && ai->name) { + goto enomem; } + } (*host)->h_addrtype = family; - (*host)->h_length = (family == AF_INET)? - sizeof(struct in_addr):sizeof(struct ares_in6_addr); - - if (naddrs) - { - addrs = ares_malloc(naddrs * (*host)->h_length); - if (!addrs) - { - goto enomem; - } - - i = 0; - next = ai->nodes; - while (next) - { - if(next->ai_family == family) - { - (*host)->h_addr_list[i] = addrs + (i * (*host)->h_length); - if (family == AF_INET6) - { - memcpy((*host)->h_addr_list[i], - &(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr), - (*host)->h_length); - } - else - { - memcpy((*host)->h_addr_list[i], - &(CARES_INADDR_CAST(struct sockaddr_in *, next->ai_addr)->sin_addr), - (*host)->h_length); - } - ++i; - } - next = next->ai_next; - } - - if (i == 0) - { - ares_free(addrs); - } + + if (family == AF_INET) { + (*host)->h_length = sizeof(struct in_addr); + } + + if (family == AF_INET6) { + (*host)->h_length = sizeof(struct ares_in6_addr); + } + + if (naddrs) { + addrs = ares_malloc(naddrs * (size_t)(*host)->h_length); + if (!addrs) { + goto enomem; + } + + i = 0; + for (next = ai->nodes; next != NULL; next = next->ai_next) { + if (next->ai_family != family) { + continue; + } + (*host)->h_addr_list[i] = addrs + (i * (size_t)(*host)->h_length); + if (family == AF_INET6) { + memcpy( + (*host)->h_addr_list[i], + &(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr), + (size_t)(*host)->h_length); + } + if (family == AF_INET) { + memcpy( + (*host)->h_addr_list[i], + &(CARES_INADDR_CAST(struct sockaddr_in *, next->ai_addr)->sin_addr), + (size_t)(*host)->h_length); + } + ++i; } - if (naddrs == 0 && naliases == 0) - { - ares_free_hostent(*host); - *host = NULL; - return ARES_ENODATA; + if (i == 0) { + ares_free(addrs); } + } + + if (naddrs == 0 && naliases == 0) { + ares_free_hostent(*host); + *host = NULL; + return ARES_ENODATA; + } return ARES_SUCCESS; @@ -204,74 +200,79 @@ int ares__addrinfo2hostent(const struct ares_addrinfo *ai, int family, return ARES_ENOMEM; } - -int ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family, - int req_naddrttls, struct ares_addrttl *addrttls, - struct ares_addr6ttl *addr6ttls, int *naddrttls) +ares_status_t ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family, + size_t req_naddrttls, + struct ares_addrttl *addrttls, + struct ares_addr6ttl *addr6ttls, + size_t *naddrttls) { - struct ares_addrinfo_node *next; + struct ares_addrinfo_node *next; struct ares_addrinfo_cname *next_cname; - int cname_ttl = INT_MAX; + int cname_ttl = INT_MAX; - if (family != AF_INET && family != AF_INET6) + if (family != AF_INET && family != AF_INET6) { return ARES_EBADQUERY; + } - if (ai == NULL || naddrttls == NULL) + if (ai == NULL || naddrttls == NULL) { return ARES_EBADQUERY; + } - if (family == AF_INET && addrttls == NULL) + if (family == AF_INET && addrttls == NULL) { return ARES_EBADQUERY; + } - if (family == AF_INET6 && addr6ttls == NULL) + if (family == AF_INET6 && addr6ttls == NULL) { return ARES_EBADQUERY; + } - if (req_naddrttls == 0) + if (req_naddrttls == 0) { return ARES_EBADQUERY; + } *naddrttls = 0; next_cname = ai->cnames; - while (next_cname) - { - if(next_cname->ttl < cname_ttl) - cname_ttl = next_cname->ttl; - next_cname = next_cname->next; + while (next_cname) { + if (next_cname->ttl < cname_ttl) { + cname_ttl = next_cname->ttl; } + next_cname = next_cname->next; + } - next = ai->nodes; - while (next) - { - if(next->ai_family == family) - { - if (*naddrttls < req_naddrttls) - { - if (family == AF_INET6) - { - if(next->ai_ttl > cname_ttl) - addr6ttls[*naddrttls].ttl = cname_ttl; - else - addr6ttls[*naddrttls].ttl = next->ai_ttl; - - memcpy(&addr6ttls[*naddrttls].ip6addr, - &(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr), - sizeof(struct ares_in6_addr)); - } - else - { - if(next->ai_ttl > cname_ttl) - addrttls[*naddrttls].ttl = cname_ttl; - else - addrttls[*naddrttls].ttl = next->ai_ttl; - memcpy(&addrttls[*naddrttls].ipaddr, - &(CARES_INADDR_CAST(struct sockaddr_in *, next->ai_addr)->sin_addr), - sizeof(struct in_addr)); - } - (*naddrttls)++; - } - } - next = next->ai_next; + for (next = ai->nodes; next != NULL; next = next->ai_next) { + if (next->ai_family != family) { + continue; + } + + if (*naddrttls >= req_naddrttls) { + break; } + if (family == AF_INET6) { + if (next->ai_ttl > cname_ttl) { + addr6ttls[*naddrttls].ttl = cname_ttl; + } else { + addr6ttls[*naddrttls].ttl = next->ai_ttl; + } + + memcpy( + &addr6ttls[*naddrttls].ip6addr, + &(CARES_INADDR_CAST(struct sockaddr_in6 *, next->ai_addr)->sin6_addr), + sizeof(struct ares_in6_addr)); + } else { + if (next->ai_ttl > cname_ttl) { + addrttls[*naddrttls].ttl = cname_ttl; + } else { + addrttls[*naddrttls].ttl = next->ai_ttl; + } + memcpy( + &addrttls[*naddrttls].ipaddr, + &(CARES_INADDR_CAST(struct sockaddr_in *, next->ai_addr)->sin_addr), + sizeof(struct in_addr)); + } + (*naddrttls)++; + } + return ARES_SUCCESS; } - diff --git a/deps/cares/src/lib/ares__addrinfo_localhost.c b/deps/cares/src/lib/ares__addrinfo_localhost.c index a086d3f12fd340..7cdc2f63318b28 100644 --- a/deps/cares/src/lib/ares__addrinfo_localhost.c +++ b/deps/cares/src/lib/ares__addrinfo_localhost.c @@ -38,164 +38,144 @@ #endif #if defined(_WIN32) && defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0600 -#include -#include +# include +# include #endif #include "ares.h" #include "ares_inet_net_pton.h" -#include "ares_nowarn.h" #include "ares_private.h" -int ares_append_ai_node(int aftype, - unsigned short port, - int ttl, - const void *adata, - struct ares_addrinfo_node **nodes) +ares_status_t ares_append_ai_node(int aftype, unsigned short port, + unsigned int ttl, const void *adata, + struct ares_addrinfo_node **nodes) { struct ares_addrinfo_node *node; node = ares__append_addrinfo_node(nodes); - if (!node) - { - return ARES_ENOMEM; - } + if (!node) { + return ARES_ENOMEM; + } memset(node, 0, sizeof(*node)); - if (aftype == AF_INET) - { - struct sockaddr_in *sin = ares_malloc(sizeof(*sin)); - if (!sin) - { - return ARES_ENOMEM; - } - - memset(sin, 0, sizeof(*sin)); - memcpy(&sin->sin_addr.s_addr, adata, sizeof(sin->sin_addr.s_addr)); - sin->sin_family = AF_INET; - sin->sin_port = htons(port); - - node->ai_addr = (struct sockaddr *)sin; - node->ai_family = AF_INET; - node->ai_addrlen = sizeof(*sin); - node->ai_addr = (struct sockaddr *)sin; - node->ai_ttl = ttl; + if (aftype == AF_INET) { + struct sockaddr_in *sin = ares_malloc(sizeof(*sin)); + if (!sin) { + return ARES_ENOMEM; } - if (aftype == AF_INET6) - { - struct sockaddr_in6 *sin6 = ares_malloc(sizeof(*sin6)); - if (!sin6) - { - return ARES_ENOMEM; - } - - memset(sin6, 0, sizeof(*sin6)); - memcpy(&sin6->sin6_addr.s6_addr, adata, sizeof(sin6->sin6_addr.s6_addr)); - sin6->sin6_family = AF_INET6; - sin6->sin6_port = htons(port); - - node->ai_addr = (struct sockaddr *)sin6; - node->ai_family = AF_INET6; - node->ai_addrlen = sizeof(*sin6); - node->ai_addr = (struct sockaddr *)sin6; - node->ai_ttl = ttl; + memset(sin, 0, sizeof(*sin)); + memcpy(&sin->sin_addr.s_addr, adata, sizeof(sin->sin_addr.s_addr)); + sin->sin_family = AF_INET; + sin->sin_port = htons(port); + + node->ai_addr = (struct sockaddr *)sin; + node->ai_family = AF_INET; + node->ai_addrlen = sizeof(*sin); + node->ai_addr = (struct sockaddr *)sin; + node->ai_ttl = (int)ttl; + } + + if (aftype == AF_INET6) { + struct sockaddr_in6 *sin6 = ares_malloc(sizeof(*sin6)); + if (!sin6) { + return ARES_ENOMEM; } + memset(sin6, 0, sizeof(*sin6)); + memcpy(&sin6->sin6_addr.s6_addr, adata, sizeof(sin6->sin6_addr.s6_addr)); + sin6->sin6_family = AF_INET6; + sin6->sin6_port = htons(port); + + node->ai_addr = (struct sockaddr *)sin6; + node->ai_family = AF_INET6; + node->ai_addrlen = sizeof(*sin6); + node->ai_addr = (struct sockaddr *)sin6; + node->ai_ttl = (int)ttl; + } + return ARES_SUCCESS; } - -static int ares__default_loopback_addrs(int aftype, - unsigned short port, - struct ares_addrinfo_node **nodes) +static ares_status_t + ares__default_loopback_addrs(int aftype, unsigned short port, + struct ares_addrinfo_node **nodes) { - int status = ARES_SUCCESS; - - if (aftype == AF_UNSPEC || aftype == AF_INET6) - { - struct ares_in6_addr addr6; - ares_inet_pton(AF_INET6, "::1", &addr6); - status = ares_append_ai_node(AF_INET6, port, 0, &addr6, nodes); - if (status != ARES_SUCCESS) - { - return status; - } + ares_status_t status = ARES_SUCCESS; + + if (aftype == AF_UNSPEC || aftype == AF_INET6) { + struct ares_in6_addr addr6; + ares_inet_pton(AF_INET6, "::1", &addr6); + status = ares_append_ai_node(AF_INET6, port, 0, &addr6, nodes); + if (status != ARES_SUCCESS) { + return status; } + } - if (aftype == AF_UNSPEC || aftype == AF_INET) - { - struct in_addr addr4; - ares_inet_pton(AF_INET, "127.0.0.1", &addr4); - status = ares_append_ai_node(AF_INET, port, 0, &addr4, nodes); - if (status != ARES_SUCCESS) - { - return status; - } + if (aftype == AF_UNSPEC || aftype == AF_INET) { + struct in_addr addr4; + ares_inet_pton(AF_INET, "127.0.0.1", &addr4); + status = ares_append_ai_node(AF_INET, port, 0, &addr4, nodes); + if (status != ARES_SUCCESS) { + return status; } + } return status; } - -static int ares__system_loopback_addrs(int aftype, - unsigned short port, - struct ares_addrinfo_node **nodes) +static ares_status_t + ares__system_loopback_addrs(int aftype, unsigned short port, + struct ares_addrinfo_node **nodes) { -#if defined(_WIN32) && defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0600 && !defined(__WATCOMC__) +#if defined(_WIN32) && defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0600 && \ + !defined(__WATCOMC__) PMIB_UNICASTIPADDRESS_TABLE table; - unsigned int i; - int status; + unsigned int i; + ares_status_t status; *nodes = NULL; - if (GetUnicastIpAddressTable(aftype, &table) != NO_ERROR) + if (GetUnicastIpAddressTable(aftype, &table) != NO_ERROR) { return ARES_ENOTFOUND; + } + + for (i = 0; i < table->NumEntries; i++) { + if (table->Table[i].InterfaceLuid.Info.IfType != + IF_TYPE_SOFTWARE_LOOPBACK) { + continue; + } + + if (table->Table[i].Address.si_family == AF_INET) { + status = + ares_append_ai_node(table->Table[i].Address.si_family, port, 0, + &table->Table[i].Address.Ipv4.sin_addr, nodes); + } else if (table->Table[i].Address.si_family == AF_INET6) { + status = + ares_append_ai_node(table->Table[i].Address.si_family, port, 0, + &table->Table[i].Address.Ipv6.sin6_addr, nodes); + } else { + /* Ignore any others */ + continue; + } - for (i=0; iNumEntries; i++) - { - if (table->Table[i].InterfaceLuid.Info.IfType != - IF_TYPE_SOFTWARE_LOOPBACK) - { - continue; - } - - if (table->Table[i].Address.si_family == AF_INET) - { - status = ares_append_ai_node(table->Table[i].Address.si_family, port, 0, - &table->Table[i].Address.Ipv4.sin_addr, - nodes); - } - else if (table->Table[i].Address.si_family == AF_INET6) - { - status = ares_append_ai_node(table->Table[i].Address.si_family, port, 0, - &table->Table[i].Address.Ipv6.sin6_addr, - nodes); - } - else - { - /* Ignore any others */ - continue; - } - - if (status != ARES_SUCCESS) - { - goto fail; - } + if (status != ARES_SUCCESS) { + goto fail; } + } - if (*nodes == NULL) - status = ARES_ENOTFOUND; + if (*nodes == NULL) { + status = ARES_ENOTFOUND; + } fail: FreeMibTable(table); - if (status != ARES_SUCCESS) - { - ares__freeaddrinfo_nodes(*nodes); - *nodes = NULL; - } + if (status != ARES_SUCCESS) { + ares__freeaddrinfo_nodes(*nodes); + *nodes = NULL; + } return status; @@ -208,14 +188,12 @@ static int ares__system_loopback_addrs(int aftype, #endif } - -int ares__addrinfo_localhost(const char *name, - unsigned short port, - const struct ares_addrinfo_hints *hints, - struct ares_addrinfo *ai) +ares_status_t ares__addrinfo_localhost(const char *name, unsigned short port, + const struct ares_addrinfo_hints *hints, + struct ares_addrinfo *ai) { struct ares_addrinfo_node *nodes = NULL; - int result; + ares_status_t status; /* Validate family */ switch (hints->ai_family) { @@ -228,21 +206,19 @@ int ares__addrinfo_localhost(const char *name, } ai->name = ares_strdup(name); - if(!ai->name) - { - goto enomem; - } + if (!ai->name) { + goto enomem; + } - result = ares__system_loopback_addrs(hints->ai_family, port, &nodes); + status = ares__system_loopback_addrs(hints->ai_family, port, &nodes); - if (result == ARES_ENOTFOUND) - { - result = ares__default_loopback_addrs(hints->ai_family, port, &nodes); - } + if (status == ARES_ENOTFOUND) { + status = ares__default_loopback_addrs(hints->ai_family, port, &nodes); + } ares__addrinfo_cat_nodes(&ai->nodes, nodes); - return result; + return status; enomem: ares__freeaddrinfo_nodes(nodes); diff --git a/deps/cares/src/lib/ares__buf.c b/deps/cares/src/lib/ares__buf.c index 777a5300c9942d..3e064efae02a0b 100644 --- a/deps/cares/src/lib/ares__buf.c +++ b/deps/cares/src/lib/ares__buf.c @@ -33,40 +33,41 @@ #endif struct ares__buf { - const unsigned char *data; /*!< pointer to start of data buffer */ - size_t data_len; /*!< total size of data in buffer */ + const unsigned char *data; /*!< pointer to start of data buffer */ + size_t data_len; /*!< total size of data in buffer */ - unsigned char *alloc_buf; /*!< Pointer to allocated data buffer, - * not used for const buffers */ - size_t alloc_buf_len; /*!< Size of allocated data buffer */ + unsigned char *alloc_buf; /*!< Pointer to allocated data buffer, + * not used for const buffers */ + size_t alloc_buf_len; /*!< Size of allocated data buffer */ - size_t offset; /*!< Current working offset in buffer */ - size_t tag_offset; /*!< Tagged offset in buffer. Uses - * SIZE_MAX if not set. */ + size_t offset; /*!< Current working offset in buffer */ + size_t tag_offset; /*!< Tagged offset in buffer. Uses + * SIZE_MAX if not set. */ }; ares__buf_t *ares__buf_create(void) { - ares__buf_t *buf = ares_malloc(sizeof(*buf)); - if (buf == NULL) + ares__buf_t *buf = ares_malloc_zero(sizeof(*buf)); + if (buf == NULL) { return NULL; + } - memset(buf, 0, sizeof(*buf)); buf->tag_offset = SIZE_MAX; return buf; } - ares__buf_t *ares__buf_create_const(const unsigned char *data, size_t data_len) { ares__buf_t *buf; - if (data == NULL || data_len == 0) + if (data == NULL || data_len == 0) { return NULL; + } buf = ares__buf_create(); - if (buf == NULL) + if (buf == NULL) { return NULL; + } buf->data = data; buf->data_len = data_len; @@ -74,72 +75,78 @@ ares__buf_t *ares__buf_create_const(const unsigned char *data, size_t data_len) return buf; } - void ares__buf_destroy(ares__buf_t *buf) { - if (buf == NULL) + if (buf == NULL) { return; + } ares_free(buf->alloc_buf); ares_free(buf); } - -static int ares__buf_is_const(const ares__buf_t *buf) +static ares_bool_t ares__buf_is_const(const ares__buf_t *buf) { - if (buf == NULL) - return 0; + if (buf == NULL) { + return ARES_FALSE; + } - if (buf->data != NULL && buf->alloc_buf == NULL) - return 1; + if (buf->data != NULL && buf->alloc_buf == NULL) { + return ARES_TRUE; + } - return 0; + return ARES_FALSE; } - -static void ares__buf_reclaim(ares__buf_t *buf) +void ares__buf_reclaim(ares__buf_t *buf) { size_t prefix_size; size_t data_size; - if (buf == NULL) + if (buf == NULL) { return; + } - if (ares__buf_is_const(buf)) + if (ares__buf_is_const(buf)) { return; + } - if (buf->tag_offset != SIZE_MAX) { + if (buf->tag_offset != SIZE_MAX && buf->tag_offset < buf->offset) { prefix_size = buf->tag_offset; } else { prefix_size = buf->offset; } - if (prefix_size == 0) + if (prefix_size == 0) { return; + } data_size = buf->data_len - prefix_size; memmove(buf->alloc_buf, buf->alloc_buf + prefix_size, data_size); - buf->data = buf->alloc_buf; - buf->data_len = data_size; - buf->offset -= prefix_size; - if (buf->tag_offset != SIZE_MAX) + buf->data = buf->alloc_buf; + buf->data_len = data_size; + buf->offset -= prefix_size; + if (buf->tag_offset != SIZE_MAX) { buf->tag_offset -= prefix_size; + } return; } - -static int ares__buf_ensure_space(ares__buf_t *buf, size_t needed_size) +static ares_status_t ares__buf_ensure_space(ares__buf_t *buf, + size_t needed_size) { size_t remaining_size; size_t alloc_size; unsigned char *ptr; - if (buf == NULL) + if (buf == NULL) { return ARES_EFORMERR; + } - if (ares__buf_is_const(buf)) + if (ares__buf_is_const(buf)) { return ARES_EFORMERR; + } /* When calling ares__buf_finish_str() we end up adding a null terminator, * so we want to ensure the size is always sufficient for this as we don't @@ -148,31 +155,35 @@ static int ares__buf_ensure_space(ares__buf_t *buf, size_t needed_size) /* No need to do an expensive move operation, we have enough to just append */ remaining_size = buf->alloc_buf_len - buf->data_len; - if (remaining_size >= needed_size) + if (remaining_size >= needed_size) { return ARES_SUCCESS; + } /* See if just moving consumed data frees up enough space */ ares__buf_reclaim(buf); remaining_size = buf->alloc_buf_len - buf->data_len; - if (remaining_size >= needed_size) + if (remaining_size >= needed_size) { return ARES_SUCCESS; + } alloc_size = buf->alloc_buf_len; /* Not yet started */ - if (alloc_size == 0) + if (alloc_size == 0) { alloc_size = 16; /* Always shifts 1, so ends up being 32 minimum */ + } /* Increase allocation by powers of 2 */ do { - alloc_size <<= 1; - remaining_size = alloc_size - buf->data_len; + alloc_size <<= 1; + remaining_size = alloc_size - buf->data_len; } while (remaining_size < needed_size); ptr = ares_realloc(buf->alloc_buf, alloc_size); - if (ptr == NULL) + if (ptr == NULL) { return ARES_ENOMEM; + } buf->alloc_buf = ptr; buf->alloc_buf_len = alloc_size; @@ -181,75 +192,90 @@ static int ares__buf_ensure_space(ares__buf_t *buf, size_t needed_size) return ARES_SUCCESS; } - -int ares__buf_append(ares__buf_t *buf, const unsigned char *data, - size_t data_len) +ares_status_t ares__buf_append(ares__buf_t *buf, const unsigned char *data, + size_t data_len) { - int status; + ares_status_t status; - if (data == NULL || data_len == 0) + if (data == NULL || data_len == 0) { return ARES_EFORMERR; + } status = ares__buf_ensure_space(buf, data_len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return status; + } memcpy(buf->alloc_buf + buf->data_len, data, data_len); buf->data_len += data_len; return ARES_SUCCESS; } +ares_status_t ares__buf_append_byte(ares__buf_t *buf, unsigned char byte) +{ + return ares__buf_append(buf, &byte, 1); +} unsigned char *ares__buf_append_start(ares__buf_t *buf, size_t *len) { - int status; + ares_status_t status; - if (len == NULL || *len == 0) + if (len == NULL || *len == 0) { return NULL; + } status = ares__buf_ensure_space(buf, *len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } - *len = buf->alloc_buf_len - buf->data_len; + /* -1 for possible null terminator for ares__buf_finish_str() */ + *len = buf->alloc_buf_len - buf->data_len - 1; return buf->alloc_buf + buf->data_len; } - void ares__buf_append_finish(ares__buf_t *buf, size_t len) { - if (buf == NULL) + if (buf == NULL) { return; + } buf->data_len += len; } - unsigned char *ares__buf_finish_bin(ares__buf_t *buf, size_t *len) { unsigned char *ptr = NULL; - if (buf == NULL || len == NULL || ares__buf_is_const(buf)) + if (buf == NULL || len == NULL || ares__buf_is_const(buf)) { return NULL; + } ares__buf_reclaim(buf); + + /* We don't want to return NULL except on failure, may be zero-length */ + if (buf->alloc_buf == NULL && + ares__buf_ensure_space(buf, 1) != ARES_SUCCESS) { + return NULL; + } ptr = buf->alloc_buf; *len = buf->data_len; ares_free(buf); return ptr; } - char *ares__buf_finish_str(ares__buf_t *buf, size_t *len) { char *ptr; size_t mylen; ptr = (char *)ares__buf_finish_bin(buf, &mylen); - if (ptr == NULL) + if (ptr == NULL) { return NULL; + } - if (len != NULL) + if (len != NULL) { *len = mylen; + } /* NOTE: ensured via ares__buf_ensure_space() that there is always at least * 1 extra byte available for this specific use-case */ @@ -258,101 +284,303 @@ char *ares__buf_finish_str(ares__buf_t *buf, size_t *len) return ptr; } - void ares__buf_tag(ares__buf_t *buf) { - if (buf == NULL) + if (buf == NULL) { return; + } buf->tag_offset = buf->offset; } - -int ares__buf_tag_rollback(ares__buf_t *buf) +ares_status_t ares__buf_tag_rollback(ares__buf_t *buf) { - if (buf == NULL || buf->tag_offset == SIZE_MAX) + if (buf == NULL || buf->tag_offset == SIZE_MAX) { return ARES_EFORMERR; + } buf->offset = buf->tag_offset; buf->tag_offset = SIZE_MAX; return ARES_SUCCESS; } - -int ares__buf_tag_clear(ares__buf_t *buf) +ares_status_t ares__buf_tag_clear(ares__buf_t *buf) { - if (buf == NULL || buf->tag_offset == SIZE_MAX) + if (buf == NULL || buf->tag_offset == SIZE_MAX) { return ARES_EFORMERR; + } buf->tag_offset = SIZE_MAX; return ARES_SUCCESS; } - const unsigned char *ares__buf_tag_fetch(const ares__buf_t *buf, size_t *len) { - if (buf == NULL || buf->tag_offset == SIZE_MAX || len == NULL) + if (buf == NULL || buf->tag_offset == SIZE_MAX || len == NULL) { return NULL; + } *len = buf->offset - buf->tag_offset; return buf->data + buf->tag_offset; } - static const unsigned char *ares__buf_fetch(const ares__buf_t *buf, size_t *len) { - if (len != NULL) + if (len != NULL) { *len = 0; + } - if (buf == NULL || len == NULL || buf->data == NULL) + if (buf == NULL || len == NULL || buf->data == NULL) { return NULL; + } *len = buf->data_len - buf->offset; return buf->data + buf->offset; } - -int ares__buf_consume(ares__buf_t *buf, size_t len) +ares_status_t ares__buf_consume(ares__buf_t *buf, size_t len) { size_t remaining_len; ares__buf_fetch(buf, &remaining_len); - if (remaining_len < len) + if (remaining_len < len) { return ARES_EBADRESP; + } buf->offset += len; return ARES_SUCCESS; } - -int ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16) +ares_status_t ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16) { size_t remaining_len; const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); - if (buf == NULL || u16 == NULL || remaining_len < sizeof(*u16)) + if (buf == NULL || u16 == NULL || remaining_len < sizeof(*u16)) { return ARES_EBADRESP; + } - *u16 = (unsigned short)((unsigned short)(ptr[0]) << 8 | (unsigned short)ptr[1]); + *u16 = + (unsigned short)((unsigned short)(ptr[0]) << 8 | (unsigned short)ptr[1]); return ares__buf_consume(buf, sizeof(*u16)); } +ares_status_t ares__buf_fetch_be32(ares__buf_t *buf, unsigned int *u32) +{ + size_t remaining_len; + const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); + + if (buf == NULL || u32 == NULL || remaining_len < sizeof(*u32)) { + return ARES_EBADRESP; + } + + *u32 = ((unsigned int)(ptr[0]) << 24 | (unsigned int)(ptr[1]) << 16 | + (unsigned int)(ptr[2]) << 8 | (unsigned int)(ptr[3])); + + return ares__buf_consume(buf, sizeof(*u32)); +} -int ares__buf_fetch_bytes(ares__buf_t *buf, unsigned char *bytes, - size_t len) +ares_status_t ares__buf_fetch_bytes(ares__buf_t *buf, unsigned char *bytes, + size_t len) { size_t remaining_len; const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); - if (buf == NULL || bytes == NULL || len == 0 || remaining_len < len) + if (buf == NULL || bytes == NULL || len == 0 || remaining_len < len) { return ARES_EBADRESP; + } memcpy(bytes, ptr, len); return ares__buf_consume(buf, len); } +ares_status_t ares__buf_fetch_bytes_dup(ares__buf_t *buf, size_t len, + unsigned char **bytes) +{ + size_t remaining_len; + const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); + + if (buf == NULL || bytes == NULL || len == 0 || remaining_len < len) { + return ARES_EBADRESP; + } + + *bytes = ares_malloc(len); + if (*bytes == NULL) { + return ARES_ENOMEM; + } + + memcpy(*bytes, ptr, len); + return ares__buf_consume(buf, len); +} + +ares_status_t ares__buf_fetch_str_dup(ares__buf_t *buf, size_t len, char **str) +{ + size_t remaining_len; + const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); + + if (buf == NULL || str == NULL || len == 0 || remaining_len < len) { + return ARES_EBADRESP; + } + + *str = ares_malloc(len + 1); + if (*str == NULL) { + return ARES_ENOMEM; + } + + memcpy(*str, ptr, len); + (*str)[len] = 0; + + return ares__buf_consume(buf, len); +} + +ares_status_t ares__buf_fetch_bytes_into_buf(ares__buf_t *buf, + ares__buf_t *dest, size_t len) +{ + size_t remaining_len; + const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); + ares_status_t status; + + if (buf == NULL || dest == NULL || len == 0 || remaining_len < len) { + return ARES_EBADRESP; + } + + status = ares__buf_append(dest, ptr, len); + if (status != ARES_SUCCESS) { + return status; + } + + return ares__buf_consume(buf, len); +} + +/* Reserved characters for names that need to be escaped */ +static ares_bool_t is_reservedch(int ch) +{ + switch (ch) { + case '"': + case '.': + case ';': + case '\\': + case '(': + case ')': + case '@': + case '$': + return ARES_TRUE; + default: + break; + } + + return ARES_FALSE; +} + +static ares_bool_t ares__isprint(int ch) +{ + if (ch >= 0x20 && ch <= 0x7E) { + return ARES_TRUE; + } + return ARES_FALSE; +} + +/* Character set allowed by hostnames. This is to include the normal + * domain name character set plus: + * - underscores which are used in SRV records. + * - Forward slashes such as are used for classless in-addr.arpa + * delegation (CNAMEs) + * - Asterisks may be used for wildcard domains in CNAMEs as seen in the + * real world. + * While RFC 2181 section 11 does state not to do validation, + * that applies to servers, not clients. Vulnerabilities have been + * reported when this validation is not performed. Security is more + * important than edge-case compatibility (which is probably invalid + * anyhow). */ +static ares_bool_t is_hostnamech(int ch) +{ + /* [A-Za-z0-9-*._/] + * Don't use isalnum() as it is locale-specific + */ + if (ch >= 'A' && ch <= 'Z') { + return ARES_TRUE; + } + if (ch >= 'a' && ch <= 'z') { + return ARES_TRUE; + } + if (ch >= '0' && ch <= '9') { + return ARES_TRUE; + } + if (ch == '-' || ch == '.' || ch == '_' || ch == '/' || ch == '*') { + return ARES_TRUE; + } + + return ARES_FALSE; +} + +static ares_status_t ares__buf_fetch_dnsname_into_buf(ares__buf_t *buf, + ares__buf_t *dest, + size_t len, + ares_bool_t is_hostname) +{ + size_t remaining_len; + const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); + ares_status_t status; + size_t i; + + if (buf == NULL || len == 0 || remaining_len < len) { + return ARES_EBADRESP; + } + + for (i = 0; i < len; i++) { + unsigned char c = ptr[i]; + + /* Hostnames have a very specific allowed character set. Anything outside + * of that (non-printable and reserved included) are disallowed */ + if (is_hostname && !is_hostnamech(c)) { + status = ARES_EBADRESP; + goto fail; + } + + /* NOTE: dest may be NULL if the user is trying to skip the name. validation + * still occurs above. */ + if (dest == NULL) { + continue; + } + + /* Non-printable characters need to be output as \DDD */ + if (!ares__isprint(c)) { + unsigned char escape[4]; + + escape[0] = '\\'; + escape[1] = '0' + (c / 100); + escape[2] = '0' + ((c % 100) / 10); + escape[3] = '0' + (c % 10); + + status = ares__buf_append(dest, escape, sizeof(escape)); + if (status != ARES_SUCCESS) { + goto fail; + } + + continue; + } + + /* Reserved characters need to be escaped, otherwise normal */ + if (is_reservedch(c)) { + status = ares__buf_append_byte(dest, '\\'); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + status = ares__buf_append_byte(dest, c); + if (status != ARES_SUCCESS) { + return status; + } + } + + return ares__buf_consume(buf, len); + +fail: + return status; +} size_t ares__buf_consume_whitespace(ares__buf_t *buf, int include_linefeed) { @@ -360,11 +588,12 @@ size_t ares__buf_consume_whitespace(ares__buf_t *buf, int include_linefeed) const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); size_t i; - if (ptr == NULL) + if (ptr == NULL) { return 0; + } - for (i=0; i 0) + if (i > 0) { ares__buf_consume(buf, i); + } return i; } @@ -392,11 +623,12 @@ size_t ares__buf_consume_nonwhitespace(ares__buf_t *buf) const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); size_t i; - if (ptr == NULL) + if (ptr == NULL) { return 0; + } - for (i=0; i 0) + if (i > 0) { ares__buf_consume(buf, i); + } return i; } @@ -421,46 +654,47 @@ size_t ares__buf_consume_line(ares__buf_t *buf, int include_linefeed) const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); size_t i; - if (ptr == NULL) + if (ptr == NULL) { return 0; + } - for (i=0; i 0) + if (include_linefeed && i > 0 && i < remaining_len && ptr[i] == '\n') { + i++; + } + if (i > 0) { ares__buf_consume(buf, i); + } return i; } - -int ares__buf_begins_with(ares__buf_t *buf, const unsigned char *data, - size_t data_len) +ares_status_t ares__buf_begins_with(const ares__buf_t *buf, + const unsigned char *data, size_t data_len) { size_t remaining_len = 0; const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len); - if (ptr == NULL || data == NULL || data_len == 0) + if (ptr == NULL || data == NULL || data_len == 0) { return ARES_EFORMERR; + } - if (data_len > remaining_len) + if (data_len > remaining_len) { return ARES_EBADRESP; + } - if (memcmp(ptr, data, data_len) == 0) + if (memcmp(ptr, data, data_len) == 0) { return ARES_EBADRESP; + } return ARES_SUCCESS; } - size_t ares__buf_len(const ares__buf_t *buf) { size_t len = 0; @@ -468,9 +702,253 @@ size_t ares__buf_len(const ares__buf_t *buf) return len; } - const unsigned char *ares__buf_peek(const ares__buf_t *buf, size_t *len) { return ares__buf_fetch(buf, len); } +size_t ares__buf_get_position(const ares__buf_t *buf) +{ + if (buf == NULL) { + return 0; + } + return buf->offset; +} + +ares_status_t ares__buf_set_position(ares__buf_t *buf, size_t idx) +{ + if (buf == NULL) { + return ARES_EFORMERR; + } + + if (idx > buf->data_len) { + return ARES_EFORMERR; + } + + buf->offset = idx; + return ARES_SUCCESS; +} + +#define ARES_DNS_HEADER_SIZE 12 + +ares_status_t ares__buf_parse_dns_name(ares__buf_t *buf, char **name, + ares_bool_t is_hostname) +{ + size_t save_offset = 0; + unsigned char c; + ares_status_t status; + ares__buf_t *namebuf = NULL; + size_t label_start = ares__buf_get_position(buf); + + if (buf == NULL) { + return ARES_EFORMERR; + } + + if (name != NULL) { + namebuf = ares__buf_create(); + if (namebuf == NULL) { + status = ARES_ENOMEM; + goto fail; + } + } + + /* XXX: LibraryTest.ExpandName and LibraryTest.ExpandNameFailure are not + * complete DNS messages but rather non-valid minimized snippets to try + * to test the old parser, so we have to turn off this sanity check + * it appears until these test cases are rewritten + */ +#if 0 + if (ares__buf_get_position(buf) < ARES_DNS_HEADER_SIZE) { + status = ARES_EFORMERR; + goto fail; + } +#endif + /* The compression scheme allows a domain name in a message to be + * represented as either: + * + * - a sequence of labels ending in a zero octet + * - a pointer + * - a sequence of labels ending with a pointer + */ + while (1) { + /* Keep track of the minimum label starting position to prevent forward + * jumping */ + if (label_start > ares__buf_get_position(buf)) { + label_start = ares__buf_get_position(buf); + } + + status = ares__buf_fetch_bytes(buf, &c, 1); + if (status != ARES_SUCCESS) { + goto fail; + } + + /* Pointer/Redirect */ + if ((c & 0xc0) == 0xc0) { + /* The pointer takes the form of a two octet sequence: + * + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | 1 1| OFFSET | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * + * The first two bits are ones. This allows a pointer to be distinguished + * from a label, since the label must begin with two zero bits because + * labels are restricted to 63 octets or less. (The 10 and 01 + * combinations are reserved for future use.) The OFFSET field specifies + * an offset from the start of the message (i.e., the first octet of the + * ID field in the domain header). A zero offset specifies the first byte + * of the ID field, etc. + */ + size_t offset = (size_t)((c & 0x3F) << 8); + + /* Fetch second byte of the redirect length */ + status = ares__buf_fetch_bytes(buf, &c, 1); + if (status != ARES_SUCCESS) { + goto fail; + } + + offset |= ((size_t)c); + + /* According to RFC 1035 4.1.4: + * In this scheme, an entire domain name or a list of labels at + * the end of a domain name is replaced with a pointer to a prior + * occurance of the same name. + * Note the word "prior", meaning it must go backwards. This was + * confirmed via the ISC BIND code that it also prevents forward + * pointers. + */ + if (offset >= label_start) { + status = ARES_EBADNAME; + goto fail; + } + + /* First time we make a jump, save the current position */ + if (save_offset == 0) { + save_offset = ares__buf_get_position(buf); + } + + status = ares__buf_set_position(buf, offset); + if (status != ARES_SUCCESS) { + status = ARES_EBADNAME; + goto fail; + } + + continue; + } else if ((c & 0xc0) != 0) { + /* 10 and 01 are reserved */ + status = ARES_EBADNAME; + goto fail; + } else if (c == 0) { + /* termination via zero octet*/ + break; + } + + /* New label */ + + /* Labels are separated by periods */ + if (ares__buf_len(namebuf) != 0 && name != NULL) { + status = ares__buf_append_byte(namebuf, '.'); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + status = ares__buf_fetch_dnsname_into_buf(buf, namebuf, c, is_hostname); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + /* Restore offset read after first redirect/pointer as this is where the DNS + * message continues */ + if (save_offset) { + ares__buf_set_position(buf, save_offset); + } + + if (name != NULL) { + *name = ares__buf_finish_str(namebuf, NULL); + if (*name == NULL) { + status = ARES_ENOMEM; + goto fail; + } + } + + return ARES_SUCCESS; + +fail: + /* We want badname response if we couldn't parse */ + if (status == ARES_EBADRESP) { + status = ARES_EBADNAME; + } + + ares__buf_destroy(namebuf); + return status; +} + +ares_status_t ares__buf_parse_dns_binstr(ares__buf_t *buf, size_t remaining_len, + unsigned char **bin, size_t *bin_len, + ares_bool_t allow_multiple) +{ + unsigned char len; + ares_status_t status; + ares__buf_t *binbuf = NULL; + size_t orig_len = ares__buf_len(buf); + + if (buf == NULL) { + return ARES_EFORMERR; + } + + if (remaining_len == 0) { + return ARES_EBADRESP; + } + + binbuf = ares__buf_create(); + if (binbuf == NULL) { + return ARES_ENOMEM; + } + + while (orig_len - ares__buf_len(buf) < remaining_len) { + status = ares__buf_fetch_bytes(buf, &len, 1); + if (status != ARES_SUCCESS) { + break; + } + + /* XXX: Maybe we should scan to make sure it is printable? */ + if (bin != NULL) { + status = ares__buf_fetch_bytes_into_buf(buf, binbuf, len); + } else { + status = ares__buf_consume(buf, len); + } + + if (status != ARES_SUCCESS) { + break; + } + + if (!allow_multiple) { + break; + } + } + + + if (status != ARES_SUCCESS) { + ares__buf_destroy(binbuf); + } else { + if (bin != NULL) { + size_t mylen = 0; + /* NOTE: we use ares__buf_finish_str() here as we guarantee NULL + * Termination even though we are technically returning binary data. + */ + *bin = (unsigned char *)ares__buf_finish_str(binbuf, &mylen); + *bin_len = mylen; + } + } + + return status; +} + +ares_status_t ares__buf_parse_dns_str(ares__buf_t *buf, size_t remaining_len, + char **str, ares_bool_t allow_multiple) +{ + size_t len; + return ares__buf_parse_dns_binstr(buf, remaining_len, (unsigned char **)str, + &len, allow_multiple); +} diff --git a/deps/cares/src/lib/ares__buf.h b/deps/cares/src/lib/ares__buf.h index d81fc26f426993..6fc9c9008a1833 100644 --- a/deps/cares/src/lib/ares__buf.h +++ b/deps/cares/src/lib/ares__buf.h @@ -33,6 +33,10 @@ * validation and return a success/fail result. There are also various helpers * for writing data to the buffer which dynamically grows. * + * All operations that fetch or consume data from the buffer will move forward + * the internal pointer, thus marking the data as processed which may no longer + * be accessible after certain operations (such as append). + * * The helpers for this object are meant to be added as needed. If you can't * find it, write it! * @@ -44,10 +48,10 @@ struct ares__buf; typedef struct ares__buf ares__buf_t; /*! Create a new buffer object that dynamically allocates buffers for data. - * + * * \return initialized buffer object or NULL if out of memory. */ -ares__buf_t *ares__buf_create(void); +ares__buf_t *ares__buf_create(void); /*! Create a new buffer object that uses a user-provided data pointer. The * data provided will not be manipulated, and cannot be appended to. This @@ -60,21 +64,31 @@ ares__buf_t *ares__buf_create(void); */ ares__buf_t *ares__buf_create_const(const unsigned char *data, size_t data_len); + /*! Destroy an initialized buffer object. * * \param[in] buf Initialized buf object */ -void ares__buf_destroy(ares__buf_t *buf); +void ares__buf_destroy(ares__buf_t *buf); + -/*! Append to a dynamic buffer object +/*! Append multiple bytes to a dynamic buffer object * * \param[in] buf Initialized buffer object * \param[in] data Data to copy to buffer object * \param[in] data_len Length of data to copy to buffer object. * \return ARES_SUCCESS or one of the c-ares error codes */ -int ares__buf_append(ares__buf_t *buf, const unsigned char *data, - size_t data_len); +ares_status_t ares__buf_append(ares__buf_t *buf, const unsigned char *data, + size_t data_len); + +/*! Append a single byte to the dynamic buffer object + * + * \param[in] buf Initialized buffer object + * \param[in] byte Single byte to append to buffer object. + * \return ARES_SUCCESS or one of the c-ares error codes + */ +ares_status_t ares__buf_append_byte(ares__buf_t *buf, unsigned char byte); /*! Start a dynamic append operation that returns a buffer suitable for @@ -98,7 +112,7 @@ unsigned char *ares__buf_append_start(ares__buf_t *buf, size_t *len); * operation. Must not be greater than returned from * ares__buf_append_start(). */ -void ares__buf_append_finish(ares__buf_t *buf, size_t len); +void ares__buf_append_finish(ares__buf_t *buf, size_t len); /*! Clean up ares__buf_t and return allocated pointer to unprocessed data. It * is the responsibility of the caller to ares_free() the returned buffer. @@ -106,7 +120,7 @@ void ares__buf_append_finish(ares__buf_t *buf, size_t len); * * \param[in] buf Initialized buffer object. Can not be a "const" buffer. * \param[out] len Length of data returned - * \return pointer to unprocessed data or NULL on error. + * \return pointer to unprocessed data (may be zero length) or NULL on error. */ unsigned char *ares__buf_finish_bin(ares__buf_t *buf, size_t *len); @@ -124,7 +138,7 @@ unsigned char *ares__buf_finish_bin(ares__buf_t *buf, size_t *len); * \param[out] len Optional. Length of data returned, or NULL if not needed. * \return pointer to unprocessed data or NULL on error. */ -char *ares__buf_finish_str(ares__buf_t *buf, size_t *len); +char *ares__buf_finish_str(ares__buf_t *buf, size_t *len); /*! Tag a position to save in the buffer in case parsing needs to rollback, * such as if insufficient data is available, but more data may be added in @@ -133,14 +147,14 @@ char *ares__buf_finish_str(ares__buf_t *buf, size_t *len); * * \param[in] buf Initialized buffer object */ -void ares__buf_tag(ares__buf_t *buf); +void ares__buf_tag(ares__buf_t *buf); /*! Rollback to a tagged position. Will automatically clear the tag. * * \param[in] buf Initialized buffer object * \return ARES_SUCCESS or one of the c-ares error codes */ -int ares__buf_tag_rollback(ares__buf_t *buf); +ares_status_t ares__buf_tag_rollback(ares__buf_t *buf); /*! Clear the tagged position without rolling back. You should do this any * time a tag is no longer needed as future append operations can reclaim @@ -149,7 +163,7 @@ int ares__buf_tag_rollback(ares__buf_t *buf); * \param[in] buf Initialized buffer object * \return ARES_SUCCESS or one of the c-ares error codes */ -int ares__buf_tag_clear(ares__buf_t *buf); +ares_status_t ares__buf_tag_clear(ares__buf_t *buf); /*! Fetch the buffer and length of data starting from the tagged position up * to the _current_ position. It will not unset the tagged position. The @@ -168,7 +182,7 @@ const unsigned char *ares__buf_tag_fetch(const ares__buf_t *buf, size_t *len); * \param[in] len Length to consume * \return ARES_SUCCESS or one of the c-ares error codes */ -int ares__buf_consume(ares__buf_t *buf, size_t len); +ares_status_t ares__buf_consume(ares__buf_t *buf, size_t len); /*! Fetch a 16bit Big Endian number from the buffer. * @@ -176,7 +190,16 @@ int ares__buf_consume(ares__buf_t *buf, size_t len); * \param[out] u16 Buffer to hold 16bit integer * \return ARES_SUCCESS or one of the c-ares error codes */ -int ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16); +ares_status_t ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16); + +/*! Fetch a 32bit Big Endian number from the buffer. + * + * \param[in] buf Initialized buffer object + * \param[out] u32 Buffer to hold 32bit integer + * \return ARES_SUCCESS or one of the c-ares error codes + */ +ares_status_t ares__buf_fetch_be32(ares__buf_t *buf, unsigned int *u32); + /*! Fetch the requested number of bytes into the provided buffer * @@ -185,8 +208,42 @@ int ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16); * \param[in] len Requested number of bytes (must be > 0) * \return ARES_SUCCESS or one of the c-ares error codes */ -int ares__buf_fetch_bytes(ares__buf_t *buf, unsigned char *bytes, - size_t len); +ares_status_t ares__buf_fetch_bytes(ares__buf_t *buf, unsigned char *bytes, + size_t len); + + +/*! Fetch the requested number of bytes and return a new buffer that must be + * ares_free()'d by the caller. + * + * \param[in] buf Initialized buffer object + * \param[in] len Requested number of bytes (must be > 0) + * \param[out] bytes Pointer passed by reference. Will be allocated. + * \return ARES_SUCCESS or one of the c-ares error codes + */ +ares_status_t ares__buf_fetch_bytes_dup(ares__buf_t *buf, size_t len, + unsigned char **bytes); + +/*! Fetch the requested number of bytes and place them into the provided + * dest buffer object. + * + * \param[in] buf Initialized buffer object + * \param[out] dest Buffer object to append bytes. + * \param[in] len Requested number of bytes (must be > 0) + * \return ARES_SUCCESS or one of the c-ares error codes + */ +ares_status_t ares__buf_fetch_bytes_into_buf(ares__buf_t *buf, + ares__buf_t *dest, size_t len); + +/*! Fetch the requested number of bytes and return a new buffer that must be + * ares_free()'d by the caller. The returned buffer is a null terminated + * string. + * + * \param[in] buf Initialized buffer object + * \param[in] len Requested number of bytes (must be > 0) + * \param[out] str Pointer passed by reference. Will be allocated. + * \return ARES_SUCCESS or one of the c-ares error codes + */ +ares_status_t ares__buf_fetch_str_dup(ares__buf_t *buf, size_t len, char **str); /*! Consume whitespace characters (0x09, 0x0B, 0x0C, 0x0D, 0x20, and optionally * 0x0A). @@ -224,8 +281,8 @@ size_t ares__buf_consume_line(ares__buf_t *buf, int include_linefeed); * \param[in] data_len Length of data to compare. * \return ARES_SUCCESS or one of the c-ares error codes */ -int ares__buf_begins_with(ares__buf_t *buf, const unsigned char *data, - size_t data_len); +ares_status_t ares__buf_begins_with(const ares__buf_t *buf, + const unsigned char *data, size_t data_len); /*! Size of unprocessed remaining data length @@ -233,7 +290,7 @@ int ares__buf_begins_with(ares__buf_t *buf, const unsigned char *data, * \param[in] buf Initialized buffer object * \return length remaining */ -size_t ares__buf_len(const ares__buf_t *buf); +size_t ares__buf_len(const ares__buf_t *buf); /*! Retrieve a pointer to the currently unprocessed data. Generally this isn't * recommended to be used in practice. The returned pointer may be invalidated @@ -243,10 +300,117 @@ size_t ares__buf_len(const ares__buf_t *buf); * \param[out] len Length of available data * \return Pointer to buffer of unprocessed data */ -const unsigned char *ares__buf_peek(const ares__buf_t *buf, - size_t *len); +const unsigned char *ares__buf_peek(const ares__buf_t *buf, size_t *len); + + +/*! Wipe any processed data from the beginning of the buffer. This will + * move any remaining data to the front of the internally allocated buffer. + * + * Can not be used on const buffer objects. + * + * Typically not needed to call, as any new append operation will automatically + * call this function if there is insufficient space to append the data in + * order to try to avoid another memory allocation. + * + * It may be useful to call in order to ensure the current message being + * processed is in the beginning of the buffer if there is an intent to use + * ares__buf_set_position() and ares__buf_get_position() as may be necessary + * when processing DNS compressed names. + * + * If there is an active tag, it will NOT clear the tag, it will use the tag + * as the start of the unprocessed data rather than the current offset. If + * a prior tag is no longer needed, may be wise to call ares__buf_tag_clear(). + * + * \param[in] buf Initialized buffer object + */ +void ares__buf_reclaim(ares__buf_t *buf); + +/*! Set the current offset within the internal buffer. + * + * Typically this should not be used, if possible, use the ares__buf_tag*() + * operations instead. + * + * One exception is DNS name compression which may backwards reference to + * an index in the message. It may be necessary in such a case to call + * ares__buf_reclaim() if using a dynamic (non-const) buffer before processing + * such a message. + * + * \param[in] buf Initialized buffer object + * \param[in] idx Index to set position + * \return ARES_SUCCESS if valid index + */ +ares_status_t ares__buf_set_position(ares__buf_t *buf, size_t idx); + +/*! Get the current offset within the internal buffer. + * + * Typically this should not be used, if possible, use the ares__buf_tag*() + * operations instead. + * + * This can be used to get the current position, useful for saving if a + * jump via ares__buf_set_position() is performed and need to restore the + * current position for future operations. + * + * \param[in] buf Initialized buffer object + * \return index of current position + */ +size_t ares__buf_get_position(const ares__buf_t *buf); + + +/*! Parse a compressed DNS name as defined in RFC1035 starting at the current + * offset within the buffer. + * + * It is assumed that either a const buffer is being used, or before + * the message processing was started that ares__buf_reclaim() was called. + * + * \param[in] buf Initialized buffer object + * \param[out] name Pointer passed by reference to be filled in with + * allocated string of the parsed name that must be + * ares_free()'d by the caller. + * \param[in] is_hostname if ARES_TRUE, will validate the character set for + * a valid hostname or will return error. + * \return ARES_SUCCESS on success + */ +ares_status_t ares__buf_parse_dns_name(ares__buf_t *buf, char **name, + ares_bool_t is_hostname); +/*! Parse a character-string as defined in RFC1035, as a null-terminated + * string. + * + * \param[in] buf initialized buffer object + * \param[in] remaining_len maximum length that should be used for parsing + * the string, this is often less than the remaining + * buffer and is based on the RR record length. + * \param[out] str Pointer passed by reference to be filled in with + * allocated string of the parsed that must be + * ares_free()'d by the caller. + * \param[in] allow_multiple ARES_TRUE if it should attempt to parse multiple + * strings back to back, and will concatenate in + * the returned str. + * \return ARES_SUCCESS on success + */ +ares_status_t ares__buf_parse_dns_str(ares__buf_t *buf, size_t remaining_len, + char **name, ares_bool_t allow_multiple); +/*! Parse a character-string as defined in RFC1035, as binary, however for + * convenience this does guarantee a NULL terminator (that is not included) + * in the returned length. + * + * \param[in] buf initialized buffer object + * \param[in] remaining_len maximum length that should be used for parsing + * the string, this is often less than the remaining + * buffer and is based on the RR record length. + * \param[out] bin Pointer passed by reference to be filled in with + * allocated string of the parsed that must be + * ares_free()'d by the caller. + * \param[out] bin_len Length of returned string. + * \param[in] allow_multiple ARES_TRUE if it should attempt to parse multiple + * strings back to back, and will concatenate in + * the returned str. + * \return ARES_SUCCESS on success + */ +ares_status_t ares__buf_parse_dns_binstr(ares__buf_t *buf, size_t remaining_len, + unsigned char **bin, size_t *bin_len, + ares_bool_t allow_multiple); /*! @} */ #endif /* __ARES__BUF_H */ diff --git a/deps/cares/src/lib/ares__close_sockets.c b/deps/cares/src/lib/ares__close_sockets.c index fe64e54037d0b3..0cc28d4e6e5345 100644 --- a/deps/cares/src/lib/ares__close_sockets.c +++ b/deps/cares/src/lib/ares__close_sockets.c @@ -31,7 +31,6 @@ #include "ares_private.h" #include - void ares__close_connection(struct server_connection *conn) { struct server_state *server = conn->server; @@ -42,15 +41,14 @@ void ares__close_connection(struct server_connection *conn) ares__buf_consume(server->tcp_parser, ares__buf_len(server->tcp_parser)); ares__buf_consume(server->tcp_send, ares__buf_len(server->tcp_send)); server->tcp_connection_generation = ++channel->tcp_connection_generation; - server->tcp_conn = NULL; + server->tcp_conn = NULL; } SOCK_STATE_CALLBACK(channel, conn->fd, 0, 0); ares__close_socket(channel, conn->fd); ares__llist_node_claim( - ares__htable_asvp_get_direct(channel->connnode_by_socket, conn->fd) - ); + ares__htable_asvp_get_direct(channel->connnode_by_socket, conn->fd)); ares__htable_asvp_remove(channel->connnode_by_socket, conn->fd); #ifndef NDEBUG @@ -62,7 +60,7 @@ void ares__close_connection(struct server_connection *conn) void ares__close_sockets(struct server_state *server) { - ares__llist_node_t *node; + ares__llist_node_t *node; while ((node = ares__llist_node_first(server->connections)) != NULL) { struct server_connection *conn = ares__llist_node_val(node); @@ -74,7 +72,7 @@ void ares__check_cleanup_conn(ares_channel channel, ares_socket_t fd) { ares__llist_node_t *node; struct server_connection *conn; - int do_cleanup = 0; + ares_bool_t do_cleanup = ARES_FALSE; node = ares__htable_asvp_get_direct(channel->connnode_by_socket, fd); if (node == NULL) { @@ -89,13 +87,13 @@ void ares__check_cleanup_conn(ares_channel channel, ares_socket_t fd) /* If we are configured not to stay open, close it out */ if (!(channel->flags & ARES_FLAG_STAYOPEN)) { - do_cleanup = 1; + do_cleanup = ARES_TRUE; } /* If the udp connection hit its max queries, always close it */ if (!conn->is_tcp && channel->udp_max_queries > 0 && - conn->total_queries >= (size_t)channel->udp_max_queries) { - do_cleanup = 1; + conn->total_queries >= channel->udp_max_queries) { + do_cleanup = ARES_TRUE; } if (do_cleanup) { diff --git a/deps/cares/src/lib/ares__get_hostent.c b/deps/cares/src/lib/ares__get_hostent.c index 8ac2425ed46106..9568b3b7ed9635 100644 --- a/deps/cares/src/lib/ares__get_hostent.c +++ b/deps/cares/src/lib/ares__get_hostent.c @@ -39,17 +39,23 @@ #include "ares.h" #include "ares_inet_net_pton.h" -#include "ares_nowarn.h" #include "ares_private.h" -int ares__get_hostent(FILE *fp, int family, struct hostent **host) +ares_status_t 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; + char *line = NULL; + char *p; + char *q; + char **alias; + const char *txtaddr; + const char *txthost; + char *txtalias; + ares_status_t status; + size_t addrlen; + size_t linesize; + size_t naliases; struct ares_addr addr; - struct hostent *hostent = NULL; + struct hostent *hostent = NULL; *host = NULL; /* Assume failure */ @@ -63,209 +69,221 @@ int ares__get_hostent(FILE *fp, int family, struct hostent **host) return ARES_EBADFAMILY; } - while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) - { - - /* Trim line comment. */ - p = line; - while (*p && (*p != '#')) - p++; - *p = '\0'; + 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'; + /* 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; + /* 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; + /* 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; + /* 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'; + /* Null terminate address part. */ + *p = '\0'; - /* Advance to host name */ + /* Advance to host name */ + p++; + while (*p && ISSPACE(*p)) { p++; - while (*p && ISSPACE(*p)) - p++; - if (!*p) - /* Ignore line if reached end of line. */ - continue; /* LCOV_EXCL_LINE: trailing whitespace already stripped */ - - /* Pointer to start of host name. */ - txthost = p; + } + if (!*p) { + /* Ignore line if reached end of line. */ + continue; /* LCOV_EXCL_LINE: trailing whitespace already stripped */ + } - /* Advance past host name. */ - while (*p && !ISSPACE(*p)) - p++; + /* Pointer to start of host name. */ + txthost = p; - /* Pointer to start of first alias. */ - txtalias = NULL; - if (*p) - { - q = p + 1; - while (*q && ISSPACE(*q)) - q++; - if (*q) - txtalias = q; - } + /* Advance past host name. */ + while (*p && !ISSPACE(*p)) { + p++; + } - /* Null terminate host name. */ - *p = '\0'; + /* Pointer to start of first alias. */ + txtalias = NULL; + if (*p) { + q = p + 1; + while (*q && ISSPACE(*q)) { + q++; + } + if (*q) { + txtalias = q; + } + } - /* find out number of aliases. */ - naliases = 0; - if (txtalias) - { - p = txtalias; - while (*p) - { - while (*p && !ISSPACE(*p)) - p++; - while (*p && ISSPACE(*p)) - p++; - naliases++; - } - } + /* Null terminate host name. */ + *p = '\0'; - /* 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)) - { - if (ares_inet_pton(AF_INET, txtaddr, &addr.addrV4) > 0) - { - /* Actual network address family and length. */ - addr.family = AF_INET; - addrlen = sizeof(addr.addrV4); - } + /* find out number of aliases. */ + naliases = 0; + if (txtalias) { + p = txtalias; + while (*p) { + while (*p && !ISSPACE(*p)) { + p++; } - 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); - } + while (*p && ISSPACE(*p)) { + p++; } - if (!addrlen) - /* Ignore line if invalid address string for the requested family. */ - continue; + naliases++; + } + } - /* - ** Actual address family possible values are AF_INET and AF_INET6 only. - */ + /* 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) && + ares_inet_pton(AF_INET, txtaddr, &addr.addrV4) > 0) { + /* Actual network address family and length. */ + addr.family = AF_INET; + addrlen = sizeof(addr.addrV4); + } + if ((family == AF_INET6 || (family == AF_UNSPEC && !addrlen)) && + 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; + } - /* Allocate memory for the hostent structure. */ - hostent = ares_malloc(sizeof(struct hostent)); - if (!hostent) - break; + /* + ** Actual address family possible values are AF_INET and AF_INET6 only. + */ - /* Initialize fields for out of memory condition. */ - hostent->h_aliases = NULL; - hostent->h_addr_list = NULL; + /* Allocate memory for the hostent structure. */ + hostent = ares_malloc(sizeof(struct hostent)); + if (!hostent) { + break; + } - /* Copy official host name. */ - hostent->h_name = ares_strdup(txthost); - if (!hostent->h_name) - break; + /* Initialize fields for out of memory condition. */ + hostent->h_aliases = NULL; + hostent->h_addr_list = NULL; - /* Copy network address. */ - hostent->h_addr_list = ares_malloc(2 * sizeof(char *)); - if (!hostent->h_addr_list) - break; - hostent->h_addr_list[1] = NULL; - hostent->h_addr_list[0] = ares_malloc(addrlen); - if (!hostent->h_addr_list[0]) - break; - if (addr.family == AF_INET) - memcpy(hostent->h_addr_list[0], &addr.addrV4, sizeof(addr.addrV4)); - else - memcpy(hostent->h_addr_list[0], &addr.addrV6, sizeof(addr.addrV6)); + /* Copy official host name. */ + hostent->h_name = ares_strdup(txthost); + if (!hostent->h_name) { + break; + } - /* Copy aliases. */ - hostent->h_aliases = ares_malloc((naliases + 1) * sizeof(char *)); - if (!hostent->h_aliases) - break; - alias = hostent->h_aliases; - while (naliases) - *(alias + naliases--) = NULL; - *alias = NULL; - while (txtalias) - { - p = txtalias; - while (*p && !ISSPACE(*p)) - p++; - q = p; - while (*q && ISSPACE(*q)) - q++; - *p = '\0'; - if ((*alias = ares_strdup(txtalias)) == NULL) - break; - alias++; - txtalias = *q ? q : NULL; - } - if (txtalias) - /* Alias memory allocation failure. */ - break; + /* Copy network address. */ + hostent->h_addr_list = ares_malloc(2 * sizeof(char *)); + if (!hostent->h_addr_list) { + break; + } + hostent->h_addr_list[1] = NULL; + hostent->h_addr_list[0] = ares_malloc(addrlen); + if (!hostent->h_addr_list[0]) { + break; + } + if (addr.family == AF_INET) { + memcpy(hostent->h_addr_list[0], &addr.addrV4, sizeof(addr.addrV4)); + } else { + memcpy(hostent->h_addr_list[0], &addr.addrV6, sizeof(addr.addrV6)); + } - /* Copy actual network address family and length. */ - hostent->h_addrtype = aresx_sitoss(addr.family); - hostent->h_length = aresx_uztoss(addrlen); + /* Copy aliases. */ + hostent->h_aliases = ares_malloc((naliases + 1) * sizeof(char *)); + if (!hostent->h_aliases) { + break; + } + alias = hostent->h_aliases; + while (naliases) { + *(alias + naliases--) = NULL; + } + *alias = NULL; + while (txtalias) { + p = txtalias; + while (*p && !ISSPACE(*p)) { + p++; + } + q = p; + while (*q && ISSPACE(*q)) { + q++; + } + *p = '\0'; + if ((*alias = ares_strdup(txtalias)) == NULL) { + break; + } + alias++; + txtalias = *q ? q : NULL; + } + if (txtalias) { + /* Alias memory allocation failure. */ + break; + } - /* Free line buffer. */ - ares_free(line); + /* Copy actual network address family and length. */ + hostent->h_addrtype = addr.family; + hostent->h_length = (int)addrlen; - /* Return hostent successfully */ - *host = hostent; - return ARES_SUCCESS; + /* Free line buffer. */ + ares_free(line); - } + /* Return hostent successfully */ + *host = hostent; + return ARES_SUCCESS; + } /* If allocated, free line buffer. */ - if (line) + if (line) { ares_free(line); + } - if (status == ARES_SUCCESS) - { - /* Memory allocation failure; clean up. */ - if (hostent) - { - if (hostent->h_name) - ares_free((char *) hostent->h_name); - if (hostent->h_aliases) - { - for (alias = hostent->h_aliases; *alias; alias++) - ares_free(*alias); - ares_free(hostent->h_aliases); - } - if (hostent->h_addr_list) - { - if (hostent->h_addr_list[0]) - ares_free(hostent->h_addr_list[0]); - ares_free(hostent->h_addr_list); - } - ares_free(hostent); + if (status == ARES_SUCCESS) { + /* Memory allocation failure; clean up. */ + if (hostent) { + if (hostent->h_name) { + ares_free(hostent->h_name); + } + if (hostent->h_aliases) { + for (alias = hostent->h_aliases; *alias; alias++) { + ares_free(*alias); + } + ares_free(hostent->h_aliases); + } + if (hostent->h_addr_list) { + if (hostent->h_addr_list[0]) { + ares_free(hostent->h_addr_list[0]); } - return ARES_ENOMEM; + ares_free(hostent->h_addr_list); + } + ares_free(hostent); } + return ARES_ENOMEM; + } return status; } diff --git a/deps/cares/src/lib/ares__htable.c b/deps/cares/src/lib/ares__htable.c index 3ea65642d98c68..c2a56ab7d4e04d 100644 --- a/deps/cares/src/lib/ares__htable.c +++ b/deps/cares/src/lib/ares__htable.c @@ -29,8 +29,8 @@ #include "ares__llist.h" #include "ares__htable.h" -#define ARES__HTABLE_MAX_BUCKETS (1U<<24) -#define ARES__HTABLE_MIN_BUCKETS (1U<<4) +#define ARES__HTABLE_MAX_BUCKETS (1U << 24) +#define ARES__HTABLE_MIN_BUCKETS (1U << 4) #define ARES__HTABLE_EXPAND_PERCENT 75 struct ares__htable { @@ -50,7 +50,6 @@ struct ares__htable { ares__llist_t **buckets; }; - static unsigned int ares__htable_generate_seed(ares__htable_t *htable) { unsigned int seed = 0; @@ -65,20 +64,23 @@ static unsigned int ares__htable_generate_seed(ares__htable_t *htable) } static void ares__htable_buckets_destroy(ares__llist_t **buckets, - unsigned int size, - unsigned char destroy_vals) + unsigned int size, + unsigned char destroy_vals) { unsigned int i; - if (buckets == NULL) + if (buckets == NULL) { return; + } - for (i=0; ibuckets, htable->size, 1); ares_free(htable); } - ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func, ares__htable_bucket_key_t bucket_key, ares__htable_bucket_free_t bucket_free, @@ -108,11 +109,10 @@ ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func, goto fail; } - htable = ares_malloc(sizeof(*htable)); - if (htable == NULL) + htable = ares_malloc_zero(sizeof(*htable)); + if (htable == NULL) { goto fail; - - memset(htable, 0, sizeof(*htable)); + } htable->hash = hash_func; htable->bucket_key = bucket_key; @@ -120,12 +120,11 @@ ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func, htable->key_eq = key_eq; htable->seed = ares__htable_generate_seed(htable); htable->size = ARES__HTABLE_MIN_BUCKETS; - htable->buckets = ares_malloc(sizeof(*htable->buckets) * htable->size); + htable->buckets = ares_malloc_zero(sizeof(*htable->buckets) * htable->size); - if (htable->buckets == NULL) + if (htable->buckets == NULL) { goto fail; - - memset(htable->buckets, 0, sizeof(*htable->buckets) * htable->size); + } return htable; @@ -134,7 +133,6 @@ ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func, return NULL; } - /*! Grabs the Hashtable index from the key and length. The h index is * the hash of the function reduced to the size of the bucket list. * We are doing "hash & (size - 1)" since we are guaranteeing a power of @@ -142,106 +140,102 @@ ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func, * efficient */ #define HASH_IDX(h, key) h->hash(key, h->seed) & (h->size - 1) -static ares__llist_node_t *ares__htable_find(ares__htable_t *htable, - unsigned int idx, - const void *key) +static ares__llist_node_t *ares__htable_find(const ares__htable_t *htable, + unsigned int idx, const void *key) { ares__llist_node_t *node = NULL; - for (node = ares__llist_node_first(htable->buckets[idx]); - node != NULL; + for (node = ares__llist_node_first(htable->buckets[idx]); node != NULL; node = ares__llist_node_next(node)) { - - if (htable->key_eq(key, htable->bucket_key(ares__llist_node_val(node)))) + if (htable->key_eq(key, htable->bucket_key(ares__llist_node_val(node)))) { break; + } } return node; } - -static unsigned int ares__htable_expand(ares__htable_t *htable) +static ares_bool_t ares__htable_expand(ares__htable_t *htable) { ares__llist_t **buckets = NULL; unsigned int old_size = htable->size; size_t i; /* Not a failure, just won't expand */ - if (old_size == ARES__HTABLE_MAX_BUCKETS) - return 1; + if (old_size == ARES__HTABLE_MAX_BUCKETS) { + return ARES_TRUE; + } htable->size <<= 1; /* We must do this in 2 passes as we want it to be non-destructive in case - * there is a memory allocation failure. So we will actually use more + * there is a memory allocation failure. So we will actually use more * memory doing it this way, but at least we might be able to gracefully * recover */ - buckets = ares_malloc(sizeof(*buckets) * htable->size); - if (buckets == NULL) + buckets = ares_malloc_zero(sizeof(*buckets) * htable->size); + if (buckets == NULL) { goto fail; + } - memset(buckets, 0, sizeof(*buckets) * htable->size); - - for (i=0; ibuckets[i]); - node != NULL; + for (node = ares__llist_node_first(htable->buckets[i]); node != NULL; node = ares__llist_node_next(node)) { - void *val = ares__llist_node_val(node); size_t idx = HASH_IDX(htable, htable->bucket_key(val)); if (buckets[idx] == NULL) { buckets[idx] = ares__llist_create(htable->bucket_free); - if (buckets[idx] == NULL) - goto fail; + } + if (buckets[idx] == NULL) { + goto fail; } if (ares__llist_insert_first(buckets[idx], val) == NULL) { goto fail; } - } } /* Swap out buckets */ ares__htable_buckets_destroy(htable->buckets, old_size, 0); htable->buckets = buckets; - return 1; + return ARES_TRUE; fail: ares__htable_buckets_destroy(buckets, htable->size, 0); htable->size = old_size; - return 0; + return ARES_FALSE; } - -unsigned int ares__htable_insert(ares__htable_t *htable, void *bucket) +ares_bool_t ares__htable_insert(ares__htable_t *htable, void *bucket) { unsigned int idx = 0; ares__llist_node_t *node = NULL; const void *key = NULL; - if (htable == NULL || bucket == NULL) - return 0; + if (htable == NULL || bucket == NULL) { + return ARES_FALSE; + } - key = htable->bucket_key(bucket); - idx = HASH_IDX(htable, key); + key = htable->bucket_key(bucket); + idx = HASH_IDX(htable, key); /* See if we have a matching bucket already, if so, replace it */ node = ares__htable_find(htable, idx, key); if (node != NULL) { ares__llist_node_replace(node, bucket); - return 1; + return ARES_TRUE; } /* Check to see if we should rehash because likelihood of collisions has * increased beyond our threshold */ - if (htable->num_keys+1 > (htable->size * ARES__HTABLE_EXPAND_PERCENT) / 100) { + if (htable->num_keys + 1 > + (htable->size * ARES__HTABLE_EXPAND_PERCENT) / 100) { if (!ares__htable_expand(htable)) { - return 0; + return ARES_FALSE; } /* If we expanded, need to calculate a new index */ idx = HASH_IDX(htable, key); @@ -250,55 +244,59 @@ unsigned int ares__htable_insert(ares__htable_t *htable, void *bucket) /* We lazily allocate the linked list */ if (htable->buckets[idx] == NULL) { htable->buckets[idx] = ares__llist_create(htable->bucket_free); - if (htable->buckets[idx] == NULL) - return 0; + if (htable->buckets[idx] == NULL) { + return ARES_FALSE; + } } - + node = ares__llist_insert_first(htable->buckets[idx], bucket); - if (node == NULL) - return 0; + if (node == NULL) { + return ARES_FALSE; + } htable->num_keys++; - return 1; + return ARES_TRUE; } - -void *ares__htable_get(ares__htable_t *htable, const void *key) +void *ares__htable_get(const ares__htable_t *htable, const void *key) { unsigned int idx; - if (htable == NULL || key == NULL) + if (htable == NULL || key == NULL) { return NULL; + } idx = HASH_IDX(htable, key); return ares__llist_node_val(ares__htable_find(htable, idx, key)); } - -unsigned int ares__htable_remove(ares__htable_t *htable, const void *key) +ares_bool_t ares__htable_remove(ares__htable_t *htable, const void *key) { ares__llist_node_t *node; unsigned int idx; - if (htable == NULL || key == NULL) - return 0; + if (htable == NULL || key == NULL) { + return ARES_FALSE; + } idx = HASH_IDX(htable, key); node = ares__htable_find(htable, idx, key); - if (node == NULL) - return 0; + if (node == NULL) { + return ARES_FALSE; + } htable->num_keys--; ares__llist_node_destroy(node); - return 1; + return ARES_TRUE; } -size_t ares__htable_num_keys(ares__htable_t *htable) +size_t ares__htable_num_keys(const ares__htable_t *htable) { - if (htable == NULL) + if (htable == NULL) { return 0; + } return htable->num_keys; } @@ -306,13 +304,13 @@ unsigned int ares__htable_hash_FNV1a(const unsigned char *key, size_t key_len, unsigned int seed) { /* recommended seed is 2166136261U, but we don't want collisions */ - unsigned int hv = seed; - size_t i; + unsigned int hv = seed; + size_t i; for (i = 0; i < key_len; i++) { hv ^= (unsigned int)key[i]; /* hv *= 0x01000193 */ - hv += (hv<<1) + (hv<<4) + (hv<<7) + (hv<<8) + (hv<<24); + hv += (hv << 1) + (hv << 4) + (hv << 7) + (hv << 8) + (hv << 24); } return hv; @@ -321,53 +319,40 @@ unsigned int ares__htable_hash_FNV1a(const unsigned char *key, size_t key_len, /* tolower() is locale-specific. Use a lookup table fast conversion that only * operates on ASCII */ static const unsigned char ares__tolower_lookup[] = { - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, - 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, - 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, - 0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, - 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37, - 0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, - 0x40,0x61,0x62,0x63,0x64,0x65,0x66,0x67, - 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, - 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, - 0x78,0x79,0x7A,0x5B,0x5C,0x5D,0x5E,0x5F, - 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67, - 0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, - 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, - 0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, - 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, - 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, - 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, - 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, - 0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, - 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7, - 0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, - 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7, - 0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, - 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7, - 0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, - 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, - 0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, - 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7, - 0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, + 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, + 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, + 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, + 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, + 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, + 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F, 0x80, 0x81, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, + 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, + 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, + 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, + 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, + 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, + 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, + 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, + 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF }; - /* Case insensitive version, meant for ASCII strings */ -unsigned int ares__htable_hash_FNV1a_casecmp(const unsigned char *key, size_t key_len, - unsigned int seed) +unsigned int ares__htable_hash_FNV1a_casecmp(const unsigned char *key, + size_t key_len, unsigned int seed) { /* recommended seed is 2166136261U, but we don't want collisions */ - unsigned int hv = seed; - size_t i; + unsigned int hv = seed; + size_t i; for (i = 0; i < key_len; i++) { hv ^= (unsigned int)ares__tolower_lookup[key[i]]; /* hv *= 0x01000193 */ - hv += (hv<<1) + (hv<<4) + (hv<<7) + (hv<<8) + (hv<<24); + hv += (hv << 1) + (hv << 4) + (hv << 7) + (hv << 8) + (hv << 24); } return hv; diff --git a/deps/cares/src/lib/ares__htable.h b/deps/cares/src/lib/ares__htable.h index bbd36f779b4623..c131079f8b03f5 100644 --- a/deps/cares/src/lib/ares__htable.h +++ b/deps/cares/src/lib/ares__htable.h @@ -51,47 +51,47 @@ struct ares__htable_t; typedef struct ares__htable ares__htable_t; /*! Callback for generating a hash of the key. - * + * * \param[in] key pointer to key to be hashed * \param[in] seed randomly generated seed used by hash function. * value is specific to the hashtable instance * but otherwise will not change between calls. * \return hash */ -typedef unsigned int (*ares__htable_hashfunc_t)(const void *key, +typedef unsigned int (*ares__htable_hashfunc_t)(const void *key, unsigned int seed); /*! Callback to free the bucket - * + * * \param[in] bucket user provided bucket */ -typedef void (*ares__htable_bucket_free_t)(void *bucket); +typedef void (*ares__htable_bucket_free_t)(void *bucket); /*! Callback to extract the key from the user-provided bucket - * + * * \param[in] bucket user provided bucket * \return pointer to key held in bucket */ -typedef const void *(*ares__htable_bucket_key_t)(const void *bucket); +typedef const void *(*ares__htable_bucket_key_t)(const void *bucket); /*! Callback to compare two keys for equality - * + * * \param[in] key1 first key * \param[in] key2 second key - * \return 1 if equal, 0 if not + * \return ARES_TRUE if equal, ARES_FALSE if not */ -typedef unsigned int (*ares__htable_key_eq_t)(const void *key1, - const void *key2); +typedef ares_bool_t (*ares__htable_key_eq_t)(const void *key1, + const void *key2); -/*! Destroy the initialized hashtable - * +/*! Destroy the initialized hashtable + * * \param[in] initialized hashtable */ -void ares__htable_destroy(ares__htable_t *htable); +void ares__htable_destroy(ares__htable_t *htable); /*! Create a new hashtable - * + * * \param[in] hash_func Required. Callback for Hash function. * \param[in] bucket_key Required. Callback to extract key from bucket. * \param[in] bucket_free Required. Callback to free bucket. @@ -104,40 +104,40 @@ ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func, ares__htable_key_eq_t key_eq); /*! Count of keys from initialized hashtable - * + * * \param[in] htable Initialized hashtable. * \return count of keys */ -size_t ares__htable_num_keys(ares__htable_t *htable); +size_t ares__htable_num_keys(const ares__htable_t *htable); /*! Insert bucket into hashtable - * + * * \param[in] htable Initialized hashtable. * \param[in] bucket User-provided bucket to insert. Takes "ownership". Not * allowed to be NULL. - * \return 1 on success, 0 if out of memory + * \return ARES_TRUE on success, ARES_FALSE if out of memory */ -unsigned int ares__htable_insert(ares__htable_t *htable, void *bucket); +ares_bool_t ares__htable_insert(ares__htable_t *htable, void *bucket); /*! Retrieve bucket from hashtable based on key. - * + * * \param[in] htable Initialized hashtable * \param[in] key Pointer to key to use for comparison. * \return matching bucket, or NULL if not found. */ -void *ares__htable_get(ares__htable_t *htable, const void *key); +void *ares__htable_get(const ares__htable_t *htable, const void *key); -/*! Remove bucket from hashtable by key - * +/*! Remove bucket from hashtable by key + * * \param[in] htable Initialized hashtable * \param[in] key Pointer to key to use for comparison - * \return 1 if found, 0 if not found + * \return ARES_TRUE if found, ARES_FALSE if not found */ -unsigned int ares__htable_remove(ares__htable_t *htable, const void *key); +ares_bool_t ares__htable_remove(ares__htable_t *htable, const void *key); /*! FNV1a hash algorithm. Can be used as underlying primitive for building * a wrapper hashtable. - * + * * \param[in] key pointer to key * \param[in] key_len Length of key * \param[in] seed Seed for generating hash @@ -146,18 +146,17 @@ unsigned int ares__htable_remove(ares__htable_t *htable, const void *key); unsigned int ares__htable_hash_FNV1a(const unsigned char *key, size_t key_len, unsigned int seed); -/*! FNV1a hash algorithm, but converts all characters to lowercase before +/*! FNV1a hash algorithm, but converts all characters to lowercase before * hashing to make the hash case-insensitive. Can be used as underlying * primitive for building a wrapper hashtable. Used on string-based keys. - * + * * \param[in] key pointer to key * \param[in] key_len Length of key * \param[in] seed Seed for generating hash * \return hash value */ unsigned int ares__htable_hash_FNV1a_casecmp(const unsigned char *key, - size_t key_len, - unsigned int seed); + size_t key_len, unsigned int seed); /*! @} */ diff --git a/deps/cares/src/lib/ares__htable_asvp.c b/deps/cares/src/lib/ares__htable_asvp.c index 70265241592c28..f6991c3b1b80ad 100644 --- a/deps/cares/src/lib/ares__htable_asvp.c +++ b/deps/cares/src/lib/ares__htable_asvp.c @@ -29,30 +29,27 @@ #include "ares__htable.h" #include "ares__htable_asvp.h" - struct ares__htable_asvp { ares__htable_asvp_val_free_t free_val; ares__htable_t *hash; }; - typedef struct { ares_socket_t key; void *val; ares__htable_asvp_t *parent; } ares__htable_asvp_bucket_t; - void ares__htable_asvp_destroy(ares__htable_asvp_t *htable) { - if (htable == NULL) + if (htable == NULL) { return; + } ares__htable_destroy(htable->hash); ares_free(htable); } - static unsigned int hash_func(const void *key, unsigned int seed) { const ares_socket_t *arg = key; @@ -60,50 +57,48 @@ static unsigned int hash_func(const void *key, unsigned int seed) seed); } - static const void *bucket_key(const void *bucket) { const ares__htable_asvp_bucket_t *arg = bucket; return &arg->key; } - static void bucket_free(void *bucket) { ares__htable_asvp_bucket_t *arg = bucket; - if (arg->parent->free_val) + if (arg->parent->free_val) { arg->parent->free_val(arg->val); + } ares_free(arg); } - -static unsigned int key_eq(const void *key1, const void *key2) +static ares_bool_t key_eq(const void *key1, const void *key2) { const ares_socket_t *k1 = key1; const ares_socket_t *k2 = key2; - if (*k1 == *k2) - return 1; + if (*k1 == *k2) { + return ARES_TRUE; + } - return 0; + return ARES_FALSE; } - -ares__htable_asvp_t *ares__htable_asvp_create( - ares__htable_asvp_val_free_t val_free) +ares__htable_asvp_t * + ares__htable_asvp_create(ares__htable_asvp_val_free_t val_free) { ares__htable_asvp_t *htable = ares_malloc(sizeof(*htable)); - if (htable == NULL) + if (htable == NULL) { goto fail; + } - htable->hash = ares__htable_create(hash_func, - bucket_key, - bucket_free, - key_eq); - if (htable->hash == NULL) + htable->hash = + ares__htable_create(hash_func, bucket_key, bucket_free, key_eq); + if (htable->hash == NULL) { goto fail; + } htable->free_val = val_free; @@ -117,79 +112,83 @@ ares__htable_asvp_t *ares__htable_asvp_create( return NULL; } - -unsigned int ares__htable_asvp_insert(ares__htable_asvp_t *htable, - ares_socket_t key, void *val) +ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable, + ares_socket_t key, void *val) { ares__htable_asvp_bucket_t *bucket = NULL; - if (htable == NULL) + if (htable == NULL) { goto fail; + } bucket = ares_malloc(sizeof(*bucket)); - if (bucket == NULL) + if (bucket == NULL) { goto fail; + } bucket->parent = htable; bucket->key = key; bucket->val = val; - if (!ares__htable_insert(htable->hash, bucket)) + if (!ares__htable_insert(htable->hash, bucket)) { goto fail; + } - return 1; + return ARES_TRUE; fail: if (bucket) { ares_free(bucket); } - return 0; + return ARES_FALSE; } - -unsigned int ares__htable_asvp_get(ares__htable_asvp_t *htable, - ares_socket_t key, void **val) +ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable, + ares_socket_t key, void **val) { ares__htable_asvp_bucket_t *bucket = NULL; - if (val) + if (val) { *val = NULL; + } - if (htable == NULL) - return 0; + if (htable == NULL) { + return ARES_FALSE; + } bucket = ares__htable_get(htable->hash, &key); - if (bucket == NULL) - return 0; + if (bucket == NULL) { + return ARES_FALSE; + } - if (val) + if (val) { *val = bucket->val; - return 1; + } + return ARES_TRUE; } - -void *ares__htable_asvp_get_direct(ares__htable_asvp_t *htable, - ares_socket_t key) +void *ares__htable_asvp_get_direct(const ares__htable_asvp_t *htable, + ares_socket_t key) { void *val = NULL; ares__htable_asvp_get(htable, key, &val); return val; } - -unsigned int ares__htable_asvp_remove(ares__htable_asvp_t *htable, - ares_socket_t key) +ares_bool_t ares__htable_asvp_remove(ares__htable_asvp_t *htable, + ares_socket_t key) { - if (htable == NULL) - return 0; + if (htable == NULL) { + return ARES_FALSE; + } return ares__htable_remove(htable->hash, &key); } - -size_t ares__htable_asvp_num_keys(ares__htable_asvp_t *htable) +size_t ares__htable_asvp_num_keys(const ares__htable_asvp_t *htable) { - if (htable == NULL) + if (htable == NULL) { return 0; + } return ares__htable_num_keys(htable->hash); } diff --git a/deps/cares/src/lib/ares__htable_asvp.h b/deps/cares/src/lib/ares__htable_asvp.h index f53b2775e02e1e..1ee505a2f0ba7c 100644 --- a/deps/cares/src/lib/ares__htable_asvp.h +++ b/deps/cares/src/lib/ares__htable_asvp.h @@ -48,72 +48,72 @@ struct ares__htable_asvp; typedef struct ares__htable_asvp ares__htable_asvp_t; /*! Callback to free value stored in hashtable - * + * * \param[in] val user-supplied value */ -typedef void (*ares__htable_asvp_val_free_t)(void *val); +typedef void (*ares__htable_asvp_val_free_t)(void *val); /*! Destroy hashtable - * + * * \param[in] htable Initialized hashtable */ void ares__htable_asvp_destroy(ares__htable_asvp_t *htable); /*! Create size_t key, void pointer value hash table - * + * * \param[in] val_free Optional. Call back to free user-supplied value. If * NULL it is expected the caller will clean up any user * supplied values. */ -ares__htable_asvp_t *ares__htable_asvp_create( - ares__htable_asvp_val_free_t val_free); +ares__htable_asvp_t * + ares__htable_asvp_create(ares__htable_asvp_val_free_t val_free); /*! Insert key/value into hash table - * + * * \param[in] htable Initialized hash table * \param[in] key key to associate with value * \param[in] val value to store (takes ownership). May be NULL. - * \return 1 on success, 0 on out of memory or misuse + * \return ARES_TRUE on success, ARES_FALSE on out of memory or misuse */ -unsigned int ares__htable_asvp_insert(ares__htable_asvp_t *htable, - ares_socket_t key, void *val); +ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable, + ares_socket_t key, void *val); /*! Retrieve value from hashtable based on key - * + * * \param[in] htable Initialized hash table * \param[in] key key to use to search * \param[out] val Optional. Pointer to store value. - * \return 1 on success, 0 on failure + * \return ARES_TRUE on success, ARES_FALSE on failure */ -unsigned int ares__htable_asvp_get(ares__htable_asvp_t *htable, - ares_socket_t key, void **val); +ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable, + ares_socket_t key, void **val); /*! Retrieve value from hashtable directly as return value. Caveat to this * function over ares__htable_asvp_get() is that if a NULL value is stored * you cannot determine if the key is not found or the value is NULL. - * + * * \param[in] htable Initialized hash table * \param[in] key key to use to search * \return value associated with key in hashtable or NULL */ -void *ares__htable_asvp_get_direct(ares__htable_asvp_t *htable, - ares_socket_t key); +void *ares__htable_asvp_get_direct(const ares__htable_asvp_t *htable, + ares_socket_t key); /*! Remove a value from the hashtable by key - * + * * \param[in] htable Initialized hash table * \param[in] key key to use to search - * \return 1 if found, 0 if not + * \return ARES_TRUE if found, ARES_FALSE if not found */ -unsigned int ares__htable_asvp_remove(ares__htable_asvp_t *htable, - ares_socket_t key); +ares_bool_t ares__htable_asvp_remove(ares__htable_asvp_t *htable, + ares_socket_t key); /*! Retrieve the number of keys stored in the hash table - * + * * \param[in] htable Initialized hash table * \return count */ -size_t ares__htable_asvp_num_keys(ares__htable_asvp_t *htable); +size_t ares__htable_asvp_num_keys(const ares__htable_asvp_t *htable); /*! @} */ diff --git a/deps/cares/src/lib/ares__htable_stvp.c b/deps/cares/src/lib/ares__htable_stvp.c index 7a4cd40a763573..a79bdc6395891e 100644 --- a/deps/cares/src/lib/ares__htable_stvp.c +++ b/deps/cares/src/lib/ares__htable_stvp.c @@ -29,30 +29,27 @@ #include "ares__htable.h" #include "ares__htable_stvp.h" - struct ares__htable_stvp { ares__htable_stvp_val_free_t free_val; ares__htable_t *hash; }; - typedef struct { size_t key; void *val; ares__htable_stvp_t *parent; } ares__htable_stvp_bucket_t; - void ares__htable_stvp_destroy(ares__htable_stvp_t *htable) { - if (htable == NULL) + if (htable == NULL) { return; + } ares__htable_destroy(htable->hash); ares_free(htable); } - static unsigned int hash_func(const void *key, unsigned int seed) { const size_t *arg = key; @@ -60,50 +57,48 @@ static unsigned int hash_func(const void *key, unsigned int seed) seed); } - static const void *bucket_key(const void *bucket) { const ares__htable_stvp_bucket_t *arg = bucket; return &arg->key; } - static void bucket_free(void *bucket) { ares__htable_stvp_bucket_t *arg = bucket; - if (arg->parent->free_val) + if (arg->parent->free_val) { arg->parent->free_val(arg->val); + } ares_free(arg); } - -static unsigned int key_eq(const void *key1, const void *key2) +static ares_bool_t key_eq(const void *key1, const void *key2) { const size_t *k1 = key1; const size_t *k2 = key2; - if (*k1 == *k2) - return 1; + if (*k1 == *k2) { + return ARES_TRUE; + } - return 0; + return ARES_FALSE; } - -ares__htable_stvp_t *ares__htable_stvp_create( - ares__htable_stvp_val_free_t val_free) +ares__htable_stvp_t * + ares__htable_stvp_create(ares__htable_stvp_val_free_t val_free) { ares__htable_stvp_t *htable = ares_malloc(sizeof(*htable)); - if (htable == NULL) + if (htable == NULL) { goto fail; + } - htable->hash = ares__htable_create(hash_func, - bucket_key, - bucket_free, - key_eq); - if (htable->hash == NULL) + htable->hash = + ares__htable_create(hash_func, bucket_key, bucket_free, key_eq); + if (htable->hash == NULL) { goto fail; + } htable->free_val = val_free; @@ -117,77 +112,82 @@ ares__htable_stvp_t *ares__htable_stvp_create( return NULL; } - -unsigned int ares__htable_stvp_insert(ares__htable_stvp_t *htable, size_t key, - void *val) +ares_bool_t ares__htable_stvp_insert(ares__htable_stvp_t *htable, size_t key, + void *val) { ares__htable_stvp_bucket_t *bucket = NULL; - if (htable == NULL) + if (htable == NULL) { goto fail; + } bucket = ares_malloc(sizeof(*bucket)); - if (bucket == NULL) + if (bucket == NULL) { goto fail; + } bucket->parent = htable; bucket->key = key; bucket->val = val; - if (!ares__htable_insert(htable->hash, bucket)) + if (!ares__htable_insert(htable->hash, bucket)) { goto fail; + } - return 1; + return ARES_TRUE; fail: if (bucket) { ares_free(bucket); } - return 0; + return ARES_FALSE; } - -unsigned int ares__htable_stvp_get(ares__htable_stvp_t *htable, size_t key, - void **val) +ares_bool_t ares__htable_stvp_get(const ares__htable_stvp_t *htable, size_t key, + void **val) { ares__htable_stvp_bucket_t *bucket = NULL; - if (val) + if (val) { *val = NULL; + } - if (htable == NULL) - return 0; + if (htable == NULL) { + return ARES_FALSE; + } bucket = ares__htable_get(htable->hash, &key); - if (bucket == NULL) - return 0; + if (bucket == NULL) { + return ARES_FALSE; + } - if (val) + if (val) { *val = bucket->val; - return 1; + } + return ARES_TRUE; } - -void *ares__htable_stvp_get_direct(ares__htable_stvp_t *htable, size_t key) +void *ares__htable_stvp_get_direct(const ares__htable_stvp_t *htable, + size_t key) { void *val = NULL; ares__htable_stvp_get(htable, key, &val); return val; } - -unsigned int ares__htable_stvp_remove(ares__htable_stvp_t *htable, size_t key) +ares_bool_t ares__htable_stvp_remove(ares__htable_stvp_t *htable, size_t key) { - if (htable == NULL) - return 0; + if (htable == NULL) { + return ARES_FALSE; + } return ares__htable_remove(htable->hash, &key); } - -size_t ares__htable_stvp_num_keys(ares__htable_stvp_t *htable) +size_t ares__htable_stvp_num_keys(const ares__htable_stvp_t *htable) { - if (htable == NULL) + if (htable == NULL) { return 0; + } return ares__htable_num_keys(htable->hash); } diff --git a/deps/cares/src/lib/ares__htable_stvp.h b/deps/cares/src/lib/ares__htable_stvp.h index 11d9d5ed4cfc1f..003b1843feaff8 100644 --- a/deps/cares/src/lib/ares__htable_stvp.h +++ b/deps/cares/src/lib/ares__htable_stvp.h @@ -26,7 +26,8 @@ #ifndef __ARES__HTABLE_STVP_H #define __ARES__HTABLE_STVP_H -/*! \addtogroup ares__htable_stvp HashTable with size_t Key and void pointer Value +/*! \addtogroup ares__htable_stvp HashTable with size_t Key and void pointer + * Value * * This data structure wraps the base ares__htable data structure in order to * split the key and value data types as size_t and void pointer, respectively. @@ -45,70 +46,71 @@ struct ares__htable_stvp; typedef struct ares__htable_stvp ares__htable_stvp_t; /*! Callback to free value stored in hashtable - * + * * \param[in] val user-supplied value */ -typedef void (*ares__htable_stvp_val_free_t)(void *val); +typedef void (*ares__htable_stvp_val_free_t)(void *val); /*! Destroy hashtable - * + * * \param[in] htable Initialized hashtable */ void ares__htable_stvp_destroy(ares__htable_stvp_t *htable); /*! Create size_t key, void pointer value hash table - * + * * \param[in] val_free Optional. Call back to free user-supplied value. If * NULL it is expected the caller will clean up any user * supplied values. */ -ares__htable_stvp_t *ares__htable_stvp_create( - ares__htable_stvp_val_free_t val_free); +ares__htable_stvp_t * + ares__htable_stvp_create(ares__htable_stvp_val_free_t val_free); /*! Insert key/value into hash table - * + * * \param[in] htable Initialized hash table * \param[in] key key to associate with value * \param[in] val value to store (takes ownership). May be NULL. - * \return 1 on success, 0 on out of memory or misuse + * \return ARES_TRUE on success, ARES_FALSE on failure or out of memory */ -unsigned int ares__htable_stvp_insert(ares__htable_stvp_t *htable, size_t key, - void *val); +ares_bool_t ares__htable_stvp_insert(ares__htable_stvp_t *htable, size_t key, + void *val); /*! Retrieve value from hashtable based on key - * + * * \param[in] htable Initialized hash table * \param[in] key key to use to search * \param[out] val Optional. Pointer to store value. - * \return 1 on success, 0 on failure + * \return ARES_TRUE on success, ARES_FALSE on failure */ -unsigned int ares__htable_stvp_get(ares__htable_stvp_t *htable, size_t key, - void **val); +ares_bool_t ares__htable_stvp_get(const ares__htable_stvp_t *htable, size_t key, + void **val); /*! Retrieve value from hashtable directly as return value. Caveat to this * function over ares__htable_stvp_get() is that if a NULL value is stored * you cannot determine if the key is not found or the value is NULL. - * + * * \param[in] htable Initialized hash table * \param[in] key key to use to search * \return value associated with key in hashtable or NULL */ -void *ares__htable_stvp_get_direct(ares__htable_stvp_t *htable, size_t key); +void *ares__htable_stvp_get_direct(const ares__htable_stvp_t *htable, + size_t key); /*! Remove a value from the hashtable by key - * + * * \param[in] htable Initialized hash table * \param[in] key key to use to search - * \return 1 if found, 0 if not + * \return ARES_TRUE if found, ARES_FALSE if not */ -unsigned int ares__htable_stvp_remove(ares__htable_stvp_t *htable, size_t key); +ares_bool_t ares__htable_stvp_remove(ares__htable_stvp_t *htable, size_t key); /*! Retrieve the number of keys stored in the hash table - * + * * \param[in] htable Initialized hash table * \return count */ -size_t ares__htable_stvp_num_keys(ares__htable_stvp_t *htable); +size_t ares__htable_stvp_num_keys(const ares__htable_stvp_t *htable); /*! @} */ diff --git a/deps/cares/src/lib/ares__llist.c b/deps/cares/src/lib/ares__llist.c index 9ccda81a6ad6b8..be62387725e989 100644 --- a/deps/cares/src/lib/ares__llist.c +++ b/deps/cares/src/lib/ares__llist.c @@ -35,7 +35,6 @@ struct ares__llist { size_t cnt; }; - struct ares__llist_node { void *data; ares__llist_node_t *prev; @@ -43,55 +42,52 @@ struct ares__llist_node { ares__llist_t *parent; }; - ares__llist_t *ares__llist_create(ares__llist_destructor_t destruct) { - ares__llist_t *list = ares_malloc(sizeof(*list)); + ares__llist_t *list = ares_malloc_zero(sizeof(*list)); - if (list == NULL) + if (list == NULL) { return NULL; - - memset(list, 0, sizeof(*list)); + } list->destruct = destruct; return list; } - -void ares__llist_replace_destructor(ares__llist_t *list, +void ares__llist_replace_destructor(ares__llist_t *list, ares__llist_destructor_t destruct) { - if (list == NULL) + if (list == NULL) { return; + } list->destruct = destruct; } - typedef enum { ARES__LLIST_INSERT_HEAD, ARES__LLIST_INSERT_TAIL, ARES__LLIST_INSERT_BEFORE } ares__llist_insert_type_t; - -static ares__llist_node_t *ares__llist_insert_at(ares__llist_t *list, +static ares__llist_node_t *ares__llist_insert_at(ares__llist_t *list, ares__llist_insert_type_t type, - ares__llist_node_t *at, - void *val) + ares__llist_node_t *at, + void *val) { ares__llist_node_t *node = NULL; - if (list == NULL || val == NULL) + if (list == NULL || val == NULL) { return NULL; + } - node = ares_malloc(sizeof(*node)); + node = ares_malloc_zero(sizeof(*node)); - if (node == NULL) + if (node == NULL) { return NULL; + } - memset(node, 0, sizeof(*node)); node->data = val; node->parent = list; @@ -103,15 +99,17 @@ static ares__llist_node_t *ares__llist_insert_at(ares__llist_t *list, case ARES__LLIST_INSERT_HEAD: node->next = list->head; node->prev = NULL; - if (list->head) + if (list->head) { list->head->prev = node; + } list->head = node; break; case ARES__LLIST_INSERT_TAIL: node->next = NULL; node->prev = list->tail; - if (list->tail) + if (list->tail) { list->tail->next = node; + } list->tail = node; break; case ARES__LLIST_INSERT_BEFORE: @@ -120,130 +118,129 @@ static ares__llist_node_t *ares__llist_insert_at(ares__llist_t *list, at->prev = node; break; } - if (list->tail == NULL) + if (list->tail == NULL) { list->tail = node; - if (list->head == NULL) + } + if (list->head == NULL) { list->head = node; + } list->cnt++; return node; } - ares__llist_node_t *ares__llist_insert_first(ares__llist_t *list, void *val) { return ares__llist_insert_at(list, ARES__LLIST_INSERT_HEAD, NULL, val); } - ares__llist_node_t *ares__llist_insert_last(ares__llist_t *list, void *val) { return ares__llist_insert_at(list, ARES__LLIST_INSERT_TAIL, NULL, val); } - ares__llist_node_t *ares__llist_insert_before(ares__llist_node_t *node, - void *val) + void *val) { - if (node == NULL) + if (node == NULL) { return NULL; + } return ares__llist_insert_at(node->parent, ARES__LLIST_INSERT_BEFORE, node, val); } - ares__llist_node_t *ares__llist_insert_after(ares__llist_node_t *node, - void *val) + void *val) { - if (node == NULL) + if (node == NULL) { return NULL; + } - if (node->next == NULL) + if (node->next == NULL) { return ares__llist_insert_last(node->parent, val); + } return ares__llist_insert_at(node->parent, ARES__LLIST_INSERT_BEFORE, node->next, val); } - ares__llist_node_t *ares__llist_node_first(ares__llist_t *list) { - if (list == NULL) + if (list == NULL) { return NULL; + } return list->head; } - ares__llist_node_t *ares__llist_node_last(ares__llist_t *list) { - if (list == NULL) + if (list == NULL) { return NULL; + } return list->tail; } - ares__llist_node_t *ares__llist_node_next(ares__llist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->next; } - ares__llist_node_t *ares__llist_node_prev(ares__llist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->prev; } - void *ares__llist_node_val(ares__llist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->data; } - -size_t ares__llist_len(ares__llist_t *list) +size_t ares__llist_len(const ares__llist_t *list) { - if (list == NULL) + if (list == NULL) { return 0; + } return list->cnt; } - ares__llist_t *ares__llist_node_parent(ares__llist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->parent; } - void *ares__llist_first_val(ares__llist_t *list) { return ares__llist_node_val(ares__llist_node_first(list)); } - void *ares__llist_last_val(ares__llist_t *list) { return ares__llist_node_val(ares__llist_node_last(list)); } - void *ares__llist_node_claim(ares__llist_node_t *node) { void *val; ares__llist_t *list; - if (node == NULL) + if (node == NULL) { return NULL; + } list = node->parent; val = node->data; @@ -270,44 +267,46 @@ void *ares__llist_node_claim(ares__llist_node_t *node) return val; } - void ares__llist_node_destroy(ares__llist_node_t *node) { ares__llist_destructor_t destruct; void *val; - if (node == NULL) + if (node == NULL) { return; + } destruct = node->parent->destruct; val = ares__llist_node_claim(node); - if (val != NULL && destruct != NULL) + if (val != NULL && destruct != NULL) { destruct(val); + } } - void ares__llist_node_replace(ares__llist_node_t *node, void *val) { ares__llist_destructor_t destruct; - - if (node == NULL) + + if (node == NULL) { return; + } destruct = node->parent->destruct; - if (destruct != NULL) + if (destruct != NULL) { destruct(node->data); + } node->data = val; } - void ares__llist_destroy(ares__llist_t *list) { ares__llist_node_t *node; - if (list == NULL) + if (list == NULL) { return; + } while ((node = ares__llist_node_first(list)) != NULL) { ares__llist_node_destroy(node); diff --git a/deps/cares/src/lib/ares__llist.h b/deps/cares/src/lib/ares__llist.h index 950c7ac1d0c5eb..50c0f73f3a4448 100644 --- a/deps/cares/src/lib/ares__llist.h +++ b/deps/cares/src/lib/ares__llist.h @@ -49,29 +49,29 @@ struct ares__llist_node; typedef struct ares__llist_node ares__llist_node_t; /*! Callback to free user-defined node data - * + * * \param[in] data user supplied data */ -typedef void (*ares__llist_destructor_t)(void *data); +typedef void (*ares__llist_destructor_t)(void *data); /*! Create a linked list object - * + * * \param[in] destruct Optional. Destructor to call on all removed nodes * \return linked list object or NULL on out of memory */ -ares__llist_t *ares__llist_create(ares__llist_destructor_t destruct); +ares__llist_t *ares__llist_create(ares__llist_destructor_t destruct); /*! Replace destructor for linked list nodes. Typically this is used * when wanting to disable the destructor by using NULL. - * + * * \param[in] list Initialized linked list object * \param[in] destruct replacement destructor, NULL is allowed */ -void ares__llist_replace_destructor(ares__llist_t *list, - ares__llist_destructor_t destruct); +void ares__llist_replace_destructor(ares__llist_t *list, + ares__llist_destructor_t destruct); /*! Insert value as the first node in the linked list - * + * * \param[in] list Initialized linked list object * \param[in] val user-supplied value. * \return node object referencing place in list, or null if out of memory or @@ -80,7 +80,7 @@ void ares__llist_replace_destructor(ares__llist_t *list, ares__llist_node_t *ares__llist_insert_first(ares__llist_t *list, void *val); /*! Insert value as the last node in the linked list - * + * * \param[in] list Initialized linked list object * \param[in] val user-supplied value. * \return node object referencing place in list, or null if out of memory or @@ -89,111 +89,111 @@ ares__llist_node_t *ares__llist_insert_first(ares__llist_t *list, void *val); ares__llist_node_t *ares__llist_insert_last(ares__llist_t *list, void *val); /*! Insert value before specified node in the linked list - * + * * \param[in] node node referenced to insert before * \param[in] val user-supplied value. * \return node object referencing place in list, or null if out of memory or * misuse */ ares__llist_node_t *ares__llist_insert_before(ares__llist_node_t *node, - void *val); + void *val); /*! Insert value after specified node in the linked list - * + * * \param[in] node node referenced to insert after * \param[in] val user-supplied value. * \return node object referencing place in list, or null if out of memory or * misuse */ ares__llist_node_t *ares__llist_insert_after(ares__llist_node_t *node, - void *val); + void *val); /*! Obtain first node in list - * + * * \param[in] list Initialized list object * \return first node in list or NULL if none */ ares__llist_node_t *ares__llist_node_first(ares__llist_t *list); /*! Obtain last node in list - * + * * \param[in] list Initialized list object * \return last node in list or NULL if none */ ares__llist_node_t *ares__llist_node_last(ares__llist_t *list); /*! Obtain next node in respect to specified node - * + * * \param[in] node Node referenced * \return node or NULL if none */ ares__llist_node_t *ares__llist_node_next(ares__llist_node_t *node); /*! Obtain previous node in respect to specified node - * + * * \param[in] node Node referenced * \return node or NULL if none */ ares__llist_node_t *ares__llist_node_prev(ares__llist_node_t *node); /*! Obtain value from node - * + * * \param[in] node Node referenced * \return user provided value from node */ -void *ares__llist_node_val(ares__llist_node_t *node); +void *ares__llist_node_val(ares__llist_node_t *node); /*! Obtain the number of entries in the list - * + * * \param[in] list Initialized list object * \return count */ -size_t ares__llist_len(ares__llist_t *list); +size_t ares__llist_len(const ares__llist_t *list); /*! Obtain list object from referenced node - * + * * \param[in] node Node referenced * \return list object node belongs to */ -ares__llist_t *ares__llist_node_parent(ares__llist_node_t *node); +ares__llist_t *ares__llist_node_parent(ares__llist_node_t *node); /*! Obtain the first user-supplied value in the list - * + * * \param[in] list Initialized list object * \return first user supplied value or NULL if none */ -void *ares__llist_first_val(ares__llist_t *list); +void *ares__llist_first_val(ares__llist_t *list); /*! Obtain the last user-supplied value in the list - * + * * \param[in] list Initialized list object * \return last user supplied value or NULL if none */ -void *ares__llist_last_val(ares__llist_t *list); +void *ares__llist_last_val(ares__llist_t *list); /*! Take ownership of user-supplied value in list without calling destructor. * Will unchain entry from list. - * + * * \param[in] node Node referenced * \return user supplied value */ -void *ares__llist_node_claim(ares__llist_node_t *node); +void *ares__llist_node_claim(ares__llist_node_t *node); /*! Replace user-supplied value for node - * + * * \param[in] node Node referenced * \param[in] val new user-supplied value */ void ares__llist_node_replace(ares__llist_node_t *node, void *val); /*! Destroy the node, removing it from the list and calling destructor. - * + * * \param[in] node Node referenced */ void ares__llist_node_destroy(ares__llist_node_t *node); /*! Destroy the list object and all nodes in the list. - * + * * \param[in] list Initialized list object */ void ares__llist_destroy(ares__llist_t *list); diff --git a/deps/cares/src/lib/ares__parse_into_addrinfo.c b/deps/cares/src/lib/ares__parse_into_addrinfo.c index 73a17ea0ed697d..aa14022b8a11dd 100644 --- a/deps/cares/src/lib/ares__parse_into_addrinfo.c +++ b/deps/cares/src/lib/ares__parse_into_addrinfo.c @@ -1,6 +1,7 @@ /* MIT License * * Copyright (c) 2019 Andrew Selivanov + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -35,8 +36,6 @@ # include #endif -#include "ares_nameser.h" - #ifdef HAVE_STRINGS_H # include #endif @@ -46,194 +45,140 @@ #endif #include "ares.h" -#include "ares_dns.h" #include "ares_private.h" -int ares__parse_into_addrinfo(const unsigned char *abuf, - int alen, int cname_only_is_enodata, - unsigned short port, - struct ares_addrinfo *ai) +ares_status_t ares__parse_into_addrinfo(const unsigned char *abuf, size_t alen, + ares_bool_t cname_only_is_enodata, + unsigned short port, + struct ares_addrinfo *ai) { - unsigned int qdcount, ancount; - int status, i, rr_type, rr_class, rr_len, rr_ttl; - int got_a = 0, got_aaaa = 0, got_cname = 0; - long len; - const unsigned char *aptr; - char *question_hostname = NULL; - char *hostname, *rr_name = NULL, *rr_data; - struct ares_addrinfo_cname *cname, *cnames = NULL; - struct ares_addrinfo_node *nodes = 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, &question_hostname, &len, 0); - if (status != ARES_SUCCESS) - return status; - if (aptr + len + QFIXEDSZ > abuf + alen) - { - status = ARES_EBADRESP; - goto failed_stat; + ares_status_t status; + ares_dns_record_t *dnsrec = NULL; + size_t i; + size_t ancount; + const char *hostname = NULL; + ares_bool_t got_a = ARES_FALSE; + ares_bool_t got_aaaa = ARES_FALSE; + ares_bool_t got_cname = ARES_FALSE; + struct ares_addrinfo_cname *cnames = NULL; + struct ares_addrinfo_node *nodes = NULL; + + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } + + /* Save question hostname */ + status = ares_dns_record_query_get(dnsrec, 0, &hostname, NULL, NULL); + if (status != ARES_SUCCESS) { + goto done; + } + + ancount = ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); + if (ancount == 0) { + status = ARES_ENODATA; + goto done; + } + + for (i = 0; i < ancount; i++) { + const char *rname = NULL; + ares_dns_rec_type_t rtype; + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); + + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN) { + continue; } - hostname = question_hostname; - - aptr += len + QFIXEDSZ; - - /* 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, 0); - if (status != ARES_SUCCESS) - { - rr_name = NULL; - goto failed_stat; - } - - aptr += len; - if (aptr + RRFIXEDSZ > abuf + alen) - { - status = ARES_EBADRESP; - goto failed_stat; - } - rr_type = DNS_RR_TYPE(aptr); - rr_class = DNS_RR_CLASS(aptr); - rr_len = DNS_RR_LEN(aptr); - rr_ttl = DNS_RR_TTL(aptr); - aptr += RRFIXEDSZ; - if (aptr + rr_len > abuf + alen) - { - status = ARES_EBADRESP; - goto failed_stat; - } - - if (rr_class == C_IN && rr_type == T_A - && rr_len == sizeof(struct in_addr) - && strcasecmp(rr_name, hostname) == 0) - { - got_a = 1; - if (aptr + sizeof(struct in_addr) > abuf + alen) - { /* LCOV_EXCL_START: already checked above */ - status = ARES_EBADRESP; - goto failed_stat; - } /* LCOV_EXCL_STOP */ - - status = ares_append_ai_node(AF_INET, port, rr_ttl, aptr, &nodes); - if (status != ARES_SUCCESS) - goto failed_stat; - } - else if (rr_class == C_IN && rr_type == T_AAAA - && rr_len == sizeof(struct ares_in6_addr) - && strcasecmp(rr_name, hostname) == 0) - { - got_aaaa = 1; - if (aptr + sizeof(struct ares_in6_addr) > abuf + alen) - { /* LCOV_EXCL_START: already checked above */ - status = ARES_EBADRESP; - goto failed_stat; - } /* LCOV_EXCL_STOP */ - - status = ares_append_ai_node(AF_INET6, port, rr_ttl, aptr, &nodes); - if (status != ARES_SUCCESS) - goto failed_stat; - } - - if (rr_class == C_IN && rr_type == T_CNAME) - { - got_cname = 1; - status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data, - &len, 1); - if (status != ARES_SUCCESS) - { - goto failed_stat; - } - - /* Decode the RR data and replace the hostname with it. */ - /* SA: Seems wrong as it introduses order dependency. */ - hostname = rr_data; - - cname = ares__append_addrinfo_cname(&cnames); - if (!cname) - { - status = ARES_ENOMEM; - ares_free(rr_data); - goto failed_stat; - } - cname->ttl = rr_ttl; - cname->alias = rr_name; - cname->name = rr_data; - rr_name = NULL; - } - else - { - /* rr_name is only saved for cname */ - ares_free(rr_name); - rr_name = NULL; - } - - - aptr += rr_len; - if (aptr > abuf + alen) - { /* LCOV_EXCL_START: already checked above */ - status = ARES_EBADRESP; - goto failed_stat; - } /* LCOV_EXCL_STOP */ + rtype = ares_dns_rr_get_type(rr); + rname = ares_dns_rr_get_name(rr); + + /* Old code did this hostname sanity check */ + if ((rtype == ARES_REC_TYPE_A || rtype == ARES_REC_TYPE_AAAA) && + strcasecmp(rname, hostname) != 0) { + continue; } - if (status == ARES_SUCCESS) - { - if (!got_a && !got_aaaa) - { - if (!got_cname || (got_cname && cname_only_is_enodata)) - { - status = ARES_ENODATA; - goto failed_stat; - } - } - - /* save the question hostname as ai->name */ - if (ai->name == NULL || strcasecmp(ai->name, question_hostname) != 0) - { - ares_free(ai->name); - ai->name = ares_strdup(question_hostname); - if (!ai->name) - { - status = ARES_ENOMEM; - goto failed_stat; - } - } - - if (got_a || got_aaaa) - { - ares__addrinfo_cat_nodes(&ai->nodes, nodes); - nodes = NULL; - } - - if (got_cname) - { - ares__addrinfo_cat_cnames(&ai->cnames, cnames); - cnames = NULL; - } + if (rtype == ARES_REC_TYPE_CNAME) { + struct ares_addrinfo_cname *cname; + + got_cname = ARES_TRUE; + /* replace hostname with data from cname + * SA: Seems wrong as it introduces order dependency. */ + hostname = ares_dns_rr_get_str(rr, ARES_RR_CNAME_CNAME); + + cname = ares__append_addrinfo_cname(&cnames); + if (cname == NULL) { + status = ARES_ENOMEM; + goto done; + } + cname->ttl = (int)ares_dns_rr_get_ttl(rr); + cname->alias = ares_strdup(ares_dns_rr_get_name(rr)); + if (cname->alias == NULL) { + status = ARES_ENOMEM; + goto done; + } + cname->name = ares_strdup(hostname); + if (cname->name == NULL) { + status = ARES_ENOMEM; + goto done; + } + } else if (rtype == ARES_REC_TYPE_A) { + got_a = ARES_TRUE; + status = + ares_append_ai_node(AF_INET, port, ares_dns_rr_get_ttl(rr), + ares_dns_rr_get_addr(rr, ARES_RR_A_ADDR), &nodes); + if (status != ARES_SUCCESS) { + goto done; + } + } else if (rtype == ARES_REC_TYPE_AAAA) { + got_aaaa = ARES_TRUE; + status = ares_append_ai_node(AF_INET6, port, ares_dns_rr_get_ttl(rr), + ares_dns_rr_get_addr6(rr, ARES_RR_AAAA_ADDR), + &nodes); + if (status != ARES_SUCCESS) { + goto done; + } + } else { + continue; } + } + + if (!got_a && !got_aaaa && + (!got_cname || (got_cname && cname_only_is_enodata))) { + status = ARES_ENODATA; + goto done; + } + + /* save the hostname as ai->name */ + if (ai->name == NULL || strcasecmp(ai->name, hostname) != 0) { + ares_free(ai->name); + ai->name = ares_strdup(hostname); + if (ai->name == NULL) { + status = ARES_ENOMEM; + goto done; + } + } - ares_free(question_hostname); - return status; + if (got_a || got_aaaa) { + ares__addrinfo_cat_nodes(&ai->nodes, nodes); + nodes = NULL; + } -failed_stat: - ares_free(question_hostname); - ares_free(rr_name); + if (got_cname) { + ares__addrinfo_cat_cnames(&ai->cnames, cnames); + cnames = NULL; + } + +done: ares__freeaddrinfo_cnames(cnames); ares__freeaddrinfo_nodes(nodes); + ares_dns_record_destroy(dnsrec); + + /* compatibiltiy */ + if (status == ARES_EBADNAME) { + status = ARES_EBADRESP; + } + return status; } diff --git a/deps/cares/src/lib/ares__read_line.c b/deps/cares/src/lib/ares__read_line.c index 38beda6fb06120..d65ac1fcf85a18 100644 --- a/deps/cares/src/lib/ares__read_line.c +++ b/deps/cares/src/lib/ares__read_line.c @@ -28,7 +28,6 @@ #include "ares_setup.h" #include "ares.h" -#include "ares_nowarn.h" #include "ares_private.h" /* This is an internal function. Its contract is to read a line from @@ -39,46 +38,45 @@ * 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) +ares_status_t ares__read_line(FILE *fp, char **buf, size_t *bufsize) { - char *newbuf; + char *newbuf; size_t offset = 0; size_t len; - if (*buf == NULL) - { - *buf = ares_malloc(128); - if (!*buf) - return ARES_ENOMEM; - *bufsize = 128; + if (*buf == NULL) { + *buf = ares_malloc(128); + if (!*buf) { + return ARES_ENOMEM; } + *bufsize = 128; + } - for (;;) - { - int bytestoread = aresx_uztosi(*bufsize - offset); + for (;;) { + int bytestoread = (int)(*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; + if (!fgets(*buf + offset, bytestoread, fp)) { + return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF; + } + len = offset + ares_strlen(*buf + offset); + if ((*buf)[len - 1] == '\n') { + (*buf)[len - 1] = 0; + break; + } + offset = len; + if (len < *bufsize - 1) { + continue; + } - /* Allocate more space. */ - newbuf = ares_realloc(*buf, *bufsize * 2); - if (!newbuf) - { - ares_free(*buf); - *buf = NULL; - return ARES_ENOMEM; - } - *buf = newbuf; - *bufsize *= 2; + /* Allocate more space. */ + newbuf = ares_realloc(*buf, *bufsize * 2); + if (!newbuf) { + ares_free(*buf); + *buf = NULL; + return ARES_ENOMEM; } + *buf = newbuf; + *bufsize *= 2; + } return ARES_SUCCESS; } diff --git a/deps/cares/src/lib/ares__readaddrinfo.c b/deps/cares/src/lib/ares__readaddrinfo.c index fe999467828dd0..950d13042387db 100644 --- a/deps/cares/src/lib/ares__readaddrinfo.c +++ b/deps/cares/src/lib/ares__readaddrinfo.c @@ -38,27 +38,33 @@ #include "ares.h" #include "ares_inet_net_pton.h" -#include "ares_nowarn.h" #include "ares_private.h" #define MAX_ALIASES 40 -int ares__readaddrinfo(FILE *fp, - const char *name, - unsigned short port, - const struct ares_addrinfo_hints *hints, - struct ares_addrinfo *ai) +ares_status_t ares__readaddrinfo(FILE *fp, const char *name, + unsigned short port, + const struct ares_addrinfo_hints *hints, + struct ares_addrinfo *ai) { - char *line = NULL, *p, *q; - char *txtaddr, *txthost, *txtalias; - char *aliases[MAX_ALIASES]; - unsigned int i, alias_count; - int status = ARES_SUCCESS; - size_t linesize; - struct ares_addrinfo_cname *cname = NULL, *cnames = NULL; - struct ares_addrinfo_node *nodes = NULL; - int match_with_alias, match_with_canonical; - int want_cname = hints->ai_flags & ARES_AI_CANONNAME; + char *line = NULL; + char *p; + char *q; + const char *txtaddr; + const char *txthost; + char *txtalias; + char *aliases[MAX_ALIASES]; + size_t i; + size_t alias_count; + ares_status_t status = ARES_SUCCESS; + size_t linesize; + struct ares_addrinfo_cname *cname = NULL; + struct ares_addrinfo_cname *cnames = NULL; + struct ares_addrinfo_node *nodes = NULL; + ares_bool_t match_with_alias; + ares_bool_t match_with_canonical; + ares_bool_t want_cname = + (hints->ai_flags & ARES_AI_CANONNAME) ? ARES_TRUE : ARES_FALSE; /* Validate family */ switch (hints->ai_family) { @@ -71,182 +77,175 @@ int ares__readaddrinfo(FILE *fp, } ai->name = ares_strdup(name); - if(!ai->name) - { - status = ARES_ENOMEM; - goto fail; - } + if (!ai->name) { + status = ARES_ENOMEM; + goto fail; + } - while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) - { - match_with_alias = 0; - match_with_canonical = 0; - alias_count = 0; - /* Trim line comment. */ - p = line; - while (*p && (*p != '#')) - p++; - *p = '\0'; + while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { + match_with_alias = ARES_FALSE; + match_with_canonical = ARES_FALSE; + alias_count = 0; + /* 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'; + /* 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; + /* 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; + /* 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; + /* 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'; + /* Null terminate address part. */ + *p = '\0'; - /* Advance to host name */ + /* Advance to host name */ + p++; + while (*p && ISSPACE(*p)) { p++; - while (*p && ISSPACE(*p)) - p++; - if (!*p) - /* Ignore line if reached end of line. */ - continue; /* LCOV_EXCL_LINE: trailing whitespace already stripped */ + } + if (!*p) { + /* Ignore line if reached end of line. */ + continue; /* LCOV_EXCL_LINE: trailing whitespace already stripped */ + } - /* Pointer to start of host name. */ - txthost = p; + /* Pointer to start of host name. */ + txthost = p; - /* Advance past host name. */ - while (*p && !ISSPACE(*p)) - 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; - } + /* 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'; + /* Null terminate host name. */ + *p = '\0'; - /* Find out if host name matches with canonical host name. */ - if (strcasecmp(txthost, name) == 0) - { - match_with_canonical = 1; - } + /* Find out if host name matches with canonical host name. */ + if (strcasecmp(txthost, name) == 0) { + match_with_canonical = ARES_TRUE; + } - /* Find out if host name matches with one of the aliases. */ - while (txtalias) - { - p = txtalias; - while (*p && !ISSPACE(*p)) - p++; - q = p; - while (*q && ISSPACE(*q)) - q++; - *p = '\0'; - if (strcasecmp(txtalias, name) == 0) - { - match_with_alias = 1; - if (!want_cname) - break; - } - if (alias_count < MAX_ALIASES) - { - aliases[alias_count++] = txtalias; - } - txtalias = *q ? q : NULL; + /* Find out if host name matches with one of the aliases. */ + while (txtalias) { + p = txtalias; + while (*p && !ISSPACE(*p)) { + p++; + } + q = p; + while (*q && ISSPACE(*q)) { + q++; + } + *p = '\0'; + if (strcasecmp(txtalias, name) == 0) { + match_with_alias = ARES_TRUE; + if (!want_cname) { + break; } + } + if (alias_count < MAX_ALIASES) { + aliases[alias_count++] = txtalias; + } + txtalias = *q ? q : NULL; + } - /* Try next line if host does not match. */ - if (!match_with_alias && !match_with_canonical) - { - continue; - } + /* Try next line if host does not match. */ + if (!match_with_alias && !match_with_canonical) { + continue; + } - /* - * Convert address string to network address for the requested families. - * Actual address family possible values are AF_INET and AF_INET6 only. - */ - if ((hints->ai_family == AF_INET) || (hints->ai_family == AF_UNSPEC)) - { - struct in_addr addr4; - if (ares_inet_pton(AF_INET, txtaddr, &addr4) == 1) - { - status = ares_append_ai_node(AF_INET, port, 0, &addr4, &nodes); - if (status != ARES_SUCCESS) - { - goto fail; - } - } + /* + * Convert address string to network address for the requested families. + * Actual address family possible values are AF_INET and AF_INET6 only. + */ + if ((hints->ai_family == AF_INET) || (hints->ai_family == AF_UNSPEC)) { + struct in_addr addr4; + if (ares_inet_pton(AF_INET, txtaddr, &addr4) == 1) { + status = ares_append_ai_node(AF_INET, port, 0, &addr4, &nodes); + if (status != ARES_SUCCESS) { + goto fail; } - if ((hints->ai_family == AF_INET6) || (hints->ai_family == AF_UNSPEC)) - { - struct ares_in6_addr addr6; - if (ares_inet_pton(AF_INET6, txtaddr, &addr6) == 1) - { - status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &nodes); - if (status != ARES_SUCCESS) - { - goto fail; - } - } + } + } + if ((hints->ai_family == AF_INET6) || (hints->ai_family == AF_UNSPEC)) { + struct ares_in6_addr addr6; + if (ares_inet_pton(AF_INET6, txtaddr, &addr6) == 1) { + status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &nodes); + if (status != ARES_SUCCESS) { + goto fail; } + } + } - if (want_cname) - { - for (i = 0; i < alias_count; ++i) - { - cname = ares__append_addrinfo_cname(&cnames); - if (!cname) - { - status = ARES_ENOMEM; - goto fail; - } - cname->alias = ares_strdup(aliases[i]); - cname->name = ares_strdup(txthost); - } - /* No aliases, cname only. */ - if(!alias_count) - { - cname = ares__append_addrinfo_cname(&cnames); - if (!cname) - { - status = ARES_ENOMEM; - goto fail; - } - cname->name = ares_strdup(txthost); - } + if (want_cname) { + for (i = 0; i < alias_count; ++i) { + cname = ares__append_addrinfo_cname(&cnames); + if (!cname) { + status = ARES_ENOMEM; + goto fail; + } + cname->alias = ares_strdup(aliases[i]); + cname->name = ares_strdup(txthost); + } + /* No aliases, cname only. */ + if (!alias_count) { + cname = ares__append_addrinfo_cname(&cnames); + if (!cname) { + status = ARES_ENOMEM; + goto fail; } + cname->name = ares_strdup(txthost); + } } + } /* Last read failed. */ - if (status == ARES_ENOMEM) - { - goto fail; - } + if (status == ARES_ENOMEM) { + goto fail; + } /* If no results, its a failure */ - if (!nodes) - { - status = ARES_ENOTFOUND; - goto fail; - } + if (!nodes) { + status = ARES_ENOTFOUND; + goto fail; + } /* Free line buffer. */ ares_free(line); diff --git a/deps/cares/src/lib/ares__slist.c b/deps/cares/src/lib/ares__slist.c index 9974bc045a357d..4ecac54dd1c0a3 100644 --- a/deps/cares/src/lib/ares__slist.c +++ b/deps/cares/src/lib/ares__slist.c @@ -32,14 +32,13 @@ #define ARES__SLIST_START_LEVELS 4 - struct ares__slist { ares_rand_state *rand_state; unsigned char rand_data[8]; size_t rand_bits; ares__slist_node_t **head; - size_t levels; + size_t levels; ares__slist_node_t *tail; ares__slist_cmp_t cmp; @@ -47,7 +46,6 @@ struct ares__slist { size_t cnt; }; - struct ares__slist_node { void *data; ares__slist_node_t **prev; @@ -56,41 +54,37 @@ struct ares__slist_node { ares__slist_t *parent; }; - -ares__slist_t *ares__slist_create(ares_rand_state *rand_state, - ares__slist_cmp_t cmp, +ares__slist_t *ares__slist_create(ares_rand_state *rand_state, + ares__slist_cmp_t cmp, ares__slist_destructor_t destruct) { ares__slist_t *list; - if (rand_state == NULL || cmp == NULL) + if (rand_state == NULL || cmp == NULL) { return NULL; + } - list = ares_malloc(sizeof(*list)); + list = ares_malloc_zero(sizeof(*list)); - if (list == NULL) + if (list == NULL) { return NULL; - - memset(list, 0, sizeof(*list)); + } list->rand_state = rand_state; list->cmp = cmp; list->destruct = destruct; - list->levels = ARES__SLIST_START_LEVELS; - list->head = ares_malloc(sizeof(*list->head) * list->levels); + list->levels = ARES__SLIST_START_LEVELS; + list->head = ares_malloc_zero(sizeof(*list->head) * list->levels); if (list->head == NULL) { ares_free(list); return NULL; } - memset(list->head, 0, sizeof(*list->head) * list->levels); - return list; } - -static unsigned int ares__slist_coin_flip(ares__slist_t *list) +static ares_bool_t ares__slist_coin_flip(ares__slist_t *list) { size_t total_bits = sizeof(list->rand_data) * 8; size_t bit; @@ -108,106 +102,63 @@ static unsigned int ares__slist_coin_flip(ares__slist_t *list) bit = total_bits - list->rand_bits; list->rand_bits--; - return (list->rand_data[bit / 8] & (1 << (bit % 8)))?1:0; + return (list->rand_data[bit / 8] & (1 << (bit % 8))) ? ARES_TRUE : ARES_FALSE; } - -void ares__slist_replace_destructor(ares__slist_t *list, +void ares__slist_replace_destructor(ares__slist_t *list, ares__slist_destructor_t destruct) { - if (list == NULL) + if (list == NULL) { return; + } list->destruct = destruct; } -/* Uses public domain code snipets from http://graphics.stanford.edu/~seander/bithacks.html */ - -static size_t ares__round_up_pow2(size_t n) -{ - n--; - n |= n >> 1; - n |= n >> 2; - n |= n >> 4; - n |= n >> 8; - n |= n >> 16; - if (sizeof(size_t) > 4) - n |= n >> 32; - n++; - return n; -} - - -static size_t ares__log2(size_t n) -{ - static const unsigned char tab32[32] = { - 0, 1, 28, 2, 29, 14, 24, 3, - 30, 22, 20, 15, 25, 17, 4, 8, - 31, 27, 13, 23, 21, 19, 16, 7, - 26, 12, 18, 6, 11, 5, 10, 9 - }; - static const unsigned char tab64[64] = { - 63, 0, 58, 1, 59, 47, 53, 2, - 60, 39, 48, 27, 54, 33, 42, 3, - 61, 51, 37, 40, 49, 18, 28, 20, - 55, 30, 34, 11, 43, 14, 22, 4, - 62, 57, 46, 52, 38, 26, 32, 41, - 50, 36, 17, 19, 29, 10, 13, 21, - 56, 45, 25, 31, 35, 16, 9, 12, - 44, 24, 15, 8, 23, 7, 6, 5 - }; - - if (sizeof(size_t) == 4) - return tab32[(size_t)(n*0x077CB531) >> 27]; - - return tab64[((size_t)(n*0x07EDD5E59A4E28C2)) >> 58]; -} - - -static size_t ares__slist_max_level(ares__slist_t *list) +static size_t ares__slist_max_level(const ares__slist_t *list) { size_t max_level = 0; - if (list->cnt+1 <= (1 << ARES__SLIST_START_LEVELS)) { + if (list->cnt + 1 <= (1 << ARES__SLIST_START_LEVELS)) { max_level = ARES__SLIST_START_LEVELS; } else { - max_level = ares__log2(ares__round_up_pow2(list->cnt+1)); + max_level = ares__log2(ares__round_up_pow2(list->cnt + 1)); } - if (list->levels > max_level) + if (list->levels > max_level) { max_level = list->levels; + } return max_level; } - static size_t ares__slist_calc_level(ares__slist_t *list) { size_t max_level = ares__slist_max_level(list); size_t level; - for (level=1; ares__slist_coin_flip(list) && level < max_level; level++) + for (level = 1; ares__slist_coin_flip(list) && level < max_level; level++) ; return level; } - ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val) { ares__slist_node_t *node = NULL; ares__slist_node_t *left = NULL; size_t i; - if (list == NULL || val == NULL) + if (list == NULL || val == NULL) { return NULL; + } - node = ares_malloc(sizeof(*node)); + node = ares_malloc_zero(sizeof(*node)); - if (node == NULL) + if (node == NULL) { goto fail; + } - memset(node, 0, sizeof(*node)); node->data = val; node->parent = list; @@ -215,42 +166,38 @@ ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val) node->levels = ares__slist_calc_level(list); /* Allocate array of next and prev nodes for linking each level */ - node->next = ares_malloc(sizeof(*node->next) * node->levels); - if (node->next == NULL) + node->next = ares_malloc_zero(sizeof(*node->next) * node->levels); + if (node->next == NULL) { goto fail; + } - memset(node->next, 0, sizeof(*node->next) * node->levels); - - node->prev = ares_malloc(sizeof(*node->prev) * node->levels); - if (node->prev == NULL) + node->prev = ares_malloc_zero(sizeof(*node->prev) * node->levels); + if (node->prev == NULL) { goto fail; - - memset(node->prev, 0, sizeof(*node->prev) * node->levels); + } /* If the number of levels is greater than we currently support in the slist, * increase the count */ if (list->levels < node->levels) { - size_t zero_len = sizeof(*list->head) * (node->levels - list->levels); - size_t offset = sizeof(*list->head) * list->levels; - void *ptr = ares_realloc(list->head, sizeof(*list->head) * node->levels); - if (ptr == NULL) + void *ptr = + ares_realloc_zero(list->head, sizeof(*list->head) * list->levels, + sizeof(*list->head) * node->levels); + if (ptr == NULL) { goto fail; + } - memset((unsigned char *)ptr + offset, 0, zero_len); - list->head = ptr; - list->levels = node->levels; + list->head = ptr; + list->levels = node->levels; } /* Scan from highest level in the slist, even if we're not using that number * of levels for this entry as this is what makes it O(log n) */ - for (i=list->levels; i-- > 0; ) { - /* set left if left is NULL and the current node value is greater than the + for (i = list->levels; i-- > 0;) { + /* set left if left is NULL and the current node value is greater than the * head at this level */ - if (left == NULL && - list->head[i] != NULL && - list->cmp(node->data, list->head[i]->data) > 0 - ) { + if (left == NULL && list->head[i] != NULL && + list->cmp(node->data, list->head[i]->data) > 0) { left = list->head[i]; } @@ -263,9 +210,10 @@ ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val) } /* search only as we didn't randomly select this number of levels */ - if (i >= node->levels) + if (i >= node->levels) { continue; - + } + if (left == NULL) { /* head insertion */ node->next[i] = list->head[i]; @@ -302,25 +250,28 @@ ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val) return NULL; } - -ares__slist_node_t *ares__slist_node_find(ares__slist_t *list, const void *val) +ares__slist_node_t *ares__slist_node_find(const ares__slist_t *list, + const void *val) { size_t i; ares__slist_node_t *node = NULL; - int rv = -1; + int rv = -1; - if (list == NULL || val == NULL) + if (list == NULL || val == NULL) { return NULL; + } /* Scan nodes starting at the highest level. For each level scan forward * until the value is between the prior and next node, or if equal quit * as we found a match */ - for (i=list->levels; i-- > 0; ) { - if (node == NULL) + for (i = list->levels; i-- > 0;) { + if (node == NULL) { node = list->head[i]; + } - if (node == NULL) + if (node == NULL) { continue; + } do { rv = list->cmp(val, node->data); @@ -359,91 +310,89 @@ ares__slist_node_t *ares__slist_node_find(ares__slist_t *list, const void *val) return node; } - -ares__slist_node_t *ares__slist_node_first(ares__slist_t *list) +ares__slist_node_t *ares__slist_node_first(const ares__slist_t *list) { - if (list == NULL) + if (list == NULL) { return NULL; + } return list->head[0]; } - -ares__slist_node_t *ares__slist_node_last(ares__slist_t *list) +ares__slist_node_t *ares__slist_node_last(const ares__slist_t *list) { - if (list == NULL) + if (list == NULL) { return NULL; + } return list->tail; } - -ares__slist_node_t *ares__slist_node_next(ares__slist_node_t *node) +ares__slist_node_t *ares__slist_node_next(const ares__slist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->next[0]; } - -ares__slist_node_t *ares__slist_node_prev(ares__slist_node_t *node) +ares__slist_node_t *ares__slist_node_prev(const ares__slist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->prev[0]; } - void *ares__slist_node_val(ares__slist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->data; } - -size_t ares__slist_len(ares__slist_t *list) +size_t ares__slist_len(const ares__slist_t *list) { - if (list == NULL) + if (list == NULL) { return 0; + } return list->cnt; } - ares__slist_t *ares__slist_node_parent(ares__slist_node_t *node) { - if (node == NULL) + if (node == NULL) { return NULL; + } return node->parent; } - -void *ares__slist_first_val(ares__slist_t *list) +void *ares__slist_first_val(const ares__slist_t *list) { return ares__slist_node_val(ares__slist_node_first(list)); } - -void *ares__slist_last_val(ares__slist_t *list) +void *ares__slist_last_val(const ares__slist_t *list) { return ares__slist_node_val(ares__slist_node_last(list)); } - void *ares__slist_node_claim(ares__slist_node_t *node) { void *val; ares__slist_t *list; size_t i; - if (node == NULL) + if (node == NULL) { return NULL; + } list = node->parent; val = node->data; /* relink each node at each level */ - for (i=node->levels; i-- > 0; ) { + for (i = node->levels; i-- > 0;) { if (node->next[i] == NULL) { if (i == 0) { list->tail = node->prev[0]; @@ -468,29 +417,30 @@ void *ares__slist_node_claim(ares__slist_node_t *node) return val; } - void ares__slist_node_destroy(ares__slist_node_t *node) { ares__slist_destructor_t destruct; void *val; - if (node == NULL) + if (node == NULL) { return; + } destruct = node->parent->destruct; - val = ares__slist_node_claim(node); + val = ares__slist_node_claim(node); - if (val != NULL && destruct != NULL) + if (val != NULL && destruct != NULL) { destruct(val); + } } - void ares__slist_destroy(ares__slist_t *list) { ares__slist_node_t *node; - if (list == NULL) + if (list == NULL) { return; + } while ((node = ares__slist_node_first(list)) != NULL) { ares__slist_node_destroy(node); diff --git a/deps/cares/src/lib/ares__slist.h b/deps/cares/src/lib/ares__slist.h index 2cce2171647b95..23488ff952a0d5 100644 --- a/deps/cares/src/lib/ares__slist.h +++ b/deps/cares/src/lib/ares__slist.h @@ -60,40 +60,40 @@ struct ares__slist_node; typedef struct ares__slist_node ares__slist_node_t; /*! SkipList Node Value destructor callback - * + * * \param[in] data User-defined data to destroy */ -typedef void (*ares__slist_destructor_t)(void *data); +typedef void (*ares__slist_destructor_t)(void *data); /*! SkipList comparison function - * + * * \param[in] data1 First user-defined data object * \param[in] data2 Second user-defined data object * \return < 0 if data1 < data1, > 0 if data1 > data2, 0 if data1 == data2 */ -typedef int (*ares__slist_cmp_t)(const void *data1, const void *data2); +typedef int (*ares__slist_cmp_t)(const void *data1, const void *data2); /*! Create SkipList - * + * * \param[in] rand_state Initialized ares random state. * \param[in] cmp SkipList comparison function * \param[in] destruct SkipList Node Value Destructor. Optional, use NULL. * \return Initialized SkipList Object or NULL on misuse or ENOMEM - */ -ares__slist_t *ares__slist_create(ares_rand_state *rand_state, - ares__slist_cmp_t cmp, - ares__slist_destructor_t destruct); + */ +ares__slist_t *ares__slist_create(ares_rand_state *rand_state, + ares__slist_cmp_t cmp, + ares__slist_destructor_t destruct); /*! Replace SkipList Node Value Destructor - * + * * \param[in] list Initialized SkipList Object * \param[in] destruct Replacement destructor. May be NULL. */ -void ares__slist_replace_destructor(ares__slist_t *list, - ares__slist_destructor_t destruct); +void ares__slist_replace_destructor(ares__slist_t *list, + ares__slist_destructor_t destruct); /*! Insert Value into SkipList - * + * * \param[in] list Initialized SkipList Object * \param[in] val Node Value. Must not be NULL. Function takes ownership * and will have destructor called. @@ -102,95 +102,96 @@ void ares__slist_replace_destructor(ares__slist_t *list, ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val); /*! Fetch first node in SkipList - * + * * \param[in] list Initialized SkipList Object * \return SkipList Node Object or NULL if none */ -ares__slist_node_t *ares__slist_node_first(ares__slist_t *list); +ares__slist_node_t *ares__slist_node_first(const ares__slist_t *list); /*! Fetch last node in SkipList - * + * * \param[in] list Initialized SkipList Object * \return SkipList Node Object or NULL if none */ -ares__slist_node_t *ares__slist_node_last(ares__slist_t *list); +ares__slist_node_t *ares__slist_node_last(const ares__slist_t *list); /*! Fetch next node in SkipList - * + * * \param[in] node SkipList Node Object * \return SkipList Node Object or NULL if none */ -ares__slist_node_t *ares__slist_node_next(ares__slist_node_t *node); +ares__slist_node_t *ares__slist_node_next(const ares__slist_node_t *node); /*! Fetch previous node in SkipList - * + * * \param[in] node SkipList Node Object * \return SkipList Node Object or NULL if none */ -ares__slist_node_t *ares__slist_node_prev(ares__slist_node_t *node); +ares__slist_node_t *ares__slist_node_prev(const ares__slist_node_t *node); /*! Fetch SkipList Node Object by Value - * + * * \param[in] list Initialized SkipList Object * \param[in] val Object to use for comparison * \return SkipList Node Object or NULL if not found */ -ares__slist_node_t *ares__slist_node_find(ares__slist_t *list, const void *val); +ares__slist_node_t *ares__slist_node_find(const ares__slist_t *list, + const void *val); /*! Fetch Node Value - * + * * \param[in] node SkipList Node Object * \return user defined node value */ -void *ares__slist_node_val(ares__slist_node_t *node); +void *ares__slist_node_val(ares__slist_node_t *node); /*! Fetch number of entries in SkipList Object - * + * * \param[in] list Initialized SkipList Object * \return number of entries */ -size_t ares__slist_len(ares__slist_t *list); +size_t ares__slist_len(const ares__slist_t *list); -/*! Fetch SkipList Object from SkipList Node - * +/*! Fetch SkipList Object from SkipList Node + * * \param[in] node SkipList Node Object * \return SkipList Object */ -ares__slist_t *ares__slist_node_parent(ares__slist_node_t *node); +ares__slist_t *ares__slist_node_parent(ares__slist_node_t *node); /*! Fetch first Node Value in SkipList - * + * * \param[in] list Initialized SkipList Object * \return user defined node value or NULL if none */ -void *ares__slist_first_val(ares__slist_t *list); +void *ares__slist_first_val(const ares__slist_t *list); /*! Fetch last Node Value in SkipList - * + * * \param[in] list Initialized SkipList Object * \return user defined node value or NULL if none */ -void *ares__slist_last_val(ares__slist_t *list); +void *ares__slist_last_val(const ares__slist_t *list); /*! Take back ownership of Node Value in SkipList, remove from SkipList. - * + * * \param[in] node SkipList Node Object * \return user defined node value */ -void *ares__slist_node_claim(ares__slist_node_t *node); +void *ares__slist_node_claim(ares__slist_node_t *node); /*! Remove Node from SkipList, calling destructor for Node Value. - * + * * \param[in] node SkipList Node Object */ -void ares__slist_node_destroy(ares__slist_node_t *node); +void ares__slist_node_destroy(ares__slist_node_t *node); /*! Destroy SkipList Object. If there are any nodes, they will be destroyed. - * + * * \param[in] list Initialized SkipList Object */ -void ares__slist_destroy(ares__slist_t *list); +void ares__slist_destroy(ares__slist_t *list); /*! @} */ diff --git a/deps/cares/src/lib/ares__sortaddrinfo.c b/deps/cares/src/lib/ares__sortaddrinfo.c index 78d8891614aa66..9093ada11e7207 100644 --- a/deps/cares/src/lib/ares__sortaddrinfo.c +++ b/deps/cares/src/lib/ares__sortaddrinfo.c @@ -54,22 +54,21 @@ #include "ares.h" #include "ares_private.h" -struct addrinfo_sort_elem -{ +struct addrinfo_sort_elem { struct ares_addrinfo_node *ai; - int has_src_addr; - ares_sockaddr src_addr; - int original_order; + ares_bool_t has_src_addr; + ares_sockaddr src_addr; + size_t original_order; }; #define ARES_IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f) -#define ARES_IPV6_ADDR_SCOPE_NODELOCAL 0x01 -#define ARES_IPV6_ADDR_SCOPE_INTFACELOCAL 0x01 -#define ARES_IPV6_ADDR_SCOPE_LINKLOCAL 0x02 -#define ARES_IPV6_ADDR_SCOPE_SITELOCAL 0x05 -#define ARES_IPV6_ADDR_SCOPE_ORGLOCAL 0x08 -#define ARES_IPV6_ADDR_SCOPE_GLOBAL 0x0e +#define ARES_IPV6_ADDR_SCOPE_NODELOCAL 0x01 +#define ARES_IPV6_ADDR_SCOPE_INTFACELOCAL 0x01 +#define ARES_IPV6_ADDR_SCOPE_LINKLOCAL 0x02 +#define ARES_IPV6_ADDR_SCOPE_SITELOCAL 0x05 +#define ARES_IPV6_ADDR_SCOPE_ORGLOCAL 0x08 +#define ARES_IPV6_ADDR_SCOPE_GLOBAL 0x0e #define ARES_IN_LOOPBACK(a) ((((long int)(a)) & 0xff000000) == 0x7f000000) @@ -78,127 +77,94 @@ struct addrinfo_sort_elem /* These macros are modelled after the ones in . */ /* RFC 4380, section 2.6 */ -#define ARES_IN6_IS_ADDR_TEREDO(a) \ - ((*(const unsigned int *)(const void *)(&(a)->s6_addr[0]) == ntohl(0x20010000))) +#define ARES_IN6_IS_ADDR_TEREDO(a) \ + ((*(const unsigned int *)(const void *)(&(a)->s6_addr[0]) == \ + ntohl(0x20010000))) /* RFC 3056, section 2. */ -#define ARES_IN6_IS_ADDR_6TO4(a) \ - (((a)->s6_addr[0] == 0x20) && ((a)->s6_addr[1] == 0x02)) +#define ARES_IN6_IS_ADDR_6TO4(a) \ + (((a)->s6_addr[0] == 0x20) && ((a)->s6_addr[1] == 0x02)) /* 6bone testing address area (3ffe::/16), deprecated in RFC 3701. */ -#define ARES_IN6_IS_ADDR_6BONE(a) \ - (((a)->s6_addr[0] == 0x3f) && ((a)->s6_addr[1] == 0xfe)) - +#define ARES_IN6_IS_ADDR_6BONE(a) \ + (((a)->s6_addr[0] == 0x3f) && ((a)->s6_addr[1] == 0xfe)) static int get_scope(const struct sockaddr *addr) { - if (addr->sa_family == AF_INET6) - { - const struct sockaddr_in6 *addr6 = CARES_INADDR_CAST(const struct sockaddr_in6 *, addr); - if (IN6_IS_ADDR_MULTICAST(&addr6->sin6_addr)) - { - return ARES_IPV6_ADDR_MC_SCOPE(&addr6->sin6_addr); - } - else if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr) || - IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr)) - { - /* - * RFC 4291 section 2.5.3 says loopback is to be treated as having - * link-local scope. - */ - return ARES_IPV6_ADDR_SCOPE_LINKLOCAL; - } - else if (IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr)) - { - return ARES_IPV6_ADDR_SCOPE_SITELOCAL; - } - else - { - return ARES_IPV6_ADDR_SCOPE_GLOBAL; - } - } - else if (addr->sa_family == AF_INET) - { - const struct sockaddr_in *addr4 = CARES_INADDR_CAST(const struct sockaddr_in *, addr); - unsigned long int na = ntohl(addr4->sin_addr.s_addr); - if (ARES_IN_LOOPBACK(na) || /* 127.0.0.0/8 */ - (na & 0xffff0000) == 0xa9fe0000) /* 169.254.0.0/16 */ - { - return ARES_IPV6_ADDR_SCOPE_LINKLOCAL; - } - else - { - /* - * RFC 6724 section 3.2. Other IPv4 addresses, including private - * addresses and shared addresses (100.64.0.0/10), are assigned global - * scope. - */ - return ARES_IPV6_ADDR_SCOPE_GLOBAL; - } + if (addr->sa_family == AF_INET6) { + const struct sockaddr_in6 *addr6 = + CARES_INADDR_CAST(const struct sockaddr_in6 *, addr); + if (IN6_IS_ADDR_MULTICAST(&addr6->sin6_addr)) { + return ARES_IPV6_ADDR_MC_SCOPE(&addr6->sin6_addr); + } else if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr) || + IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr)) { + /* + * RFC 4291 section 2.5.3 says loopback is to be treated as having + * link-local scope. + */ + return ARES_IPV6_ADDR_SCOPE_LINKLOCAL; + } else if (IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr)) { + return ARES_IPV6_ADDR_SCOPE_SITELOCAL; + } else { + return ARES_IPV6_ADDR_SCOPE_GLOBAL; } - else + } else if (addr->sa_family == AF_INET) { + const struct sockaddr_in *addr4 = + CARES_INADDR_CAST(const struct sockaddr_in *, addr); + unsigned long int na = ntohl(addr4->sin_addr.s_addr); + if (ARES_IN_LOOPBACK(na) || /* 127.0.0.0/8 */ + (na & 0xffff0000) == 0xa9fe0000) /* 169.254.0.0/16 */ { + return ARES_IPV6_ADDR_SCOPE_LINKLOCAL; + } else { /* - * This should never happen. - * Return a scope with low priority as a last resort. + * RFC 6724 section 3.2. Other IPv4 addresses, including private + * addresses and shared addresses (100.64.0.0/10), are assigned global + * scope. */ - return ARES_IPV6_ADDR_SCOPE_NODELOCAL; + return ARES_IPV6_ADDR_SCOPE_GLOBAL; } + } else { + /* + * This should never happen. + * Return a scope with low priority as a last resort. + */ + return ARES_IPV6_ADDR_SCOPE_NODELOCAL; + } } static int get_label(const struct sockaddr *addr) { - if (addr->sa_family == AF_INET) - { + if (addr->sa_family == AF_INET) { + return 4; + } else if (addr->sa_family == AF_INET6) { + const struct sockaddr_in6 *addr6 = + CARES_INADDR_CAST(const struct sockaddr_in6 *, addr); + if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr)) { + return 0; + } else if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { return 4; - } - else if (addr->sa_family == AF_INET6) - { - const struct sockaddr_in6 *addr6 = CARES_INADDR_CAST(const struct sockaddr_in6 *, addr); - if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr)) - { - return 0; - } - else if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) - { - return 4; - } - else if (ARES_IN6_IS_ADDR_6TO4(&addr6->sin6_addr)) - { - return 2; - } - else if (ARES_IN6_IS_ADDR_TEREDO(&addr6->sin6_addr)) - { - return 5; - } - else if (ARES_IN6_IS_ADDR_ULA(&addr6->sin6_addr)) - { - return 13; - } - else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr)) - { - return 3; - } - else if (IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr)) - { - return 11; - } - else if (ARES_IN6_IS_ADDR_6BONE(&addr6->sin6_addr)) - { - return 12; - } - else - { - /* All other IPv6 addresses, including global unicast addresses. */ - return 1; - } - } - else - { - /* - * This should never happen. - * Return a semi-random label as a last resort. - */ + } else if (ARES_IN6_IS_ADDR_6TO4(&addr6->sin6_addr)) { + return 2; + } else if (ARES_IN6_IS_ADDR_TEREDO(&addr6->sin6_addr)) { + return 5; + } else if (ARES_IN6_IS_ADDR_ULA(&addr6->sin6_addr)) { + return 13; + } else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr)) { + return 3; + } else if (IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr)) { + return 11; + } else if (ARES_IN6_IS_ADDR_6BONE(&addr6->sin6_addr)) { + return 12; + } else { + /* All other IPv6 addresses, including global unicast addresses. */ return 1; } + } else { + /* + * This should never happen. + * Return a semi-random label as a last resort. + */ + return 1; + } } /* @@ -207,77 +173,57 @@ static int get_label(const struct sockaddr *addr) */ static int get_precedence(const struct sockaddr *addr) { - if (addr->sa_family == AF_INET) - { + if (addr->sa_family == AF_INET) { + return 35; + } else if (addr->sa_family == AF_INET6) { + const struct sockaddr_in6 *addr6 = + CARES_INADDR_CAST(const struct sockaddr_in6 *, addr); + if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr)) { + return 50; + } else if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { return 35; - } - else if (addr->sa_family == AF_INET6) - { - const struct sockaddr_in6 *addr6 = CARES_INADDR_CAST(const struct sockaddr_in6 *, addr); - if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr)) - { - return 50; - } - else if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) - { - return 35; - } - else if (ARES_IN6_IS_ADDR_6TO4(&addr6->sin6_addr)) - { - return 30; - } - else if (ARES_IN6_IS_ADDR_TEREDO(&addr6->sin6_addr)) - { - return 5; - } - else if (ARES_IN6_IS_ADDR_ULA(&addr6->sin6_addr)) - { - return 3; - } - else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr) || + } else if (ARES_IN6_IS_ADDR_6TO4(&addr6->sin6_addr)) { + return 30; + } else if (ARES_IN6_IS_ADDR_TEREDO(&addr6->sin6_addr)) { + return 5; + } else if (ARES_IN6_IS_ADDR_ULA(&addr6->sin6_addr)) { + return 3; + } else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr) || IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr) || - ARES_IN6_IS_ADDR_6BONE(&addr6->sin6_addr)) - { - return 1; - } - else - { - /* All other IPv6 addresses, including global unicast addresses. */ - return 40; - } - } - else - { + ARES_IN6_IS_ADDR_6BONE(&addr6->sin6_addr)) { return 1; + } else { + /* All other IPv6 addresses, including global unicast addresses. */ + return 40; } + } else { + return 1; + } } /* * Find number of matching initial bits between the two addresses a1 and a2. */ -static int common_prefix_len(const struct in6_addr *a1, - const struct in6_addr *a2) +static size_t common_prefix_len(const struct in6_addr *a1, + const struct in6_addr *a2) { - const char *p1 = (const char *)a1; - const char *p2 = (const char *)a2; - unsigned i; - for (i = 0; i < sizeof(*a1); ++i) - { - int x, j; - if (p1[i] == p2[i]) - { - continue; - } - x = p1[i] ^ p2[i]; - for (j = 0; j < CHAR_BIT; ++j) - { - if (x & (1 << (CHAR_BIT - 1))) - { - return i * CHAR_BIT + j; - } - x <<= 1; - } + const unsigned char *p1 = (const unsigned char *)a1; + const unsigned char *p2 = (const unsigned char *)a2; + size_t i; + for (i = 0; i < sizeof(*a1); ++i) { + unsigned char x; + size_t j; + if (p1[i] == p2[i]) { + continue; } + x = p1[i] ^ p2[i]; + for (j = 0; j < CHAR_BIT; ++j) { + if (x & (1 << (CHAR_BIT - 1))) { + return i * CHAR_BIT + j; + } + x <<= 1; + } + } return sizeof(*a1) * CHAR_BIT; } @@ -289,36 +235,46 @@ static int rfc6724_compare(const void *ptr1, const void *ptr2) { const struct addrinfo_sort_elem *a1 = (const struct addrinfo_sort_elem *)ptr1; const struct addrinfo_sort_elem *a2 = (const struct addrinfo_sort_elem *)ptr2; - int scope_src1, scope_dst1, scope_match1; - int scope_src2, scope_dst2, scope_match2; - int label_src1, label_dst1, label_match1; - int label_src2, label_dst2, label_match2; - int precedence1, precedence2; - int prefixlen1, prefixlen2; + int scope_src1; + int scope_dst1; + int scope_match1; + int scope_src2; + int scope_dst2; + int scope_match2; + int label_src1; + int label_dst1; + int label_match1; + int label_src2; + int label_dst2; + int label_match2; + int precedence1; + int precedence2; + size_t prefixlen1; + size_t prefixlen2; /* Rule 1: Avoid unusable destinations. */ - if (a1->has_src_addr != a2->has_src_addr) - { - return a2->has_src_addr - a1->has_src_addr; - } + if (a1->has_src_addr != a2->has_src_addr) { + return ((int)a2->has_src_addr) - ((int)a1->has_src_addr); + } /* Rule 2: Prefer matching scope. */ scope_src1 = ARES_IPV6_ADDR_SCOPE_NODELOCAL; - if (a1->has_src_addr) + if (a1->has_src_addr) { scope_src1 = get_scope(&a1->src_addr.sa); - scope_dst1 = get_scope(a1->ai->ai_addr); + } + scope_dst1 = get_scope(a1->ai->ai_addr); scope_match1 = (scope_src1 == scope_dst1); scope_src2 = ARES_IPV6_ADDR_SCOPE_NODELOCAL; - if (a2->has_src_addr) + if (a2->has_src_addr) { scope_src2 = get_scope(&a2->src_addr.sa); - scope_dst2 = get_scope(a2->ai->ai_addr); + } + scope_dst2 = get_scope(a2->ai->ai_addr); scope_match2 = (scope_src2 == scope_dst2); - if (scope_match1 != scope_match2) - { - return scope_match2 - scope_match1; - } + if (scope_match1 != scope_match2) { + return scope_match2 - scope_match1; + } /* Rule 3: Avoid deprecated addresses. */ @@ -326,81 +282,76 @@ static int rfc6724_compare(const void *ptr1, const void *ptr2) /* Rule 5: Prefer matching label. */ label_src1 = 1; - if (a1->has_src_addr) + if (a1->has_src_addr) { label_src1 = get_label(&a1->src_addr.sa); - label_dst1 = get_label(a1->ai->ai_addr); + } + label_dst1 = get_label(a1->ai->ai_addr); label_match1 = (label_src1 == label_dst1); label_src2 = 1; - if (a2->has_src_addr) + if (a2->has_src_addr) { label_src2 = get_label(&a2->src_addr.sa); - label_dst2 = get_label(a2->ai->ai_addr); + } + label_dst2 = get_label(a2->ai->ai_addr); label_match2 = (label_src2 == label_dst2); - if (label_match1 != label_match2) - { - return label_match2 - label_match1; - } + if (label_match1 != label_match2) { + return label_match2 - label_match1; + } /* Rule 6: Prefer higher precedence. */ precedence1 = get_precedence(a1->ai->ai_addr); precedence2 = get_precedence(a2->ai->ai_addr); - if (precedence1 != precedence2) - { - return precedence2 - precedence1; - } + if (precedence1 != precedence2) { + return precedence2 - precedence1; + } /* Rule 7: Prefer native transport. */ /* Rule 8: Prefer smaller scope. */ - if (scope_dst1 != scope_dst2) - { - return scope_dst1 - scope_dst2; - } + if (scope_dst1 != scope_dst2) { + return scope_dst1 - scope_dst2; + } /* Rule 9: Use longest matching prefix. */ if (a1->has_src_addr && a1->ai->ai_addr->sa_family == AF_INET6 && - a2->has_src_addr && a2->ai->ai_addr->sa_family == AF_INET6) - { - const struct sockaddr_in6 *a1_src = &a1->src_addr.sa6; - const struct sockaddr_in6 *a1_dst = - CARES_INADDR_CAST(const struct sockaddr_in6 *, a1->ai->ai_addr); - const struct sockaddr_in6 *a2_src = &a2->src_addr.sa6; - const struct sockaddr_in6 *a2_dst = - CARES_INADDR_CAST(const struct sockaddr_in6 *, a2->ai->ai_addr); - prefixlen1 = common_prefix_len(&a1_src->sin6_addr, &a1_dst->sin6_addr); - prefixlen2 = common_prefix_len(&a2_src->sin6_addr, &a2_dst->sin6_addr); - if (prefixlen1 != prefixlen2) - { - return prefixlen2 - prefixlen1; - } + a2->has_src_addr && a2->ai->ai_addr->sa_family == AF_INET6) { + const struct sockaddr_in6 *a1_src = &a1->src_addr.sa6; + const struct sockaddr_in6 *a1_dst = + CARES_INADDR_CAST(const struct sockaddr_in6 *, a1->ai->ai_addr); + const struct sockaddr_in6 *a2_src = &a2->src_addr.sa6; + const struct sockaddr_in6 *a2_dst = + CARES_INADDR_CAST(const struct sockaddr_in6 *, a2->ai->ai_addr); + prefixlen1 = common_prefix_len(&a1_src->sin6_addr, &a1_dst->sin6_addr); + prefixlen2 = common_prefix_len(&a2_src->sin6_addr, &a2_dst->sin6_addr); + if (prefixlen1 != prefixlen2) { + return (int)prefixlen2 - (int)prefixlen1; } + } /* * Rule 10: Leave the order unchanged. * We need this since qsort() is not necessarily stable. */ - return a1->original_order - a2->original_order; + return ((int)a1->original_order) - ((int)a2->original_order); } /* * Find the source address that will be used if trying to connect to the given * address. * - * Returns 1 if a source address was found, 0 if the address is unreachable, + * Returns 1 if a source address was found, 0 if the address is unreachable * and -1 if a fatal error occurred. If 0 or 1, the contents of src_addr are * undefined. */ -static int find_src_addr(ares_channel channel, - const struct sockaddr *addr, +static int find_src_addr(ares_channel channel, const struct sockaddr *addr, struct sockaddr *src_addr) { - ares_socket_t sock; - int ret; + ares_socket_t sock; + int ret; ares_socklen_t len; - switch (addr->sa_family) - { + switch (addr->sa_family) { case AF_INET: len = sizeof(struct sockaddr_in); break; @@ -410,38 +361,30 @@ static int find_src_addr(ares_channel channel, default: /* No known usable source address for non-INET families. */ return 0; - } + } sock = ares__open_socket(channel, addr->sa_family, SOCK_DGRAM, IPPROTO_UDP); - if (sock == ARES_SOCKET_BAD) - { - if (errno == EAFNOSUPPORT) - { - return 0; - } - else - { - return -1; - } + if (sock == ARES_SOCKET_BAD) { + if (errno == EAFNOSUPPORT) { + return 0; + } else { + return -1; } + } - do - { - ret = ares__connect_socket(channel, sock, addr, len); - } - while (ret == -1 && errno == EINTR); + do { + ret = ares__connect_socket(channel, sock, addr, len); + } while (ret == -1 && errno == EINTR); - if (ret == -1) - { - ares__close_socket(channel, sock); - return 0; - } + if (ret == -1) { + ares__close_socket(channel, sock); + return 0; + } - if (getsockname(sock, src_addr, &len) != 0) - { - ares__close_socket(channel, sock); - return -1; - } + if (getsockname(sock, src_addr, &len) != 0) { + ares__close_socket(channel, sock); + return -1; + } ares__close_socket(channel, sock); return 1; } @@ -450,47 +393,47 @@ static int find_src_addr(ares_channel channel, * Sort the linked list starting at sentinel->ai_next in RFC6724 order. * Will leave the list unchanged if an error occurs. */ -int ares__sortaddrinfo(ares_channel channel, struct ares_addrinfo_node *list_sentinel) +ares_status_t ares__sortaddrinfo(ares_channel channel, + struct ares_addrinfo_node *list_sentinel) { struct ares_addrinfo_node *cur; - int nelem = 0, i; - int has_src_addr; + size_t nelem = 0; + size_t i; + int has_src_addr; struct addrinfo_sort_elem *elems; cur = list_sentinel->ai_next; - while (cur) - { - ++nelem; - cur = cur->ai_next; - } + while (cur) { + ++nelem; + cur = cur->ai_next; + } - if (!nelem) - return ARES_ENODATA; + if (!nelem) { + return ARES_ENODATA; + } elems = (struct addrinfo_sort_elem *)ares_malloc( - nelem * sizeof(struct addrinfo_sort_elem)); - if (!elems) - { - return ARES_ENOMEM; - } + nelem * sizeof(struct addrinfo_sort_elem)); + if (!elems) { + return ARES_ENOMEM; + } /* * Convert the linked list to an array that also contains the candidate * source address for each destination address. */ - for (i = 0, cur = list_sentinel->ai_next; i < nelem; ++i, cur = cur->ai_next) - { - assert(cur != NULL); - elems[i].ai = cur; - elems[i].original_order = i; - has_src_addr = find_src_addr(channel, cur->ai_addr, &elems[i].src_addr.sa); - if (has_src_addr == -1) - { - ares_free(elems); - return ARES_ENOTFOUND; - } - elems[i].has_src_addr = has_src_addr; + for (i = 0, cur = list_sentinel->ai_next; i < nelem; + ++i, cur = cur->ai_next) { + assert(cur != NULL); + elems[i].ai = cur; + elems[i].original_order = i; + has_src_addr = find_src_addr(channel, cur->ai_addr, &elems[i].src_addr.sa); + if (has_src_addr == -1) { + ares_free(elems); + return ARES_ENOTFOUND; } + elems[i].has_src_addr = (has_src_addr == 1) ? ARES_TRUE : ARES_FALSE; + } /* Sort the addresses, and rearrange the linked list so it matches the sorted * order. */ @@ -498,10 +441,9 @@ int ares__sortaddrinfo(ares_channel channel, struct ares_addrinfo_node *list_sen rfc6724_compare); list_sentinel->ai_next = elems[0].ai; - for (i = 0; i < nelem - 1; ++i) - { - elems[i].ai->ai_next = elems[i + 1].ai; - } + for (i = 0; i < nelem - 1; ++i) { + elems[i].ai->ai_next = elems[i + 1].ai; + } elems[nelem - 1].ai->ai_next = NULL; ares_free(elems); diff --git a/deps/cares/src/lib/ares__timeval.c b/deps/cares/src/lib/ares__timeval.c index 5716c53e5021ef..68f67212623c0d 100644 --- a/deps/cares/src/lib/ares__timeval.c +++ b/deps/cares/src/lib/ares__timeval.c @@ -38,9 +38,9 @@ struct timeval ares__tvnow(void) ** 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; + DWORD milliseconds = GetTickCount(); + now.tv_sec = milliseconds / 1000; + now.tv_usec = (milliseconds % 1000) * 1000; return now; } @@ -55,26 +55,26 @@ struct timeval ares__tvnow(void) ** in any case the time starting point does not change once that the ** system has started up. */ - struct timeval now; + 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; + if (0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) { + now.tv_sec = tsnow.tv_sec; + now.tv_usec = (int)(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 +# ifdef HAVE_GETTIMEOFDAY else - (void)gettimeofday(&now, NULL); /* LCOV_EXCL_LINE */ -#else + (void)gettimeofday(&now, NULL); /* LCOV_EXCL_LINE */ +# else else { - now.tv_sec = (long)time(NULL); + now.tv_sec = (long)time(NULL); now.tv_usec = 0; } -#endif +# endif return now; } @@ -100,24 +100,9 @@ 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_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/lib/ares_android.c b/deps/cares/src/lib/ares_android.c index ec0a33872d6ff3..778d4d10607fa3 100644 --- a/deps/cares/src/lib/ares_android.c +++ b/deps/cares/src/lib/ares_android.c @@ -25,15 +25,15 @@ */ #if defined(ANDROID) || defined(__ANDROID__) -#include +# include -#include "ares_setup.h" -#include "ares.h" -#include "ares_android.h" -#include "ares_private.h" +# include "ares_setup.h" +# include "ares.h" +# include "ares_android.h" +# include "ares_private.h" -static JavaVM *android_jvm = NULL; -static jobject android_connectivity_manager = NULL; +static JavaVM *android_jvm = NULL; +static jobject android_connectivity_manager = NULL; /* ConnectivityManager.getActiveNetwork */ static jmethodID android_cm_active_net_mid = NULL; @@ -50,12 +50,13 @@ static jmethodID android_list_get_mid = NULL; /* InetAddress.getHostAddress */ static jmethodID android_ia_host_addr_mid = NULL; -static jclass jni_get_class(JNIEnv *env, const char *path) +static jclass jni_get_class(JNIEnv *env, const char *path) { jclass cls = NULL; - if (env == NULL || path == NULL || *path == '\0') + if (env == NULL || path == NULL || *path == '\0') { return NULL; + } cls = (*env)->FindClass(env, path); if ((*env)->ExceptionOccurred(env)) { @@ -71,14 +72,12 @@ static jmethodID jni_get_method_id(JNIEnv *env, jclass cls, jmethodID mid = NULL; if (env == NULL || cls == NULL || func_name == NULL || *func_name == '\0' || - signature == NULL || *signature == '\0') - { + signature == NULL || *signature == '\0') { return NULL; } mid = (*env)->GetMethodID(env, cls, func_name, signature); - if ((*env)->ExceptionOccurred(env)) - { + if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); return NULL; } @@ -93,29 +92,31 @@ void ares_library_init_jvm(JavaVM *jvm) int ares_library_init_android(jobject connectivity_manager) { - JNIEnv *env = NULL; - int need_detatch = 0; - int res; - int ret = ARES_ENOTINITIALIZED; - jclass obj_cls = NULL; + JNIEnv *env = NULL; + int need_detatch = 0; + int res; + ares_status_t ret = ARES_ENOTINITIALIZED; + jclass obj_cls = NULL; - if (android_jvm == NULL) + if (android_jvm == NULL) { goto cleanup; + } res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); - if (res == JNI_EDETACHED) - { - env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + if (res == JNI_EDETACHED) { + env = NULL; + res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } - if (res != JNI_OK || env == NULL) + if (res != JNI_OK || env == NULL) { goto cleanup; + } android_connectivity_manager = - (*env)->NewGlobalRef(env, connectivity_manager); - if (android_connectivity_manager == NULL) + (*env)->NewGlobalRef(env, connectivity_manager); + if (android_connectivity_manager == NULL) { goto cleanup; + } /* Initialization has succeeded. Now attempt to cache the methods that will be * called by ares_get_android_server_list. */ @@ -123,166 +124,178 @@ int ares_library_init_android(jobject connectivity_manager) /* ConnectivityManager in API 1. */ obj_cls = jni_get_class(env, "android/net/ConnectivityManager"); - if (obj_cls == NULL) + if (obj_cls == NULL) { goto cleanup; + } /* ConnectivityManager.getActiveNetwork in API 23. */ - android_cm_active_net_mid = - jni_get_method_id(env, obj_cls, "getActiveNetwork", - "()Landroid/net/Network;"); - if (android_cm_active_net_mid == NULL) + android_cm_active_net_mid = jni_get_method_id( + env, obj_cls, "getActiveNetwork", "()Landroid/net/Network;"); + if (android_cm_active_net_mid == NULL) { goto cleanup; + } /* ConnectivityManager.getLinkProperties in API 21. */ android_cm_link_props_mid = - jni_get_method_id(env, obj_cls, "getLinkProperties", - "(Landroid/net/Network;)Landroid/net/LinkProperties;"); - if (android_cm_link_props_mid == NULL) + jni_get_method_id(env, obj_cls, "getLinkProperties", + "(Landroid/net/Network;)Landroid/net/LinkProperties;"); + if (android_cm_link_props_mid == NULL) { goto cleanup; + } /* LinkProperties in API 21. */ (*env)->DeleteLocalRef(env, obj_cls); obj_cls = jni_get_class(env, "android/net/LinkProperties"); - if (obj_cls == NULL) + if (obj_cls == NULL) { goto cleanup; + } /* getDnsServers in API 21. */ - android_lp_dns_servers_mid = jni_get_method_id(env, obj_cls, "getDnsServers", - "()Ljava/util/List;"); - if (android_lp_dns_servers_mid == NULL) + android_lp_dns_servers_mid = + jni_get_method_id(env, obj_cls, "getDnsServers", "()Ljava/util/List;"); + if (android_lp_dns_servers_mid == NULL) { goto cleanup; + } /* getDomains in API 21. */ - android_lp_domains_mid = jni_get_method_id(env, obj_cls, "getDomains", - "()Ljava/lang/String;"); - if (android_lp_domains_mid == NULL) + android_lp_domains_mid = + jni_get_method_id(env, obj_cls, "getDomains", "()Ljava/lang/String;"); + if (android_lp_domains_mid == NULL) { goto cleanup; + } (*env)->DeleteLocalRef(env, obj_cls); obj_cls = jni_get_class(env, "java/util/List"); - if (obj_cls == NULL) + if (obj_cls == NULL) { goto cleanup; + } android_list_size_mid = jni_get_method_id(env, obj_cls, "size", "()I"); - if (android_list_size_mid == NULL) + if (android_list_size_mid == NULL) { goto cleanup; + } - android_list_get_mid = jni_get_method_id(env, obj_cls, "get", - "(I)Ljava/lang/Object;"); - if (android_list_get_mid == NULL) + android_list_get_mid = + jni_get_method_id(env, obj_cls, "get", "(I)Ljava/lang/Object;"); + if (android_list_get_mid == NULL) { goto cleanup; + } (*env)->DeleteLocalRef(env, obj_cls); obj_cls = jni_get_class(env, "java/net/InetAddress"); - if (obj_cls == NULL) + if (obj_cls == NULL) { goto cleanup; + } - android_ia_host_addr_mid = jni_get_method_id(env, obj_cls, "getHostAddress", - "()Ljava/lang/String;"); - if (android_ia_host_addr_mid == NULL) + android_ia_host_addr_mid = + jni_get_method_id(env, obj_cls, "getHostAddress", "()Ljava/lang/String;"); + if (android_ia_host_addr_mid == NULL) { goto cleanup; + } (*env)->DeleteLocalRef(env, obj_cls); goto done; cleanup: - if (obj_cls != NULL) + if (obj_cls != NULL) { (*env)->DeleteLocalRef(env, obj_cls); + } - android_cm_active_net_mid = NULL; - android_cm_link_props_mid = NULL; + android_cm_active_net_mid = NULL; + android_cm_link_props_mid = NULL; android_lp_dns_servers_mid = NULL; - android_lp_domains_mid = NULL; - android_list_size_mid = NULL; - android_list_get_mid = NULL; - android_ia_host_addr_mid = NULL; + android_lp_domains_mid = NULL; + android_list_size_mid = NULL; + android_list_get_mid = NULL; + android_ia_host_addr_mid = NULL; done: - if (need_detatch) + if (need_detatch) { (*android_jvm)->DetachCurrentThread(android_jvm); + } return ret; } int ares_library_android_initialized(void) { - if (android_jvm == NULL || android_connectivity_manager == NULL) + if (android_jvm == NULL || android_connectivity_manager == NULL) { return ARES_ENOTINITIALIZED; + } return ARES_SUCCESS; } void ares_library_cleanup_android(void) { - JNIEnv *env = NULL; - int need_detatch = 0; - int res; + JNIEnv *env = NULL; + int need_detatch = 0; + int res; - if (android_jvm == NULL || android_connectivity_manager == NULL) + if (android_jvm == NULL || android_connectivity_manager == NULL) { return; + } res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); - if (res == JNI_EDETACHED) - { - env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + if (res == JNI_EDETACHED) { + env = NULL; + res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } - if (res != JNI_OK || env == NULL) + if (res != JNI_OK || env == NULL) { return; + } - android_cm_active_net_mid = NULL; - android_cm_link_props_mid = NULL; + android_cm_active_net_mid = NULL; + android_cm_link_props_mid = NULL; android_lp_dns_servers_mid = NULL; - android_lp_domains_mid = NULL; - android_list_size_mid = NULL; - android_list_get_mid = NULL; - android_ia_host_addr_mid = NULL; + android_lp_domains_mid = NULL; + android_list_size_mid = NULL; + android_list_get_mid = NULL; + android_ia_host_addr_mid = NULL; (*env)->DeleteGlobalRef(env, android_connectivity_manager); android_connectivity_manager = NULL; - if (need_detatch) + if (need_detatch) { (*android_jvm)->DetachCurrentThread(android_jvm); + } } -char **ares_get_android_server_list(size_t max_servers, - size_t *num_servers) +char **ares_get_android_server_list(size_t max_servers, size_t *num_servers) { - JNIEnv *env = NULL; - jobject active_network = NULL; - jobject link_properties = NULL; - jobject server_list = NULL; - jobject server = NULL; - jstring str = NULL; - jint nserv; + JNIEnv *env = NULL; + jobject active_network = NULL; + jobject link_properties = NULL; + jobject server_list = NULL; + jobject server = NULL; + jstring str = NULL; + jint nserv; const char *ch_server_address; - int res; - size_t i; - char **dns_list = NULL; - int need_detatch = 0; + int res; + size_t i; + char **dns_list = NULL; + int need_detatch = 0; if (android_jvm == NULL || android_connectivity_manager == NULL || - max_servers == 0 || num_servers == NULL) - { + max_servers == 0 || num_servers == NULL) { return NULL; } if (android_cm_active_net_mid == NULL || android_cm_link_props_mid == NULL || android_lp_dns_servers_mid == NULL || android_list_size_mid == NULL || - android_list_get_mid == NULL || android_ia_host_addr_mid == NULL) - { + android_list_get_mid == NULL || android_ia_host_addr_mid == NULL) { return NULL; } res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); - if (res == JNI_EDETACHED) - { - env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + if (res == JNI_EDETACHED) { + env = NULL; + res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } - if (res != JNI_OK || env == NULL) + if (res != JNI_OK || env == NULL) { goto done; + } /* JNI below is equivalent to this Java code. import android.content.Context; @@ -307,93 +320,100 @@ char **ares_get_android_server_list(size_t max_servers, active_network = (*env)->CallObjectMethod(env, android_connectivity_manager, android_cm_active_net_mid); - if (active_network == NULL) + if (active_network == NULL) { goto done; + } link_properties = - (*env)->CallObjectMethod(env, android_connectivity_manager, - android_cm_link_props_mid, active_network); - if (link_properties == NULL) + (*env)->CallObjectMethod(env, android_connectivity_manager, + android_cm_link_props_mid, active_network); + if (link_properties == NULL) { goto done; + } - server_list = (*env)->CallObjectMethod(env, link_properties, - android_lp_dns_servers_mid); - if (server_list == NULL) + server_list = + (*env)->CallObjectMethod(env, link_properties, android_lp_dns_servers_mid); + if (server_list == NULL) { goto done; + } nserv = (*env)->CallIntMethod(env, server_list, android_list_size_mid); - if (nserv > (jint)max_servers) + if (nserv > (jint)max_servers) { nserv = (jint)max_servers; - if (nserv <= 0) + } + if (nserv <= 0) { goto done; + } *num_servers = (size_t)nserv; - dns_list = ares_malloc(sizeof(*dns_list)*(*num_servers)); - for (i=0; i<*num_servers; i++) - { - server = (*env)->CallObjectMethod(env, server_list, android_list_get_mid, - (jint)i); - dns_list[i] = ares_malloc(64); + dns_list = ares_malloc(sizeof(*dns_list) * (*num_servers)); + for (i = 0; i < *num_servers; i++) { + size_t len = 64; + server = + (*env)->CallObjectMethod(env, server_list, android_list_get_mid, (jint)i); + dns_list[i] = ares_malloc(len); dns_list[i][0] = 0; - if (server == NULL) - { + if (server == NULL) { continue; } str = (*env)->CallObjectMethod(env, server, android_ia_host_addr_mid); ch_server_address = (*env)->GetStringUTFChars(env, str, 0); - strncpy(dns_list[i], ch_server_address, 64); + ares_strcpy(dns_list[i], ch_server_address, len); (*env)->ReleaseStringUTFChars(env, str, ch_server_address); (*env)->DeleteLocalRef(env, str); (*env)->DeleteLocalRef(env, server); } done: - if ((*env)->ExceptionOccurred(env)) + if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); + } - if (server_list != NULL) + if (server_list != NULL) { (*env)->DeleteLocalRef(env, server_list); - if (link_properties != NULL) + } + if (link_properties != NULL) { (*env)->DeleteLocalRef(env, link_properties); - if (active_network != NULL) + } + if (active_network != NULL) { (*env)->DeleteLocalRef(env, active_network); + } - if (need_detatch) + if (need_detatch) { (*android_jvm)->DetachCurrentThread(android_jvm); + } return dns_list; } char *ares_get_android_search_domains_list(void) { - JNIEnv *env = NULL; - jobject active_network = NULL; - jobject link_properties = NULL; - jstring domains = NULL; + JNIEnv *env = NULL; + jobject active_network = NULL; + jobject link_properties = NULL; + jstring domains = NULL; const char *domain; - int res; - char *domain_list = NULL; - int need_detatch = 0; + int res; + char *domain_list = NULL; + int need_detatch = 0; - if (android_jvm == NULL || android_connectivity_manager == NULL) - { + if (android_jvm == NULL || android_connectivity_manager == NULL) { return NULL; } if (android_cm_active_net_mid == NULL || android_cm_link_props_mid == NULL || - android_lp_domains_mid == NULL) - { + android_lp_domains_mid == NULL) { return NULL; } res = (*android_jvm)->GetEnv(android_jvm, (void **)&env, JNI_VERSION_1_6); - if (res == JNI_EDETACHED) - { - env = NULL; - res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); + if (res == JNI_EDETACHED) { + env = NULL; + res = (*android_jvm)->AttachCurrentThread(android_jvm, &env, NULL); need_detatch = 1; } - if (res != JNI_OK || env == NULL) + if (res != JNI_OK || env == NULL) { goto done; + } /* JNI below is equivalent to this Java code. import android.content.Context; @@ -404,7 +424,7 @@ char *ares_get_android_search_domains_list(void) .getSystemService(Context.CONNECTIVITY_SERVICE); Network an = cm.getActiveNetwork(); LinkProperties lp = cm.getLinkProperties(an); - String domains = lp.getDomains(); + String domains = lp.getDomains(); for (String domain: domains.split(",")) { String d = domain; } @@ -415,38 +435,45 @@ char *ares_get_android_search_domains_list(void) active_network = (*env)->CallObjectMethod(env, android_connectivity_manager, android_cm_active_net_mid); - if (active_network == NULL) + if (active_network == NULL) { goto done; + } link_properties = - (*env)->CallObjectMethod(env, android_connectivity_manager, - android_cm_link_props_mid, active_network); - if (link_properties == NULL) + (*env)->CallObjectMethod(env, android_connectivity_manager, + android_cm_link_props_mid, active_network); + if (link_properties == NULL) { goto done; + } /* Get the domains. It is a common separated list of domains to search. */ - domains = (*env)->CallObjectMethod(env, link_properties, - android_lp_domains_mid); - if (domains == NULL) + domains = + (*env)->CallObjectMethod(env, link_properties, android_lp_domains_mid); + if (domains == NULL) { goto done; + } /* Split on , */ - domain = (*env)->GetStringUTFChars(env, domains, 0); + domain = (*env)->GetStringUTFChars(env, domains, 0); domain_list = ares_strdup(domain); (*env)->ReleaseStringUTFChars(env, domains, domain); (*env)->DeleteLocalRef(env, domains); done: - if ((*env)->ExceptionOccurred(env)) + if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionClear(env); + } - if (link_properties != NULL) + if (link_properties != NULL) { (*env)->DeleteLocalRef(env, link_properties); - if (active_network != NULL) + } + if (active_network != NULL) { (*env)->DeleteLocalRef(env, active_network); + } - if (need_detatch) + if (need_detatch) { (*android_jvm)->DetachCurrentThread(android_jvm); + } return domain_list; } #else diff --git a/deps/cares/src/lib/ares_android.h b/deps/cares/src/lib/ares_android.h index 73b8d8ee83ce96..5caadb4fe4b8d7 100644 --- a/deps/cares/src/lib/ares_android.h +++ b/deps/cares/src/lib/ares_android.h @@ -30,8 +30,8 @@ #if defined(ANDROID) || defined(__ANDROID__) char **ares_get_android_server_list(size_t max_servers, size_t *num_servers); -char *ares_get_android_search_domains_list(void); -void ares_library_cleanup_android(void); +char *ares_get_android_search_domains_list(void); +void ares_library_cleanup_android(void); #endif diff --git a/deps/cares/src/lib/ares_cancel.c b/deps/cares/src/lib/ares_cancel.c index 353624a111693f..ed29b8be4ab84e 100644 --- a/deps/cares/src/lib/ares_cancel.c +++ b/deps/cares/src/lib/ares_cancel.c @@ -37,8 +37,7 @@ */ void ares_cancel(ares_channel channel) { - if (ares__llist_len(channel->all_queries) > 0) - { + if (ares__llist_len(channel->all_queries) > 0) { ares__llist_node_t *node = NULL; ares__llist_node_t *next = NULL; @@ -46,8 +45,8 @@ void ares_cancel(ares_channel channel) * into this function are cancelled. New queries added by callbacks of * queries being cancelled will not be cancelled themselves. */ - ares__llist_t *list_copy = channel->all_queries; - channel->all_queries = ares__llist_create(NULL); + ares__llist_t *list_copy = channel->all_queries; + channel->all_queries = ares__llist_create(NULL); /* Out of memory, this function doesn't return a result code though so we * can't report to caller */ @@ -64,20 +63,22 @@ void ares_cancel(ares_channel channel) /* Cache next since this node is being deleted */ next = ares__llist_node_next(node); - query = ares__llist_node_claim(node); + query = ares__llist_node_claim(node); query->node_all_queries = NULL; /* Cache file descriptor for connection so we can clean it up possibly */ - if (query->conn) + if (query->conn) { fd = query->conn->fd; + } /* NOTE: its possible this may enqueue new queries */ query->callback(query->arg, ARES_ECANCELLED, 0, NULL, 0); ares__free_query(query); /* See if the connection should be cleaned up */ - if (fd != ARES_SOCKET_BAD) + if (fd != ARES_SOCKET_BAD) { ares__check_cleanup_conn(channel, fd); + } node = next; } diff --git a/deps/cares/src/lib/ares_config.h.cmake b/deps/cares/src/lib/ares_config.h.cmake index a33eb9caa6a32f..caca5f74050102 100644 --- a/deps/cares/src/lib/ares_config.h.cmake +++ b/deps/cares/src/lib/ares_config.h.cmake @@ -17,10 +17,10 @@ #undef CARES_EXPOSE_STATICS /* Defined for build with symbol hiding. */ -#undef CARES_SYMBOL_HIDING +#cmakedefine CARES_SYMBOL_HIDING /* Definition to make a library symbol externally visible. */ -#undef CARES_SYMBOL_SCOPE_EXTERN +#define CARES_SYMBOL_SCOPE_EXTERN @CARES_SYMBOL_SCOPE_EXTERN@ /* Use resolver library to configure cares */ #cmakedefine CARES_USE_LIBRESOLV diff --git a/deps/cares/src/lib/ares_create_query.c b/deps/cares/src/lib/ares_create_query.c index 21c6be08bddabe..b13abdee970b97 100644 --- a/deps/cares/src/lib/ares_create_query.c +++ b/deps/cares/src/lib/ares_create_query.c @@ -37,7 +37,6 @@ #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 @@ -90,29 +89,31 @@ int ares_create_query(const char *name, int dnsclass, int type, unsigned short id, int rd, unsigned char **bufp, int *buflenp, int max_udp_size) { - size_t len; + size_t len; unsigned char *q; - const char *p; - size_t buflen; + const char *p; + size_t buflen; unsigned char *buf; /* Set our results early, in case we bail out early with an error. */ *buflenp = 0; - *bufp = NULL; + *bufp = NULL; /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */ - if (ares__is_onion_domain(name)) + if (ares__is_onion_domain(name)) { return ARES_ENOTFOUND; + } /* Allocate a memory area for the maximum size this packet might need. +2 * is for the length byte and zero termination if no dots or ecscaping is * used. */ - len = strlen(name) + 2 + HFIXEDSZ + QFIXEDSZ + - (max_udp_size ? EDNSFIXEDSZ : 0); + len = ares_strlen(name) + 2 + HFIXEDSZ + QFIXEDSZ + + (max_udp_size ? EDNSFIXEDSZ : 0); buf = ares_malloc(len); - if (!buf) + if (!buf) { return ARES_ENOMEM; + } /* Set up the header. */ q = buf; @@ -121,56 +122,56 @@ int ares_create_query(const char *name, int dnsclass, int type, DNS_HEADER_SET_OPCODE(q, O_QUERY); if (rd) { DNS_HEADER_SET_RD(q, 1); - } - else { + } else { DNS_HEADER_SET_RD(q, 0); } DNS_HEADER_SET_QDCOUNT(q, 1); if (max_udp_size) { - DNS_HEADER_SET_ARCOUNT(q, 1); + DNS_HEADER_SET_ARCOUNT(q, 1); } /* A name of "." is a screw case for the loop below, so adjust it. */ - if (strcmp(name, ".") == 0) + if (strcmp(name, ".") == 0) { name++; + } /* Start writing out the name after the header. */ q += HFIXEDSZ; - while (*name) - { - if (*name == '.') { - ares_free (buf); - return ARES_EBADNAME; + while (*name) { + if (*name == '.') { + ares_free(buf); + return ARES_EBADNAME; + } + + /* Count the number of bytes in this label. */ + len = 0; + for (p = name; *p && *p != '.'; p++) { + if (*p == '\\' && *(p + 1) != 0) { + p++; } + len++; + } + if (len > MAXLABEL) { + ares_free(buf); + return ARES_EBADNAME; + } - /* Count the number of bytes in this label. */ - len = 0; - for (p = name; *p && *p != '.'; p++) - { - if (*p == '\\' && *(p + 1) != 0) - p++; - len++; - } - if (len > MAXLABEL) { - ares_free (buf); - return ARES_EBADNAME; + /* Encode the length and copy the data. */ + *q++ = (unsigned char)len; + for (p = name; *p && *p != '.'; p++) { + if (*p == '\\' && *(p + 1) != 0) { + p++; } + *q++ = (unsigned char)*p; + } - /* 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; + /* 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; @@ -180,29 +181,28 @@ int ares_create_query(const char *name, int dnsclass, int type, DNS_QUESTION_SET_CLASS(q, dnsclass); q += QFIXEDSZ; - if (max_udp_size) - { - memset(q, 0, EDNSFIXEDSZ); - q++; - DNS_RR_SET_TYPE(q, T_OPT); - DNS_RR_SET_CLASS(q, max_udp_size); - q += (EDNSFIXEDSZ-1); + if (max_udp_size) { + memset(q, 0, EDNSFIXEDSZ); + q++; + DNS_RR_SET_TYPE(q, T_OPT); + DNS_RR_SET_CLASS(q, max_udp_size); + q += (EDNSFIXEDSZ - 1); } - buflen = (q - buf); + buflen = (size_t)(q - buf); /* Reject names that are longer than the maximum of 255 bytes that's * specified in RFC 1035 ("To simplify implementations, the total length of * a domain name (i.e., label octets and label length octets) is restricted * to 255 octets or less."). */ if (buflen > (size_t)(MAXCDNAME + HFIXEDSZ + QFIXEDSZ + - (max_udp_size ? EDNSFIXEDSZ : 0))) { - ares_free (buf); + (max_udp_size ? EDNSFIXEDSZ : 0))) { + ares_free(buf); return ARES_EBADNAME; } /* we know this fits in an int at this point */ - *buflenp = (int) buflen; - *bufp = buf; + *buflenp = (int)buflen; + *bufp = buf; return ARES_SUCCESS; } diff --git a/deps/cares/src/lib/ares_data.c b/deps/cares/src/lib/ares_data.c index 9e22339327b407..e37088283bafeb 100644 --- a/deps/cares/src/lib/ares_data.c +++ b/deps/cares/src/lib/ares_data.c @@ -33,7 +33,6 @@ #include "ares_data.h" #include "ares_private.h" - /* ** ares_free_data() - c-ares external API function. ** @@ -52,12 +51,12 @@ void ares_free_data(void *dataptr) { while (dataptr != NULL) { struct ares_data *ptr; - void *next_data = NULL; + void *next_data = NULL; #ifdef __INTEL_COMPILER # pragma warning(push) -# pragma warning(disable:1684) - /* 1684: conversion from pointer to same-sized integral type */ +# pragma warning(disable : 1684) + /* 1684: conversion from pointer to same-sized integral type */ #endif ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data)); @@ -66,97 +65,68 @@ void ares_free_data(void *dataptr) # pragma warning(pop) #endif - if (ptr->mark != ARES_DATATYPE_MARK) + if (ptr->mark != ARES_DATATYPE_MARK) { return; + } - switch (ptr->type) - { - case ARES_DATATYPE_MX_REPLY: - - if (ptr->data.mx_reply.next) - next_data = ptr->data.mx_reply.next; - if (ptr->data.mx_reply.host) - ares_free(ptr->data.mx_reply.host); - break; - - case ARES_DATATYPE_SRV_REPLY: - - if (ptr->data.srv_reply.next) - next_data = ptr->data.srv_reply.next; - if (ptr->data.srv_reply.host) - ares_free(ptr->data.srv_reply.host); - break; - - case ARES_DATATYPE_URI_REPLY: - - if (ptr->data.uri_reply.next) - next_data = ptr->data.uri_reply.next; - if (ptr->data.uri_reply.uri) - ares_free(ptr->data.uri_reply.uri); - break; - - case ARES_DATATYPE_TXT_REPLY: - case ARES_DATATYPE_TXT_EXT: - - if (ptr->data.txt_reply.next) - next_data = ptr->data.txt_reply.next; - if (ptr->data.txt_reply.txt) - ares_free(ptr->data.txt_reply.txt); - break; + switch (ptr->type) { + case ARES_DATATYPE_MX_REPLY: + next_data = ptr->data.mx_reply.next; + ares_free(ptr->data.mx_reply.host); + break; - case ARES_DATATYPE_ADDR_NODE: + case ARES_DATATYPE_SRV_REPLY: + next_data = ptr->data.srv_reply.next; + ares_free(ptr->data.srv_reply.host); + break; - if (ptr->data.addr_node.next) - next_data = ptr->data.addr_node.next; - break; + case ARES_DATATYPE_URI_REPLY: + next_data = ptr->data.uri_reply.next; + ares_free(ptr->data.uri_reply.uri); + break; - case ARES_DATATYPE_ADDR_PORT_NODE: + case ARES_DATATYPE_TXT_REPLY: + case ARES_DATATYPE_TXT_EXT: + next_data = ptr->data.txt_reply.next; + ares_free(ptr->data.txt_reply.txt); + break; - if (ptr->data.addr_port_node.next) - next_data = ptr->data.addr_port_node.next; - break; + case ARES_DATATYPE_ADDR_NODE: + next_data = ptr->data.addr_node.next; + break; - case ARES_DATATYPE_NAPTR_REPLY: + case ARES_DATATYPE_ADDR_PORT_NODE: + next_data = ptr->data.addr_port_node.next; + break; - if (ptr->data.naptr_reply.next) - next_data = ptr->data.naptr_reply.next; - if (ptr->data.naptr_reply.flags) - ares_free(ptr->data.naptr_reply.flags); - if (ptr->data.naptr_reply.service) - ares_free(ptr->data.naptr_reply.service); - if (ptr->data.naptr_reply.regexp) - ares_free(ptr->data.naptr_reply.regexp); - if (ptr->data.naptr_reply.replacement) - ares_free(ptr->data.naptr_reply.replacement); - break; + case ARES_DATATYPE_NAPTR_REPLY: + next_data = ptr->data.naptr_reply.next; + ares_free(ptr->data.naptr_reply.flags); + ares_free(ptr->data.naptr_reply.service); + ares_free(ptr->data.naptr_reply.regexp); + ares_free(ptr->data.naptr_reply.replacement); + break; - case ARES_DATATYPE_SOA_REPLY: - if (ptr->data.soa_reply.nsname) - ares_free(ptr->data.soa_reply.nsname); - if (ptr->data.soa_reply.hostmaster) - ares_free(ptr->data.soa_reply.hostmaster); - break; + case ARES_DATATYPE_SOA_REPLY: + ares_free(ptr->data.soa_reply.nsname); + ares_free(ptr->data.soa_reply.hostmaster); + break; - case ARES_DATATYPE_CAA_REPLY: - - if (ptr->data.caa_reply.next) - next_data = ptr->data.caa_reply.next; - if (ptr->data.caa_reply.property) - ares_free(ptr->data.caa_reply.property); - if (ptr->data.caa_reply.value) - ares_free(ptr->data.caa_reply.value); - break; + case ARES_DATATYPE_CAA_REPLY: + next_data = ptr->data.caa_reply.next; + ares_free(ptr->data.caa_reply.property); + ares_free(ptr->data.caa_reply.value); + break; - default: - return; - } + default: + return; + } ares_free(ptr); dataptr = next_data; } } - /* ** ares_malloc_data() - c-ares internal helper function. ** @@ -172,92 +142,28 @@ void *ares_malloc_data(ares_datatype type) { struct ares_data *ptr; - ptr = ares_malloc(sizeof(struct ares_data)); - if (!ptr) + ptr = ares_malloc_zero(sizeof(*ptr)); + 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_URI_REPLY: - ptr->data.uri_reply.next = NULL; - ptr->data.uri_reply.priority = 0; - ptr->data.uri_reply.weight = 0; - ptr->data.uri_reply.uri = NULL; - ptr->data.uri_reply.ttl = 0; - break; - - case ARES_DATATYPE_TXT_EXT: - ptr->data.txt_ext.record_start = 0; - /* FALLTHROUGH */ - - case ARES_DATATYPE_TXT_REPLY: - ptr->data.txt_reply.next = NULL; - ptr->data.txt_reply.txt = NULL; - ptr->data.txt_reply.length = 0; - break; - - case ARES_DATATYPE_CAA_REPLY: - ptr->data.caa_reply.next = NULL; - ptr->data.caa_reply.plength = 0; - ptr->data.caa_reply.property = NULL; - ptr->data.caa_reply.length = 0; - ptr->data.caa_reply.value = NULL; - break; - - case ARES_DATATYPE_ADDR_NODE: - ptr->data.addr_node.next = NULL; - ptr->data.addr_node.family = 0; - memset(&ptr->data.addr_node.addrV6, 0, - sizeof(ptr->data.addr_node.addrV6)); - break; - - case ARES_DATATYPE_ADDR_PORT_NODE: - ptr->data.addr_port_node.next = NULL; - ptr->data.addr_port_node.family = 0; - ptr->data.addr_port_node.udp_port = 0; - ptr->data.addr_port_node.tcp_port = 0; - memset(&ptr->data.addr_port_node.addrV6, 0, - sizeof(ptr->data.addr_port_node.addrV6)); - break; - - case ARES_DATATYPE_NAPTR_REPLY: - ptr->data.naptr_reply.next = NULL; - ptr->data.naptr_reply.flags = NULL; - ptr->data.naptr_reply.service = NULL; - ptr->data.naptr_reply.regexp = NULL; - ptr->data.naptr_reply.replacement = NULL; - ptr->data.naptr_reply.order = 0; - ptr->data.naptr_reply.preference = 0; - break; - - case ARES_DATATYPE_SOA_REPLY: - ptr->data.soa_reply.nsname = NULL; - ptr->data.soa_reply.hostmaster = NULL; - ptr->data.soa_reply.serial = 0; - ptr->data.soa_reply.refresh = 0; - ptr->data.soa_reply.retry = 0; - ptr->data.soa_reply.expire = 0; - ptr->data.soa_reply.minttl = 0; - break; - - default: - ares_free(ptr); - return NULL; - } + switch (type) { + case ARES_DATATYPE_MX_REPLY: + case ARES_DATATYPE_SRV_REPLY: + case ARES_DATATYPE_URI_REPLY: + case ARES_DATATYPE_TXT_EXT: + case ARES_DATATYPE_TXT_REPLY: + case ARES_DATATYPE_CAA_REPLY: + case ARES_DATATYPE_ADDR_NODE: + case ARES_DATATYPE_ADDR_PORT_NODE: + case ARES_DATATYPE_NAPTR_REPLY: + case ARES_DATATYPE_SOA_REPLY: + break; + + default: + ares_free(ptr); + return NULL; + } ptr->mark = ARES_DATATYPE_MARK; ptr->type = type; diff --git a/deps/cares/src/lib/ares_data.h b/deps/cares/src/lib/ares_data.h index 6965cf2a73dd92..b2c4d22b869a1c 100644 --- a/deps/cares/src/lib/ares_data.h +++ b/deps/cares/src/lib/ares_data.h @@ -27,24 +27,25 @@ #define __ARES_DATA_H typedef enum { - ARES_DATATYPE_UNKNOWN = 1, /* unknown data type - introduced in 1.7.0 */ - ARES_DATATYPE_SRV_REPLY, /* struct ares_srv_reply - introduced in 1.7.0 */ - ARES_DATATYPE_TXT_REPLY, /* struct ares_txt_reply - introduced in 1.7.0 */ - ARES_DATATYPE_TXT_EXT, /* struct ares_txt_ext - introduced in 1.11.0 */ - ARES_DATATYPE_ADDR_NODE, /* struct ares_addr_node - introduced in 1.7.1 */ + ARES_DATATYPE_UNKNOWN = 1, /* unknown data type - introduced in 1.7.0 */ + ARES_DATATYPE_SRV_REPLY, /* struct ares_srv_reply - introduced in 1.7.0 */ + ARES_DATATYPE_TXT_REPLY, /* struct ares_txt_reply - introduced in 1.7.0 */ + ARES_DATATYPE_TXT_EXT, /* struct ares_txt_ext - introduced in 1.11.0 */ + ARES_DATATYPE_ADDR_NODE, /* struct ares_addr_node - introduced in 1.7.1 */ ARES_DATATYPE_MX_REPLY, /* struct ares_mx_reply - introduced in 1.7.2 */ - ARES_DATATYPE_NAPTR_REPLY,/* struct ares_naptr_reply - introduced in 1.7.6 */ - ARES_DATATYPE_SOA_REPLY, /* struct ares_soa_reply - introduced in 1.9.0 */ - ARES_DATATYPE_URI_REPLY, /* struct ares_uri_reply */ + 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 */ + ARES_DATATYPE_URI_REPLY, /* struct ares_uri_reply */ #if 0 ARES_DATATYPE_ADDR6TTL, /* struct ares_addrttl */ ARES_DATATYPE_ADDRTTL, /* struct ares_addr6ttl */ ARES_DATATYPE_HOSTENT, /* struct hostent */ ARES_DATATYPE_OPTIONS, /* struct ares_options */ #endif - ARES_DATATYPE_ADDR_PORT_NODE, /* struct ares_addr_port_node - introduced in 1.11.0 */ - ARES_DATATYPE_CAA_REPLY, /* struct ares_caa_reply - introduced in 1.17 */ - ARES_DATATYPE_LAST /* not used - introduced in 1.7.0 */ + ARES_DATATYPE_ADDR_PORT_NODE, /* struct ares_addr_port_node - introduced + in 1.11.0 */ + ARES_DATATYPE_CAA_REPLY, /* struct ares_caa_reply - introduced in 1.17 */ + ARES_DATATYPE_LAST /* not used - introduced in 1.7.0 */ } ares_datatype; #define ARES_DATATYPE_MARK 0xbead @@ -68,19 +69,20 @@ typedef enum { */ struct ares_data { - ares_datatype type; /* Actual data type identifier. */ - unsigned int mark; /* Private ares_data signature. */ + ares_datatype type; /* Actual data type identifier. */ + unsigned int mark; /* Private ares_data signature. */ + union { - struct ares_txt_reply txt_reply; - struct ares_txt_ext txt_ext; - struct ares_srv_reply srv_reply; - struct ares_addr_node addr_node; - struct ares_addr_port_node addr_port_node; - struct ares_mx_reply mx_reply; - struct ares_naptr_reply naptr_reply; - struct ares_soa_reply soa_reply; - struct ares_caa_reply caa_reply; - struct ares_uri_reply uri_reply; + struct ares_txt_reply txt_reply; + struct ares_txt_ext txt_ext; + struct ares_srv_reply srv_reply; + struct ares_addr_node addr_node; + struct ares_addr_port_node addr_port_node; + struct ares_mx_reply mx_reply; + struct ares_naptr_reply naptr_reply; + struct ares_soa_reply soa_reply; + struct ares_caa_reply caa_reply; + struct ares_uri_reply uri_reply; } data; }; diff --git a/deps/cares/src/lib/ares_destroy.c b/deps/cares/src/lib/ares_destroy.c index 560082fd0cccc0..e05ea05eca1c2a 100644 --- a/deps/cares/src/lib/ares_destroy.c +++ b/deps/cares/src/lib/ares_destroy.c @@ -36,29 +36,37 @@ void ares_destroy_options(struct ares_options *options) { int i; - if(options->servers) + if (options->servers) { ares_free(options->servers); - for (i = 0; i < options->ndomains; i++) + } + for (i = 0; i < options->ndomains; i++) { ares_free(options->domains[i]); - if(options->domains) + } + if (options->domains) { ares_free(options->domains); - if(options->sortlist) + } + if (options->sortlist) { ares_free(options->sortlist); - if(options->lookups) + } + if (options->lookups) { ares_free(options->lookups); - if(options->resolvconf_path) + } + if (options->resolvconf_path) { ares_free(options->resolvconf_path); - if(options->hosts_path) + } + if (options->hosts_path) { ares_free(options->hosts_path); + } } void ares_destroy(ares_channel channel) { - int i; + size_t i; ares__llist_node_t *node = NULL; - if (!channel) + if (!channel) { return; + } /* Destroy all queries */ node = ares__llist_node_first(channel->all_queries); @@ -90,8 +98,9 @@ void ares_destroy(ares_channel channel) #endif if (channel->domains) { - for (i = 0; i < channel->ndomains; i++) + for (i = 0; i < channel->ndomains; i++) { ares_free(channel->domains[i]); + } ares_free(channel->domains); } @@ -100,20 +109,25 @@ void ares_destroy(ares_channel channel) ares__htable_stvp_destroy(channel->queries_by_qid); ares__htable_asvp_destroy(channel->connnode_by_socket); - if(channel->sortlist) + if (channel->sortlist) { ares_free(channel->sortlist); + } - if (channel->lookups) + if (channel->lookups) { ares_free(channel->lookups); + } - if (channel->resolvconf_path) + if (channel->resolvconf_path) { ares_free(channel->resolvconf_path); + } - if (channel->hosts_path) + if (channel->hosts_path) { ares_free(channel->hosts_path); + } - if (channel->rand_state) + if (channel->rand_state) { ares__destroy_rand_state(channel->rand_state); + } ares_free(channel); } @@ -121,20 +135,18 @@ void ares_destroy(ares_channel 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(server); - ares__llist_destroy(server->connections); - ares__buf_destroy(server->tcp_parser); - ares__buf_destroy(server->tcp_send); - } - ares_free(channel->servers); - channel->servers = NULL; + size_t i; + + if (channel->servers) { + for (i = 0; i < channel->nservers; i++) { + server = &channel->servers[i]; + ares__close_sockets(server); + ares__llist_destroy(server->connections); + ares__buf_destroy(server->tcp_parser); + ares__buf_destroy(server->tcp_send); } - channel->nservers = -1; + ares_free(channel->servers); + channel->servers = NULL; + } + channel->nservers = 0; } diff --git a/deps/cares/src/lib/ares_dns_mapping.c b/deps/cares/src/lib/ares_dns_mapping.c new file mode 100644 index 00000000000000..057d617f9404d1 --- /dev/null +++ b/deps/cares/src/lib/ares_dns_mapping.c @@ -0,0 +1,520 @@ +/* MIT License + * + * Copyright (c) 2023 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#include "ares_setup.h" +#include "ares.h" +#include "ares_private.h" +#include "ares_dns_record.h" + +ares_bool_t ares_dns_opcode_isvalid(ares_dns_opcode_t opcode) +{ + switch (opcode) { + case ARES_OPCODE_QUERY: + case ARES_OPCODE_IQUERY: + case ARES_OPCODE_STATUS: + case ARES_OPCODE_NOTIFY: + case ARES_OPCODE_UPDATE: + return ARES_TRUE; + } + return ARES_FALSE; +} + +ares_bool_t ares_dns_rcode_isvalid(ares_dns_rcode_t rcode) +{ + switch (rcode) { + case ARES_RCODE_NOERROR: + case ARES_RCODE_FORMAT_ERROR: + case ARES_RCODE_SERVER_FAILURE: + case ARES_RCODE_NAME_ERROR: + case ARES_RCODE_NOT_IMPLEMENTED: + case ARES_RCODE_REFUSED: + case ARES_RCODE_YXDOMAIN: + case ARES_RCODE_YXRRSET: + case ARES_RCODE_NXRRSET: + case ARES_RCODE_NOTAUTH: + case ARES_RCODE_NOTZONE: + return ARES_TRUE; + } + return ARES_FALSE; +} + +ares_bool_t ares_dns_flags_arevalid(unsigned short flags) +{ + unsigned short allflags = ARES_FLAG_QR | ARES_FLAG_AA | ARES_FLAG_TC | + ARES_FLAG_RD | ARES_FLAG_RA | ARES_FLAG_AD | + ARES_FLAG_CD; + + if (flags & ~allflags) { + return ARES_FALSE; + } + + return ARES_TRUE; +} + +ares_bool_t ares_dns_rec_type_isvalid(ares_dns_rec_type_t type, + ares_bool_t is_query) +{ + switch (type) { + case ARES_REC_TYPE_A: + case ARES_REC_TYPE_NS: + case ARES_REC_TYPE_CNAME: + case ARES_REC_TYPE_SOA: + case ARES_REC_TYPE_PTR: + case ARES_REC_TYPE_HINFO: + case ARES_REC_TYPE_MX: + case ARES_REC_TYPE_TXT: + case ARES_REC_TYPE_AAAA: + case ARES_REC_TYPE_SRV: + case ARES_REC_TYPE_NAPTR: + case ARES_REC_TYPE_OPT: +#if 0 + case ARES_REC_TYPE_TLSA: + case ARES_REC_TYPE_SVBC: + case ARES_REC_TYPE_HTTPS: +#endif + case ARES_REC_TYPE_ANY: + case ARES_REC_TYPE_URI: + case ARES_REC_TYPE_CAA: + return ARES_TRUE; + case ARES_REC_TYPE_RAW_RR: + return is_query ? ARES_FALSE : ARES_TRUE; + default: + break; + } + return is_query ? ARES_TRUE : ARES_FALSE; +} + +ares_bool_t ares_dns_class_isvalid(ares_dns_class_t qclass, + ares_bool_t is_query) +{ + switch (qclass) { + case ARES_CLASS_IN: + case ARES_CLASS_CHAOS: + case ARES_CLASS_HESOID: + case ARES_CLASS_NONE: + return ARES_TRUE; + case ARES_CLASS_ANY: + return is_query ? ARES_TRUE : ARES_FALSE; + } + return ARES_FALSE; +} + +ares_bool_t ares_dns_section_isvalid(ares_dns_section_t sect) +{ + switch (sect) { + case ARES_SECTION_ANSWER: + case ARES_SECTION_AUTHORITY: + case ARES_SECTION_ADDITIONAL: + return ARES_TRUE; + } + return ARES_FALSE; +} + +ares_dns_rec_type_t ares_dns_rr_key_to_rec_type(ares_dns_rr_key_t key) +{ + /* NOTE: due to the way we've numerated the keys, we can simply divide by + * 100 to get the type rather than having to do a huge switch + * statement. That said, we do then validate the type returned is + * valid in case something completely bogus is passed in */ + ares_dns_rec_type_t type = key / 100; + if (!ares_dns_rec_type_isvalid(type, ARES_FALSE)) { + return 0; + } + return type; +} + +const char *ares_dns_rec_type_tostr(ares_dns_rec_type_t type) +{ + switch (type) { + case ARES_REC_TYPE_A: + return "A"; + case ARES_REC_TYPE_NS: + return "NS"; + case ARES_REC_TYPE_CNAME: + return "CNAME"; + case ARES_REC_TYPE_SOA: + return "SOA"; + case ARES_REC_TYPE_PTR: + return "PTR"; + case ARES_REC_TYPE_HINFO: + return "HINFO"; + case ARES_REC_TYPE_MX: + return "MX"; + case ARES_REC_TYPE_TXT: + return "TXT"; + case ARES_REC_TYPE_AAAA: + return "AAAA"; + case ARES_REC_TYPE_SRV: + return "SRV"; + case ARES_REC_TYPE_NAPTR: + return "NAPTR"; + case ARES_REC_TYPE_OPT: + return "OPT"; +#if 0 + case ARES_REC_TYPE_TLSA: + return "TLSA"; + case ARES_REC_TYPE_SVBC: + return "SVBC"; + case ARES_REC_TYPE_HTTPS: + return "HTTPS"; +#endif + case ARES_REC_TYPE_ANY: + return "ANY"; + case ARES_REC_TYPE_URI: + return "URI"; + case ARES_REC_TYPE_CAA: + return "CAA"; + case ARES_REC_TYPE_RAW_RR: + return "RAWRR"; + } + return "UNKNOWN"; +} + +const char *ares_dns_class_tostr(ares_dns_class_t qclass) +{ + switch (qclass) { + case ARES_CLASS_IN: + return "IN"; + case ARES_CLASS_CHAOS: + return "CH"; + case ARES_CLASS_HESOID: + return "HS"; + case ARES_CLASS_ANY: + return "ANY"; + case ARES_CLASS_NONE: + return "NONE"; + } + return "UNKNOWN"; +} + +const char *ares_dns_opcode_tostr(ares_dns_opcode_t opcode) +{ + switch (opcode) { + case ARES_OPCODE_QUERY: + return "QUERY"; + case ARES_OPCODE_IQUERY: + return "IQUERY"; + case ARES_OPCODE_STATUS: + return "STATUS"; + case ARES_OPCODE_NOTIFY: + return "NOTIFY"; + case ARES_OPCODE_UPDATE: + return "UPDATE"; + } + return "UNKNOWN"; +} + +const char *ares_dns_rr_key_tostr(ares_dns_rr_key_t key) +{ + switch (key) { + case ARES_RR_A_ADDR: + return "ADDR"; + + case ARES_RR_NS_NSDNAME: + return "NSDNAME"; + + case ARES_RR_CNAME_CNAME: + return "CNAME"; + + case ARES_RR_SOA_MNAME: + return "MNAME"; + + case ARES_RR_SOA_RNAME: + return "RNAME"; + + case ARES_RR_SOA_SERIAL: + return "SERIAL"; + + case ARES_RR_SOA_REFRESH: + return "REFRESH"; + + case ARES_RR_SOA_RETRY: + return "RETRY"; + + case ARES_RR_SOA_EXPIRE: + return "EXPIRE"; + + case ARES_RR_SOA_MINIMUM: + return "MINIMUM"; + + case ARES_RR_PTR_DNAME: + return "DNAME"; + + case ARES_RR_AAAA_ADDR: + return "ADDR"; + + case ARES_RR_HINFO_CPU: + return "CPU"; + + case ARES_RR_HINFO_OS: + return "OS"; + + case ARES_RR_MX_PREFERENCE: + return "PREFERENCE"; + + case ARES_RR_MX_EXCHANGE: + return "EXCHANGE"; + + case ARES_RR_TXT_DATA: + return "DATA"; + + case ARES_RR_SRV_PRIORITY: + return "PRIORITY"; + + case ARES_RR_SRV_WEIGHT: + return "WEIGHT"; + + case ARES_RR_SRV_PORT: + return "PORT"; + + case ARES_RR_SRV_TARGET: + return "TARGET"; + + case ARES_RR_NAPTR_ORDER: + return "ORDER"; + + case ARES_RR_NAPTR_PREFERENCE: + return "PREFERENCE"; + + case ARES_RR_NAPTR_FLAGS: + return "FLAGS"; + + case ARES_RR_NAPTR_SERVICES: + return "SERVICES"; + + case ARES_RR_NAPTR_REGEXP: + return "REGEXP"; + + case ARES_RR_NAPTR_REPLACEMENT: + return "REPLACEMENT"; + + case ARES_RR_OPT_UDP_SIZE: + return "UDP_SIZE"; + + case ARES_RR_OPT_EXT_RCODE: + return "EXT_RCODE"; + + case ARES_RR_OPT_VERSION: + return "VERSION"; + + case ARES_RR_OPT_FLAGS: + return "FLAGS"; + + case ARES_RR_URI_PRIORITY: + return "PRIORITY"; + + case ARES_RR_URI_WEIGHT: + return "WEIGHT"; + + case ARES_RR_URI_TARGET: + return "TARGET"; + + case ARES_RR_CAA_CRITICAL: + return "CRITICAL"; + + case ARES_RR_CAA_TAG: + return "TAG"; + + case ARES_RR_CAA_VALUE: + return "VALUE"; + + case ARES_RR_RAW_RR_TYPE: + return "TYPE"; + + case ARES_RR_RAW_RR_DATA: + return "DATA"; + } + + return "UNKNOWN"; +} + +ares_dns_datatype_t ares_dns_rr_key_datatype(ares_dns_rr_key_t key) +{ + switch (key) { + case ARES_RR_A_ADDR: + return ARES_DATATYPE_INADDR; + + case ARES_RR_AAAA_ADDR: + return ARES_DATATYPE_INADDR6; + + case ARES_RR_NS_NSDNAME: + case ARES_RR_CNAME_CNAME: + case ARES_RR_SOA_MNAME: + case ARES_RR_SOA_RNAME: + case ARES_RR_PTR_DNAME: + case ARES_RR_HINFO_CPU: + case ARES_RR_HINFO_OS: + case ARES_RR_MX_EXCHANGE: + case ARES_RR_SRV_TARGET: + case ARES_RR_NAPTR_FLAGS: + case ARES_RR_NAPTR_SERVICES: + case ARES_RR_NAPTR_REGEXP: + case ARES_RR_NAPTR_REPLACEMENT: + case ARES_RR_URI_TARGET: + case ARES_RR_CAA_TAG: + return ARES_DATATYPE_STR; + + case ARES_RR_SOA_SERIAL: + case ARES_RR_SOA_REFRESH: + case ARES_RR_SOA_RETRY: + case ARES_RR_SOA_EXPIRE: + case ARES_RR_SOA_MINIMUM: + return ARES_DATATYPE_U32; + + case ARES_RR_MX_PREFERENCE: + case ARES_RR_SRV_PRIORITY: + case ARES_RR_SRV_WEIGHT: + case ARES_RR_SRV_PORT: + case ARES_RR_NAPTR_ORDER: + case ARES_RR_NAPTR_PREFERENCE: + case ARES_RR_OPT_UDP_SIZE: + case ARES_RR_OPT_FLAGS: + case ARES_RR_URI_PRIORITY: + case ARES_RR_URI_WEIGHT: + case ARES_RR_RAW_RR_TYPE: + return ARES_DATATYPE_U16; + + case ARES_RR_OPT_EXT_RCODE: + case ARES_RR_OPT_VERSION: + case ARES_RR_CAA_CRITICAL: + return ARES_DATATYPE_U8; + + case ARES_RR_CAA_VALUE: + case ARES_RR_TXT_DATA: + case ARES_RR_RAW_RR_DATA: + return ARES_DATATYPE_BIN; + } + + return 0; +} + +static const ares_dns_rr_key_t rr_a_keys[] = { ARES_RR_A_ADDR }; +static const ares_dns_rr_key_t rr_ns_keys[] = { ARES_RR_NS_NSDNAME }; +static const ares_dns_rr_key_t rr_cname_keys[] = { ARES_RR_CNAME_CNAME }; +static const ares_dns_rr_key_t rr_soa_keys[] = { + ARES_RR_SOA_MNAME, ARES_RR_SOA_RNAME, ARES_RR_SOA_SERIAL, + ARES_RR_SOA_REFRESH, ARES_RR_SOA_RETRY, ARES_RR_SOA_EXPIRE, + ARES_RR_SOA_MINIMUM +}; +static const ares_dns_rr_key_t rr_ptr_keys[] = { ARES_RR_PTR_DNAME }; +static const ares_dns_rr_key_t rr_hinfo_keys[] = { ARES_RR_HINFO_CPU, + ARES_RR_HINFO_OS }; +static const ares_dns_rr_key_t rr_mx_keys[] = { ARES_RR_MX_PREFERENCE, + ARES_RR_MX_EXCHANGE }; +static const ares_dns_rr_key_t rr_txt_keys[] = { ARES_RR_TXT_DATA }; +static const ares_dns_rr_key_t rr_aaaa_keys[] = { ARES_RR_AAAA_ADDR }; +static const ares_dns_rr_key_t rr_srv_keys[] = { + ARES_RR_SRV_PRIORITY, ARES_RR_SRV_WEIGHT, ARES_RR_SRV_PORT, ARES_RR_SRV_TARGET +}; +static const ares_dns_rr_key_t rr_naptr_keys[] = { + ARES_RR_NAPTR_ORDER, ARES_RR_NAPTR_PREFERENCE, ARES_RR_NAPTR_FLAGS, + ARES_RR_NAPTR_SERVICES, ARES_RR_NAPTR_REGEXP, ARES_RR_NAPTR_REPLACEMENT +}; +static const ares_dns_rr_key_t rr_opt_keys[] = { ARES_RR_OPT_UDP_SIZE, + ARES_RR_OPT_EXT_RCODE, + ARES_RR_OPT_VERSION, + ARES_RR_OPT_FLAGS }; +static const ares_dns_rr_key_t rr_uri_keys[] = { ARES_RR_URI_PRIORITY, + ARES_RR_URI_WEIGHT, + ARES_RR_URI_TARGET }; +static const ares_dns_rr_key_t rr_caa_keys[] = { ARES_RR_CAA_CRITICAL, + ARES_RR_CAA_TAG, + ARES_RR_CAA_VALUE }; +static const ares_dns_rr_key_t rr_raw_rr_keys[] = { ARES_RR_RAW_RR_TYPE, + ARES_RR_RAW_RR_DATA }; + +const ares_dns_rr_key_t *ares_dns_rr_get_keys(ares_dns_rec_type_t type, + size_t *cnt) +{ + if (cnt == NULL) { + return NULL; + } + + *cnt = 0; + + switch (type) { + case ARES_REC_TYPE_A: + *cnt = sizeof(rr_a_keys) / sizeof(*rr_a_keys); + return rr_a_keys; + case ARES_REC_TYPE_NS: + *cnt = sizeof(rr_ns_keys) / sizeof(*rr_ns_keys); + return rr_ns_keys; + case ARES_REC_TYPE_CNAME: + *cnt = sizeof(rr_cname_keys) / sizeof(*rr_cname_keys); + return rr_cname_keys; + case ARES_REC_TYPE_SOA: + *cnt = sizeof(rr_soa_keys) / sizeof(*rr_soa_keys); + return rr_soa_keys; + case ARES_REC_TYPE_PTR: + *cnt = sizeof(rr_ptr_keys) / sizeof(*rr_ptr_keys); + return rr_ptr_keys; + case ARES_REC_TYPE_HINFO: + *cnt = sizeof(rr_hinfo_keys) / sizeof(*rr_hinfo_keys); + return rr_hinfo_keys; + case ARES_REC_TYPE_MX: + *cnt = sizeof(rr_mx_keys) / sizeof(*rr_mx_keys); + return rr_mx_keys; + case ARES_REC_TYPE_TXT: + *cnt = sizeof(rr_txt_keys) / sizeof(*rr_txt_keys); + return rr_txt_keys; + case ARES_REC_TYPE_AAAA: + *cnt = sizeof(rr_aaaa_keys) / sizeof(*rr_aaaa_keys); + return rr_aaaa_keys; + case ARES_REC_TYPE_SRV: + *cnt = sizeof(rr_srv_keys) / sizeof(*rr_srv_keys); + return rr_srv_keys; + case ARES_REC_TYPE_NAPTR: + *cnt = sizeof(rr_naptr_keys) / sizeof(*rr_naptr_keys); + return rr_naptr_keys; + case ARES_REC_TYPE_OPT: + *cnt = sizeof(rr_opt_keys) / sizeof(*rr_opt_keys); + return rr_opt_keys; +#if 0 + case ARES_REC_TYPE_TLSA: + *cnt = sizeof(rr_tlsa_keys) / sizeof(*rr_tlsa_keys); + return rr_tlsa_keys; + case ARES_REC_TYPE_SVBC: + *cnt = sizeof(rr_svbc_keys) / sizeof(*rr_svbc_keys); + return rr_svbc_keys; + case ARES_REC_TYPE_HTTPS: + *cnt = sizeof(rr_https_keys) / sizeof(*rr_https_keys); + return rr_https_keys; +#endif + case ARES_REC_TYPE_ANY: + /* Not real */ + break; + case ARES_REC_TYPE_URI: + *cnt = sizeof(rr_uri_keys) / sizeof(*rr_uri_keys); + return rr_uri_keys; + case ARES_REC_TYPE_CAA: + *cnt = sizeof(rr_caa_keys) / sizeof(*rr_caa_keys); + return rr_caa_keys; + case ARES_REC_TYPE_RAW_RR: + *cnt = sizeof(rr_raw_rr_keys) / sizeof(*rr_raw_rr_keys); + return rr_raw_rr_keys; + } + + return NULL; +} diff --git a/deps/cares/src/lib/ares_dns_parse.c b/deps/cares/src/lib/ares_dns_parse.c new file mode 100644 index 00000000000000..095ab3bc1363e2 --- /dev/null +++ b/deps/cares/src/lib/ares_dns_parse.c @@ -0,0 +1,1043 @@ +/* MIT License + * + * Copyright (c) 2023 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#include "ares_setup.h" +#include "ares.h" +#include "ares_private.h" +#include "ares_dns_record.h" +#include +#ifdef HAVE_STDINT_H +# include +#endif + +static size_t ares_dns_rr_remaining_len(const ares__buf_t *buf, size_t orig_len, + size_t rdlength) +{ + size_t used_len = orig_len - ares__buf_len(buf); + if (used_len >= rdlength) { + return 0; + } + return rdlength - used_len; +} + +static ares_status_t ares_dns_parse_and_set_dns_name(ares__buf_t *buf, + ares_bool_t is_hostname, + ares_dns_rr_t *rr, + ares_dns_rr_key_t key) +{ + ares_status_t status; + char *name = NULL; + + status = ares__buf_parse_dns_name(buf, &name, is_hostname); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_str_own(rr, key, name); + if (status != ARES_SUCCESS) { + ares_free(name); + return status; + } + return ARES_SUCCESS; +} + +static ares_status_t ares_dns_parse_and_set_dns_str(ares__buf_t *buf, + size_t max_len, + ares_bool_t allow_multiple, + ares_dns_rr_t *rr, + ares_dns_rr_key_t key) +{ + ares_status_t status; + char *str = NULL; + + status = ares__buf_parse_dns_str(buf, max_len, &str, allow_multiple); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_str_own(rr, key, str); + if (status != ARES_SUCCESS) { + ares_free(str); + return status; + } + return ARES_SUCCESS; +} + +static ares_status_t + ares_dns_parse_and_set_dns_binstr(ares__buf_t *buf, size_t max_len, + ares_bool_t allow_multiple, + ares_dns_rr_t *rr, ares_dns_rr_key_t key) +{ + ares_status_t status; + unsigned char *bin = NULL; + size_t bin_len = 0; + + status = + ares__buf_parse_dns_binstr(buf, max_len, &bin, &bin_len, allow_multiple); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_bin_own(rr, key, bin, bin_len); + if (status != ARES_SUCCESS) { + ares_free(bin); + return status; + } + return ARES_SUCCESS; +} + +static ares_status_t ares_dns_parse_and_set_be32(ares__buf_t *buf, + ares_dns_rr_t *rr, + ares_dns_rr_key_t key) +{ + ares_status_t status; + unsigned int u32; + + status = ares__buf_fetch_be32(buf, &u32); + if (status != ARES_SUCCESS) { + return status; + } + + return ares_dns_rr_set_u32(rr, key, u32); +} + +static ares_status_t ares_dns_parse_and_set_be16(ares__buf_t *buf, + ares_dns_rr_t *rr, + ares_dns_rr_key_t key) +{ + ares_status_t status; + unsigned short u16; + + status = ares__buf_fetch_be16(buf, &u16); + if (status != ARES_SUCCESS) { + return status; + } + + return ares_dns_rr_set_u16(rr, key, u16); +} + +static ares_status_t ares_dns_parse_and_set_u8(ares__buf_t *buf, + ares_dns_rr_t *rr, + ares_dns_rr_key_t key) +{ + ares_status_t status; + unsigned char u8; + + status = ares__buf_fetch_bytes(buf, &u8, 1); + if (status != ARES_SUCCESS) { + return status; + } + + return ares_dns_rr_set_u8(rr, key, u8); +} + +static ares_status_t ares_dns_parse_rr_a(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + struct in_addr addr; + ares_status_t status; + + (void)rdlength; /* Not needed */ + + status = ares__buf_fetch_bytes(buf, (unsigned char *)&addr, sizeof(addr)); + if (status != ARES_SUCCESS) { + return status; + } + + return ares_dns_rr_set_addr(rr, ARES_RR_A_ADDR, &addr); +} + +static ares_status_t ares_dns_parse_rr_ns(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + (void)rdlength; /* Not needed */ + + return ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, + ARES_RR_NS_NSDNAME); +} + +static ares_status_t ares_dns_parse_rr_cname(ares__buf_t *buf, + ares_dns_rr_t *rr, size_t rdlength) +{ + (void)rdlength; /* Not needed */ + + return ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, + ARES_RR_CNAME_CNAME); +} + +static ares_status_t ares_dns_parse_rr_soa(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + ares_status_t status; + + (void)rdlength; /* Not needed */ + + /* MNAME */ + status = + ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, ARES_RR_SOA_MNAME); + if (status != ARES_SUCCESS) { + return status; + } + + /* RNAME */ + status = + ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, ARES_RR_SOA_RNAME); + if (status != ARES_SUCCESS) { + return status; + } + + /* SERIAL */ + status = ares_dns_parse_and_set_be32(buf, rr, ARES_RR_SOA_SERIAL); + if (status != ARES_SUCCESS) { + return status; + } + + /* REFRESH */ + status = ares_dns_parse_and_set_be32(buf, rr, ARES_RR_SOA_REFRESH); + if (status != ARES_SUCCESS) { + return status; + } + + /* RETRY */ + status = ares_dns_parse_and_set_be32(buf, rr, ARES_RR_SOA_RETRY); + if (status != ARES_SUCCESS) { + return status; + } + + /* EXPIRE */ + status = ares_dns_parse_and_set_be32(buf, rr, ARES_RR_SOA_EXPIRE); + if (status != ARES_SUCCESS) { + return status; + } + + /* MINIMUM */ + return ares_dns_parse_and_set_be32(buf, rr, ARES_RR_SOA_MINIMUM); +} + +static ares_status_t ares_dns_parse_rr_ptr(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + (void)rdlength; /* Not needed */ + + return ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, + ARES_RR_PTR_DNAME); +} + +static ares_status_t ares_dns_parse_rr_hinfo(ares__buf_t *buf, + ares_dns_rr_t *rr, size_t rdlength) +{ + ares_status_t status; + size_t orig_len = ares__buf_len(buf); + + (void)rdlength; /* Not needed */ + + /* CPU */ + status = ares_dns_parse_and_set_dns_str( + buf, ares_dns_rr_remaining_len(buf, orig_len, rdlength), ARES_FALSE, rr, + ARES_RR_HINFO_CPU); + if (status != ARES_SUCCESS) { + return status; + } + + /* OS */ + return ares_dns_parse_and_set_dns_str( + buf, ares_dns_rr_remaining_len(buf, orig_len, rdlength), ARES_FALSE, rr, + ARES_RR_HINFO_OS); +} + +static ares_status_t ares_dns_parse_rr_mx(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + ares_status_t status; + + (void)rdlength; /* Not needed */ + + /* PREFERENCE */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_MX_PREFERENCE); + if (status != ARES_SUCCESS) { + return status; + } + + /* EXCHANGE */ + return ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, + ARES_RR_MX_EXCHANGE); +} + +static ares_status_t ares_dns_parse_rr_txt(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + return ares_dns_parse_and_set_dns_binstr(buf, rdlength, ARES_TRUE, rr, + ARES_RR_TXT_DATA); +} + +static ares_status_t ares_dns_parse_rr_aaaa(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + struct ares_in6_addr addr; + ares_status_t status; + + (void)rdlength; /* Not needed */ + + status = ares__buf_fetch_bytes(buf, (unsigned char *)&addr, sizeof(addr)); + if (status != ARES_SUCCESS) { + return status; + } + + return ares_dns_rr_set_addr6(rr, ARES_RR_AAAA_ADDR, &addr); +} + +static ares_status_t ares_dns_parse_rr_srv(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + ares_status_t status; + + (void)rdlength; /* Not needed */ + + /* PRIORITY */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_SRV_PRIORITY); + if (status != ARES_SUCCESS) { + return status; + } + + /* WEIGHT */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_SRV_WEIGHT); + if (status != ARES_SUCCESS) { + return status; + } + + /* PORT */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_SRV_PORT); + if (status != ARES_SUCCESS) { + return status; + } + + /* TARGET */ + return ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, + ARES_RR_SRV_TARGET); +} + +static ares_status_t ares_dns_parse_rr_naptr(ares__buf_t *buf, + ares_dns_rr_t *rr, size_t rdlength) +{ + ares_status_t status; + size_t orig_len = ares__buf_len(buf); + + /* ORDER */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_NAPTR_ORDER); + if (status != ARES_SUCCESS) { + return status; + } + + /* PREFERENCE */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_NAPTR_PREFERENCE); + if (status != ARES_SUCCESS) { + return status; + } + + /* FLAGS */ + status = ares_dns_parse_and_set_dns_str( + buf, ares_dns_rr_remaining_len(buf, orig_len, rdlength), ARES_FALSE, rr, + ARES_RR_NAPTR_FLAGS); + if (status != ARES_SUCCESS) { + return status; + } + + /* SERVICES */ + status = ares_dns_parse_and_set_dns_str( + buf, ares_dns_rr_remaining_len(buf, orig_len, rdlength), ARES_FALSE, rr, + ARES_RR_NAPTR_SERVICES); + if (status != ARES_SUCCESS) { + return status; + } + + /* REGEXP */ + status = ares_dns_parse_and_set_dns_str( + buf, ares_dns_rr_remaining_len(buf, orig_len, rdlength), ARES_FALSE, rr, + ARES_RR_NAPTR_REGEXP); + if (status != ARES_SUCCESS) { + return status; + } + + /* REPLACEMENT */ + return ares_dns_parse_and_set_dns_name(buf, ARES_FALSE, rr, + ARES_RR_NAPTR_REPLACEMENT); +} + +static ares_status_t ares_dns_parse_rr_opt(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength, + unsigned short raw_class, + unsigned int raw_ttl) +{ + ares_status_t status; + + (void)rdlength; /* Not needed */ + + status = ares_dns_rr_set_u16(rr, ARES_RR_OPT_UDP_SIZE, raw_class); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_u8(rr, ARES_RR_OPT_EXT_RCODE, + (unsigned char)(raw_ttl >> 24) & 0xFF); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_u8(rr, ARES_RR_OPT_VERSION, + (unsigned char)(raw_ttl >> 16) & 0xFF); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_u16(rr, ARES_RR_OPT_FLAGS, + (unsigned short)(raw_ttl & 0xFFFF)); + if (status != ARES_SUCCESS) { + return status; + } + + /* XXX: Support additional message here */ + (void)buf; + return ARES_SUCCESS; +} + +static ares_status_t ares_dns_parse_rr_uri(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + char *name = NULL; + ares_status_t status; + size_t orig_len = ares__buf_len(buf); + size_t remaining_len; + + /* PRIORITY */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_URI_PRIORITY); + if (status != ARES_SUCCESS) { + return status; + } + + /* WEIGHT */ + status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_URI_WEIGHT); + if (status != ARES_SUCCESS) { + return status; + } + + /* TARGET -- not in string format, rest of buffer, required to be + * non-zero length */ + remaining_len = ares_dns_rr_remaining_len(buf, orig_len, rdlength); + if (remaining_len == 0) { + status = ARES_EBADRESP; + return status; + } + + /* NOTE: Not in DNS string format */ + status = ares__buf_fetch_str_dup(buf, remaining_len, &name); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_str_own(rr, ARES_RR_URI_TARGET, name); + if (status != ARES_SUCCESS) { + ares_free(name); + return status; + } + name = NULL; + + return ARES_SUCCESS; +} + +static ares_status_t ares_dns_parse_rr_caa(ares__buf_t *buf, ares_dns_rr_t *rr, + size_t rdlength) +{ + unsigned char *data = NULL; + size_t data_len = 0; + ares_status_t status; + size_t orig_len = ares__buf_len(buf); + + /* CRITICAL */ + status = ares_dns_parse_and_set_u8(buf, rr, ARES_RR_CAA_CRITICAL); + if (status != ARES_SUCCESS) { + return status; + } + + /* Tag */ + status = ares_dns_parse_and_set_dns_str( + buf, ares_dns_rr_remaining_len(buf, orig_len, rdlength), ARES_FALSE, rr, + ARES_RR_CAA_TAG); + if (status != ARES_SUCCESS) { + return status; + } + + /* Value - binary! (remaining buffer */ + data_len = ares_dns_rr_remaining_len(buf, orig_len, rdlength); + if (data_len == 0) { + status = ARES_EBADRESP; + return status; + } + status = ares__buf_fetch_bytes_dup(buf, data_len, &data); + if (status != ARES_SUCCESS) { + return status; + } + + status = ares_dns_rr_set_bin_own(rr, ARES_RR_CAA_VALUE, data, data_len); + if (status != ARES_SUCCESS) { + ares_free(data); + return status; + } + data = NULL; + + return ARES_SUCCESS; +} + +static ares_status_t ares_dns_parse_rr_raw_rr(ares__buf_t *buf, + ares_dns_rr_t *rr, + size_t rdlength, + unsigned short raw_type) +{ + ares_status_t status; + unsigned char *bytes = NULL; + + if (rdlength == 0) { + return ARES_SUCCESS; + } + + status = ares__buf_fetch_bytes_dup(buf, rdlength, &bytes); + if (status != ARES_SUCCESS) { + return status; + } + + /* Can't fail */ + status = ares_dns_rr_set_u16(rr, ARES_RR_RAW_RR_TYPE, raw_type); + if (status != ARES_SUCCESS) { + ares_free(bytes); + return status; + } + + status = ares_dns_rr_set_bin_own(rr, ARES_RR_RAW_RR_DATA, bytes, rdlength); + if (status != ARES_SUCCESS) { + ares_free(bytes); + return status; + } + + return ARES_SUCCESS; +} + +static ares_status_t ares_dns_parse_header(ares__buf_t *buf, unsigned int flags, + ares_dns_record_t **dnsrec, + unsigned short *qdcount, + unsigned short *ancount, + unsigned short *nscount, + unsigned short *arcount) +{ + ares_status_t status = ARES_EBADRESP; + unsigned short u16; + unsigned short id; + unsigned short dns_flags = 0; + ares_dns_opcode_t opcode; + ares_dns_rcode_t rcode; + + (void)flags; /* currently unsed */ + + if (buf == NULL || dnsrec == NULL || qdcount == NULL || ancount == NULL || + nscount == NULL || arcount == NULL) { + return ARES_EFORMERR; + } + + *dnsrec = NULL; + + /* + * RFC 1035 4.1.1. Header section format. + * and Updated by RFC 2065 to add AD and CD bits. + * 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|AD|CD| RCODE | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | QDCOUNT | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | ANCOUNT | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | NSCOUNT | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | ARCOUNT | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + */ + + /* ID */ + status = ares__buf_fetch_be16(buf, &id); + if (status != ARES_SUCCESS) { + goto fail; + } + + /* Flags */ + status = ares__buf_fetch_be16(buf, &u16); + if (status != ARES_SUCCESS) { + goto fail; + } + + /* QR */ + if (u16 & 0x8000) { + dns_flags |= ARES_FLAG_QR; + } + + /* OPCODE */ + opcode = (u16 >> 11) & 0xf; + + /* AA */ + if (u16 & 0x400) { + dns_flags |= ARES_FLAG_AA; + } + + /* TC */ + if (u16 & 0x200) { + dns_flags |= ARES_FLAG_TC; + } + + /* RD */ + if (u16 & 0x100) { + dns_flags |= ARES_FLAG_RD; + } + + /* RA */ + if (u16 & 0x80) { + dns_flags |= ARES_FLAG_RA; + } + + /* Z -- unused */ + + /* AD */ + if (u16 & 0x20) { + dns_flags |= ARES_FLAG_AD; + } + + /* CD */ + if (u16 & 0x10) { + dns_flags |= ARES_FLAG_CD; + } + + /* RCODE */ + rcode = u16 & 0xf; + + /* QDCOUNT */ + status = ares__buf_fetch_be16(buf, qdcount); + if (status != ARES_SUCCESS) { + goto fail; + } + + /* ANCOUNT */ + status = ares__buf_fetch_be16(buf, ancount); + if (status != ARES_SUCCESS) { + goto fail; + } + + /* NSCOUNT */ + status = ares__buf_fetch_be16(buf, nscount); + if (status != ARES_SUCCESS) { + goto fail; + } + + /* ARCOUNT */ + status = ares__buf_fetch_be16(buf, arcount); + if (status != ARES_SUCCESS) { + goto fail; + } + + status = ares_dns_record_create(dnsrec, id, dns_flags, opcode, rcode); + if (status != ARES_SUCCESS) { + goto fail; + } + + if (*ancount > 0) { + status = + ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ANSWER, *ancount); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + if (*nscount > 0) { + status = + ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_AUTHORITY, *nscount); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + if (*arcount > 0) { + status = + ares_dns_record_rr_prealloc(*dnsrec, ARES_SECTION_ADDITIONAL, *arcount); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + return ARES_SUCCESS; + +fail: + ares_dns_record_destroy(*dnsrec); + *dnsrec = NULL; + *qdcount = 0; + *ancount = 0; + *nscount = 0; + *arcount = 0; + + return status; +} + +static ares_status_t + ares_dns_parse_rr_data(ares__buf_t *buf, size_t rdlength, ares_dns_rr_t *rr, + ares_dns_rec_type_t type, unsigned short raw_type, + unsigned short raw_class, unsigned int raw_ttl) +{ + switch (type) { + case ARES_REC_TYPE_A: + return ares_dns_parse_rr_a(buf, rr, rdlength); + case ARES_REC_TYPE_NS: + return ares_dns_parse_rr_ns(buf, rr, rdlength); + case ARES_REC_TYPE_CNAME: + return ares_dns_parse_rr_cname(buf, rr, rdlength); + case ARES_REC_TYPE_SOA: + return ares_dns_parse_rr_soa(buf, rr, rdlength); + case ARES_REC_TYPE_PTR: + return ares_dns_parse_rr_ptr(buf, rr, rdlength); + case ARES_REC_TYPE_HINFO: + return ares_dns_parse_rr_hinfo(buf, rr, rdlength); + case ARES_REC_TYPE_MX: + return ares_dns_parse_rr_mx(buf, rr, rdlength); + case ARES_REC_TYPE_TXT: + return ares_dns_parse_rr_txt(buf, rr, rdlength); + case ARES_REC_TYPE_AAAA: + return ares_dns_parse_rr_aaaa(buf, rr, rdlength); + case ARES_REC_TYPE_SRV: + return ares_dns_parse_rr_srv(buf, rr, rdlength); + case ARES_REC_TYPE_NAPTR: + return ares_dns_parse_rr_naptr(buf, rr, rdlength); + case ARES_REC_TYPE_ANY: + return ARES_EBADRESP; + case ARES_REC_TYPE_OPT: + return ares_dns_parse_rr_opt(buf, rr, rdlength, raw_class, raw_ttl); + case ARES_REC_TYPE_URI: + return ares_dns_parse_rr_uri(buf, rr, rdlength); + case ARES_REC_TYPE_CAA: + return ares_dns_parse_rr_caa(buf, rr, rdlength); + case ARES_REC_TYPE_RAW_RR: + return ares_dns_parse_rr_raw_rr(buf, rr, rdlength, raw_type); + } + return ARES_EFORMERR; +} + +static ares_status_t ares_dns_parse_qd(ares__buf_t *buf, + ares_dns_record_t *dnsrec) +{ + char *name = NULL; + unsigned short u16; + ares_status_t status; + ares_dns_rec_type_t type; + ares_dns_class_t qclass; + /* The question section is used to carry the "question" in most queries, + * i.e., the parameters that define what is being asked. The section + * contains QDCOUNT (usually 1) entries, each of the following format: + * 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 | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + */ + + /* Name */ + status = ares__buf_parse_dns_name(buf, &name, ARES_FALSE); + if (status != ARES_SUCCESS) { + goto done; + } + + /* Type */ + status = ares__buf_fetch_be16(buf, &u16); + if (status != ARES_SUCCESS) { + goto done; + } + type = u16; + + /* Class */ + status = ares__buf_fetch_be16(buf, &u16); + if (status != ARES_SUCCESS) { + goto done; + } + qclass = u16; + + /* Add question */ + status = ares_dns_record_query_add(dnsrec, name, type, qclass); + if (status != ARES_SUCCESS) { + goto done; + } + +done: + ares_free(name); + return status; +} + +static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags, + ares_dns_section_t sect, + ares_dns_record_t *dnsrec) +{ + char *name = NULL; + unsigned short u16; + unsigned short raw_type; + ares_status_t status; + ares_dns_rec_type_t type; + ares_dns_class_t qclass; + unsigned int ttl; + size_t rdlength; + ares_dns_rr_t *rr = NULL; + size_t remaining_len = 0; + size_t processed_len = 0; + + (void)flags; /* currently unused */ + + /* All RRs have the same top level format shown below: + * 1 1 1 1 1 1 + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | | + * / / + * / NAME / + * | | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | TYPE | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | CLASS | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | TTL | + * | | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + * | RDLENGTH | + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| + * / RDATA / + * / / + * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ + */ + + /* Name */ + status = ares__buf_parse_dns_name(buf, &name, ARES_FALSE); + if (status != ARES_SUCCESS) { + goto done; + } + + /* Type */ + status = ares__buf_fetch_be16(buf, &u16); + if (status != ARES_SUCCESS) { + goto done; + } + type = u16; + raw_type = u16; /* Only used for raw rr data */ + + /* Class */ + status = ares__buf_fetch_be16(buf, &u16); + if (status != ARES_SUCCESS) { + goto done; + } + qclass = u16; + + /* TTL */ + status = ares__buf_fetch_be32(buf, &ttl); + if (status != ARES_SUCCESS) { + goto done; + } + + /* Length */ + status = ares__buf_fetch_be16(buf, &u16); + if (status != ARES_SUCCESS) { + goto done; + } + rdlength = u16; + + if (!ares_dns_rec_type_isvalid(type, ARES_FALSE)) { + type = ARES_REC_TYPE_RAW_RR; + } + + /* Pull into another buffer for safety */ + if (rdlength > ares__buf_len(buf)) { + status = ARES_EBADRESP; + goto done; + } + + /* Add the base rr */ + status = + ares_dns_record_rr_add(&rr, dnsrec, sect, name, type, + type == ARES_REC_TYPE_OPT ? ARES_CLASS_IN : qclass, + type == ARES_REC_TYPE_OPT ? 0 : ttl); + if (status != ARES_SUCCESS) { + goto done; + } + + /* Record the current remaining length in the buffer so we can tell how + * much was processed */ + remaining_len = ares__buf_len(buf); + + /* Fill in the data for the rr */ + status = ares_dns_parse_rr_data(buf, rdlength, rr, type, raw_type, + (unsigned short)qclass, ttl); + if (status != ARES_SUCCESS) { + goto done; + } + + + /* Determine how many bytes were processed */ + processed_len = remaining_len - ares__buf_len(buf); + + /* If too many bytes were processed, error! */ + if (processed_len > rdlength) { + status = ARES_EBADRESP; + goto done; + } + + /* If too few bytes were processed, consume the unprocessed data for this + * record as the parser may not have wanted/needed to use it */ + if (processed_len < rdlength) { + ares__buf_consume(buf, rdlength - processed_len); + } + + +done: + ares_free(name); + return status; +} + +static ares_status_t ares_dns_parse_buf(ares__buf_t *buf, unsigned int flags, + ares_dns_record_t **dnsrec) +{ + ares_status_t status; + unsigned short qdcount; + unsigned short ancount; + unsigned short nscount; + unsigned short arcount; + unsigned short i; + + if (buf == NULL || dnsrec == NULL) { + return ARES_EFORMERR; + } + + /* All communications inside of the domain protocol are carried in a single + * format called a message. The top level format of message is divided + * into 5 sections (some of which are empty in certain cases) shown below: + * + * +---------------------+ + * | Header | + * +---------------------+ + * | Question | the question for the name server + * +---------------------+ + * | Answer | RRs answering the question + * +---------------------+ + * | Authority | RRs pointing toward an authority + * +---------------------+ + * | Additional | RRs holding additional information + * +---------------------+ + */ + + /* Parse header */ + status = ares_dns_parse_header(buf, flags, dnsrec, &qdcount, &ancount, + &nscount, &arcount); + if (status != ARES_SUCCESS) { + goto fail; + } + + /* Must have questions */ + if (qdcount == 0) { + status = ARES_EBADRESP; + goto fail; + } + + /* XXX: this should be controlled by a flag in case we want to allow + * multiple questions. I think mDNS allows this */ + if (qdcount > 1) { + status = ARES_EBADRESP; + goto fail; + } + + /* Parse questions */ + for (i = 0; i < qdcount; i++) { + status = ares_dns_parse_qd(buf, *dnsrec); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + /* Parse Answers */ + for (i = 0; i < ancount; i++) { + status = ares_dns_parse_rr(buf, flags, ARES_SECTION_ANSWER, *dnsrec); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + /* Parse Authority */ + for (i = 0; i < nscount; i++) { + status = ares_dns_parse_rr(buf, flags, ARES_SECTION_AUTHORITY, *dnsrec); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + /* Parse Additional */ + for (i = 0; i < arcount; i++) { + status = ares_dns_parse_rr(buf, flags, ARES_SECTION_ADDITIONAL, *dnsrec); + if (status != ARES_SUCCESS) { + goto fail; + } + } + + return ARES_SUCCESS; + +fail: + ares_dns_record_destroy(*dnsrec); + *dnsrec = NULL; + return status; +} + +ares_status_t ares_dns_parse(const unsigned char *buf, size_t buf_len, + unsigned int flags, ares_dns_record_t **dnsrec) +{ + ares__buf_t *parser = NULL; + ares_status_t status; + + if (buf == NULL || buf_len == 0 || dnsrec == NULL) { + return ARES_EFORMERR; + } + + parser = ares__buf_create_const(buf, buf_len); + if (parser == NULL) { + return ARES_ENOMEM; + } + + status = ares_dns_parse_buf(parser, flags, dnsrec); + ares__buf_destroy(parser); + + return status; +} diff --git a/deps/cares/src/lib/ares_dns_record.c b/deps/cares/src/lib/ares_dns_record.c new file mode 100644 index 00000000000000..8adc88627afafa --- /dev/null +++ b/deps/cares/src/lib/ares_dns_record.c @@ -0,0 +1,935 @@ +/* MIT License + * + * Copyright (c) 2023 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#include "ares_setup.h" +#include "ares.h" +#include "ares_private.h" +#include "ares_dns_record.h" +#include +#ifdef HAVE_STDINT_H +# include +#endif + + +ares_status_t ares_dns_record_create(ares_dns_record_t **dnsrec, + unsigned short id, unsigned short flags, + ares_dns_opcode_t opcode, + ares_dns_rcode_t rcode) +{ + if (dnsrec == NULL) { + return ARES_EFORMERR; + } + + *dnsrec = NULL; + + if (!ares_dns_opcode_isvalid(opcode) || !ares_dns_rcode_isvalid(rcode) || + !ares_dns_flags_arevalid(flags)) { + return ARES_EFORMERR; + } + + *dnsrec = ares_malloc_zero(sizeof(**dnsrec)); + if (*dnsrec == NULL) { + return ARES_ENOMEM; + } + + (*dnsrec)->id = id; + (*dnsrec)->flags = flags; + (*dnsrec)->opcode = opcode; + (*dnsrec)->rcode = rcode; + return ARES_SUCCESS; +} + +unsigned short ares_dns_record_get_id(const ares_dns_record_t *dnsrec) +{ + if (dnsrec == NULL) { + return 0; + } + return dnsrec->id; +} + +unsigned short ares_dns_record_get_flags(const ares_dns_record_t *dnsrec) +{ + if (dnsrec == NULL) { + return 0; + } + return dnsrec->flags; +} + +ares_dns_opcode_t ares_dns_record_get_opcode(const ares_dns_record_t *dnsrec) +{ + if (dnsrec == NULL) { + return 0; + } + return dnsrec->opcode; +} + +ares_dns_rcode_t ares_dns_record_get_rcode(const ares_dns_record_t *dnsrec) +{ + if (dnsrec == NULL) { + return 0; + } + return dnsrec->rcode; +} + +static void ares__dns_rr_free(ares_dns_rr_t *rr) +{ + ares_free(rr->name); + + switch (rr->type) { + case ARES_REC_TYPE_A: + case ARES_REC_TYPE_AAAA: + case ARES_REC_TYPE_ANY: + /* Nothing to free */ + break; + + case ARES_REC_TYPE_NS: + ares_free(rr->r.ns.nsdname); + break; + + case ARES_REC_TYPE_CNAME: + ares_free(rr->r.cname.cname); + break; + + case ARES_REC_TYPE_SOA: + ares_free(rr->r.soa.mname); + ares_free(rr->r.soa.rname); + break; + + case ARES_REC_TYPE_PTR: + ares_free(rr->r.ptr.dname); + break; + + case ARES_REC_TYPE_HINFO: + ares_free(rr->r.hinfo.cpu); + ares_free(rr->r.hinfo.os); + break; + + case ARES_REC_TYPE_MX: + ares_free(rr->r.mx.exchange); + break; + + case ARES_REC_TYPE_TXT: + ares_free(rr->r.txt.data); + break; + + case ARES_REC_TYPE_SRV: + ares_free(rr->r.srv.target); + break; + + case ARES_REC_TYPE_NAPTR: + ares_free(rr->r.naptr.flags); + ares_free(rr->r.naptr.services); + ares_free(rr->r.naptr.regexp); + ares_free(rr->r.naptr.replacement); + break; + + case ARES_REC_TYPE_OPT: + /* Once we support the attribute/values, we need to free here */ + break; +#if 0 + case ARES_REC_TYPE_TLSA: + /* Once this record type is supported, need to free here + * ares_free(rr->r.tlsa.); + */ + break; + + case ARES_REC_TYPE_SVBC: + /* Once this record type is supported, need to free here + * ares_free(rr->r.svbc.); + */ + break; + + case ARES_REC_TYPE_HTTPS: + /* Once this record type is supported, need to free here + * ares_free(rr->r.https.); + */ + break; +#endif + case ARES_REC_TYPE_URI: + ares_free(rr->r.uri.target); + break; + + case ARES_REC_TYPE_CAA: + ares_free(rr->r.caa.tag); + ares_free(rr->r.caa.value); + break; + + case ARES_REC_TYPE_RAW_RR: + ares_free(rr->r.raw_rr.data); + break; + } +} + +void ares_dns_record_destroy(ares_dns_record_t *dnsrec) +{ + size_t i; + + if (dnsrec == NULL) { + return; + } + + /* Free questions */ + for (i = 0; i < dnsrec->qdcount; i++) { + ares_free(dnsrec->qd[i].name); + } + ares_free(dnsrec->qd); + + /* Free answers */ + for (i = 0; i < dnsrec->ancount; i++) { + ares__dns_rr_free(&dnsrec->an[i]); + } + ares_free(dnsrec->an); + + /* Free authority */ + for (i = 0; i < dnsrec->nscount; i++) { + ares__dns_rr_free(&dnsrec->ns[i]); + } + ares_free(dnsrec->ns); + + /* Free additional */ + for (i = 0; i < dnsrec->arcount; i++) { + ares__dns_rr_free(&dnsrec->ar[i]); + } + ares_free(dnsrec->ar); + + ares_free(dnsrec); +} + +size_t ares_dns_record_query_cnt(const ares_dns_record_t *dnsrec) +{ + if (dnsrec == NULL) { + return 0; + } + return dnsrec->qdcount; +} + +ares_status_t ares_dns_record_query_add(ares_dns_record_t *dnsrec, + const char *name, + ares_dns_rec_type_t qtype, + ares_dns_class_t qclass) +{ + ares_dns_qd_t *temp = NULL; + size_t idx; + + if (dnsrec == NULL || name == NULL || + !ares_dns_rec_type_isvalid(qtype, ARES_TRUE) || + !ares_dns_class_isvalid(qclass, ARES_TRUE)) { + return ARES_EFORMERR; + } + + if (dnsrec->qdcount >= dnsrec->qdalloc) { + size_t alloc_cnt = ares__round_up_pow2(dnsrec->qdcount + 1); + + temp = ares_realloc_zero(dnsrec->qd, sizeof(*temp) * (dnsrec->qdalloc), + sizeof(*temp) * alloc_cnt); + if (temp == NULL) { + return ARES_ENOMEM; + } + + dnsrec->qdalloc = alloc_cnt; + dnsrec->qd = temp; + } + + idx = dnsrec->qdcount; + + dnsrec->qd[idx].name = ares_strdup(name); + if (dnsrec->qd[idx].name == NULL) { + /* No need to clean up anything */ + return ARES_ENOMEM; + } + + dnsrec->qd[idx].qtype = qtype; + dnsrec->qd[idx].qclass = qclass; + dnsrec->qdcount++; + return ARES_SUCCESS; +} + +ares_status_t ares_dns_record_query_get(const ares_dns_record_t *dnsrec, + size_t idx, const char **name, + ares_dns_rec_type_t *qtype, + ares_dns_class_t *qclass) +{ + if (dnsrec == NULL || idx >= dnsrec->qdcount) { + return ARES_EFORMERR; + } + + if (name != NULL) { + *name = dnsrec->qd[idx].name; + } + + if (qtype != NULL) { + *qtype = dnsrec->qd[idx].qtype; + } + + if (qclass != NULL) { + *qclass = dnsrec->qd[idx].qclass; + } + + return ARES_SUCCESS; +} + +size_t ares_dns_record_rr_cnt(const ares_dns_record_t *dnsrec, + ares_dns_section_t sect) +{ + if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) { + return 0; + } + + switch (sect) { + case ARES_SECTION_ANSWER: + return dnsrec->ancount; + case ARES_SECTION_AUTHORITY: + return dnsrec->nscount; + case ARES_SECTION_ADDITIONAL: + return dnsrec->arcount; + } + + return 0; +} + +ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec, + ares_dns_section_t sect, size_t cnt) +{ + ares_dns_rr_t **rr_ptr = NULL; + size_t *rr_alloc = NULL; + ares_dns_rr_t *temp = NULL; + + if (dnsrec == NULL || cnt == 0 || !ares_dns_section_isvalid(sect)) { + return ARES_EFORMERR; + } + + switch (sect) { + case ARES_SECTION_ANSWER: + rr_ptr = &dnsrec->an; + rr_alloc = &dnsrec->analloc; + break; + case ARES_SECTION_AUTHORITY: + rr_ptr = &dnsrec->ns; + rr_alloc = &dnsrec->nsalloc; + break; + case ARES_SECTION_ADDITIONAL: + rr_ptr = &dnsrec->ar; + rr_alloc = &dnsrec->aralloc; + break; + } + + /* Round up cnt to a power of 2 */ + cnt = ares__round_up_pow2(cnt); + + /* Already have that */ + if (cnt <= *rr_alloc) { + return ARES_SUCCESS; + } + + temp = ares_realloc_zero(*rr_ptr, sizeof(*temp) * (*rr_alloc), + sizeof(*temp) * cnt); + if (temp == NULL) { + return ARES_ENOMEM; + } + + *rr_alloc = cnt; + *rr_ptr = temp; + return ARES_SUCCESS; +} + +ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, + ares_dns_record_t *dnsrec, + ares_dns_section_t sect, const char *name, + ares_dns_rec_type_t type, + ares_dns_class_t rclass, unsigned int ttl) +{ + ares_dns_rr_t **rr_ptr = NULL; + ares_dns_rr_t *rr = NULL; + size_t *rr_len = NULL; + ares_status_t status; + size_t idx; + + if (dnsrec == NULL || name == NULL || rr_out == NULL || + !ares_dns_section_isvalid(sect) || + !ares_dns_rec_type_isvalid(type, ARES_FALSE) || + !ares_dns_class_isvalid(rclass, ARES_FALSE)) { + return ARES_EFORMERR; + } + + *rr_out = NULL; + + switch (sect) { + case ARES_SECTION_ANSWER: + rr_ptr = &dnsrec->an; + rr_len = &dnsrec->ancount; + break; + case ARES_SECTION_AUTHORITY: + rr_ptr = &dnsrec->ns; + rr_len = &dnsrec->nscount; + break; + case ARES_SECTION_ADDITIONAL: + rr_ptr = &dnsrec->ar; + rr_len = &dnsrec->arcount; + break; + } + + status = ares_dns_record_rr_prealloc(dnsrec, sect, *rr_len + 1); + if (status != ARES_SUCCESS) { + return status; + } + + idx = *rr_len; + rr = &(*rr_ptr)[idx]; + + rr->name = ares_strdup(name); + if (rr->name == NULL) { + /* No need to clean up anything */ + return ARES_ENOMEM; + } + + rr->type = type; + rr->rclass = rclass; + rr->ttl = ttl; + (*rr_len)++; + + *rr_out = rr; + + return ARES_SUCCESS; +} + +ares_dns_rr_t *ares_dns_record_rr_get(ares_dns_record_t *dnsrec, + ares_dns_section_t sect, size_t idx) +{ + ares_dns_rr_t *rr_ptr = NULL; + size_t rr_len = 0; + + if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) { + return NULL; + } + + switch (sect) { + case ARES_SECTION_ANSWER: + rr_ptr = dnsrec->an; + rr_len = dnsrec->ancount; + break; + case ARES_SECTION_AUTHORITY: + rr_ptr = dnsrec->ns; + rr_len = dnsrec->nscount; + break; + case ARES_SECTION_ADDITIONAL: + rr_ptr = dnsrec->ar; + rr_len = dnsrec->arcount; + break; + } + + if (idx >= rr_len) { + return NULL; + } + + return &rr_ptr[idx]; +} + +const char *ares_dns_rr_get_name(const ares_dns_rr_t *rr) +{ + if (rr == NULL) { + return NULL; + } + return rr->name; +} + +ares_dns_rec_type_t ares_dns_rr_get_type(const ares_dns_rr_t *rr) +{ + if (rr == NULL) { + return 0; + } + return rr->type; +} + +ares_dns_class_t ares_dns_rr_get_class(const ares_dns_rr_t *rr) +{ + if (rr == NULL) { + return 0; + } + return rr->rclass; +} + +unsigned int ares_dns_rr_get_ttl(const ares_dns_rr_t *rr) +{ + if (rr == NULL) { + return 0; + } + return rr->ttl; +} + +static void *ares_dns_rr_data_ptr(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + size_t **lenptr) +{ + if (dns_rr == NULL || dns_rr->type != ares_dns_rr_key_to_rec_type(key)) { + return NULL; + } + + switch (key) { + case ARES_RR_A_ADDR: + return &dns_rr->r.a.addr; + + case ARES_RR_NS_NSDNAME: + return &dns_rr->r.ns.nsdname; + + case ARES_RR_CNAME_CNAME: + return &dns_rr->r.cname.cname; + + case ARES_RR_SOA_MNAME: + return &dns_rr->r.soa.mname; + + case ARES_RR_SOA_RNAME: + return &dns_rr->r.soa.rname; + + case ARES_RR_SOA_SERIAL: + return &dns_rr->r.soa.serial; + + case ARES_RR_SOA_REFRESH: + return &dns_rr->r.soa.refresh; + + case ARES_RR_SOA_RETRY: + return &dns_rr->r.soa.retry; + + case ARES_RR_SOA_EXPIRE: + return &dns_rr->r.soa.expire; + + case ARES_RR_SOA_MINIMUM: + return &dns_rr->r.soa.minimum; + + case ARES_RR_PTR_DNAME: + return &dns_rr->r.ptr.dname; + + case ARES_RR_AAAA_ADDR: + return &dns_rr->r.aaaa.addr; + + case ARES_RR_HINFO_CPU: + return &dns_rr->r.hinfo.cpu; + + case ARES_RR_HINFO_OS: + return &dns_rr->r.hinfo.os; + + case ARES_RR_MX_PREFERENCE: + return &dns_rr->r.mx.preference; + + case ARES_RR_MX_EXCHANGE: + return &dns_rr->r.mx.exchange; + + case ARES_RR_TXT_DATA: + if (lenptr == NULL) { + return NULL; + } + *lenptr = &dns_rr->r.txt.data_len; + return &dns_rr->r.txt.data; + + case ARES_RR_SRV_PRIORITY: + return &dns_rr->r.srv.priority; + + case ARES_RR_SRV_WEIGHT: + return &dns_rr->r.srv.weight; + + case ARES_RR_SRV_PORT: + return &dns_rr->r.srv.port; + + case ARES_RR_SRV_TARGET: + return &dns_rr->r.srv.target; + + case ARES_RR_NAPTR_ORDER: + return &dns_rr->r.naptr.order; + + case ARES_RR_NAPTR_PREFERENCE: + return &dns_rr->r.naptr.preference; + + case ARES_RR_NAPTR_FLAGS: + return &dns_rr->r.naptr.flags; + + case ARES_RR_NAPTR_SERVICES: + return &dns_rr->r.naptr.services; + + case ARES_RR_NAPTR_REGEXP: + return &dns_rr->r.naptr.regexp; + + case ARES_RR_NAPTR_REPLACEMENT: + return &dns_rr->r.naptr.replacement; + + case ARES_RR_OPT_UDP_SIZE: + return &dns_rr->r.opt.udp_size; + + case ARES_RR_OPT_EXT_RCODE: + return &dns_rr->r.opt.ext_rcode; + + case ARES_RR_OPT_VERSION: + return &dns_rr->r.opt.version; + + case ARES_RR_OPT_FLAGS: + return &dns_rr->r.opt.flags; + + case ARES_RR_URI_PRIORITY: + return &dns_rr->r.uri.priority; + + case ARES_RR_URI_WEIGHT: + return &dns_rr->r.uri.weight; + + case ARES_RR_URI_TARGET: + return &dns_rr->r.uri.target; + + case ARES_RR_CAA_CRITICAL: + return &dns_rr->r.caa.critical; + + case ARES_RR_CAA_TAG: + return &dns_rr->r.caa.tag; + + case ARES_RR_CAA_VALUE: + if (lenptr == NULL) { + return NULL; + } + *lenptr = &dns_rr->r.caa.value_len; + return &dns_rr->r.caa.value; + + case ARES_RR_RAW_RR_TYPE: + return &dns_rr->r.raw_rr.type; + + case ARES_RR_RAW_RR_DATA: + if (lenptr == NULL) { + return NULL; + } + *lenptr = &dns_rr->r.raw_rr.length; + return &dns_rr->r.raw_rr.data; + } + + return NULL; +} + +static const void *ares_dns_rr_data_ptr_const(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, + const size_t **lenptr) +{ + /* We're going to cast off the const */ + return ares_dns_rr_data_ptr((void *)((size_t)dns_rr), key, + (void *)((size_t)lenptr)); +} + +const struct in_addr *ares_dns_rr_get_addr(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key) +{ + const struct in_addr *addr; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_INADDR) { + return NULL; + } + + addr = ares_dns_rr_data_ptr_const(dns_rr, key, NULL); + if (addr == NULL) { + return NULL; + } + + return addr; +} + +const struct ares_in6_addr *ares_dns_rr_get_addr6(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key) +{ + const struct ares_in6_addr *addr; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_INADDR6) { + return NULL; + } + + addr = ares_dns_rr_data_ptr_const(dns_rr, key, NULL); + if (addr == NULL) { + return NULL; + } + + return addr; +} + +unsigned char ares_dns_rr_get_u8(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key) +{ + const unsigned char *u8; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U8) { + return 0; + } + + u8 = ares_dns_rr_data_ptr_const(dns_rr, key, NULL); + if (u8 == NULL) { + return 0; + } + + return *u8; +} + +unsigned short ares_dns_rr_get_u16(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key) +{ + const unsigned short *u16; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U16) { + return 0; + } + + u16 = ares_dns_rr_data_ptr_const(dns_rr, key, NULL); + if (u16 == NULL) { + return 0; + } + + return *u16; +} + +unsigned int ares_dns_rr_get_u32(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key) +{ + const unsigned int *u32; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U32) { + return 0; + } + + u32 = ares_dns_rr_data_ptr_const(dns_rr, key, NULL); + if (u32 == NULL) { + return 0; + } + + return *u32; +} + +const unsigned char *ares_dns_rr_get_bin(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, size_t *len) +{ + unsigned char * const *bin = NULL; + size_t const *bin_len = NULL; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_BIN || len == NULL) { + return NULL; + } + + bin = ares_dns_rr_data_ptr_const(dns_rr, key, &bin_len); + if (bin == NULL) { + return 0; + } + + /* Shouldn't be possible */ + if (bin_len == NULL) { + return NULL; + } + + *len = *bin_len; + + return *bin; +} + +const char *ares_dns_rr_get_str(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key) +{ + char * const *str; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_STR) { + return NULL; + } + + str = ares_dns_rr_data_ptr_const(dns_rr, key, NULL); + if (str == NULL) { + return NULL; + } + + return *str; +} + +ares_status_t ares_dns_rr_set_addr(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + const struct in_addr *addr) +{ + struct in_addr *a; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_INADDR || addr == NULL) { + return ARES_EFORMERR; + } + + a = ares_dns_rr_data_ptr(dns_rr, key, NULL); + if (a == NULL) { + return ARES_EFORMERR; + } + + memcpy(a, addr, sizeof(*a)); + return ARES_SUCCESS; +} + +ares_status_t ares_dns_rr_set_addr6(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, + const struct ares_in6_addr *addr) +{ + struct ares_in6_addr *a; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_INADDR6 || addr == NULL) { + return ARES_EFORMERR; + } + + a = ares_dns_rr_data_ptr(dns_rr, key, NULL); + if (a == NULL) { + return ARES_EFORMERR; + } + + memcpy(a, addr, sizeof(*a)); + return ARES_SUCCESS; +} + +ares_status_t ares_dns_rr_set_u8(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + unsigned char val) +{ + unsigned char *u8; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U8) { + return ARES_EFORMERR; + } + + u8 = ares_dns_rr_data_ptr(dns_rr, key, NULL); + if (u8 == NULL) { + return ARES_EFORMERR; + } + + *u8 = val; + return ARES_SUCCESS; +} + +ares_status_t ares_dns_rr_set_u16(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + unsigned short val) +{ + unsigned short *u16; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U16) { + return ARES_EFORMERR; + } + + u16 = ares_dns_rr_data_ptr(dns_rr, key, NULL); + if (u16 == NULL) { + return ARES_EFORMERR; + } + + *u16 = val; + return ARES_SUCCESS; +} + +ares_status_t ares_dns_rr_set_u32(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + unsigned int val) +{ + unsigned int *u32; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U32) { + return ARES_EFORMERR; + } + + u32 = ares_dns_rr_data_ptr(dns_rr, key, NULL); + if (u32 == NULL) { + return ARES_EFORMERR; + } + + *u32 = val; + return ARES_SUCCESS; +} + +ares_status_t ares_dns_rr_set_bin_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, unsigned char *val, + size_t len) +{ + unsigned char **bin; + size_t *bin_len = NULL; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_BIN) { + return ARES_EFORMERR; + } + + bin = ares_dns_rr_data_ptr(dns_rr, key, &bin_len); + if (bin == NULL || bin_len == NULL) { + return ARES_EFORMERR; + } + + if (*bin) { + ares_free(*bin); + } + *bin = val; + *bin_len = len; + + return ARES_SUCCESS; +} + +ares_status_t ares_dns_rr_set_bin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + const unsigned char *val, size_t len) +{ + ares_status_t status; + unsigned char *temp = ares_malloc(len); + + if (temp == NULL) { + return ARES_ENOMEM; + } + + memcpy(temp, val, len); + + status = ares_dns_rr_set_bin_own(dns_rr, key, temp, len); + if (status != ARES_SUCCESS) { + ares_free(temp); + } + + return status; +} + +ares_status_t ares_dns_rr_set_str_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, char *val) +{ + char **str; + + if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_STR) { + return ARES_EFORMERR; + } + + str = ares_dns_rr_data_ptr(dns_rr, key, NULL); + if (str == NULL) { + return ARES_EFORMERR; + } + + if (*str) { + ares_free(*str); + } + *str = val; + + return ARES_SUCCESS; +} + +ares_status_t ares_dns_rr_set_str(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + const char *val) +{ + ares_status_t status; + char *temp = NULL; + + if (val != NULL) { + temp = ares_strdup(val); + if (temp == NULL) { + return ARES_ENOMEM; + } + } + + status = ares_dns_rr_set_str_own(dns_rr, key, temp); + if (status != ARES_SUCCESS) { + ares_free(temp); + } + + return status; +} diff --git a/deps/cares/src/lib/ares_dns_record.h b/deps/cares/src/lib/ares_dns_record.h new file mode 100644 index 00000000000000..608e490040a819 --- /dev/null +++ b/deps/cares/src/lib/ares_dns_record.h @@ -0,0 +1,798 @@ +/* MIT License + * + * Copyright (c) 2023 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#ifndef __ARES_DNS_RECORD_H +#define __ARES_DNS_RECORD_H + +/* ----- LIKELY MAKE THESE PUBLIC ----- */ + +/*! \addtogroup ares_dns_record DNS Record Handling + * + * This is a set of functions to create and manipulate DNS records. + * + * @{ + */ + +/*! DNS Record types handled by c-ares. Some record types may only be valid + * on requests (e.g. ARES_REC_TYPE_ANY), and some may only be valid on + * responses */ +typedef enum { + ARES_REC_TYPE_A = 1, /*!< Host address. */ + ARES_REC_TYPE_NS = 2, /*!< Authoritative server. */ + ARES_REC_TYPE_CNAME = 5, /*!< Canonical name. */ + ARES_REC_TYPE_SOA = 6, /*!< Start of authority zone. */ + ARES_REC_TYPE_PTR = 12, /*!< Domain name pointer. */ + ARES_REC_TYPE_HINFO = 13, /*!< Host information. */ + ARES_REC_TYPE_MX = 15, /*!< Mail routing information. */ + ARES_REC_TYPE_TXT = 16, /*!< Text strings. */ + ARES_REC_TYPE_AAAA = 28, /*!< RFC 3596. Ip6 Address. */ + ARES_REC_TYPE_SRV = 33, /*!< RFC 2782. Server Selection. */ + ARES_REC_TYPE_NAPTR = 35, /*!< RFC 3403. Naming Authority Pointer */ + ARES_REC_TYPE_OPT = 41, /*!< RFC 6891. EDNS0 option (meta-RR) */ +#if 0 + ARES_REC_TYPE_TLSA = 52, /*!< DNS-Based Authentication of Named + * Entities (DANE) Transport Layer Security + * (TLS) Protocol: TLSA */ + ARES_REC_TYPE_SVBC = 64, /*!< General Purpose Service Binding */ + ARES_REC_TYPE_HTTPS = 65, /*!< Service Binding type for use with HTTP */ +#endif + ARES_REC_TYPE_ANY = 255, /*!< Wildcard match. Not response RR. */ + ARES_REC_TYPE_URI = 256, /*!< RFC 7553. Uniform Resource Identifier */ + ARES_REC_TYPE_CAA = 257, /*!< RFC 6844. Certification Authority + * Authorization. */ + ARES_REC_TYPE_RAW_RR = 65536 /*!< Used as an indicator that the RR record + * is not parsed, but provided in wire + * format */ +} ares_dns_rec_type_t; + +/*! DNS Classes for requests and responses. */ +typedef enum { + ARES_CLASS_IN = 1, /*!< Internet */ + ARES_CLASS_CHAOS = 3, /*!< CHAOS */ + ARES_CLASS_HESOID = 4, /*!< Hesoid [Dyer 87] */ + ARES_CLASS_NONE = 254, /*!< RFC 2136 */ + ARES_CLASS_ANY = 255 /*!< Any class (requests only) */ +} ares_dns_class_t; + +/*! DNS RR Section type */ +typedef enum { + ARES_SECTION_ANSWER = 1, /*!< Answer section */ + ARES_SECTION_AUTHORITY = 2, /*!< Authority section */ + ARES_SECTION_ADDITIONAL = 3 /*!< Additional information section */ +} ares_dns_section_t; + +/*! DNS Header opcodes */ +typedef enum { + ARES_OPCODE_QUERY = 0, /*!< Standard query */ + ARES_OPCODE_IQUERY = 1, /*!< Inverse query. Obsolete. */ + ARES_OPCODE_STATUS = 2, /*!< Name server status query */ + ARES_OPCODE_NOTIFY = 4, /*!< Zone change notification (RFC 1996) */ + ARES_OPCODE_UPDATE = 5, /*!< Zone update message (RFC2136) */ +} ares_dns_opcode_t; + +/*! DNS Header flags */ +typedef enum { + ARES_FLAG_QR = 1 << 0, /*!< QR. If set, is a response */ + ARES_FLAG_AA = 1 << 1, /*!< Authoritative Answer. If set, is authoritative */ + ARES_FLAG_TC = 1 << 2, /*!< Truncation. If set, is truncated response */ + ARES_FLAG_RD = 1 << 3, /*!< Recursion Desired. If set, recursion is desired */ + ARES_FLAG_RA = 1 << 4, /*!< Recursion Available. If set, server supports + * recursion */ + ARES_FLAG_AD = 1 << 5, /*!< RFC 2065. Authentic Data bit indicates in a + * response that the data included has been verified by + * the server providing it */ + ARES_FLAG_CD = 1 << 6, /*!< RFC 2065. Checking Disabled bit indicates in a + * query that non-verified data is acceptable to the + * resolver sending the query. */ +} ares_dns_flags_t; + +/*! DNS Response Codes from server */ +typedef enum { + ARES_RCODE_NOERROR = 0, /*!< Success */ + ARES_RCODE_FORMAT_ERROR = 1, /*!< Format error. The name server was unable + * to interpret the query. */ + ARES_RCODE_SERVER_FAILURE = 2, /*!< Server Failure. The name server was + * unable to process this query due to a + * problem with the nameserver */ + ARES_RCODE_NAME_ERROR = 3, /*!< Name Error. Meaningful only for + * responses from an authoritative name + * server, this code signifies that the + * domain name referenced in the query does + * not exist. */ + ARES_RCODE_NOT_IMPLEMENTED = 4, /*!< Not implemented. The name server does + * not support the requested kind of + * query */ + ARES_RCODE_REFUSED = 5, /*!< Refused. The name server refuses to + * perform the speciied operation for + * policy reasons. */ + ARES_RCODE_YXDOMAIN = 6, /*!< RFC 2136. Some name that ought not to + * exist, does exist. */ + ARES_RCODE_YXRRSET = 7, /*!< RFC 2136. Some RRset that ought to not + * exist, does exist. */ + ARES_RCODE_NXRRSET = 8, /*!< RFC 2136. Some RRset that ought to exist, + * does not exist. */ + ARES_RCODE_NOTAUTH = 9, /*!< RFC 2136. The server is not authoritative + * for the zone named in the Zone section. + */ + ARES_RCODE_NOTZONE = 10, /*!< RFC 2136. A name used in the Prerequisite + * or Update Section is not within the zone + * denoted by the Zone Section. */ +} ares_dns_rcode_t; + +/*! Data types used */ +typedef enum { + ARES_DATATYPE_INADDR = 1, /*!< struct in_addr * type */ + ARES_DATATYPE_INADDR6 = 2, /*!< struct ares_in6_addr * type */ + ARES_DATATYPE_U8 = 3, /*!< 8bit unsigned integer */ + ARES_DATATYPE_U16 = 4, /*!< 16bit unsigned integer */ + ARES_DATATYPE_U32 = 5, /*!< 32bit unsigned integer */ + ARES_DATATYPE_STR = 6, /*!< Null-terminated string */ + ARES_DATATYPE_BIN = 7 /*!< Binary data */ +} ares_dns_datatype_t; + +/*! Keys used for all RR Types. We take the record type and multiply by 100 + * to ensure we have a proper offset between keys so we can keep these sorted + */ +typedef enum { + /*! A Record. Address. Datatype: INADDR */ + ARES_RR_A_ADDR = (ARES_REC_TYPE_A * 100) + 1, + /*! NS Record. Name. Datatype: String */ + ARES_RR_NS_NSDNAME = (ARES_REC_TYPE_NS * 100) + 1, + /*! CNAME Record. CName. Datatype: String */ + ARES_RR_CNAME_CNAME = (ARES_REC_TYPE_CNAME * 100) + 1, + /*! SOA Record. MNAME, Primary Source of Data. Datatype: String */ + ARES_RR_SOA_MNAME = (ARES_REC_TYPE_SOA * 100) + 1, + /*! SOA Record. RNAME, Mailbox of person responsible. Datatype: String */ + ARES_RR_SOA_RNAME = (ARES_REC_TYPE_SOA * 100) + 2, + /*! SOA Record. Serial, version. Datatype: u32 */ + ARES_RR_SOA_SERIAL = (ARES_REC_TYPE_SOA * 100) + 3, + /*! SOA Record. Refresh, zone refersh interval. Datatype: u32 */ + ARES_RR_SOA_REFRESH = (ARES_REC_TYPE_SOA * 100) + 4, + /*! SOA Record. Retry, failed refresh retry interval. Datatype: u32 */ + ARES_RR_SOA_RETRY = (ARES_REC_TYPE_SOA * 100) + 5, + /*! SOA Record. Expire, upper limit on authority. Datatype: u32 */ + ARES_RR_SOA_EXPIRE = (ARES_REC_TYPE_SOA * 100) + 6, + /*! SOA Record. Minimum, RR TTL. Datatype: u32 */ + ARES_RR_SOA_MINIMUM = (ARES_REC_TYPE_SOA * 100) + 7, + /*! PTR Record. DNAME, pointer domain. Datatype: string */ + ARES_RR_PTR_DNAME = (ARES_REC_TYPE_PTR * 100) + 1, + /*! HINFO Record. CPU. Datatype: string */ + ARES_RR_HINFO_CPU = (ARES_REC_TYPE_HINFO * 100) + 1, + /*! HINFO Record. OS. Datatype: string */ + ARES_RR_HINFO_OS = (ARES_REC_TYPE_HINFO * 100) + 2, + /*! MX Record. Preference. Datatype: u16 */ + ARES_RR_MX_PREFERENCE = (ARES_REC_TYPE_MX * 100) + 1, + /*! MX Record. Exchange, domain. Datatype: string */ + ARES_RR_MX_EXCHANGE = (ARES_REC_TYPE_MX * 100) + 2, + /*! TXT Record. Data. Datatype: binary */ + ARES_RR_TXT_DATA = (ARES_REC_TYPE_TXT * 100) + 1, + /*! AAAA Record. Address. Datatype: INADDR6 */ + ARES_RR_AAAA_ADDR = (ARES_REC_TYPE_AAAA * 100) + 1, + /*! SRV Record. Priority. Datatype: u16 */ + ARES_RR_SRV_PRIORITY = (ARES_REC_TYPE_SRV * 100) + 2, + /*! SRV Record. Weight. Datatype: u16 */ + ARES_RR_SRV_WEIGHT = (ARES_REC_TYPE_SRV * 100) + 3, + /*! SRV Record. Port. Datatype: u16 */ + ARES_RR_SRV_PORT = (ARES_REC_TYPE_SRV * 100) + 4, + /*! SRV Record. Target domain. Datatype: string */ + ARES_RR_SRV_TARGET = (ARES_REC_TYPE_SRV * 100) + 5, + /*! NAPTR Record. Order. Datatype: u16 */ + ARES_RR_NAPTR_ORDER = (ARES_REC_TYPE_NAPTR * 100) + 1, + /*! NAPTR Record. Preference. Datatype: u16 */ + ARES_RR_NAPTR_PREFERENCE = (ARES_REC_TYPE_NAPTR * 100) + 2, + /*! NAPTR Record. Flags. Datatype: string */ + ARES_RR_NAPTR_FLAGS = (ARES_REC_TYPE_NAPTR * 100) + 3, + /*! NAPTR Record. Services. Datatype: string */ + ARES_RR_NAPTR_SERVICES = (ARES_REC_TYPE_NAPTR * 100) + 4, + /*! NAPTR Record. Regexp. Datatype: string */ + ARES_RR_NAPTR_REGEXP = (ARES_REC_TYPE_NAPTR * 100) + 5, + /*! NAPTR Record. Replacement. Datatype: string */ + ARES_RR_NAPTR_REPLACEMENT = (ARES_REC_TYPE_NAPTR * 100) + 6, + /*! OPT Record. UDP Size. Datatype: u16 */ + ARES_RR_OPT_UDP_SIZE = (ARES_REC_TYPE_OPT * 100) + 1, + /*! OPT Record. Extended RCode. Datatype: u8 */ + ARES_RR_OPT_EXT_RCODE = (ARES_REC_TYPE_OPT * 100) + 2, + /*! OPT Record. Version. Datatype: u8 */ + ARES_RR_OPT_VERSION = (ARES_REC_TYPE_OPT * 100) + 3, + /*! OPT Record. Flags. Datatype: u16 */ + ARES_RR_OPT_FLAGS = (ARES_REC_TYPE_OPT * 100) + 4, + /*! URI Record. Priority. Datatype: u16 */ + ARES_RR_URI_PRIORITY = (ARES_REC_TYPE_URI * 100) + 1, + /*! URI Record. Weight. Datatype: u16 */ + ARES_RR_URI_WEIGHT = (ARES_REC_TYPE_URI * 100) + 2, + /*! URI Record. Target domain. Datatype: string */ + ARES_RR_URI_TARGET = (ARES_REC_TYPE_URI * 100) + 3, + /*! CAA Record. Critical flag. Datatype: u8 */ + ARES_RR_CAA_CRITICAL = (ARES_REC_TYPE_CAA * 100) + 1, + /*! CAA Record. Tag/Property. Datatype: string */ + ARES_RR_CAA_TAG = (ARES_REC_TYPE_CAA * 100) + 2, + /*! CAA Record. Value. Datatype: binary */ + ARES_RR_CAA_VALUE = (ARES_REC_TYPE_CAA * 100) + 3, + /*! RAW Record. RR Type. Datatype: u16 */ + ARES_RR_RAW_RR_TYPE = (ARES_REC_TYPE_RAW_RR * 100) + 1, + /*! RAW Record. RR Data. Datatype: binary */ + ARES_RR_RAW_RR_DATA = (ARES_REC_TYPE_RAW_RR * 100) + 2, +} ares_dns_rr_key_t; + +/*! String representation of DNS Record Type + * + * \param[in] type DNS Record Type + * \return string + */ +const char *ares_dns_rec_type_tostr(ares_dns_rec_type_t type); + +/*! String representation of DNS Class + * + * \param[in] qclass DNS Class + * \return string + */ +const char *ares_dns_class_tostr(ares_dns_class_t qclass); + +/*! String representation of DNS OpCode + * + * \param[in] opcode DNS OpCode + * \return string + */ +const char *ares_dns_opcode_tostr(ares_dns_opcode_t opcode); + +/*! String representation of DNS Resource Record Parameter + * + * \param[in] key DNS Resource Record parameter + * \return string + */ +const char *ares_dns_rr_key_tostr(ares_dns_rr_key_t key); + + +/*! Opaque data type representing a DNS RR (Resource Record) */ +struct ares_dns_rr; + +/*! Typedef for opaque data type representing a DNS RR (Resource Record) */ +typedef struct ares_dns_rr ares_dns_rr_t; + +/*! Opaque data type representing a DNS Query Data QD Packet */ +struct ares_dns_qd; + +/*! Typedef for opaque data type representing a DNS Query Data QD Packet */ +typedef struct ares_dns_qd ares_dns_qd_t; + +/*! Opaque data type representing a DNS Packet */ +struct ares_dns_record; + +/*! Typedef for opaque data type representing a DNS Packet */ +typedef struct ares_dns_record ares_dns_record_t; + + +/*! Create a new DNS record object + * + * \param[out] dnsrec Pointer passed by reference for a newly allocated + * record object. Must be ares_dns_record_destroy()'d by + * caller. + * \param[in] id DNS Query ID + * \param[in] flags DNS Flags from \ares_dns_flags_t + * \param[in] opcode DNS OpCode (typically ARES_OPCODE_QUERY) + * \param[in] rcode DNS RCode + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_record_create(ares_dns_record_t **dnsrec, + unsigned short id, unsigned short flags, + ares_dns_opcode_t opcode, + ares_dns_rcode_t rcode); + +/*! Destroy a DNS record object + * + * \param[in] dnsrec Initialized record object + */ +void ares_dns_record_destroy(ares_dns_record_t *dnsrec); + +/*! Get the DNS Query ID + * + * \param[in] dnsrec Initialized record object + * \return DNS query id + */ +unsigned short ares_dns_record_get_id(const ares_dns_record_t *dnsrec); + +/*! Get the DNS Record Flags + * + * \param[in] dnsrec Initialized record object + * \return One or more \ares_dns_flags_t + */ +unsigned short ares_dns_record_get_flags(const ares_dns_record_t *dnsrec); + +/*! Get the DNS Record OpCode + * + * \param[in] dnsrec Initialized record object + * \return opcode + */ +ares_dns_opcode_t ares_dns_record_get_opcode(const ares_dns_record_t *dnsrec); + +/*! Get the DNS Record RCode + * + * \param[in] dnsrec Initialized record object + * \return rcode + */ +ares_dns_rcode_t ares_dns_record_get_rcode(const ares_dns_record_t *dnsrec); + +/*! Add a query to the DNS Record. Typically a record will have only 1 + * query. Most DNS servers will reject queries with more than 1 question. + * + * \param[in] dnsrec Initialized record object + * \param[in] name Name/Hostname of request + * \param[in] qtype Type of query + * \param[in] qclass Class of query (typically ARES_CLASS_IN) + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_record_query_add(ares_dns_record_t *dnsrec, + const char *name, + ares_dns_rec_type_t qtype, + ares_dns_class_t qclass); + +/*! Get the count of queries in the DNS Record + * + * \param[in] dnsrec Initialized record object + * \return count of queries + */ +size_t ares_dns_record_query_cnt(const ares_dns_record_t *dnsrec); + +/*! Get the data about the query at the provided index. + * + * \param[in] dnsrec Initialized record object + * \param[in] idx Index of query + * \param[out] name Optional. Returns name, may pass NULL if not desired. + * \param[out] qtype Optional. Returns record type, may pass NULL. + * \param[out] qclass Optional. Returns class, may pass NULL. + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_record_query_get(const ares_dns_record_t *dnsrec, + size_t idx, const char **name, + ares_dns_rec_type_t *qtype, + ares_dns_class_t *qclass); + +/*! Get the count of Resource Records in the provided section + * + * \param[in] dnsrec Initialized record object + * \param[in] sect Section. ARES_SECTION_ANSWER is most used. + * \return count of resource records. + */ +size_t ares_dns_record_rr_cnt(const ares_dns_record_t *dnsrec, + ares_dns_section_t sect); + + +/*! Add a Resource Record to the DNS Record. + * + * \param[out] rr_out Pointer to created resource record. This pointer + * is owned by the DNS record itself, this is just made + * available to facilitate adding RR-specific fields. + * \param[in] dnsrec Initialized record object + * \param[in] sect Section to add resource record to + * \param[in] name Resource Record name/hostname + * \param[in] type Record Type + * \param[in] rclass Class + * \param[in] ttl TTL + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, + ares_dns_record_t *dnsrec, + ares_dns_section_t sect, const char *name, + ares_dns_rec_type_t type, + ares_dns_class_t rclass, unsigned int ttl); + +/*! Fetch a resource record based on the section and index. + * + * \param[in] dnsrec Initialized record object + * \param[in] sect Section for resource record + * \param[in] idx Index of resource record in section + * \param NULL on misuse, otherwise a pointer to the resource record + */ +ares_dns_rr_t *ares_dns_record_rr_get(ares_dns_record_t *dnsrec, + ares_dns_section_t sect, size_t idx); + + +/*! Retrieve a list of Resource Record keys that can be set or retrieved for + * the Resource record type. + * + * \param[in] type Record Type + * \param[out] cnt Number of keys returned + * \return array of keys associated with Resource Record + */ +const ares_dns_rr_key_t *ares_dns_rr_get_keys(ares_dns_rec_type_t type, + size_t *cnt); + +/*! Retrieve the datatype associated with a Resource Record key. + * + * \param[in] key Resource Record Key + * \return datatype + */ +ares_dns_datatype_t ares_dns_rr_key_datatype(ares_dns_rr_key_t key); + +/*! Retrieve the DNS Resource Record type associated with a Resource Record key. + * + * \param[in] key Resource Record Key + * \return DNS Resource Record Type + */ +ares_dns_rec_type_t ares_dns_rr_key_to_rec_type(ares_dns_rr_key_t key); + +/*! Retrieve the resource record Name/Hostname + * + * \param[in] rr Pointer to resource record + * \return Name + */ +const char *ares_dns_rr_get_name(const ares_dns_rr_t *rr); + +/*! Retrieve the resource record type + * + * \param[in] rr Pointer to resource record + * \return type + */ +ares_dns_rec_type_t ares_dns_rr_get_type(const ares_dns_rr_t *rr); + +/*! Retrieve the resource record class + * + * \param[in] rr Pointer to resource record + * \return class + */ +ares_dns_class_t ares_dns_rr_get_class(const ares_dns_rr_t *rr); + +/*! Retrieve the resource record TTL + * + * \param[in] rr Pointer to resource record + * \return TTL + */ +unsigned int ares_dns_rr_get_ttl(const ares_dns_rr_t *rr); + +/*! Set ipv4 address data type for specified resource record and key. Can + * only be used on keys with datatype ARES_DATATYPE_INADDR + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] addr Pointer to ipv4 address to use. + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_rr_set_addr(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + const struct in_addr *addr); + +/*! Set ipv6 address data type for specified resource record and key. Can + * only be used on keys with datatype ARES_DATATYPE_INADDR6 + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] addr Pointer to ipv6 address to use. + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_rr_set_addr6(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, + const struct ares_in6_addr *addr); + +/*! Set string data for specified resource record and key. Can + * only be used on keys with datatype ARES_DATATYPE_STR + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] val Pointer to string to set. + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_rr_set_str(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + const char *val); + +/*! Set 8bit unsigned integer for specified resource record and key. Can + * only be used on keys with datatype ARES_DATATYPE_U8 + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] val 8bit unsigned integer + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_rr_set_u8(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + unsigned char val); + +/*! Set 16bit unsigned integer for specified resource record and key. Can + * only be used on keys with datatype ARES_DATATYPE_U16 + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] val 16bit unsigned integer + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_rr_set_u16(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + unsigned short val); + +/*! Set 32bit unsigned integer for specified resource record and key. Can + * only be used on keys with datatype ARES_DATATYPE_U32 + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] val 32bit unsigned integer + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_rr_set_u32(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + unsigned int val); + +/*! Set binary data for specified resource record and key. Can + * only be used on keys with datatype ARES_DATATYPE_BIN + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[in] val Pointer to binary data. + * \param[in] len Length of binary data + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_rr_set_bin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key, + const unsigned char *val, size_t len); + + +/*! Retrieve a pointer to the ipv4 address. Can only be used on keys with + * datatype ARES_DATATYPE_INADDR. + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \return pointer to ipv4 address or NULL on error + */ +const struct in_addr *ares_dns_rr_get_addr(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key); + +/*! Retrieve a pointer to the ipv6 address. Can only be used on keys with + * datatype ARES_DATATYPE_INADDR6. + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \return pointer to ipv6 address or NULL on error + */ +const struct ares_in6_addr *ares_dns_rr_get_addr6(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key); + +/*! Retrieve a pointer to the string. Can only be used on keys with + * datatype ARES_DATATYPE_STR. + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \return pointer string or NULL on error + */ +const char *ares_dns_rr_get_str(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key); + +/*! Retrieve an 8bit unsigned integer. Can only be used on keys with + * datatype ARES_DATATYPE_U8. + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \return 8bit unsigned integer + */ +unsigned char ares_dns_rr_get_u8(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key); + +/*! Retrieve an 16bit unsigned integer. Can only be used on keys with + * datatype ARES_DATATYPE_U16. + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \return 16bit unsigned integer + */ +unsigned short ares_dns_rr_get_u16(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key); + +/*! Retrieve an 32bit unsigned integer. Can only be used on keys with + * datatype ARES_DATATYPE_U32. + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \return 32bit unsigned integer + */ +unsigned int ares_dns_rr_get_u32(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key); + +/*! Retrieve a pointer to the binary data. Can only be used on keys with + * datatype ARES_DATATYPE_BIN. + * + * \param[in] dns_rr Pointer to resource record + * \param[in] key DNS Resource Record Key + * \param[out] len Length of binary data returned + * \return pointer binary data or NULL on error + */ +const unsigned char *ares_dns_rr_get_bin(const ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, size_t *len); + + +/*! Parse a complete DNS message. + * + * \param[in] buf pointer to bytes to be parsed + * \param[in] buf_len Length of buf provided + * \param[in] flags Flags dictating how the message should be parsed. TBD. + * \param[out] dnsrec Pointer passed by reference for a new DNS record object + * that must be ares_dns_record_destroy()'d by caller. + * \return ARES_SUCCESS on success + */ +ares_status_t ares_dns_parse(const unsigned char *buf, size_t buf_len, + unsigned int flags, ares_dns_record_t **dnsrec); + + +/*! @} */ + +/* ---- PRIVATE BELOW ----- */ +ares_bool_t ares_dns_opcode_isvalid(ares_dns_opcode_t opcode); +ares_bool_t ares_dns_rcode_isvalid(ares_dns_rcode_t rcode); +ares_bool_t ares_dns_flags_arevalid(unsigned short flags); +ares_bool_t ares_dns_rec_type_isvalid(ares_dns_rec_type_t type, + ares_bool_t is_query); +ares_bool_t ares_dns_class_isvalid(ares_dns_class_t qclass, + ares_bool_t is_query); +ares_bool_t ares_dns_section_isvalid(ares_dns_section_t sect); +ares_status_t ares_dns_rr_set_str_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, char *val); +ares_status_t ares_dns_rr_set_bin_own(ares_dns_rr_t *dns_rr, + ares_dns_rr_key_t key, unsigned char *val, + size_t len); +ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec, + ares_dns_section_t sect, size_t cnt); + +struct ares_dns_qd { + char *name; + ares_dns_rec_type_t qtype; + ares_dns_class_t qclass; +}; + +typedef struct { + struct in_addr addr; +} ares__dns_a_t; + +typedef struct { + char *nsdname; +} ares__dns_ns_t; + +typedef struct { + char *cname; +} ares__dns_cname_t; + +typedef struct { + char *mname; + char *rname; + unsigned int serial; + unsigned int refresh; + unsigned int retry; + unsigned int expire; + unsigned int minimum; +} ares__dns_soa_t; + +typedef struct { + char *dname; +} ares__dns_ptr_t; + +typedef struct { + char *cpu; + char *os; +} ares__dns_hinfo_t; + +typedef struct { + unsigned short preference; + char *exchange; +} ares__dns_mx_t; + +typedef struct { + char *data; + size_t data_len; +} ares__dns_txt_t; + +typedef struct { + struct ares_in6_addr addr; +} ares__dns_aaaa_t; + +typedef struct { + unsigned short priority; + unsigned short weight; + unsigned short port; + char *target; +} ares__dns_srv_t; + +typedef struct { + unsigned short order; + unsigned short preference; + char *flags; + char *services; + char *regexp; + char *replacement; +} ares__dns_naptr_t; + +typedef struct { + unsigned short udp_size; /*!< taken from class */ + unsigned char ext_rcode; /*!< Taken from first 8 bits of ttl */ + unsigned char version; /*!< taken from bits 8-16 of ttl */ + unsigned short flags; /*!< Flags, remaining 16 bits, though only 1 + * currently defined */ + /* Remaining data can be multiple: + * 16bit attribute/code, 16bit length, data + * not currently supported */ +} ares__dns_opt_t; + +typedef struct { + unsigned short priority; + unsigned short weight; + char *target; +} ares__dns_uri_t; + +typedef struct { + unsigned char critical; + char *tag; + unsigned char *value; + size_t value_len; +} ares__dns_caa_t; + +/*! Raw, unparsed RR data */ +typedef struct { + unsigned short type; /*!< Not ares_rec_type_t because it likely isn't one + * of those values since it wasn't parsed */ + unsigned char *data; /*!< Raw RR data */ + size_t length; /*!< Length of raw RR data */ +} ares__dns_raw_rr_t; + +/*! DNS RR data structure */ +struct ares_dns_rr { + char *name; + ares_dns_rec_type_t type; + ares_dns_class_t rclass; + unsigned int ttl; + + union { + ares__dns_a_t a; + ares__dns_ns_t ns; + ares__dns_cname_t cname; + ares__dns_soa_t soa; + ares__dns_ptr_t ptr; + ares__dns_hinfo_t hinfo; + ares__dns_mx_t mx; + ares__dns_txt_t txt; + ares__dns_aaaa_t aaaa; + ares__dns_srv_t srv; + ares__dns_naptr_t naptr; + ares__dns_opt_t opt; + ares__dns_uri_t uri; + ares__dns_caa_t caa; + ares__dns_raw_rr_t raw_rr; + } r; +}; + +/*! DNS data structure */ +struct ares_dns_record { + unsigned short id; /*!< DNS query id */ + unsigned short flags; /*!< One or more ares_dns_flags_t */ + ares_dns_opcode_t opcode; /*!< DNS Opcode */ + ares_dns_rcode_t rcode; /*!< DNS RCODE */ + + ares_dns_qd_t *qd; + size_t qdcount; + size_t qdalloc; + + ares_dns_rr_t *an; + size_t ancount; + size_t analloc; + + ares_dns_rr_t *ns; + size_t nscount; + size_t nsalloc; + + ares_dns_rr_t *ar; + size_t arcount; + size_t aralloc; +}; + + +#endif /* __ARES_DNS_RECORD_H */ diff --git a/deps/cares/src/lib/ares_expand_name.c b/deps/cares/src/lib/ares_expand_name.c index 21c4e93d85bd9c..d50aa6ed28743b 100644 --- a/deps/cares/src/lib/ares_expand_name.c +++ b/deps/cares/src/lib/ares_expand_name.c @@ -34,289 +34,85 @@ #include "ares_nameser.h" #include "ares.h" -#include "ares_nowarn.h" #include "ares_private.h" /* for the memdebug */ -/* Maximum number of indirections allowed for a name */ -#define MAX_INDIRS 50 - -static int name_length(const unsigned char *encoded, const unsigned char *abuf, - int alen, int is_hostname); - -/* Reserved characters for names that need to be escaped */ -static int is_reservedch(int ch) -{ - switch (ch) { - case '"': - case '.': - case ';': - case '\\': - case '(': - case ')': - case '@': - case '$': - return 1; - default: - break; - } - - return 0; -} - -static int ares__isprint(int ch) +ares_status_t ares__expand_name_validated(const unsigned char *encoded, + const unsigned char *abuf, + size_t alen, char **s, size_t *enclen, + ares_bool_t is_hostname) { - if (ch >= 0x20 && ch <= 0x7E) - return 1; - return 0; -} + ares_status_t status; + ares__buf_t *buf = NULL; + size_t start_len; -/* Character set allowed by hostnames. This is to include the normal - * domain name character set plus: - * - underscores which are used in SRV records. - * - Forward slashes such as are used for classless in-addr.arpa - * delegation (CNAMEs) - * - Asterisks may be used for wildcard domains in CNAMEs as seen in the - * real world. - * While RFC 2181 section 11 does state not to do validation, - * that applies to servers, not clients. Vulnerabilities have been - * reported when this validation is not performed. Security is more - * important than edge-case compatibility (which is probably invalid - * anyhow). */ -static int is_hostnamech(int ch) -{ - /* [A-Za-z0-9-*._/] - * Don't use isalnum() as it is locale-specific - */ - if (ch >= 'A' && ch <= 'Z') - return 1; - if (ch >= 'a' && ch <= 'z') - return 1; - if (ch >= '0' && ch <= '9') - return 1; - if (ch == '-' || ch == '.' || ch == '_' || ch == '/' || ch == '*') - return 1; + if (encoded == NULL || abuf == NULL || alen == 0 || enclen == NULL) { + return ARES_EBADNAME; /* EFORMERR would be better */ + } - return 0; -} + if (encoded < abuf || encoded >= abuf + alen) { + return ARES_EBADNAME; /* EFORMERR would be better */ + } -/* 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. - * - * If the result is expected to be a hostname, then no escaped data is allowed - * and will return error. - */ + *enclen = 0; -int ares__expand_name_validated(const unsigned char *encoded, - const unsigned char *abuf, - int alen, char **s, long *enclen, - int is_hostname) -{ - int len, indir = 0; - char *q; - const unsigned char *p; - union { - ares_ssize_t sig; - size_t uns; - } nlen; + /* NOTE: we allow 's' to be NULL to skip it */ + if (s) { + *s = NULL; + } - nlen.sig = name_length(encoded, abuf, alen, is_hostname); - if (nlen.sig < 0) - return ARES_EBADNAME; + buf = ares__buf_create_const(abuf, alen); - *s = ares_malloc(nlen.uns + 1); - if (!*s) + if (buf == NULL) { 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 - { - int name_len = *p; - len = name_len; - p++; - - while (len--) - { - /* Output as \DDD for consistency with RFC1035 5.1, except - * for the special case of a root name response */ - if (!ares__isprint(*p) && !(name_len == 1 && *p == 0)) - { - *q++ = '\\'; - *q++ = (char)('0' + *p / 100); - *q++ = (char)('0' + (*p % 100) / 10); - *q++ = (char)('0' + (*p % 10)); - } - else if (is_reservedch(*p)) - { - *q++ = '\\'; - *q++ = *p; - } - else - { - *q++ = *p; - } - p++; - } - *q++ = '.'; - } - } + status = ares__buf_set_position(buf, (size_t)(encoded - abuf)); + if (status != ARES_SUCCESS) { + goto done; + } - if (!indir) - *enclen = aresx_uztosl(p + 1U - encoded); + start_len = ares__buf_len(buf); + status = ares__buf_parse_dns_name(buf, s, is_hostname); + if (status != ARES_SUCCESS) { + goto done; + } - /* Nuke the trailing period if we wrote one. */ - if (q > *s) - *(q - 1) = 0; - else - *q = 0; /* zero terminate; LCOV_EXCL_LINE: empty names exit above */ + *enclen = start_len - ares__buf_len(buf); - return ARES_SUCCESS; +done: + ares__buf_destroy(buf); + return status; } - int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int alen, char **s, long *enclen) { - return ares__expand_name_validated(encoded, abuf, alen, s, enclen, 0); -} - -/* 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 is_hostname) -{ - int n = 0, offset, indir = 0, top; - - /* Allow the caller to pass us abuf + alen and have us check for it. */ - if (encoded >= abuf + alen) - return -1; - - while (*encoded) - { - top = (*encoded & INDIR_MASK); - if (top == INDIR_MASK) - { - /* Check the offset and go there. */ - if (encoded + 1 >= abuf + alen) - return -1; - offset = (*encoded & ~INDIR_MASK) << 8 | *(encoded + 1); - if (offset >= alen) - return -1; - encoded = abuf + offset; + /* Keep public API compatible */ + size_t enclen_temp = 0; + ares_status_t status; - /* If we've seen more indirects than the message length, - * then there's a loop. - */ - ++indir; - if (indir > alen || indir > MAX_INDIRS) - return -1; - } - else if (top == 0x00) - { - int name_len = *encoded; - offset = name_len; - if (encoded + offset + 1 >= abuf + alen) - return -1; - encoded++; - - while (offset--) - { - if (!ares__isprint(*encoded) && !(name_len == 1 && *encoded == 0)) - { - if (is_hostname) - return -1; - n += 4; - } - else if (is_reservedch(*encoded)) - { - if (is_hostname) - return -1; - n += 2; - } - else - { - if (is_hostname && !is_hostnamech(*encoded)) - return -1; - n += 1; - } - encoded++; - } - - n++; - } - else - { - /* RFC 1035 4.1.4 says other options (01, 10) for top 2 - * bits are reserved. - */ - return -1; - } - } + if (alen < 0) { + return ARES_EBADRESP; + } - /* 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; + status = ares__expand_name_validated(encoded, abuf, (size_t)alen, s, + &enclen_temp, ARES_FALSE); + *enclen = (long)enclen_temp; + return (int)status; } /* Like ares_expand_name_validated 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 is_hostname) +ares_status_t ares__expand_name_for_response(const unsigned char *encoded, + const unsigned char *abuf, + size_t alen, char **s, + size_t *enclen, + ares_bool_t is_hostname) { - int status = ares__expand_name_validated(encoded, abuf, alen, s, enclen, - is_hostname); - if (status == ARES_EBADNAME) + ares_status_t status = + ares__expand_name_validated(encoded, abuf, alen, s, enclen, is_hostname); + if (status == ARES_EBADNAME) { status = ARES_EBADRESP; + } return status; } diff --git a/deps/cares/src/lib/ares_expand_string.c b/deps/cares/src/lib/ares_expand_string.c index 2d6daa1497508b..be7034e2719df1 100644 --- a/deps/cares/src/lib/ares_expand_string.c +++ b/deps/cares/src/lib/ares_expand_string.c @@ -41,38 +41,71 @@ * 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) +ares_status_t ares_expand_string_ex(const unsigned char *encoded, + const unsigned char *abuf, size_t alen, + unsigned char **s, size_t *enclen) { - unsigned char *q; - union { - ares_ssize_t sig; - size_t uns; - } elen; + ares_status_t status; + ares__buf_t *buf = NULL; + size_t start_len; + size_t len = 0; - if (encoded == abuf+alen) - return ARES_EBADSTR; + if (encoded == NULL || abuf == NULL || alen == 0 || enclen == NULL) { + return ARES_EBADSTR; /* EFORMERR would be better */ + } - elen.uns = *encoded; - if (encoded+elen.sig+1 > abuf+alen) - return ARES_EBADSTR; + if (encoded < abuf || encoded >= abuf + alen) { + return ARES_EBADSTR; /* EFORMERR would be better */ + } - encoded++; + *enclen = 0; - *s = ares_malloc(elen.uns+1); - if (*s == NULL) + /* NOTE: we allow 's' to be NULL to skip it */ + if (s) { + *s = NULL; + } + + buf = ares__buf_create_const(abuf, alen); + + if (buf == NULL) { return ARES_ENOMEM; - q = *s; - strncpy((char *)q, (char *)encoded, elen.uns); - q[elen.uns] = '\0'; + } - *s = q; + status = ares__buf_set_position(buf, (size_t)(encoded - abuf)); + if (status != ARES_SUCCESS) { + goto done; + } - *enclen = (long)(elen.sig+1); + start_len = ares__buf_len(buf); + status = + ares__buf_parse_dns_binstr(buf, ares__buf_len(buf), s, &len, ARES_FALSE); + /* hrm, no way to pass back 'len' with the prototype */ + if (status != ARES_SUCCESS) { + goto done; + } - return ARES_SUCCESS; + *enclen = start_len - ares__buf_len(buf); + +done: + ares__buf_destroy(buf); + if (status == ARES_EBADNAME || status == ARES_EBADRESP) { + status = ARES_EBADSTR; + } + return status; } +int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, + int alen, unsigned char **s, long *enclen) +{ + ares_status_t status; + size_t temp_enclen = 0; + + if (alen < 0) { + return ARES_EBADRESP; + } + + status = ares_expand_string_ex(encoded, abuf, (size_t)alen, s, &temp_enclen); + + *enclen = (long)temp_enclen; + return (int)status; +} diff --git a/deps/cares/src/lib/ares_fds.c b/deps/cares/src/lib/ares_fds.c index 5ee149f9046cc9..c1fb794d2223eb 100644 --- a/deps/cares/src/lib/ares_fds.c +++ b/deps/cares/src/lib/ares_fds.c @@ -28,35 +28,34 @@ #include "ares_setup.h" #include "ares.h" -#include "ares_nowarn.h" #include "ares_private.h" int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds) { struct server_state *server; - ares_socket_t nfds; - int i; + ares_socket_t nfds; + size_t i; /* Are there any active queries? */ - size_t active_queries = ares__llist_len(channel->all_queries); + size_t active_queries = ares__llist_len(channel->all_queries); nfds = 0; for (i = 0; i < channel->nservers; i++) { ares__llist_node_t *node; server = &channel->servers[i]; - for (node = ares__llist_node_first(server->connections); - node != NULL; + for (node = ares__llist_node_first(server->connections); node != NULL; node = ares__llist_node_next(node)) { - struct server_connection *conn = ares__llist_node_val(node); + const struct server_connection *conn = ares__llist_node_val(node); /* We only need to register interest in UDP sockets if we have * outstanding queries. */ if (active_queries || conn->is_tcp) { FD_SET(conn->fd, read_fds); - if (conn->fd >= nfds) + if (conn->fd >= nfds) { nfds = conn->fd + 1; + } } if (conn->is_tcp && ares__buf_len(server->tcp_send)) { @@ -65,5 +64,5 @@ int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds) } } - return (int)nfds; + return nfds; } diff --git a/deps/cares/src/lib/ares_free_hostent.c b/deps/cares/src/lib/ares_free_hostent.c index 0d20673163aac8..a088c1b15cdf8d 100644 --- a/deps/cares/src/lib/ares_free_hostent.c +++ b/deps/cares/src/lib/ares_free_hostent.c @@ -28,7 +28,7 @@ #include "ares_setup.h" #ifdef HAVE_NETDB_H -#include +# include #endif #include "ares.h" @@ -38,16 +38,19 @@ void ares_free_hostent(struct hostent *host) { char **p; - if (!host) + if (!host) { return; + } - ares_free((char *)(host->h_name)); - for (p = host->h_aliases; p && *p; p++) + ares_free(host->h_name); + for (p = host->h_aliases; p && *p; p++) { ares_free(*p); + } ares_free(host->h_aliases); if (host->h_addr_list) { - ares_free(host->h_addr_list[0]); /* no matter if there is one or many entries, - there is only one malloc for all of them */ + ares_free( + host->h_addr_list[0]); /* no matter if there is one or many entries, + there is only one malloc for all of them */ ares_free(host->h_addr_list); } ares_free(host); diff --git a/deps/cares/src/lib/ares_freeaddrinfo.c b/deps/cares/src/lib/ares_freeaddrinfo.c index fe458735ee5e19..7b61dae54d3ba0 100644 --- a/deps/cares/src/lib/ares_freeaddrinfo.c +++ b/deps/cares/src/lib/ares_freeaddrinfo.c @@ -37,32 +37,31 @@ void ares__freeaddrinfo_cnames(struct ares_addrinfo_cname *head) { struct ares_addrinfo_cname *current; - while (head) - { - current = head; - head = head->next; - ares_free(current->alias); - ares_free(current->name); - ares_free(current); - } + while (head) { + current = head; + head = head->next; + ares_free(current->alias); + ares_free(current->name); + ares_free(current); + } } void ares__freeaddrinfo_nodes(struct ares_addrinfo_node *head) { struct ares_addrinfo_node *current; - while (head) - { - current = head; - head = head->ai_next; - ares_free(current->ai_addr); - ares_free(current); - } + while (head) { + current = head; + head = head->ai_next; + ares_free(current->ai_addr); + ares_free(current); + } } void ares_freeaddrinfo(struct ares_addrinfo *ai) { - if (ai == NULL) + if (ai == NULL) { return; + } ares__freeaddrinfo_cnames(ai->cnames); ares__freeaddrinfo_nodes(ai->nodes); ares_free(ai->name); diff --git a/deps/cares/src/lib/ares_getaddrinfo.c b/deps/cares/src/lib/ares_getaddrinfo.c index a3a2add1a2f2c1..631b7380bf3b06 100644 --- a/deps/cares/src/lib/ares_getaddrinfo.c +++ b/deps/cares/src/lib/ares_getaddrinfo.c @@ -29,8 +29,8 @@ #include "ares_setup.h" #ifdef HAVE_GETSERVBYNAME_R -# if !defined(GETSERVBYNAME_R_ARGS) || \ - (GETSERVBYNAME_R_ARGS < 4) || (GETSERVBYNAME_R_ARGS > 6) +# if !defined(GETSERVBYNAME_R_ARGS) || (GETSERVBYNAME_R_ARGS < 4) || \ + (GETSERVBYNAME_R_ARGS > 6) # error "you MUST specifiy a valid number of arguments for getservbyname_r" # endif #endif @@ -48,12 +48,12 @@ #include "ares_nameser.h" #ifdef HAVE_STRINGS_H -#include +# include #endif #include #ifdef HAVE_LIMITS_H -#include +# include #endif #include "ares.h" @@ -62,31 +62,30 @@ #include "ares_dns.h" #ifdef WATT32 -#undef WIN32 +# undef WIN32 #endif #ifdef WIN32 # include "ares_platform.h" #endif -struct host_query -{ - ares_channel channel; - char *name; - unsigned short port; /* in host order */ - ares_addrinfo_callback callback; - void *arg; +struct host_query { + ares_channel channel; + char *name; + unsigned short port; /* in host order */ + ares_addrinfo_callback callback; + void *arg; struct ares_addrinfo_hints hints; - int sent_family; /* this family is what was is being used */ - int timeouts; /* number of timeouts we saw for this request */ - const char *remaining_lookups; /* types of lookup we need to perform ("fb" by - default, file and dns respectively) */ - struct ares_addrinfo *ai; /* store results between lookups */ - unsigned short qid_a; /* qid for A request */ - unsigned short qid_aaaa; /* qid for AAAA request */ - int remaining; /* number of DNS answers waiting for */ - int next_domain; /* next search domain to try */ - int nodata_cnt; /* Track nodata responses to possibly override final result */ - + int sent_family; /* this family is what was is being used */ + size_t timeouts; /* number of timeouts we saw for this request */ + const char *remaining_lookups; /* types of lookup we need to perform ("fb" by + default, file and dns respectively) */ + struct ares_addrinfo *ai; /* store results between lookups */ + unsigned short qid_a; /* qid for A request */ + unsigned short qid_aaaa; /* qid for AAAA request */ + size_t remaining; /* number of DNS answers waiting for */ + ares_ssize_t next_domain; /* next search domain to try */ + size_t + nodata_cnt; /* Track nodata responses to possibly override final result */ }; static const struct ares_addrinfo_hints default_hints = { @@ -121,55 +120,54 @@ static const struct ares_addrinfo empty_addrinfo = { }; /* forward declarations */ -static void host_callback(void *arg, int status, int timeouts, - unsigned char *abuf, int alen); -static int as_is_first(const struct host_query *hquery); -static int as_is_only(const struct host_query* hquery); -static int next_dns_lookup(struct host_query *hquery); +static void host_callback(void *arg, int status, int timeouts, + unsigned char *abuf, int alen); +static ares_bool_t as_is_first(const struct host_query *hquery); +static ares_bool_t as_is_only(const struct host_query *hquery); +static ares_bool_t next_dns_lookup(struct host_query *hquery); static struct ares_addrinfo_cname *ares__malloc_addrinfo_cname(void) { - struct ares_addrinfo_cname *cname = ares_malloc(sizeof(struct ares_addrinfo_cname)); - if (!cname) + struct ares_addrinfo_cname *cname = + ares_malloc(sizeof(struct ares_addrinfo_cname)); + if (!cname) { return NULL; + } *cname = empty_addrinfo_cname; return cname; } -struct ares_addrinfo_cname *ares__append_addrinfo_cname(struct ares_addrinfo_cname **head) +struct ares_addrinfo_cname * + ares__append_addrinfo_cname(struct ares_addrinfo_cname **head) { struct ares_addrinfo_cname *tail = ares__malloc_addrinfo_cname(); struct ares_addrinfo_cname *last = *head; - if (!last) - { - *head = tail; - return tail; - } + if (!last) { + *head = tail; + return tail; + } - while (last->next) - { - last = last->next; - } + while (last->next) { + last = last->next; + } last->next = tail; return tail; } void ares__addrinfo_cat_cnames(struct ares_addrinfo_cname **head, - struct ares_addrinfo_cname *tail) + struct ares_addrinfo_cname *tail) { struct ares_addrinfo_cname *last = *head; - if (!last) - { - *head = tail; - return; - } + if (!last) { + *head = tail; + return; + } - while (last->next) - { - last = last->next; - } + while (last->next) { + last = last->next; + } last->next = tail; } @@ -177,8 +175,9 @@ void ares__addrinfo_cat_cnames(struct ares_addrinfo_cname **head, static struct ares_addrinfo *ares__malloc_addrinfo(void) { struct ares_addrinfo *ai = ares_malloc(sizeof(struct ares_addrinfo)); - if (!ai) + if (!ai) { return NULL; + } *ai = empty_addrinfo; return ai; @@ -186,49 +185,46 @@ static struct ares_addrinfo *ares__malloc_addrinfo(void) static struct ares_addrinfo_node *ares__malloc_addrinfo_node(void) { - struct ares_addrinfo_node *node = - ares_malloc(sizeof(*node)); - if (!node) + struct ares_addrinfo_node *node = ares_malloc(sizeof(*node)); + if (!node) { return NULL; + } *node = empty_addrinfo_node; return node; } /* Allocate new addrinfo and append to the tail. */ -struct ares_addrinfo_node *ares__append_addrinfo_node(struct ares_addrinfo_node **head) +struct ares_addrinfo_node * + ares__append_addrinfo_node(struct ares_addrinfo_node **head) { struct ares_addrinfo_node *tail = ares__malloc_addrinfo_node(); struct ares_addrinfo_node *last = *head; - if (!last) - { - *head = tail; - return tail; - } + if (!last) { + *head = tail; + return tail; + } - while (last->ai_next) - { - last = last->ai_next; - } + while (last->ai_next) { + last = last->ai_next; + } last->ai_next = tail; return tail; } void ares__addrinfo_cat_nodes(struct ares_addrinfo_node **head, - struct ares_addrinfo_node *tail) + struct ares_addrinfo_node *tail) { struct ares_addrinfo_node *last = *head; - if (!last) - { - *head = tail; - return; - } + if (!last) { + *head = tail; + return; + } - while (last->ai_next) - { - last = last->ai_next; - } + while (last->ai_next) { + last = last->ai_next; + } last->ai_next = tail; } @@ -238,51 +234,52 @@ void ares__addrinfo_cat_nodes(struct ares_addrinfo_node **head, */ static unsigned short lookup_service(const char *service, int flags) { - const char *proto; + const char *proto; struct servent *sep; #ifdef HAVE_GETSERVBYNAME_R struct servent se; - char tmpbuf[4096]; + char tmpbuf[4096]; #endif - if (service) - { - 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"; + if (service) { + 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_GETSERVBYNAME_R - memset(&se, 0, sizeof(se)); - sep = &se; - memset(tmpbuf, 0, sizeof(tmpbuf)); -#if GETSERVBYNAME_R_ARGS == 6 - if (getservbyname_r(service, proto, &se, (void *)tmpbuf, sizeof(tmpbuf), - &sep) != 0) - sep = NULL; /* LCOV_EXCL_LINE: buffer large so this never fails */ -#elif GETSERVBYNAME_R_ARGS == 5 - sep = - getservbyname_r(service, proto, &se, (void *)tmpbuf, sizeof(tmpbuf)); -#elif GETSERVBYNAME_R_ARGS == 4 - if (getservbyname_r(service, proto, &se, (void *)tmpbuf) != 0) - sep = NULL; -#else - /* Lets just hope the OS uses TLS! */ - sep = getservbyname(service, proto); -#endif -#else - /* Lets just hope the OS uses TLS! */ -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) - sep = getservbyname(service, (char *)proto); + memset(&se, 0, sizeof(se)); + sep = &se; + memset(tmpbuf, 0, sizeof(tmpbuf)); +# if GETSERVBYNAME_R_ARGS == 6 + if (getservbyname_r(service, proto, &se, (void *)tmpbuf, sizeof(tmpbuf), + &sep) != 0) { + sep = NULL; /* LCOV_EXCL_LINE: buffer large so this never fails */ + } +# elif GETSERVBYNAME_R_ARGS == 5 + sep = getservbyname_r(service, proto, &se, (void *)tmpbuf, sizeof(tmpbuf)); +# elif GETSERVBYNAME_R_ARGS == 4 + if (getservbyname_r(service, proto, &se, (void *)tmpbuf) != 0) { + sep = NULL; + } +# else + /* Lets just hope the OS uses TLS! */ + sep = getservbyname(service, proto); +# endif #else - sep = getservbyname(service, proto); -#endif + /* Lets just hope the OS uses TLS! */ +# if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) + sep = getservbyname(service, (char *)proto); +# else + sep = getservbyname(service, proto); +# endif #endif - return (sep ? ntohs((unsigned short)sep->s_port) : 0); - } + return (sep ? ntohs((unsigned short)sep->s_port) : 0); + } return 0; } @@ -290,242 +287,230 @@ static unsigned short lookup_service(const char *service, int flags) * fake up a host entry, end the query immediately, and return true. * Otherwise return false. */ -static int fake_addrinfo(const char *name, - unsigned short port, - const struct ares_addrinfo_hints *hints, - struct ares_addrinfo *ai, - ares_addrinfo_callback callback, - void *arg) +static ares_bool_t fake_addrinfo(const char *name, unsigned short port, + const struct ares_addrinfo_hints *hints, + struct ares_addrinfo *ai, + ares_addrinfo_callback callback, void *arg) { struct ares_addrinfo_cname *cname; - int status = ARES_SUCCESS; - int result = 0; - int family = hints->ai_family; - if (family == AF_INET || family == AF_INET6 || family == AF_UNSPEC) - { - /* 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++; - } - } + ares_status_t status = ARES_SUCCESS; + ares_bool_t result = ARES_FALSE; + int family = hints->ai_family; + if (family == AF_INET || family == AF_INET6 || family == AF_UNSPEC) { + /* It only looks like an IP address if it's all numbers and dots. */ + size_t numdots = 0; + ares_bool_t valid = ARES_TRUE; + const char *p; + for (p = name; *p; p++) { + if (!ISDIGIT(*p) && *p != '.') { + valid = ARES_FALSE; + break; + } else if (*p == '.') { + numdots++; + } + } - /* if we don't have 3 dots, it is illegal - * (although inet_pton doesn't think so). - */ - if (numdots != 3 || !valid) - result = 0; - else - { - struct in_addr addr4; - result = ares_inet_pton(AF_INET, name, &addr4) < 1 ? 0 : 1; - if (result) - { - status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes); - if (status != ARES_SUCCESS) - { - callback(arg, status, 0, NULL); - return 1; - } - } + /* if we don't have 3 dots, it is illegal + * (although inet_pton doesn't think so). + */ + if (numdots != 3 || !valid) { + result = ARES_FALSE; + } else { + struct in_addr addr4; + result = + ares_inet_pton(AF_INET, name, &addr4) < 1 ? ARES_FALSE : ARES_TRUE; + if (result) { + status = ares_append_ai_node(AF_INET, port, 0, &addr4, &ai->nodes); + if (status != ARES_SUCCESS) { + callback(arg, (int)status, 0, NULL); + return ARES_TRUE; } + } } + } - if (!result && (family == AF_INET6 || family == AF_UNSPEC)) - { - struct ares_in6_addr addr6; - result = ares_inet_pton(AF_INET6, name, &addr6) < 1 ? 0 : 1; - if (result) - { - status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes); - if (status != ARES_SUCCESS) - { - callback(arg, status, 0, NULL); - return 1; - } - } + if (!result && (family == AF_INET6 || family == AF_UNSPEC)) { + struct ares_in6_addr addr6; + result = + ares_inet_pton(AF_INET6, name, &addr6) < 1 ? ARES_FALSE : ARES_TRUE; + if (result) { + status = ares_append_ai_node(AF_INET6, port, 0, &addr6, &ai->nodes); + if (status != ARES_SUCCESS) { + callback(arg, (int)status, 0, NULL); + return ARES_TRUE; + } } + } - if (!result) - return 0; - - if (hints->ai_flags & ARES_AI_CANONNAME) - { - cname = ares__append_addrinfo_cname(&ai->cnames); - if (!cname) - { - ares_freeaddrinfo(ai); - callback(arg, ARES_ENOMEM, 0, NULL); - return 1; - } + if (!result) { + return ARES_FALSE; + } - /* Duplicate the name, to avoid a constness violation. */ - cname->name = ares_strdup(name); - if (!cname->name) - { - ares_freeaddrinfo(ai); - callback(arg, ARES_ENOMEM, 0, NULL); - return 1; - } + if (hints->ai_flags & ARES_AI_CANONNAME) { + cname = ares__append_addrinfo_cname(&ai->cnames); + if (!cname) { + ares_freeaddrinfo(ai); + callback(arg, ARES_ENOMEM, 0, NULL); + return ARES_TRUE; } + /* Duplicate the name, to avoid a constness violation. */ + cname->name = ares_strdup(name); + if (!cname->name) { + ares_freeaddrinfo(ai); + callback(arg, ARES_ENOMEM, 0, NULL); + return ARES_TRUE; + } + } + ai->nodes->ai_socktype = hints->ai_socktype; ai->nodes->ai_protocol = hints->ai_protocol; callback(arg, ARES_SUCCESS, 0, ai); - return 1; + return ARES_TRUE; } -static void end_hquery(struct host_query *hquery, int status) +static void end_hquery(struct host_query *hquery, ares_status_t status) { - struct ares_addrinfo_node sentinel; + struct ares_addrinfo_node sentinel; struct ares_addrinfo_node *next; - if (status == ARES_SUCCESS) - { - if (!(hquery->hints.ai_flags & ARES_AI_NOSORT) && hquery->ai->nodes) - { - sentinel.ai_next = hquery->ai->nodes; - ares__sortaddrinfo(hquery->channel, &sentinel); - hquery->ai->nodes = sentinel.ai_next; - } - next = hquery->ai->nodes; - - while (next) - { - next->ai_socktype = hquery->hints.ai_socktype; - next->ai_protocol = hquery->hints.ai_protocol; - next = next->ai_next; - } - } - else - { - /* Clean up what we have collected by so far. */ - ares_freeaddrinfo(hquery->ai); - hquery->ai = NULL; - } + if (status == ARES_SUCCESS) { + if (!(hquery->hints.ai_flags & ARES_AI_NOSORT) && hquery->ai->nodes) { + sentinel.ai_next = hquery->ai->nodes; + ares__sortaddrinfo(hquery->channel, &sentinel); + hquery->ai->nodes = sentinel.ai_next; + } + next = hquery->ai->nodes; + + while (next) { + next->ai_socktype = hquery->hints.ai_socktype; + next->ai_protocol = hquery->hints.ai_protocol; + next = next->ai_next; + } + } else { + /* Clean up what we have collected by so far. */ + ares_freeaddrinfo(hquery->ai); + hquery->ai = NULL; + } - hquery->callback(hquery->arg, status, hquery->timeouts, hquery->ai); + hquery->callback(hquery->arg, (int)status, (int)hquery->timeouts, hquery->ai); ares_free(hquery->name); ares_free(hquery); } -static int is_localhost(const char *name) +static ares_bool_t is_localhost(const char *name) { - /* RFC6761 6.3 says : The domain "localhost." and any names falling within ".localhost." */ + /* RFC6761 6.3 says : The domain "localhost." and any names falling within + * ".localhost." */ size_t len; - if (name == NULL) - return 0; + if (name == NULL) { + return ARES_FALSE; + } - if (strcmp(name, "localhost") == 0) - return 1; + if (strcmp(name, "localhost") == 0) { + return ARES_TRUE; + } - len = strlen(name); - if (len < 10 /* strlen(".localhost") */) - return 0; + len = ares_strlen(name); + if (len < 10 /* strlen(".localhost") */) { + return ARES_FALSE; + } - if (strcmp(name + (len - 10 /* strlen(".localhost") */), ".localhost") == 0) - return 1; + if (strcmp(name + (len - 10 /* strlen(".localhost") */), ".localhost") == 0) { + return ARES_TRUE; + } - return 0; + return ARES_FALSE; } -static int file_lookup(struct host_query *hquery) +static ares_status_t file_lookup(struct host_query *hquery) { - FILE *fp; - int error; - int status; - char *path_hosts = NULL; - - if (hquery->hints.ai_flags & ARES_AI_ENVHOSTS) - { - path_hosts = ares_strdup(getenv("CARES_HOSTS")); - if (!path_hosts) - return ARES_ENOMEM; + FILE *fp; + int error; + ares_status_t status; + char *path_hosts = NULL; + + if (hquery->channel->hosts_path) { + path_hosts = ares_strdup(hquery->channel->hosts_path); + if (!path_hosts) { + return ARES_ENOMEM; } + } - if (hquery->channel->hosts_path) - { - path_hosts = ares_strdup(hquery->channel->hosts_path); - if (!path_hosts) - return ARES_ENOMEM; + if (hquery->hints.ai_flags & ARES_AI_ENVHOSTS) { + if (path_hosts) { + ares_free(path_hosts); } - if (!path_hosts) - { + path_hosts = ares_strdup(getenv("CARES_HOSTS")); + if (!path_hosts) { + return ARES_ENOMEM; + } + } + + if (!path_hosts) { #ifdef WIN32 - char PATH_HOSTS[MAX_PATH]; - win_platform platform; - - PATH_HOSTS[0] = '\0'; - - platform = ares__getplatform(); - - if (platform == WIN_NT) - { - char tmp[MAX_PATH]; - HKEY hkeyHosts; - - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, - &hkeyHosts) == ERROR_SUCCESS) - { - DWORD dwLength = MAX_PATH; - RegQueryValueExA(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, - &dwLength); - ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH); - RegCloseKey(hkeyHosts); - } - } - else if (platform == WIN_9X) - GetWindowsDirectoryA(PATH_HOSTS, MAX_PATH); - else - return ARES_ENOTFOUND; + char PATH_HOSTS[MAX_PATH]; + win_platform platform; + + PATH_HOSTS[0] = '\0'; + + platform = ares__getplatform(); + + if (platform == WIN_NT) { + char tmp[MAX_PATH]; + HKEY hkeyHosts; + + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, + &hkeyHosts) == ERROR_SUCCESS) { + DWORD dwLength = MAX_PATH; + RegQueryValueExA(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, + &dwLength); + ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH); + RegCloseKey(hkeyHosts); + } + } else if (platform == WIN_9X) { + GetWindowsDirectoryA(PATH_HOSTS, MAX_PATH); + } else { + return ARES_ENOTFOUND; + } - strcat(PATH_HOSTS, WIN_PATH_HOSTS); + strcat(PATH_HOSTS, WIN_PATH_HOSTS); #elif defined(WATT32) - const char *PATH_HOSTS = _w32_GetHostsFile(); + const char *PATH_HOSTS = _w32_GetHostsFile(); - if (!PATH_HOSTS) - return ARES_ENOTFOUND; + if (!PATH_HOSTS) { + return ARES_ENOTFOUND; + } #endif - path_hosts = ares_strdup(PATH_HOSTS); - if (!path_hosts) - return ARES_ENOMEM; + path_hosts = ares_strdup(PATH_HOSTS); + if (!path_hosts) { + return ARES_ENOMEM; } + } fp = fopen(path_hosts, "r"); - if (!fp) - { - error = ERRNO; - switch (error) - { - case ENOENT: - case ESRCH: - status = ARES_ENOTFOUND; - break; - default: - DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, - strerror(error))); - DEBUGF(fprintf(stderr, "Error opening file: %s\n", path_hosts)); - status = ARES_EFILE; - break; - } - } - else - { - status = ares__readaddrinfo(fp, hquery->name, hquery->port, &hquery->hints, hquery->ai); - fclose(fp); - } + if (!fp) { + error = ERRNO; + switch (error) { + case ENOENT: + case ESRCH: + status = ARES_ENOTFOUND; + break; + default: + DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, + strerror(error))); + DEBUGF(fprintf(stderr, "Error opening file: %s\n", path_hosts)); + status = ARES_EFILE; + break; + } + } else { + status = ares__readaddrinfo(fp, hquery->name, hquery->port, &hquery->hints, + hquery->ai); + fclose(fp); + } ares_free(path_hosts); /* RFC6761 section 6.3 #3 states that "Name resolution APIs and libraries @@ -533,82 +518,82 @@ static int file_lookup(struct host_query *hquery) * IP loopback address for address queries". * We will also ignore ALL errors when trying to resolve localhost, such * as permissions errors reading /etc/hosts or a malformed /etc/hosts */ - if (status != ARES_SUCCESS && is_localhost(hquery->name)) - { - return ares__addrinfo_localhost(hquery->name, hquery->port, - &hquery->hints, hquery->ai); - } + if (status != ARES_SUCCESS && is_localhost(hquery->name)) { + return ares__addrinfo_localhost(hquery->name, hquery->port, &hquery->hints, + hquery->ai); + } return status; } -static void next_lookup(struct host_query *hquery, int status) +static void next_lookup(struct host_query *hquery, ares_status_t status) { - switch (*hquery->remaining_lookups) - { - case 'b': - /* RFC6761 section 6.3 #3 says "Name resolution APIs SHOULD NOT send - * queries for localhost names to their configured caching DNS - * server(s)." */ - if (!is_localhost(hquery->name)) - { - /* DNS lookup */ - if (next_dns_lookup(hquery)) - break; - } - - hquery->remaining_lookups++; - next_lookup(hquery, status); - break; - - case 'f': - /* Host file lookup */ - if (file_lookup(hquery) == ARES_SUCCESS) - { - end_hquery(hquery, ARES_SUCCESS); - break; - } - hquery->remaining_lookups++; - next_lookup(hquery, status); - break; - default: - /* No lookup left */ - end_hquery(hquery, status); - break; - } -} + switch (*hquery->remaining_lookups) { + case 'b': + /* RFC6761 section 6.3 #3 says "Name resolution APIs SHOULD NOT send + * queries for localhost names to their configured caching DNS + * server(s)." + * Otherwise, DNS lookup. */ + if (!is_localhost(hquery->name) && next_dns_lookup(hquery)) { + break; + } + + hquery->remaining_lookups++; + next_lookup(hquery, status); + break; + case 'f': + /* Host file lookup */ + if (file_lookup(hquery) == ARES_SUCCESS) { + end_hquery(hquery, ARES_SUCCESS); + break; + } + hquery->remaining_lookups++; + next_lookup(hquery, status); + break; + default: + /* No lookup left */ + end_hquery(hquery, status); + break; + } +} static void terminate_retries(struct host_query *hquery, unsigned short qid) { - unsigned short term_qid = (qid == hquery->qid_a)?hquery->qid_aaaa:hquery->qid_a; - ares_channel channel = hquery->channel; - struct query *query = NULL; + unsigned short term_qid = + (qid == hquery->qid_a) ? hquery->qid_aaaa : hquery->qid_a; + ares_channel channel = hquery->channel; + struct query *query = NULL; /* No other outstanding queries, nothing to do */ - if (!hquery->remaining) + if (!hquery->remaining) { return; + } query = ares__htable_stvp_get_direct(channel->queries_by_qid, term_qid); - if (query == NULL) + if (query == NULL) { return; + } - query->no_retries = 1; + query->no_retries = ARES_TRUE; } - static void host_callback(void *arg, int status, int timeouts, unsigned char *abuf, int alen) { - struct host_query *hquery = (struct host_query*)arg; - int addinfostatus = ARES_SUCCESS; - unsigned short qid = 0; - hquery->timeouts += timeouts; + struct host_query *hquery = (struct host_query *)arg; + ares_status_t addinfostatus = ARES_SUCCESS; + unsigned short qid = 0; + hquery->timeouts += (size_t)timeouts; hquery->remaining--; if (status == ARES_SUCCESS) { - addinfostatus = ares__parse_into_addrinfo(abuf, alen, 1, hquery->port, - hquery->ai); + if (alen < 0) { + addinfostatus = ARES_EBADRESP; + } else { + addinfostatus = ares__parse_into_addrinfo(abuf, (size_t)alen, ARES_TRUE, + hquery->port, hquery->ai); + } if (addinfostatus == ARES_SUCCESS && alen >= HFIXEDSZ) { qid = DNS_HEADER_QID(abuf); /* Converts to host byte order */ terminate_retries(hquery, qid); @@ -630,248 +615,222 @@ static void host_callback(void *arg, int status, int timeouts, end_hquery(hquery, ARES_SUCCESS); } else if (status == ARES_EDESTRUCTION || status == ARES_ECANCELLED) { /* must make sure we don't do next_lookup() on destroy or cancel */ - end_hquery(hquery, status); + end_hquery(hquery, (ares_status_t)status); } else if (status == ARES_ENOTFOUND || status == ARES_ENODATA || addinfostatus == ARES_ENODATA) { - if (status == ARES_ENODATA || addinfostatus == ARES_ENODATA) + if (status == ARES_ENODATA || addinfostatus == ARES_ENODATA) { hquery->nodata_cnt++; - next_lookup(hquery, hquery->nodata_cnt?ARES_ENODATA:status); + } + next_lookup(hquery, + hquery->nodata_cnt ? ARES_ENODATA : (ares_status_t)status); } else { - end_hquery(hquery, status); + end_hquery(hquery, (ares_status_t)status); } } /* at this point we keep on waiting for the next query to finish */ } -void ares_getaddrinfo(ares_channel channel, - const char* name, const char* service, - const struct ares_addrinfo_hints* hints, - ares_addrinfo_callback callback, void* arg) +void ares_getaddrinfo(ares_channel channel, const char *name, + const char *service, + const struct ares_addrinfo_hints *hints, + ares_addrinfo_callback callback, void *arg) { - struct host_query *hquery; - unsigned short port = 0; - int family; + struct host_query *hquery; + unsigned short port = 0; + int family; struct ares_addrinfo *ai; - char *alias_name = NULL; - int status; + char *alias_name = NULL; + ares_status_t status; - if (!hints) - { - hints = &default_hints; - } + if (!hints) { + hints = &default_hints; + } family = hints->ai_family; /* Right now we only know how to look up Internet addresses and unspec means try both basically. */ - if (family != AF_INET && - family != AF_INET6 && - family != AF_UNSPEC) - { - callback(arg, ARES_ENOTIMP, 0, NULL); - return; - } + if (family != AF_INET && family != AF_INET6 && family != AF_UNSPEC) { + callback(arg, ARES_ENOTIMP, 0, NULL); + return; + } - if (ares__is_onion_domain(name)) - { - callback(arg, ARES_ENOTFOUND, 0, NULL); - return; - } + if (ares__is_onion_domain(name)) { + callback(arg, ARES_ENOTFOUND, 0, NULL); + return; + } /* perform HOSTALIAS resolution (technically this function does some other * things we are going to ignore) */ status = ares__single_domain(channel, name, &alias_name); if (status != ARES_SUCCESS) { - callback(arg, status, 0, NULL); + callback(arg, (int)status, 0, NULL); return; } - if (alias_name) + if (alias_name) { name = alias_name; + } - if (service) - { - if (hints->ai_flags & ARES_AI_NUMERICSERV) - { - unsigned long val; - errno = 0; - val = strtoul(service, NULL, 0); - if ((val == 0 && errno != 0) || val > 65535) - { - ares_free(alias_name); - callback(arg, ARES_ESERVICE, 0, NULL); - return; - } - port = (unsigned short)val; - } - else - { - port = lookup_service(service, 0); - if (!port) - { - unsigned long val; - errno = 0; - val = strtoul(service, NULL, 0); - if ((val == 0 && errno != 0) || val > 65535) - { - ares_free(alias_name); - callback(arg, ARES_ESERVICE, 0, NULL); - return; - } - port = (unsigned short)val; - } + if (service) { + if (hints->ai_flags & ARES_AI_NUMERICSERV) { + unsigned long val; + errno = 0; + val = strtoul(service, NULL, 0); + if ((val == 0 && errno != 0) || val > 65535) { + ares_free(alias_name); + callback(arg, ARES_ESERVICE, 0, NULL); + return; + } + port = (unsigned short)val; + } else { + port = lookup_service(service, 0); + if (!port) { + unsigned long val; + errno = 0; + val = strtoul(service, NULL, 0); + if ((val == 0 && errno != 0) || val > 65535) { + ares_free(alias_name); + callback(arg, ARES_ESERVICE, 0, NULL); + return; } + port = (unsigned short)val; + } } + } ai = ares__malloc_addrinfo(); - if (!ai) - { - ares_free(alias_name); - callback(arg, ARES_ENOMEM, 0, NULL); - return; - } + if (!ai) { + ares_free(alias_name); + callback(arg, ARES_ENOMEM, 0, NULL); + return; + } - if (fake_addrinfo(name, port, hints, ai, callback, arg)) - { - ares_free(alias_name); - return; - } + if (fake_addrinfo(name, port, hints, ai, callback, arg)) { + ares_free(alias_name); + return; + } /* Allocate and fill in the host query structure. */ hquery = ares_malloc(sizeof(*hquery)); - if (!hquery) - { - ares_free(alias_name); - ares_freeaddrinfo(ai); - callback(arg, ARES_ENOMEM, 0, NULL); - return; - } + if (!hquery) { + ares_free(alias_name); + ares_freeaddrinfo(ai); + callback(arg, ARES_ENOMEM, 0, NULL); + return; + } memset(hquery, 0, sizeof(*hquery)); hquery->name = ares_strdup(name); ares_free(alias_name); - if (!hquery->name) - { - ares_free(hquery); - ares_freeaddrinfo(ai); - callback(arg, ARES_ENOMEM, 0, NULL); - return; - } + if (!hquery->name) { + ares_free(hquery); + ares_freeaddrinfo(ai); + callback(arg, ARES_ENOMEM, 0, NULL); + return; + } - hquery->port = port; - hquery->channel = channel; - hquery->hints = *hints; - hquery->sent_family = -1; /* nothing is sent yet */ - hquery->callback = callback; - hquery->arg = arg; + hquery->port = port; + hquery->channel = channel; + hquery->hints = *hints; + hquery->sent_family = -1; /* nothing is sent yet */ + hquery->callback = callback; + hquery->arg = arg; hquery->remaining_lookups = channel->lookups; - hquery->ai = ai; - hquery->next_domain = -1; + hquery->ai = ai; + hquery->next_domain = -1; /* Start performing lookups according to channel->lookups. */ next_lookup(hquery, ARES_ECONNREFUSED /* initial error code */); } -static int next_dns_lookup(struct host_query *hquery) +static ares_bool_t next_dns_lookup(struct host_query *hquery) { - char *s = NULL; - int is_s_allocated = 0; - int status; + char *s = NULL; + ares_bool_t is_s_allocated = ARES_FALSE; + ares_status_t status; /* if next_domain == -1 and as_is_first is true, try hquery->name */ - if (hquery->next_domain == -1) - { - if (as_is_first(hquery)) - { - s = hquery->name; - } - hquery->next_domain = 0; + if (hquery->next_domain == -1) { + if (as_is_first(hquery)) { + s = hquery->name; } + hquery->next_domain = 0; + } /* if as_is_first is false, try hquery->name at last */ - if (!s && hquery->next_domain == hquery->channel->ndomains) { - if (!as_is_first(hquery)) - { - s = hquery->name; - } + if (!s && (size_t)hquery->next_domain == hquery->channel->ndomains) { + if (!as_is_first(hquery)) { + s = hquery->name; + } hquery->next_domain++; } - if (!s && hquery->next_domain < hquery->channel->ndomains && !as_is_only(hquery)) - { - status = ares__cat_domain( - hquery->name, - hquery->channel->domains[hquery->next_domain++], - &s); - if (status == ARES_SUCCESS) - { - is_s_allocated = 1; - } + if (!s && (size_t)hquery->next_domain < hquery->channel->ndomains && + !as_is_only(hquery)) { + status = ares__cat_domain( + hquery->name, hquery->channel->domains[hquery->next_domain++], &s); + if (status == ARES_SUCCESS) { + is_s_allocated = ARES_TRUE; } + } - if (s) - { - /* NOTE: hquery may be invalidated during the call to ares_query_qid(), - * so should not be referenced after this point */ - switch (hquery->hints.ai_family) - { - case AF_INET: - hquery->remaining += 1; - ares_query_qid(hquery->channel, s, C_IN, T_A, host_callback, hquery, - &hquery->qid_a); - break; - case AF_INET6: - hquery->remaining += 1; - ares_query_qid(hquery->channel, s, C_IN, T_AAAA, host_callback, - hquery, &hquery->qid_aaaa); - break; - case AF_UNSPEC: - hquery->remaining += 2; - ares_query_qid(hquery->channel, s, C_IN, T_A, host_callback, - hquery, &hquery->qid_a); - ares_query_qid(hquery->channel, s, C_IN, T_AAAA, host_callback, - hquery, &hquery->qid_aaaa); - break; - default: break; - } - if (is_s_allocated) - { - ares_free(s); - } - return 1; + if (s) { + /* NOTE: hquery may be invalidated during the call to ares_query_qid(), + * so should not be referenced after this point */ + switch (hquery->hints.ai_family) { + case AF_INET: + hquery->remaining += 1; + ares_query_qid(hquery->channel, s, C_IN, T_A, host_callback, hquery, + &hquery->qid_a); + break; + case AF_INET6: + hquery->remaining += 1; + ares_query_qid(hquery->channel, s, C_IN, T_AAAA, host_callback, hquery, + &hquery->qid_aaaa); + break; + case AF_UNSPEC: + hquery->remaining += 2; + ares_query_qid(hquery->channel, s, C_IN, T_A, host_callback, hquery, + &hquery->qid_a); + ares_query_qid(hquery->channel, s, C_IN, T_AAAA, host_callback, hquery, + &hquery->qid_aaaa); + break; + default: + break; } - else - { - assert(!hquery->ai->nodes); - return 0; + if (is_s_allocated) { + ares_free(s); } + return ARES_TRUE; + } else { + assert(!hquery->ai->nodes); + return ARES_FALSE; + } } -static int as_is_first(const struct host_query* hquery) +static ares_bool_t as_is_first(const struct host_query *hquery) { - char* p; - int ndots = 0; - size_t nname = hquery->name?strlen(hquery->name):0; - for (p = hquery->name; p && *p; p++) - { - if (*p == '.') - { - ndots++; - } + const char *p; + size_t ndots = 0; + size_t nname = ares_strlen(hquery->name); + for (p = hquery->name; p && *p; p++) { + if (*p == '.') { + ndots++; } - if (nname && hquery->name[nname-1] == '.') - { - /* prevent ARES_EBADNAME for valid FQDN, where ndots < channel->ndots */ - return 1; - } - return ndots >= hquery->channel->ndots; + } + if (hquery->name != NULL && nname && hquery->name[nname - 1] == '.') { + /* prevent ARES_EBADNAME for valid FQDN, where ndots < channel->ndots */ + return ARES_TRUE; + } + return ndots >= hquery->channel->ndots ? ARES_TRUE : ARES_FALSE; } -static int as_is_only(const struct host_query* hquery) +static ares_bool_t as_is_only(const struct host_query *hquery) { - size_t nname = hquery->name?strlen(hquery->name):0; - if (nname && hquery->name[nname-1] == '.') - return 1; - return 0; + size_t nname = ares_strlen(hquery->name); + if (hquery->name != NULL && nname && hquery->name[nname - 1] == '.') { + return ARES_TRUE; + } + return ARES_FALSE; } - diff --git a/deps/cares/src/lib/ares_gethostbyaddr.c b/deps/cares/src/lib/ares_gethostbyaddr.c index 628813057b53bc..b7b5a295baa045 100644 --- a/deps/cares/src/lib/ares_gethostbyaddr.c +++ b/deps/cares/src/lib/ares_gethostbyaddr.c @@ -45,147 +45,143 @@ #include "ares_private.h" #ifdef WATT32 -#undef WIN32 +# undef WIN32 #endif struct addr_query { /* Arguments passed to ares_gethostbyaddr() */ - ares_channel channel; - struct ares_addr addr; + ares_channel channel; + struct ares_addr addr; ares_host_callback callback; - void *arg; + void *arg; - const char *remaining_lookups; - int timeouts; + const char *remaining_lookups; + size_t 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, int name_size, const struct ares_addr *addr); +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, ares_status_t status, + struct hostent *host); +static ares_status_t file_lookup(const struct ares_addr *addr, + struct hostent **host); +static void ptr_rr_name(char *name, size_t name_size, + 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 && 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; - } + (family == AF_INET6 && addrlen != sizeof(aquery->addr.addrV6))) { + callback(arg, ARES_ENOTIMP, 0, NULL); + return; + } aquery = ares_malloc(sizeof(struct addr_query)); - if (!aquery) - { - callback(arg, ARES_ENOMEM, 0, NULL); - return; - } + if (!aquery) { + callback(arg, ARES_ENOMEM, 0, NULL); + return; + } aquery->channel = channel; - if (family == AF_INET) + if (family == AF_INET) { memcpy(&aquery->addr.addrV4, addr, sizeof(aquery->addr.addrV4)); - else + } else { memcpy(&aquery->addr.addrV6, addr, sizeof(aquery->addr.addrV6)); - aquery->addr.family = family; - aquery->callback = callback; - aquery->arg = arg; + } + aquery->addr.family = family; + aquery->callback = callback; + aquery->arg = arg; aquery->remaining_lookups = channel->lookups; - aquery->timeouts = 0; + aquery->timeouts = 0; next_lookup(aquery); } static void next_lookup(struct addr_query *aquery) { - const char *p; - char name[128]; - int status; + const char *p; + char name[128]; + ares_status_t status; struct hostent *host; - for (p = aquery->remaining_lookups; *p; p++) - { - switch (*p) - { - case 'b': - ptr_rr_name(name, sizeof(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); + for (p = aquery->remaining_lookups; *p; p++) { + switch (*p) { + case 'b': + ptr_rr_name(name, sizeof(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; + /* 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; + default: + 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; + 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); + aquery->timeouts += (size_t)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); } - else if (status == ARES_EDESTRUCTION || status == ARES_ECANCELLED) - end_aquery(aquery, status, NULL); - else + end_aquery(aquery, (ares_status_t)status, host); + } else if (status == ARES_EDESTRUCTION || status == ARES_ECANCELLED) { + end_aquery(aquery, (ares_status_t)status, NULL); + } else { next_lookup(aquery); + } } -static void end_aquery(struct addr_query *aquery, int status, +static void end_aquery(struct addr_query *aquery, ares_status_t status, struct hostent *host) { - aquery->callback(aquery->arg, status, aquery->timeouts, host); - if (host) + aquery->callback(aquery->arg, (int)status, (int)aquery->timeouts, host); + if (host) { ares_free_hostent(host); + } ares_free(aquery); } -static int file_lookup(struct ares_addr *addr, struct hostent **host) +static ares_status_t file_lookup(const struct ares_addr *addr, + struct hostent **host) { - FILE *fp; - int status; - int error; + FILE *fp; + ares_status_t status; + int error; #ifdef WIN32 - char PATH_HOSTS[MAX_PATH]; + char PATH_HOSTS[MAX_PATH]; win_platform platform; PATH_HOSTS[0] = '\0'; @@ -197,103 +193,94 @@ static int file_lookup(struct ares_addr *addr, struct hostent **host) HKEY hkeyHosts; if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, - &hkeyHosts) == ERROR_SUCCESS) - { + &hkeyHosts) == ERROR_SUCCESS) { DWORD dwLength = MAX_PATH; RegQueryValueExA(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, - &dwLength); + &dwLength); ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH); RegCloseKey(hkeyHosts); } - } - else if (platform == WIN_9X) + } else if (platform == WIN_9X) { GetWindowsDirectoryA(PATH_HOSTS, MAX_PATH); - else + } else { return ARES_ENOTFOUND; + } strcat(PATH_HOSTS, WIN_PATH_HOSTS); #elif defined(WATT32) const char *PATH_HOSTS = _w32_GetHostsFile(); - if (!PATH_HOSTS) + 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; - } + 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; - } + } + 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 && + memcmp((*host)->h_addr, &addr->addrV4, sizeof(addr->addrV4)) == 0) { + break; + } else if (addr->family == AF_INET6 && + memcmp((*host)->h_addr, addr->addrV6._S6_un._S6_u8, + sizeof(addr->addrV6)) == 0) { + break; + } + ares_free_hostent(*host); + } fclose(fp); - if (status == ARES_EOF) + if (status == ARES_EOF) { status = ARES_ENOTFOUND; - if (status != ARES_SUCCESS) + } + if (status != ARES_SUCCESS) { *host = NULL; + } return status; } -static void ptr_rr_name(char *name, int name_size, const struct ares_addr *addr) +static void ptr_rr_name(char *name, size_t name_size, + 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; - snprintf(name, name_size, "%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 */ - snprintf(name, name_size, - "%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); - snprintf(name+strlen(name), name_size-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); - } + 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; + snprintf(name, name_size, "%lu.%lu.%lu.%lu.in-addr.arpa", a4, a3, a2, a1); + } else { + const unsigned char *bytes = (const unsigned char *)&addr->addrV6; + /* There are too many arguments to do this in one line using + * minimally C89-compliant compilers */ + snprintf(name, name_size, + "%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); + snprintf(name + ares_strlen(name), name_size - ares_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/lib/ares_gethostbyname.c b/deps/cares/src/lib/ares_gethostbyname.c index 343bd7b73328ad..1c3ecf82e6b223 100644 --- a/deps/cares/src/lib/ares_gethostbyname.c +++ b/deps/cares/src/lib/ares_gethostbyname.c @@ -40,60 +40,58 @@ #include "ares_nameser.h" #ifdef HAVE_STRINGS_H -#include +# include #endif #include "ares.h" #include "ares_inet_net_pton.h" #include "bitncmp.h" #include "ares_platform.h" -#include "ares_nowarn.h" #include "ares_private.h" -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); +static void sort_addresses(const struct hostent *host, + const struct apattern *sortlist, size_t nsort); +static void sort6_addresses(const struct hostent *host, + const struct apattern *sortlist, size_t nsort); +static size_t get_address_index(const struct in_addr *addr, + const struct apattern *sortlist, size_t nsort); +static size_t get6_address_index(const struct ares_in6_addr *addr, + const struct apattern *sortlist, size_t nsort); struct host_query { ares_host_callback callback; - void *arg; - ares_channel channel; + void *arg; + ares_channel channel; }; static void ares_gethostbyname_callback(void *arg, int status, int timeouts, struct ares_addrinfo *result) { - struct hostent *hostent = NULL; + struct hostent *hostent = NULL; struct host_query *ghbn_arg = arg; - if (status == ARES_SUCCESS) - { - status = ares__addrinfo2hostent(result, AF_UNSPEC, &hostent); - } + if (status == ARES_SUCCESS) { + status = (int)ares__addrinfo2hostent(result, AF_UNSPEC, &hostent); + } /* addrinfo2hostent will only return ENODATA if there are no addresses _and_ * no cname/aliases. However, gethostbyname will return ENODATA even if there * is cname/alias data */ if (status == ARES_SUCCESS && hostent && - (!hostent->h_addr_list || !hostent->h_addr_list[0])) - { - status = ARES_ENODATA; - } + (!hostent->h_addr_list || !hostent->h_addr_list[0])) { + status = ARES_ENODATA; + } - if (status == ARES_SUCCESS && ghbn_arg->channel->nsort && hostent) - { - if (hostent->h_addrtype == AF_INET6) - sort6_addresses(hostent, ghbn_arg->channel->sortlist, - ghbn_arg->channel->nsort); - if (hostent->h_addrtype == AF_INET) - sort_addresses(hostent, ghbn_arg->channel->sortlist, - ghbn_arg->channel->nsort); + if (status == ARES_SUCCESS && ghbn_arg->channel->nsort && hostent) { + if (hostent->h_addrtype == AF_INET6) { + sort6_addresses(hostent, ghbn_arg->channel->sortlist, + ghbn_arg->channel->nsort); + } + if (hostent->h_addrtype == AF_INET) { + sort_addresses(hostent, ghbn_arg->channel->sortlist, + ghbn_arg->channel->nsort); } + } ghbn_arg->callback(ghbn_arg->arg, status, timeouts, hostent); @@ -106,170 +104,171 @@ void ares_gethostbyname(ares_channel channel, const char *name, int family, ares_host_callback callback, void *arg) { const struct ares_addrinfo_hints hints = { ARES_AI_CANONNAME, family, 0, 0 }; - struct host_query *ghbn_arg; + struct host_query *ghbn_arg; - if (!callback) + if (!callback) { return; + } ghbn_arg = ares_malloc(sizeof(*ghbn_arg)); - if (!ghbn_arg) - { - callback(arg, ARES_ENOMEM, 0, NULL); - return; - } + if (!ghbn_arg) { + callback(arg, ARES_ENOMEM, 0, NULL); + return; + } - ghbn_arg->callback=callback; - ghbn_arg->arg=arg; - ghbn_arg->channel=channel; + ghbn_arg->callback = callback; + ghbn_arg->arg = arg; + ghbn_arg->channel = channel; ares_getaddrinfo(channel, name, NULL, &hints, ares_gethostbyname_callback, ghbn_arg); } - -static void sort_addresses(struct hostent *host, - const struct apattern *sortlist, int nsort) +static void sort_addresses(const struct hostent *host, + const struct apattern *sortlist, size_t nsort) { - struct in_addr a1, a2; - int i1, i2, ind1, ind2; + struct in_addr a1; + struct in_addr a2; + int i1; + int i2; + size_t ind1; + size_t 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)); + 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) +static size_t get_address_index(const struct in_addr *addr, + const struct apattern *sortlist, size_t 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; - } + size_t 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) +static void sort6_addresses(const struct hostent *host, + const struct apattern *sortlist, size_t nsort) { - struct ares_in6_addr a1, a2; - int i1, i2, ind1, ind2; + struct ares_in6_addr a1; + struct ares_in6_addr a2; + int i1; + int i2; + size_t ind1; + size_t 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)); + 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) +static size_t get6_address_index(const struct ares_in6_addr *addr, + const struct apattern *sortlist, size_t nsort) { - int i; + size_t 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; + 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; } - - -static int file_lookup(const char *name, int family, struct hostent **host); +static ares_status_t file_lookup(const char *name, int family, + struct hostent **host); /* I really have no idea why this is exposed as a public function, but since * it is, we can't kill this legacy function. */ -int ares_gethostbyname_file(ares_channel channel, const char *name, - int family, struct hostent **host) +int ares_gethostbyname_file(ares_channel channel, const char *name, int family, + struct hostent **host) { - int result; + ares_status_t status; /* 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; - } + 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; + status = file_lookup(name, family, host); + if (status != ARES_SUCCESS) { + /* We guarantee a NULL hostent on failure. */ + *host = NULL; + } + return (int)status; } -static int file_lookup(const char *name, int family, struct hostent **host) +static ares_status_t file_lookup(const char *name, int family, + struct hostent **host) { - FILE *fp; - char **alias; - int status; - int error; + FILE *fp; + char **alias; + ares_status_t status; + int error; #ifdef WIN32 - char PATH_HOSTS[MAX_PATH]; + char PATH_HOSTS[MAX_PATH]; win_platform platform; PATH_HOSTS[0] = '\0'; @@ -281,70 +280,70 @@ static int file_lookup(const char *name, int family, struct hostent **host) HKEY hkeyHosts; if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, - &hkeyHosts) == ERROR_SUCCESS) - { + &hkeyHosts) == ERROR_SUCCESS) { DWORD dwLength = MAX_PATH; RegQueryValueExA(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp, - &dwLength); + &dwLength); ExpandEnvironmentStringsA(tmp, PATH_HOSTS, MAX_PATH); RegCloseKey(hkeyHosts); } - } - else if (platform == WIN_9X) + } else if (platform == WIN_9X) { GetWindowsDirectoryA(PATH_HOSTS, MAX_PATH); - else + } else { return ARES_ENOTFOUND; + } strcat(PATH_HOSTS, WIN_PATH_HOSTS); #elif defined(WATT32) const char *PATH_HOSTS = _w32_GetHostsFile(); - if (!PATH_HOSTS) + if (!PATH_HOSTS) { return ARES_ENOTFOUND; + } #endif /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */ - if (ares__is_onion_domain(name)) + if (ares__is_onion_domain(name)) { return ARES_ENOTFOUND; + } 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; - } + 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) + } + 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; - ares_free_hostent(*host); + } } + if (*alias) { + break; + } + ares_free_hostent(*host); + } fclose(fp); - if (status == ARES_EOF) + if (status == ARES_EOF) { status = ARES_ENOTFOUND; - if (status != ARES_SUCCESS) + } + if (status != ARES_SUCCESS) { *host = NULL; + } return status; } - diff --git a/deps/cares/src/lib/ares_getnameinfo.c b/deps/cares/src/lib/ares_getnameinfo.c index 0d97a318bfd082..b9de85e9bd824e 100644 --- a/deps/cares/src/lib/ares_getnameinfo.c +++ b/deps/cares/src/lib/ares_getnameinfo.c @@ -26,8 +26,8 @@ #include "ares_setup.h" #ifdef HAVE_GETSERVBYPORT_R -# if !defined(GETSERVBYPORT_R_ARGS) || \ - (GETSERVBYPORT_R_ARGS < 4) || (GETSERVBYPORT_R_ARGS > 6) +# 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 @@ -45,413 +45,391 @@ #include "ares_nameser.h" #ifdef HAVE_NET_IF_H -#include +# include #endif #include "ares.h" #include "ares_ipv6.h" -#include "ares_nowarn.h" #include "ares_private.h" struct nameinfo_query { ares_nameinfo_callback callback; - void *arg; + void *arg; + union { - struct sockaddr_in addr4; + struct sockaddr_in addr4; struct sockaddr_in6 addr6; } addr; - int family; - int flags; - int timeouts; + + int family; + unsigned int flags; + size_t timeouts; }; #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID -#define IPBUFSIZ \ - (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") + IF_NAMESIZE) +# 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")) +# 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); +static void nameinfo_callback(void *arg, int status, int timeouts, + struct hostent *host); +static char *lookup_service(unsigned short port, unsigned 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); +static void append_scopeid(const struct sockaddr_in6 *addr6, + unsigned int scopeid, char *buf, size_t buflen); #endif STATIC_TESTABLE char *ares_striendstr(const char *s1, const char *s2); void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa, - ares_socklen_t salen, - int flags, ares_nameinfo_callback callback, void *arg) + ares_socklen_t salen, int flags_int, + ares_nameinfo_callback callback, void *arg) { - struct sockaddr_in *addr = NULL; - struct sockaddr_in6 *addr6 = NULL; - struct nameinfo_query *niquery; - unsigned int port = 0; + const struct sockaddr_in *addr = NULL; + struct sockaddr_in6 *addr6 = NULL; + struct nameinfo_query *niquery; + unsigned short port = 0; + unsigned int flags = (unsigned int)flags_int; /* Validate socket address family and length */ - if ((sa->sa_family == AF_INET) && - (salen == sizeof(struct sockaddr_in))) - { - addr = CARES_INADDR_CAST(struct sockaddr_in *, sa); - port = addr->sin_port; - } - else if ((sa->sa_family == AF_INET6) && - (salen == sizeof(struct sockaddr_in6))) - { - addr6 = CARES_INADDR_CAST(struct sockaddr_in6 *, sa); - port = addr6->sin6_port; - } - else - { - callback(arg, ARES_ENOTIMP, 0, NULL, NULL); - return; - } + if ((sa->sa_family == AF_INET) && (salen == sizeof(struct sockaddr_in))) { + addr = CARES_INADDR_CAST(struct sockaddr_in *, sa); + port = addr->sin_port; + } else if ((sa->sa_family == AF_INET6) && + (salen == sizeof(struct sockaddr_in6))) { + addr6 = CARES_INADDR_CAST(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)) + 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; + if ((flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST)) { + char buf[33]; + char *service; - service = lookup_service((unsigned short)(port & 0xffff), - flags, buf, sizeof(buf)); - callback(arg, ARES_SUCCESS, 0, NULL, service); - return; - } + 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 */ + 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)); + 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; + } else { + ares_inet_ntop(AF_INET, &addr->sin_addr, ipbuf, IPBUFSIZ); } + /* They also want a service */ + if (flags & ARES_NI_LOOKUPSERVICE) { + service = lookup_service((unsigned short)(port & 0xffff), flags, srvbuf, + sizeof(srvbuf)); + } + callback(arg, ARES_SUCCESS, 0, ipbuf, service); + return; + } /* This is where a DNS lookup becomes necessary */ - else - { - niquery = ares_malloc(sizeof(struct nameinfo_query)); - if (!niquery) - { - callback(arg, ARES_ENOMEM, 0, NULL, NULL); - return; - } - niquery->callback = callback; - niquery->arg = arg; - niquery->flags = flags; - niquery->timeouts = 0; - if (sa->sa_family == AF_INET) - { - niquery->family = AF_INET; - memcpy(&niquery->addr.addr4, addr, sizeof(niquery->addr.addr4)); - ares_gethostbyaddr(channel, &addr->sin_addr, - sizeof(struct in_addr), AF_INET, - nameinfo_callback, niquery); - } - else - { - niquery->family = AF_INET6; - memcpy(&niquery->addr.addr6, addr6, sizeof(niquery->addr.addr6)); - ares_gethostbyaddr(channel, &addr6->sin6_addr, - sizeof(struct ares_in6_addr), AF_INET6, - nameinfo_callback, niquery); - } + else { + niquery = ares_malloc(sizeof(struct nameinfo_query)); + if (!niquery) { + callback(arg, ARES_ENOMEM, 0, NULL, NULL); + return; + } + niquery->callback = callback; + niquery->arg = arg; + niquery->flags = flags; + niquery->timeouts = 0; + if (sa->sa_family == AF_INET) { + niquery->family = AF_INET; + memcpy(&niquery->addr.addr4, addr, sizeof(niquery->addr.addr4)); + ares_gethostbyaddr(channel, &addr->sin_addr, sizeof(struct in_addr), + AF_INET, nameinfo_callback, niquery); + } else { + niquery->family = AF_INET6; + memcpy(&niquery->addr.addr6, addr6, sizeof(niquery->addr.addr6)); + ares_gethostbyaddr(channel, &addr6->sin6_addr, + sizeof(struct ares_in6_addr), AF_INET6, + nameinfo_callback, niquery); } } + } } static void nameinfo_callback(void *arg, int status, int timeouts, struct hostent *host) { - struct nameinfo_query *niquery = (struct nameinfo_query *) arg; - char srvbuf[33]; - char *service = NULL; - - niquery->timeouts += timeouts; - if (status == ARES_SUCCESS) - { - /* They want a service too */ - if (niquery->flags & ARES_NI_LOOKUPSERVICE) - { - if (niquery->family == AF_INET) - service = lookup_service(niquery->addr.addr4.sin_port, - niquery->flags, srvbuf, sizeof(srvbuf)); - else - service = lookup_service(niquery->addr.addr6.sin6_port, - niquery->flags, srvbuf, sizeof(srvbuf)); - } - /* NOFQDN means we have to strip off the domain name portion. We do - this by determining our own domain name, then searching the string - for this domain name and removing it. - */ + struct nameinfo_query *niquery = (struct nameinfo_query *)arg; + char srvbuf[33]; + char *service = NULL; + + niquery->timeouts += (size_t)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; - } + if (niquery->flags & ARES_NI_NOFQDN) { + char buf[255]; + const char *domain; + gethostname(buf, 255); + if ((domain = strchr(buf, '.')) != NULL) { + char *end = ares_striendstr(host->h_name, domain); + if (end) { + *end = 0; } -#endif - niquery->callback(niquery->arg, ARES_SUCCESS, niquery->timeouts, - (char *)(host->h_name), - service); - ares_free(niquery); - return; + } } +#endif + niquery->callback(niquery->arg, ARES_SUCCESS, (int)niquery->timeouts, + host->h_name, service); + ares_free(niquery); + return; + } /* We couldn't find the host, but it's OK, we can use the IP */ - else if (status == ARES_ENOTFOUND && !(niquery->flags & ARES_NI_NAMEREQD)) - { - char ipbuf[IPBUFSIZ]; - if (niquery->family == AF_INET) - ares_inet_ntop(AF_INET, &niquery->addr.addr4.sin_addr, ipbuf, - IPBUFSIZ); - else - { - ares_inet_ntop(AF_INET6, &niquery->addr.addr6.sin6_addr, ipbuf, - IPBUFSIZ); + 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)); + append_scopeid(&niquery->addr.addr6, niquery->flags, ipbuf, + sizeof(ipbuf)); #endif - } - /* They want a service too */ - if (niquery->flags & ARES_NI_LOOKUPSERVICE) - { - if (niquery->family == AF_INET) - service = lookup_service(niquery->addr.addr4.sin_port, - niquery->flags, srvbuf, sizeof(srvbuf)); - else - service = lookup_service(niquery->addr.addr6.sin6_port, - niquery->flags, srvbuf, sizeof(srvbuf)); - } - niquery->callback(niquery->arg, ARES_SUCCESS, niquery->timeouts, ipbuf, - service); - ares_free(niquery); - return; } - niquery->callback(niquery->arg, status, niquery->timeouts, NULL, NULL); + /* 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, (int)niquery->timeouts, ipbuf, + service); + ares_free(niquery); + return; + } + niquery->callback(niquery->arg, status, (int)niquery->timeouts, NULL, NULL); ares_free(niquery); } -static char *lookup_service(unsigned short port, int flags, - char *buf, size_t buflen) +static char *lookup_service(unsigned short port, unsigned int flags, char *buf, + size_t buflen) { - const char *proto; + const char *proto; struct servent *sep; #ifdef HAVE_GETSERVBYPORT_R struct servent se; #endif - char tmpbuf[4096]; - char *name; - size_t name_len; + char tmpbuf[4096]; + const char *name; + size_t name_len; - if (port) - { - if (flags & ARES_NI_NUMERICSERV) - sep = NULL; - else - { - if (flags & ARES_NI_UDP) - proto = "udp"; - else if (flags & ARES_NI_SCTP) - proto = "sctp"; - else if (flags & ARES_NI_DCCP) - proto = "dccp"; - else - proto = "tcp"; + if (port) { + if (flags & ARES_NI_NUMERICSERV) { + sep = NULL; + } else { + if (flags & ARES_NI_UDP) { + proto = "udp"; + } else if (flags & ARES_NI_SCTP) { + proto = "sctp"; + } else if (flags & ARES_NI_DCCP) { + proto = "dccp"; + } else { + proto = "tcp"; + } #ifdef HAVE_GETSERVBYPORT_R - memset(&se, 0, sizeof(se)); - sep = &se; - memset(tmpbuf, 0, sizeof(tmpbuf)); -#if GETSERVBYPORT_R_ARGS == 6 - if (getservbyport_r(port, proto, &se, (void *)tmpbuf, - sizeof(tmpbuf), &sep) != 0) - sep = NULL; /* LCOV_EXCL_LINE: buffer large so this never fails */ -#elif GETSERVBYPORT_R_ARGS == 5 - sep = getservbyport_r(port, proto, &se, (void *)tmpbuf, - sizeof(tmpbuf)); -#elif GETSERVBYPORT_R_ARGS == 4 - if (getservbyport_r(port, proto, &se, (void *)tmpbuf) != 0) - sep = NULL; -#else - /* Lets just hope the OS uses TLS! */ - sep = getservbyport(port, proto); -#endif -#else - /* Lets just hope the OS uses TLS! */ -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) - sep = getservbyport(port, (char*)proto); + memset(&se, 0, sizeof(se)); + sep = &se; + memset(tmpbuf, 0, sizeof(tmpbuf)); +# if GETSERVBYPORT_R_ARGS == 6 + if (getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf), + &sep) != 0) { + sep = NULL; /* LCOV_EXCL_LINE: buffer large so this never fails */ + } +# elif GETSERVBYPORT_R_ARGS == 5 + sep = getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf)); +# elif GETSERVBYPORT_R_ARGS == 4 + if (getservbyport_r(port, proto, &se, (void *)tmpbuf) != 0) { + sep = NULL; + } +# else + /* Lets just hope the OS uses TLS! */ + sep = getservbyport(port, proto); +# endif #else - sep = getservbyport(port, proto); -#endif + /* Lets just hope the OS uses TLS! */ +# if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) + sep = getservbyport(port, (char *)proto); +# else + sep = getservbyport(port, proto); +# endif #endif - } - if (sep && sep->s_name) - { - /* get service name */ - name = sep->s_name; - } - else - { - /* get port as a string */ - snprintf(tmpbuf, sizeof(tmpbuf), "%u", (unsigned int)ntohs(port)); - name = tmpbuf; - } - name_len = strlen(name); - if (name_len < buflen) - /* return it if buffer big enough */ - memcpy(buf, name, name_len + 1); - else - /* avoid reusing previous one */ - buf[0] = '\0'; /* LCOV_EXCL_LINE: no real service names are too big */ - return buf; } + if (sep && sep->s_name) { + /* get service name */ + name = sep->s_name; + } else { + /* get port as a string */ + snprintf(tmpbuf, sizeof(tmpbuf), "%u", (unsigned int)ntohs(port)); + name = tmpbuf; + } + name_len = ares_strlen(name); + if (name_len < buflen) { + /* return it if buffer big enough */ + memcpy(buf, name, name_len + 1); + } else { + /* avoid reusing previous one */ + buf[0] = '\0'; /* LCOV_EXCL_LINE: no real service names are too big */ + } + return buf; + } buf[0] = '\0'; return NULL; } #ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID -static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int flags, +static void append_scopeid(const struct sockaddr_in6 *addr6, unsigned int flags, char *buf, size_t buflen) { -#ifdef HAVE_IF_INDEXTONAME - int is_ll, is_mcll; -#endif - char tmpbuf[IF_NAMESIZE + 2]; +# ifdef HAVE_IF_INDEXTONAME + int is_ll; + int is_mcll; +# endif + char tmpbuf[IF_NAMESIZE + 2]; size_t bufl; - int is_scope_long = sizeof(addr6->sin6_scope_id) > sizeof(unsigned int); + int is_scope_long = sizeof(addr6->sin6_scope_id) > sizeof(unsigned int); tmpbuf[0] = '%'; -#ifdef HAVE_IF_INDEXTONAME - is_ll = IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr); +# ifdef HAVE_IF_INDEXTONAME + is_ll = IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr); is_mcll = IN6_IS_ADDR_MC_LINKLOCAL(&addr6->sin6_addr); - if ((flags & ARES_NI_NUMERICSCOPE) || - (!is_ll && !is_mcll)) - { - if (is_scope_long) - { - snprintf(&tmpbuf[1], sizeof(tmpbuf)-1, "%lu", (unsigned long)addr6->sin6_scope_id); - } - else - { - snprintf(&tmpbuf[1], sizeof(tmpbuf)-1, "%u", (unsigned int)addr6->sin6_scope_id); - } - } - else - { - if (if_indextoname(addr6->sin6_scope_id, &tmpbuf[1]) == NULL) - { - if (is_scope_long) - { - snprintf(&tmpbuf[1], sizeof(tmpbuf)-1, "%lu", (unsigned long)addr6->sin6_scope_id); - } - else - { - snprintf(&tmpbuf[1], sizeof(tmpbuf)-1, "%u", (unsigned int)addr6->sin6_scope_id); - } - } + if ((flags & ARES_NI_NUMERICSCOPE) || (!is_ll && !is_mcll)) { + if (is_scope_long) { + snprintf(&tmpbuf[1], sizeof(tmpbuf) - 1, "%lu", + (unsigned long)addr6->sin6_scope_id); + } else { + snprintf(&tmpbuf[1], sizeof(tmpbuf) - 1, "%u", addr6->sin6_scope_id); } -#else - if (is_scope_long) - { - snprintf(&tmpbuf[1], sizeof(tmpbuf)-1, "%lu", (unsigned long)addr6->sin6_scope_id); - } - else - { - snprintf(&tmpbuf[1], sizeof(tmpbuf)-1, "%u", (unsigned int)addr6->sin6_scope_id); + } else { + if (if_indextoname(addr6->sin6_scope_id, &tmpbuf[1]) == NULL) { + if (is_scope_long) { + snprintf(&tmpbuf[1], sizeof(tmpbuf) - 1, "%lu", + (unsigned long)addr6->sin6_scope_id); + } else { + snprintf(&tmpbuf[1], sizeof(tmpbuf) - 1, "%u", addr6->sin6_scope_id); + } } - (void) flags; -#endif + } +# else + if (is_scope_long) { + snprintf(&tmpbuf[1], sizeof(tmpbuf) - 1, "%lu", + (unsigned long)addr6->sin6_scope_id); + } else { + snprintf(&tmpbuf[1], sizeof(tmpbuf) - 1, "%u", + (unsigned int)addr6->sin6_scope_id); + } + (void)flags; +# endif tmpbuf[IF_NAMESIZE + 1] = '\0'; - bufl = strlen(buf); + bufl = ares_strlen(buf); - if(bufl + strlen(tmpbuf) < buflen) + if (bufl + ares_strlen(tmpbuf) < buflen) { /* only append the scopeid string if it fits in the target buffer */ - strcpy(&buf[bufl], tmpbuf); + ares_strcpy(&buf[bufl], tmpbuf, buflen - bufl); + } } #endif /* Determines if s1 ends with the string in s2 (case-insensitive) */ STATIC_TESTABLE char *ares_striendstr(const char *s1, const char *s2) { - const char *c1, *c2, *c1_begin; - int lo1, lo2; - size_t s1_len = strlen(s1), s2_len = strlen(s2); + const char *c1; + const char *c2; + const char *c1_begin; + int lo1; + int lo2; + size_t s1_len = ares_strlen(s1); + size_t s2_len = ares_strlen(s2); + + if (s1 == NULL || s2 == NULL) { + return NULL; + } /* If the substr is longer than the full str, it can't match */ - if (s2_len > s1_len) + 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++; - } + c1_begin = s1 + s1_len - s2_len; + c1 = c1_begin; + c2 = s2; + while (c2 < s2 + s2_len) { + lo1 = TOLOWER(*c1); + lo2 = TOLOWER(*c2); + if (lo1 != lo2) { + return NULL; + } else { + c1++; + c2++; } - return (char *)c1_begin; + } + /* Cast off const */ + return (char *)((size_t)c1_begin); } -int ares__is_onion_domain(const char *name) +ares_bool_t ares__is_onion_domain(const char *name) { - if (ares_striendstr(name, ".onion")) - return 1; + if (ares_striendstr(name, ".onion")) { + return ARES_TRUE; + } - if (ares_striendstr(name, ".onion.")) - return 1; + if (ares_striendstr(name, ".onion.")) { + return ARES_TRUE; + } - return 0; + return ARES_FALSE; } diff --git a/deps/cares/src/lib/ares_getsock.c b/deps/cares/src/lib/ares_getsock.c index 48c9076a668e3e..2cdfdb7b1501a9 100644 --- a/deps/cares/src/lib/ares_getsock.c +++ b/deps/cares/src/lib/ares_getsock.c @@ -29,37 +29,40 @@ #include "ares.h" #include "ares_private.h" -int ares_getsock(ares_channel channel, - ares_socket_t *socks, +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; + size_t i; + size_t sockindex = 0; + unsigned int bitmap = 0; + unsigned int setbits = 0xffffffff; /* Are there any active queries? */ - size_t active_queries = ares__llist_len(channel->all_queries); + size_t active_queries = ares__llist_len(channel->all_queries); + + if (numsocks <= 0) { + return 0; + } for (i = 0; i < channel->nservers; i++) { ares__llist_node_t *node; server = &channel->servers[i]; - for (node = ares__llist_node_first(server->connections); - node != NULL; + for (node = ares__llist_node_first(server->connections); node != NULL; node = ares__llist_node_next(node)) { + const struct server_connection *conn = ares__llist_node_val(node); - struct server_connection *conn = ares__llist_node_val(node); - - if (sockindex >= numsocks || sockindex >= ARES_GETSOCK_MAXNUM) + if (sockindex >= (size_t)numsocks || sockindex >= ARES_GETSOCK_MAXNUM) { break; + } /* We only need to register interest in UDP sockets if we have * outstanding queries. */ - if (!active_queries && !conn->is_tcp) + if (!active_queries && !conn->is_tcp) { continue; + } socks[sockindex] = conn->fd; @@ -75,5 +78,5 @@ int ares_getsock(ares_channel channel, sockindex++; } } - return bitmap; + return (int)bitmap; } diff --git a/deps/cares/src/lib/ares_inet_net_pton.h b/deps/cares/src/lib/ares_inet_net_pton.h index 179d36d972efb7..0a52855bd8c966 100644 --- a/deps/cares/src/lib/ares_inet_net_pton.h +++ b/deps/cares/src/lib/ares_inet_net_pton.h @@ -27,7 +27,7 @@ #define HEADER_CARES_INET_NET_PTON_H #ifdef HAVE_INET_NET_PTON -#define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z) +# 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 diff --git a/deps/cares/src/lib/ares_init.c b/deps/cares/src/lib/ares_init.c index 4a671e6ae4ea1f..17656ce898fd00 100644 --- a/deps/cares/src/lib/ares_init.c +++ b/deps/cares/src/lib/ares_init.c @@ -28,33 +28,33 @@ #include "ares_setup.h" #ifdef HAVE_SYS_PARAM_H -#include +# include #endif #ifdef HAVE_NETINET_IN_H -#include +# include #endif #ifdef HAVE_NETDB_H -#include +# include #endif #ifdef HAVE_ARPA_INET_H -#include +# include #endif #include "ares_nameser.h" #if defined(ANDROID) || defined(__ANDROID__) -#include -#include "ares_android.h" +# include +# include "ares_android.h" /* From the Bionic sources */ -#define DNS_PROP_NAME_PREFIX "net.dns" -#define MAX_DNS_PROPERTIES 8 +# define DNS_PROP_NAME_PREFIX "net.dns" +# define MAX_DNS_PROPERTIES 8 #endif #if defined(CARES_USE_LIBRESOLV) -#include +# include #endif #if defined(USE_WINSOCK) @@ -63,50 +63,47 @@ #include "ares.h" #include "ares_inet_net_pton.h" -#include "ares_nowarn.h" #include "ares_platform.h" #include "ares_private.h" #ifdef WATT32 -#undef WIN32 /* Redefined in MingW/MSVC headers */ +# 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); +static ares_status_t init_by_options(ares_channel channel, + const struct ares_options *options, + int optmask); +static ares_status_t init_by_environment(ares_channel channel); +static ares_status_t init_by_resolv_conf(ares_channel channel); +static ares_status_t init_by_defaults(ares_channel channel); #ifndef WATT32 -static int config_nameserver(struct server_state **servers, int *nservers, - const char *str); +static ares_status_t config_nameserver(struct server_state **servers, + size_t *nservers, const 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 config_sortlist(struct apattern **sortlist, int *nsort, - const char *str); -static int sortlist_alloc(struct apattern **sortlist, int *nsort, - struct apattern *pat); -static int ip_addr(const char *s, ares_ssize_t len, struct in_addr *addr); +static ares_status_t set_search(ares_channel channel, const char *str); +static ares_status_t set_options(ares_channel channel, const char *str); +static const char *try_option(const char *p, const char *q, const char *opt); + +static ares_status_t config_sortlist(struct apattern **sortlist, size_t *nsort, + const char *str); +static ares_bool_t sortlist_alloc(struct apattern **sortlist, size_t *nsort, + struct apattern *pat); +static int ip_addr(const char *s, ares_ssize_t len, struct in_addr *addr); static void natural_mask(struct apattern *pat); -#if !defined(WIN32) && !defined(WATT32) && \ - !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) -static int config_domain(ares_channel channel, char *str); -static int config_lookup(ares_channel channel, const char *str, - const char *bindch, const char *altbindch, - const char *filech); -static char *try_config(char *s, const char *opt, char scc); +#if !defined(WIN32) && !defined(WATT32) && !defined(ANDROID) && \ + !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) +static ares_status_t config_domain(ares_channel channel, char *str); +static ares_status_t config_lookup(ares_channel channel, const char *str, + const char *bindch, const char *altbindch, + const char *filech); +static char *try_config(char *s, const char *opt, char scc); #endif -#define ARES_CONFIG_CHECK(x) (x->lookups && x->nsort > -1 && \ - x->nservers > -1 && \ - x->ndomains > -1 && \ - x->ndots > -1 && x->timeout > -1 && \ - x->tries > -1) +#define ARES_CONFIG_CHECK(x) \ + (x->lookups && x->nservers > 0 && x->ndots > 0 && x->timeout > 0 && \ + x->tries > 0) int ares_init(ares_channel *channelptr) { @@ -118,15 +115,19 @@ static int ares_query_timeout_cmp_cb(const void *arg1, const void *arg2) const struct query *q1 = arg1; const struct query *q2 = arg2; - if (q1->timeout.tv_sec > q2->timeout.tv_sec) + if (q1->timeout.tv_sec > q2->timeout.tv_sec) { return 1; - if (q1->timeout.tv_sec < q2->timeout.tv_sec) + } + if (q1->timeout.tv_sec < q2->timeout.tv_sec) { return -1; + } - if (q1->timeout.tv_usec > q2->timeout.tv_usec) + if (q1->timeout.tv_usec > q2->timeout.tv_usec) { return 1; - if (q1->timeout.tv_usec < q2->timeout.tv_usec) + } + if (q1->timeout.tv_usec < q2->timeout.tv_usec) { return -1; + } return 0; } @@ -134,11 +135,12 @@ static int ares_query_timeout_cmp_cb(const void *arg1, const void *arg2) int ares_init_options(ares_channel *channelptr, struct ares_options *options, int optmask) { - ares_channel channel; - int status = ARES_SUCCESS; + ares_channel channel; + ares_status_t status = ARES_SUCCESS; - if (ares_library_initialized() != ARES_SUCCESS) - return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + if (ares_library_initialized() != ARES_SUCCESS) { + return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + } channel = ares_malloc(sizeof(*channel)); if (!channel) { @@ -148,30 +150,13 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options, memset(channel, 0, sizeof(*channel)); - /* Set everything to distinguished values so we know they haven't - * been set yet. - */ - channel->flags = -1; - channel->timeout = -1; - channel->tries = -1; - channel->ndots = -1; - channel->rotate = -1; - channel->udp_port = -1; - channel->tcp_port = -1; - channel->ednspsz = -1; - channel->socket_send_buffer_size = -1; - channel->socket_receive_buffer_size = -1; - channel->nservers = -1; - channel->ndomains = -1; - channel->nsort = -1; - /* Generate random key */ channel->rand_state = ares__init_rand_state(); if (channel->rand_state == NULL) { status = ARES_ENOMEM; DEBUGF(fprintf(stderr, "Error: init_id_key failed: %s\n", - ares_strerror(status))); + ares_strerror(status))); goto done; } @@ -188,9 +173,8 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options, goto done; } - channel->queries_by_timeout = ares__slist_create(channel->rand_state, - ares_query_timeout_cmp_cb, - NULL); + channel->queries_by_timeout = + ares__slist_create(channel->rand_state, ares_query_timeout_cmp_cb, NULL); if (channel->queries_by_timeout == NULL) { status = ARES_ENOMEM; goto done; @@ -210,18 +194,21 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options, if (status != ARES_SUCCESS) { DEBUGF(fprintf(stderr, "Error: init_by_options failed: %s\n", ares_strerror(status))); - /* If we fail to apply user-specified options, fail the whole init process */ + /* If we fail to apply user-specified options, fail the whole init process + */ goto done; } status = init_by_environment(channel); - if (status != ARES_SUCCESS) + 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) + if (status != ARES_SUCCESS) { DEBUGF(fprintf(stderr, "Error: init_by_resolv_conf failed: %s\n", ares_strerror(status))); + } } /* @@ -229,13 +216,15 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options, * useful behavior for things that we missed. */ status = init_by_defaults(channel); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n", ares_strerror(status))); + } /* Trim to one server if ARES_FLAG_PRIMARY is set. */ - if ((channel->flags & ARES_FLAG_PRIMARY) && channel->nservers > 1) + if ((channel->flags & ARES_FLAG_PRIMARY) && channel->nservers > 1) { channel->nservers = 1; + } status = ares__init_servers_state(channel); if (status != ARES_SUCCESS) { @@ -243,32 +232,37 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options, } done: - if (status != ARES_SUCCESS) - { - /* Something failed; clean up memory we may have allocated. */ - if (channel->servers) { - ares_free(channel->servers); - } - if (channel->ndomains != -1) - ares__strsplit_free(channel->domains, channel->ndomains); - if (channel->sortlist) - ares_free(channel->sortlist); - if(channel->lookups) - ares_free(channel->lookups); - if(channel->resolvconf_path) - ares_free(channel->resolvconf_path); - if(channel->hosts_path) - ares_free(channel->hosts_path); - if (channel->rand_state) - ares__destroy_rand_state(channel->rand_state); - - ares__htable_stvp_destroy(channel->queries_by_qid); - ares__llist_destroy(channel->all_queries); - ares__slist_destroy(channel->queries_by_timeout); - ares__htable_asvp_destroy(channel->connnode_by_socket); - ares_free(channel); - return status; + if (status != ARES_SUCCESS) { + /* Something failed; clean up memory we may have allocated. */ + if (channel->servers) { + ares_free(channel->servers); + } + if (channel->ndomains > 0) { + ares__strsplit_free(channel->domains, channel->ndomains); + } + if (channel->sortlist) { + ares_free(channel->sortlist); } + if (channel->lookups) { + ares_free(channel->lookups); + } + if (channel->resolvconf_path) { + ares_free(channel->resolvconf_path); + } + if (channel->hosts_path) { + ares_free(channel->hosts_path); + } + if (channel->rand_state) { + ares__destroy_rand_state(channel->rand_state); + } + + ares__htable_stvp_destroy(channel->queries_by_qid); + ares__llist_destroy(channel->all_queries); + ares__slist_destroy(channel->queries_by_timeout); + ares__htable_asvp_destroy(channel->connnode_by_socket); + ares_free(channel); + return (int)status; + } *channelptr = channel; return ARES_SUCCESS; @@ -278,31 +272,32 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options, new channel handle */ int ares_dup(ares_channel *dest, ares_channel src) { - struct ares_options opts; + struct ares_options opts; struct ares_addr_port_node *servers; - int non_v4_default_port = 0; - int i, rc; - int optmask; + int non_v4_default_port = 0; + size_t i; + ares_status_t 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) - { + rc = (ares_status_t)ares_save_options(src, &opts, &optmask); + if (rc) { ares_destroy_options(&opts); - return rc; + return (int)rc; } /* Then create the new channel with those options */ - rc = ares_init_options(dest, &opts, optmask); + rc = (ares_status_t)ares_init_options(dest, &opts, optmask); /* destroy the options copy to not leak any memory */ ares_destroy_options(&opts); - if(rc) - return rc; + if (rc) { + return (int)rc; + } /* Now clone the options that ares_save_options() doesn't support. */ (*dest)->sock_create_cb = src->sock_create_cb; @@ -312,34 +307,34 @@ int ares_dup(ares_channel *dest, ares_channel src) (*dest)->sock_funcs = src->sock_funcs; (*dest)->sock_func_cb_data = src->sock_func_cb_data; - strncpy((*dest)->local_dev_name, src->local_dev_name, - sizeof((*dest)->local_dev_name)); + ares_strcpy((*dest)->local_dev_name, src->local_dev_name, + sizeof((*dest)->local_dev_name)); (*dest)->local_ip4 = src->local_ip4; memcpy((*dest)->local_ip6, src->local_ip6, sizeof(src->local_ip6)); - /* Full name server cloning required if there is a non-IPv4, or non-default port, nameserver */ - for (i = 0; i < src->nservers; i++) - { - if ((src->servers[i].addr.family != AF_INET) || - (src->servers[i].addr.udp_port != 0) || - (src->servers[i].addr.tcp_port != 0)) { - non_v4_default_port++; - break; - } + /* Full name server cloning required if there is a non-IPv4, or non-default + * port, nameserver */ + for (i = 0; i < src->nservers; i++) { + if ((src->servers[i].addr.family != AF_INET) || + (src->servers[i].addr.udp_port != 0) || + (src->servers[i].addr.tcp_port != 0)) { + non_v4_default_port++; + break; } + } if (non_v4_default_port) { - rc = ares_get_servers_ports(src, &servers); + rc = (ares_status_t)ares_get_servers_ports(src, &servers); if (rc != ARES_SUCCESS) { ares_destroy(*dest); *dest = NULL; - return rc; + return (int)rc; } - rc = ares_set_servers_ports(*dest, servers); + rc = (ares_status_t)ares_set_servers_ports(*dest, servers); ares_free_data(servers); if (rc != ARES_SUCCESS) { ares_destroy(*dest); *dest = NULL; - return rc; + return (int)rc; } } @@ -350,275 +345,304 @@ int ares_dup(ares_channel *dest, ares_channel src) int ares_save_options(ares_channel channel, struct ares_options *options, int *optmask) { - int i, j; - int ipv4_nservers = 0; + size_t i; + size_t j; + size_t ipv4_nservers = 0; /* Zero everything out */ memset(options, 0, sizeof(struct ares_options)); - if (!ARES_CONFIG_CHECK(channel)) + if (!ARES_CONFIG_CHECK(channel)) { return ARES_ENODATA; + } /* Traditionally the optmask wasn't saved in the channel struct so it was recreated here. ROTATE is the first option that has no struct field of its own in the public config struct */ - (*optmask) = (ARES_OPT_FLAGS|ARES_OPT_TRIES|ARES_OPT_NDOTS| - ARES_OPT_UDP_PORT|ARES_OPT_TCP_PORT|ARES_OPT_SOCK_STATE_CB| - ARES_OPT_SERVERS|ARES_OPT_DOMAINS|ARES_OPT_LOOKUPS| - ARES_OPT_SORTLIST|ARES_OPT_TIMEOUTMS); + (*optmask) = (ARES_OPT_FLAGS | ARES_OPT_TRIES | ARES_OPT_NDOTS | + ARES_OPT_UDP_PORT | ARES_OPT_TCP_PORT | ARES_OPT_SOCK_STATE_CB | + ARES_OPT_SERVERS | ARES_OPT_DOMAINS | ARES_OPT_LOOKUPS | + ARES_OPT_SORTLIST | ARES_OPT_TIMEOUTMS); (*optmask) |= (channel->rotate ? ARES_OPT_ROTATE : ARES_OPT_NOROTATE); - if (channel->resolvconf_path) + if (channel->resolvconf_path) { (*optmask) |= ARES_OPT_RESOLVCONF; + } - if (channel->hosts_path) + if (channel->hosts_path) { (*optmask) |= ARES_OPT_HOSTS_FILE; + } /* Copy easy stuff */ - options->flags = channel->flags; + options->flags = (int)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->timeout = (int)channel->timeout; + options->tries = (int)channel->tries; + options->ndots = (int)channel->ndots; + options->udp_port = ntohs(channel->udp_port); + options->tcp_port = ntohs(channel->tcp_port); + options->sock_state_cb = channel->sock_state_cb; options->sock_state_cb_data = channel->sock_state_cb_data; /* Copy IPv4 servers that use the default port */ if (channel->nservers) { - for (i = 0; i < channel->nservers; i++) - { + for (i = 0; i < channel->nservers; i++) { if ((channel->servers[i].addr.family == AF_INET) && (channel->servers[i].addr.udp_port == 0) && - (channel->servers[i].addr.tcp_port == 0)) + (channel->servers[i].addr.tcp_port == 0)) { ipv4_nservers++; + } } if (ipv4_nservers) { options->servers = ares_malloc(ipv4_nservers * sizeof(struct in_addr)); - if (!options->servers) + if (!options->servers) { return ARES_ENOMEM; + } - for (i = j = 0; i < channel->nservers; i++) - { + for (i = j = 0; i < channel->nservers; i++) { if ((channel->servers[i].addr.family == AF_INET) && (channel->servers[i].addr.udp_port == 0) && - (channel->servers[i].addr.tcp_port == 0)) - memcpy(&options->servers[j++], - &channel->servers[i].addr.addrV4, + (channel->servers[i].addr.tcp_port == 0)) { + memcpy(&options->servers[j++], &channel->servers[i].addr.addrV4, sizeof(channel->servers[i].addr.addrV4)); + } } } } - options->nservers = ipv4_nservers; + options->nservers = (int)ipv4_nservers; /* copy domains */ if (channel->ndomains) { options->domains = ares_malloc(channel->ndomains * sizeof(char *)); - if (!options->domains) + if (!options->domains) { return ARES_ENOMEM; + } - for (i = 0; i < channel->ndomains; i++) - { - options->ndomains = i; + for (i = 0; i < channel->ndomains; i++) { options->domains[i] = ares_strdup(channel->domains[i]); - if (!options->domains[i]) + if (!options->domains[i]) { + options->ndomains = (int)i; return ARES_ENOMEM; + } } } - options->ndomains = channel->ndomains; + options->ndomains = (int)channel->ndomains; /* copy lookups */ if (channel->lookups) { options->lookups = ares_strdup(channel->lookups); - if (!options->lookups && channel->lookups) + if (!options->lookups && channel->lookups) { return ARES_ENOMEM; + } } /* copy sortlist */ if (channel->nsort) { options->sortlist = ares_malloc(channel->nsort * sizeof(struct apattern)); - if (!options->sortlist) + if (!options->sortlist) { return ARES_ENOMEM; - for (i = 0; i < channel->nsort; i++) + } + for (i = 0; i < channel->nsort; i++) { options->sortlist[i] = channel->sortlist[i]; + } } - options->nsort = channel->nsort; + options->nsort = (int)channel->nsort; /* copy path for resolv.conf file */ if (channel->resolvconf_path) { options->resolvconf_path = ares_strdup(channel->resolvconf_path); - if (!options->resolvconf_path) + if (!options->resolvconf_path) { return ARES_ENOMEM; + } } /* copy path for hosts file */ if (channel->hosts_path) { options->hosts_path = ares_strdup(channel->hosts_path); - if (!options->hosts_path) + if (!options->hosts_path) { return ARES_ENOMEM; + } } if (channel->udp_max_queries > 0) { - (*optmask) |= ARES_OPT_UDP_MAX_QUERIES; - options->udp_max_queries = channel->udp_max_queries; + (*optmask) |= ARES_OPT_UDP_MAX_QUERIES; + options->udp_max_queries = (int)channel->udp_max_queries; } return ARES_SUCCESS; } -static int init_by_options(ares_channel channel, - const struct ares_options *options, - int optmask) +static ares_status_t init_by_options(ares_channel channel, + const struct ares_options *options, + int optmask) { - int i; + size_t i; /* Easy stuff. */ - if ((optmask & ARES_OPT_FLAGS) && channel->flags == -1) - channel->flags = options->flags; - if ((optmask & ARES_OPT_TIMEOUTMS) && channel->timeout == -1) - channel->timeout = options->timeout; - else if ((optmask & ARES_OPT_TIMEOUT) && channel->timeout == -1) - channel->timeout = options->timeout * 1000; - if ((optmask & ARES_OPT_TRIES) && channel->tries == -1) - channel->tries = options->tries; - if ((optmask & ARES_OPT_NDOTS) && channel->ndots == -1) - channel->ndots = options->ndots; - if ((optmask & ARES_OPT_ROTATE) && channel->rotate == -1) - channel->rotate = 1; - if ((optmask & ARES_OPT_NOROTATE) && channel->rotate == -1) - channel->rotate = 0; - if ((optmask & ARES_OPT_UDP_PORT) && channel->udp_port == -1) + if (optmask & ARES_OPT_FLAGS) { + channel->flags = (unsigned int)options->flags; + } + + if (optmask & ARES_OPT_TIMEOUTMS) { + channel->timeout = (unsigned int)options->timeout; + } else if (optmask & ARES_OPT_TIMEOUT) { + channel->timeout = (unsigned int)options->timeout * 1000; + } + + if (optmask & ARES_OPT_TRIES) { + channel->tries = (size_t)options->tries; + } + + if (optmask & ARES_OPT_NDOTS) { + channel->ndots = (size_t)options->ndots; + } + + if (optmask & ARES_OPT_ROTATE) { + channel->rotate = ARES_TRUE; + } + + if (optmask & ARES_OPT_NOROTATE) { + channel->rotate = ARES_FALSE; + } + + if ((optmask & ARES_OPT_UDP_PORT) && channel->udp_port == 0) { channel->udp_port = htons(options->udp_port); - if ((optmask & ARES_OPT_TCP_PORT) && channel->tcp_port == -1) + } + + if ((optmask & ARES_OPT_TCP_PORT) && channel->tcp_port == 0) { 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) + } + + 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 && options->socket_send_buffer_size > 0) { channel->socket_send_buffer_size = options->socket_send_buffer_size; - if ((optmask & ARES_OPT_SOCK_RCVBUF) - && channel->socket_receive_buffer_size == -1) + } + + if (optmask & ARES_OPT_SOCK_RCVBUF && + channel->socket_receive_buffer_size > 0) { channel->socket_receive_buffer_size = options->socket_receive_buffer_size; + } - if ((optmask & ARES_OPT_EDNSPSZ) && channel->ednspsz == -1) - channel->ednspsz = options->ednspsz; + if (optmask & ARES_OPT_EDNSPSZ) { + channel->ednspsz = (size_t)options->ednspsz; + } /* Copy the IPv4 servers, if given. */ - if ((optmask & ARES_OPT_SERVERS) && channel->nservers == -1) - { - /* Avoid zero size allocations at any cost */ - if (options->nservers > 0) - { - channel->servers = - ares_malloc(options->nservers * sizeof(*channel->servers)); - if (!channel->servers) - return ARES_ENOMEM; - memset(channel->servers, 0, options->nservers * sizeof(*channel->servers)); - for (i = 0; i < options->nservers; i++) - { - channel->servers[i].addr.family = AF_INET; - channel->servers[i].addr.udp_port = 0; - channel->servers[i].addr.tcp_port = 0; - memcpy(&channel->servers[i].addr.addrV4, - &options->servers[i], - sizeof(channel->servers[i].addr.addrV4)); - } - } - channel->nservers = options->nservers; + if (optmask & ARES_OPT_SERVERS) { + /* Avoid zero size allocations at any cost */ + if (options->nservers > 0) { + channel->servers = + ares_malloc((size_t)options->nservers * sizeof(*channel->servers)); + if (!channel->servers) { + return ARES_ENOMEM; + } + memset(channel->servers, 0, + (size_t)options->nservers * sizeof(*channel->servers)); + for (i = 0; i < (size_t)options->nservers; i++) { + channel->servers[i].addr.family = AF_INET; + channel->servers[i].addr.udp_port = 0; + channel->servers[i].addr.tcp_port = 0; + memcpy(&channel->servers[i].addr.addrV4, &options->servers[i], + sizeof(channel->servers[i].addr.addrV4)); + } } + channel->nservers = (size_t)options->nservers; + } /* Copy the domains, if given. Keep channel->ndomains consistent so * we can clean up in case of error. */ - if ((optmask & ARES_OPT_DOMAINS) && channel->ndomains == -1) - { - /* Avoid zero size allocations at any cost */ - if (options->ndomains > 0) - { - channel->domains = ares_malloc(options->ndomains * sizeof(char *)); - if (!channel->domains) + if (optmask & ARES_OPT_DOMAINS) { + /* Avoid zero size allocations at any cost */ + if (options->ndomains > 0) { + channel->domains = + ares_malloc((size_t)options->ndomains * sizeof(char *)); + if (!channel->domains) { + return ARES_ENOMEM; + } + for (i = 0; i < (size_t)options->ndomains; i++) { + channel->domains[i] = ares_strdup(options->domains[i]); + if (!channel->domains[i]) { return ARES_ENOMEM; - for (i = 0; i < options->ndomains; i++) - { - channel->ndomains = i; - channel->domains[i] = ares_strdup(options->domains[i]); - if (!channel->domains[i]) - return ARES_ENOMEM; - } + } } - channel->ndomains = options->ndomains; } + channel->ndomains = (size_t)options->ndomains; + } /* Set lookups, if given. */ - if ((optmask & ARES_OPT_LOOKUPS) && !channel->lookups) - { - channel->lookups = ares_strdup(options->lookups); - if (!channel->lookups) - return ARES_ENOMEM; + if ((optmask & ARES_OPT_LOOKUPS) && !channel->lookups) { + channel->lookups = ares_strdup(options->lookups); + if (!channel->lookups) { + return ARES_ENOMEM; } + } /* copy sortlist */ - if ((optmask & ARES_OPT_SORTLIST) && (channel->nsort == -1)) { - if (options->nsort > 0) { - channel->sortlist = ares_malloc(options->nsort * sizeof(struct apattern)); - if (!channel->sortlist) - return ARES_ENOMEM; - for (i = 0; i < options->nsort; i++) - channel->sortlist[i] = options->sortlist[i]; + if (optmask & ARES_OPT_SORTLIST && options->nsort > 0) { + channel->nsort = (size_t)options->nsort; + channel->sortlist = + ares_malloc((size_t)options->nsort * sizeof(struct apattern)); + if (!channel->sortlist) { + return ARES_ENOMEM; + } + for (i = 0; i < (size_t)options->nsort; i++) { + channel->sortlist[i] = options->sortlist[i]; } - channel->nsort = options->nsort; } /* Set path for resolv.conf file, if given. */ - if ((optmask & ARES_OPT_RESOLVCONF) && !channel->resolvconf_path) - { - channel->resolvconf_path = ares_strdup(options->resolvconf_path); - if (!channel->resolvconf_path && options->resolvconf_path) - return ARES_ENOMEM; + if ((optmask & ARES_OPT_RESOLVCONF) && !channel->resolvconf_path) { + channel->resolvconf_path = ares_strdup(options->resolvconf_path); + if (!channel->resolvconf_path && options->resolvconf_path) { + return ARES_ENOMEM; } + } /* Set path for hosts file, if given. */ - if ((optmask & ARES_OPT_HOSTS_FILE) && !channel->hosts_path) - { - channel->hosts_path = ares_strdup(options->hosts_path); - if (!channel->hosts_path && options->hosts_path) - return ARES_ENOMEM; + if ((optmask & ARES_OPT_HOSTS_FILE) && !channel->hosts_path) { + channel->hosts_path = ares_strdup(options->hosts_path); + if (!channel->hosts_path && options->hosts_path) { + return ARES_ENOMEM; } + } - if (optmask & ARES_OPT_UDP_MAX_QUERIES) - channel->udp_max_queries = options->udp_max_queries; + if (optmask & ARES_OPT_UDP_MAX_QUERIES) { + channel->udp_max_queries = (size_t)options->udp_max_queries; + } - channel->optmask = optmask; + channel->optmask = (unsigned int)optmask; return ARES_SUCCESS; } -static int init_by_environment(ares_channel channel) +static ares_status_t init_by_environment(ares_channel channel) { - const char *localdomain, *res_options; - int status; + const char *localdomain; + const char *res_options; + ares_status_t status; localdomain = getenv("LOCALDOMAIN"); - if (localdomain && channel->ndomains == -1) - { - status = set_search(channel, localdomain); - if (status != ARES_SUCCESS) - return status; + if (localdomain && channel->ndomains == 0) { + status = set_search(channel, localdomain); + if (status != ARES_SUCCESS) { + return status; } + } res_options = getenv("RES_OPTIONS"); - if (res_options) - { - status = set_options(channel, res_options); - if (status != ARES_SUCCESS) - return status; /* LCOV_EXCL_LINE: set_options() never fails */ + if (res_options) { + status = set_options(channel, res_options); + if (status != ARES_SUCCESS) { + return status; /* LCOV_EXCL_LINE: set_options() never fails */ } + } return ARES_SUCCESS; } @@ -638,7 +662,7 @@ static int init_by_environment(ares_channel channel) * * Supported on Windows NT 3.5 and newer. */ -static int get_REG_SZ(HKEY hKey, const char *leafKeyName, char **outptr) +static ares_bool_t get_REG_SZ(HKEY hKey, const char *leafKeyName, char **outptr) { DWORD size = 0; int res; @@ -647,46 +671,50 @@ static int get_REG_SZ(HKEY hKey, const char *leafKeyName, char **outptr) /* Find out size of string stored in registry */ res = RegQueryValueExA(hKey, leafKeyName, 0, NULL, NULL, &size); - if ((res != ERROR_SUCCESS && res != ERROR_MORE_DATA) || !size) - return 0; + if ((res != ERROR_SUCCESS && res != ERROR_MORE_DATA) || !size) { + return ARES_FALSE; + } /* Allocate buffer of indicated size plus one given that string might have been stored without null termination */ - *outptr = ares_malloc(size+1); - if (!*outptr) - return 0; + *outptr = ares_malloc(size + 1); + if (!*outptr) { + return ARES_FALSE; + } /* Get the value for real */ - res = RegQueryValueExA(hKey, leafKeyName, 0, NULL, - (unsigned char *)*outptr, &size); - if ((res != ERROR_SUCCESS) || (size == 1)) - { + res = RegQueryValueExA(hKey, leafKeyName, 0, NULL, (unsigned char *)*outptr, + &size); + if ((res != ERROR_SUCCESS) || (size == 1)) { ares_free(*outptr); *outptr = NULL; - return 0; + return ARES_FALSE; } /* Null terminate buffer allways */ *(*outptr + size) = '\0'; - return 1; + return ARES_TRUE; } -static void commanjoin(char** dst, const char* const src, const size_t len) +static void commanjoin(char **dst, const char * const src, const size_t len) { - char *newbuf; + char *newbuf; size_t newsize; /* 1 for terminating 0 and 2 for , and terminating 0 */ - newsize = len + (*dst ? (strlen(*dst) + 2) : 1); - newbuf = ares_realloc(*dst, newsize); - if (!newbuf) + newsize = len + (*dst ? (ares_strlen(*dst) + 2) : 1); + newbuf = ares_realloc(*dst, newsize); + if (!newbuf) { return; - if (*dst == NULL) + } + if (*dst == NULL) { *newbuf = '\0'; + } *dst = newbuf; - if (strlen(*dst) != 0) + if (ares_strlen(*dst) != 0) { strcat(*dst, ","); + } strncat(*dst, src, len); } @@ -697,17 +725,15 @@ static void commanjoin(char** dst, const char* const src, const size_t len) */ static void commajoin(char **dst, const char *src) { - commanjoin(dst, src, strlen(src)); + commanjoin(dst, src, ares_strlen(src)); } - /* A structure to hold the string form of IPv4 and IPv6 addresses so we can * sort them by a metric. */ -typedef struct -{ +typedef struct { /* The metric we sort them by. */ - ULONG metric; + ULONG metric; /* Original index of the item, used as a secondary sort parameter to make * qsort() stable if the metrics are equal */ @@ -716,23 +742,30 @@ typedef struct /* Room enough for the string form of any IPv4 or IPv6 address that * ares_inet_ntop() will create. Based on the existing c-ares practice. */ - char text[INET6_ADDRSTRLEN + 8]; /* [%s]:NNNNN */ + char text[INET6_ADDRSTRLEN + 8]; /* [%s]:NNNNN */ } Address; /* Sort Address values \a left and \a right by metric, returning the usual * indicators for qsort(). */ -static int compareAddresses(const void *arg1, - const void *arg2) +static int compareAddresses(const void *arg1, const void *arg2) { - const Address * const left = arg1; + const Address * const left = arg1; const Address * const right = arg2; /* Lower metric the more preferred */ - if(left->metric < right->metric) return -1; - if(left->metric > right->metric) return 1; + if (left->metric < right->metric) { + return -1; + } + if (left->metric > right->metric) { + return 1; + } /* If metrics are equal, lower original index more preferred */ - if(left->orig_idx < right->orig_idx) return -1; - if(left->orig_idx > right->orig_idx) return 1; + if (left->orig_idx < right->orig_idx) { + return -1; + } + if (left->orig_idx > right->orig_idx) { + return 1; + } return 0; } @@ -771,10 +804,10 @@ static int compareAddresses(const void *arg1, */ static ULONG getBestRouteMetric(IF_LUID * const luid, /* Can't be const :( */ const SOCKADDR_INET * const dest, - const ULONG interfaceMetric) + const ULONG interfaceMetric) { /* On this interface, get the best route to that destination. */ -#if defined(__WATCOMC__) +# if defined(__WATCOMC__) /* OpenWatcom's builtin Windows SDK does not have a definition for * MIB_IPFORWARD_ROW2, and also does not allow the usage of SOCKADDR_INET * as a variable. Let's work around this by returning the worst possible @@ -784,28 +817,28 @@ static ULONG getBestRouteMetric(IF_LUID * const luid, /* Can't be const :( */ * 2.0. */ return (ULONG)-1; -#else +# else MIB_IPFORWARD_ROW2 row; - SOCKADDR_INET ignored; - if(GetBestRoute2(/* The interface to use. The index is ignored since we are - * passing a LUID. - */ - luid, 0, - /* No specific source address. */ - NULL, - /* Our destination address. */ - dest, - /* No options. */ - 0, - /* The route row. */ - &row, - /* The best source address, which we don't need. */ - &ignored) != NO_ERROR - /* If the metric is "unused" (-1) or too large for us to add the two - * metrics, use the worst possible, thus sorting this last. - */ - || row.Metric == (ULONG)-1 - || row.Metric > ((ULONG)-1) - interfaceMetric) { + SOCKADDR_INET ignored; + if (GetBestRoute2(/* The interface to use. The index is ignored since we are + * passing a LUID. + */ + luid, 0, + /* No specific source address. */ + NULL, + /* Our destination address. */ + dest, + /* No options. */ + 0, + /* The route row. */ + &row, + /* The best source address, which we don't need. */ + &ignored) != NO_ERROR + /* If the metric is "unused" (-1) or too large for us to add the two + * metrics, use the worst possible, thus sorting this last. + */ + || row.Metric == (ULONG)-1 || + row.Metric > ((ULONG)-1) - interfaceMetric) { /* Return the worst possible metric. */ return (ULONG)-1; } @@ -817,7 +850,7 @@ static ULONG getBestRouteMetric(IF_LUID * const luid, /* Can't be const :( */ * which describes the combination as a "sum". */ return row.Metric + interfaceMetric; -#endif /* __WATCOMC__ */ +# endif /* __WATCOMC__ */ } /* @@ -834,24 +867,27 @@ static ULONG getBestRouteMetric(IF_LUID * const luid, /* Can't be const :( */ * * Implementation supports Windows XP and newer. */ -#define IPAA_INITIAL_BUF_SZ 15 * 1024 -#define IPAA_MAX_TRIES 3 -static int get_DNS_Windows(char **outptr) +# define IPAA_INITIAL_BUF_SZ 15 * 1024 +# define IPAA_MAX_TRIES 3 + +static ares_bool_t get_DNS_Windows(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; + IP_ADAPTER_ADDRESSES *ipaa; + IP_ADAPTER_ADDRESSES *newipaa; + IP_ADAPTER_ADDRESSES *ipaaEntry; + ULONG ReqBufsz = IPAA_INITIAL_BUF_SZ; + ULONG Bufsz = IPAA_INITIAL_BUF_SZ; + ULONG AddrFlags = 0; + int trying = IPAA_MAX_TRIES; + int res; /* The capacity of addresses, in elements. */ - size_t addressesSize; + size_t addressesSize; /* The number of elements in addresses. */ - size_t addressesIndex = 0; + size_t addressesIndex = 0; /* The addresses we will sort. */ - Address *addresses; + Address *addresses; union { struct sockaddr *sa; @@ -862,46 +898,49 @@ static int get_DNS_Windows(char **outptr) *outptr = NULL; ipaa = ares_malloc(Bufsz); - if (!ipaa) - return 0; + if (!ipaa) { + return ARES_FALSE; + } /* Start with enough room for a few DNS server addresses and we'll grow it * as we encounter more. */ addressesSize = 4; - addresses = (Address*)ares_malloc(sizeof(Address) * addressesSize); - if(addresses == NULL) { + addresses = (Address *)ares_malloc(sizeof(Address) * addressesSize); + if (addresses == NULL) { /* We need room for at least some addresses to function. */ ares_free(ipaa); - return 0; + return ARES_FALSE; } /* Usually this call suceeds with initial buffer size */ res = GetAdaptersAddresses(AF_UNSPEC, AddrFlags, NULL, ipaa, &ReqBufsz); - if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS)) + if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS)) { goto done; + } - while ((res == ERROR_BUFFER_OVERFLOW) && (--trying)) - { - if (Bufsz < ReqBufsz) - { + while ((res == ERROR_BUFFER_OVERFLOW) && (--trying)) { + if (Bufsz < ReqBufsz) { newipaa = ares_realloc(ipaa, ReqBufsz); - if (!newipaa) + if (!newipaa) { goto done; + } Bufsz = ReqBufsz; - ipaa = newipaa; + ipaa = newipaa; } res = GetAdaptersAddresses(AF_UNSPEC, AddrFlags, NULL, ipaa, &ReqBufsz); - if (res == ERROR_SUCCESS) + if (res == ERROR_SUCCESS) { break; + } } - if (res != ERROR_SUCCESS) + if (res != ERROR_SUCCESS) { goto done; + } - for (ipaaEntry = ipaa; ipaaEntry; ipaaEntry = ipaaEntry->Next) - { - if(ipaaEntry->OperStatus != IfOperStatusUp) - continue; + for (ipaaEntry = ipaa; ipaaEntry; ipaaEntry = ipaaEntry->Next) { + if (ipaaEntry->OperStatus != IfOperStatusUp) { + continue; + } /* For each interface, find any associated DNS servers as IPv4 or IPv6 * addresses. For each found address, find the best route to that DNS @@ -909,88 +948,78 @@ static int get_DNS_Windows(char **outptr) * compute the resulting total metric, just as Windows routing will do. * Then, sort all the addresses found by the metric. */ - for (ipaDNSAddr = ipaaEntry->FirstDnsServerAddress; - ipaDNSAddr; - ipaDNSAddr = ipaDNSAddr->Next) - { + for (ipaDNSAddr = ipaaEntry->FirstDnsServerAddress; ipaDNSAddr; + ipaDNSAddr = ipaDNSAddr->Next) { char ipaddr[INET6_ADDRSTRLEN] = ""; - namesrvr.sa = ipaDNSAddr->Address.lpSockaddr; + namesrvr.sa = ipaDNSAddr->Address.lpSockaddr; - if (namesrvr.sa->sa_family == AF_INET) - { + 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)) + (namesrvr.sa4->sin_addr.S_un.S_addr == INADDR_NONE)) { continue; + } /* Allocate room for another address, if necessary, else skip. */ - if(addressesIndex == addressesSize) { - const size_t newSize = addressesSize + 4; + if (addressesIndex == addressesSize) { + const size_t newSize = addressesSize + 4; Address * const newMem = - (Address*)ares_realloc(addresses, sizeof(Address) * newSize); - if(newMem == NULL) { + (Address *)ares_realloc(addresses, sizeof(Address) * newSize); + if (newMem == NULL) { continue; } - addresses = newMem; + addresses = newMem; addressesSize = newSize; } addresses[addressesIndex].metric = - getBestRouteMetric(&ipaaEntry->Luid, - (SOCKADDR_INET*)(namesrvr.sa), + getBestRouteMetric(&ipaaEntry->Luid, (SOCKADDR_INET *)(namesrvr.sa), ipaaEntry->Ipv4Metric); /* Record insertion index to make qsort stable */ addresses[addressesIndex].orig_idx = addressesIndex; - if (!ares_inet_ntop(AF_INET, &namesrvr.sa4->sin_addr, - ipaddr, sizeof(ipaddr))) { + if (!ares_inet_ntop(AF_INET, &namesrvr.sa4->sin_addr, ipaddr, + sizeof(ipaddr))) { continue; } snprintf(addresses[addressesIndex].text, - sizeof(addresses[addressesIndex].text), - "[%s]:%u", - ipaddr, + sizeof(addresses[addressesIndex].text), "[%s]:%u", ipaddr, ntohs(namesrvr.sa4->sin_port)); ++addressesIndex; - } - else if (namesrvr.sa->sa_family == AF_INET6) - { + } else if (namesrvr.sa->sa_family == AF_INET6) { if (memcmp(&namesrvr.sa6->sin6_addr, &ares_in6addr_any, - sizeof(namesrvr.sa6->sin6_addr)) == 0) + sizeof(namesrvr.sa6->sin6_addr)) == 0) { continue; + } /* Allocate room for another address, if necessary, else skip. */ - if(addressesIndex == addressesSize) { - const size_t newSize = addressesSize + 4; + if (addressesIndex == addressesSize) { + const size_t newSize = addressesSize + 4; Address * const newMem = - (Address*)ares_realloc(addresses, sizeof(Address) * newSize); - if(newMem == NULL) { + (Address *)ares_realloc(addresses, sizeof(Address) * newSize); + if (newMem == NULL) { continue; } - addresses = newMem; + addresses = newMem; addressesSize = newSize; } addresses[addressesIndex].metric = - getBestRouteMetric(&ipaaEntry->Luid, - (SOCKADDR_INET*)(namesrvr.sa), + getBestRouteMetric(&ipaaEntry->Luid, (SOCKADDR_INET *)(namesrvr.sa), ipaaEntry->Ipv6Metric); /* Record insertion index to make qsort stable */ addresses[addressesIndex].orig_idx = addressesIndex; - if (!ares_inet_ntop(AF_INET6, &namesrvr.sa6->sin6_addr, - ipaddr, sizeof(ipaddr))) { + if (!ares_inet_ntop(AF_INET6, &namesrvr.sa6->sin6_addr, ipaddr, + sizeof(ipaddr))) { continue; } snprintf(addresses[addressesIndex].text, - sizeof(addresses[addressesIndex].text), - "[%s]:%u", - ipaddr, + sizeof(addresses[addressesIndex].text), "[%s]:%u", ipaddr, ntohs(namesrvr.sa6->sin6_port)); ++addressesIndex; - } - else { + } else { /* Skip non-IPv4/IPv6 addresses completely. */ continue; } @@ -1004,16 +1033,16 @@ static int get_DNS_Windows(char **outptr) /* Join them all into a single string, removing duplicates. */ { size_t i; - for(i = 0; i < addressesIndex; ++i) { + for (i = 0; i < addressesIndex; ++i) { size_t j; /* Look for this address text appearing previously in the results. */ - for(j = 0; j < i; ++j) { - if(strcmp(addresses[j].text, addresses[i].text) == 0) { + for (j = 0; j < i; ++j) { + if (strcmp(addresses[j].text, addresses[i].text) == 0) { break; } } /* Iff we didn't emit this address already, emit it now. */ - if(j == i) { + if (j == i) { /* Add that to outptr (if we can). */ commajoin(outptr, addresses[i].text); } @@ -1023,14 +1052,15 @@ static int get_DNS_Windows(char **outptr) done: ares_free(addresses); - if (ipaa) + if (ipaa) { ares_free(ipaa); + } if (!*outptr) { - return 0; + return ARES_FALSE; } - return 1; + return ARES_TRUE; } /* @@ -1046,26 +1076,26 @@ static int get_DNS_Windows(char **outptr) * * Implementation supports Windows Server 2003 and newer */ -static int get_SuffixList_Windows(char **outptr) +static ares_bool_t get_SuffixList_Windows(char **outptr) { - HKEY hKey, hKeyEnum; + HKEY hKey; + HKEY hKeyEnum; char keyName[256]; DWORD keyNameBuffSize; DWORD keyIdx = 0; - char *p = NULL; + char *p = NULL; *outptr = NULL; - if (ares__getplatform() != WIN_NT) - return 0; + if (ares__getplatform() != WIN_NT) { + return ARES_FALSE; + } /* 1. Global DNS Suffix Search List */ - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, - KEY_READ, &hKey) == ERROR_SUCCESS) - { + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hKey) == + ERROR_SUCCESS) { get_REG_SZ(hKey, SEARCHLIST_KEY, outptr); - if (get_REG_SZ(hKey, DOMAIN_KEY, &p)) - { + if (get_REG_SZ(hKey, DOMAIN_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; @@ -1073,11 +1103,9 @@ static int get_SuffixList_Windows(char **outptr) RegCloseKey(hKey); } - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0, - KEY_READ, &hKey) == ERROR_SUCCESS) - { - if (get_REG_SZ(hKey, SEARCHLIST_KEY, &p)) - { + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0, KEY_READ, &hKey) == + ERROR_SUCCESS) { + if (get_REG_SZ(hKey, SEARCHLIST_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; @@ -1087,11 +1115,9 @@ static int get_SuffixList_Windows(char **outptr) /* 2. Connection Specific Search List composed of: * a. Primary DNS Suffix */ - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0, - KEY_READ, &hKey) == ERROR_SUCCESS) - { - if (get_REG_SZ(hKey, PRIMARYDNSSUFFIX_KEY, &p)) - { + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0, KEY_READ, &hKey) == + ERROR_SUCCESS) { + if (get_REG_SZ(hKey, PRIMARYDNSSUFFIX_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; @@ -1101,33 +1127,29 @@ static int get_SuffixList_Windows(char **outptr) /* b. Interface SearchList, Domain, DhcpDomain */ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY "\\" INTERFACES_KEY, 0, - KEY_READ, &hKey) == ERROR_SUCCESS) - { - for(;;) - { + KEY_READ, &hKey) == ERROR_SUCCESS) { + for (;;) { keyNameBuffSize = sizeof(keyName); - if (RegEnumKeyExA(hKey, keyIdx++, keyName, &keyNameBuffSize, - 0, NULL, NULL, NULL) - != ERROR_SUCCESS) + if (RegEnumKeyExA(hKey, keyIdx++, keyName, &keyNameBuffSize, 0, NULL, + NULL, NULL) != ERROR_SUCCESS) { break; - if (RegOpenKeyExA(hKey, keyName, 0, KEY_QUERY_VALUE, &hKeyEnum) - != ERROR_SUCCESS) + } + if (RegOpenKeyExA(hKey, keyName, 0, KEY_QUERY_VALUE, &hKeyEnum) != + ERROR_SUCCESS) { continue; + } /* p can be comma separated (SearchList) */ - if (get_REG_SZ(hKeyEnum, SEARCHLIST_KEY, &p)) - { + if (get_REG_SZ(hKeyEnum, SEARCHLIST_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } - if (get_REG_SZ(hKeyEnum, DOMAIN_KEY, &p)) - { + if (get_REG_SZ(hKeyEnum, DOMAIN_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; } - if (get_REG_SZ(hKeyEnum, DHCPDOMAIN_KEY, &p)) - { + if (get_REG_SZ(hKeyEnum, DHCPDOMAIN_KEY, &p)) { commajoin(outptr, p); ares_free(p); p = NULL; @@ -1137,49 +1159,52 @@ static int get_SuffixList_Windows(char **outptr) RegCloseKey(hKey); } - return *outptr != NULL; + return *outptr != NULL ? ARES_TRUE : ARES_FALSE; } #endif -static int init_by_resolv_conf(ares_channel channel) +static ares_status_t init_by_resolv_conf(ares_channel channel) { #if !defined(ANDROID) && !defined(__ANDROID__) && !defined(WATT32) && \ - !defined(CARES_USE_LIBRESOLV) + !defined(CARES_USE_LIBRESOLV) char *line = NULL; #endif - int status = -1, nservers = 0, nsort = 0; - struct server_state *servers = NULL; - struct apattern *sortlist = NULL; + ares_status_t status = ARES_EOF; + size_t nservers = 0; + size_t 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 (channel->nservers > 0) { /* don't override ARES_OPT_SERVER */ + return ARES_SUCCESS; + } - if (get_DNS_Windows(&line)) - { + if (get_DNS_Windows(&line)) { status = config_nameserver(&servers, &nservers, line); ares_free(line); } - if (channel->ndomains == -1 && get_SuffixList_Windows(&line)) - { - status = set_search(channel, line); - ares_free(line); + if (channel->ndomains == 0 && get_SuffixList_Windows(&line)) { + status = set_search(channel, line); + ares_free(line); } - if (status == ARES_SUCCESS) + if (status == ARES_SUCCESS) { status = ARES_EOF; - else + } 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(__MVS__) - struct __res_state *res = 0; - int count4, count6; - __STATEEXTIPV6 *v6; + struct __res_state *res = 0; + size_t count4; + size_t count6; + __STATEEXTIPV6 *v6; struct server_state *pserver; if (0 == res) { int rc = res_init(); @@ -1193,17 +1218,21 @@ static int init_by_resolv_conf(ares_channel channel) } v6 = res->__res_extIPv6; - count4 = res->nscount; - if (v6) { - count6 = v6->__stat_nscount; + if (res->nscount > 0) { + count4 = (size_t)res->nscount; + } + + if (v6 && v6->__stat_nscount > 0) { + count6 = (size_t)v6->__stat_nscount; } else { count6 = 0; } - nservers = count4 + count6; - servers = ares_malloc(nservers * sizeof(*servers)); - if (!servers) + nservers = (size_t)(count4 + count6); + servers = ares_malloc(nservers * sizeof(*servers)); + if (!servers) { return ARES_ENOMEM; + } memset(servers, 0, nservers * sizeof(*servers)); @@ -1211,16 +1240,16 @@ static int init_by_resolv_conf(ares_channel channel) for (int i = 0; i < count4; ++i, ++pserver) { struct sockaddr_in *addr_in = &(res->nsaddr_list[i]); pserver->addr.addrV4.s_addr = addr_in->sin_addr.s_addr; - pserver->addr.family = AF_INET; - pserver->addr.udp_port = addr_in->sin_port; - pserver->addr.tcp_port = addr_in->sin_port; + pserver->addr.family = AF_INET; + pserver->addr.udp_port = addr_in->sin_port; + pserver->addr.tcp_port = addr_in->sin_port; } for (int j = 0; j < count6; ++j, ++pserver) { struct sockaddr_in6 *addr_in = &(v6->__stat_nsaddr_list[j]); memcpy(&(pserver->addr.addr.addr6), &(addr_in->sin6_addr), sizeof(addr_in->sin6_addr)); - pserver->addr.family = AF_INET6; + pserver->addr.family = AF_INET6; pserver->addr.udp_port = addr_in->sin6_port; pserver->addr.tcp_port = addr_in->sin6_port; } @@ -1232,59 +1261,64 @@ static int init_by_resolv_conf(ares_channel channel) /* Under RISC OS, name servers are listed in the system variable Inet$Resolvers, space separated. */ - line = getenv("Inet$Resolvers"); + line = getenv("Inet$Resolvers"); status = ARES_EOF; if (line) { char *resolvers = ares_strdup(line), *pos, *space; - if (!resolvers) + if (!resolvers) { return ARES_ENOMEM; + } pos = resolvers; do { space = strchr(pos, ' '); - if (space) + if (space) { *space = '\0'; + } status = config_nameserver(&servers, &nservers, pos); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { break; + } pos = space + 1; } while (space); - if (status == ARES_SUCCESS) + if (status == ARES_SUCCESS) { status = ARES_EOF; + } ares_free(resolvers); } #elif defined(WATT32) - int i; + size_t i; sock_init(); for (i = 0; def_nameservers[i]; i++) - ; - if (i == 0) + ; + if (i == 0) { return ARES_SUCCESS; /* use localhost DNS server */ + } nservers = i; - servers = ares_malloc(sizeof(*servers)); - if (!servers) - return ARES_ENOMEM; - memset(servers, 0, sizeof(*servers)); + servers = ares_malloc(nservers * sizeof(*servers)); + if (!servers) { + return ARES_ENOMEM; + } + memset(servers, 0, nservers * sizeof(*servers)); - for (i = 0; def_nameservers[i]; i++) - { + for (i = 0; def_nameservers[i]; i++) { servers[i].addr.addrV4.s_addr = htonl(def_nameservers[i]); - servers[i].addr.family = AF_INET; - servers[i].addr.udp_port = 0; - servers[i].addr.tcp_port = 0; + servers[i].addr.family = AF_INET; + servers[i].addr.udp_port = 0; + servers[i].addr.tcp_port = 0; } status = ARES_EOF; #elif defined(ANDROID) || defined(__ANDROID__) - unsigned int i; + size_t i; char **dns_servers; - char *domains; + char *domains; size_t num_servers; /* Use the Android connectivity manager to get a list @@ -1294,23 +1328,20 @@ static int init_by_resolv_conf(ares_channel channel) * permission and must use the ConnectivityManager which * is Java only. */ dns_servers = ares_get_android_server_list(MAX_DNS_PROPERTIES, &num_servers); - if (dns_servers != NULL) - { - for (i = 0; i < num_servers; i++) - { + if (dns_servers != NULL) { + for (i = 0; i < num_servers; i++) { status = config_nameserver(&servers, &nservers, dns_servers[i]); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { break; + } status = ARES_EOF; } - for (i = 0; i < num_servers; i++) - { + for (i = 0; i < num_servers; i++) { ares_free(dns_servers[i]); } ares_free(dns_servers); } - if (channel->ndomains == -1) - { + if (channel->ndomains == 0) { domains = ares_get_android_search_domains_list(); set_search(channel, domains); ares_free(domains); @@ -1326,7 +1357,7 @@ static int init_by_resolv_conf(ares_channel channel) * because this will get the same ones (if it works). */ if (status != ARES_EOF) { char propname[PROP_NAME_MAX]; - char propvalue[PROP_VALUE_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) { @@ -1335,8 +1366,9 @@ static int init_by_resolv_conf(ares_channel channel) } status = config_nameserver(&servers, &nservers, propvalue); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { break; + } status = ARES_EOF; } } @@ -1349,21 +1381,22 @@ static int init_by_resolv_conf(ares_channel channel) if (result == 0 && (res.options & RES_INIT)) { status = ARES_EOF; - if (channel->nservers == -1) { + if (channel->nservers == 0) { union res_sockaddr_union addr[MAXNS]; - int nscount = res_getservers(&res, addr, MAXNS); - int i; + int nscount = res_getservers(&res, addr, MAXNS); + int i; for (i = 0; i < nscount; ++i) { - char ipaddr[INET6_ADDRSTRLEN] = ""; - char ipaddr_port[INET6_ADDRSTRLEN + 8]; /* [%s]:NNNNN */ + char ipaddr[INET6_ADDRSTRLEN] = ""; + char ipaddr_port[INET6_ADDRSTRLEN + 8]; /* [%s]:NNNNN */ unsigned short port = 0; - int config_status; - sa_family_t family = addr[i].sin.sin_family; + ares_status_t config_status; + sa_family_t family = addr[i].sin.sin_family; if (family == AF_INET) { ares_inet_ntop(family, &addr[i].sin.sin_addr, ipaddr, sizeof(ipaddr)); port = ntohs(addr[i].sin.sin_port); } else if (family == AF_INET6) { - ares_inet_ntop(family, &addr[i].sin6.sin6_addr, ipaddr, sizeof(ipaddr)); + ares_inet_ntop(family, &addr[i].sin6.sin6_addr, ipaddr, + sizeof(ipaddr)); port = ntohs(addr[i].sin6.sin6_port); } else { continue; @@ -1382,58 +1415,72 @@ static int init_by_resolv_conf(ares_channel channel) } } } - if (channel->ndomains == -1) { - int entries = 0; - while ((entries < MAXDNSRCH) && res.dnsrch[entries]) + if (channel->ndomains == 0) { + size_t entries = 0; + while ((entries < MAXDNSRCH) && res.dnsrch[entries]) { entries++; - if(entries) { + } + if (entries) { channel->domains = ares_malloc(entries * sizeof(char *)); if (!channel->domains) { status = ARES_ENOMEM; } else { - int i; + size_t i; channel->ndomains = entries; for (i = 0; i < channel->ndomains; ++i) { channel->domains[i] = ares_strdup(res.dnsrch[i]); - if (!channel->domains[i]) + if (!channel->domains[i]) { status = ARES_ENOMEM; + } } } } } - if (channel->ndots == -1) - channel->ndots = res.ndots; - if (channel->tries == -1) - channel->tries = res.retry; - if (channel->rotate == -1) - channel->rotate = res.options & RES_ROTATE; - if (channel->timeout == -1) { - channel->timeout = res.retrans * 1000; -#ifdef __APPLE__ - channel->timeout /= (res.retry + 1) * (res.nscount > 0 ? res.nscount : 1); -#endif + if (channel->ndots == 0 && res.ndots > 0) { + channel->ndots = (size_t)res.ndots; + } + + if (channel->tries == 0 && res.retry > 0) { + channel->tries = (size_t)res.retry; + } + + if (!(channel->optmask & (ARES_OPT_ROTATE | ARES_OPT_NOROTATE))) { + channel->rotate = (res.options & RES_ROTATE) ? ARES_TRUE : ARES_FALSE; + } + + if (channel->timeout == 0) { + if (res.retrans > 0) { + channel->timeout = (unsigned int)res.retrans * 1000; + } +# ifdef __APPLE__ + if (res.retry >= 0) { + channel->timeout /= ((unsigned int)res.retry + 1) * + (unsigned int)(res.nscount > 0 ? res.nscount : 1); + } +# endif } res_ndestroy(&res); } #else { - char *p; - FILE *fp; - size_t linesize; - int error; - int update_domains; + char *p; + FILE *fp; + size_t linesize; + int error; + int update_domains; const char *resolvconf_path; /* Don't read resolv.conf and friends if we don't have to */ - if (ARES_CONFIG_CHECK(channel)) - return ARES_SUCCESS; + if (ARES_CONFIG_CHECK(channel)) { + return ARES_SUCCESS; + } /* Only update search domains if they're not already specified */ - update_domains = (channel->ndomains == -1); + update_domains = (channel->ndomains == 0); /* Support path for resolvconf filename set by ares_init_options */ - if(channel->resolvconf_path) { + if (channel->resolvconf_path) { resolvconf_path = channel->resolvconf_path; } else { resolvconf_path = PATH_RESOLV_CONF; @@ -1441,41 +1488,41 @@ static int init_by_resolv_conf(ares_channel channel) fp = fopen(resolvconf_path, "r"); if (fp) { - while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) - { - if ((p = try_config(line, "domain", ';')) && update_domains) + while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) { + if ((p = try_config(line, "domain", ';')) && update_domains) { status = config_domain(channel, p); - else if ((p = try_config(line, "lookup", ';')) && !channel->lookups) + } else if ((p = try_config(line, "lookup", ';')) && !channel->lookups) { status = config_lookup(channel, p, "bind", NULL, "file"); - else if ((p = try_config(line, "search", ';')) && update_domains) + } else if ((p = try_config(line, "search", ';')) && update_domains) { status = set_search(channel, p); - else if ((p = try_config(line, "nameserver", ';')) && - channel->nservers == -1) + } else if ((p = try_config(line, "nameserver", ';')) && + channel->nservers == 0) { status = config_nameserver(&servers, &nservers, p); - else if ((p = try_config(line, "sortlist", ';')) && - channel->nsort == -1) + } else if ((p = try_config(line, "sortlist", ';')) && + !(channel->optmask & ARES_OPT_SORTLIST)) { status = config_sortlist(&sortlist, &nsort, p); - else if ((p = try_config(line, "options", ';'))) + } else if ((p = try_config(line, "options", ';'))) { status = set_options(channel, p); - else + } else { status = ARES_SUCCESS; - if (status != ARES_SUCCESS) + } + if (status != ARES_SUCCESS) { break; + } } fclose(fp); - } - else { + } 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; + 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; } } @@ -1484,24 +1531,23 @@ static int init_by_resolv_conf(ares_channel channel) 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) + ARES_SUCCESS) { + if ((p = try_config(line, "hosts:", '\0')) && !channel->lookups) { (void)config_lookup(channel, p, "dns", "resolve", "files"); + } } fclose(fp); - } - else { + } else { error = ERRNO; - switch(error) { - case ENOENT: - case ESRCH: - break; - default: - DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", - error, strerror(error))); - DEBUGF(fprintf(stderr, "Error opening file: %s\n", - "/etc/nsswitch.conf")); + switch (error) { + case ENOENT: + case ESRCH: + break; + default: + DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, + strerror(error))); + DEBUGF(fprintf(stderr, "Error opening file: %s\n", + "/etc/nsswitch.conf")); } /* ignore error, maybe we will get luck in next if clause */ @@ -1514,25 +1560,24 @@ static int init_by_resolv_conf(ares_channel channel) 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) + ARES_SUCCESS) { + if ((p = try_config(line, "order", '\0')) && !channel->lookups) { /* ignore errors */ (void)config_lookup(channel, p, "bind", NULL, "hosts"); + } } fclose(fp); - } - else { + } else { error = ERRNO; - switch(error) { - case ENOENT: - case ESRCH: - break; - default: - DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", - error, strerror(error))); - DEBUGF(fprintf(stderr, "Error opening file: %s\n", - "/etc/host.conf")); + switch (error) { + case ENOENT: + case ESRCH: + break; + default: + DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, + strerror(error))); + DEBUGF( + fprintf(stderr, "Error opening file: %s\n", "/etc/host.conf")); } /* ignore error, maybe we will get luck in next if clause */ @@ -1545,24 +1590,24 @@ static int init_by_resolv_conf(ares_channel channel) 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) + ARES_SUCCESS) { + if ((p = try_config(line, "hosts=", '\0')) && !channel->lookups) { /* ignore errors */ (void)config_lookup(channel, p, "bind", NULL, "local"); + } } fclose(fp); - } - else { + } else { error = ERRNO; - switch(error) { - case ENOENT: - case ESRCH: - break; - default: - DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", - error, strerror(error))); - DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf")); + switch (error) { + case ENOENT: + case ESRCH: + break; + default: + DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, + strerror(error))); + DEBUGF( + fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf")); } /* ignore error, default value will be chosen for `channel->lookups` */ @@ -1570,66 +1615,71 @@ static int init_by_resolv_conf(ares_channel channel) } } - if(line) + if (line) { ares_free(line); + } } #endif /* Handle errors. */ - if (status != ARES_EOF) - { - if (servers != NULL) - ares_free(servers); - if (sortlist != NULL) - ares_free(sortlist); - return status; + if (status != ARES_EOF) { + if (servers != NULL) { + ares_free(servers); } + if (sortlist != NULL) { + ares_free(sortlist); + } + return status; + } /* If we got any name server entries, fill them in. */ - if (servers) - { - channel->servers = servers; - channel->nservers = nservers; - } + if (servers) { + channel->servers = servers; + channel->nservers = nservers; + } /* If we got any sortlist entries, fill them in. */ - if (sortlist) - { - channel->sortlist = sortlist; - channel->nsort = nsort; - } + if (sortlist) { + channel->sortlist = sortlist; + channel->nsort = nsort; + } return ARES_SUCCESS; } -static int init_by_defaults(ares_channel channel) +static ares_status_t init_by_defaults(ares_channel channel) { - char *hostname = NULL; - int rc = ARES_SUCCESS; + char *hostname = NULL; + ares_status_t rc = ARES_SUCCESS; #ifdef HAVE_GETHOSTNAME char *dot; #endif - if (channel->flags == -1) - channel->flags = 0; - if (channel->timeout == -1) + if (channel->timeout == 0) { channel->timeout = DEFAULT_TIMEOUT; - if (channel->tries == -1) + } + + if (channel->tries == 0) { channel->tries = DEFAULT_TRIES; - if (channel->ndots == -1) + } + + if (channel->ndots == 0) { channel->ndots = 1; - if (channel->rotate == -1) - channel->rotate = 0; - if (channel->udp_port == -1) + } + + if (channel->udp_port == 0) { channel->udp_port = htons(NAMESERVER_PORT); - if (channel->tcp_port == -1) + } + if (channel->tcp_port == 0) { channel->tcp_port = htons(NAMESERVER_PORT); + } - if (channel->ednspsz == -1) + if (channel->ednspsz == 0) { channel->ednspsz = EDNSPACKETSZ; + } - if (channel->nservers == -1) { + if (channel->nservers == 0) { /* If nobody specified servers, try a local named. */ channel->servers = ares_malloc(sizeof(*channel->servers)); if (!channel->servers) { @@ -1637,23 +1687,23 @@ static int init_by_defaults(ares_channel channel) goto error; } memset(channel->servers, 0, sizeof(*channel->servers)); - channel->servers[0].addr.family = AF_INET; + channel->servers[0].addr.family = AF_INET; channel->servers[0].addr.addrV4.s_addr = htonl(INADDR_LOOPBACK); - channel->servers[0].addr.udp_port = 0; - channel->servers[0].addr.tcp_port = 0; - channel->nservers = 1; + channel->servers[0].addr.udp_port = 0; + channel->servers[0].addr.tcp_port = 0; + channel->nservers = 1; } #if defined(USE_WINSOCK) -#define toolong(x) (x == -1) && (SOCKERRNO == WSAEFAULT) +# define toolong(x) (x == -1) && (SOCKERRNO == WSAEFAULT) #elif defined(ENAMETOOLONG) -#define toolong(x) (x == -1) && ((SOCKERRNO == ENAMETOOLONG) || \ - (SOCKERRNO == EINVAL)) +# define toolong(x) \ + (x == -1) && ((SOCKERRNO == ENAMETOOLONG) || (SOCKERRNO == EINVAL)) #else -#define toolong(x) (x == -1) && (SOCKERRNO == EINVAL) +# define toolong(x) (x == -1) && (SOCKERRNO == EINVAL) #endif - if (channel->ndomains == -1) { + if (channel->ndomains == 0) { /* Derive a default domain search list from the kernel hostname, * or set it to empty if the hostname isn't helpful. */ @@ -1661,12 +1711,12 @@ static int init_by_defaults(ares_channel channel) channel->ndomains = 0; /* default to none */ #else GETHOSTNAME_TYPE_ARG2 lenv = 64; - size_t len = 64; - int res; + size_t len = 64; + int res; channel->ndomains = 0; /* default to none */ hostname = ares_malloc(len); - if(!hostname) { + if (!hostname) { rc = ARES_ENOMEM; goto error; } @@ -1674,19 +1724,18 @@ static int init_by_defaults(ares_channel channel) do { res = gethostname(hostname, lenv); - if(toolong(res)) { + if (toolong(res)) { char *p; - len *= 2; + len *= 2; lenv *= 2; - p = ares_realloc(hostname, len); - if(!p) { + p = ares_realloc(hostname, len); + if (!p) { rc = ARES_ENOMEM; goto error; } hostname = p; continue; - } - else if(res) { + } else if (res) { /* Lets not treat a gethostname failure as critical, since we * are ok if gethostname doesn't even exist */ *hostname = '\0'; @@ -1713,175 +1762,186 @@ static int init_by_defaults(ares_channel channel) #endif } - if (channel->nsort == -1) { + if (channel->nsort == 0) { channel->sortlist = NULL; - channel->nsort = 0; } if (!channel->lookups) { channel->lookups = ares_strdup("fb"); - if (!channel->lookups) + if (!channel->lookups) { rc = ARES_ENOMEM; + } } - error: - if(rc) { - if(channel->servers) { +error: + if (rc) { + if (channel->servers) { ares_free(channel->servers); channel->servers = NULL; } channel->nservers = 0; - if(channel->domains && channel->domains[0]) + if (channel->domains && channel->domains[0]) { ares_free(channel->domains[0]); - if(channel->domains) { + } + if (channel->domains) { ares_free(channel->domains); channel->domains = NULL; } - if(channel->lookups) { + if (channel->lookups) { ares_free(channel->lookups); channel->lookups = NULL; } - if(channel->resolvconf_path) { + if (channel->resolvconf_path) { ares_free(channel->resolvconf_path); channel->resolvconf_path = NULL; } - if(channel->hosts_path) { + if (channel->hosts_path) { ares_free(channel->hosts_path); channel->hosts_path = NULL; } } - if(hostname) + if (hostname) { ares_free(hostname); + } return rc; } -#if !defined(WIN32) && !defined(WATT32) && \ - !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) -static int config_domain(ares_channel channel, char *str) +#if !defined(WIN32) && !defined(WATT32) && !defined(ANDROID) && \ + !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) +static ares_status_t config_domain(ares_channel channel, char *str) { char *q; /* Set a single search domain. */ q = str; - while (*q && !ISSPACE(*q)) + while (*q && !ISSPACE(*q)) { q++; + } *q = '\0'; return set_search(channel, str); } -#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 910) && \ - defined(__OPTIMIZE__) && defined(__unix__) && defined(__i386__) - /* workaround icc 9.1 optimizer issue */ -# define vqualifier volatile -#else -# define vqualifier -#endif - -static int config_lookup(ares_channel channel, const char *str, - const char *bindch, const char *altbindch, - const char *filech) +# 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 ares_status_t config_lookup(ares_channel channel, const char *str, + const char *bindch, const char *altbindch, + const char *filech) { - char lookups[3], *l; + char lookups[3]; + char *l; const char *vqualifier p; - int found; + ares_bool_t found; - if (altbindch == NULL) + if (altbindch == NULL) { altbindch = bindch; + } /* Set the lookup order. Only the first letter of each work * is relevant, and it has to be "b" for DNS or "f" for the * host file. Ignore everything else. */ - l = lookups; - p = str; - found = 0; - while (*p) - { - if ((*p == *bindch || *p == *altbindch || *p == *filech) && l < lookups + 2) { - if (*p == *bindch || *p == *altbindch) *l++ = 'b'; - else *l++ = 'f'; - found = 1; + l = lookups; + p = str; + found = ARES_FALSE; + while (*p) { + if ((*p == *bindch || *p == *altbindch || *p == *filech) && + l < lookups + 2) { + if (*p == *bindch || *p == *altbindch) { + *l++ = 'b'; + } else { + *l++ = 'f'; } - while (*p && !ISSPACE(*p) && (*p != ',')) - p++; - while (*p && (ISSPACE(*p) || (*p == ','))) - p++; + found = ARES_TRUE; } - if (!found) + while (*p && !ISSPACE(*p) && (*p != ',')) { + p++; + } + while (*p && (ISSPACE(*p) || (*p == ','))) { + p++; + } + } + if (!found) { return ARES_ENOTINITIALIZED; - *l = '\0'; + } + *l = '\0'; channel->lookups = ares_strdup(lookups); return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM; } -#endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ & !CARES_USE_LIBRESOLV */ +#endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ & !CARES_USE_LIBRESOLV */ #ifndef WATT32 /* Validate that the ip address matches the subnet (network base and network * mask) specified. Addresses are specified in standard Network Byte Order as * 16 bytes, and the netmask is 0 to 128 (bits). */ -static int ares_ipv6_subnet_matches(const unsigned char netbase[16], - unsigned char netmask, - const unsigned char ipaddr[16]) +static ares_bool_t ares_ipv6_subnet_matches(const unsigned char netbase[16], + unsigned char netmask, + const unsigned char ipaddr[16]) { unsigned char mask[16] = { 0 }; unsigned char i; /* Misuse */ - if (netmask > 128) - return 0; + if (netmask > 128) { + return ARES_FALSE; + } /* Quickly set whole bytes */ memset(mask, 0xFF, netmask / 8); /* Set remaining bits */ - if(netmask % 8) { + if (netmask % 8) { mask[netmask / 8] = (unsigned char)(0xff << (8 - (netmask % 8))); } - for (i=0; i<16; i++) { - if ((netbase[i] & mask[i]) != (ipaddr[i] & mask[i])) - return 0; + for (i = 0; i < 16; i++) { + if ((netbase[i] & mask[i]) != (ipaddr[i] & mask[i])) { + return ARES_FALSE; + } } - return 1; + return ARES_TRUE; } /* Return true iff the IPv6 ipaddr is blacklisted. */ -static int ares_ipv6_server_blacklisted(const unsigned char ipaddr[16]) +static ares_bool_t ares_ipv6_server_blacklisted(const unsigned char ipaddr[16]) { /* A list of blacklisted IPv6 subnets. */ const struct { const unsigned char netbase[16]; - unsigned char netmask; + unsigned char netmask; } blacklist[] = { - /* fec0::/10 was deprecated by [RFC3879] in September 2004. Formerly a - * Site-Local scoped address prefix. These are never valid DNS servers, - * but are known to be returned at least sometimes on Windows and Android. - */ - { - { - 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - 10 - } + /* fec0::/10 was deprecated by [RFC3879] in September 2004. Formerly a + * Site-Local scoped address prefix. These are never valid DNS servers, + * but are known to be returned at least sometimes on Windows and Android. + */ + {{ 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }, + 10} }; + size_t i; /* See if ipaddr matches any of the entries in the blacklist. */ for (i = 0; i < sizeof(blacklist) / sizeof(blacklist[0]); ++i) { - if (ares_ipv6_subnet_matches( - blacklist[i].netbase, blacklist[i].netmask, ipaddr)) - return 1; + if (ares_ipv6_subnet_matches(blacklist[i].netbase, blacklist[i].netmask, + ipaddr)) { + return ARES_TRUE; + } } - return 0; + return ARES_FALSE; } /* Parse address and port in these formats, either ipv4 or ipv6 addresses @@ -1897,12 +1957,13 @@ static int ares_ipv6_server_blacklisted(const unsigned char ipaddr[16]) * * Returns an error code on failure, else ARES_SUCCESS */ -static int parse_dnsaddrport(const char *str, size_t len, - struct ares_addr *host, unsigned short *port) +static ares_status_t parse_dnsaddrport(const char *str, size_t len, + struct ares_addr *host, + unsigned short *port) { - char ipaddr[INET6_ADDRSTRLEN] = ""; - char ipport[6] = ""; - size_t mylen; + char ipaddr[INET6_ADDRSTRLEN] = ""; + char ipport[6] = ""; + size_t mylen; const char *addr_start = NULL; const char *addr_end = NULL; const char *port_start = NULL; @@ -1916,12 +1977,12 @@ static int parse_dnsaddrport(const char *str, size_t len, /* If it starts with a bracket, must end with a bracket */ if (*str == '[') { const char *ptr; - addr_start = str+1; - ptr = memchr(addr_start, ']', len-1); + addr_start = str + 1; + ptr = memchr(addr_start, ']', len - 1); if (ptr == NULL) { return ARES_EBADSTR; } - addr_end = ptr-1; + addr_end = ptr - 1; /* Try to pull off port */ if ((size_t)(ptr - str) < len) { @@ -1935,17 +1996,17 @@ static int parse_dnsaddrport(const char *str, size_t len, return ARES_EBADSTR; } - port_start = ptr+1; - port_end = str+(len-1); + port_start = ptr + 1; + port_end = str + (len - 1); } } else { addr_start = str; - addr_end = str+(len-1); + addr_end = str + (len - 1); } - mylen = (addr_end-addr_start)+1; + mylen = (size_t)(addr_end - addr_start) + 1; /* Larger than buffer with null term */ - if (mylen+1 > sizeof(ipaddr)) { + if (mylen + 1 > sizeof(ipaddr)) { return ARES_EBADSTR; } @@ -1953,9 +2014,9 @@ static int parse_dnsaddrport(const char *str, size_t len, memcpy(ipaddr, addr_start, mylen); if (port_start) { - mylen = (port_end-port_start)+1; + mylen = (size_t)(port_end - port_start) + 1; /* Larger than buffer with null term */ - if (mylen+1 > sizeof(ipport)) { + if (mylen + 1 > sizeof(ipport)) { return ARES_EBADSTR; } memset(ipport, 0, sizeof(ipport)); @@ -1968,9 +2029,9 @@ static int parse_dnsaddrport(const char *str, size_t len, if (ares_inet_pton(AF_INET, ipaddr, &host->addrV4) == 1) { host->family = AF_INET; } else if (ares_inet_pton(AF_INET6, ipaddr, &host->addrV6) == 1 - /* Silently skip blacklisted IPv6 servers. */ - && !ares_ipv6_server_blacklisted( - (const unsigned char *)&host->addrV6)) { + /* Silently skip blacklisted IPv6 servers. */ + && !ares_ipv6_server_blacklisted( + (const unsigned char *)&host->addrV6)) { host->family = AF_INET6; } else { return ARES_EBADSTR; @@ -1996,300 +2057,347 @@ static int parse_dnsaddrport(const char *str, size_t len, * * Returns an error code on failure, else ARES_SUCCESS. */ -static int config_nameserver(struct server_state **servers, int *nservers, - const char *str) +static ares_status_t config_nameserver(struct server_state **servers, + size_t *nservers, const char *str) { - struct ares_addr host; + struct ares_addr host; struct server_state *newserv; - const char *p, *txtaddr; + const char *p; + const char *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;) - { - unsigned short port; - - /* Skip whitespace and commas. */ - while (*p && (ISSPACE(*p) || (*p == ','))) - p++; - if (!*p) - /* No more input, done. */ - break; + for (p = str; p;) { + unsigned short port; - /* Pointer to start of IPv4 or IPv6 address part. */ - txtaddr = p; + /* Skip whitespace and commas. */ + while (*p && (ISSPACE(*p) || (*p == ','))) { + p++; + } + if (!*p) { + /* No more input, done. */ + break; + } - /* Advance past this address. */ - while (*p && !ISSPACE(*p) && (*p != ',')) - p++; + /* Pointer to start of IPv4 or IPv6 address part. */ + txtaddr = p; - if (parse_dnsaddrport(txtaddr, p-txtaddr, &host, &port) != - ARES_SUCCESS) { - continue; - } + /* Advance past this address. */ + while (*p && !ISSPACE(*p) && (*p != ',')) { + p++; + } - /* Resize servers state array. */ - newserv = ares_realloc(*servers, (*nservers + 1) * - sizeof(*newserv)); - if (!newserv) - return ARES_ENOMEM; + if (parse_dnsaddrport(txtaddr, (size_t)(p - txtaddr), &host, &port) != + ARES_SUCCESS) { + continue; + } - memset(((unsigned char *)newserv) + ((*nservers) * sizeof(*newserv)), 0, sizeof(*newserv)); + /* Resize servers state array. */ + newserv = ares_realloc(*servers, (*nservers + 1) * sizeof(*newserv)); + if (!newserv) { + return ARES_ENOMEM; + } - /* Store address data. */ - newserv[*nservers].addr.family = host.family; - newserv[*nservers].addr.udp_port = htons(port); - newserv[*nservers].addr.tcp_port = htons(port); - 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)); + memset(((unsigned char *)newserv) + ((*nservers) * sizeof(*newserv)), 0, + sizeof(*newserv)); - /* Update arguments. */ - *servers = newserv; - *nservers += 1; + /* Store address data. */ + newserv[*nservers].addr.family = host.family; + newserv[*nservers].addr.udp_port = htons(port); + newserv[*nservers].addr.tcp_port = htons(port); + if (host.family == AF_INET) { + memcpy(&newserv[*nservers].addr.addrV4, &host.addrV4, + sizeof(host.addrV4)); + } else { + memcpy(&newserv[*nservers].addr.addrV6, &host.addrV6, + sizeof(host.addrV6)); } + /* Update arguments. */ + *servers = newserv; + *nservers += 1; + } + return ARES_SUCCESS; } -#endif /* !WATT32 */ +#endif /* !WATT32 */ -static int config_sortlist(struct apattern **sortlist, int *nsort, - const char *str) +static ares_status_t config_sortlist(struct apattern **sortlist, size_t *nsort, + const char *str) { struct apattern pat; - const char *q; + const char *q; + + *sortlist = NULL; + *nsort = 0; /* 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)) + while (*str && *str != ';') { + int bits; + char ipbuf[17]; + char ipbufpfx[32]; + size_t len; + + /* Find just the IP */ + q = str; + while (*q && *q != '/' && *q != ';' && !ISSPACE(*q)) { + q++; + } + + len = (size_t)(q - str); + if (len >= sizeof(ipbuf) - 1) { + ares_free(*sortlist); + *sortlist = NULL; + return ARES_EBADSTR; + } + memcpy(ipbuf, str, len); + ipbuf[len] = '\0'; + + /* Find the prefix */ + if (*q == '/') { + const char *str2 = q + 1; + while (*q && *q != ';' && !ISSPACE(*q)) { q++; - if (q-str >= 16) + } + if (q - str >= 32) { + ares_free(*sortlist); + *sortlist = NULL; return ARES_EBADSTR; - 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++; - if (q-str >= 32) - return ARES_EBADSTR; - memcpy(ipbufpfx, str, q-str); - ipbufpfx[q-str] = '\0'; - str = str2; - } - else - ipbufpfx[0] = '\0'; - /* Lets see if it is CIDR */ - /* First we'll try IPv6 */ - if ((bits = ares_inet_net_pton(AF_INET6, ipbufpfx[0] ? ipbufpfx : ipbuf, - &pat.addrV6, - sizeof(pat.addrV6))) > 0) - { - pat.type = PATTERN_CIDR; - pat.mask.bits = (unsigned short)bits; - pat.family = AF_INET6; - if (!sortlist_alloc(sortlist, nsort, &pat)) { - ares_free(*sortlist); - *sortlist = NULL; - return ARES_ENOMEM; - } - } - else if (ipbufpfx[0] && + } + memcpy(ipbufpfx, str, (size_t)(q - str)); + ipbufpfx[q - str] = '\0'; + str = str2; + } else { + ipbufpfx[0] = '\0'; + } + /* Lets see if it is CIDR */ + /* First we'll try IPv6 */ + if ((bits = ares_inet_net_pton(AF_INET6, ipbufpfx[0] ? ipbufpfx : ipbuf, + &pat.addrV6, sizeof(pat.addrV6))) > 0) { + pat.type = PATTERN_CIDR; + pat.mask.bits = (unsigned short)bits; + pat.family = AF_INET6; + if (!sortlist_alloc(sortlist, nsort, &pat)) { + ares_free(*sortlist); + *sortlist = NULL; + return ARES_ENOMEM; + } + } else if (ipbufpfx[0] && (bits = ares_inet_net_pton(AF_INET, ipbufpfx, &pat.addrV4, - sizeof(pat.addrV4))) > 0) - { - pat.type = PATTERN_CIDR; - pat.mask.bits = (unsigned short)bits; - pat.family = AF_INET; - if (!sortlist_alloc(sortlist, nsort, &pat)) { - ares_free(*sortlist); - *sortlist = NULL; - return ARES_ENOMEM; - } - } - /* See if it is just a regular IP */ - else if (ip_addr(ipbuf, q-str, &pat.addrV4) == 0) - { - if (ipbufpfx[0]) - { - memcpy(ipbuf, str, q-str); - ipbuf[q-str] = '\0'; - if (ip_addr(ipbuf, q-str, &pat.mask.addr4) != 0) - natural_mask(&pat); - } - else - natural_mask(&pat); - pat.family = AF_INET; - pat.type = PATTERN_MASK; - if (!sortlist_alloc(sortlist, nsort, &pat)) { - ares_free(*sortlist); - *sortlist = NULL; - return ARES_ENOMEM; - } + sizeof(pat.addrV4))) > 0) { + pat.type = PATTERN_CIDR; + pat.mask.bits = (unsigned short)bits; + pat.family = AF_INET; + if (!sortlist_alloc(sortlist, nsort, &pat)) { + ares_free(*sortlist); + *sortlist = NULL; + return ARES_ENOMEM; + } + } + /* See if it is just a regular IP */ + else if (ip_addr(ipbuf, q - str, &pat.addrV4) == 0) { + if (ipbufpfx[0]) { + len = (size_t)(q - str); + if (len >= sizeof(ipbuf) - 1) { + ares_free(*sortlist); + *sortlist = NULL; + return ARES_EBADSTR; } - else - { - while (*q && *q != ';' && !ISSPACE(*q)) - q++; + memcpy(ipbuf, str, len); + ipbuf[len] = '\0'; + + if (ip_addr(ipbuf, q - str, &pat.mask.addr4) != 0) { + natural_mask(&pat); } - str = q; - while (ISSPACE(*str)) - str++; + } else { + natural_mask(&pat); + } + pat.family = AF_INET; + pat.type = PATTERN_MASK; + if (!sortlist_alloc(sortlist, nsort, &pat)) { + ares_free(*sortlist); + *sortlist = NULL; + return ARES_ENOMEM; + } + } else { + while (*q && *q != ';' && !ISSPACE(*q)) { + q++; + } } + str = q; + while (ISSPACE(*str)) { + str++; + } + } return ARES_SUCCESS; } -static int set_search(ares_channel channel, const char *str) +static ares_status_t set_search(ares_channel channel, const char *str) { size_t cnt; - if(channel->ndomains != -1) { + if (channel->ndomains > 0) { /* LCOV_EXCL_START: all callers check ndomains == -1 */ /* if we already have some domains present, free them first */ - ares__strsplit_free(channel->domains, channel->ndomains); - channel->domains = NULL; - channel->ndomains = -1; + ares__strsplit_free(channel->domains, (size_t)channel->ndomains); + channel->domains = NULL; + channel->ndomains = 0; } /* LCOV_EXCL_STOP */ channel->domains = ares__strsplit(str, ", ", &cnt); - channel->ndomains = (int)cnt; + channel->ndomains = cnt; if (channel->domains == NULL || channel->ndomains == 0) { channel->domains = NULL; - channel->ndomains = -1; + channel->ndomains = 0; } return ARES_SUCCESS; } -static int set_options(ares_channel channel, const char *str) +static ares_status_t set_options(ares_channel channel, const char *str) { - const char *p, *q, *val; + const char *p; + const char *q; + const char *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++; + while (*p) { + q = p; + while (*q && !ISSPACE(*q)) { + q++; + } + val = try_option(p, q, "ndots:"); + if (val && channel->ndots == 0) { + channel->ndots = strtoul(val, NULL, 10); + } + + val = try_option(p, q, "retrans:"); + if (val && channel->timeout == 0) { + channel->timeout = strtoul(val, NULL, 10); + } + + val = try_option(p, q, "retry:"); + if (val && channel->tries == 0) { + channel->tries = strtoul(val, NULL, 10); + } + + val = try_option(p, q, "rotate"); + if (val && !(channel->optmask & (ARES_OPT_ROTATE | ARES_OPT_NOROTATE))) { + channel->rotate = ARES_TRUE; + } + + 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); + size_t len = ares_strlen(opt); return ((size_t)(q - p) >= len && !strncmp(p, opt, len)) ? &p[len] : NULL; } -#if !defined(WIN32) && !defined(WATT32) && \ - !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) +#if !defined(WIN32) && !defined(WATT32) && !defined(ANDROID) && \ + !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV) static char *try_config(char *s, const char *opt, char scc) { size_t len; - char *p; - char *q; + char *p; + char *q; - if (!s || !opt) + if (!s || !opt) { /* no line or no option */ - return NULL; /* LCOV_EXCL_LINE */ + return NULL; /* LCOV_EXCL_LINE */ + } /* Hash '#' character is always used as primary comment char, additionally a not-NUL secondary comment char will be considered when specified. */ /* trim line comment */ p = s; - if(scc) - while (*p && (*p != '#') && (*p != scc)) + if (scc) { + while (*p && (*p != '#') && (*p != scc)) { p++; - else - while (*p && (*p != '#')) + } + } else { + while (*p && (*p != '#')) { p++; + } + } *p = '\0'; /* trim trailing whitespace */ q = p - 1; - while ((q >= s) && ISSPACE(*q)) + while ((q >= s) && ISSPACE(*q)) { q--; + } *++q = '\0'; /* skip leading whitespace */ p = s; - while (*p && ISSPACE(*p)) + while (*p && ISSPACE(*p)) { p++; + } - if (!*p) + if (!*p) { /* empty line */ return NULL; + } - if ((len = strlen(opt)) == 0) + if ((len = ares_strlen(opt)) == 0) { /* empty option */ - return NULL; /* LCOV_EXCL_LINE */ + return NULL; /* LCOV_EXCL_LINE */ + } - if (strncmp(p, opt, len) != 0) + if (strncmp(p, opt, len) != 0) { /* line and option do not match */ return NULL; + } /* skip over given option name */ p += len; - if (!*p) + if (!*p) { /* no option value */ - return NULL; /* LCOV_EXCL_LINE */ + return NULL; /* LCOV_EXCL_LINE */ + } - if ((opt[len-1] != ':') && (opt[len-1] != '=') && !ISSPACE(*p)) + 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)) + while (*p && ISSPACE(*p)) { p++; + } - if (!*p) + if (!*p) { /* no option value */ return NULL; + } /* return pointer to option value */ return p; } -#endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ */ +#endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ */ static int ip_addr(const char *ipbuf, ares_ssize_t len, struct in_addr *addr) { - /* Four octets and three periods yields at most 15 characters. */ - if (len > 15) + if (len > 15) { return -1; + } - if (ares_inet_pton(AF_INET, ipbuf, addr) < 1) + if (ares_inet_pton(AF_INET, ipbuf, addr) < 1) { return -1; + } return 0; } @@ -2306,97 +2414,96 @@ static void natural_mask(struct apattern *pat) /* This is out of date in the CIDR world, but some people might * still rely on it. */ - if (IN_CLASSA(addr.s_addr)) + if (IN_CLASSA(addr.s_addr)) { pat->mask.addr4.s_addr = htonl(IN_CLASSA_NET); - else if (IN_CLASSB(addr.s_addr)) + } else if (IN_CLASSB(addr.s_addr)) { pat->mask.addr4.s_addr = htonl(IN_CLASSB_NET); - else + } else { pat->mask.addr4.s_addr = htonl(IN_CLASSC_NET); + } } -static int sortlist_alloc(struct apattern **sortlist, int *nsort, - struct apattern *pat) +static ares_bool_t sortlist_alloc(struct apattern **sortlist, size_t *nsort, + struct apattern *pat) { struct apattern *newsort; newsort = ares_realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern)); - if (!newsort) - return 0; + if (!newsort) { + return ARES_FALSE; + } newsort[*nsort] = *pat; - *sortlist = newsort; + *sortlist = newsort; (*nsort)++; - return 1; + return ARES_TRUE; } - 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) +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) +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)); + ares_strcpy(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) +void ares_set_socket_callback(ares_channel channel, + ares_sock_create_callback cb, void *data) { - channel->sock_create_cb = cb; + channel->sock_create_cb = cb; channel->sock_create_cb_data = data; } -void ares_set_socket_configure_callback(ares_channel channel, +void ares_set_socket_configure_callback(ares_channel channel, ares_sock_config_callback cb, - void *data) + void *data) { - channel->sock_config_cb = cb; + channel->sock_config_cb = cb; channel->sock_config_cb_data = data; } -void ares_set_socket_functions(ares_channel channel, - const struct ares_socket_functions * funcs, - void *data) +void ares_set_socket_functions(ares_channel channel, + const struct ares_socket_functions *funcs, + void *data) { - channel->sock_funcs = funcs; + channel->sock_funcs = funcs; channel->sock_func_cb_data = data; } int ares_set_sortlist(ares_channel channel, const char *sortstr) { - int nsort = 0; + size_t nsort = 0; struct apattern *sortlist = NULL; - int status; + ares_status_t status; - if (!channel) + if (!channel) { return ARES_ENODATA; + } status = config_sortlist(&sortlist, &nsort, sortstr); if (status == ARES_SUCCESS && sortlist) { - if (channel->sortlist) + if (channel->sortlist) { ares_free(channel->sortlist); + } channel->sortlist = sortlist; - channel->nsort = nsort; + channel->nsort = nsort; } - return status; + return (int)status; } -int ares__init_servers_state(ares_channel channel) +ares_status_t ares__init_servers_state(ares_channel channel) { struct server_state *server; - int i; + size_t i; for (i = 0; i < channel->nservers; i++) { server = &channel->servers[i]; @@ -2404,8 +2511,9 @@ int ares__init_servers_state(ares_channel channel) /* NOTE: Can't use memset() here because the server addresses have been * filled in already */ server->tcp_parser = ares__buf_create(); - if (server->tcp_parser == NULL) + if (server->tcp_parser == NULL) { return ARES_ENOMEM; + } server->tcp_send = ares__buf_create(); if (server->tcp_send == NULL) { @@ -2413,7 +2521,7 @@ int ares__init_servers_state(ares_channel channel) return ARES_ENOMEM; } - server->idx = i; + server->idx = (size_t)i; server->connections = ares__llist_create(NULL); if (server->connections == NULL) { ares__buf_destroy(server->tcp_parser); @@ -2422,7 +2530,7 @@ int ares__init_servers_state(ares_channel channel) } server->tcp_connection_generation = ++channel->tcp_connection_generation; - server->channel = channel; + server->channel = channel; } return ARES_SUCCESS; } diff --git a/deps/cares/src/lib/ares_iphlpapi.h b/deps/cares/src/lib/ares_iphlpapi.h index 31db7d3829a9aa..0eaacd18f69b0f 100644 --- a/deps/cares/src/lib/ares_iphlpapi.h +++ b/deps/cares/src/lib/ares_iphlpapi.h @@ -29,58 +29,57 @@ #if defined(USE_WINSOCK) -#ifndef INET_ADDRSTRLEN -#define INET_ADDRSTRLEN 22 -#endif +# ifndef INET_ADDRSTRLEN +# define INET_ADDRSTRLEN 22 +# endif -#ifndef INET6_ADDRSTRLEN -#define INET6_ADDRSTRLEN 65 -#endif +# ifndef INET6_ADDRSTRLEN +# define INET6_ADDRSTRLEN 65 +# endif /* ---------------------------------- */ -#if !defined(_WS2DEF_) && \ - !defined(__CSADDR_DEFINED__) && \ +# if !defined(_WS2DEF_) && !defined(__CSADDR_DEFINED__) && \ !defined(__CSADDR_T_DEFINED) /* ---------------------------------- */ typedef struct _SOCKET_ADDRESS { LPSOCKADDR lpSockaddr; - INT iSockaddrLength; + INT iSockaddrLength; } SOCKET_ADDRESS, *PSOCKET_ADDRESS; typedef struct _CSADDR_INFO { SOCKET_ADDRESS LocalAddr; SOCKET_ADDRESS RemoteAddr; - INT iSocketType; - INT iProtocol; + INT iSocketType; + INT iProtocol; } CSADDR_INFO, *PCSADDR_INFO; /* --------------------------------- */ -#endif /* ! _WS2DEF_ && \ */ +# endif /* ! _WS2DEF_ && \ */ /* ! __CSADDR_DEFINED__ && \ */ /* ! __CSADDR_T_DEFINED */ /* --------------------------------- */ /* ------------------------------- */ -#if !defined(IP_ADAPTER_DDNS_ENABLED) +# if !defined(IP_ADAPTER_DDNS_ENABLED) /* ------------------------------- */ -#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001 -#define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002 +# 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 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 +# 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, @@ -130,100 +129,106 @@ typedef enum { 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; + 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; + 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; + 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; + 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; + 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; + 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; + 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 /* ! IP_ADAPTER_DDNS_ENABLED */ /* -------------------------------- */ #endif /* USE_WINSOCK */ diff --git a/deps/cares/src/lib/ares_ipv6.h b/deps/cares/src/lib/ares_ipv6.h index edb305324bcac4..be8cbe989396c2 100644 --- a/deps/cares/src/lib/ares_ipv6.h +++ b/deps/cares/src/lib/ares_ipv6.h @@ -28,12 +28,11 @@ #define ARES_IPV6_H #ifndef HAVE_PF_INET6 -#define PF_INET6 AF_INET6 +# define PF_INET6 AF_INET6 #endif #ifndef HAVE_STRUCT_SOCKADDR_IN6 -struct sockaddr_in6 -{ +struct sockaddr_in6 { unsigned short sin6_family; unsigned short sin6_port; unsigned long sin6_flowinfo; @@ -42,21 +41,19 @@ struct sockaddr_in6 }; #endif -typedef union -{ +typedef union { struct sockaddr sa; struct sockaddr_in sa4; struct sockaddr_in6 sa6; } ares_sockaddr; #ifndef HAVE_STRUCT_ADDRINFO -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 */ + ares_socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */ char *ai_canonname; struct sockaddr *ai_addr; struct addrinfo *ai_next; @@ -64,28 +61,28 @@ struct addrinfo #endif #ifndef NS_IN6ADDRSZ -#ifndef HAVE_STRUCT_IN6_ADDR +# ifndef HAVE_STRUCT_IN6_ADDR /* We cannot have it set to zero, so we pick a fixed value here */ -#define NS_IN6ADDRSZ 16 -#else -#define NS_IN6ADDRSZ sizeof(struct in6_addr) -#endif +# define NS_IN6ADDRSZ 16 +# else +# define NS_IN6ADDRSZ sizeof(struct in6_addr) +# endif #endif #ifndef NS_INADDRSZ -#define NS_INADDRSZ sizeof(struct in_addr) +# define NS_INADDRSZ sizeof(struct in_addr) #endif #ifndef NS_INT16SZ -#define NS_INT16SZ 2 +# define NS_INT16SZ 2 #endif #ifndef IF_NAMESIZE -#ifdef IFNAMSIZ -#define IF_NAMESIZE IFNAMSIZ -#else -#define IF_NAMESIZE 256 -#endif +# ifdef IFNAMSIZ +# define IF_NAMESIZE IFNAMSIZ +# else +# define IF_NAMESIZE 256 +# endif #endif /* Defined in inet_net_pton.c for no particular reason. */ diff --git a/deps/cares/src/lib/ares_library_init.c b/deps/cares/src/lib/ares_library_init.c index 1cf30f0b0fe55c..5cd39dc244ba4b 100644 --- a/deps/cares/src/lib/ares_library_init.c +++ b/deps/cares/src/lib/ares_library_init.c @@ -33,7 +33,7 @@ /* library-private global and unique instance vars */ #if defined(ANDROID) || defined(__ANDROID__) -#include "ares_android.h" +# include "ares_android.h" #endif /* library-private global vars with source visibility restricted to this file */ @@ -43,31 +43,67 @@ static int ares_init_flags; /* library-private global vars with visibility across the whole library */ -/* Some systems may return either NULL or a valid pointer on malloc(0). c-ares should - * never call malloc(0) so lets return NULL so we're more likely to find an issue if it - * were to occur. */ +/* Some systems may return either NULL or a valid pointer on malloc(0). c-ares + * should never call malloc(0) so lets return NULL so we're more likely to find + * an issue if it were to occur. */ -static void *default_malloc(size_t size) { if (size == 0) { return NULL; } return malloc(size); } +static void *default_malloc(size_t size) +{ + if (size == 0) { + return NULL; + } + return malloc(size); +} #if defined(WIN32) /* We need indirections to handle Windows DLL rules. */ -static void *default_realloc(void *p, size_t size) { return realloc(p, size); } -static void default_free(void *p) { free(p); } +static void *default_realloc(void *p, size_t size) +{ + return realloc(p, size); +} + +static void default_free(void *p) +{ + free(p); +} #else -# define default_realloc realloc -# define default_free free +# define default_realloc realloc +# define default_free free #endif -void *(*ares_malloc)(size_t size) = default_malloc; +void *(*ares_malloc)(size_t size) = default_malloc; void *(*ares_realloc)(void *ptr, size_t size) = default_realloc; -void (*ares_free)(void *ptr) = default_free; +void (*ares_free)(void *ptr) = default_free; + +void *ares_malloc_zero(size_t size) +{ + void *ptr = ares_malloc(size); + if (ptr != NULL) { + memset(ptr, 0, size); + } + + return ptr; +} + +void *ares_realloc_zero(void *ptr, size_t orig_size, size_t new_size) +{ + void *p = ares_realloc(ptr, new_size); + if (p == NULL) { + return NULL; + } + + if (new_size > orig_size) { + memset((unsigned char *)p + orig_size, 0, new_size - orig_size); + } + + return p; +} int ares_library_init(int flags) { - if (ares_initialized) - { - ares_initialized++; - return ARES_SUCCESS; - } + if (ares_initialized) { + ares_initialized++; + return ARES_SUCCESS; + } ares_initialized++; /* NOTE: ARES_LIB_INIT_WIN32 flag no longer used */ @@ -77,28 +113,31 @@ int ares_library_init(int flags) return ARES_SUCCESS; } -int ares_library_init_mem(int flags, - void *(*amalloc)(size_t size), - void (*afree)(void *ptr), +int ares_library_init_mem(int flags, void *(*amalloc)(size_t size), + void (*afree)(void *ptr), void *(*arealloc)(void *ptr, size_t size)) { - if (amalloc) + if (amalloc) { ares_malloc = amalloc; - if (arealloc) + } + if (arealloc) { ares_realloc = arealloc; - if (afree) + } + if (afree) { ares_free = afree; + } return ares_library_init(flags); } - void ares_library_cleanup(void) { - if (!ares_initialized) + if (!ares_initialized) { return; + } ares_initialized--; - if (ares_initialized) + if (ares_initialized) { return; + } /* NOTE: ARES_LIB_INIT_WIN32 flag no longer used */ @@ -107,17 +146,17 @@ void ares_library_cleanup(void) #endif ares_init_flags = ARES_LIB_INIT_NONE; - ares_malloc = malloc; - ares_realloc = realloc; - ares_free = free; + ares_malloc = malloc; + ares_realloc = realloc; + ares_free = free; } - int ares_library_initialized(void) { #ifdef USE_WINSOCK - if (!ares_initialized) + if (!ares_initialized) { return ARES_ENOTINITIALIZED; + } #endif return ARES_SUCCESS; } diff --git a/deps/cares/src/lib/ares_math.c b/deps/cares/src/lib/ares_math.c new file mode 100644 index 00000000000000..3c067e5dec9c1d --- /dev/null +++ b/deps/cares/src/lib/ares_math.c @@ -0,0 +1,67 @@ +/* MIT License + * + * Copyright (c) 2023 Brad House + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * SPDX-License-Identifier: MIT + */ +#include "ares_setup.h" +#include "ares.h" +#include "ares_private.h" + +/* Uses public domain code snipets from + * http://graphics.stanford.edu/~seander/bithacks.html */ + +size_t ares__round_up_pow2(size_t n) +{ + /* NOTE: if already a power of 2, will return itself, not the next */ + n--; + n |= n >> 1; + n |= n >> 2; + n |= n >> 4; + n |= n >> 8; + n |= n >> 16; + if (sizeof(size_t) > 4) { + n |= n >> 32; + } + n++; + return n; +} + +size_t ares__log2(size_t n) +{ + static const unsigned char tab32[32] = { 0, 1, 28, 2, 29, 14, 24, 3, + 30, 22, 20, 15, 25, 17, 4, 8, + 31, 27, 13, 23, 21, 19, 16, 7, + 26, 12, 18, 6, 11, 5, 10, 9 }; + static const unsigned char tab64[64] = { + 63, 0, 58, 1, 59, 47, 53, 2, 60, 39, 48, 27, 54, 33, 42, 3, + 61, 51, 37, 40, 49, 18, 28, 20, 55, 30, 34, 11, 43, 14, 22, 4, + 62, 57, 46, 52, 38, 26, 32, 41, 50, 36, 17, 19, 29, 10, 13, 21, + 56, 45, 25, 31, 35, 16, 9, 12, 44, 24, 15, 8, 23, 7, 6, 5 + }; + + if (sizeof(size_t) == 4) { + return tab32[(n * 0x077CB531) >> 27]; + } + + return tab64[(n * 0x07EDD5E59A4E28C2) >> 58]; +} diff --git a/deps/cares/src/lib/ares_nowarn.c b/deps/cares/src/lib/ares_nowarn.c deleted file mode 100644 index 65cabb37b29a52..00000000000000 --- a/deps/cares/src/lib/ares_nowarn.c +++ /dev/null @@ -1,269 +0,0 @@ -/* MIT License - * - * Copyright (c) 2010 Daniel Stenberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * SPDX-License-Identifier: MIT - */ - -#include "ares_setup.h" - -#ifdef HAVE_ASSERT_H -# include -#endif - -#ifdef HAVE_LIMITS_H -#include -#endif - -#if defined(__INTEL_COMPILER) && defined(__unix__) - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#endif /* __INTEL_COMPILER && __unix__ */ - -#define BUILDING_ARES_NOWARN_C 1 - -#include "ares_nowarn.h" - -#ifndef HAVE_LIMITS_H -/* systems without we guess have 16 bit shorts, 32bit ints and - 32bit longs */ -# define CARES_MASK_SSHORT 0x7FFF -# define CARES_MASK_USHORT 0xFFFF -# define CARES_MASK_SINT 0x7FFFFFFF -# define CARES_MASK_UINT 0xFFFFFFFF -# define CARES_MASK_SLONG 0x7FFFFFFFL -# define CARES_MASK_ULONG 0xFFFFFFFFUL -#else -# define CARES_MASK_SSHORT SHRT_MAX -# define CARES_MASK_USHORT USHRT_MAX -# define CARES_MASK_SINT INT_MAX -# define CARES_MASK_UINT UINT_MAX -# define CARES_MASK_SLONG LONG_MAX -# define CARES_MASK_ULONG ULONG_MAX -#endif - -/* -** unsigned size_t to signed long -*/ - -long aresx_uztosl(size_t uznum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - return (long)(uznum & (size_t) CARES_MASK_SLONG); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -/* -** unsigned size_t to signed int -*/ - -int aresx_uztosi(size_t uznum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - return (int)(uznum & (size_t) CARES_MASK_SINT); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -/* -** unsigned size_t to signed short -*/ - -short aresx_uztoss(size_t uznum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - return (short)(uznum & (size_t) CARES_MASK_SSHORT); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -/* -** signed int to signed short -*/ - -short aresx_sitoss(int sinum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - DEBUGASSERT(sinum >= 0); - return (short)(sinum & (int) CARES_MASK_SSHORT); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -/* -** signed long to signed int -*/ - -int aresx_sltosi(long slnum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - DEBUGASSERT(slnum >= 0); - return (int)(slnum & (long) CARES_MASK_SINT); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -/* -** signed ares_ssize_t to signed int -*/ - -int aresx_sztosi(ares_ssize_t sznum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - DEBUGASSERT(sznum >= 0); - return (int)(sznum & (ares_ssize_t) CARES_MASK_SINT); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -/* -** signed ares_ssize_t to unsigned int -*/ - -unsigned int aresx_sztoui(ares_ssize_t sznum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - DEBUGASSERT(sznum >= 0); - return (unsigned int)(sznum & (ares_ssize_t) CARES_MASK_UINT); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -/* -** signed int to unsigned short -*/ - -unsigned short aresx_sitous(int sinum) -{ -#ifdef __INTEL_COMPILER -# pragma warning(push) -# pragma warning(disable:810) /* conversion may lose significant bits */ -#endif - - DEBUGASSERT(sinum >= 0); - return (unsigned short)(sinum & (int) CARES_MASK_USHORT); - -#ifdef __INTEL_COMPILER -# pragma warning(pop) -#endif -} - -#if defined(__INTEL_COMPILER) && defined(__unix__) - -int aresx_FD_ISSET(int fd, fd_set *fdset) -{ - #pragma warning(push) - #pragma warning(disable:1469) /* clobber ignored */ - return FD_ISSET(fd, fdset); - #pragma warning(pop) -} - -void aresx_FD_SET(int fd, fd_set *fdset) -{ - #pragma warning(push) - #pragma warning(disable:1469) /* clobber ignored */ - FD_SET(fd, fdset); - #pragma warning(pop) -} - -void aresx_FD_ZERO(fd_set *fdset) -{ - #pragma warning(push) - #pragma warning(disable:593) /* variable was set but never used */ - FD_ZERO(fdset); - #pragma warning(pop) -} - -unsigned short aresx_htons(unsigned short usnum) -{ -#if (__INTEL_COMPILER == 910) && defined(__i386__) - return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF)); -#else - #pragma warning(push) - #pragma warning(disable:810) /* conversion may lose significant bits */ - return htons(usnum); - #pragma warning(pop) -#endif -} - -unsigned short aresx_ntohs(unsigned short usnum) -{ -#if (__INTEL_COMPILER == 910) && defined(__i386__) - return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF)); -#else - #pragma warning(push) - #pragma warning(disable:810) /* conversion may lose significant bits */ - return ntohs(usnum); - #pragma warning(pop) -#endif -} - -#endif /* __INTEL_COMPILER && __unix__ */ diff --git a/deps/cares/src/lib/ares_nowarn.h b/deps/cares/src/lib/ares_nowarn.h deleted file mode 100644 index 3f5612dbb91ffa..00000000000000 --- a/deps/cares/src/lib/ares_nowarn.h +++ /dev/null @@ -1,70 +0,0 @@ -/* MIT License - * - * Copyright (c) 2010 Daniel Stenberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * SPDX-License-Identifier: MIT - */ -#ifndef HEADER_CARES_NOWARN_H -#define HEADER_CARES_NOWARN_H - -long aresx_uztosl(size_t uznum); -int aresx_uztosi(size_t uznum); -short aresx_uztoss(size_t uznum); - -short aresx_sitoss(int sinum); - -int aresx_sltosi(long slnum); - -int aresx_sztosi(ares_ssize_t sznum); - -unsigned int aresx_sztoui(ares_ssize_t sznum); - -unsigned short aresx_sitous(int sinum); - -#if defined(__INTEL_COMPILER) && defined(__unix__) - -int aresx_FD_ISSET(int fd, fd_set *fdset); - -void aresx_FD_SET(int fd, fd_set *fdset); - -void aresx_FD_ZERO(fd_set *fdset); - -unsigned short aresx_htons(unsigned short usnum); - -unsigned short aresx_ntohs(unsigned short usnum); - -#ifndef BUILDING_ARES_NOWARN_C -# undef FD_ISSET -# define FD_ISSET(a,b) aresx_FD_ISSET((a),(b)) -# undef FD_SET -# define FD_SET(a,b) aresx_FD_SET((a),(b)) -# undef FD_ZERO -# define FD_ZERO(a) aresx_FD_ZERO((a)) -# undef htons -# define htons(a) aresx_htons((a)) -# undef ntohs -# define ntohs(a) aresx_ntohs((a)) -#endif - -#endif /* __INTEL_COMPILER && __unix__ */ - -#endif /* HEADER_CARES_NOWARN_H */ diff --git a/deps/cares/src/lib/ares_options.c b/deps/cares/src/lib/ares_options.c index 78e16bb5d2f405..c2a36434dfe0c5 100644 --- a/deps/cares/src/lib/ares_options.c +++ b/deps/cares/src/lib/ares_options.c @@ -36,257 +36,250 @@ #include "ares_inet_net_pton.h" #include "ares_private.h" - -int ares_get_servers(ares_channel channel, - struct ares_addr_node **servers) +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; + ares_status_t status = ARES_SUCCESS; + size_t i; - if (!channel) + 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)); + 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; - } + if (status != ARES_SUCCESS) { + if (srvr_head) { + ares_free_data(srvr_head); + srvr_head = NULL; } + } *servers = srvr_head; - return status; + return (int)status; } -int ares_get_servers_ports(ares_channel channel, +int ares_get_servers_ports(ares_channel channel, struct ares_addr_port_node **servers) { struct ares_addr_port_node *srvr_head = NULL; struct ares_addr_port_node *srvr_last = NULL; struct ares_addr_port_node *srvr_curr; - int status = ARES_SUCCESS; - int i; + ares_status_t status = ARES_SUCCESS; + size_t i; - if (!channel) + if (!channel) { return ARES_ENODATA; + } - for (i = 0; i < channel->nservers; i++) - { - /* Allocate storage for this server node appending it to the list */ - srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_PORT_NODE); - if (!srvr_curr) - { - status = ARES_ENOMEM; - break; - } - if (srvr_last) - { - srvr_last->next = srvr_curr; - } - else - { - srvr_head = srvr_curr; - } - srvr_last = srvr_curr; - - /* Fill this server node data */ - srvr_curr->family = channel->servers[i].addr.family; - srvr_curr->udp_port = ntohs((unsigned short)channel->servers[i].addr.udp_port); - srvr_curr->tcp_port = ntohs((unsigned short)channel->servers[i].addr.tcp_port); - if (srvr_curr->family == AF_INET) - memcpy(&srvr_curr->addrV4, &channel->servers[i].addr.addrV4, - sizeof(srvr_curr->addrV4)); - else - memcpy(&srvr_curr->addrV6, &channel->servers[i].addr.addrV6, - sizeof(srvr_curr->addrV6)); + for (i = 0; i < channel->nservers; i++) { + /* Allocate storage for this server node appending it to the list */ + srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_PORT_NODE); + if (!srvr_curr) { + status = ARES_ENOMEM; + break; + } + if (srvr_last) { + srvr_last->next = srvr_curr; + } else { + srvr_head = srvr_curr; + } + srvr_last = srvr_curr; + + /* Fill this server node data */ + srvr_curr->family = channel->servers[i].addr.family; + srvr_curr->udp_port = + ntohs((unsigned short)channel->servers[i].addr.udp_port); + srvr_curr->tcp_port = + ntohs((unsigned short)channel->servers[i].addr.tcp_port); + if (srvr_curr->family == AF_INET) { + memcpy(&srvr_curr->addrV4, &channel->servers[i].addr.addrV4, + sizeof(srvr_curr->addrV4)); + } else { + memcpy(&srvr_curr->addrV6, &channel->servers[i].addr.addrV6, + sizeof(srvr_curr->addrV6)); } + } - if (status != ARES_SUCCESS) - { - if (srvr_head) - { - ares_free_data(srvr_head); - srvr_head = NULL; - } + if (status != ARES_SUCCESS) { + if (srvr_head) { + ares_free_data(srvr_head); + srvr_head = NULL; } + } *servers = srvr_head; - return status; + return (int)status; } -int ares_set_servers(ares_channel channel, - struct ares_addr_node *servers) +int ares_set_servers(ares_channel channel, struct ares_addr_node *servers) { struct ares_addr_node *srvr; - int num_srvrs = 0; - int i; + size_t num_srvrs = 0; + size_t i; - if (ares_library_initialized() != ARES_SUCCESS) - return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + if (ares_library_initialized() != ARES_SUCCESS) { + return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + } - if (!channel) + if (!channel) { return ARES_ENODATA; + } - if (ares__llist_len(channel->all_queries) != 0) + if (ares__llist_len(channel->all_queries) != 0) { return ARES_ENOTIMP; + } ares__destroy_servers_state(channel); - for (srvr = servers; srvr; srvr = srvr->next) - { - num_srvrs++; - } + for (srvr = servers; srvr; srvr = srvr->next) { + num_srvrs++; + } - if (num_srvrs > 0) - { - /* Allocate storage for servers state */ - channel->servers = ares_malloc(num_srvrs * sizeof(*channel->servers)); - if (!channel->servers) - { - return ARES_ENOMEM; - } - memset(channel->servers, 0, num_srvrs * sizeof(*channel->servers)); - channel->nservers = num_srvrs; - /* Fill servers state address data */ - for (i = 0, srvr = servers; srvr; i++, srvr = srvr->next) - { - channel->servers[i].addr.family = srvr->family; - channel->servers[i].addr.udp_port = 0; - channel->servers[i].addr.tcp_port = 0; - if (srvr->family == AF_INET) - memcpy(&channel->servers[i].addr.addrV4, &srvr->addrV4, - sizeof(srvr->addrV4)); - else - memcpy(&channel->servers[i].addr.addrV6, &srvr->addrV6, - sizeof(srvr->addrV6)); - } - /* Initialize servers state remaining data */ - ares__init_servers_state(channel); + if (num_srvrs > 0) { + /* Allocate storage for servers state */ + channel->servers = ares_malloc(num_srvrs * sizeof(*channel->servers)); + if (!channel->servers) { + return ARES_ENOMEM; } + memset(channel->servers, 0, num_srvrs * sizeof(*channel->servers)); + channel->nservers = num_srvrs; + /* Fill servers state address data */ + for (i = 0, srvr = servers; srvr; i++, srvr = srvr->next) { + channel->servers[i].addr.family = srvr->family; + channel->servers[i].addr.udp_port = 0; + channel->servers[i].addr.tcp_port = 0; + if (srvr->family == AF_INET) { + memcpy(&channel->servers[i].addr.addrV4, &srvr->addrV4, + sizeof(srvr->addrV4)); + } else { + memcpy(&channel->servers[i].addr.addrV6, &srvr->addrV6, + sizeof(srvr->addrV6)); + } + } + /* Initialize servers state remaining data */ + ares__init_servers_state(channel); + } return ARES_SUCCESS; } -int ares_set_servers_ports(ares_channel channel, +int ares_set_servers_ports(ares_channel channel, struct ares_addr_port_node *servers) { struct ares_addr_port_node *srvr; - int num_srvrs = 0; - int i; + size_t num_srvrs = 0; + size_t i; - if (ares_library_initialized() != ARES_SUCCESS) - return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + if (ares_library_initialized() != ARES_SUCCESS) { + return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + } - if (!channel) + if (!channel) { return ARES_ENODATA; + } - if (ares__llist_len(channel->all_queries) != 0) + if (ares__llist_len(channel->all_queries) != 0) { return ARES_ENOTIMP; + } ares__destroy_servers_state(channel); - for (srvr = servers; srvr; srvr = srvr->next) - { - num_srvrs++; - } + for (srvr = servers; srvr; srvr = srvr->next) { + num_srvrs++; + } - if (num_srvrs > 0) - { - /* Allocate storage for servers state */ - channel->servers = ares_malloc(num_srvrs * sizeof(*channel->servers)); - if (!channel->servers) - { - return ARES_ENOMEM; - } - memset(channel->servers, 0, num_srvrs * sizeof(*channel->servers)); - channel->nservers = num_srvrs; - /* Fill servers state address data */ - for (i = 0, srvr = servers; srvr; i++, srvr = srvr->next) - { - channel->servers[i].addr.family = srvr->family; - channel->servers[i].addr.udp_port = htons((unsigned short)srvr->udp_port); - channel->servers[i].addr.tcp_port = htons((unsigned short)srvr->tcp_port); - if (srvr->family == AF_INET) - memcpy(&channel->servers[i].addr.addrV4, &srvr->addrV4, - sizeof(srvr->addrV4)); - else - memcpy(&channel->servers[i].addr.addrV6, &srvr->addrV6, - sizeof(srvr->addrV6)); - } - /* Initialize servers state remaining data */ - ares__init_servers_state(channel); + if (num_srvrs > 0) { + /* Allocate storage for servers state */ + channel->servers = ares_malloc(num_srvrs * sizeof(*channel->servers)); + if (!channel->servers) { + return ARES_ENOMEM; + } + memset(channel->servers, 0, num_srvrs * sizeof(*channel->servers)); + channel->nservers = num_srvrs; + /* Fill servers state address data */ + for (i = 0, srvr = servers; srvr; i++, srvr = srvr->next) { + channel->servers[i].addr.family = srvr->family; + channel->servers[i].addr.udp_port = htons((unsigned short)srvr->udp_port); + channel->servers[i].addr.tcp_port = htons((unsigned short)srvr->tcp_port); + if (srvr->family == AF_INET) { + memcpy(&channel->servers[i].addr.addrV4, &srvr->addrV4, + sizeof(srvr->addrV4)); + } else { + memcpy(&channel->servers[i].addr.addrV6, &srvr->addrV6, + sizeof(srvr->addrV6)); + } } + /* Initialize servers state remaining data */ + ares__init_servers_state(channel); + } return ARES_SUCCESS; } /* Incomming string format: host[:port][,host[:port]]... */ /* IPv6 addresses with ports require square brackets [fe80::1%lo0]:53 */ -static int set_servers_csv(ares_channel channel, - const char* _csv, int use_port) +static ares_status_t set_servers_csv(ares_channel channel, const char *_csv, + int use_port) { - size_t i; - char* csv = NULL; - char* ptr; - char* start_host; - int cc = 0; - int rv = ARES_SUCCESS; + size_t i; + char *csv = NULL; + char *ptr; + char *start_host; + int cc = 0; + ares_status_t status = ARES_SUCCESS; struct ares_addr_port_node *servers = NULL; - struct ares_addr_port_node *last = NULL; + struct ares_addr_port_node *last = NULL; - if (ares_library_initialized() != ARES_SUCCESS) - return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + if (ares_library_initialized() != ARES_SUCCESS) { + return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */ + } - if (!channel) + if (!channel) { return ARES_ENODATA; + } - i = strlen(_csv); - if (i == 0) - return ARES_SUCCESS; /* blank all servers */ + i = ares_strlen(_csv); + if (i == 0) { + return ARES_SUCCESS; /* blank all servers */ + } csv = ares_malloc(i + 2); - if (!csv) + if (!csv) { return ARES_ENOMEM; + } - strcpy(csv, _csv); - if (csv[i-1] != ',') { /* make parsing easier by ensuring ending ',' */ - csv[i] = ','; - csv[i+1] = 0; + ares_strcpy(csv, _csv, i + 2); + if (csv[i - 1] != ',') { /* make parsing easier by ensuring ending ',' */ + csv[i] = ','; + csv[i + 1] = 0; } start_host = csv; @@ -295,18 +288,16 @@ static int set_servers_csv(ares_channel channel, /* count colons to determine if we have an IPv6 number or IPv4 with port */ cc++; - } - else if (*ptr == '[') { + } else if (*ptr == '[') { /* move start_host if an open square bracket is found wrapping an IPv6 address */ start_host = ptr + 1; - } - else if (*ptr == ',') { - char* pp = ptr - 1; - char* p = ptr; - int port = 0; - struct in_addr in4; - struct ares_in6_addr in6; + } else if (*ptr == ',') { + char *pp = ptr - 1; + char *p = ptr; + int port = 0; + struct in_addr in4; + struct ares_in6_addr in6; struct ares_addr_port_node *s = NULL; *ptr = 0; /* null terminate host:port string */ @@ -315,11 +306,13 @@ static int set_servers_csv(ares_channel channel, while (pp > start_host) { /* a single close square bracket followed by a colon, ']:' indicates an IPv6 address with port */ - if ((*pp == ']') && (*p == ':')) + if ((*pp == ']') && (*p == ':')) { break; /* found port */ + } /* a single colon, ':' indicates an IPv4 address with port */ - if ((*pp == ':') && (cc == 1)) + if ((*pp == ':') && (cc == 1)) { break; /* found port */ + } if (!(ISDIGIT(*pp) || (*pp == ':'))) { /* Found end of digits before we found :, so wasn't a port */ /* must allow ':' for IPv6 case of ']:' indicates we found a port */ @@ -333,85 +326,80 @@ static int set_servers_csv(ares_channel channel, /* Found it. Parse over the port number */ /* when an IPv6 address is wrapped with square brackets the port starts at pp + 2 */ - if (*pp == ']') + if (*pp == ']') { p++; /* move p before ':' */ + } /* p will point to the start of the port */ port = (int)strtol(p, NULL, 10); - *pp = 0; /* null terminate host */ + *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) { + if (!ares_inet_pton(AF_INET, start_host, &in4)) { /* Ok, try IPv6 then */ - rv = ares_inet_pton(AF_INET6, start_host, &in6); - if (!rv) { - rv = ARES_EBADSTR; + if (!ares_inet_pton(AF_INET6, start_host, &in6)) { + status = ARES_EBADSTR; goto out; } /* was ipv6, add new server */ s = ares_malloc(sizeof(*s)); if (!s) { - rv = ARES_ENOMEM; + status = ARES_ENOMEM; goto out; } s->family = AF_INET6; memcpy(&s->addr, &in6, sizeof(struct ares_in6_addr)); - } - else { + } else { /* was ipv4, add new server */ s = ares_malloc(sizeof(*s)); if (!s) { - rv = ARES_ENOMEM; + status = ARES_ENOMEM; goto out; } s->family = AF_INET; memcpy(&s->addr, &in4, sizeof(struct in_addr)); } if (s) { - s->udp_port = use_port ? port: 0; + s->udp_port = use_port ? port : 0; s->tcp_port = s->udp_port; - s->next = NULL; + s->next = NULL; if (last) { last->next = s; /* need to move last to maintain the linked list */ last = last->next; - } - else { + } else { servers = s; - last = s; + last = s; } } /* Set up for next one */ start_host = ptr + 1; - cc = 0; + cc = 0; } } - rv = ares_set_servers_ports(channel, servers); + status = (ares_status_t)ares_set_servers_ports(channel, servers); - out: - if (csv) +out: + if (csv) { ares_free(csv); + } while (servers) { struct ares_addr_port_node *s = servers; - servers = servers->next; + servers = servers->next; ares_free(s); } - return rv; + return status; } -int ares_set_servers_csv(ares_channel channel, - const char* _csv) +int ares_set_servers_csv(ares_channel channel, const char *_csv) { - return set_servers_csv(channel, _csv, FALSE); + return (int)set_servers_csv(channel, _csv, FALSE); } -int ares_set_servers_ports_csv(ares_channel channel, - const char* _csv) +int ares_set_servers_ports_csv(ares_channel channel, const char *_csv) { - return set_servers_csv(channel, _csv, TRUE); + return (int)set_servers_csv(channel, _csv, TRUE); } - diff --git a/deps/cares/src/lib/ares_parse_a_reply.c b/deps/cares/src/lib/ares_parse_a_reply.c index b50dea3884cfbb..f576575fe4b2fd 100644 --- a/deps/cares/src/lib/ares_parse_a_reply.c +++ b/deps/cares/src/lib/ares_parse_a_reply.c @@ -56,38 +56,39 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen, int *naddrttls) { struct ares_addrinfo ai; - char *question_hostname = NULL; - int status; - int req_naddrttls = 0; - - if (naddrttls) - { - req_naddrttls = *naddrttls; - *naddrttls = 0; - } + char *question_hostname = NULL; + ares_status_t status; + size_t req_naddrttls = 0; + + if (alen < 0) { + return ARES_EBADRESP; + } + + if (naddrttls) { + req_naddrttls = (size_t)*naddrttls; + *naddrttls = 0; + } memset(&ai, 0, sizeof(ai)); - status = ares__parse_into_addrinfo(abuf, alen, 0, 0, &ai); - if (status != ARES_SUCCESS && status != ARES_ENODATA) - { - goto fail; - } + status = ares__parse_into_addrinfo(abuf, (size_t)alen, 0, 0, &ai); + if (status != ARES_SUCCESS && status != ARES_ENODATA) { + goto fail; + } - if (host != NULL) - { - status = ares__addrinfo2hostent(&ai, AF_INET, host); - if (status != ARES_SUCCESS && status != ARES_ENODATA) - { - goto fail; - } + if (host != NULL) { + status = ares__addrinfo2hostent(&ai, AF_INET, host); + if (status != ARES_SUCCESS && status != ARES_ENODATA) { + goto fail; } + } - if (addrttls != NULL && req_naddrttls) - { - ares__addrinfo2addrttl(&ai, AF_INET, req_naddrttls, addrttls, - NULL, naddrttls); - } + if (addrttls != NULL && req_naddrttls) { + size_t temp_naddrttls = 0; + ares__addrinfo2addrttl(&ai, AF_INET, req_naddrttls, addrttls, NULL, + &temp_naddrttls); + *naddrttls = (int)temp_naddrttls; + } fail: @@ -96,5 +97,5 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen, ares_free(ai.name); ares_free(question_hostname); - return status; + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_aaaa_reply.c b/deps/cares/src/lib/ares_parse_aaaa_reply.c index 7a839829eb57c5..cef4ad7f80948f 100644 --- a/deps/cares/src/lib/ares_parse_aaaa_reply.c +++ b/deps/cares/src/lib/ares_parse_aaaa_reply.c @@ -58,38 +58,39 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, int *naddrttls) { struct ares_addrinfo ai; - char *question_hostname = NULL; - int status; - int req_naddrttls = 0; + char *question_hostname = NULL; + ares_status_t status; + size_t req_naddrttls = 0; - if (naddrttls) - { - req_naddrttls = *naddrttls; - *naddrttls = 0; - } + if (alen < 0) { + return ARES_EBADRESP; + } + + if (naddrttls) { + req_naddrttls = (size_t)*naddrttls; + *naddrttls = 0; + } memset(&ai, 0, sizeof(ai)); - status = ares__parse_into_addrinfo(abuf, alen, 0, 0, &ai); - if (status != ARES_SUCCESS && status != ARES_ENODATA) - { - goto fail; - } + status = ares__parse_into_addrinfo(abuf, (size_t)alen, 0, 0, &ai); + if (status != ARES_SUCCESS && status != ARES_ENODATA) { + goto fail; + } - if (host != NULL) - { - status = ares__addrinfo2hostent(&ai, AF_INET6, host); - if (status != ARES_SUCCESS && status != ARES_ENODATA) - { - goto fail; - } + if (host != NULL) { + status = ares__addrinfo2hostent(&ai, AF_INET6, host); + if (status != ARES_SUCCESS && status != ARES_ENODATA) { + goto fail; } + } - if (addrttls != NULL && req_naddrttls) - { - ares__addrinfo2addrttl(&ai, AF_INET6, req_naddrttls, NULL, - addrttls, naddrttls); - } + if (addrttls != NULL && req_naddrttls) { + size_t temp_naddrttls = 0; + ares__addrinfo2addrttl(&ai, AF_INET6, req_naddrttls, NULL, addrttls, + &temp_naddrttls); + *naddrttls = (int)temp_naddrttls; + } fail: ares__freeaddrinfo_cnames(ai.cnames); @@ -97,6 +98,5 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, ares_free(question_hostname); ares_free(ai.name); - return status; + return (int)status; } - diff --git a/deps/cares/src/lib/ares_parse_caa_reply.c b/deps/cares/src/lib/ares_parse_caa_reply.c index f4581c124a2049..6c30305ee18935 100644 --- a/deps/cares/src/lib/ares_parse_caa_reply.c +++ b/deps/cares/src/lib/ares_parse_caa_reply.c @@ -1,6 +1,6 @@ /* MIT License * - * Copyright (c) The c-ares project and its contributors + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -24,210 +24,116 @@ * SPDX-License-Identifier: MIT */ -/* ============================================================================= - * NOTE: The below copyright is preserved from the original author. In - * October 2023, there were attempts made to contact the author in order - * gain approval for relicensing to the modern MIT license from the - * below 1989 variant, but all contact information for the author is - * no longer valid. - * - * Copyright (c) 2020 - * - * Permission to use, copy, modify, and distribute this - * software and its documentation for any purpose and without - * fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting - * documentation, and that the name of M.I.T. not be used in - * advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. - * M.I.T. makes no representations about the suitability of - * this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * ============================================================================= - */ - #include "ares_setup.h" - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#include "ares_nameser.h" - -#ifdef HAVE_STRINGS_H -# include -#endif - #include "ares.h" -#include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" -int -ares_parse_caa_reply (const unsigned char *abuf, int alen, - struct ares_caa_reply **caa_out) +int ares_parse_caa_reply(const unsigned char *abuf, int alen_int, + struct ares_caa_reply **caa_out) { - 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; + ares_status_t status; + size_t alen; struct ares_caa_reply *caa_head = NULL; struct ares_caa_reply *caa_last = NULL; struct ares_caa_reply *caa_curr; + ares_dns_record_t *dnsrec = NULL; + size_t i; - /* Set *caa_out to NULL for all failure cases. */ *caa_out = NULL; - /* Give up if abuf doesn't have room for a header. */ - if (alen < HFIXEDSZ) + if (alen_int < 0) { return ARES_EBADRESP; + } + + alen = (size_t)alen_int; + + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } + + if (ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER) == 0) { + status = ARES_ENODATA; + goto done; + } + + for (i = 0; i < ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); i++) { + const unsigned char *ptr; + size_t ptr_len; + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); + + if (rr == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; + } - /* Fetch the question and answer count from the header. */ - qdcount = DNS_HEADER_QDCOUNT (abuf); - ancount = DNS_HEADER_ANCOUNT (abuf); - if (qdcount != 1) - return ARES_EBADRESP; - if (ancount == 0) - return ARES_ENODATA; - - /* Expand the name from the question, and skip past the question. */ - aptr = abuf + HFIXEDSZ; - status = ares_expand_name (aptr, abuf, alen, &hostname, &len); - if (status != ARES_SUCCESS) - return status; - - if (aptr + len + QFIXEDSZ > abuf + alen) - { - ares_free (hostname); - return ARES_EBADRESP; + /* XXX: Why do we allow Chaos class? */ + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN && + ares_dns_rr_get_class(rr) != ARES_CLASS_CHAOS) { + continue; } - 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; - if (aptr + rr_len > abuf + alen) - { - status = ARES_EBADRESP; - break; - } - - /* Check if we are really looking at a CAA record */ - if ((rr_class == C_IN || rr_class == C_CHAOS) && rr_type == T_CAA) - { - strptr = aptr; - - /* Allocate storage for this CAA answer appending it to the list */ - caa_curr = ares_malloc_data(ARES_DATATYPE_CAA_REPLY); - if (!caa_curr) - { - status = ARES_ENOMEM; - break; - } - if (caa_last) - { - caa_last->next = caa_curr; - } - else - { - caa_head = caa_curr; - } - caa_last = caa_curr; - if (rr_len < 2) - { - status = ARES_EBADRESP; - break; - } - caa_curr->critical = (int)*strptr++; - caa_curr->plength = (int)*strptr++; - if (caa_curr->plength <= 0 || (int)caa_curr->plength >= rr_len - 2) - { - status = ARES_EBADRESP; - break; - } - caa_curr->property = ares_malloc (caa_curr->plength + 1/* Including null byte */); - if (caa_curr->property == NULL) - { - status = ARES_ENOMEM; - break; - } - memcpy ((char *) caa_curr->property, strptr, caa_curr->plength); - /* Make sure we NULL-terminate */ - caa_curr->property[caa_curr->plength] = 0; - strptr += caa_curr->plength; - - caa_curr->length = rr_len - caa_curr->plength - 2; - if (caa_curr->length <= 0) - { - status = ARES_EBADRESP; - break; - } - caa_curr->value = ares_malloc (caa_curr->length + 1/* Including null byte */); - if (caa_curr->value == NULL) - { - status = ARES_ENOMEM; - break; - } - memcpy ((char *) caa_curr->value, strptr, caa_curr->length); - /* Make sure we NULL-terminate */ - caa_curr->value[caa_curr->length] = 0; - } - - /* Propagate any failures */ - if (status != ARES_SUCCESS) - { - break; - } - - /* Don't lose memory in the next iteration */ - ares_free (rr_name); - rr_name = NULL; - - /* Move on to the next record */ - aptr += rr_len; + + /* Only looking for CAA records */ + if (ares_dns_rr_get_type(rr) != ARES_REC_TYPE_CAA) { + continue; } - if (hostname) - ares_free (hostname); - if (rr_name) - ares_free (rr_name); + /* Allocate storage for this CAA answer appending it to the list */ + caa_curr = ares_malloc_data(ARES_DATATYPE_CAA_REPLY); + if (caa_curr == NULL) { + status = ARES_ENOMEM; + goto done; + } - /* clean up on error */ - if (status != ARES_SUCCESS) - { - if (caa_head) - ares_free_data (caa_head); - return status; + /* Link in the record */ + if (caa_last) { + caa_last->next = caa_curr; + } else { + caa_head = caa_curr; + } + caa_last = caa_curr; + + caa_curr->critical = ares_dns_rr_get_u8(rr, ARES_RR_CAA_CRITICAL); + caa_curr->property = + (unsigned char *)ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_CAA_TAG)); + if (caa_curr->property == NULL) { + status = ARES_ENOMEM; + break; + } + /* RFC6844 says this can only be ascii, so not sure why we're recording a + * length */ + caa_curr->plength = ares_strlen((const char *)caa_curr->property); + + ptr = ares_dns_rr_get_bin(rr, ARES_RR_CAA_VALUE, &ptr_len); + if (ptr == NULL) { + status = ARES_EBADRESP; + goto done; } - /* everything looks fine, return the data */ - *caa_out = caa_head; + /* Wants NULL termination for some reason */ + caa_curr->value = ares_malloc(ptr_len + 1); + if (caa_curr->value == NULL) { + status = ARES_ENOMEM; + goto done; + } + memcpy(caa_curr->value, ptr, ptr_len); + caa_curr->value[ptr_len] = 0; + caa_curr->length = ptr_len; + } - return ARES_SUCCESS; +done: + /* clean up on error */ + if (status != ARES_SUCCESS) { + if (caa_head) { + ares_free_data(caa_head); + } + } else { + /* everything looks fine, return the data */ + *caa_out = caa_head; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_mx_reply.c b/deps/cares/src/lib/ares_parse_mx_reply.c index 36dfe3d933b4ac..db7155d2e8fe4b 100644 --- a/deps/cares/src/lib/ares_parse_mx_reply.c +++ b/deps/cares/src/lib/ares_parse_mx_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) 2010 Jeremy Lal + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -26,149 +25,88 @@ */ #include "ares_setup.h" - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#include "ares_nameser.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) +int ares_parse_mx_reply(const unsigned char *abuf, int alen_int, + 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; + ares_status_t status; + size_t alen; struct ares_mx_reply *mx_head = NULL; struct ares_mx_reply *mx_last = NULL; struct ares_mx_reply *mx_curr; + ares_dns_record_t *dnsrec = NULL; + size_t i; - /* 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) + if (alen_int < 0) { 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; + alen = (size_t)alen_int; - /* 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; + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } - if (aptr + len + QFIXEDSZ > abuf + alen) - { - ares_free (hostname); - return ARES_EBADRESP; - } - aptr += len + QFIXEDSZ; + if (ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER) == 0) { + status = ARES_ENODATA; + goto done; + } - /* 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; - if (aptr + rr_len > abuf + alen) - { - status = ARES_EBADRESP; - break; - } + for (i = 0; i < ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); - /* 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; - } + if (rr == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; + } - /* 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; + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || + ares_dns_rr_get_type(rr) != ARES_REC_TYPE_MX) { + continue; + } - vptr = aptr; - mx_curr->priority = DNS__16BIT(vptr); - vptr += sizeof(unsigned short); + /* Allocate storage for this MX answer appending it to the list */ + mx_curr = ares_malloc_data(ARES_DATATYPE_MX_REPLY); + if (mx_curr == NULL) { + status = ARES_ENOMEM; + goto done; + } - status = ares_expand_name (vptr, abuf, alen, &mx_curr->host, &len); - if (status != ARES_SUCCESS) - break; - } + /* Link in the record */ + if (mx_last) { + mx_last->next = mx_curr; + } else { + mx_head = mx_curr; + } + mx_last = mx_curr; - /* Don't lose memory in the next iteration */ - ares_free (rr_name); - rr_name = NULL; + mx_curr->priority = ares_dns_rr_get_u16(rr, ARES_RR_MX_PREFERENCE); + mx_curr->host = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_MX_EXCHANGE)); - /* Move on to the next record */ - aptr += rr_len; + if (mx_curr->host == NULL) { + status = ARES_ENOMEM; + goto done; } + } - if (hostname) - ares_free (hostname); - if (rr_name) - ares_free (rr_name); - +done: /* clean up on error */ - if (status != ARES_SUCCESS) - { - if (mx_head) - ares_free_data (mx_head); - return status; + if (status != ARES_SUCCESS) { + if (mx_head) { + ares_free_data(mx_head); } - - /* everything looks fine, return the data */ - *mx_out = mx_head; - - return ARES_SUCCESS; + } else { + /* everything looks fine, return the data */ + *mx_out = mx_head; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_naptr_reply.c b/deps/cares/src/lib/ares_parse_naptr_reply.c index 81dfb02a2af9eb..1a304ccdd3a12d 100644 --- a/deps/cares/src/lib/ares_parse_naptr_reply.c +++ b/deps/cares/src/lib/ares_parse_naptr_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) 2009 Jakub Hrozek + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -25,168 +24,111 @@ * SPDX-License-Identifier: MIT */ #include "ares_setup.h" - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#include "ares_nameser.h" - #include "ares.h" -#include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" -int -ares_parse_naptr_reply (const unsigned char *abuf, int alen, - struct ares_naptr_reply **naptr_out) +int ares_parse_naptr_reply(const unsigned char *abuf, int alen_int, + 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; + ares_status_t status; + size_t alen; struct ares_naptr_reply *naptr_head = NULL; struct ares_naptr_reply *naptr_last = NULL; struct ares_naptr_reply *naptr_curr; + ares_dns_record_t *dnsrec = NULL; + size_t i; - /* 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) + if (alen_int < 0) { 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; + alen = (size_t)alen_int; - if (aptr + len + QFIXEDSZ > abuf + alen) - { - ares_free (hostname); - return ARES_EBADRESP; - } - aptr += len + QFIXEDSZ; - - /* Examine each answer resource record (RR) in turn. */ - for (i = 0; i < ancount; i++) - { - /* Decode the RR up to the data field. */ - status = ares_expand_name (aptr, abuf, alen, &rr_name, &len); - if (status != ARES_SUCCESS) - { - break; - } - aptr += len; - if (aptr + RRFIXEDSZ > abuf + alen) - { - status = ARES_EBADRESP; - break; - } - rr_type = DNS_RR_TYPE (aptr); - rr_class = DNS_RR_CLASS (aptr); - rr_len = DNS_RR_LEN (aptr); - aptr += RRFIXEDSZ; - if (aptr + rr_len > abuf + alen) - { - status = ARES_EBADRESP; - break; - } - - /* Check if we are really looking at a NAPTR record */ - if (rr_class == C_IN && rr_type == T_NAPTR) - { - /* parse the NAPTR record itself */ + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } - /* RR must contain at least 7 bytes = 2 x int16 + 3 x name */ - if (rr_len < 7) - { - status = ARES_EBADRESP; - break; - } + if (ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER) == 0) { + status = ARES_ENODATA; + goto done; + } - /* 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; + for (i = 0; i < ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); - 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; + if (rr == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; + } - status = ares_expand_string(vptr, abuf, alen, &naptr_curr->service, &len); - if (status != ARES_SUCCESS) - break; - vptr += len; + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || + ares_dns_rr_get_type(rr) != ARES_REC_TYPE_NAPTR) { + continue; + } - status = ares_expand_string(vptr, abuf, alen, &naptr_curr->regexp, &len); - if (status != ARES_SUCCESS) - break; - vptr += len; + /* Allocate storage for this NAPTR answer appending it to the list */ + naptr_curr = ares_malloc_data(ARES_DATATYPE_NAPTR_REPLY); + if (naptr_curr == NULL) { + status = ARES_ENOMEM; + goto done; + } - status = ares_expand_name(vptr, abuf, alen, &naptr_curr->replacement, &len); - if (status != ARES_SUCCESS) - break; - } + /* Link in the record */ + if (naptr_last) { + naptr_last->next = naptr_curr; + } else { + naptr_head = naptr_curr; + } + naptr_last = naptr_curr; - /* Don't lose memory in the next iteration */ - ares_free (rr_name); - rr_name = NULL; + naptr_curr->order = ares_dns_rr_get_u16(rr, ARES_RR_NAPTR_ORDER); + naptr_curr->preference = ares_dns_rr_get_u16(rr, ARES_RR_NAPTR_PREFERENCE); - /* Move on to the next record */ - aptr += rr_len; + /* XXX: Why is this unsigned char * ? */ + naptr_curr->flags = (unsigned char *)ares_strdup( + ares_dns_rr_get_str(rr, ARES_RR_NAPTR_FLAGS)); + if (naptr_curr->flags == NULL) { + status = ARES_ENOMEM; + goto done; } + /* XXX: Why is this unsigned char * ? */ + naptr_curr->service = (unsigned char *)ares_strdup( + ares_dns_rr_get_str(rr, ARES_RR_NAPTR_SERVICES)); + if (naptr_curr->service == NULL) { + status = ARES_ENOMEM; + goto done; + } + /* XXX: Why is this unsigned char * ? */ + naptr_curr->regexp = (unsigned char *)ares_strdup( + ares_dns_rr_get_str(rr, ARES_RR_NAPTR_REGEXP)); + if (naptr_curr->regexp == NULL) { + status = ARES_ENOMEM; + goto done; + } + naptr_curr->replacement = + ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_NAPTR_REPLACEMENT)); + if (naptr_curr->replacement == NULL) { + status = ARES_ENOMEM; + goto done; + } + } - if (hostname) - ares_free (hostname); - if (rr_name) - ares_free (rr_name); - +done: /* clean up on error */ - if (status != ARES_SUCCESS) - { - if (naptr_head) - ares_free_data (naptr_head); - return status; + if (status != ARES_SUCCESS) { + if (naptr_head) { + ares_free_data(naptr_head); } - - /* everything looks fine, return the data */ - *naptr_out = naptr_head; - - return ARES_SUCCESS; + } else { + /* everything looks fine, return the data */ + *naptr_out = naptr_head; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_ns_reply.c b/deps/cares/src/lib/ares_parse_ns_reply.c index 28083d44c11202..18fda82f412174 100644 --- a/deps/cares/src/lib/ares_parse_ns_reply.c +++ b/deps/cares/src/lib/ares_parse_ns_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) The c-ares project and its contributors + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -25,11 +24,6 @@ * SPDX-License-Identifier: MIT */ -/* - * ares_parse_ns_reply created by Vlad Dinulescu - * on behalf of AVIRA Gmbh - http://www.avira.com - */ - #include "ares_setup.h" #ifdef HAVE_NETINET_IN_H @@ -42,148 +36,122 @@ # include #endif -#include "ares_nameser.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 ) +int ares_parse_ns_reply(const unsigned char *abuf, int alen_int, + 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. */ + ares_status_t status; + size_t alen; + size_t nscount = 0; + struct hostent *hostent = NULL; + const char *hostname = NULL; + ares_dns_record_t *dnsrec = NULL; + size_t i; + size_t ancount; + *host = NULL; - /* Give up if abuf doesn't have room for a header. */ - if ( alen < HFIXEDSZ ) + if (alen_int < 0) { 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; + alen = (size_t)alen_int; - /* 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, 0); - if ( status != ARES_SUCCESS ) - return status; - if ( aptr + len + QFIXEDSZ > abuf + alen ) - { - ares_free( hostname ); - return ARES_EBADRESP; + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } + + ancount = ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); + if (ancount == 0) { + status = ARES_ENODATA; + goto done; + } + + /* Response structure */ + hostent = ares_malloc(sizeof(*hostent)); + if (hostent == NULL) { + status = ARES_ENOMEM; + goto done; + } + + memset(hostent, 0, sizeof(*hostent)); + + hostent->h_addr_list = ares_malloc(sizeof(*hostent->h_addr_list)); + if (hostent->h_addr_list == NULL) { + status = ARES_ENOMEM; + goto done; + } + hostent->h_addr_list[0] = NULL; + hostent->h_addrtype = AF_INET; + hostent->h_length = sizeof(struct in_addr); + + /* Fill in hostname */ + status = ares_dns_record_query_get(dnsrec, 0, &hostname, NULL, NULL); + if (status != ARES_SUCCESS) { + goto done; + } + hostent->h_name = ares_strdup(hostname); + if (hostent->h_name == NULL) { + status = ARES_ENOMEM; + goto done; } - aptr += len + QFIXEDSZ; - - /* Allocate nameservers array; ancount gives an upper bound */ - nameservers = ares_malloc( ( ancount + 1 ) * sizeof( char * ) ); - if ( !nameservers ) - { - ares_free( hostname ); - return ARES_ENOMEM; + + /* Preallocate the maximum number + 1 */ + hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases)); + if (hostent->h_aliases == NULL) { + status = ARES_ENOMEM; + goto done; } - 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, 0); - if ( status != ARES_SUCCESS ) - break; - aptr += len; - if ( aptr + RRFIXEDSZ > abuf + alen ) - { + memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases)); + + for (i = 0; i < ancount; i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); + + if (rr == NULL) { + /* Shouldn't be possible */ status = ARES_EBADRESP; - ares_free(rr_name); - break; - } - rr_type = DNS_RR_TYPE( aptr ); - rr_class = DNS_RR_CLASS( aptr ); - rr_len = DNS_RR_LEN( aptr ); - aptr += RRFIXEDSZ; - if (aptr + rr_len > abuf + alen) - { - ares_free(rr_name); - status = ARES_EBADRESP; - break; - } - - if ( rr_class == C_IN && rr_type == T_NS ) - { - /* Decode the RR data and add it to the nameservers list */ - status = ares__expand_name_for_response( aptr, abuf, alen, &rr_data, - &len, 1); - if ( status != ARES_SUCCESS ) - { - ares_free(rr_name); - break; - } - - nameservers[nameservers_num] = ares_malloc(strlen(rr_data)+1); - - if (nameservers[nameservers_num]==NULL) - { - ares_free(rr_name); - ares_free(rr_data); - status=ARES_ENOMEM; - break; - } - strcpy(nameservers[nameservers_num],rr_data); - ares_free(rr_data); - - nameservers_num++; + goto done; } - ares_free( rr_name ); + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || + ares_dns_rr_get_type(rr) != ARES_REC_TYPE_NS) { + continue; + } - aptr += rr_len; - if ( aptr > abuf + alen ) - { /* LCOV_EXCL_START: already checked above */ + hostname = ares_dns_rr_get_str(rr, ARES_RR_NS_NSDNAME); + if (hostname == NULL) { status = ARES_EBADRESP; - break; - } /* LCOV_EXCL_STOP */ + goto done; + } + + hostent->h_aliases[nscount] = ares_strdup(hostname); + if (hostent->h_aliases[nscount] == NULL) { + status = ARES_ENOMEM; + goto done; + } + nscount++; } - if ( status == ARES_SUCCESS && nameservers_num == 0 ) - { + if (nscount == 0) { status = ARES_ENODATA; + } else { + status = ARES_SUCCESS; } - if ( status == ARES_SUCCESS ) - { - /* We got our answer. Allocate memory to build the host entry. */ - nameservers[nameservers_num] = NULL; - hostent = ares_malloc( sizeof( struct hostent ) ); - if ( hostent ) - { - hostent->h_addr_list = ares_malloc( 1 * sizeof( char * ) ); - if ( hostent->h_addr_list ) - { - /* Fill in the hostent and return successfully. */ - hostent->h_name = hostname; - hostent->h_aliases = nameservers; - hostent->h_addrtype = AF_INET; - hostent->h_length = sizeof( struct in_addr ); - hostent->h_addr_list[0] = NULL; - *host = hostent; - return ARES_SUCCESS; - } - ares_free( hostent ); + +done: + if (status != ARES_SUCCESS) { + ares_free_hostent(hostent); + /* Compatibility */ + if (status == ARES_EBADNAME) { + status = ARES_EBADRESP; } - status = ARES_ENOMEM; + } else { + *host = hostent; } - for ( i = 0; i < nameservers_num; i++ ) - ares_free( nameservers[i] ); - ares_free( nameservers ); - ares_free( hostname ); - return status; + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_ptr_reply.c b/deps/cares/src/lib/ares_parse_ptr_reply.c index 0606d35f1e8254..f03f601d4c376b 100644 --- a/deps/cares/src/lib/ares_parse_ptr_reply.c +++ b/deps/cares/src/lib/ares_parse_ptr_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) The c-ares project and its contributors + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -34,206 +33,166 @@ # include #endif -#include "ares_nameser.h" - -#ifdef HAVE_STRINGS_H -# include -#endif - #include "ares.h" -#include "ares_dns.h" -#include "ares_nowarn.h" #include "ares_private.h" -int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr, - int addrlen, int family, struct hostent **host) +int ares_parse_ptr_reply(const unsigned char *abuf, int alen_int, + 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 = NULL; - int aliascnt = 0; - int alias_alloc = 8; - char ** aliases; - size_t rr_data_len; - - /* Set *host to NULL for all failure cases. */ + ares_status_t status; + size_t alen; + size_t ptrcount = 0; + struct hostent *hostent = NULL; + const char *hostname = NULL; + const char *ptrname = NULL; + ares_dns_record_t *dnsrec = NULL; + size_t i; + size_t ancount; + *host = NULL; - /* Give up if abuf doesn't have room for a header. */ - if (alen < HFIXEDSZ) + if (alen_int < 0) { 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; + alen = (size_t)alen_int; - /* 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, 0); - if (status != ARES_SUCCESS) - return status; - if (aptr + len + QFIXEDSZ > abuf + alen) - { - ares_free(ptrname); - return ARES_EBADRESP; - } - aptr += len + QFIXEDSZ; - - /* Examine each answer resource record (RR) in turn. */ - hostname = NULL; - aliases = ares_malloc(alias_alloc * sizeof(char *)); - if (!aliases) - { - ares_free(ptrname); - return ARES_ENOMEM; - } - for (i = 0; i < (int)ancount; i++) - { - /* Decode the RR up to the data field. */ - status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len, 0); - if (status != ARES_SUCCESS) - break; - aptr += len; - if (aptr + RRFIXEDSZ > abuf + alen) - { - ares_free(rr_name); - status = ARES_EBADRESP; - break; - } - rr_type = DNS_RR_TYPE(aptr); - rr_class = DNS_RR_CLASS(aptr); - rr_len = DNS_RR_LEN(aptr); - aptr += RRFIXEDSZ; - if (aptr + rr_len > abuf + alen) - { - ares_free(rr_name); - status = ARES_EBADRESP; - break; - } - - if (rr_class == C_IN && rr_type == T_PTR - && strcasecmp(rr_name, ptrname) == 0) - { - /* Decode the RR data and set hostname to it. */ - status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data, - &len, 1); - if (status != ARES_SUCCESS) - { - ares_free(rr_name); - break; - } - if (hostname) - ares_free(hostname); - hostname = rr_data; - rr_data_len = strlen(rr_data)+1; - aliases[aliascnt] = ares_malloc(rr_data_len * sizeof(char)); - if (!aliases[aliascnt]) - { - ares_free(rr_name); - status = ARES_ENOMEM; - break; - } - strncpy(aliases[aliascnt], rr_data, rr_data_len); - aliascnt++; - if (aliascnt >= alias_alloc) { - char **ptr; - alias_alloc *= 2; - ptr = ares_realloc(aliases, alias_alloc * sizeof(char *)); - if(!ptr) { - ares_free(rr_name); - status = ARES_ENOMEM; - break; - } - aliases = ptr; - } - } - - if (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, 1); - if (status != ARES_SUCCESS) - { - ares_free(rr_name); - break; - } - ares_free(ptrname); - ptrname = rr_data; - } - - ares_free(rr_name); - aptr += rr_len; - if (aptr > abuf + alen) - { /* LCOV_EXCL_START: already checked above */ - status = ARES_EBADRESP; - break; - } /* LCOV_EXCL_STOP */ - } + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } + + /* Fetch name from query as we will use it to compare later on. Old code + * did this check, so we'll retain it. */ + status = ares_dns_record_query_get(dnsrec, 0, &ptrname, NULL, NULL); + if (status != ARES_SUCCESS) { + goto done; + } - if (status == ARES_SUCCESS && !hostname) + ancount = ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); + if (ancount == 0) { status = ARES_ENODATA; - if (status == ARES_SUCCESS) - { - /* If we don't reach the end, we must have failed due to out of memory */ + goto done; + } + + /* Response structure */ + hostent = ares_malloc(sizeof(*hostent)); + if (hostent == NULL) { + status = ARES_ENOMEM; + goto done; + } + + memset(hostent, 0, sizeof(*hostent)); + + hostent->h_addr_list = ares_malloc(2 * sizeof(*hostent->h_addr_list)); + if (hostent->h_addr_list == NULL) { + status = ARES_ENOMEM; + goto done; + } + memset(hostent->h_addr_list, 0, 2 * sizeof(*hostent->h_addr_list)); + if (addr != NULL && addrlen > 0) { + hostent->h_addr_list[0] = ares_malloc((size_t)addrlen); + if (hostent->h_addr_list[0] == NULL) { status = ARES_ENOMEM; + goto done; + } + memcpy(hostent->h_addr_list[0], addr, (size_t)addrlen); + } + hostent->h_addrtype = family; + hostent->h_length = addrlen; + + /* Preallocate the maximum number + 1 */ + hostent->h_aliases = ares_malloc((ancount + 1) * sizeof(*hostent->h_aliases)); + if (hostent->h_aliases == NULL) { + status = ARES_ENOMEM; + goto done; + } + memset(hostent->h_aliases, 0, (ancount + 1) * sizeof(*hostent->h_aliases)); + + + /* Cycle through answers */ + for (i = 0; i < ancount; i++) { + const char *rname = NULL; + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); + + if (rr == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; + } - /* We got our answer. Allocate memory to build the host entry. */ - hostent = ares_malloc(sizeof(*hostent)); - if (!hostent) - goto fail; + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN) { + continue; + } - /* If we don't memset here, cleanups may fail */ - memset(hostent, 0, sizeof(*hostent)); + /* Any time we see a CNAME, replace our ptrname with its value */ + if (ares_dns_rr_get_type(rr) == ARES_REC_TYPE_CNAME) { + ptrname = ares_dns_rr_get_str(rr, ARES_RR_CNAME_CNAME); + if (ptrname == NULL) { + status = ARES_EBADRESP; + goto done; + } + } - hostent->h_addr_list = ares_malloc(2 * sizeof(char *)); - if (!hostent->h_addr_list) - goto fail; + /* Handling for PTR records below this, otherwise skip */ + if (ares_dns_rr_get_type(rr) != ARES_REC_TYPE_PTR) { + continue; + } + /* Old code compared the name in the rr to the ptrname, so we'll do that + * check here, but I'm not sure its necessary */ + rname = ares_dns_rr_get_name(rr); + if (rname == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; + } + if (strcasecmp(ptrname, rname) != 0) { + continue; + } - if (addr && addrlen) { - hostent->h_addr_list[0] = ares_malloc(addrlen); - if (!hostent->h_addr_list[0]) - goto fail; - } else { - hostent->h_addr_list[0] = NULL; - } + /* Save most recent PTR record as the hostname */ + hostname = ares_dns_rr_get_str(rr, ARES_RR_PTR_DNAME); + if (hostname == NULL) { + status = ARES_EBADRESP; + goto done; + } - hostent->h_aliases = ares_malloc((aliascnt+1) * sizeof (char *)); - if (!hostent->h_aliases) - goto fail; - - /* Fill in the hostent and return successfully. */ - hostent->h_name = hostname; - for (i=0 ; ih_aliases[i] = aliases[i]; - hostent->h_aliases[aliascnt] = NULL; - hostent->h_addrtype = aresx_sitoss(family); - hostent->h_length = aresx_sitoss(addrlen); - if (addr && addrlen) - memcpy(hostent->h_addr_list[0], addr, addrlen); - hostent->h_addr_list[1] = NULL; - *host = hostent; - ares_free(aliases); - ares_free(ptrname); - - return ARES_SUCCESS; + /* Append as an alias */ + hostent->h_aliases[ptrcount] = ares_strdup(hostname); + if (hostent->h_aliases[ptrcount] == NULL) { + status = ARES_ENOMEM; + goto done; } + ptrcount++; + } -fail: - ares_free_hostent(hostent); - - for (i=0 ; ih_name = ares_strdup(hostname); + if (hostent->h_name == NULL) { + status = ARES_ENOMEM; + goto done; + } + +done: + if (status != ARES_SUCCESS) { + ares_free_hostent(hostent); + /* Compatibility */ + if (status == ARES_EBADNAME) { + status = ARES_EBADRESP; + } + } else { + *host = hostent; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_soa_reply.c b/deps/cares/src/lib/ares_parse_soa_reply.c index f37ba191733d44..2777dbcb0bbe11 100644 --- a/deps/cares/src/lib/ares_parse_soa_reply.c +++ b/deps/cares/src/lib/ares_parse_soa_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) 2012 Marko Kreen + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -26,164 +25,93 @@ */ #include "ares_setup.h" - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#include "ares_nameser.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) +int ares_parse_soa_reply(const unsigned char *abuf, int alen_int, + 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, qclass; - int status, i, rr_type, rr_class, rr_len; + ares_status_t status; + size_t alen; + struct ares_soa_reply *soa = NULL; + ares_dns_record_t *dnsrec = NULL; + size_t i; - if (alen < HFIXEDSZ) - return ARES_EBADRESP; - - /* parse message header */ - qdcount = DNS_HEADER_QDCOUNT(abuf); - ancount = DNS_HEADER_ANCOUNT(abuf); + *soa_out = NULL; - if (qdcount != 1) - return ARES_EBADRESP; - if (ancount == 0) + if (alen_int < 0) { return ARES_EBADRESP; + } - aptr = abuf + HFIXEDSZ; - - /* query name */ - status = ares__expand_name_for_response(aptr, abuf, alen, &qname, &len, 0); - if (status != ARES_SUCCESS) - goto failed_stat; - - if (alen <= len + HFIXEDSZ + 1) - goto failed; - aptr += len; - - qclass = DNS_QUESTION_TYPE(aptr); + alen = (size_t)alen_int; - /* skip qtype & qclass */ - if (aptr + QFIXEDSZ > abuf + alen) - goto failed; - aptr += QFIXEDSZ; + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } - /* qclass of SOA with multiple answers */ - if (qclass == T_SOA && ancount > 1) - goto failed; + if (ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER) == 0) { + status = ARES_EBADRESP; /* ENODATA might make more sense */ + goto done; + } - /* examine all the records, break and return if found soa */ - for (i = 0; i < ancount; i++) - { - rr_name = NULL; - status = ares__expand_name_for_response (aptr, abuf, alen, &rr_name, &len, 0); - if (status != ARES_SUCCESS) - { - ares_free(rr_name); - goto failed_stat; - } + for (i = 0; i < ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); - aptr += len; - if ( aptr + RRFIXEDSZ > abuf + alen ) - { - ares_free(rr_name); + if (rr == NULL) { + /* Shouldn't be possible */ status = ARES_EBADRESP; - goto failed_stat; + goto done; } - rr_type = DNS_RR_TYPE( aptr ); - rr_class = DNS_RR_CLASS( aptr ); - rr_len = DNS_RR_LEN( aptr ); - aptr += RRFIXEDSZ; - if (aptr + rr_len > abuf + alen) - { - ares_free(rr_name); - status = ARES_EBADRESP; - goto failed_stat; - } - if ( rr_class == C_IN && rr_type == T_SOA ) - { - /* allocate result struct */ - soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY); - if (!soa) - { - ares_free(rr_name); - status = ARES_ENOMEM; - goto failed_stat; - } - /* nsname */ - status = ares__expand_name_for_response(aptr, abuf, alen, &soa->nsname, - &len, 0); - if (status != ARES_SUCCESS) - { - ares_free(rr_name); - goto failed_stat; - } - aptr += len; - - /* hostmaster */ - status = ares__expand_name_for_response(aptr, abuf, alen, - &soa->hostmaster, &len, 0); - if (status != ARES_SUCCESS) - { - ares_free(rr_name); - goto failed_stat; - } - aptr += len; - - /* integer fields */ - if (aptr + 5 * 4 > abuf + alen) - { - ares_free(rr_name); - goto failed; - } - soa->serial = DNS__32BIT(aptr + 0 * 4); - soa->refresh = DNS__32BIT(aptr + 1 * 4); - soa->retry = DNS__32BIT(aptr + 2 * 4); - soa->expire = DNS__32BIT(aptr + 3 * 4); - soa->minttl = DNS__32BIT(aptr + 4 * 4); - - ares_free(qname); - ares_free(rr_name); - - *soa_out = soa; + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || + ares_dns_rr_get_type(rr) != ARES_REC_TYPE_SOA) { + continue; + } - return ARES_SUCCESS; + /* allocate result struct */ + soa = ares_malloc_data(ARES_DATATYPE_SOA_REPLY); + if (soa == NULL) { + status = ARES_ENOMEM; + goto done; } - aptr += rr_len; - ares_free(rr_name); + soa->serial = ares_dns_rr_get_u32(rr, ARES_RR_SOA_SERIAL); + soa->refresh = ares_dns_rr_get_u32(rr, ARES_RR_SOA_REFRESH); + soa->retry = ares_dns_rr_get_u32(rr, ARES_RR_SOA_RETRY); + soa->expire = ares_dns_rr_get_u32(rr, ARES_RR_SOA_EXPIRE); + soa->minttl = ares_dns_rr_get_u32(rr, ARES_RR_SOA_MINIMUM); + soa->nsname = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_SOA_MNAME)); + if (soa->nsname == NULL) { + status = ARES_ENOMEM; + goto done; + } + soa->hostmaster = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_SOA_RNAME)); + if (soa->hostmaster == NULL) { + status = ARES_ENOMEM; + goto done; + } + break; + } - if (aptr > abuf + alen) - goto failed_stat; + if (soa == NULL) { + status = ARES_EBADRESP; } - /* no SOA record found */ - status = ARES_EBADRESP; - goto failed_stat; -failed: - status = ARES_EBADRESP; -failed_stat: - if (soa) +done: + /* clean up on error */ + if (status != ARES_SUCCESS) { ares_free_data(soa); - if (qname) - ares_free(qname); - return status; + /* Compatibility */ + if (status == ARES_EBADNAME) { + status = ARES_EBADRESP; + } + } else { + /* everything looks fine, return the data */ + *soa_out = soa; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_srv_reply.c b/deps/cares/src/lib/ares_parse_srv_reply.c index 0125092c02d10c..90cf684bc1d94c 100644 --- a/deps/cares/src/lib/ares_parse_srv_reply.c +++ b/deps/cares/src/lib/ares_parse_srv_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) 2009 Jakub Hrozek + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -26,153 +25,92 @@ */ #include "ares_setup.h" - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#include "ares_nameser.h" - #include "ares.h" -#include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" -int -ares_parse_srv_reply (const unsigned char *abuf, int alen, - struct ares_srv_reply **srv_out) +int ares_parse_srv_reply(const unsigned char *abuf, int alen_int, + 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; + ares_status_t status; + size_t alen; struct ares_srv_reply *srv_head = NULL; struct ares_srv_reply *srv_last = NULL; struct ares_srv_reply *srv_curr; + ares_dns_record_t *dnsrec = NULL; + size_t i; - /* 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) + if (alen_int < 0) { return ARES_EBADRESP; + } - /* Fetch the question and answer count from the header. */ - qdcount = DNS_HEADER_QDCOUNT (abuf); - ancount = DNS_HEADER_ANCOUNT (abuf); - if (qdcount != 1) - return ARES_EBADRESP; - if (ancount == 0) - return ARES_ENODATA; - - /* Expand the name from the question, and skip past the question. */ - aptr = abuf + HFIXEDSZ; - status = ares_expand_name (aptr, abuf, alen, &hostname, &len); - if (status != ARES_SUCCESS) - return status; - - if (aptr + len + QFIXEDSZ > abuf + alen) - { - ares_free (hostname); - return ARES_EBADRESP; + alen = (size_t)alen_int; + + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } + + if (ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER) == 0) { + status = ARES_ENODATA; + goto done; + } + + for (i = 0; i < ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); + + if (rr == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; } - 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; - if (aptr + rr_len > abuf + alen) - { - status = ARES_EBADRESP; - break; - } - - /* Check if we are really looking at a SRV record */ - if (rr_class == C_IN && rr_type == T_SRV) - { - /* parse the SRV record itself */ - if (rr_len < 6) - { - status = ARES_EBADRESP; - break; - } - - /* Allocate storage for this SRV answer appending it to the list */ - srv_curr = ares_malloc_data(ARES_DATATYPE_SRV_REPLY); - if (!srv_curr) - { - status = ARES_ENOMEM; - break; - } - if (srv_last) - { - srv_last->next = srv_curr; - } - else - { - srv_head = srv_curr; - } - srv_last = srv_curr; - - vptr = aptr; - srv_curr->priority = DNS__16BIT(vptr); - vptr += sizeof(unsigned short); - srv_curr->weight = DNS__16BIT(vptr); - vptr += sizeof(unsigned short); - srv_curr->port = DNS__16BIT(vptr); - vptr += sizeof(unsigned short); - - status = ares_expand_name (vptr, abuf, alen, &srv_curr->host, &len); - if (status != ARES_SUCCESS) - break; - } - - /* Don't lose memory in the next iteration */ - ares_free (rr_name); - rr_name = NULL; - - /* Move on to the next record */ - aptr += rr_len; + + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || + ares_dns_rr_get_type(rr) != ARES_REC_TYPE_SRV) { + continue; } - if (hostname) - ares_free (hostname); - if (rr_name) - ares_free (rr_name); + /* Allocate storage for this URI answer appending it to the list */ + srv_curr = ares_malloc_data(ARES_DATATYPE_SRV_REPLY); + if (srv_curr == NULL) { + status = ARES_ENOMEM; + goto done; + } - /* clean up on error */ - if (status != ARES_SUCCESS) - { - if (srv_head) - ares_free_data (srv_head); - return status; + /* Link in the record */ + if (srv_last) { + srv_last->next = srv_curr; + } else { + srv_head = srv_curr; } + srv_last = srv_curr; + + + srv_curr->priority = ares_dns_rr_get_u16(rr, ARES_RR_SRV_PRIORITY); + srv_curr->weight = ares_dns_rr_get_u16(rr, ARES_RR_SRV_WEIGHT); + srv_curr->port = ares_dns_rr_get_u16(rr, ARES_RR_SRV_PORT); - /* everything looks fine, return the data */ - *srv_out = srv_head; + srv_curr->host = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_SRV_TARGET)); - return ARES_SUCCESS; + if (srv_curr->host == NULL) { + status = ARES_ENOMEM; + goto done; + } + } + +done: + /* clean up on error */ + if (status != ARES_SUCCESS) { + if (srv_head) { + ares_free_data(srv_head); + } + } else { + /* everything looks fine, return the data */ + *srv_out = srv_head; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_parse_txt_reply.c b/deps/cares/src/lib/ares_parse_txt_reply.c index 083cbf4dff7b3b..85c3644b8cbf34 100644 --- a/deps/cares/src/lib/ares_parse_txt_reply.c +++ b/deps/cares/src/lib/ares_parse_txt_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) 2009 Jakub Hrozek + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -26,199 +25,113 @@ */ #include "ares_setup.h" - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#include "ares_nameser.h" - -#ifdef HAVE_STRINGS_H -# include -#endif - #include "ares.h" -#include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" -static int -ares__parse_txt_reply (const unsigned char *abuf, int alen, - int ex, void **txt_out) +static int ares__parse_txt_reply(const unsigned char *abuf, size_t alen, + ares_bool_t ex, void **txt_out) { - size_t substr_len; - unsigned int qdcount, ancount, i; - const unsigned char *aptr; - const unsigned char *strptr; - int status, rr_type, rr_class, rr_len; - long len; - char *hostname = NULL, *rr_name = NULL; + ares_status_t status; struct ares_txt_ext *txt_head = NULL; struct ares_txt_ext *txt_last = NULL; struct ares_txt_ext *txt_curr; + ares_dns_record_t *dnsrec = NULL; + size_t i; - /* 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; + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; + } + + if (ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER) == 0) { + status = ARES_ENODATA; + goto done; + } + + for (i = 0; i < ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); + const unsigned char *ptr; + size_t ptr_len; + + if (rr == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; + } - /* Fetch the question and answer count from the header. */ - qdcount = DNS_HEADER_QDCOUNT (abuf); - ancount = DNS_HEADER_ANCOUNT (abuf); - if (qdcount != 1) - return ARES_EBADRESP; - if (ancount == 0) - return ARES_ENODATA; - - /* Expand the name from the question, and skip past the question. */ - aptr = abuf + HFIXEDSZ; - status = ares_expand_name (aptr, abuf, alen, &hostname, &len); - if (status != ARES_SUCCESS) - return status; - - if (aptr + len + QFIXEDSZ > abuf + alen) - { - ares_free (hostname); - return ARES_EBADRESP; + /* XXX: Why Chaos? */ + if ((ares_dns_rr_get_class(rr) != ARES_CLASS_IN && + ares_dns_rr_get_class(rr) != ARES_CLASS_CHAOS) || + ares_dns_rr_get_type(rr) != ARES_REC_TYPE_TXT) { + continue; } - 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; - if (aptr + rr_len > abuf + alen) - { - status = ARES_EBADRESP; - break; - } - - /* Check if we are really looking at a TXT record */ - if ((rr_class == C_IN || rr_class == C_CHAOS) && rr_type == T_TXT) - { - /* - * There may be multiple substrings in a single TXT record. Each - * substring may be up to 255 characters in length, with a - * "length byte" indicating the size of the substring payload. - * RDATA contains both the length-bytes and payloads of all - * substrings contained therein. - */ - - strptr = aptr; - while (strptr < (aptr + rr_len)) - { - substr_len = (unsigned char)*strptr; - if (strptr + substr_len + 1 > aptr + rr_len) - { - status = ARES_EBADRESP; - break; - } - - /* Allocate storage for this TXT answer appending it to the list */ - txt_curr = ares_malloc_data(ex ? ARES_DATATYPE_TXT_EXT : - ARES_DATATYPE_TXT_REPLY); - if (!txt_curr) - { - status = ARES_ENOMEM; - break; - } - if (txt_last) - { - txt_last->next = txt_curr; - } - else - { - txt_head = txt_curr; - } - txt_last = txt_curr; - - if (ex) - txt_curr->record_start = (strptr == aptr); - txt_curr->length = substr_len; - txt_curr->txt = ares_malloc (substr_len + 1/* Including null byte */); - if (txt_curr->txt == NULL) - { - status = ARES_ENOMEM; - break; - } - - ++strptr; - memcpy ((char *) txt_curr->txt, strptr, substr_len); - - /* Make sure we NULL-terminate */ - txt_curr->txt[substr_len] = 0; - - strptr += substr_len; - } - } - - /* Propagate any failures */ - if (status != ARES_SUCCESS) - { - break; - } - - /* Don't lose memory in the next iteration */ - ares_free (rr_name); - rr_name = NULL; - - /* Move on to the next record */ - aptr += rr_len; + + /* Allocate storage for this TXT answer appending it to the list */ + txt_curr = + ares_malloc_data(ex ? ARES_DATATYPE_TXT_EXT : ARES_DATATYPE_TXT_REPLY); + if (txt_curr == NULL) { + status = ARES_ENOMEM; + goto done; } - if (hostname) - ares_free (hostname); - if (rr_name) - ares_free (rr_name); + /* Link in the record */ + if (txt_last) { + txt_last->next = txt_curr; + } else { + txt_head = txt_curr; + } + txt_last = txt_curr; - /* clean up on error */ - if (status != ARES_SUCCESS) - { - if (txt_head) - ares_free_data (txt_head); - return status; + /* These days, records are joined, always tag as start */ + if (ex) { + txt_curr->record_start = 1; } - /* everything looks fine, return the data */ - *txt_out = txt_head; + ptr = ares_dns_rr_get_bin(rr, ARES_RR_TXT_DATA, &ptr_len); + + txt_curr->txt = ares_malloc(ptr_len + 1); + if (txt_curr->txt == NULL) { + status = ARES_ENOMEM; + goto done; + } + memcpy(txt_curr->txt, ptr, ptr_len); + txt_curr->txt[ptr_len] = 0; + txt_curr->length = ptr_len; + } - return ARES_SUCCESS; +done: + /* clean up on error */ + if (status != ARES_SUCCESS) { + if (txt_head) { + ares_free_data(txt_head); + } + } else { + /* everything looks fine, return the data */ + *txt_out = txt_head; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } -int -ares_parse_txt_reply (const unsigned char *abuf, int alen, - struct ares_txt_reply **txt_out) +int ares_parse_txt_reply(const unsigned char *abuf, int alen, + struct ares_txt_reply **txt_out) { - return ares__parse_txt_reply(abuf, alen, 0, (void **) txt_out); + if (alen < 0) { + return ARES_EBADRESP; + } + return ares__parse_txt_reply(abuf, (size_t)alen, ARES_FALSE, + (void **)txt_out); } - -int -ares_parse_txt_reply_ext (const unsigned char *abuf, int alen, - struct ares_txt_ext **txt_out) +int ares_parse_txt_reply_ext(const unsigned char *abuf, int alen, + struct ares_txt_ext **txt_out) { - return ares__parse_txt_reply(abuf, alen, 1, (void **) txt_out); + if (alen < 0) { + return ARES_EBADRESP; + } + return ares__parse_txt_reply(abuf, (size_t)alen, ARES_TRUE, (void **)txt_out); } diff --git a/deps/cares/src/lib/ares_parse_uri_reply.c b/deps/cares/src/lib/ares_parse_uri_reply.c index d5bb7ee45d7660..bff7023f78a29a 100644 --- a/deps/cares/src/lib/ares_parse_uri_reply.c +++ b/deps/cares/src/lib/ares_parse_uri_reply.c @@ -1,7 +1,6 @@ /* MIT License * - * Copyright (c) 1998 Massachusetts Institute of Technology - * Copyright (c) 2009 Jakub Hrozek + * Copyright (c) 2023 Brad House * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -26,166 +25,91 @@ */ #include "ares_setup.h" - -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif - -#include "ares_nameser.h" - #include "ares.h" -#include "ares_dns.h" #include "ares_data.h" #include "ares_private.h" -/* AIX portability check */ -#ifndef T_URI -# define T_URI 256 /* uri selection */ -#endif - -int -ares_parse_uri_reply (const unsigned char *abuf, int alen, - struct ares_uri_reply **uri_out) +int ares_parse_uri_reply(const unsigned char *abuf, int alen_int, + struct ares_uri_reply **uri_out) { - unsigned int qdcount, ancount, i; - const unsigned char *aptr, *vptr; - int status, rr_type, rr_class, rr_len, rr_ttl; - long len; - char *uri_str = NULL, *rr_name = NULL; + ares_status_t status; + size_t alen; struct ares_uri_reply *uri_head = NULL; struct ares_uri_reply *uri_last = NULL; struct ares_uri_reply *uri_curr; + ares_dns_record_t *dnsrec = NULL; + size_t i; - /* Set *uri_out to NULL for all failure cases. */ *uri_out = NULL; - /* Give up if abuf doesn't have room for a header. */ - if (alen < HFIXEDSZ){ - return ARES_EBADRESP; + if (alen_int < 0) { + 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; + alen = (size_t)alen_int; + + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto done; } - /* Expand the name from the question, and skip past the question. */ - aptr = abuf + HFIXEDSZ; - status = ares_expand_name (aptr, abuf, alen, &uri_str, &len); - if (status != ARES_SUCCESS){ - return status; + if (ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER) == 0) { + status = ARES_ENODATA; + goto done; } - if (aptr + len + QFIXEDSZ > abuf + alen) - { - ares_free (uri_str); - return ARES_EBADRESP; + + for (i = 0; i < ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER); i++) { + const ares_dns_rr_t *rr = + ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i); + + if (rr == NULL) { + /* Shouldn't be possible */ + status = ARES_EBADRESP; + goto done; } - 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_ttl = DNS_RR_TTL(aptr); - rr_len = DNS_RR_LEN (aptr); - aptr += RRFIXEDSZ; - - if (aptr + rr_len > abuf + alen) - { - status = ARES_EBADRESP; - break; - } - - /* Check if we are really looking at a URI record */ - if (rr_class == C_IN && rr_type == T_URI) - { - /* parse the URI record itself */ - if (rr_len < 5) - { - status = ARES_EBADRESP; - break; - } - /* Allocate storage for this URI answer appending it to the list */ - uri_curr = ares_malloc_data(ARES_DATATYPE_URI_REPLY); - if (!uri_curr) - { - status = ARES_ENOMEM; - break; - } - if (uri_last) - { - uri_last->next = uri_curr; - } - else - { - uri_head = uri_curr; - } - uri_last = uri_curr; - - vptr = aptr; - uri_curr->priority = DNS__16BIT(vptr); - vptr += sizeof(unsigned short); - uri_curr->weight = DNS__16BIT(vptr); - vptr += sizeof(unsigned short); - uri_curr->uri = (char *)ares_malloc(rr_len-3); - if (!uri_curr->uri) - { - status = ARES_ENOMEM; - break; - } - uri_curr->uri = strncpy(uri_curr->uri, (const char *)vptr, rr_len-4); - uri_curr->uri[rr_len-4]='\0'; - uri_curr->ttl = rr_ttl; - } - - /* Don't lose memory in the next iteration */ - ares_free (rr_name); - rr_name = NULL; - - /* Move on to the next record */ - aptr += rr_len; + + if (ares_dns_rr_get_class(rr) != ARES_CLASS_IN || + ares_dns_rr_get_type(rr) != ARES_REC_TYPE_URI) { + continue; } - if (uri_str) - ares_free (uri_str); - if (rr_name) - ares_free (rr_name); + /* Allocate storage for this URI answer appending it to the list */ + uri_curr = ares_malloc_data(ARES_DATATYPE_URI_REPLY); + if (uri_curr == NULL) { + status = ARES_ENOMEM; + goto done; + } - /* clean up on error */ - if (status != ARES_SUCCESS) - { - if (uri_head) - ares_free_data (uri_head); - return status; + /* Link in the record */ + if (uri_last) { + uri_last->next = uri_curr; + } else { + uri_head = uri_curr; } + uri_last = uri_curr; + - /* everything looks fine, return the data */ - *uri_out = uri_head; + uri_curr->priority = ares_dns_rr_get_u16(rr, ARES_RR_URI_PRIORITY); + uri_curr->weight = ares_dns_rr_get_u16(rr, ARES_RR_URI_WEIGHT); + uri_curr->uri = ares_strdup(ares_dns_rr_get_str(rr, ARES_RR_URI_TARGET)); + uri_curr->ttl = (int)ares_dns_rr_get_ttl(rr); - return ARES_SUCCESS; + if (uri_curr->uri == NULL) { + status = ARES_ENOMEM; + goto done; + } + } + +done: + /* clean up on error */ + if (status != ARES_SUCCESS) { + if (uri_head) { + ares_free_data(uri_head); + } + } else { + /* everything looks fine, return the data */ + *uri_out = uri_head; + } + ares_dns_record_destroy(dnsrec); + return (int)status; } diff --git a/deps/cares/src/lib/ares_platform.c b/deps/cares/src/lib/ares_platform.c index 6fcbd49bb8f664..0727ae001c8432 100644 --- a/deps/cares/src/lib/ares_platform.c +++ b/deps/cares/src/lib/ares_platform.c @@ -29,15 +29,14 @@ #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 +# 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) { @@ -45,38 +44,38 @@ win_platform ares__getplatform(void) memset(&OsvEx, 0, sizeof(OsvEx)); OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable:4996) /* warning C4996: 'GetVersionExW': was declared deprecated */ -#endif - if (!GetVersionEx((void *)&OsvEx)) - { - memset(&OsvEx, 0, sizeof(OsvEx)); - OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - if (!GetVersionEx((void *)&OsvEx)) - return WIN_UNKNOWN; +# ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable : 4996) /* warning C4996: 'GetVersionExW': was \ + declared deprecated */ +# endif + if (!GetVersionEx((void *)&OsvEx)) { + memset(&OsvEx, 0, sizeof(OsvEx)); + OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + if (!GetVersionEx((void *)&OsvEx)) { + return WIN_UNKNOWN; } -#ifdef _MSC_VER -#pragma warning(pop) -#endif + } +# ifdef _MSC_VER +# pragma warning(pop) +# endif - switch(OsvEx.dwPlatformId) - { - case V_PLATFORM_WIN32s: - return WIN_3X; + switch (OsvEx.dwPlatformId) { + case V_PLATFORM_WIN32s: + return WIN_3X; - case V_PLATFORM_WIN32_WINDOWS: - return WIN_9X; + case V_PLATFORM_WIN32_WINDOWS: + return WIN_9X; - case V_PLATFORM_WIN32_NT: - return WIN_NT; + case V_PLATFORM_WIN32_NT: + return WIN_NT; - case V_PLATFORM_WIN32_CE: - return WIN_CE; + case V_PLATFORM_WIN32_CE: + return WIN_CE; - default: - return WIN_UNKNOWN; - } + default: + return WIN_UNKNOWN; + } } #endif /* WIN32 && ! MSDOS */ @@ -84,16 +83,16 @@ win_platform ares__getplatform(void) #if defined(_WIN32_WCE) /* IANA Well Known Ports are in range 0-1023 */ -#define USE_IANA_WELL_KNOWN_PORTS 1 +# define USE_IANA_WELL_KNOWN_PORTS 1 /* IANA Registered Ports are in range 1024-49151 */ -#define USE_IANA_REGISTERED_PORTS 1 +# define USE_IANA_REGISTERED_PORTS 1 struct pvt_servent { - char *s_name; - char **s_aliases; - unsigned short s_port; - char *s_proto; + char *s_name; + char **s_aliases; + unsigned short s_port; + char *s_proto; }; /* @@ -101,10948 +100,10948 @@ struct pvt_servent { */ 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 } +# 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; + const char *protocol = NULL; + int error = 0; + size_t i; u_port = ntohs((unsigned short)port); - if (proto) - { - switch (strlen(proto)) { + if (proto) { + switch (ares_strlen(proto)) { case 3: - if (!strncasecmp(proto, "tcp", 3)) + if (!strncasecmp(proto, "tcp", 3)) { protocol = "tcp"; - else if (!strncasecmp(proto, "udp", 3)) + } else if (!strncasecmp(proto, "udp", 3)) { protocol = "udp"; - else + } else { error = WSAEFAULT; + } break; case 4: - if (!strncasecmp(proto, "sctp", 4)) + if (!strncasecmp(proto, "sctp", 4)) { protocol = "sctp"; - else if (!strncasecmp(proto, "dccp", 4)) + } else if (!strncasecmp(proto, "dccp", 4)) { protocol = "dccp"; - else + } 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]; - } + 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; + } } + error = WSANO_DATA; + } SET_SOCKERRNO(error); return NULL; diff --git a/deps/cares/src/lib/ares_private.h b/deps/cares/src/lib/ares_private.h index 8bd12fc1182d79..e5baa3cf1af587 100644 --- a/deps/cares/src/lib/ares_private.h +++ b/deps/cares/src/lib/ares_private.h @@ -32,79 +32,81 @@ */ #if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) -#define WIN32 +# define WIN32 #endif #ifdef HAVE_NETINET_IN_H -#include +# include #endif #ifdef WATT32 -#include -#include +# include +# include #endif -#define DEFAULT_TIMEOUT 2000 /* milliseconds */ -#define DEFAULT_TRIES 3 +#define DEFAULT_TIMEOUT 2000 /* milliseconds */ +#define DEFAULT_TRIES 3 #ifndef INADDR_NONE -#define INADDR_NONE 0xffffffff +# define INADDR_NONE 0xffffffff #endif #ifdef CARES_EXPOSE_STATICS /* Make some internal functions visible for testing */ -#define STATIC_TESTABLE +# define STATIC_TESTABLE #else -#define STATIC_TESTABLE static +# define STATIC_TESTABLE static #endif /* By using a double cast, we can get rid of the bogus warning of - * warning: cast from 'const struct sockaddr *' to 'const struct sockaddr_in6 *' increases required alignment from 1 to 4 [-Wcast-align] + * warning: cast from 'const struct sockaddr *' to 'const struct sockaddr_in6 *' + * increases required alignment from 1 to 4 [-Wcast-align] */ #define CARES_INADDR_CAST(type, var) ((type)((void *)var)) #if defined(WIN32) && !defined(WATT32) -#define WIN_NS_9X "System\\CurrentControlSet\\Services\\VxD\\MSTCP" -#define WIN_NS_NT_KEY "System\\CurrentControlSet\\Services\\Tcpip\\Parameters" -#define WIN_DNSCLIENT "Software\\Policies\\Microsoft\\System\\DNSClient" -#define WIN_NT_DNSCLIENT "Software\\Policies\\Microsoft\\Windows NT\\DNSClient" -#define NAMESERVER "NameServer" -#define DHCPNAMESERVER "DhcpNameServer" -#define DATABASEPATH "DatabasePath" -#define WIN_PATH_HOSTS "\\hosts" -#define SEARCHLIST_KEY "SearchList" -#define PRIMARYDNSSUFFIX_KEY "PrimaryDNSSuffix" -#define INTERFACES_KEY "Interfaces" -#define DOMAIN_KEY "Domain" -#define DHCPDOMAIN_KEY "DhcpDomain" +# define WIN_NS_9X "System\\CurrentControlSet\\Services\\VxD\\MSTCP" +# define WIN_NS_NT_KEY "System\\CurrentControlSet\\Services\\Tcpip\\Parameters" +# define WIN_DNSCLIENT "Software\\Policies\\Microsoft\\System\\DNSClient" +# define WIN_NT_DNSCLIENT \ + "Software\\Policies\\Microsoft\\Windows NT\\DNSClient" +# define NAMESERVER "NameServer" +# define DHCPNAMESERVER "DhcpNameServer" +# define DATABASEPATH "DatabasePath" +# define WIN_PATH_HOSTS "\\hosts" +# define SEARCHLIST_KEY "SearchList" +# define PRIMARYDNSSUFFIX_KEY "PrimaryDNSSuffix" +# define INTERFACES_KEY "Interfaces" +# define DOMAIN_KEY "Domain" +# define DHCPDOMAIN_KEY "DhcpDomain" #elif defined(WATT32) -#define PATH_RESOLV_CONF "/dev/ENV/etc/resolv.conf" -W32_FUNC const char *_w32_GetHostsFile (void); +# define PATH_RESOLV_CONF "/dev/ENV/etc/resolv.conf" +W32_FUNC const char *_w32_GetHostsFile(void); #elif defined(NETWARE) -#define PATH_RESOLV_CONF "sys:/etc/resolv.cfg" -#define PATH_HOSTS "sys:/etc/hosts" +# define PATH_RESOLV_CONF "sys:/etc/resolv.cfg" +# define PATH_HOSTS "sys:/etc/hosts" #elif defined(__riscos__) -#define PATH_HOSTS "InetDBase:Hosts" +# define PATH_HOSTS "InetDBase:Hosts" #elif defined(__HAIKU__) -#define PATH_RESOLV_CONF "/system/settings/network/resolv.conf" -#define PATH_HOSTS "/system/settings/network/hosts" +# define PATH_RESOLV_CONF "/system/settings/network/resolv.conf" +# define PATH_HOSTS "/system/settings/network/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 +# define PATH_RESOLV_CONF "/etc/resolv.conf" +# ifdef ETC_INET +# define PATH_HOSTS "/etc/inet/hosts" +# else +# define PATH_HOSTS "/etc/hosts" +# endif #endif @@ -118,41 +120,47 @@ typedef struct ares_rand_state ares_rand_state; #include "ares__htable_stvp.h" #include "ares__htable_asvp.h" #include "ares__buf.h" +#include "ares_dns_record.h" #ifndef HAVE_GETENV # include "ares_getenv.h" # define getenv(ptr) ares_getenv(ptr) #endif -#include "ares_strdup.h" +#include "ares_str.h" #include "ares_strsplit.h" #ifndef HAVE_STRCASECMP # include "ares_strcasecmp.h" -# define strcasecmp(p1,p2) ares_strcasecmp(p1,p2) +# 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) +# define strncasecmp(p1, p2, n) ares_strncasecmp(p1, p2, n) #endif /********* EDNS defines section ******/ -#define EDNSPACKETSZ 1280 /* Reasonable UDP payload size, as suggested - in RFC2671 */ -#define MAXENDSSZ 4096 /* Maximum (local) limit for edns packet size */ -#define EDNSFIXEDSZ 11 /* Size of EDNS header */ +#define EDNSPACKETSZ \ + 1280 /* Reasonable UDP payload size, as suggested \ + in RFC2671 */ +#define MAXENDSSZ 4096 /* Maximum (local) limit for edns packet size */ +#define EDNSFIXEDSZ 11 /* Size of EDNS header */ + /********* EDNS defines section ******/ struct ares_addr { int family; + union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; - int udp_port; /* stored in network order */ - int tcp_port; /* stored in network order */ + + unsigned short udp_port; /* stored in network order */ + unsigned short tcp_port; /* stored in network order */ }; + #define addrV4 addr.addr4 #define addrV6 addr.addr6 @@ -163,7 +171,7 @@ struct server_state; struct server_connection { struct server_state *server; ares_socket_t fd; - int is_tcp; + ares_bool_t is_tcp; /* total number of queries run on this connection since it was established */ size_t total_queries; /* list of outstanding queries to this connection */ @@ -171,8 +179,8 @@ struct server_connection { }; struct server_state { - size_t idx; /* index for server in ares_channel */ - struct ares_addr addr; + size_t idx; /* index for server in ares_channel */ + struct ares_addr addr; ares__llist_t *connections; struct server_connection *tcp_conn; @@ -188,55 +196,55 @@ struct server_state { * 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; + size_t tcp_connection_generation; /* Link back to owning channel */ - ares_channel channel; + ares_channel channel; }; /* State to represent a DNS query */ struct query { /* Query ID from qbuf, for faster lookup, and current timeout */ - unsigned short qid; /* host byte order */ - struct timeval timeout; - ares_channel channel; + unsigned short qid; /* host byte order */ + struct timeval timeout; + ares_channel channel; /* * Node object for each list entry the query belongs to in order to * make removal operations O(1). */ - ares__slist_node_t *node_queries_by_timeout; - ares__llist_node_t *node_queries_to_conn; - ares__llist_node_t *node_all_queries; + ares__slist_node_t *node_queries_by_timeout; + ares__llist_node_t *node_queries_to_conn; + ares__llist_node_t *node_all_queries; /* connection handle for validation purposes */ const struct server_connection *conn; /* Query buf with length at beginning, for TCP transmission */ - unsigned char *tcpbuf; - int tcplen; + unsigned char *tcpbuf; + size_t tcplen; /* Arguments passed to ares_send() (qbuf points into tcpbuf) */ - const unsigned char *qbuf; - int qlen; - ares_callback callback; - void *arg; + const unsigned char *qbuf; + size_t 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 */ - int no_retries; /* do not perform any additional retries, this is set when - * a query is to be canceled */ + size_t try_count; /* Number of times we tried this query already. */ + size_t server; /* Server this query has last been sent to. */ + struct query_server_info *server_info; /* per-server state */ + ares_bool_t using_tcp; + ares_status_t error_status; + size_t timeouts; /* number of timeouts we saw for this request */ + ares_bool_t no_retries; /* do not perform any additional retries, this is set + * when a query is to be canceled */ }; /* 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? */ + ares_bool_t skip_server; /* should we skip server, due to errors, etc? */ + size_t tcp_connection_generation; /* into which TCP connection did we send? */ }; /* An IP address pattern; matches an IP address X if X & mask == addr */ @@ -244,68 +252,67 @@ struct query_server_info { #define PATTERN_CIDR 0x2 struct apattern { - union - { + union { struct in_addr addr4; struct ares_in6_addr addr6; } addr; - union - { + + union { struct in_addr addr4; struct ares_in6_addr addr6; unsigned short bits; } mask; - int family; + + int family; unsigned short type; }; struct ares_channeldata { /* Configuration data */ - int flags; - int timeout; /* in milliseconds */ - int tries; - int ndots; - int rotate; /* if true, all servers specified are used */ - int udp_port; /* stored in network order */ - int tcp_port; /* stored in network order */ - int socket_send_buffer_size; - int socket_receive_buffer_size; - char **domains; - int ndomains; - struct apattern *sortlist; - int nsort; - char *lookups; - int ednspsz; + unsigned int flags; + size_t timeout; /* in milliseconds */ + size_t tries; + size_t ndots; + ares_bool_t rotate; + unsigned short udp_port; /* stored in network order */ + unsigned short tcp_port; /* stored in network order */ + int socket_send_buffer_size; /* setsockopt takes int */ + int socket_receive_buffer_size; /* setsockopt takes int */ + char **domains; + size_t ndomains; + struct apattern *sortlist; + size_t nsort; + char *lookups; + size_t ednspsz; + unsigned int optmask; /* 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 */ + char local_dev_name[32]; + unsigned int local_ip4; + unsigned char local_ip6[16]; /* Server addresses and communications state */ struct server_state *servers; - int nservers; + size_t nservers; /* random state to use when generating new ids */ - ares_rand_state *rand_state; + ares_rand_state *rand_state; /* Generation number to use for the next TCP socket open/close */ - int tcp_connection_generation; + size_t tcp_connection_generation; /* Last server we sent a query to. */ - int last_server; + size_t last_server; /* All active queries in a single list */ - ares__llist_t *all_queries; + ares__llist_t *all_queries; /* Queries bucketed by qid, for quickly dispatching DNS responses: */ ares__htable_stvp_t *queries_by_qid; /* Queries bucketed by timeout, for quickly handling timeouts: */ - ares__slist_t *queries_by_timeout; + ares__slist_t *queries_by_timeout; /* Map linked list node member for connection to file descriptor. We use * the node instead of the connection object itself so we can quickly look @@ -313,134 +320,149 @@ struct ares_channeldata { * scan all connections) */ ares__htable_asvp_t *connnode_by_socket; - ares_sock_state_cb sock_state_cb; - void *sock_state_cb_data; + ares_sock_state_cb sock_state_cb; + void *sock_state_cb_data; - ares_sock_create_callback sock_create_cb; - void *sock_create_cb_data; + ares_sock_create_callback sock_create_cb; + void *sock_create_cb_data; - ares_sock_config_callback sock_config_cb; - void *sock_config_cb_data; + ares_sock_config_callback sock_config_cb; + void *sock_config_cb_data; - const struct ares_socket_functions * sock_funcs; - void *sock_func_cb_data; + const struct ares_socket_functions *sock_funcs; + void *sock_func_cb_data; /* Path for resolv.conf file, configurable via ares_options */ - char *resolvconf_path; + char *resolvconf_path; /* Path for hosts file, configurable via ares_options */ - char *hosts_path; + char *hosts_path; /* Maximum UDP queries per connection allowed */ - int udp_max_queries; + size_t udp_max_queries; }; /* Does the domain end in ".onion" or ".onion."? Case-insensitive. */ -int ares__is_onion_domain(const char *name); +ares_bool_t ares__is_onion_domain(const char *name); /* Memory management functions */ -extern void *(*ares_malloc)(size_t size); -extern void *(*ares_realloc)(void *ptr, size_t size); -extern void (*ares_free)(void *ptr); +extern void *(*ares_malloc)(size_t size); +extern void *(*ares_realloc)(void *ptr, size_t size); +extern void (*ares_free)(void *ptr); +void *ares_malloc_zero(size_t size); +void *ares_realloc_zero(void *ptr, size_t orig_size, size_t new_size); /* return true if now is exactly check time or later */ -int ares__timedout(struct timeval *now, - struct timeval *check); +ares_bool_t ares__timedout(struct timeval *now, struct timeval *check); /* Returns one of the normal ares status codes like ARES_SUCCESS */ -int ares__send_query(ares_channel channel, struct query *query, - struct timeval *now); +ares_status_t ares__send_query(ares_channel channel, struct query *query, + struct timeval *now); /* Identical to ares_query, but returns a normal ares return code like * ARES_SUCCESS, and can be passed the qid by reference which will be * filled in on ARES_SUCCESS */ -int ares_query_qid(ares_channel channel, const char *name, - int dnsclass, int type, ares_callback callback, - void *arg, unsigned short *qid); +ares_status_t ares_query_qid(ares_channel channel, const char *name, + int dnsclass, int type, ares_callback callback, + void *arg, unsigned short *qid); /* Identical to ares_send() except returns normal ares return codes like * ARES_SUCCESS */ -int ares_send_ex(ares_channel channel, const unsigned char *qbuf, int qlen, - ares_callback callback, void *arg); -void ares__close_connection(struct server_connection *conn); -void ares__close_sockets(struct server_state *server); -void ares__check_cleanup_conn(ares_channel channel, ares_socket_t fd); -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); +ares_status_t ares_send_ex(ares_channel channel, const unsigned char *qbuf, + size_t qlen, ares_callback callback, void *arg); +void ares__close_connection(struct server_connection *conn); +void ares__close_sockets(struct server_state *server); +void ares__check_cleanup_conn(ares_channel channel, ares_socket_t fd); +ares_status_t ares__get_hostent(FILE *fp, int family, struct hostent **host); +ares_status_t ares__read_line(FILE *fp, char **buf, size_t *bufsize); +void ares__free_query(struct query *query); ares_rand_state *ares__init_rand_state(void); -void ares__destroy_rand_state(ares_rand_state *state); +void ares__destroy_rand_state(ares_rand_state *state); void ares__rand_bytes(ares_rand_state *state, unsigned char *buf, size_t len); unsigned short ares__generate_new_id(ares_rand_state *state); struct timeval ares__tvnow(void); -int ares__expand_name_validated(const unsigned char *encoded, - const unsigned char *abuf, - int alen, char **s, long *enclen, - int is_hostname); -int ares__expand_name_for_response(const unsigned char *encoded, - const unsigned char *abuf, int alen, - char **s, long *enclen, int is_hostname); -int ares__init_servers_state(ares_channel channel); -void ares__destroy_servers_state(ares_channel channel); -int ares__parse_qtype_reply(const unsigned char* abuf, int alen, int* qtype); -int ares__single_domain(ares_channel channel, const char *name, char **s); -int ares__cat_domain(const char *name, const char *domain, char **s); -int ares__sortaddrinfo(ares_channel channel, struct ares_addrinfo_node *ai_node); -int ares__readaddrinfo(FILE *fp, const char *name, unsigned short port, - const struct ares_addrinfo_hints *hints, - struct ares_addrinfo *ai); - -void ares__freeaddrinfo_nodes(struct ares_addrinfo_node *ai_node); - -struct ares_addrinfo_node *ares__append_addrinfo_node(struct ares_addrinfo_node **ai_node); +ares_status_t ares__expand_name_validated(const unsigned char *encoded, + const unsigned char *abuf, + size_t alen, char **s, size_t *enclen, + ares_bool_t is_hostname); +ares_status_t ares__expand_name_for_response(const unsigned char *encoded, + const unsigned char *abuf, + size_t alen, char **s, + size_t *enclen, + ares_bool_t is_hostname); +ares_status_t ares_expand_string_ex(const unsigned char *encoded, + const unsigned char *abuf, size_t alen, + unsigned char **s, size_t *enclen); +ares_status_t ares__init_servers_state(ares_channel channel); +void ares__destroy_servers_state(ares_channel channel); +ares_status_t ares__single_domain(ares_channel channel, const char *name, + char **s); +ares_status_t ares__cat_domain(const char *name, const char *domain, char **s); +ares_status_t ares__sortaddrinfo(ares_channel channel, + struct ares_addrinfo_node *ai_node); +ares_status_t ares__readaddrinfo(FILE *fp, const char *name, + unsigned short port, + const struct ares_addrinfo_hints *hints, + struct ares_addrinfo *ai); + +void ares__freeaddrinfo_nodes(struct ares_addrinfo_node *ai_node); + +struct ares_addrinfo_node * + ares__append_addrinfo_node(struct ares_addrinfo_node **ai_node); void ares__addrinfo_cat_nodes(struct ares_addrinfo_node **head, - struct ares_addrinfo_node *tail); + struct ares_addrinfo_node *tail); void ares__freeaddrinfo_cnames(struct ares_addrinfo_cname *ai_cname); -struct ares_addrinfo_cname *ares__append_addrinfo_cname(struct ares_addrinfo_cname **ai_cname); - -int ares_append_ai_node(int aftype, unsigned short port, int ttl, - const void *adata, - struct ares_addrinfo_node **nodes); - -void ares__addrinfo_cat_cnames(struct ares_addrinfo_cname **head, - struct ares_addrinfo_cname *tail); - -int ares__parse_into_addrinfo(const unsigned char *abuf, - int alen, int cname_only_is_enodata, - unsigned short port, - struct ares_addrinfo *ai); - -int ares__addrinfo2hostent(const struct ares_addrinfo *ai, int family, - struct hostent **host); -int ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family, - int req_naddrttls, struct ares_addrttl *addrttls, - struct ares_addr6ttl *addr6ttls, int *naddrttls); -int ares__addrinfo_localhost(const char *name, unsigned short port, - const struct ares_addrinfo_hints *hints, - struct ares_addrinfo *ai); - -#if 0 /* Not used */ -long ares__tvdiff(struct timeval t1, struct timeval t2); -#endif - -ares_socket_t ares__open_socket(ares_channel channel, - int af, int type, int protocol); -void ares__close_socket(ares_channel, ares_socket_t); -int ares__connect_socket(ares_channel channel, - ares_socket_t sockfd, - const struct sockaddr *addr, - ares_socklen_t addrlen); - -#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 +struct ares_addrinfo_cname * + ares__append_addrinfo_cname(struct ares_addrinfo_cname **ai_cname); + +ares_status_t ares_append_ai_node(int aftype, unsigned short port, + unsigned int ttl, const void *adata, + struct ares_addrinfo_node **nodes); + +void ares__addrinfo_cat_cnames(struct ares_addrinfo_cname **head, + struct ares_addrinfo_cname *tail); + +ares_status_t ares__parse_into_addrinfo(const unsigned char *abuf, size_t alen, + ares_bool_t cname_only_is_enodata, + unsigned short port, + struct ares_addrinfo *ai); + +ares_status_t ares__addrinfo2hostent(const struct ares_addrinfo *ai, int family, + struct hostent **host); +ares_status_t ares__addrinfo2addrttl(const struct ares_addrinfo *ai, int family, + size_t req_naddrttls, + struct ares_addrttl *addrttls, + struct ares_addr6ttl *addr6ttls, + size_t *naddrttls); +ares_status_t ares__addrinfo_localhost(const char *name, unsigned short port, + const struct ares_addrinfo_hints *hints, + struct ares_addrinfo *ai); + +ares_socket_t ares__open_socket(ares_channel channel, int af, int type, + int protocol); +void ares__close_socket(ares_channel, ares_socket_t); +int ares__connect_socket(ares_channel channel, ares_socket_t sockfd, + const struct sockaddr *addr, ares_socklen_t addrlen); + +#define ARES_SWAP_BYTE(a, b) \ + do { \ + unsigned char swapByte = *(a); \ + *(a) = *(b); \ + *(b) = swapByte; \ + } while (0) + +#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 (0) + + +size_t ares__round_up_pow2(size_t n); +size_t ares__log2(size_t n); #endif /* __ARES_PRIVATE_H */ diff --git a/deps/cares/src/lib/ares_process.c b/deps/cares/src/lib/ares_process.c index 06e712160192c3..65ae8654a6a11c 100644 --- a/deps/cares/src/lib/ares_process.c +++ b/deps/cares/src/lib/ares_process.c @@ -61,57 +61,58 @@ #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_packets(ares_channel channel, fd_set *read_fds, - ares_socket_t read_fd, struct timeval *now); -static void process_timeouts(ares_channel channel, struct timeval *now); +static ares_bool_t 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_packets(ares_channel channel, fd_set *read_fds, + ares_socket_t read_fd, struct timeval *now); +static void process_timeouts(ares_channel channel, struct timeval *now); static void process_answer(ares_channel channel, const unsigned char *abuf, - int alen, struct server_connection *conn, int tcp, - struct timeval *now); + size_t alen, struct server_connection *conn, + ares_bool_t tcp, struct timeval *now); static void handle_error(struct server_connection *conn, struct timeval *now); static void skip_server(ares_channel channel, struct query *query, struct server_state *server); -static int next_server(ares_channel channel, struct query *query, - struct timeval *now); -static int open_socket(ares_channel channel, struct server_state *server, - int is_tcp); -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 int has_opt_rr(const unsigned char *abuf, int alen); -static void end_query(ares_channel channel, struct query *query, int status, - const unsigned char *abuf, int alen); -static ares_ssize_t ares__socket_write(ares_channel channel, ares_socket_t s, - const void * data, size_t len); +static ares_status_t next_server(ares_channel channel, struct query *query, + struct timeval *now); +static ares_status_t open_socket(ares_channel channel, + struct server_state *server, + ares_bool_t is_tcp); +static ares_bool_t same_questions(const unsigned char *qbuf, size_t qlen, + ares_dns_record_t *arec); +static ares_bool_t same_address(struct sockaddr *sa, struct ares_addr *aa); +static ares_bool_t has_opt_rr(ares_dns_record_t *arec); +static void end_query(ares_channel channel, struct query *query, + ares_status_t status, const unsigned char *abuf, + size_t alen); +static ares_ssize_t ares__socket_write(ares_channel channel, ares_socket_t s, + const void *data, size_t len); /* return true if now is exactly check time or later */ -int ares__timedout(struct timeval *now, - struct timeval *check) +ares_bool_t ares__timedout(struct timeval *now, struct timeval *check) { - long secs = (now->tv_sec - check->tv_sec); + time_t 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 (secs > 0) { + return ARES_TRUE; /* yes, timed out */ + } + if (secs < 0) { + return ARES_FALSE; /* nope, not timed out */ + } /* if the full seconds were identical, check the sub second parts */ - return (now->tv_usec - check->tv_usec >= 0); + return (now->tv_usec - check->tv_usec) >= 0 ? ARES_TRUE : ARES_FALSE; } /* add the specific number of milliseconds to the time in the first argument */ -static void timeadd(struct timeval *now, int millisecs) +static void timeadd(struct timeval *now, size_t millisecs) { - now->tv_sec += millisecs/1000; - now->tv_usec += (millisecs%1000)*1000; + now->tv_sec += (time_t)millisecs / 1000; + now->tv_usec += (time_t)((millisecs % 1000) * 1000); - if(now->tv_usec >= 1000000) { + if (now->tv_usec >= 1000000) { ++(now->tv_sec); now->tv_usec -= 1000000; } @@ -120,9 +121,9 @@ static void timeadd(struct timeval *now, int millisecs) /* * 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) +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(); @@ -142,7 +143,7 @@ void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds) /* 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, +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) @@ -150,7 +151,6 @@ void ares_process_fd(ares_channel channel, 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 @@ -158,40 +158,37 @@ void ares_process_fd(ares_channel channel, * http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html? * manpage=/usr/share/man/man2.Z/send.2 */ -static int try_again(int errnum) +static ares_bool_t try_again(int errnum) { #if !defined EWOULDBLOCK && !defined EAGAIN -#error "Neither EWOULDBLOCK nor EAGAIN defined" +# error "Neither EWOULDBLOCK nor EAGAIN defined" #endif - switch (errnum) - { + switch (errnum) { #ifdef EWOULDBLOCK case EWOULDBLOCK: - return 1; + return ARES_TRUE; #endif #if defined EAGAIN && EAGAIN != EWOULDBLOCK case EAGAIN: - return 1; + return ARES_TRUE; #endif - } - return 0; + } + return ARES_FALSE; } - /* 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) +static void write_tcp_data(ares_channel channel, fd_set *write_fds, + ares_socket_t write_fd, struct timeval *now) { struct server_state *server; - int i; + size_t i; - if(!write_fds && (write_fd == ARES_SOCKET_BAD)) + if (!write_fds && (write_fd == ARES_SOCKET_BAD)) { /* no possible action */ return; + } for (i = 0; i < channel->nservers; i++) { const unsigned char *data; @@ -201,15 +198,18 @@ static void write_tcp_data(ares_channel channel, /* Make sure server has data to send and is selected in write_fds or write_fd. */ server = &channel->servers[i]; - if (ares__buf_len(server->tcp_send) == 0 || server->tcp_conn == NULL) + if (ares__buf_len(server->tcp_send) == 0 || server->tcp_conn == NULL) { continue; + } if (write_fds) { - if (!FD_ISSET(server->tcp_conn->fd, write_fds)) + if (!FD_ISSET(server->tcp_conn->fd, write_fds)) { continue; + } } else { - if (server->tcp_conn->fd != write_fd) + if (server->tcp_conn->fd != write_fd) { continue; + } } if (write_fds) { @@ -231,7 +231,7 @@ static void write_tcp_data(ares_channel channel, } /* Strip data written from the buffer */ - ares__buf_consume(server->tcp_send, count); + ares__buf_consume(server->tcp_send, (size_t)count); /* Notify state callback all data is written */ if (ares__buf_len(server->tcp_send) == 0) { @@ -240,40 +240,34 @@ static void write_tcp_data(ares_channel channel, } } - -static ares_ssize_t socket_recvfrom(ares_channel channel, - ares_socket_t s, - void * data, - size_t data_len, - int flags, - struct sockaddr *from, - ares_socklen_t *from_len) +static ares_ssize_t socket_recvfrom(ares_channel channel, ares_socket_t s, + void *data, size_t data_len, int flags, + struct sockaddr *from, + ares_socklen_t *from_len) { - if (channel->sock_funcs && channel->sock_funcs->arecvfrom) - return channel->sock_funcs->arecvfrom(s, data, data_len, - flags, from, from_len, - channel->sock_func_cb_data); + if (channel->sock_funcs && channel->sock_funcs->arecvfrom) { + return channel->sock_funcs->arecvfrom(s, data, data_len, flags, from, + from_len, channel->sock_func_cb_data); + } #ifdef HAVE_RECVFROM - return recvfrom(s, data, data_len, flags, from, from_len); + return recvfrom(s, data, data_len, flags, from, from_len); #else - return sread(s, data, data_len); + return sread(s, data, data_len); #endif } -static ares_ssize_t socket_recv(ares_channel channel, - ares_socket_t s, - void * data, - size_t data_len) +static ares_ssize_t socket_recv(ares_channel channel, ares_socket_t s, + void *data, size_t data_len) { - if (channel->sock_funcs && channel->sock_funcs->arecvfrom) - return channel->sock_funcs->arecvfrom(s, data, data_len, 0, 0, 0, - channel->sock_func_cb_data); + if (channel->sock_funcs && channel->sock_funcs->arecvfrom) { + return channel->sock_funcs->arecvfrom(s, data, data_len, 0, 0, 0, + channel->sock_func_cb_data); + } - return sread(s, data, data_len); + return sread(s, data, data_len); } - /* If any TCP socket selects true for reading, read some data, * allocate a buffer if we finish reading the length word, and process * a packet if we finish reading one. @@ -282,12 +276,11 @@ static void read_tcp_data(ares_channel channel, struct server_connection *conn, struct timeval *now) { ares_ssize_t count; - struct server_state *server = conn->server; + struct server_state *server = conn->server; /* Fetch buffer to store data we are reading */ - size_t ptr_len = 512; - unsigned char *ptr = ares__buf_append_start(server->tcp_parser, - &ptr_len); + size_t ptr_len = 512; + unsigned char *ptr = ares__buf_append_start(server->tcp_parser, &ptr_len); if (ptr == NULL) { handle_error(conn, now); @@ -299,19 +292,20 @@ static void read_tcp_data(ares_channel channel, struct server_connection *conn, count = socket_recv(channel, conn->fd, ptr, ptr_len); if (count <= 0) { ares__buf_append_finish(server->tcp_parser, 0); - if (!(count == -1 && try_again(SOCKERRNO))) + if (!(count == -1 && try_again(SOCKERRNO))) { handle_error(conn, now); + } return; } /* Record amount of data read */ - ares__buf_append_finish(server->tcp_parser, count); + ares__buf_append_finish(server->tcp_parser, (size_t)count); /* Process all queued answers */ while (1) { - unsigned short dns_len = 0; - const unsigned char *data = NULL; - size_t data_len = 0; + unsigned short dns_len = 0; + const unsigned char *data = NULL; + size_t data_len = 0; /* Tag so we can roll back */ ares__buf_tag(server->tcp_parser); @@ -340,24 +334,24 @@ static void read_tcp_data(ares_channel channel, struct server_connection *conn, data_len -= 2; /* We finished reading this answer; process it */ - process_answer(channel, data, (int)data_len, conn, 1, now); + process_answer(channel, data, data_len, conn, ARES_TRUE, now); /* Since we processed the answer, clear the tag so space can be reclaimed */ ares__buf_tag_clear(server->tcp_parser); } } - static int socket_list_append(ares_socket_t **socketlist, ares_socket_t fd, size_t *alloc_cnt, size_t *num) { if (*num >= *alloc_cnt) { /* Grow by powers of 2 */ size_t new_alloc = (*alloc_cnt) << 1; - ares_socket_t *new_list = ares_realloc(socketlist, - new_alloc * sizeof(*new_list)); - if (new_list == NULL) + ares_socket_t *new_list = + ares_realloc(socketlist, new_alloc * sizeof(*new_list)); + if (new_list == NULL) { return 0; + } *alloc_cnt = new_alloc; *socketlist = new_list; } @@ -366,30 +360,31 @@ static int socket_list_append(ares_socket_t **socketlist, ares_socket_t fd, return 1; } - static ares_socket_t *channel_socket_list(ares_channel channel, size_t *num) { size_t alloc_cnt = 1 << 4; - int i; - ares_socket_t *out = ares_malloc(alloc_cnt * sizeof(*out)); + size_t i; + ares_socket_t *out = ares_malloc(alloc_cnt * sizeof(*out)); *num = 0; - if (out == NULL) + if (out == NULL) { return NULL; + } - for (i=0; inservers; i++) { + for (i = 0; i < channel->nservers; i++) { ares__llist_node_t *node; for (node = ares__llist_node_first(channel->servers[i].connections); - node != NULL; - node = ares__llist_node_next(node)) { + node != NULL; node = ares__llist_node_next(node)) { struct server_connection *conn = ares__llist_node_val(node); - if (conn->fd == ARES_SOCKET_BAD) + if (conn->fd == ARES_SOCKET_BAD) { continue; + } - if (!socket_list_append(&out, conn->fd, &alloc_cnt, num)) + if (!socket_list_append(&out, conn->fd, &alloc_cnt, num)) { goto fail; + } } } @@ -402,21 +397,24 @@ static ares_socket_t *channel_socket_list(ares_channel channel, size_t *num) } /* If any UDP sockets select true for reading, process them. */ -static void read_udp_packets_fd(ares_channel channel, +static void read_udp_packets_fd(ares_channel channel, struct server_connection *conn, - struct timeval *now) + struct timeval *now) { - ares_ssize_t read_len; + ares_ssize_t read_len; unsigned char buf[MAXENDSSZ + 1]; ares_socket_t fd = conn->fd; /* Cache for validation */ #ifdef HAVE_RECVFROM ares_socklen_t fromlen; + union { struct sockaddr sa; struct sockaddr_in sa4; struct sockaddr_in6 sa6; } from; + + memset(&from, 0, sizeof(from)); #endif /* To reduce event loop overhead, read and process as many @@ -430,8 +428,8 @@ static void read_udp_packets_fd(ares_channel channel, } else { fromlen = sizeof(from.sa6); } - read_len = socket_recvfrom(channel, conn->fd, (void *)buf, - sizeof(buf), 0, &from.sa, &fromlen); + read_len = socket_recvfrom(channel, conn->fd, (void *)buf, sizeof(buf), 0, + &from.sa, &fromlen); } if (read_len == 0) { @@ -440,8 +438,9 @@ static void read_udp_packets_fd(ares_channel channel, * tcp */ continue; } else if (read_len < 0) { - if (try_again(SOCKERRNO)) + if (try_again(SOCKERRNO)) { continue; + } handle_error(conn, now); return; @@ -454,18 +453,16 @@ static void read_udp_packets_fd(ares_channel channel, #endif } else { - process_answer(channel, buf, (int)read_len, conn, 0, now); + process_answer(channel, buf, (size_t)read_len, conn, ARES_FALSE, now); } - /* process_answer may invalidate "conn" and close the file descriptor, so - * check to see if file descriptor is still valid before looping! */ - } while (read_len >= 0 && - ares__htable_asvp_get_direct(channel->connnode_by_socket, fd) != NULL); - + /* process_answer may invalidate "conn" and close the file descriptor, so + * check to see if file descriptor is still valid before looping! */ + } while (read_len >= 0 && ares__htable_asvp_get_direct( + channel->connnode_by_socket, fd) != NULL); } - static void read_packets(ares_channel channel, fd_set *read_fds, - ares_socket_t read_fd, struct timeval *now) + ares_socket_t read_fd, struct timeval *now) { size_t i; ares_socket_t *socketlist = NULL; @@ -473,15 +470,17 @@ static void read_packets(ares_channel channel, fd_set *read_fds, struct server_connection *conn = NULL; ares__llist_node_t *node = NULL; - if (!read_fds && (read_fd == ARES_SOCKET_BAD)) + if (!read_fds && (read_fd == ARES_SOCKET_BAD)) { /* no possible action */ return; + } /* Single socket specified */ if (!read_fds) { node = ares__htable_asvp_get_direct(channel->connnode_by_socket, read_fd); - if (node == NULL) + if (node == NULL) { return; + } conn = ares__llist_node_val(node); @@ -494,13 +493,15 @@ static void read_packets(ares_channel channel, fd_set *read_fds, return; } - /* There is no good way to iterate across an fd_set, instead we must pull a list - * of all known fds, and iterate across that checking against the fd_set. */ + /* There is no good way to iterate across an fd_set, instead we must pull a + * list of all known fds, and iterate across that checking against the fd_set. + */ socketlist = channel_socket_list(channel, &num_sockets); - for (i=0; iconnnode_by_socket, - socketlist[i]); - if (node == NULL) + node = + ares__htable_asvp_get_direct(channel->connnode_by_socket, socketlist[i]); + if (node == NULL) { return; + } conn = ares__llist_node_val(node); @@ -526,18 +528,19 @@ static void read_packets(ares_channel channel, fd_set *read_fds, ares_free(socketlist); } - /* If any queries have timed out, note the timeout and move them on. */ static void process_timeouts(ares_channel channel, struct timeval *now) { - ares__slist_node_t *node = ares__slist_node_first(channel->queries_by_timeout); + ares__slist_node_t *node = + ares__slist_node_first(channel->queries_by_timeout); while (node != NULL) { struct query *query = ares__slist_node_val(node); /* Node might be removed, cache next */ - ares__slist_node_t *next = ares__slist_node_next(node); + ares__slist_node_t *next = ares__slist_node_next(node); ares_socket_t fd; - /* Since this is sorted, as soon as we hit a query that isn't timed out, break */ + /* Since this is sorted, as soon as we hit a query that isn't timed out, + * break */ if (!ares__timedout(now, &query->timeout)) { break; } @@ -556,43 +559,39 @@ static void process_timeouts(ares_channel channel, struct timeval *now) } } - /* Handle an answer from a server. */ static void process_answer(ares_channel channel, const unsigned char *abuf, - int alen, struct server_connection *conn, int tcp, - struct timeval *now) + size_t alen, struct server_connection *conn, + ares_bool_t tcp, struct timeval *now) { - int tc, rcode, packetsz; - unsigned short id; - struct query *query; + size_t packetsz; + struct query *query; /* Cache these as once ares__send_query() gets called, it may end up * invalidating the connection all-together */ struct server_state *server = conn->server; - ares_socket_t fd = conn->fd; - - /* If there's no room in the answer for a header, we can't do much - * with it. */ - if (alen < HFIXEDSZ) { - return; + ares_socket_t fd = conn->fd; + ares_dns_record_t *dnsrec = NULL; + ares_status_t status; + + /* Parse the response */ + status = ares_dns_parse(abuf, alen, 0, &dnsrec); + if (status != ARES_SUCCESS) { + goto cleanup; } - /* Grab the query ID, truncate bit, and response code from the packet. */ - id = DNS_HEADER_QID(abuf); /* Converts to host byte order */ - 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. + * hashed/bucketed by query id, so this lookup should be quick. */ - query = ares__htable_stvp_get_direct(channel->queries_by_qid, id); + query = ares__htable_stvp_get_direct(channel->queries_by_qid, + ares_dns_record_get_id(dnsrec)); if (!query) { - return; + goto cleanup; } /* Both the query id and the questions must be the same. We will drop any * replies that aren't for the same query as this is considered invalid. */ - if (!same_questions(query->qbuf, query->qlen, abuf, alen)) { - return; + if (!same_questions(query->qbuf, query->qlen, dnsrec)) { + goto cleanup; } /* At this point we know we've received an answer for this query, so we should @@ -603,87 +602,83 @@ static void process_answer(ares_channel channel, const unsigned char *abuf, query->node_queries_to_conn = NULL; packetsz = PACKETSZ; - /* If we use EDNS and server answers with FORMERR without an OPT RR, the protocol - * extension is not understood by the responder. We must retry the query - * without EDNS enabled. */ - if (channel->flags & ARES_FLAG_EDNS) - { - packetsz = channel->ednspsz; - if (rcode == FORMERR && has_opt_rr(abuf, alen) != 1) - { - int qlen = (query->tcplen - 2) - EDNSFIXEDSZ; - channel->flags ^= ARES_FLAG_EDNS; - query->tcplen -= EDNSFIXEDSZ; - query->qlen -= EDNSFIXEDSZ; - query->tcpbuf[0] = (unsigned char)((qlen >> 8) & 0xff); - query->tcpbuf[1] = (unsigned char)(qlen & 0xff); - DNS_HEADER_SET_ARCOUNT(query->tcpbuf + 2, 0); - query->tcpbuf = ares_realloc(query->tcpbuf, query->tcplen); - query->qbuf = query->tcpbuf + 2; - ares__send_query(channel, query, now); - ares__check_cleanup_conn(channel, fd); - return; - } + /* If we use EDNS and server answers with FORMERR without an OPT RR, the + * protocol extension is not understood by the responder. We must retry the + * query without EDNS enabled. */ + if (channel->flags & ARES_FLAG_EDNS) { + packetsz = (size_t)channel->ednspsz; + if (ares_dns_record_get_rcode(dnsrec) == ARES_RCODE_FORMAT_ERROR && + !has_opt_rr(dnsrec)) { + size_t qlen = (query->tcplen - 2) - EDNSFIXEDSZ; + channel->flags ^= ARES_FLAG_EDNS; + query->tcplen -= EDNSFIXEDSZ; + query->qlen -= EDNSFIXEDSZ; + query->tcpbuf[0] = (unsigned char)((qlen >> 8) & 0xff); + query->tcpbuf[1] = (unsigned char)(qlen & 0xff); + DNS_HEADER_SET_ARCOUNT(query->tcpbuf + 2, 0); + query->tcpbuf = ares_realloc(query->tcpbuf, query->tcplen); + query->qbuf = query->tcpbuf + 2; + ares__send_query(channel, query, now); + ares__check_cleanup_conn(channel, fd); + goto cleanup; + } } /* 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); - } - ares__check_cleanup_conn(channel, fd); - return; + if ((ares_dns_record_get_flags(dnsrec) & ARES_FLAG_TC || alen > packetsz) && + !tcp && !(channel->flags & ARES_FLAG_IGNTC)) { + if (!query->using_tcp) { + query->using_tcp = ARES_TRUE; + ares__send_query(channel, query, now); } - - /* Limit alen to PACKETSZ if we aren't using TCP (only relevant if we - * are ignoring truncation. - */ - if (alen > packetsz && !tcp) - alen = packetsz; + ares__check_cleanup_conn(channel, fd); + goto cleanup; + } /* 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) - { - switch (rcode) { - case SERVFAIL: - query->error_status = ARES_ESERVFAIL; - break; - case NOTIMP: - query->error_status = ARES_ENOTIMP; - break; - case REFUSED: - query->error_status = ARES_EREFUSED; - break; - } - skip_server(channel, query, server); - if (query->server == (int)server->idx) /* Is this ever not true? */ - next_server(channel, query, now); - ares__check_cleanup_conn(channel, fd); - return; - } + if (!(channel->flags & ARES_FLAG_NOCHECKRESP)) { + ares_dns_rcode_t rcode = ares_dns_record_get_rcode(dnsrec); + if (rcode == ARES_RCODE_SERVER_FAILURE || + rcode == ARES_RCODE_NOT_IMPLEMENTED || rcode == ARES_RCODE_REFUSED) { + switch (rcode) { + case ARES_RCODE_SERVER_FAILURE: + query->error_status = ARES_ESERVFAIL; + break; + case ARES_RCODE_NOT_IMPLEMENTED: + query->error_status = ARES_ENOTIMP; + break; + case ARES_RCODE_REFUSED: + query->error_status = ARES_EREFUSED; + break; + default: + break; + } + skip_server(channel, query, server); + if (query->server == server->idx) { /* Is this ever not true? */ + next_server(channel, query, now); + } + ares__check_cleanup_conn(channel, fd); + goto cleanup; } + } end_query(channel, query, ARES_SUCCESS, abuf, alen); ares__check_cleanup_conn(channel, fd); -} +cleanup: + ares_dns_record_destroy(dnsrec); +} -static void handle_error(struct server_connection *conn, - struct timeval *now) +static void handle_error(struct server_connection *conn, struct timeval *now) { ares_channel channel = conn->server->channel; - struct server_state *server = conn->server; + struct server_state *server = conn->server; ares__llist_t *list_copy; ares__llist_node_t *node; @@ -696,9 +691,9 @@ static void handle_error(struct server_connection *conn, ares__close_connection(conn); while ((node = ares__llist_node_first(list_copy)) != NULL) { - struct query *query = ares__llist_node_val(node); + struct query *query = ares__llist_node_val(node); - assert(query->server == (int)server->idx); + assert(query->server == server->idx); skip_server(channel, query, server); /* next_server will remove the current node from the list */ next_server(channel, query, now); @@ -707,7 +702,6 @@ static void handle_error(struct server_connection *conn, ares__llist_destroy(list_copy); } - static void skip_server(ares_channel channel, struct query *query, struct server_state *server) { @@ -719,29 +713,28 @@ static void skip_server(ares_channel channel, struct query *query, * server timed out our TCP connection just as we were sending another * request). */ - if (channel->nservers > 1) - { - query->server_info[server->idx].skip_server = 1; - } + if (channel->nservers > 1) { + query->server_info[server->idx].skip_server = ARES_TRUE; + } } -static int next_server(ares_channel channel, struct query *query, - struct timeval *now) +static ares_status_t next_server(ares_channel channel, struct query *query, + struct timeval *now) { - int status; + ares_status_t status; /* 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. * A query can be requested be terminated at the next interval by setting * query->no_retries */ - while (++(query->try_count) < (channel->nservers * channel->tries) && + while (++(query->try_count) < ((size_t)channel->nservers * channel->tries) && !query->no_retries) { struct server_state *server; /* Move on to the next server. */ - query->server = (query->server + 1) % channel->nservers; - server = &channel->servers[query->server]; + query->server = (query->server + 1) % (size_t)channel->nservers; + server = &channel->servers[query->server]; /* We don't want to use this server if (1) we've decided to skip this * server because of earlier errors we encountered, or (2) we already @@ -749,8 +742,8 @@ static int next_server(ares_channel channel, struct query *query, */ if (!query->server_info[query->server].skip_server && !(query->using_tcp && - (query->server_info[query->server].tcp_connection_generation == - server->tcp_connection_generation))) { + (query->server_info[query->server].tcp_connection_generation == + server->tcp_connection_generation))) { return ares__send_query(channel, query, now); } @@ -768,13 +761,13 @@ static int next_server(ares_channel channel, struct query *query, return status; } -int ares__send_query(ares_channel channel, struct query *query, - struct timeval *now) +ares_status_t ares__send_query(ares_channel channel, struct query *query, + struct timeval *now) { - struct server_state *server; + struct server_state *server; struct server_connection *conn; - int timeplus; - int status; + size_t timeplus; + ares_status_t status; server = &channel->servers[query->server]; if (query->using_tcp) { @@ -783,8 +776,8 @@ int ares__send_query(ares_channel channel, struct query *query, * a send request. */ if (server->tcp_conn == NULL) { - int err = open_socket(channel, server, 1); - switch (err) { + status = open_socket(channel, server, 1); + switch (status) { /* Good result, continue on */ case ARES_SUCCESS: break; @@ -798,8 +791,8 @@ int ares__send_query(ares_channel channel, struct query *query, /* Anything else is not retryable, likely ENOMEM */ default: - end_query(channel, query, err, NULL, 0); - return err; + end_query(channel, query, status, NULL, 0); + return status; } } @@ -836,8 +829,8 @@ int ares__send_query(ares_channel channel, struct query *query, } if (node == NULL) { - int err = open_socket(channel, server, 0); - switch (err) { + status = open_socket(channel, server, 0); + switch (status) { /* Good result, continue on */ case ARES_SUCCESS: break; @@ -851,8 +844,8 @@ int ares__send_query(ares_channel channel, struct query *query, /* Anything else is not retryable, likely ENOMEM */ default: - end_query(channel, query, err, NULL, 0); - return err; + end_query(channel, query, status, NULL, 0); + return status; } node = ares__llist_node_first(server->connections); } @@ -872,7 +865,7 @@ int ares__send_query(ares_channel channel, struct query *query, timeplus = channel->timeout; { /* How many times do we want to double it? Presume sane values here. */ - const int shift = query->try_count / channel->nservers; + const size_t shift = query->try_count / (size_t)channel->nservers; /* Is there enough room to shift timeplus left that many times? * @@ -883,9 +876,8 @@ int ares__send_query(ares_channel channel, struct query *query, * * This has the side benefit of leaving negative numbers unchanged. */ - if(shift <= (int)(sizeof(int) * CHAR_BIT - 1) - && (timeplus >> (sizeof(int) * CHAR_BIT - 1 - shift)) == 0) - { + if (shift <= (sizeof(int) * CHAR_BIT - 1) && + (timeplus >> (sizeof(int) * CHAR_BIT - 1 - shift)) == 0) { timeplus <<= shift; } } @@ -896,7 +888,8 @@ int ares__send_query(ares_channel channel, struct query *query, ares__slist_node_destroy(query->node_queries_by_timeout); query->timeout = *now; timeadd(&query->timeout, timeplus); - query->node_queries_by_timeout = ares__slist_insert(channel->queries_by_timeout, query); + query->node_queries_by_timeout = + ares__slist_insert(channel->queries_by_timeout, query); if (!query->node_queries_by_timeout) { end_query(channel, query, ARES_ENOMEM, NULL, 0); return ARES_ENOMEM; @@ -917,8 +910,8 @@ int ares__send_query(ares_channel channel, struct query *query, * 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 */) +static int setsocknonblock(ares_socket_t sockfd, /* operate on this */ + int nonblock /* TRUE or FALSE */) { #if defined(USE_BLOCKING_SOCKETS) @@ -929,10 +922,11 @@ static int setsocknonblock(ares_socket_t sockfd, /* operate on this */ /* most recent unix versions */ int flags; flags = fcntl(sockfd, F_GETFL, 0); - if (FALSE != nonblock) + if (FALSE != nonblock) { return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); - else - return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK)); /* LCOV_EXCL_LINE */ + } else { + return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK)); /* LCOV_EXCL_LINE */ + } #elif defined(HAVE_IOCTL_FIONBIO) @@ -942,12 +936,12 @@ static int setsocknonblock(ares_socket_t sockfd, /* operate on this */ #elif defined(HAVE_IOCTLSOCKET_FIONBIO) -#ifdef WATT32 +# ifdef WATT32 char flags = nonblock ? 1 : 0; -#else +# else /* Windows */ unsigned long flags = nonblock ? 1UL : 0UL; -#endif +# endif return ioctlsocket(sockfd, FIONBIO, &flags); #elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO) @@ -980,7 +974,7 @@ static void set_ipv6_v6only(ares_socket_t sockfd, int on) (void)setsockopt(sockfd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&on, sizeof(on)); } #else -#define set_ipv6_v6only(s,v) +# define set_ipv6_v6only(s, v) #endif static int configure_socket(ares_socket_t s, int family, ares_channel channel) @@ -992,34 +986,38 @@ static int configure_socket(ares_socket_t s, int family, ares_channel channel) } local; /* do not set options for user-managed sockets */ - if (channel->sock_funcs && channel->sock_funcs->asocket) + if (channel->sock_funcs && channel->sock_funcs->asocket) { return 0; + } (void)setsocknonblock(s, TRUE); #if defined(FD_CLOEXEC) && !defined(MSDOS) /* Configure the socket fd as close-on-exec. */ - if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) - return -1; /* LCOV_EXCL_LINE */ + if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1) { + return -1; /* LCOV_EXCL_LINE */ + } #endif /* Set the socket's send and receive buffer sizes. */ if ((channel->socket_send_buffer_size > 0) && setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void *)&channel->socket_send_buffer_size, - sizeof(channel->socket_send_buffer_size)) == -1) + 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) + 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))) { + 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. */ } @@ -1029,21 +1027,22 @@ static int configure_socket(ares_socket_t s, int family, ares_channel channel) if (family == AF_INET) { if (channel->local_ip4) { memset(&local.sa4, 0, sizeof(local.sa4)); - local.sa4.sin_family = AF_INET; + 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) + if (bind(s, &local.sa, sizeof(local.sa4)) < 0) { return -1; + } } - } - else if (family == AF_INET6) { - if (memcmp(channel->local_ip6, &ares_in6addr_any, + } else if (family == AF_INET6) { + if (memcmp(channel->local_ip6, ares_in6addr_any._S6_un._S6_u8, 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) + if (bind(s, &local.sa, sizeof(local.sa6)) < 0) { return -1; + } } set_ipv6_v6only(s, 0); } @@ -1051,32 +1050,33 @@ static int configure_socket(ares_socket_t s, int family, ares_channel channel) return 0; } -static int open_socket(ares_channel channel, struct server_state *server, - int is_tcp) +static ares_status_t open_socket(ares_channel channel, + struct server_state *server, + ares_bool_t is_tcp) { - ares_socket_t s; - int opt; + ares_socket_t s; + int opt; ares_socklen_t salen; + union { struct sockaddr_in sa4; struct sockaddr_in6 sa6; } saddr; - struct sockaddr *sa; - unsigned short port; + struct sockaddr *sa; + unsigned short port; struct server_connection *conn; - ares__llist_node_t *node; + ares__llist_node_t *node; + int type = is_tcp ? SOCK_STREAM : SOCK_DGRAM; if (is_tcp) { - port = aresx_sitous(server->addr.tcp_port? - server->addr.tcp_port:channel->tcp_port); + port = server->addr.tcp_port ? server->addr.tcp_port : channel->tcp_port; } else { - port = aresx_sitous(server->addr.udp_port? - server->addr.udp_port:channel->udp_port); + port = server->addr.udp_port ? server->addr.udp_port : channel->udp_port; } switch (server->addr.family) { case AF_INET: - sa = (void *)&saddr.sa4; + sa = (void *)&saddr.sa4; salen = sizeof(saddr.sa4); memset(sa, 0, salen); saddr.sa4.sin_family = AF_INET; @@ -1085,7 +1085,7 @@ static int open_socket(ares_channel channel, struct server_state *server, sizeof(server->addr.addrV4)); break; case AF_INET6: - sa = (void *)&saddr.sa6; + sa = (void *)&saddr.sa6; salen = sizeof(saddr.sa6); memset(sa, 0, salen); saddr.sa6.sin6_family = AF_INET6; @@ -1094,14 +1094,14 @@ static int open_socket(ares_channel channel, struct server_state *server, sizeof(server->addr.addrV6)); break; default: - return ARES_EBADFAMILY; /* LCOV_EXCL_LINE */ + return ARES_EBADFAMILY; /* LCOV_EXCL_LINE */ } /* Acquire a socket. */ - s = ares__open_socket(channel, server->addr.family, - is_tcp?SOCK_STREAM:SOCK_DGRAM, 0); - if (s == ARES_SOCKET_BAD) + s = ares__open_socket(channel, server->addr.family, type, 0); + if (s == ARES_SOCKET_BAD) { return ARES_ECONNREFUSED; + } /* Configure it. */ if (configure_socket(s, server->addr.family, channel) < 0) { @@ -1119,8 +1119,8 @@ static int open_socket(ares_channel channel, struct server_state *server, */ opt = 1; if (!channel->sock_funcs || !channel->sock_funcs->asocket) { - if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) - == -1) { + if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) == + -1) { ares__close_socket(channel, s); return ARES_ECONNREFUSED; } @@ -1129,8 +1129,7 @@ static int open_socket(ares_channel channel, struct server_state *server, #endif if (channel->sock_config_cb) { - int err = channel->sock_config_cb(s, SOCK_STREAM, - channel->sock_config_cb_data); + int err = channel->sock_config_cb(s, type, channel->sock_config_cb_data); if (err < 0) { ares__close_socket(channel, s); return ARES_ECONNREFUSED; @@ -1148,8 +1147,7 @@ static int open_socket(ares_channel channel, struct server_state *server, } if (channel->sock_create_cb) { - int err = channel->sock_create_cb(s, SOCK_STREAM, - channel->sock_create_cb_data); + int err = channel->sock_create_cb(s, type, channel->sock_create_cb_data); if (err < 0) { ares__close_socket(channel, s); return ARES_ECONNREFUSED; @@ -1162,10 +1160,10 @@ static int open_socket(ares_channel channel, struct server_state *server, return ARES_ENOMEM; } memset(conn, 0, sizeof(*conn)); - conn->fd = s; - conn->server = server; + conn->fd = s; + conn->server = server; conn->queries_to_conn = ares__llist_create(NULL); - conn->is_tcp = is_tcp; + conn->is_tcp = is_tcp; if (conn->queries_to_conn == NULL) { ares__close_socket(channel, s); ares_free(conn); @@ -1201,197 +1199,99 @@ static int open_socket(ares_channel channel, struct server_state *server, if (is_tcp) { server->tcp_connection_generation = ++channel->tcp_connection_generation; - server->tcp_conn = conn; + server->tcp_conn = conn; } return ARES_SUCCESS; } - -static int same_questions(const unsigned char *qbuf, int qlen, - const unsigned char *abuf, int alen) +static ares_bool_t same_questions(const unsigned char *qbuf, size_t qlen, + ares_dns_record_t *arec) { - 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; + ares_dns_record_t *qrec = NULL; + size_t i; + ares_bool_t rv = ARES_FALSE; - /* 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; + if (ares_dns_parse(qbuf, qlen, 0, &qrec) != ARES_SUCCESS) { + goto done; + } - /* For each question in qbuf, find it in abuf. */ - q.p = qbuf + HFIXEDSZ; - for (i = 0; i < q.qdcount; i++) - { - /* Decode the question in the query. */ - if (ares_expand_name(q.p, qbuf, qlen, &q.name, &q.namelen) - != ARES_SUCCESS) - return 0; - q.p += q.namelen; - if (q.p + QFIXEDSZ > qbuf + qlen) - { - ares_free(q.name); - return 0; - } - q.type = DNS_QUESTION_TYPE(q.p); - q.dnsclass = DNS_QUESTION_CLASS(q.p); - q.p += QFIXEDSZ; - - /* Search for this question in the answer. */ - a.p = abuf + HFIXEDSZ; - for (j = 0; j < a.qdcount; j++) - { - /* Decode the question in the answer. */ - if (ares_expand_name(a.p, abuf, alen, &a.name, &a.namelen) - != ARES_SUCCESS) - { - ares_free(q.name); - return 0; - } - a.p += a.namelen; - if (a.p + QFIXEDSZ > abuf + alen) - { - ares_free(q.name); - ares_free(a.name); - return 0; - } - a.type = DNS_QUESTION_TYPE(a.p); - a.dnsclass = DNS_QUESTION_CLASS(a.p); - a.p += QFIXEDSZ; - - /* Compare the decoded questions. */ - if (strcasecmp(q.name, a.name) == 0 && q.type == a.type - && q.dnsclass == a.dnsclass) - { - ares_free(a.name); - break; - } - ares_free(a.name); - } + if (ares_dns_record_query_cnt(qrec) != ares_dns_record_query_cnt(arec)) { + goto done; + } - ares_free(q.name); - if (j == a.qdcount) - return 0; + for (i = 0; i < ares_dns_record_query_cnt(qrec); i++) { + const char *qname = NULL; + const char *aname = NULL; + ares_dns_rec_type_t qtype; + ares_dns_rec_type_t atype; + ares_dns_class_t qclass; + ares_dns_class_t aclass; + + if (ares_dns_record_query_get(qrec, i, &qname, &qtype, &qclass) != + ARES_SUCCESS || + qname == NULL) { + goto done; } - return 1; + + if (ares_dns_record_query_get(arec, i, &aname, &atype, &aclass) != + ARES_SUCCESS || + aname == NULL) { + goto done; + } + if (strcasecmp(qname, aname) != 0 || qtype != atype || qclass != aclass) { + goto done; + } + } + + rv = ARES_TRUE; + +done: + ares_dns_record_destroy(qrec); + return rv; } -static int same_address(struct sockaddr *sa, struct ares_addr *aa) +static ares_bool_t 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 = &(CARES_INADDR_CAST(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 = &(CARES_INADDR_CAST(struct sockaddr_in6 *, sa))->sin6_addr; - if (memcmp(addr1, addr2, sizeof(aa->addrV6)) == 0) - return 1; /* match */ - break; - default: - break; /* LCOV_EXCL_LINE */ + if (sa->sa_family == aa->family) { + switch (aa->family) { + case AF_INET: + addr1 = &aa->addrV4; + addr2 = &(CARES_INADDR_CAST(struct sockaddr_in *, sa))->sin_addr; + if (memcmp(addr1, addr2, sizeof(aa->addrV4)) == 0) { + return ARES_TRUE; /* match */ + } + break; + case AF_INET6: + addr1 = &aa->addrV6; + addr2 = &(CARES_INADDR_CAST(struct sockaddr_in6 *, sa))->sin6_addr; + if (memcmp(addr1, addr2, sizeof(aa->addrV6)) == 0) { + return ARES_TRUE; /* match */ } + break; + default: + break; /* LCOV_EXCL_LINE */ } - return 0; /* different */ + } + return ARES_FALSE; /* different */ } /* search for an OPT RR in the response */ -static int has_opt_rr(const unsigned char *abuf, int alen) +static ares_bool_t has_opt_rr(ares_dns_record_t *arec) { - unsigned int qdcount, ancount, nscount, arcount, i; - const unsigned char *aptr; - int status; - - if (alen < HFIXEDSZ) - return -1; - - /* Parse the answer header. */ - qdcount = DNS_HEADER_QDCOUNT(abuf); - ancount = DNS_HEADER_ANCOUNT(abuf); - nscount = DNS_HEADER_NSCOUNT(abuf); - arcount = DNS_HEADER_ARCOUNT(abuf); - - aptr = abuf + HFIXEDSZ; - - /* skip the questions */ - for (i = 0; i < qdcount; i++) - { - char* name; - long len; - status = ares_expand_name(aptr, abuf, alen, &name, &len); - if (status != ARES_SUCCESS) - return -1; - ares_free_string(name); - if (aptr + len + QFIXEDSZ > abuf + alen) - return -1; - aptr += len + QFIXEDSZ; - } - - /* skip the ancount and nscount */ - for (i = 0; i < ancount + nscount; i++) - { - char* name; - long len; - int dlen; - status = ares_expand_name(aptr, abuf, alen, &name, &len); - if (status != ARES_SUCCESS) - return -1; - ares_free_string(name); - if (aptr + len + RRFIXEDSZ > abuf + alen) - return -1; - aptr += len; - dlen = DNS_RR_LEN(aptr); - aptr += RRFIXEDSZ; - if (aptr + dlen > abuf + alen) - return -1; - aptr += dlen; - } - - /* search for rr type (41) - opt */ - for (i = 0; i < arcount; i++) - { - char* name; - long len; - int dlen; - status = ares_expand_name(aptr, abuf, alen, &name, &len); - if (status != ARES_SUCCESS) - return -1; - ares_free_string(name); - if (aptr + len + RRFIXEDSZ > abuf + alen) - return -1; - aptr += len; - - if (DNS_RR_TYPE(aptr) == T_OPT) - return 1; + size_t i; + for (i = 0; i < ares_dns_record_rr_cnt(arec, ARES_SECTION_ADDITIONAL); i++) { + ares_dns_rr_t *rr = + ares_dns_record_rr_get(arec, ARES_SECTION_ADDITIONAL, i); - dlen = DNS_RR_LEN(aptr); - aptr += RRFIXEDSZ; - if (aptr + dlen > abuf + alen) - return -1; - aptr += dlen; + if (ares_dns_rr_get_type(rr) == ARES_REC_TYPE_OPT) { + return ARES_TRUE; } - - return 0; + } + return ARES_FALSE; } static void ares_detach_query(struct query *query) @@ -1406,19 +1306,19 @@ static void ares_detach_query(struct query *query) query->node_all_queries = NULL; } -static void end_query(ares_channel channel, struct query *query, int status, - const unsigned char *abuf, int alen) +static void end_query(ares_channel channel, struct query *query, + ares_status_t status, const unsigned char *abuf, + size_t alen) { (void)channel; ares_detach_query(query); /* Invoke the callback. */ - query->callback(query->arg, status, query->timeouts, + query->callback(query->arg, (int)status, (int)query->timeouts, /* due to prior design flaws, abuf isn't meant to be modified, * but bad prototypes, ugh. Lets cast off constfor compat. */ - (unsigned char *)((void *)((size_t)abuf)), - alen); + (unsigned char *)((void *)((size_t)abuf)), (int)alen); ares__free_query(query); } @@ -1427,35 +1327,29 @@ void ares__free_query(struct query *query) ares_detach_query(query); /* Zero out some important stuff, to help catch bugs */ query->callback = NULL; - query->arg = NULL; + query->arg = NULL; /* Deallocate the memory associated with the query */ ares_free(query->tcpbuf); ares_free(query->server_info); ares_free(query); } -ares_socket_t ares__open_socket(ares_channel channel, - int af, int type, int protocol) +ares_socket_t ares__open_socket(ares_channel channel, int af, int type, + int protocol) { if (channel->sock_funcs && channel->sock_funcs->asocket) { - return channel->sock_funcs->asocket(af, - type, - protocol, + return channel->sock_funcs->asocket(af, type, protocol, channel->sock_func_cb_data); } return socket(af, type, protocol); } -int ares__connect_socket(ares_channel channel, - ares_socket_t sockfd, - const struct sockaddr *addr, - ares_socklen_t addrlen) +int ares__connect_socket(ares_channel channel, ares_socket_t sockfd, + const struct sockaddr *addr, ares_socklen_t addrlen) { if (channel->sock_funcs && channel->sock_funcs->aconnect) { - return channel->sock_funcs->aconnect(sockfd, - addr, - addrlen, + return channel->sock_funcs->aconnect(sockfd, addr, addrlen, channel->sock_func_cb_data); } @@ -1473,19 +1367,19 @@ void ares__close_socket(ares_channel channel, ares_socket_t s) #ifndef HAVE_WRITEV /* Structure for scatter/gather I/O. */ -struct iovec -{ - void *iov_base; /* Pointer to data. */ +struct iovec { + void *iov_base; /* Pointer to data. */ size_t iov_len; /* Length of data. */ }; #endif -static ares_ssize_t ares__socket_write(ares_channel channel, ares_socket_t s, const void * data, size_t len) +static ares_ssize_t ares__socket_write(ares_channel channel, ares_socket_t s, + const void *data, size_t len) { if (channel->sock_funcs && channel->sock_funcs->asendv) { struct iovec vec; - vec.iov_base = (void*)data; - vec.iov_len = len; + vec.iov_base = (void *)data; + vec.iov_len = len; return channel->sock_funcs->asendv(s, &vec, 1, channel->sock_func_cb_data); } return swrite(s, data, len); diff --git a/deps/cares/src/lib/ares_query.c b/deps/cares/src/lib/ares_query.c index 04521d1c850f0c..4996732dc97914 100644 --- a/deps/cares/src/lib/ares_query.c +++ b/deps/cares/src/lib/ares_query.c @@ -39,11 +39,11 @@ struct qquery { ares_callback callback; - void *arg; + void *arg; }; -static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, int alen); - +static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, + int alen); /* 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 @@ -61,91 +61,93 @@ static unsigned short generate_unique_id(ares_channel channel) return (unsigned short)id; } -int ares_query_qid(ares_channel channel, const char *name, - int dnsclass, int type, ares_callback callback, - void *arg, unsigned short *qid) +ares_status_t ares_query_qid(ares_channel channel, const char *name, + int dnsclass, int type, ares_callback callback, + void *arg, unsigned short *qid) { struct qquery *qquery; unsigned char *qbuf; - int qlen, rd, status; + int qlen; + int rd; + ares_status_t status; unsigned short id = generate_unique_id(channel); /* Compose the query. */ - rd = !(channel->flags & ARES_FLAG_NORECURSE); - status = ares_create_query(name, dnsclass, type, id, rd, &qbuf, - &qlen, (channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : 0); - if (status != ARES_SUCCESS) - { - if (qbuf != NULL) ares_free(qbuf); - callback(arg, status, 0, NULL, 0); - return status; + rd = !(channel->flags & ARES_FLAG_NORECURSE); + status = (ares_status_t)ares_create_query( + name, dnsclass, type, id, rd, &qbuf, &qlen, + (channel->flags & ARES_FLAG_EDNS) ? (int)channel->ednspsz : 0); + if (status != ARES_SUCCESS) { + if (qbuf != NULL) { + ares_free(qbuf); } + callback(arg, (int)status, 0, NULL, 0); + return status; + } /* Allocate and fill in the query structure. */ qquery = ares_malloc(sizeof(struct qquery)); - if (!qquery) - { - ares_free_string(qbuf); - callback(arg, ARES_ENOMEM, 0, NULL, 0); - return ARES_ENOMEM; - } + if (!qquery) { + ares_free_string(qbuf); + callback(arg, ARES_ENOMEM, 0, NULL, 0); + return ARES_ENOMEM; + } qquery->callback = callback; - qquery->arg = arg; + qquery->arg = arg; /* Send it off. qcallback will be called when we get an answer. */ - status = ares_send_ex(channel, qbuf, qlen, qcallback, qquery); + status = ares_send_ex(channel, qbuf, (size_t)qlen, qcallback, qquery); ares_free_string(qbuf); - if (status == ARES_SUCCESS && qid) + if (status == ARES_SUCCESS && qid) { *qid = id; + } return status; } -void ares_query(ares_channel channel, const char *name, int dnsclass, - int type, ares_callback callback, void *arg) +void ares_query(ares_channel channel, const char *name, int dnsclass, int type, + ares_callback callback, void *arg) { ares_query_qid(channel, name, dnsclass, type, callback, arg, NULL); } - -static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, int alen) +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; + struct qquery *qquery = (struct qquery *)arg; + size_t ancount; + int rcode; - if (status != ARES_SUCCESS) + 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); + } else { + /* Pull the response code and answer count from the packet. */ + rcode = DNS_HEADER_RCODE(abuf); + ancount = DNS_HEADER_ANCOUNT(abuf); + + /* Convert errors. */ + switch (rcode) { + case NOERROR: + status = (ancount > 0) ? ARES_SUCCESS : ARES_ENODATA; + break; + case FORMERR: + status = ARES_EFORMERR; + break; + case SERVFAIL: + status = ARES_ESERVFAIL; + break; + case NXDOMAIN: + status = ARES_ENOTFOUND; + break; + case NOTIMP: + status = ARES_ENOTIMP; + break; + case REFUSED: + status = ARES_EREFUSED; + break; } + qquery->callback(qquery->arg, status, timeouts, abuf, alen); + } ares_free(qquery); } diff --git a/deps/cares/src/lib/ares_rand.c b/deps/cares/src/lib/ares_rand.c index 99a5a04cff4ba2..a02658ebf47819 100644 --- a/deps/cares/src/lib/ares_rand.c +++ b/deps/cares/src/lib/ares_rand.c @@ -27,65 +27,65 @@ #include "ares_setup.h" #include "ares.h" #include "ares_private.h" -#include "ares_nowarn.h" #include -#if !defined(HAVE_ARC4RANDOM_BUF) && !defined(HAVE_GETRANDOM) && !defined(_WIN32) +#if !defined(HAVE_ARC4RANDOM_BUF) && !defined(HAVE_GETRANDOM) && \ + !defined(_WIN32) # define ARES_NEEDS_RC4 1 #endif -typedef enum { - ARES_RAND_OS = 1, /* OS-provided such as RtlGenRandom or arc4random */ - ARES_RAND_FILE = 2, /* OS file-backed random number generator */ +typedef enum { + ARES_RAND_OS = 1, /* OS-provided such as RtlGenRandom or arc4random */ + ARES_RAND_FILE = 2, /* OS file-backed random number generator */ #ifdef ARES_NEEDS_RC4 - ARES_RAND_RC4 = 3 /* Internal RC4 based PRNG */ + ARES_RAND_RC4 = 3 /* Internal RC4 based PRNG */ #endif } ares_rand_backend; - /* Don't build RC4 code if it goes unused as it will generate dead code * warnings */ #ifdef ARES_NEEDS_RC4 # define ARES_RC4_KEY_LEN 32 /* 256 bits */ -typedef struct ares_rand_rc4 -{ +typedef struct ares_rand_rc4 { unsigned char S[256]; size_t i; size_t j; } ares_rand_rc4; -#ifdef _MSC_VER +# ifdef _MSC_VER typedef unsigned __int64 cares_u64; -#else +# else typedef unsigned long long cares_u64; -#endif +# endif static unsigned int ares_u32_from_ptr(void *addr) { - if (sizeof(void *) == 8) { - return (unsigned int)((((cares_u64)addr >> 32) & 0xFFFFFFFF) | ((cares_u64)addr & 0xFFFFFFFF)); - } - return (unsigned int)((size_t)addr & 0xFFFFFFFF); + if (sizeof(void *) == 8) { + return (unsigned int)((((cares_u64)addr >> 32) & 0xFFFFFFFF) | + ((cares_u64)addr & 0xFFFFFFFF)); + } + return (unsigned int)((size_t)addr & 0xFFFFFFFF); } - /* initialize an rc4 key as the last possible fallback. */ -static void ares_rc4_generate_key(ares_rand_rc4 *rc4_state, unsigned char *key, size_t key_len) +static void ares_rc4_generate_key(ares_rand_rc4 *rc4_state, unsigned char *key, + size_t key_len) { size_t i; size_t len = 0; unsigned int data; struct timeval tv; - if (key_len != ARES_RC4_KEY_LEN) + if (key_len != ARES_RC4_KEY_LEN) { return; + } - /* Randomness is hard to come by. Maybe the system randomizes heap and stack addresses. - * Maybe the current timestamp give us some randomness. - * Use rc4_state (heap), &i (stack), and ares__tvnow() + /* Randomness is hard to come by. Maybe the system randomizes heap and stack + * addresses. Maybe the current timestamp give us some randomness. Use + * rc4_state (heap), &i (stack), and ares__tvnow() */ data = ares_u32_from_ptr(rc4_state); memcpy(key + len, &data, sizeof(data)); @@ -95,19 +95,19 @@ static void ares_rc4_generate_key(ares_rand_rc4 *rc4_state, unsigned char *key, memcpy(key + len, &data, sizeof(data)); len += sizeof(data); - tv = ares__tvnow(); + tv = ares__tvnow(); data = (unsigned int)((tv.tv_sec | tv.tv_usec) & 0xFFFFFFFF); memcpy(key + len, &data, sizeof(data)); len += sizeof(data); - srand(ares_u32_from_ptr(rc4_state) | ares_u32_from_ptr(&i) | (unsigned int)((tv.tv_sec | tv.tv_usec) & 0xFFFFFFFF)); + srand(ares_u32_from_ptr(rc4_state) | ares_u32_from_ptr(&i) | + (unsigned int)((tv.tv_sec | tv.tv_usec) & 0xFFFFFFFF)); - for (i=len; iS[i] = i & 0xFF; } - for(i = 0, j = 0; i < 256; i++) { + for (i = 0, j = 0; i < 256; i++) { j = (j + rc4_state->S[i] + key[i % sizeof(key)]) % 256; ARES_SWAP_BYTE(&rc4_state->S[i], &rc4_state->S[j]); } @@ -129,16 +129,17 @@ static void ares_rc4_init(ares_rand_rc4 *rc4_state) rc4_state->j = 0; } - -/* Just outputs the key schedule, no need to XOR with any data since we have none */ -static void ares_rc4_prng(ares_rand_rc4 *rc4_state, unsigned char *buf, size_t len) +/* Just outputs the key schedule, no need to XOR with any data since we have + * none */ +static void ares_rc4_prng(ares_rand_rc4 *rc4_state, unsigned char *buf, + size_t len) { unsigned char *S = rc4_state->S; size_t i = rc4_state->i; size_t j = rc4_state->j; size_t cnt; - for (cnt=0; cnttype = ARES_RAND_OS; - return 1; + return ARES_TRUE; #elif defined(CARES_RANDOM_FILE) state->type = ARES_RAND_FILE; state->state.rand_file = fopen(CARES_RANDOM_FILE, "rb"); if (state->state.rand_file) { setvbuf(state->state.rand_file, NULL, _IONBF, 0); - return 1; + return ARES_TRUE; } /* Fall-Thru on failure to RC4 */ #endif @@ -208,18 +208,18 @@ static int ares__init_rand_engine(ares_rand_state *state) ares_rc4_init(&state->state.rc4); /* Currently cannot fail */ - return 1; + return ARES_TRUE; #endif } - ares_rand_state *ares__init_rand_state(void) { ares_rand_state *state = NULL; state = ares_malloc(sizeof(*state)); - if (!state) + if (!state) { return NULL; + } if (!ares__init_rand_engine(state)) { ares_free(state); @@ -229,11 +229,11 @@ ares_rand_state *ares__init_rand_state(void) return state; } - static void ares__clear_rand_state(ares_rand_state *state) { - if (!state) + if (!state) { return; + } switch (state->type) { case ARES_RAND_OS: @@ -248,28 +248,25 @@ static void ares__clear_rand_state(ares_rand_state *state) } } - static void ares__reinit_rand(ares_rand_state *state) { ares__clear_rand_state(state); ares__init_rand_engine(state); } - void ares__destroy_rand_state(ares_rand_state *state) { - if (!state) + if (!state) { return; + } ares__clear_rand_state(state); ares_free(state); } - static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf, size_t len) { - while (1) { size_t bytes_read = 0; @@ -283,17 +280,19 @@ static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf, return; #elif defined(HAVE_GETRANDOM) while (1) { - size_t n = len - bytes_read; + size_t n = len - bytes_read; /* getrandom() on Linux always succeeds and is never * interrupted by a signal when requesting <= 256 bytes. */ ssize_t rv = getrandom(buf + bytes_read, n > 256 ? 256 : n, 0); - if (rv <= 0) + if (rv <= 0) { continue; /* Just retry. */ + } - bytes_read += rv; - if (bytes_read == len) + bytes_read += (size_t)rv; + if (bytes_read == len) { return; + } } break; #else @@ -303,13 +302,16 @@ static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf, case ARES_RAND_FILE: while (1) { - size_t rv = fread(buf + bytes_read, 1, len - bytes_read, state->state.rand_file); - if (rv == 0) + size_t rv = fread(buf + bytes_read, 1, len - bytes_read, + state->state.rand_file); + if (rv == 0) { break; /* critical error, will reinit rand state */ + } bytes_read += rv; - if (bytes_read == len) + if (bytes_read == len) { return; + } } break; @@ -326,7 +328,6 @@ static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf, } } - void ares__rand_bytes(ares_rand_state *state, unsigned char *buf, size_t len) { /* See if we need to refill the cache to serve the request, but if len is @@ -349,12 +350,10 @@ void ares__rand_bytes(ares_rand_state *state, unsigned char *buf, size_t len) ares__rand_bytes_fetch(state, buf, len); } - unsigned short ares__generate_new_id(ares_rand_state *state) { - unsigned short r=0; + unsigned short r = 0; ares__rand_bytes(state, (unsigned char *)&r, sizeof(r)); return r; } - diff --git a/deps/cares/src/lib/ares_search.c b/deps/cares/src/lib/ares_search.c index d72b4c444e3a2b..23f966f8cbe7a5 100644 --- a/deps/cares/src/lib/ares_search.c +++ b/deps/cares/src/lib/ares_search.c @@ -36,200 +36,189 @@ struct search_query { /* Arguments passed to ares_search */ - ares_channel channel; - char *name; /* copied into an allocated buffer */ - int dnsclass; - int type; + ares_channel channel; + char *name; /* copied into an allocated buffer */ + int dnsclass; + int type; ares_callback callback; - void *arg; + 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? */ + int status_as_is; /* error status from trying as-is */ + size_t next_domain; /* next search domain to try */ + ares_bool_t trying_as_is; /* current query is for name as-is */ + size_t timeouts; /* number of timeouts we saw for this request */ + ares_bool_t 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 void end_squery(struct search_query *squery, ares_status_t status, + unsigned char *abuf, size_t alen); -void ares_search(ares_channel channel, const char *name, int dnsclass, - int type, ares_callback callback, void *arg) +void ares_search(ares_channel channel, const char *name, int dnsclass, int type, + ares_callback callback, void *arg) { struct search_query *squery; - char *s; - const char *p; - int status, ndots; + char *s; + const char *p; + ares_status_t status; + size_t ndots; /* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */ - if (ares__is_onion_domain(name)) - { - callback(arg, ARES_ENOTFOUND, 0, NULL, 0); - return; - } + if (ares__is_onion_domain(name)) { + callback(arg, ARES_ENOTFOUND, 0, NULL, 0); + return; + } /* If name only yields one domain to search, then we don't have * to keep extra state, so just do an ares_query(). */ status = ares__single_domain(channel, name, &s); - if (status != ARES_SUCCESS) - { - callback(arg, status, 0, NULL, 0); - return; - } - if (s) - { - ares_query(channel, s, dnsclass, type, callback, arg); - ares_free(s); - return; - } + if (status != ARES_SUCCESS) { + callback(arg, (int)status, 0, NULL, 0); + return; + } + if (s) { + ares_query(channel, s, dnsclass, type, callback, arg); + ares_free(s); + return; + } /* Allocate a search_query structure to hold the state necessary for * doing multiple lookups. */ squery = ares_malloc(sizeof(struct search_query)); - if (!squery) - { - callback(arg, ARES_ENOMEM, 0, NULL, 0); - return; - } + if (!squery) { + callback(arg, ARES_ENOMEM, 0, NULL, 0); + return; + } squery->channel = channel; - squery->name = ares_strdup(name); - if (!squery->name) - { - ares_free(squery); - callback(arg, ARES_ENOMEM, 0, NULL, 0); - return; - } - squery->dnsclass = dnsclass; - squery->type = type; - squery->status_as_is = -1; - squery->callback = callback; - squery->arg = arg; - squery->timeouts = 0; - squery->ever_got_nodata = 0; + squery->name = ares_strdup(name); + if (!squery->name) { + ares_free(squery); + callback(arg, ARES_ENOMEM, 0, NULL, 0); + return; + } + squery->dnsclass = dnsclass; + squery->type = type; + squery->status_as_is = -1; + squery->callback = callback; + squery->arg = arg; + squery->timeouts = 0; + squery->ever_got_nodata = ARES_FALSE; /* Count the number of dots in name. */ ndots = 0; - for (p = name; *p; p++) - { - if (*p == '.') - ndots++; + 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 = ares__cat_domain(name, channel->domains[0], &s); - if (status == ARES_SUCCESS) - { - ares_query(channel, s, dnsclass, type, search_callback, squery); - ares_free(s); - } - else - { - /* failed, free the malloc()ed memory */ - ares_free(squery->name); - ares_free(squery); - callback(arg, status, 0, NULL, 0); - } + if (ndots >= (size_t)channel->ndots) { + /* Try the name as-is first. */ + squery->next_domain = 0; + squery->trying_as_is = ARES_TRUE; + 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 = ARES_FALSE; + status = ares__cat_domain(name, channel->domains[0], &s); + if (status == ARES_SUCCESS) { + ares_query(channel, s, dnsclass, type, search_callback, squery); + ares_free(s); + } else { + /* failed, free the malloc()ed memory */ + ares_free(squery->name); + ares_free(squery); + callback(arg, (int)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; + struct search_query *squery = (struct search_query *)arg; + ares_channel channel = squery->channel; + char *s; - squery->timeouts += timeouts; + squery->timeouts += (size_t)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 (status != ARES_ENODATA && status != ARES_ESERVFAIL && + status != ARES_ENOTFOUND) { + end_squery(squery, (ares_status_t)status, abuf, (size_t)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 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 = ARES_TRUE; + } - if (squery->next_domain < channel->ndomains) - { - /* Try the next domain. */ - status = ares__cat_domain(squery->name, - channel->domains[squery->next_domain], &s); - if (status != ARES_SUCCESS) - end_squery(squery, status, NULL, 0); - else - { - squery->trying_as_is = 0; - squery->next_domain++; - ares_query(channel, s, squery->dnsclass, squery->type, - search_callback, squery); - ares_free(s); - } - } - else if (squery->status_as_is == -1) - { - /* Try the name as-is at the end. */ - squery->trying_as_is = 1; - ares_query(channel, squery->name, squery->dnsclass, squery->type, - search_callback, squery); - } - else { - if (squery->status_as_is == ARES_ENOTFOUND && squery->ever_got_nodata) { - end_squery(squery, ARES_ENODATA, NULL, 0); - } - else - end_squery(squery, squery->status_as_is, NULL, 0); + if (squery->next_domain < (size_t)channel->ndomains) { + ares_status_t mystatus; + /* Try the next domain. */ + mystatus = ares__cat_domain(squery->name, + channel->domains[squery->next_domain], &s); + if (mystatus != ARES_SUCCESS) { + end_squery(squery, mystatus, NULL, 0); + } else { + squery->trying_as_is = ARES_FALSE; + squery->next_domain++; + ares_query(channel, s, squery->dnsclass, squery->type, search_callback, + squery); + ares_free(s); + } + } else if (squery->status_as_is == -1) { + /* Try the name as-is at the end. */ + squery->trying_as_is = ARES_TRUE; + 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, (ares_status_t)squery->status_as_is, NULL, 0); } } + } } -static void end_squery(struct search_query *squery, int status, - unsigned char *abuf, int alen) +static void end_squery(struct search_query *squery, ares_status_t status, + unsigned char *abuf, size_t alen) { - squery->callback(squery->arg, status, squery->timeouts, abuf, alen); + squery->callback(squery->arg, (int)status, (int)squery->timeouts, abuf, + (int)alen); ares_free(squery->name); ares_free(squery); } /* Concatenate two domains. */ -int ares__cat_domain(const char *name, const char *domain, char **s) +ares_status_t ares__cat_domain(const char *name, const char *domain, char **s) { - size_t nlen = strlen(name); - size_t dlen = strlen(domain); + size_t nlen = ares_strlen(name); + size_t dlen = ares_strlen(domain); *s = ares_malloc(nlen + 1 + dlen + 1); - if (!*s) + if (!*s) { return ARES_ENOMEM; + } memcpy(*s, name, nlen); (*s)[nlen] = '.'; if (strcmp(domain, ".") == 0) { @@ -246,91 +235,84 @@ int ares__cat_domain(const char *name, const char *domain, char **s) * the string we should query, in an allocated buffer. If not, set *s * to NULL. */ -int ares__single_domain(ares_channel channel, const char *name, char **s) +ares_status_t ares__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; + size_t len = ares_strlen(name); + const char *hostaliases; + FILE *fp; + char *line = NULL; + ares_status_t status; + size_t linesize; + const char *p; + const char *q; + int error; /* If the name contains a trailing dot, then the single query is the name * sans the trailing dot. */ - if ((len > 0) && (name[len - 1] == '.')) - { - *s = ares_strdup(name); - return (*s) ? ARES_SUCCESS : ARES_ENOMEM; - } + if ((len > 0) && (name[len - 1] == '.')) { + *s = ares_strdup(name); + return (*s) ? ARES_SUCCESS : ARES_ENOMEM; + } - if (!(channel->flags & ARES_FLAG_NOALIASES) && !strchr(name, '.')) - { - /* The name might be a host alias. */ - hostaliases = getenv("HOSTALIASES"); - if (hostaliases) - { - fp = fopen(hostaliases, "r"); - if (fp) - { - while ((status = ares__read_line(fp, &line, &linesize)) - == ARES_SUCCESS) - { - if (strncasecmp(line, name, len) != 0 || - !ISSPACE(line[len])) - continue; - p = line + len; - while (ISSPACE(*p)) - p++; - if (*p) - { - q = p + 1; - while (*q && !ISSPACE(*q)) - q++; - *s = ares_malloc(q - p + 1); - if (*s) - { - memcpy(*s, p, q - p); - (*s)[q - p] = 0; - } - ares_free(line); - fclose(fp); - return (*s) ? ARES_SUCCESS : ARES_ENOMEM; - } - } - ares_free(line); - fclose(fp); - if (status != ARES_SUCCESS && status != ARES_EOF) - return status; + 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++; } - 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; - } + *s = ares_malloc((size_t)(q - p + 1)); + if (*s) { + memcpy(*s, p, (size_t)(q - p)); + (*s)[q - p] = 0; } + ares_free(line); + fclose(fp); + return (*s) ? ARES_SUCCESS : ARES_ENOMEM; + } + } + ares_free(line); + fclose(fp); + if (status != ARES_SUCCESS && status != ARES_EOF) { + return status; + } + } else { + error = ERRNO; + switch (error) { + case ENOENT: + case ESRCH: + break; + default: + DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n", error, + strerror(error))); + DEBUGF(fprintf(stderr, "Error opening file: %s\n", hostaliases)); + *s = NULL; + return ARES_EFILE; } + } } + } - if (channel->flags & ARES_FLAG_NOSEARCH || channel->ndomains == 0) - { - /* No domain search to do; just try the name as-is. */ - *s = ares_strdup(name); - return (*s) ? ARES_SUCCESS : ARES_ENOMEM; - } + if (channel->flags & ARES_FLAG_NOSEARCH || channel->ndomains == 0) { + /* No domain search to do; just try the name as-is. */ + *s = ares_strdup(name); + return (*s) ? ARES_SUCCESS : ARES_ENOMEM; + } *s = NULL; return ARES_SUCCESS; diff --git a/deps/cares/src/lib/ares_send.c b/deps/cares/src/lib/ares_send.c index 95077967205fbd..bc3aeed0ecc07c 100644 --- a/deps/cares/src/lib/ares_send.c +++ b/deps/cares/src/lib/ares_send.c @@ -37,53 +37,49 @@ #include "ares_dns.h" #include "ares_private.h" -int ares_send_ex(ares_channel channel, const unsigned char *qbuf, int qlen, - ares_callback callback, void *arg) +ares_status_t ares_send_ex(ares_channel channel, const unsigned char *qbuf, + size_t qlen, ares_callback callback, void *arg) { - struct query *query; - int i, packetsz; + struct query *query; + size_t i; + size_t packetsz; struct timeval now; /* Verify that the query is at least long enough to hold the header. */ - if (qlen < HFIXEDSZ || qlen >= (1 << 16)) - { - callback(arg, ARES_EBADQUERY, 0, NULL, 0); - return ARES_EBADQUERY; - } - if (channel->nservers < 1) - { - callback(arg, ARES_ESERVFAIL, 0, NULL, 0); - return ARES_ESERVFAIL; - } + if (qlen < HFIXEDSZ || qlen >= (1 << 16)) { + callback(arg, ARES_EBADQUERY, 0, NULL, 0); + return ARES_EBADQUERY; + } + if (channel->nservers < 1) { + callback(arg, ARES_ESERVFAIL, 0, NULL, 0); + return ARES_ESERVFAIL; + } /* Allocate space for query and allocated fields. */ query = ares_malloc(sizeof(struct query)); - if (!query) - { - callback(arg, ARES_ENOMEM, 0, NULL, 0); - return ARES_ENOMEM; - } + if (!query) { + callback(arg, ARES_ENOMEM, 0, NULL, 0); + return ARES_ENOMEM; + } memset(query, 0, sizeof(*query)); query->channel = channel; - query->tcpbuf = ares_malloc(qlen + 2); - if (!query->tcpbuf) - { - ares_free(query); - callback(arg, ARES_ENOMEM, 0, NULL, 0); - return ARES_ENOMEM; - } - query->server_info = ares_malloc(channel->nservers * - sizeof(query->server_info[0])); - if (!query->server_info) - { - ares_free(query->tcpbuf); - ares_free(query); - callback(arg, ARES_ENOMEM, 0, NULL, 0); - return ARES_ENOMEM; - } + query->tcpbuf = ares_malloc(qlen + 2); + if (!query->tcpbuf) { + ares_free(query); + callback(arg, ARES_ENOMEM, 0, NULL, 0); + return ARES_ENOMEM; + } + query->server_info = + ares_malloc((size_t)channel->nservers * sizeof(query->server_info[0])); + if (!query->server_info) { + ares_free(query->tcpbuf); + ares_free(query); + callback(arg, ARES_ENOMEM, 0, NULL, 0); + return ARES_ENOMEM; + } /* Compute the query ID. Start with no timeout. */ - query->qid = DNS_HEADER_QID(qbuf); - query->timeout.tv_sec = 0; + 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 @@ -95,10 +91,10 @@ int ares_send_ex(ares_channel channel, const unsigned char *qbuf, int qlen, query->tcplen = qlen + 2; /* Fill in query arguments. */ - query->qbuf = query->tcpbuf + 2; - query->qlen = qlen; + query->qbuf = query->tcpbuf + 2; + query->qlen = qlen; query->callback = callback; - query->arg = arg; + query->arg = arg; /* Initialize query status. */ query->try_count = 0; @@ -106,27 +102,29 @@ int ares_send_ex(ares_channel channel, const unsigned char *qbuf, int qlen, /* 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; + if (channel->rotate == 1) { + channel->last_server = + (channel->last_server + 1) % (size_t)channel->nservers; + } - for (i = 0; i < channel->nservers; i++) - { - query->server_info[i].skip_server = 0; - query->server_info[i].tcp_connection_generation = 0; - } + for (i = 0; i < (size_t)channel->nservers; i++) { + query->server_info[i].skip_server = ARES_FALSE; + query->server_info[i].tcp_connection_generation = 0; + } packetsz = (channel->flags & ARES_FLAG_EDNS) ? channel->ednspsz : PACKETSZ; query->using_tcp = (channel->flags & ARES_FLAG_USEVC) || qlen > packetsz; query->error_status = ARES_ECONNREFUSED; - query->timeouts = 0; + query->timeouts = 0; /* Initialize our list nodes. */ query->node_queries_by_timeout = NULL; query->node_queries_to_conn = NULL; /* Chain the query into the list of all queries. */ - query->node_all_queries = ares__llist_insert_last(channel->all_queries, query); + query->node_all_queries = + ares__llist_insert_last(channel->all_queries, query); if (query->node_all_queries == NULL) { callback(arg, ARES_ENOMEM, 0, NULL, 0); ares__free_query(query); @@ -150,5 +148,5 @@ int ares_send_ex(ares_channel channel, const unsigned char *qbuf, int qlen, void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen, ares_callback callback, void *arg) { - ares_send_ex(channel, qbuf, qlen, callback, arg); + ares_send_ex(channel, qbuf, (size_t)qlen, callback, arg); } diff --git a/deps/cares/src/lib/ares_setup.h b/deps/cares/src/lib/ares_setup.h index b3cf80885078c0..0387f3e35f7577 100644 --- a/deps/cares/src/lib/ares_setup.h +++ b/deps/cares/src/lib/ares_setup.h @@ -31,7 +31,7 @@ */ #if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) -#define WIN32 +# define WIN32 #endif /* @@ -40,12 +40,12 @@ */ #ifdef HAVE_CONFIG_H -#include "ares_config.h" +# include "ares_config.h" #else -#ifdef WIN32 -#include "config-win32.h" -#endif +# ifdef WIN32 +# include "config-win32.h" +# endif #endif /* HAVE_CONFIG_H */ @@ -123,7 +123,7 @@ # ifdef HAVE_WINSOCK2_H # include # ifdef HAVE_WS2TCPIP_H -# include +# include # endif # else # ifdef HAVE_WINSOCK_H @@ -138,8 +138,9 @@ * undefine USE_WINSOCK. */ -#undef USE_WINSOCK - +#ifdef USE_WINSOCK +# undef USE_WINSOCK +#endif #ifdef HAVE_WINSOCK2_H # define USE_WINSOCK 2 #else @@ -154,17 +155,17 @@ #ifndef HAVE_CONFIG_H -#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__) -#define HAVE_SYS_TIME_H -#endif +# 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_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 +# if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS) +# define HAVE_SYS_UIO_H +# endif #endif /* HAVE_CONFIG_H */ @@ -193,7 +194,7 @@ * but it is not fully implemented and missing identifiers, so udefine here. */ #if (defined(ANDROID) || defined(__ANDROID__) || defined(__MVS__)) && \ - defined(HAVE_ARPA_NAMESER_H) + defined(HAVE_ARPA_NAMESER_H) # undef HAVE_ARPA_NAMESER_H #endif @@ -203,21 +204,35 @@ * --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 +#ifdef PACKAGE_STRING +# undef PACKAGE_STRING +#endif +#ifdef PACKAGE_TARNAME +# undef PACKAGE_TARNAME +#endif +#ifdef PACKAGE_VERSION +# undef PACKAGE_VERSION +#endif +#ifdef PACKAGE_BUGREPORT +# undef PACKAGE_BUGREPORT +#endif +#ifdef PACKAGE_NAME +# undef PACKAGE_NAME +#endif +#ifdef VERSION +# undef VERSION +#endif +#ifdef PACKAGE +# undef PACKAGE +#endif /* 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 +# if defined(HAVE_PF_INET6) +# define AF_INET6 PF_INET6 +# else +# define AF_INET6 AF_MAX + 1 +# endif #endif /* @@ -225,7 +240,7 @@ */ #ifndef __SETUP_ONCE_H -#include "setup_once.h" +# include "setup_once.h" #endif #endif /* HEADER_CARES_SETUP_H */ diff --git a/deps/cares/src/lib/ares_strdup.c b/deps/cares/src/lib/ares_str.c similarity index 63% rename from deps/cares/src/lib/ares_strdup.c rename to deps/cares/src/lib/ares_str.c index db5dd1d84b7212..11794774e56c8d 100644 --- a/deps/cares/src/lib/ares_strdup.c +++ b/deps/cares/src/lib/ares_str.c @@ -26,27 +26,70 @@ */ #include "ares_setup.h" -#include "ares_strdup.h" +#include "ares_str.h" #include "ares.h" #include "ares_private.h" +#ifdef HAVE_STDINT_H +# include +#endif + +size_t ares_strlen(const char *str) +{ + if (str == NULL) { + return 0; + } + + return strlen(str); +} + 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)) { - s2 = ares_malloc(sz); - if(s2) { - memcpy(s2, s1, sz); - return s2; - } - } - } - } - return (char *)NULL; + size_t len; + char *out; + + if (s1 == NULL) { + return NULL; + } + + len = ares_strlen(s1); + + /* Don't see how this is possible */ + if (len == SIZE_MAX) { + return NULL; + } + + out = ares_malloc(len + 1); + if (out == NULL) { + return NULL; + } + + if (len) { + memcpy(out, s1, len); + } + + out[len] = 0; + return out; +} + +size_t ares_strcpy(char *dest, const char *src, size_t dest_size) +{ + size_t len = 0; + + if (dest == NULL || dest_size == 0) { + return 0; + } + + len = ares_strlen(src); + + if (len >= dest_size) { + len = dest_size - 1; + } + + if (len) { + memcpy(dest, src, len); + } + + dest[len] = 0; + return len; } diff --git a/deps/cares/src/lib/ares_strdup.h b/deps/cares/src/lib/ares_str.h similarity index 70% rename from deps/cares/src/lib/ares_strdup.h rename to deps/cares/src/lib/ares_str.h index 06e8cdccb5f5a4..fa5d5509bc0b15 100644 --- a/deps/cares/src/lib/ares_strdup.h +++ b/deps/cares/src/lib/ares_str.h @@ -29,6 +29,21 @@ #include "ares_setup.h" -extern char *ares_strdup(const char *s1); +char *ares_strdup(const char *s1); + +size_t ares_strlen(const char *str); + +/*! Copy string from source to destination with destination buffer size + * provided. The destination is guaranteed to be null terminated, if the + * provided buffer isn't large enough, only those bytes from the source that + * will fit will be copied. + * + * \param[out] dest Destination buffer + * \param[in] src Source to copy + * \param[in] dest_size Size of destination buffer + * \return String length. Will be at most dest_size-1 + */ +size_t ares_strcpy(char *dest, const char *src, size_t dest_size); + #endif /* HEADER_CARES_STRDUP_H */ diff --git a/deps/cares/src/lib/ares_strcasecmp.c b/deps/cares/src/lib/ares_strcasecmp.c index e7fd52740458ef..b91cbbe1544a84 100644 --- a/deps/cares/src/lib/ares_strcasecmp.c +++ b/deps/cares/src/lib/ares_strcasecmp.c @@ -31,46 +31,49 @@ #ifndef HAVE_STRCASECMP int ares_strcasecmp(const char *a, const char *b) { -#if defined(HAVE_STRCMPI) +# if defined(HAVE_STRCMPI) return strcmpi(a, b); -#elif defined(HAVE_STRICMP) +# elif defined(HAVE_STRICMP) return stricmp(a, b); -#else +# 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) + if (c1 != c2) { + return c1 - c2; + } + if (!c1) { break; + } } return 0; -#endif +# endif } #endif #ifndef HAVE_STRNCASECMP int ares_strncasecmp(const char *a, const char *b, size_t n) { -#if defined(HAVE_STRNCMPI) +# if defined(HAVE_STRNCMPI) return strncmpi(a, b, n); -#elif defined(HAVE_STRNICMP) +# elif defined(HAVE_STRNICMP) return strnicmp(a, b, n); -#else +# 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) + if (c1 != c2) { + return c1 - c2; + } + if (!c1) { break; + } } return 0; -#endif +# endif } #endif - diff --git a/deps/cares/src/lib/ares_strerror.c b/deps/cares/src/lib/ares_strerror.c index 7e301ff94f8620..fd583c5cfbb65d 100644 --- a/deps/cares/src/lib/ares_strerror.c +++ b/deps/cares/src/lib/ares_strerror.c @@ -31,37 +31,61 @@ 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" - }; + ares_status_t status = (ares_status_t)code; + switch (status) { + case ARES_SUCCESS: + return "Successful completion"; + case ARES_ENODATA: + return "DNS server returned answer with no data"; + case ARES_EFORMERR: + return "DNS server claims query was misformatted"; + case ARES_ESERVFAIL: + return "DNS server returned general failure"; + case ARES_ENOTFOUND: + return "Domain name not found"; + case ARES_ENOTIMP: + return "DNS server does not implement requested operation"; + case ARES_EREFUSED: + return "DNS server refused query"; + case ARES_EBADQUERY: + return "Misformatted DNS query"; + case ARES_EBADNAME: + return "Misformatted domain name"; + case ARES_EBADFAMILY: + return "Unsupported address family"; + case ARES_EBADRESP: + return "Misformatted DNS reply"; + case ARES_ECONNREFUSED: + return "Could not contact DNS servers"; + case ARES_ETIMEOUT: + return "Timeout while contacting DNS servers"; + case ARES_EOF: + return "End of file"; + case ARES_EFILE: + return "Error reading file"; + case ARES_ENOMEM: + return "Out of memory"; + case ARES_EDESTRUCTION: + return "Channel is being destroyed"; + case ARES_EBADSTR: + return "Misformatted string"; + case ARES_EBADFLAGS: + return "Illegal flags specified"; + case ARES_ENONAME: + return "Given hostname is not numeric"; + case ARES_EBADHINTS: + return "Illegal hints flags specified"; + case ARES_ENOTINITIALIZED: + return "c-ares library initialization not yet performed"; + case ARES_ELOADIPHLPAPI: + return "Error loading iphlpapi.dll"; + case ARES_EADDRGETNETWORKPARAMS: + return "Could not find GetNetworkParams function"; + case ARES_ECANCELLED: + return "DNS query cancelled"; + case ARES_ESERVICE: + return "Invalid service name or number"; + } - if(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext))) - return errtext[code]; - else - return "unknown"; + return "unknown"; } diff --git a/deps/cares/src/lib/ares_strsplit.c b/deps/cares/src/lib/ares_strsplit.c index 985a02dbbf9c7b..117fc621841af9 100644 --- a/deps/cares/src/lib/ares_strsplit.c +++ b/deps/cares/src/lib/ares_strsplit.c @@ -25,7 +25,7 @@ */ #if defined(__MVS__) -#include +# include #endif #include "ares_setup.h" @@ -36,28 +36,35 @@ void ares__strsplit_free(char **elms, size_t num_elm) { size_t i; - if (elms == NULL) + if (elms == NULL) { return; + } - for (i=0; i +# include #endif #include "ares.h" @@ -37,8 +37,8 @@ /* return time offset between now and (future) check, in milliseconds */ static long timeoffset(struct timeval *now, struct timeval *check) { - return (check->tv_sec - now->tv_sec)*1000 + - (check->tv_usec - now->tv_usec)/1000; + return (check->tv_sec - now->tv_sec) * 1000 + + (check->tv_usec - now->tv_usec) / 1000; } struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv, @@ -62,26 +62,32 @@ struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv, now = ares__tvnow(); offset = timeoffset(&now, &query->timeout); - if (offset < 0) + if (offset < 0) { offset = 0; - if (offset > (long)INT_MAX) + } + if (offset > (long)INT_MAX) { offset = INT_MAX; + } - tvbuf->tv_sec = offset / 1000; + tvbuf->tv_sec = offset / 1000; tvbuf->tv_usec = (offset % 1000) * 1000; - if (maxtv == NULL) + if (maxtv == NULL) { return tvbuf; + } /* Return the minimum time between maxtv and tvbuf */ - if (tvbuf->tv_sec > maxtv->tv_sec) + if (tvbuf->tv_sec > maxtv->tv_sec) { return maxtv; - if (tvbuf->tv_sec < maxtv->tv_sec) + } + if (tvbuf->tv_sec < maxtv->tv_sec) { return tvbuf; + } - if (tvbuf->tv_usec > maxtv->tv_usec) + if (tvbuf->tv_usec > maxtv->tv_usec) { return maxtv; + } return tvbuf; } diff --git a/deps/cares/src/lib/ares_version.c b/deps/cares/src/lib/ares_version.c index b6a62da86d575c..ca15fa77dcfbe6 100644 --- a/deps/cares/src/lib/ares_version.c +++ b/deps/cares/src/lib/ares_version.c @@ -29,8 +29,9 @@ const char *ares_version(int *version) { - if(version) + if (version) { *version = ARES_VERSION; + } return ARES_VERSION_STR; } diff --git a/deps/cares/src/lib/bitncmp.c b/deps/cares/src/lib/bitncmp.c index 5a5a07f8ac020e..0296316d24424c 100644 --- a/deps/cares/src/lib/bitncmp.c +++ b/deps/cares/src/lib/bitncmp.c @@ -19,8 +19,8 @@ #ifndef HAVE_BITNCMP -#include "ares_setup.h" -#include "bitncmp.h" +# include "ares_setup.h" +# include "bitncmp.h" /* * int @@ -34,22 +34,26 @@ * author: * Paul Vixie (ISC), June 1996 */ -int ares__bitncmp(const void *l, const void *r, int n) +int ares__bitncmp(const void *l, const void *r, size_t n) { - unsigned int lb, rb; - int x, b; + size_t lb; + size_t rb; + ares_ssize_t x; + size_t b; b = n / 8; x = memcmp(l, r, b); - if (x || (n % 8) == 0) - return (x); + if (x || (n % 8) == 0) { + return (int)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) + if (lb & 0x80) { return (1); + } return (-1); } lb <<= 1; diff --git a/deps/cares/src/lib/bitncmp.h b/deps/cares/src/lib/bitncmp.h index 8e39eb510c3943..0c4b9c39a8fb9e 100644 --- a/deps/cares/src/lib/bitncmp.h +++ b/deps/cares/src/lib/bitncmp.h @@ -27,9 +27,9 @@ #define __ARES_BITNCMP_H #ifndef HAVE_BITNCMP -int ares__bitncmp(const void *l, const void *r, int n); +int ares__bitncmp(const void *l, const void *r, size_t n); #else -#define ares__bitncmp(x,y,z) bitncmp(x,y,z) +# define ares__bitncmp(x, y, z) bitncmp(x, y, z) #endif #endif /* __ARES_BITNCMP_H */ diff --git a/deps/cares/src/lib/config-dos.h b/deps/cares/src/lib/config-dos.h index 50b039f5312a73..301fee4cf33973 100644 --- a/deps/cares/src/lib/config-dos.h +++ b/deps/cares/src/lib/config-dos.h @@ -9,57 +9,57 @@ * SPDX-License-Identifier: MIT * ================================================================ */ -#define PACKAGE "c-ares" - -#define HAVE_ERRNO_H 1 -#define HAVE_GETENV 1 -#define HAVE_GETTIMEOFDAY 1 -#define HAVE_IOCTLSOCKET 1 -#define HAVE_IOCTLSOCKET_FIONBIO 1 -#define HAVE_LIMITS_H 1 -#define HAVE_NET_IF_H 1 -#define HAVE_RECV 1 -#define HAVE_RECVFROM 1 -#define HAVE_SEND 1 -#define HAVE_STRDUP 1 -#define HAVE_STRICMP 1 -#define HAVE_STRUCT_IN6_ADDR 1 -#define HAVE_STRUCT_TIMEVAL 1 -#define HAVE_SYS_IOCTL_H 1 -#define HAVE_SYS_SOCKET_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_TIME_H 1 -#define HAVE_UNISTD_H 1 -#define HAVE_WRITEV 1 - -#define NEED_MALLOC_H 1 - -#define RETSIGTYPE void -#define TIME_WITH_SYS_TIME 1 +#define PACKAGE "c-ares" + +#define HAVE_ERRNO_H 1 +#define HAVE_GETENV 1 +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_IOCTLSOCKET 1 +#define HAVE_IOCTLSOCKET_FIONBIO 1 +#define HAVE_LIMITS_H 1 +#define HAVE_NET_IF_H 1 +#define HAVE_RECV 1 +#define HAVE_RECVFROM 1 +#define HAVE_SEND 1 +#define HAVE_STRDUP 1 +#define HAVE_STRICMP 1 +#define HAVE_STRUCT_IN6_ADDR 1 +#define HAVE_STRUCT_TIMEVAL 1 +#define HAVE_SYS_IOCTL_H 1 +#define HAVE_SYS_SOCKET_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_TIME_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_WRITEV 1 + +#define NEED_MALLOC_H 1 + +#define RETSIGTYPE void +#define TIME_WITH_SYS_TIME 1 /* Qualifiers for send(), recv(), recvfrom() and getnameinfo(). */ -#define SEND_TYPE_ARG1 int -#define SEND_QUAL_ARG2 const -#define SEND_TYPE_ARG2 void * -#define SEND_TYPE_ARG3 int -#define SEND_TYPE_ARG4 int -#define SEND_TYPE_RETV int - -#define RECV_TYPE_ARG1 int -#define RECV_TYPE_ARG2 void * -#define RECV_TYPE_ARG3 int -#define RECV_TYPE_ARG4 int -#define RECV_TYPE_RETV int - -#define RECVFROM_TYPE_ARG1 int -#define RECVFROM_TYPE_ARG2 void -#define RECVFROM_TYPE_ARG3 int -#define RECVFROM_TYPE_ARG4 int -#define RECVFROM_TYPE_ARG5 struct sockaddr -#define RECVFROM_TYPE_ARG6 int -#define RECVFROM_TYPE_RETV int +#define SEND_TYPE_ARG1 int +#define SEND_QUAL_ARG2 const +#define SEND_TYPE_ARG2 void * +#define SEND_TYPE_ARG3 int +#define SEND_TYPE_ARG4 int +#define SEND_TYPE_RETV int + +#define RECV_TYPE_ARG1 int +#define RECV_TYPE_ARG2 void * +#define RECV_TYPE_ARG3 int +#define RECV_TYPE_ARG4 int +#define RECV_TYPE_RETV int + +#define RECVFROM_TYPE_ARG1 int +#define RECVFROM_TYPE_ARG2 void +#define RECVFROM_TYPE_ARG3 int +#define RECVFROM_TYPE_ARG4 int +#define RECVFROM_TYPE_ARG5 struct sockaddr +#define RECVFROM_TYPE_ARG6 int +#define RECVFROM_TYPE_RETV int #define RECVFROM_TYPE_ARG2_IS_VOID 1 #define BSD @@ -67,52 +67,51 @@ /* Target HAVE_x section */ #if defined(DJGPP) - #undef _SSIZE_T - #include /* For 'ssize_t' */ +# undef _SSIZE_T +# include /* For 'ssize_t' */ - #define HAVE_STRCASECMP 1 - #define HAVE_STRNCASECMP 1 - #define HAVE_SYS_TIME_H 1 - #define HAVE_VARIADIC_MACROS_GCC 1 +# define HAVE_STRCASECMP 1 +# define HAVE_STRNCASECMP 1 +# define HAVE_SYS_TIME_H 1 +# define HAVE_VARIADIC_MACROS_GCC 1 - /* Because djgpp <= 2.03 doesn't have snprintf() etc. */ - #if (DJGPP_MINOR < 4) - #define _MPRINTF_REPLACE - #endif +/* Because djgpp <= 2.03 doesn't have snprintf() etc. */ +# if (DJGPP_MINOR < 4) +# define _MPRINTF_REPLACE +# endif #elif defined(__WATCOMC__) - #define HAVE_STRCASECMP 1 +# define HAVE_STRCASECMP 1 #elif defined(__HIGHC__) - #define HAVE_SYS_TIME_H 1 - #define strerror(e) strerror_s_((e)) +# define HAVE_SYS_TIME_H 1 +# define strerror(e) strerror_s_((e)) #endif #ifdef WATT32 - #define HAVE_AF_INET6 1 - #define HAVE_ARPA_INET_H 1 - #define HAVE_ARPA_NAMESER_H 1 - #define HAVE_CLOSE_S 1 - #define HAVE_GETHOSTNAME 1 - #define HAVE_NETDB_H 1 - #define HAVE_NETINET_IN_H 1 - #define HAVE_NETINET_TCP_H 1 - #define HAVE_PF_INET6 1 - #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 - #define HAVE_STRUCT_ADDRINFO 1 - #define HAVE_STRUCT_IN6_ADDR 1 - #define HAVE_STRUCT_SOCKADDR_IN6 1 - #define HAVE_SYS_SOCKET_H 1 - #define HAVE_SYS_UIO_H 1 - #define NS_INADDRSZ 4 - #define HAVE_STRUCT_SOCKADDR_IN6 1 - - #define HAVE_GETSERVBYPORT_R 1 - #define GETSERVBYPORT_R_ARGS 5 +# define HAVE_AF_INET6 1 +# define HAVE_ARPA_INET_H 1 +# define HAVE_ARPA_NAMESER_H 1 +# define HAVE_CLOSE_S 1 +# define HAVE_GETHOSTNAME 1 +# define HAVE_NETDB_H 1 +# define HAVE_NETINET_IN_H 1 +# define HAVE_NETINET_TCP_H 1 +# define HAVE_PF_INET6 1 +# define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 +# define HAVE_STRUCT_ADDRINFO 1 +# define HAVE_STRUCT_IN6_ADDR 1 +# define HAVE_STRUCT_SOCKADDR_IN6 1 +# define HAVE_SYS_SOCKET_H 1 +# define HAVE_SYS_UIO_H 1 +# define NS_INADDRSZ 4 +# define HAVE_STRUCT_SOCKADDR_IN6 1 + +# define HAVE_GETSERVBYPORT_R 1 +# define GETSERVBYPORT_R_ARGS 5 #endif #undef word #undef byte #endif /* HEADER_CONFIG_DOS_H */ - diff --git a/deps/cares/src/lib/config-win32.h b/deps/cares/src/lib/config-win32.h index fb13fed4c78bc7..ddba7e40b5c4ed 100644 --- a/deps/cares/src/lib/config-win32.h +++ b/deps/cares/src/lib/config-win32.h @@ -42,7 +42,7 @@ /* Define if you have the header file. */ #if defined(__MINGW32__) || defined(__POCC__) -#define HAVE_GETOPT_H 1 +# define HAVE_GETOPT_H 1 #endif /* Define if you have the header file. */ @@ -50,7 +50,7 @@ /* Define if you have the header file. */ #ifndef __SALFORDC__ -#define HAVE_PROCESS_H 1 +# define HAVE_PROCESS_H 1 #endif /* Define if you have the header file. */ @@ -64,8 +64,8 @@ /* Define if you have the header file. */ #if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \ - defined(__POCC__) -#define HAVE_UNISTD_H 1 + defined(__POCC__) +# define HAVE_UNISTD_H 1 #endif /* Define if you have the header file. */ @@ -76,12 +76,12 @@ /* Define if you have the header file. */ #ifndef __SALFORDC__ -#define HAVE_WINSOCK2_H 1 +# define HAVE_WINSOCK2_H 1 #endif /* Define if you have the header file. */ #ifndef __SALFORDC__ -#define HAVE_WS2TCPIP_H 1 +# define HAVE_WS2TCPIP_H 1 #endif /* ---------------------------------------------------------------- */ @@ -196,21 +196,21 @@ /* 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 +# 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 /* ---------------------------------------------------------------- */ @@ -225,7 +225,7 @@ #ifdef __cplusplus /* Compiling headers in C++ mode means bool is available */ -#define HAVE_BOOL_T +# define HAVE_BOOL_T #endif /* ---------------------------------------------------------------- */ @@ -241,7 +241,7 @@ /* Define if you have struct sockaddr_storage. */ #if !defined(__SALFORDC__) && !defined(__BORLANDC__) -#define HAVE_STRUCT_SOCKADDR_STORAGE 1 +# define HAVE_STRUCT_SOCKADDR_STORAGE 1 #endif /* Define if you have struct timeval. */ @@ -253,7 +253,7 @@ /* Define to avoid VS2005 complaining about portable C functions. */ #if defined(_MSC_VER) && (_MSC_VER >= 1400) -# define _CRT_SECURE_NO_DEPRECATE 1 +# define _CRT_SECURE_NO_DEPRECATE 1 # define _CRT_NONSTDC_NO_DEPRECATE 1 #endif @@ -320,27 +320,27 @@ /* Define if you have address family AF_INET6. */ #ifdef HAVE_WINSOCK2_H -#define HAVE_AF_INET6 1 +# define HAVE_AF_INET6 1 #endif /* Define if you have protocol family PF_INET6. */ #ifdef HAVE_WINSOCK2_H -#define HAVE_PF_INET6 1 +# define HAVE_PF_INET6 1 #endif /* Define if you have struct in6_addr. */ #ifdef HAVE_WS2TCPIP_H -#define HAVE_STRUCT_IN6_ADDR 1 +# define HAVE_STRUCT_IN6_ADDR 1 #endif /* Define if you have struct sockaddr_in6. */ #ifdef HAVE_WS2TCPIP_H -#define HAVE_STRUCT_SOCKADDR_IN6 1 +# define HAVE_STRUCT_SOCKADDR_IN6 1 #endif /* Define if you have sockaddr_in6 with scopeid. */ #ifdef HAVE_WS2TCPIP_H -#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 +# define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 #endif /* ---------------------------------------------------------------- */ @@ -354,10 +354,10 @@ */ #if defined(_WIN32_WCE) && !defined(HAVE_ERRNO_H) -# define ENOENT ERROR_FILE_NOT_FOUND -# define ESRCH ERROR_PATH_NOT_FOUND -# define ENOMEM ERROR_NOT_ENOUGH_MEMORY -# define ENOSPC ERROR_INVALID_PARAMETER +# define ENOENT ERROR_FILE_NOT_FOUND +# define ESRCH ERROR_PATH_NOT_FOUND +# define ENOMEM ERROR_NOT_ENOUGH_MEMORY +# define ENOSPC ERROR_INVALID_PARAMETER #endif #endif /* HEADER_CARES_CONFIG_WIN32_H */ diff --git a/deps/cares/src/lib/inet_net_pton.c b/deps/cares/src/lib/inet_net_pton.c index d3924c3767ec2a..175bc240935ec6 100644 --- a/deps/cares/src/lib/inet_net_pton.c +++ b/deps/cares/src/lib/inet_net_pton.c @@ -31,11 +31,12 @@ #include "ares.h" #include "ares_ipv6.h" -#include "ares_nowarn.h" #include "ares_inet_net_pton.h" +#include "ares_private.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 } } }; +const struct ares_in6_addr ares_in6addr_any = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 } } }; /* * static int @@ -58,196 +59,227 @@ const struct ares_in6_addr ares_in6addr_any = { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0, * author: * Paul Vixie (ISC), June 1996 */ -static int -ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size) +static int ares_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; + static const char xdigits[] = "0123456789abcdef"; + static const char digits[] = "0123456789"; + int n; + int ch; + int tmp = 0; + int dirty; + int bits; const unsigned char *odst = dst; ch = *src++; - if (ch == '0' && (src[0] == 'x' || src[0] == 'X') - && ISASCII(src[1]) - && ISXDIGIT(src[1])) { + if (ch == '0' && (src[0] == 'x' || src[0] == 'X') && ISASCII(src[1]) && + ISXDIGIT(src[1])) { /* Hexadecimal: Eat nybble string. */ - if (!size) + if (!size) { goto emsgsize; + } dirty = 0; - src++; /* skip x or X. */ + src++; /* skip x or X. */ while ((ch = *src++) != '\0' && ISASCII(ch) && ISXDIGIT(ch)) { - if (ISUPPER(ch)) + if (ISUPPER(ch)) { ch = tolower(ch); - n = aresx_sztosi(strchr(xdigits, ch) - xdigits); - if (dirty == 0) + } + n = (int)(strchr(xdigits, ch) - xdigits); + if (dirty == 0) { tmp = n; - else + } else { tmp = (tmp << 4) | n; + } if (++dirty == 2) { - if (!size--) + if (!size--) { goto emsgsize; - *dst++ = (unsigned char) tmp; - dirty = 0; + } + *dst++ = (unsigned char)tmp; + dirty = 0; } } - if (dirty) { /* Odd trailing nybble? */ - if (!size--) + if (dirty) { /* Odd trailing nybble? */ + if (!size--) { goto emsgsize; - *dst++ = (unsigned char) (tmp << 4); + } + *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); + n = (int)(strchr(digits, ch) - digits); tmp *= 10; tmp += n; - if (tmp > 255) + if (tmp > 255) { goto enoent; - } while ((ch = *src++) != '\0' && - ISASCII(ch) && ISDIGIT(ch)); - if (!size--) + } + } while ((ch = *src++) != '\0' && ISASCII(ch) && ISDIGIT(ch)); + if (!size--) { goto emsgsize; - *dst++ = (unsigned char) tmp; - if (ch == '\0' || ch == '/') + } + *dst++ = (unsigned char)tmp; + if (ch == '\0' || ch == '/') { break; - if (ch != '.') + } + if (ch != '.') { goto enoent; + } ch = *src++; - if (!ISASCII(ch) || !ISDIGIT(ch)) + if (!ISASCII(ch) || !ISDIGIT(ch)) { goto enoent; + } } - } else + } else { goto enoent; + } bits = -1; - if (ch == '/' && ISASCII(src[0]) && - ISDIGIT(src[0]) && dst > odst) { + if (ch == '/' && ISASCII(src[0]) && ISDIGIT(src[0]) && dst > odst) { /* CIDR width specifier. Nothing can follow it. */ - ch = *src++; /* Skip over the /. */ + ch = *src++; /* Skip over the /. */ bits = 0; do { - n = aresx_sztosi(strchr(digits, ch) - digits); + n = (int)(strchr(digits, ch) - digits); bits *= 10; bits += n; - if (bits > 32) + if (bits > 32) { goto enoent; + } } while ((ch = *src++) != '\0' && ISASCII(ch) && ISDIGIT(ch)); - if (ch != '\0') + if (ch != '\0') { goto enoent; + } } /* Firey death and destruction unless we prefetched EOS. */ - if (ch != '\0') + if (ch != '\0') { goto enoent; + } /* If nothing was written to the destination, we found no address. */ - if (dst == odst) - goto enoent; /* LCOV_EXCL_LINE: all valid paths above increment dst */ + if (dst == odst) { + goto enoent; /* LCOV_EXCL_LINE: all valid paths above increment dst */ + } /* If no CIDR spec was given, infer width from net class. */ if (bits == -1) { - if (*odst >= 240) /* Class E */ + if (*odst >= 240) { /* Class E */ bits = 32; - else if (*odst >= 224) /* Class D */ + } else if (*odst >= 224) { /* Class D */ bits = 8; - else if (*odst >= 192) /* Class C */ + } else if (*odst >= 192) { /* Class C */ bits = 24; - else if (*odst >= 128) /* Class B */ + } else if (*odst >= 128) { /* Class B */ bits = 16; - else /* Class A */ + } 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 (bits < ((dst - odst) * 8)) { + bits = (int)(dst - odst) * 8; + } /* * If there are no additional bits specified for a class D * address adjust bits to 4. */ - if (bits == 8 && *odst == 224) + if (bits == 8 && *odst == 224) { bits = 4; + } } /* Extend network to cover the actual mask. */ while (bits > ((dst - odst) * 8)) { - if (!size--) + if (!size--) { goto emsgsize; + } *dst++ = '\0'; } return (bits); - enoent: +enoent: SET_ERRNO(ENOENT); return (-1); - emsgsize: +emsgsize: SET_ERRNO(EMSGSIZE); return (-1); } -static int -getbits(const char *src, int *bitsp) +static int getbits(const char *src, size_t *bitsp) { static const char digits[] = "0123456789"; - int n; - int val; - char ch; + size_t n; + size_t val; + char ch; val = 0; - n = 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 */ + if (n++ != 0 && val == 0) { /* no leading zeros */ return (0); + } val *= 10; - val += aresx_sztosi(pch - digits); - if (val > 128) /* range */ + val += (size_t)(pch - digits); + if (val > 128) { /* range */ return (0); + } continue; } return (0); } - if (n == 0) + if (n == 0) { return (0); + } *bitsp = val; return (1); } - -static int -ares_inet_pton6(const char *src, unsigned char *dst) +static int ares_inet_pton6(const char *src, unsigned char *dst) { - 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, count_xdigit; - unsigned int val; + static const char xdigits_l[] = "0123456789abcdef"; + static const char xdigits_u[] = "0123456789ABCDEF"; + unsigned char tmp[NS_IN6ADDRSZ]; + unsigned char *tp; + unsigned char *endp; + unsigned char *colonp; + const char *xdigits; + const char *curtok; + int ch; + int saw_xdigit; + int count_xdigit; + unsigned int val; memset((tp = tmp), '\0', NS_IN6ADDRSZ); - endp = tp + NS_IN6ADDRSZ; + endp = tp + NS_IN6ADDRSZ; colonp = NULL; /* Leading :: requires some special handling. */ - if (*src == ':') - if (*++src != ':') + if (*src == ':') { + if (*++src != ':') { goto enoent; - curtok = src; + } + } + curtok = src; saw_xdigit = count_xdigit = 0; - val = 0; + val = 0; while ((ch = *src++) != '\0') { const char *pch; - if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL) + if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL) { pch = strchr((xdigits = xdigits_u), ch); + } if (pch != NULL) { - if (count_xdigit >= 4) + if (count_xdigit >= 4) { goto enoent; + } val <<= 4; - val |= (unsigned int)(pch - xdigits); - if (val > 0xffff) + val |= (unsigned int)(pch - xdigits); + if (val > 0xffff) { goto enoent; + } saw_xdigit = 1; count_xdigit++; continue; @@ -255,35 +287,38 @@ ares_inet_pton6(const char *src, unsigned char *dst) if (ch == ':') { curtok = src; if (!saw_xdigit) { - if (colonp) + if (colonp) { goto enoent; + } colonp = tp; continue; } else if (*src == '\0') { goto enoent; } - if (tp + NS_INT16SZ > endp) + if (tp + NS_INT16SZ > endp) { goto enoent; - *tp++ = (unsigned char) (val >> 8) & 0xff; - *tp++ = (unsigned char) val & 0xff; - saw_xdigit = 0; + } + *tp++ = (unsigned char)(val >> 8) & 0xff; + *tp++ = (unsigned char)val & 0xff; + saw_xdigit = 0; count_xdigit = 0; - val = 0; + val = 0; continue; } if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) && ares_inet_net_pton_ipv4(curtok, tp, NS_INADDRSZ) > 0) { - tp += NS_INADDRSZ; - saw_xdigit = 0; - break; /* '\0' was seen by inet_pton4(). */ + tp += NS_INADDRSZ; + saw_xdigit = 0; + break; /* '\0' was seen by inet_pton4(). */ } goto enoent; } if (saw_xdigit) { - if (tp + NS_INT16SZ > endp) + if (tp + NS_INT16SZ > endp) { goto enoent; - *tp++ = (unsigned char) (val >> 8) & 0xff; - *tp++ = (unsigned char) val & 0xff; + } + *tp++ = (unsigned char)(val >> 8) & 0xff; + *tp++ = (unsigned char)val & 0xff; } if (colonp != NULL) { /* @@ -291,18 +326,20 @@ ares_inet_pton6(const char *src, unsigned char *dst) * overlapping regions, we'll do the shift by hand. */ const int n = (int)(tp - colonp); - int i; + int i; - if (tp == endp) + if (tp == endp) { goto enoent; + } for (i = 1; i <= n; i++) { - endp[- i] = colonp[n - i]; + endp[-i] = colonp[n - i]; colonp[n - i] = 0; } tp = endp; } - if (tp != endp) + if (tp != endp) { goto enoent; + } memcpy(dst, tmp, NS_IN6ADDRSZ); return (1); @@ -312,33 +349,35 @@ ares_inet_pton6(const char *src, unsigned char *dst) return (-1); } -static int -ares_inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size) +static int ares_inet_net_pton_ipv6(const char *src, unsigned char *dst, + size_t size) { struct ares_in6_addr in6; int ret; - int bits; + size_t bits; size_t bytes; char buf[INET6_ADDRSTRLEN + sizeof("/128")]; char *sep; - if (strlen(src) >= sizeof buf) { + if (ares_strlen(src) >= sizeof buf) { SET_ERRNO(EMSGSIZE); return (-1); } - strncpy(buf, src, sizeof buf); + ares_strcpy(buf, src, sizeof buf); sep = strchr(buf, '/'); - if (sep != NULL) + if (sep != NULL) { *sep++ = '\0'; + } ret = ares_inet_pton6(buf, (unsigned char *)&in6); - if (ret != 1) + if (ret != 1) { return (-1); + } - if (sep == NULL) + if (sep == NULL) { bits = 128; - else { + } else { if (!getbits(sep, &bits)) { SET_ERRNO(ENOENT); return (-1); @@ -351,7 +390,7 @@ ares_inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size) return (-1); } memcpy(dst, &in6, bytes); - return (bits); + return (int)bits; } /* @@ -372,36 +411,35 @@ ares_inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size) * author: * Paul Vixie (ISC), June 1996 */ -int -ares_inet_net_pton(int af, const char *src, void *dst, size_t size) +int ares_inet_net_pton(int af, const char *src, void *dst, size_t size) { switch (af) { - case AF_INET: - return (ares_inet_net_pton_ipv4(src, dst, size)); - case AF_INET6: - return (ares_inet_net_pton_ipv6(src, dst, size)); - default: - SET_ERRNO(EAFNOSUPPORT); - return (-1); + case AF_INET: + return (ares_inet_net_pton_ipv4(src, dst, size)); + case AF_INET6: + return (ares_inet_net_pton_ipv6(src, dst, size)); + default: + SET_ERRNO(EAFNOSUPPORT); + return (-1); } } int ares_inet_pton(int af, const char *src, void *dst) { - int result; + int result; size_t size; - if (af == AF_INET) + if (af == AF_INET) { size = sizeof(struct in_addr); - else if (af == AF_INET6) + } else if (af == AF_INET6) { size = sizeof(struct ares_in6_addr); - else - { + } else { SET_ERRNO(EAFNOSUPPORT); return -1; } result = ares_inet_net_pton(af, src, dst, size); - if (result == -1 && ERRNO == ENOENT) + if (result == -1 && ERRNO == ENOENT) { return 0; + } return (result > -1 ? 1 : -1); } diff --git a/deps/cares/src/lib/inet_ntop.c b/deps/cares/src/lib/inet_ntop.c index 246d630647b9eb..f342c5be70abe2 100644 --- a/deps/cares/src/lib/inet_ntop.c +++ b/deps/cares/src/lib/inet_ntop.c @@ -30,6 +30,7 @@ #include "ares.h" #include "ares_ipv6.h" +#include "ares_private.h" #ifndef HAVE_INET_NTOP @@ -54,17 +55,17 @@ static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size); * author: * Paul Vixie, 1996. */ -const char * -ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size) +const char *ares_inet_ntop(int af, const void *src, char *dst, + ares_socklen_t size) { switch (af) { - case AF_INET: - return (inet_ntop4(src, dst, (size_t)size)); - case AF_INET6: - return (inet_ntop6(src, dst, (size_t)size)); - default: - SET_ERRNO(EAFNOSUPPORT); - return (NULL); + case AF_INET: + return (inet_ntop4(src, dst, (size_t)size)); + case AF_INET6: + return (inet_ntop6(src, dst, (size_t)size)); + default: + SET_ERRNO(EAFNOSUPPORT); + return (NULL); } /* NOTREACHED */ } @@ -80,17 +81,17 @@ ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size) * author: * Paul Vixie, 1996. */ -static const char * -inet_ntop4(const unsigned char *src, char *dst, size_t size) +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")]; + char tmp[sizeof("255.255.255.255")]; - if ((size_t)snprintf(tmp, sizeof(tmp), fmt, src[0], src[1], src[2], src[3]) >= size) { + if ((size_t)snprintf(tmp, sizeof(tmp), fmt, src[0], src[1], src[2], src[3]) >= + size) { SET_ERRNO(ENOSPC); return (NULL); } - strcpy(dst, tmp); + ares_strcpy(dst, tmp, size); return (dst); } @@ -100,8 +101,7 @@ inet_ntop4(const unsigned char *src, char *dst, size_t size) * author: * Paul Vixie, 1996. */ -static const char * -inet_ntop6(const unsigned char *src, char *dst, size_t size) +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 @@ -110,11 +110,15 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size) * 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 tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; char *tp; - struct { int base, len; } best, cur; + + struct { + int base, len; + } best, cur; + unsigned int words[NS_IN6ADDRSZ / NS_INT16SZ]; - int i; + int i; /* * Preprocess: @@ -122,32 +126,37 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size) * Find the longest run of 0x00's in src[] for :: shorthanding. */ memset(words, '\0', sizeof(words)); - for (i = 0; i < NS_IN6ADDRSZ; i++) + 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; + 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) + if (cur.base == -1) { cur.base = i, cur.len = 1; - else + } else { cur.len++; + } } else { if (cur.base != -1) { - if (best.base == -1 || cur.len > best.len) + 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) + if (best.base == -1 || cur.len > best.len) { best = cur; + } } - if (best.base != -1 && best.len < 2) + if (best.base != -1 && best.len < 2) { best.base = -1; + } /* * Format the result. @@ -155,29 +164,33 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size) 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) + 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) + 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))) + 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); + } + tp += ares_strlen(tp); break; } - tp += snprintf(tp, sizeof(tmp)-(tp-tmp), "%x", words[i]); + tp += snprintf(tp, sizeof(tmp) - (tp - tmp), "%x", words[i]); } /* Was it a trailing run of 0x00's? */ - if (best.base != -1 && (best.base + best.len) == (NS_IN6ADDRSZ / NS_INT16SZ)) + if (best.base != -1 && + (best.base + best.len) == (NS_IN6ADDRSZ / NS_INT16SZ)) { *tp++ = ':'; + } *tp++ = '\0'; /* @@ -187,14 +200,14 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size) SET_ERRNO(ENOSPC); return (NULL); } - strcpy(dst, tmp); + ares_strcpy(dst, tmp, size); return (dst); } -#else /* HAVE_INET_NTOP */ +#else /* HAVE_INET_NTOP */ -const char * -ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size) +const char *ares_inet_ntop(int af, const void *src, char *dst, + ares_socklen_t size) { /* just relay this to the underlying function */ return inet_ntop(af, src, dst, size); diff --git a/deps/cares/src/lib/setup_once.h b/deps/cares/src/lib/setup_once.h index f576797de353b7..4fbf5ba157eb92 100644 --- a/deps/cares/src/lib/setup_once.h +++ b/deps/cares/src/lib/setup_once.h @@ -48,47 +48,47 @@ #include #ifdef HAVE_ERRNO_H -#include +# include #endif #ifdef HAVE_SYS_TYPES_H -#include +# include #endif #ifdef NEED_MALLOC_H -#include +# include #endif #ifdef NEED_MEMORY_H -#include +# include #endif #ifdef HAVE_SYS_STAT_H -#include +# include #endif #ifdef HAVE_SYS_TIME_H -#include -#ifdef TIME_WITH_SYS_TIME -#include -#endif +# include +# ifdef TIME_WITH_SYS_TIME +# include +# endif #else -#ifdef HAVE_TIME_H -#include -#endif +# ifdef HAVE_TIME_H +# include +# endif #endif #ifdef WIN32 -#include -#include +# include +# include #endif #if defined(HAVE_STDBOOL_H) && defined(HAVE_BOOL_T) -#include +# include #endif #ifdef HAVE_UNISTD_H -#include +# include #endif #ifdef __hpux @@ -103,11 +103,11 @@ #endif #ifdef HAVE_SYS_RANDOM_H -#include +# include #endif #ifdef HAVE_SYS_SOCKET_H -#include +# include #endif #ifdef __hpux @@ -126,8 +126,8 @@ #ifndef HAVE_STRUCT_TIMEVAL struct timeval { - long tv_sec; - long tv_usec; + long tv_sec; + long tv_usec; }; #endif @@ -138,17 +138,17 @@ struct timeval { */ #ifdef HAVE_MSG_NOSIGNAL -#define SEND_4TH_ARG MSG_NOSIGNAL +# define SEND_4TH_ARG MSG_NOSIGNAL #else -#define SEND_4TH_ARG 0 +# define SEND_4TH_ARG 0 #endif #if defined(__minix) /* Minix doesn't support recv on TCP sockets */ -#define sread(x,y,z) (ares_ssize_t)read((RECV_TYPE_ARG1)(x), \ - (RECV_TYPE_ARG2)(y), \ - (RECV_TYPE_ARG3)(z)) +# define sread(x, y, z) \ + (ares_ssize_t) \ + read((RECV_TYPE_ARG1)(x), (RECV_TYPE_ARG2)(y), (RECV_TYPE_ARG3)(z)) #elif defined(HAVE_RECV) /* @@ -173,97 +173,86 @@ struct timeval { * SEND_TYPE_RETV must also be defined. */ -#if !defined(RECV_TYPE_ARG1) || \ - !defined(RECV_TYPE_ARG2) || \ - !defined(RECV_TYPE_ARG3) || \ - !defined(RECV_TYPE_ARG4) || \ +# if !defined(RECV_TYPE_ARG1) || !defined(RECV_TYPE_ARG2) || \ + !defined(RECV_TYPE_ARG3) || !defined(RECV_TYPE_ARG4) || \ !defined(RECV_TYPE_RETV) - /* */ - Error Missing_definition_of_return_and_arguments_types_of_recv - /* */ -#else -#define sread(x,y,z) (ares_ssize_t)recv((RECV_TYPE_ARG1)(x), \ - (RECV_TYPE_ARG2)(y), \ - (RECV_TYPE_ARG3)(z), \ - (RECV_TYPE_ARG4)(0)) -#endif +/* */ +Error Missing_definition_of_return_and_arguments_types_of_recv +/* */ +# else +# define sread(x, y, z) \ + (ares_ssize_t) recv((RECV_TYPE_ARG1)(x), (RECV_TYPE_ARG2)(y), \ + (RECV_TYPE_ARG3)(z), (RECV_TYPE_ARG4)(0)) +# endif #else /* HAVE_RECV */ -#ifndef sread - /* */ - Error Missing_definition_of_macro_sread - /* */ -#endif +# ifndef sread +/* */ +Error Missing_definition_of_macro_sread +/* */ +# endif #endif /* HAVE_RECV */ #if defined(__minix) /* Minix doesn't support send on TCP sockets */ -#define swrite(x,y,z) (ares_ssize_t)write((SEND_TYPE_ARG1)(x), \ - (SEND_TYPE_ARG2)(y), \ - (SEND_TYPE_ARG3)(z)) +# define swrite(x, y, z) \ + (ares_ssize_t) \ + write((SEND_TYPE_ARG1)(x), (SEND_TYPE_ARG2)(y), (SEND_TYPE_ARG3)(z)) #elif defined(HAVE_SEND) -#if !defined(SEND_TYPE_ARG1) || \ - !defined(SEND_QUAL_ARG2) || \ - !defined(SEND_TYPE_ARG2) || \ - !defined(SEND_TYPE_ARG3) || \ - !defined(SEND_TYPE_ARG4) || \ - !defined(SEND_TYPE_RETV) +# if !defined(SEND_TYPE_ARG1) || !defined(SEND_QUAL_ARG2) || \ + !defined(SEND_TYPE_ARG2) || !defined(SEND_TYPE_ARG3) || \ + !defined(SEND_TYPE_ARG4) || !defined(SEND_TYPE_RETV) /* */ Error Missing_definition_of_return_and_arguments_types_of_send - /* */ -#else -#define swrite(x,y,z) (ares_ssize_t)send((SEND_TYPE_ARG1)(x), \ - (SEND_TYPE_ARG2)(y), \ - (SEND_TYPE_ARG3)(z), \ - (SEND_TYPE_ARG4)(SEND_4TH_ARG)) -#endif +/* */ +# else +# define swrite(x, y, z) \ + (ares_ssize_t) send((SEND_TYPE_ARG1)(x), (SEND_TYPE_ARG2)(y), \ + (SEND_TYPE_ARG3)(z), (SEND_TYPE_ARG4)(SEND_4TH_ARG)) +# endif #else /* HAVE_SEND */ -#ifndef swrite +# ifndef swrite /* */ Error Missing_definition_of_macro_swrite - /* */ -#endif +/* */ +# endif #endif /* HAVE_SEND */ #if 0 -#if defined(HAVE_RECVFROM) +# 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) +# if !defined(RECVFROM_TYPE_ARG1) || !defined(RECVFROM_TYPE_ARG2) || \ + !defined(RECVFROM_TYPE_ARG3) || !defined(RECVFROM_TYPE_ARG4) || \ + !defined(RECVFROM_TYPE_ARG5) || !defined(RECVFROM_TYPE_ARG6) || \ + !defined(RECVFROM_TYPE_RETV) /* */ Error Missing_definition_of_return_and_arguments_types_of_recvfrom /* */ -#else -#define sreadfrom(s,b,bl,f,fl) (ares_ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \ - (RECVFROM_TYPE_ARG2 *)(b), \ - (RECVFROM_TYPE_ARG3) (bl), \ - (RECVFROM_TYPE_ARG4) (0), \ - (RECVFROM_TYPE_ARG5 *)(f), \ - (RECVFROM_TYPE_ARG6 *)(fl)) -#endif -#else /* HAVE_RECVFROM */ -#ifndef sreadfrom +# else +# define sreadfrom(s, b, bl, f, fl) \ + (ares_ssize_t) \ + recvfrom((RECVFROM_TYPE_ARG1)(s), (RECVFROM_TYPE_ARG2 *)(b), \ + (RECVFROM_TYPE_ARG3)(bl), (RECVFROM_TYPE_ARG4)(0), \ + (RECVFROM_TYPE_ARG5 *)(f), (RECVFROM_TYPE_ARG6 *)(fl)) +# endif +# else /* HAVE_RECVFROM */ +# ifndef sreadfrom /* */ Error Missing_definition_of_macro_sreadfrom /* */ -#endif -#endif /* HAVE_RECVFROM */ +# endif +# endif /* HAVE_RECVFROM */ -#ifdef RECVFROM_TYPE_ARG6_IS_VOID -# define RECVFROM_ARG6_T int -#else -# define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6 -#endif +# ifdef RECVFROM_TYPE_ARG6_IS_VOID +# define RECVFROM_ARG6_T int +# else +# define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6 +# endif #endif /* if 0 */ @@ -272,13 +261,13 @@ struct timeval { */ #if defined(HAVE_CLOSESOCKET) -# define sclose(x) closesocket((x)) +# define sclose(x) closesocket((x)) #elif defined(HAVE_CLOSESOCKET_CAMEL) -# define sclose(x) CloseSocket((x)) +# define sclose(x) CloseSocket((x)) #elif defined(HAVE_CLOSE_S) -# define sclose(x) close_s((x)) +# define sclose(x) close_s((x)) #else -# define sclose(x) close((x)) +# define sclose(x) close((x)) #endif @@ -287,21 +276,21 @@ struct timeval { * 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 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 ISBLANK(x) \ + (int)((((unsigned char)x) == ' ') || (((unsigned char)x) == '\t')) -#define TOLOWER(x) (tolower((int) ((unsigned char)x))) +#define TOLOWER(x) (tolower((int)((unsigned char)x))) /* @@ -309,9 +298,9 @@ struct timeval { */ #if defined(__hpux) && !defined(HAVE_BOOL_T) - typedef int bool; +typedef int bool; # define false 0 -# define true 1 +# define true 1 # define HAVE_BOOL_T #endif @@ -324,10 +313,10 @@ struct timeval { */ #ifndef HAVE_BOOL_T - typedef enum { - bool_false = 0, - bool_true = 1 - } bool; +typedef enum { + bool_false = 0, + bool_true = 1 +} bool; /* * Use a define to let 'true' and 'false' use those enums. There @@ -349,10 +338,10 @@ struct timeval { */ #ifndef TRUE -#define TRUE true +# define TRUE true #endif #ifndef FALSE -#define FALSE false +# define FALSE false #endif @@ -361,18 +350,16 @@ struct timeval { * avoiding compiler warnings. Mostly intended for other macro definitions. */ -#define WHILE_FALSE while(0) +#define WHILE_FALSE while (0) #if defined(_MSC_VER) && !defined(__POCC__) # undef WHILE_FALSE # if (_MSC_VER < 1500) -# define WHILE_FALSE while(1, 0) +# define WHILE_FALSE while (1, 0) # else -# define WHILE_FALSE \ -__pragma(warning(push)) \ -__pragma(warning(disable:4127)) \ -while(0) \ -__pragma(warning(pop)) +# define WHILE_FALSE \ + __pragma(warning(push)) __pragma(warning(disable : 4127)) while (0) \ + __pragma(warning(pop)) # endif #endif @@ -383,7 +370,7 @@ __pragma(warning(pop)) #ifndef HAVE_SIG_ATOMIC_T typedef int sig_atomic_t; -#define HAVE_SIG_ATOMIC_T +# define HAVE_SIG_ATOMIC_T #endif @@ -392,9 +379,9 @@ typedef int sig_atomic_t; */ #ifdef HAVE_SIG_ATOMIC_T_VOLATILE -#define SIG_ATOMIC_T static sig_atomic_t +# define SIG_ATOMIC_T static sig_atomic_t #else -#define SIG_ATOMIC_T static volatile sig_atomic_t +# define SIG_ATOMIC_T static volatile sig_atomic_t #endif @@ -403,7 +390,7 @@ typedef int sig_atomic_t; */ #ifndef RETSIGTYPE -#define RETSIGTYPE void +# define RETSIGTYPE void #endif @@ -412,9 +399,12 @@ typedef int sig_atomic_t; */ #ifdef DEBUGBUILD -#define DEBUGF(x) x +# define DEBUGF(x) x #else -#define DEBUGF(x) do { } WHILE_FALSE +# define DEBUGF(x) \ + do { \ + } \ + WHILE_FALSE #endif @@ -423,9 +413,12 @@ typedef int sig_atomic_t; */ #if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H) -#define DEBUGASSERT(x) assert(x) +# define DEBUGASSERT(x) assert(x) #else -#define DEBUGASSERT(x) do { } WHILE_FALSE +# define DEBUGASSERT(x) \ + do { \ + } \ + WHILE_FALSE #endif @@ -435,11 +428,11 @@ typedef int sig_atomic_t; */ #ifdef USE_WINSOCK -#define SOCKERRNO ((int)WSAGetLastError()) -#define SET_SOCKERRNO(x) (WSASetLastError((int)(x))) +# define SOCKERRNO ((int)WSAGetLastError()) +# define SET_SOCKERRNO(x) (WSASetLastError((int)(x))) #else -#define SOCKERRNO (errno) -#define SET_SOCKERRNO(x) (errno = (x)) +# define SOCKERRNO (errno) +# define SET_SOCKERRNO(x) (errno = (x)) #endif @@ -449,11 +442,11 @@ typedef int sig_atomic_t; */ #if defined(WIN32) && !defined(WATT32) -#define ERRNO ((int)GetLastError()) -#define SET_ERRNO(x) (SetLastError((DWORD)(x))) +# define ERRNO ((int)GetLastError()) +# define SET_ERRNO(x) (SetLastError((DWORD)(x))) #else -#define ERRNO (errno) -#define SET_ERRNO(x) (errno = (x)) +# define ERRNO (errno) +# define SET_ERRNO(x) (errno = (x)) #endif @@ -462,78 +455,78 @@ typedef int sig_atomic_t; */ #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 +# 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 @@ -541,9 +534,9 @@ typedef int sig_atomic_t; * 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 +#if defined(__VMS) && defined(__INITIAL_POINTER_SIZE) && \ + (__INITIAL_POINTER_SIZE == 64) +# define getpwuid __32_getpwuid #endif @@ -552,9 +545,9 @@ typedef int sig_atomic_t; */ #ifdef __VMS -#define argv_item_t __char_ptr32 +# define argv_item_t __char_ptr32 #else -#define argv_item_t char * +# define argv_item_t char * #endif diff --git a/deps/cares/src/lib/windows_port.c b/deps/cares/src/lib/windows_port.c index 5977b8493ea843..d5f0ad3abf608b 100644 --- a/deps/cares/src/lib/windows_port.c +++ b/deps/cares/src/lib/windows_port.c @@ -13,18 +13,17 @@ */ #if (defined(WIN32) || defined(WATT32)) && !defined(MSDOS) -#ifdef __WATCOMC__ +# ifdef __WATCOMC__ /* * Watcom needs a DllMain() in order to initialise the clib startup code. */ -BOOL -WINAPI DllMain (HINSTANCE hnd, DWORD reason, LPVOID reserved) +BOOL WINAPI DllMain(HINSTANCE hnd, DWORD reason, LPVOID reserved) { - (void) hnd; - (void) reason; - (void) reserved; + (void)hnd; + (void)reason; + (void)reserved; return (TRUE); } -#endif +# endif #endif /* WIN32 builds only */ diff --git a/deps/cares/src/tools/CMakeLists.txt b/deps/cares/src/tools/CMakeLists.txt index 9ee01b4745680c..5839ea15dbe6b2 100644 --- a/deps/cares/src/tools/CMakeLists.txt +++ b/deps/cares/src/tools/CMakeLists.txt @@ -15,6 +15,9 @@ IF (CARES_BUILD_TOOLS) "$" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" ) + SET_TARGET_PROPERTIES (ahost PROPERTIES + C_STANDARD 90 + ) TARGET_COMPILE_DEFINITIONS (ahost PRIVATE HAVE_CONFIG_H=1) TARGET_LINK_LIBRARIES (ahost PRIVATE ${PROJECT_NAME}) IF (CARES_INSTALL) @@ -32,6 +35,9 @@ IF (CARES_BUILD_TOOLS) "$" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" ) + SET_TARGET_PROPERTIES (adig PROPERTIES + C_STANDARD 90 + ) TARGET_COMPILE_DEFINITIONS (adig PRIVATE HAVE_CONFIG_H=1) TARGET_LINK_LIBRARIES (adig PRIVATE ${PROJECT_NAME}) IF (CARES_INSTALL) diff --git a/deps/cares/src/tools/Makefile.in b/deps/cares/src/tools/Makefile.in index 048b1e8b0c11cd..45e25753c26fa9 100644 --- a/deps/cares/src/tools/Makefile.in +++ b/deps/cares/src/tools/Makefile.in @@ -96,6 +96,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_ac_append_to_file.m4 \ $(top_srcdir)/m4/ax_ac_print_to_file.m4 \ $(top_srcdir)/m4/ax_add_am_macro_static.m4 \ $(top_srcdir)/m4/ax_am_macros_static.m4 \ + $(top_srcdir)/m4/ax_append_compile_flags.m4 \ + $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_check_compile_flag.m4 \ $(top_srcdir)/m4/ax_check_gnu_make.m4 \ $(top_srcdir)/m4/ax_code_coverage.m4 \ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ @@ -128,7 +131,6 @@ am__EXEEXT_1 = ahost$(EXEEXT) adig$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = adig-ares_getopt.$(OBJEXT) \ - ../lib/adig-ares_nowarn.$(OBJEXT) \ ../lib/adig-ares_strcasecmp.$(OBJEXT) am__objects_2 = am_adig_OBJECTS = adig-adig.$(OBJEXT) $(am__objects_1) \ @@ -146,7 +148,6 @@ adig_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(adig_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__objects_3 = ahost-ares_getopt.$(OBJEXT) \ - ../lib/ahost-ares_nowarn.$(OBJEXT) \ ../lib/ahost-ares_strcasecmp.$(OBJEXT) am_ahost_OBJECTS = ahost-ahost.$(OBJEXT) $(am__objects_3) \ $(am__objects_2) @@ -172,9 +173,7 @@ am__v_at_1 = DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ../lib/$(DEPDIR)/adig-ares_nowarn.Po \ - ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po \ - ../lib/$(DEPDIR)/ahost-ares_nowarn.Po \ +am__depfiles_remade = ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po \ ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po \ ./$(DEPDIR)/adig-adig.Po ./$(DEPDIR)/adig-ares_getopt.Po \ ./$(DEPDIR)/ahost-ahost.Po ./$(DEPDIR)/ahost-ares_getopt.Po @@ -388,11 +387,9 @@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_builddir)/src/lib \ # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT SAMPLESOURCES = ares_getopt.c \ - ../lib/ares_nowarn.c \ ../lib/ares_strcasecmp.c SAMPLEHEADERS = ares_getopt.h \ - ../lib/ares_nowarn.h \ ../lib/ares_strcasecmp.h @@ -454,16 +451,12 @@ clean-noinstPROGRAMS: ../lib/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ../lib/$(DEPDIR) @: > ../lib/$(DEPDIR)/$(am__dirstamp) -../lib/adig-ares_nowarn.$(OBJEXT): ../lib/$(am__dirstamp) \ - ../lib/$(DEPDIR)/$(am__dirstamp) ../lib/adig-ares_strcasecmp.$(OBJEXT): ../lib/$(am__dirstamp) \ ../lib/$(DEPDIR)/$(am__dirstamp) adig$(EXEEXT): $(adig_OBJECTS) $(adig_DEPENDENCIES) $(EXTRA_adig_DEPENDENCIES) @rm -f adig$(EXEEXT) $(AM_V_CCLD)$(adig_LINK) $(adig_OBJECTS) $(adig_LDADD) $(LIBS) -../lib/ahost-ares_nowarn.$(OBJEXT): ../lib/$(am__dirstamp) \ - ../lib/$(DEPDIR)/$(am__dirstamp) ../lib/ahost-ares_strcasecmp.$(OBJEXT): ../lib/$(am__dirstamp) \ ../lib/$(DEPDIR)/$(am__dirstamp) @@ -478,9 +471,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/adig-ares_nowarn.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/adig-ares_strcasecmp.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/ahost-ares_nowarn.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adig-adig.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adig-ares_getopt.Po@am__quote@ # am--include-marker @@ -545,20 +536,6 @@ adig-ares_getopt.obj: ares_getopt.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o adig-ares_getopt.obj `if test -f 'ares_getopt.c'; then $(CYGPATH_W) 'ares_getopt.c'; else $(CYGPATH_W) '$(srcdir)/ares_getopt.c'; fi` -../lib/adig-ares_nowarn.o: ../lib/ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -MT ../lib/adig-ares_nowarn.o -MD -MP -MF ../lib/$(DEPDIR)/adig-ares_nowarn.Tpo -c -o ../lib/adig-ares_nowarn.o `test -f '../lib/ares_nowarn.c' || echo '$(srcdir)/'`../lib/ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/adig-ares_nowarn.Tpo ../lib/$(DEPDIR)/adig-ares_nowarn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_nowarn.c' object='../lib/adig-ares_nowarn.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o ../lib/adig-ares_nowarn.o `test -f '../lib/ares_nowarn.c' || echo '$(srcdir)/'`../lib/ares_nowarn.c - -../lib/adig-ares_nowarn.obj: ../lib/ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -MT ../lib/adig-ares_nowarn.obj -MD -MP -MF ../lib/$(DEPDIR)/adig-ares_nowarn.Tpo -c -o ../lib/adig-ares_nowarn.obj `if test -f '../lib/ares_nowarn.c'; then $(CYGPATH_W) '../lib/ares_nowarn.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_nowarn.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/adig-ares_nowarn.Tpo ../lib/$(DEPDIR)/adig-ares_nowarn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_nowarn.c' object='../lib/adig-ares_nowarn.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -c -o ../lib/adig-ares_nowarn.obj `if test -f '../lib/ares_nowarn.c'; then $(CYGPATH_W) '../lib/ares_nowarn.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_nowarn.c'; fi` - ../lib/adig-ares_strcasecmp.o: ../lib/ares_strcasecmp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adig_CPPFLAGS) $(CPPFLAGS) $(adig_CFLAGS) $(CFLAGS) -MT ../lib/adig-ares_strcasecmp.o -MD -MP -MF ../lib/$(DEPDIR)/adig-ares_strcasecmp.Tpo -c -o ../lib/adig-ares_strcasecmp.o `test -f '../lib/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/ares_strcasecmp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/adig-ares_strcasecmp.Tpo ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po @@ -601,20 +578,6 @@ ahost-ares_getopt.obj: ares_getopt.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ahost-ares_getopt.obj `if test -f 'ares_getopt.c'; then $(CYGPATH_W) 'ares_getopt.c'; else $(CYGPATH_W) '$(srcdir)/ares_getopt.c'; fi` -../lib/ahost-ares_nowarn.o: ../lib/ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ../lib/ahost-ares_nowarn.o -MD -MP -MF ../lib/$(DEPDIR)/ahost-ares_nowarn.Tpo -c -o ../lib/ahost-ares_nowarn.o `test -f '../lib/ares_nowarn.c' || echo '$(srcdir)/'`../lib/ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/ahost-ares_nowarn.Tpo ../lib/$(DEPDIR)/ahost-ares_nowarn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_nowarn.c' object='../lib/ahost-ares_nowarn.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ../lib/ahost-ares_nowarn.o `test -f '../lib/ares_nowarn.c' || echo '$(srcdir)/'`../lib/ares_nowarn.c - -../lib/ahost-ares_nowarn.obj: ../lib/ares_nowarn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ../lib/ahost-ares_nowarn.obj -MD -MP -MF ../lib/$(DEPDIR)/ahost-ares_nowarn.Tpo -c -o ../lib/ahost-ares_nowarn.obj `if test -f '../lib/ares_nowarn.c'; then $(CYGPATH_W) '../lib/ares_nowarn.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_nowarn.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/ahost-ares_nowarn.Tpo ../lib/$(DEPDIR)/ahost-ares_nowarn.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../lib/ares_nowarn.c' object='../lib/ahost-ares_nowarn.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -c -o ../lib/ahost-ares_nowarn.obj `if test -f '../lib/ares_nowarn.c'; then $(CYGPATH_W) '../lib/ares_nowarn.c'; else $(CYGPATH_W) '$(srcdir)/../lib/ares_nowarn.c'; fi` - ../lib/ahost-ares_strcasecmp.o: ../lib/ares_strcasecmp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ahost_CPPFLAGS) $(CPPFLAGS) $(ahost_CFLAGS) $(CFLAGS) -MT ../lib/ahost-ares_strcasecmp.o -MD -MP -MF ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Tpo -c -o ../lib/ahost-ares_strcasecmp.o `test -f '../lib/ares_strcasecmp.c' || echo '$(srcdir)/'`../lib/ares_strcasecmp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Tpo ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po @@ -761,9 +724,7 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ mostlyclean-am distclean: distclean-am - -rm -f ../lib/$(DEPDIR)/adig-ares_nowarn.Po - -rm -f ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po - -rm -f ../lib/$(DEPDIR)/ahost-ares_nowarn.Po + -rm -f ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po -rm -f ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po -rm -f ./$(DEPDIR)/adig-adig.Po -rm -f ./$(DEPDIR)/adig-ares_getopt.Po @@ -814,9 +775,7 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ../lib/$(DEPDIR)/adig-ares_nowarn.Po - -rm -f ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po - -rm -f ../lib/$(DEPDIR)/ahost-ares_nowarn.Po + -rm -f ../lib/$(DEPDIR)/adig-ares_strcasecmp.Po -rm -f ../lib/$(DEPDIR)/ahost-ares_strcasecmp.Po -rm -f ./$(DEPDIR)/adig-adig.Po -rm -f ./$(DEPDIR)/adig-ares_getopt.Po diff --git a/deps/cares/src/tools/Makefile.inc b/deps/cares/src/tools/Makefile.inc index 4e3850e0e7dc5f..dd081b3005d436 100644 --- a/deps/cares/src/tools/Makefile.inc +++ b/deps/cares/src/tools/Makefile.inc @@ -1,9 +1,7 @@ # Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT SAMPLESOURCES = ares_getopt.c \ - ../lib/ares_nowarn.c \ ../lib/ares_strcasecmp.c SAMPLEHEADERS = ares_getopt.h \ - ../lib/ares_nowarn.h \ ../lib/ares_strcasecmp.h diff --git a/deps/cares/src/tools/adig.c b/deps/cares/src/tools/adig.c index 28d55ac351e5d9..17e1a34c25d4c3 100644 --- a/deps/cares/src/tools/adig.c +++ b/deps/cares/src/tools/adig.c @@ -46,7 +46,6 @@ #include "ares.h" #include "ares_dns.h" #include "ares_getopt.h" -#include "ares_nowarn.h" #ifndef HAVE_STRDUP # include "ares_strdup.h" @@ -55,334 +54,364 @@ #ifndef HAVE_STRCASECMP # include "ares_strcasecmp.h" -# define strcasecmp(p1,p2) ares_strcasecmp(p1,p2) +# 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) +# define strncasecmp(p1, p2, n) ares_strncasecmp(p1, p2, n) #endif #ifdef WATT32 -#undef WIN32 /* Redefined in MingW headers */ +# undef WIN32 /* Redefined in MingW headers */ #endif struct nv { const char *name; - int value; + int value; }; static const struct nv flags[] = { - { "usevc", ARES_FLAG_USEVC }, - { "primary", ARES_FLAG_PRIMARY }, - { "igntc", ARES_FLAG_IGNTC }, - { "norecurse", ARES_FLAG_NORECURSE }, - { "stayopen", ARES_FLAG_STAYOPEN }, - { "noaliases", ARES_FLAG_NOALIASES } + {"usevc", ARES_FLAG_USEVC }, + { "primary", ARES_FLAG_PRIMARY }, + { "igntc", ARES_FLAG_IGNTC }, + { "norecurse", ARES_FLAG_NORECURSE}, + { "stayopen", ARES_FLAG_STAYOPEN }, + { "noaliases", ARES_FLAG_NOALIASES} }; -static const int nflags = sizeof(flags) / sizeof(flags[0]); +static const int nflags = sizeof(flags) / sizeof(flags[0]); static const struct nv classes[] = { - { "IN", C_IN }, - { "CHAOS", C_CHAOS }, - { "HS", C_HS }, - { "ANY", C_ANY } + {"IN", C_IN }, + { "CHAOS", C_CHAOS}, + { "HS", C_HS }, + { "ANY", C_ANY } }; -static const int nclasses = sizeof(classes) / sizeof(classes[0]); +static const int nclasses = sizeof(classes) / sizeof(classes[0]); static const struct nv types[] = { - { "A", T_A }, - { "NS", T_NS }, - { "MD", T_MD }, - { "MF", T_MF }, - { "CNAME", T_CNAME }, - { "SOA", T_SOA }, - { "MB", T_MB }, - { "MG", T_MG }, - { "MR", T_MR }, - { "NULL", T_NULL }, - { "WKS", T_WKS }, - { "PTR", T_PTR }, - { "HINFO", T_HINFO }, - { "MINFO", T_MINFO }, - { "MX", T_MX }, - { "TXT", T_TXT }, - { "RP", T_RP }, - { "AFSDB", T_AFSDB }, - { "X25", T_X25 }, - { "ISDN", T_ISDN }, - { "RT", T_RT }, - { "NSAP", T_NSAP }, - { "NSAP_PTR", T_NSAP_PTR }, - { "SIG", T_SIG }, - { "KEY", T_KEY }, - { "PX", T_PX }, - { "GPOS", T_GPOS }, - { "AAAA", T_AAAA }, - { "LOC", T_LOC }, - { "SRV", T_SRV }, - { "AXFR", T_AXFR }, - { "MAILB", T_MAILB }, - { "MAILA", T_MAILA }, - { "NAPTR", T_NAPTR }, - { "DS", T_DS }, - { "SSHFP", T_SSHFP }, - { "RRSIG", T_RRSIG }, - { "NSEC", T_NSEC }, - { "DNSKEY", T_DNSKEY }, - { "CAA", T_CAA }, - { "URI", T_URI }, - { "ANY", T_ANY } + {"A", T_A }, + { "NS", T_NS }, + { "MD", T_MD }, + { "MF", T_MF }, + { "CNAME", T_CNAME }, + { "SOA", T_SOA }, + { "MB", T_MB }, + { "MG", T_MG }, + { "MR", T_MR }, + { "NULL", T_NULL }, + { "WKS", T_WKS }, + { "PTR", T_PTR }, + { "HINFO", T_HINFO }, + { "MINFO", T_MINFO }, + { "MX", T_MX }, + { "TXT", T_TXT }, + { "RP", T_RP }, + { "AFSDB", T_AFSDB }, + { "X25", T_X25 }, + { "ISDN", T_ISDN }, + { "RT", T_RT }, + { "NSAP", T_NSAP }, + { "NSAP_PTR", T_NSAP_PTR}, + { "SIG", T_SIG }, + { "KEY", T_KEY }, + { "PX", T_PX }, + { "GPOS", T_GPOS }, + { "AAAA", T_AAAA }, + { "LOC", T_LOC }, + { "SRV", T_SRV }, + { "AXFR", T_AXFR }, + { "MAILB", T_MAILB }, + { "MAILA", T_MAILA }, + { "NAPTR", T_NAPTR }, + { "DS", T_DS }, + { "SSHFP", T_SSHFP }, + { "RRSIG", T_RRSIG }, + { "NSEC", T_NSEC }, + { "DNSKEY", T_DNSKEY }, + { "CAA", T_CAA }, + { "URI", T_URI }, + { "ANY", T_ANY } }; -static const int ntypes = sizeof(types) / sizeof(types[0]); +static const int ntypes = sizeof(types) / sizeof(types[0]); static const char *opcodes[] = { - "QUERY", "IQUERY", "STATUS", "(reserved)", "NOTIFY", - "(unknown)", "(unknown)", "(unknown)", "(unknown)", - "UPDATEA", "UPDATED", "UPDATEDA", "UPDATEM", "UPDATEMA", - "ZONEINIT", "ZONEREF" + "QUERY", "IQUERY", "STATUS", "(reserved)", "NOTIFY", "(unknown)", + "(unknown)", "(unknown)", "(unknown)", "UPDATEA", "UPDATED", "UPDATEDA", + "UPDATEM", "UPDATEMA", "ZONEINIT", "ZONEREF" }; static const char *rcodes[] = { - "NOERROR", "FORMERR", "SERVFAIL", "NXDOMAIN", "NOTIMP", "REFUSED", - "(unknown)", "(unknown)", "(unknown)", "(unknown)", "(unknown)", - "(unknown)", "(unknown)", "(unknown)", "(unknown)", "NOCHANGE" + "NOERROR", "FORMERR", "SERVFAIL", "NXDOMAIN", "NOTIMP", "REFUSED", + "(unknown)", "(unknown)", "(unknown)", "(unknown)", "(unknown)", "(unknown)", + "(unknown)", "(unknown)", "(unknown)", "NOCHANGE" }; -static void callback(void *arg, int status, int timeouts, - unsigned char *abuf, int alen); +static void callback(void *arg, int status, int timeouts, unsigned char *abuf, + int alen); static const unsigned char *display_question(const unsigned char *aptr, const unsigned char *abuf, - int alen); + int alen); static const unsigned char *display_rr(const unsigned char *aptr, const unsigned char *abuf, int alen); -static int convert_query (char **name, int use_bitstring); -static const char *type_name(int type); -static const char *class_name(int dnsclass); -static void usage(void); -static void destroy_addr_list(struct ares_addr_node *head); -static void append_addr_list(struct ares_addr_node **head, - struct ares_addr_node *node); -static void print_help_info_adig(void); +static int convert_query(char **name, int use_bitstring); +static const char *type_name(int type); +static const char *class_name(int dnsclass); +static void usage(void); +static void destroy_addr_list(struct ares_addr_node *head); +static void append_addr_list(struct ares_addr_node **head, + struct ares_addr_node *node); +static void print_help_info_adig(void); + +static size_t ares_strcpy(char *dest, const char *src, size_t dest_size) +{ + size_t len = 0; + + if (dest == NULL || dest_size == 0) { + return 0; + } + + if (src != NULL) { + len = strlen(src); + } + + if (len >= dest_size) { + len = dest_size - 1; + } + + if (len) { + memcpy(dest, src, len); + } + + dest[len] = 0; + return len; +} int main(int argc, char **argv) { - ares_channel channel; - int c, i, optmask = ARES_OPT_FLAGS, dnsclass = C_IN, type = T_A; - int status, nfds, count; - int use_ptr_helper = 0; - struct ares_options options; - struct hostent *hostent; - fd_set read_fds, write_fds; - struct timeval *tvp, tv; - struct ares_addr_node *srvr, *servers = NULL; + ares_channel channel; + int c; + int i; + int optmask = ARES_OPT_FLAGS; + int dnsclass = C_IN; + int type = T_A; + int status; + int nfds; + int count; + int use_ptr_helper = 0; + struct ares_options options; + struct hostent *hostent; + fd_set read_fds; + fd_set write_fds; + struct timeval *tvp; + struct timeval tv; + struct ares_addr_node *srvr; + struct ares_addr_node *servers = NULL; #ifdef USE_WINSOCK - WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK); + WORD wVersionRequested = MAKEWORD(USE_WINSOCK, USE_WINSOCK); WSADATA wsaData; WSAStartup(wVersionRequested, &wsaData); #endif status = ares_library_init(ARES_LIB_INIT_ALL); - if (status != ARES_SUCCESS) - { - fprintf(stderr, "ares_library_init: %s\n", ares_strerror(status)); - return 1; - } + if (status != ARES_SUCCESS) { + fprintf(stderr, "ares_library_init: %s\n", ares_strerror(status)); + return 1; + } - options.flags = ARES_FLAG_NOCHECKRESP; - options.servers = NULL; + options.flags = ARES_FLAG_NOCHECKRESP; + options.servers = NULL; options.nservers = 0; - while ((c = ares_getopt(argc, argv, "dh?f:s:c:t:T:U:x")) != -1) - { - switch (c) - { - case 'd': + while ((c = ares_getopt(argc, argv, "dh?f:s:c:t:T:U:x")) != -1) { + switch (c) { + case 'd': #ifdef WATT32 - dbug_init(); + dbug_init(); #endif - break; - case 'h': - print_help_info_adig(); - break; - case '?': - print_help_info_adig(); - break; - case 'f': - /* Add a flag. */ - for (i = 0; i < nflags; i++) - { - if (strcmp(flags[i].name, optarg) == 0) - break; - } - if (i < nflags) - options.flags |= flags[i].value; - else - usage(); - break; - - case 's': - /* User-specified name servers override default ones. */ - srvr = malloc(sizeof(struct ares_addr_node)); - if (!srvr) - { - fprintf(stderr, "Out of memory!\n"); + break; + case 'h': + print_help_info_adig(); + break; + case '?': + print_help_info_adig(); + break; + case 'f': + /* Add a flag. */ + for (i = 0; i < nflags; i++) { + if (strcmp(flags[i].name, optarg) == 0) { + break; + } + } + if (i < nflags) { + options.flags |= flags[i].value; + } else { + usage(); + } + break; + + case 's': + /* User-specified name servers override default ones. */ + srvr = malloc(sizeof(struct ares_addr_node)); + if (!srvr) { + fprintf(stderr, "Out of memory!\n"); + destroy_addr_list(servers); + return 1; + } + append_addr_list(&servers, srvr); + if (ares_inet_pton(AF_INET, optarg, &srvr->addr.addr4) > 0) { + srvr->family = AF_INET; + } else if (ares_inet_pton(AF_INET6, optarg, &srvr->addr.addr6) > 0) { + srvr->family = AF_INET6; + } else { + hostent = gethostbyname(optarg); + if (!hostent) { + fprintf(stderr, "adig: server %s not found.\n", optarg); + destroy_addr_list(servers); + return 1; + } + switch (hostent->h_addrtype) { + case AF_INET: + srvr->family = AF_INET; + memcpy(&srvr->addr.addr4, hostent->h_addr, + sizeof(srvr->addr.addr4)); + break; + case AF_INET6: + srvr->family = AF_INET6; + memcpy(&srvr->addr.addr6, hostent->h_addr, + sizeof(srvr->addr.addr6)); + break; + default: + fprintf(stderr, "adig: server %s unsupported address family.\n", + optarg); destroy_addr_list(servers); return 1; - } - append_addr_list(&servers, srvr); - if (ares_inet_pton(AF_INET, optarg, &srvr->addr.addr4) > 0) - srvr->family = AF_INET; - else if (ares_inet_pton(AF_INET6, optarg, &srvr->addr.addr6) > 0) - srvr->family = AF_INET6; - else - { - hostent = gethostbyname(optarg); - if (!hostent) - { - fprintf(stderr, "adig: server %s not found.\n", optarg); - destroy_addr_list(servers); - return 1; - } - switch (hostent->h_addrtype) - { - case AF_INET: - srvr->family = AF_INET; - memcpy(&srvr->addr.addr4, hostent->h_addr, - sizeof(srvr->addr.addr4)); - break; - case AF_INET6: - srvr->family = AF_INET6; - memcpy(&srvr->addr.addr6, hostent->h_addr, - sizeof(srvr->addr.addr6)); - break; - default: - fprintf(stderr, - "adig: server %s unsupported address family.\n", optarg); - destroy_addr_list(servers); - return 1; - } - } - /* Notice that calling ares_init_options() without servers in the - * options struct and with ARES_OPT_SERVERS set simultaneously in - * the options mask, results in an initialization with no servers. - * When alternative name servers have been specified these are set - * later calling ares_set_servers() overriding any existing server - * configuration. To prevent initial configuration with default - * servers that will be discarded later, ARES_OPT_SERVERS is set. - * If this flag is not set here the result shall be the same but - * ares_init_options() will do needless work. */ - optmask |= ARES_OPT_SERVERS; - break; - - case 'c': - /* Set the query class. */ - for (i = 0; i < nclasses; i++) - { - if (strcasecmp(classes[i].name, optarg) == 0) - break; - } - if (i < nclasses) - dnsclass = classes[i].value; - else - usage(); - break; - - case 't': - /* Set the query type. */ - for (i = 0; i < ntypes; i++) - { - if (strcasecmp(types[i].name, optarg) == 0) - break; - } - if (i < ntypes) - type = types[i].value; - else - usage(); - break; - - case 'T': - /* Set the TCP port number. */ - if (!ISDIGIT(*optarg)) - usage(); - options.tcp_port = (unsigned short)strtol(optarg, NULL, 0); - options.flags |= ARES_FLAG_USEVC; - optmask |= ARES_OPT_TCP_PORT; - break; - - case 'U': - /* Set the UDP port number. */ - if (!ISDIGIT(*optarg)) - usage(); - options.udp_port = (unsigned short)strtol(optarg, NULL, 0); - optmask |= ARES_OPT_UDP_PORT; - break; - - case 'x': - use_ptr_helper++; - break; + } } + /* Notice that calling ares_init_options() without servers in the + * options struct and with ARES_OPT_SERVERS set simultaneously in + * the options mask, results in an initialization with no servers. + * When alternative name servers have been specified these are set + * later calling ares_set_servers() overriding any existing server + * configuration. To prevent initial configuration with default + * servers that will be discarded later, ARES_OPT_SERVERS is set. + * If this flag is not set here the result shall be the same but + * ares_init_options() will do needless work. */ + optmask |= ARES_OPT_SERVERS; + break; + + case 'c': + /* Set the query class. */ + for (i = 0; i < nclasses; i++) { + if (strcasecmp(classes[i].name, optarg) == 0) { + break; + } + } + if (i < nclasses) { + dnsclass = classes[i].value; + } else { + usage(); + } + break; + + case 't': + /* Set the query type. */ + for (i = 0; i < ntypes; i++) { + if (strcasecmp(types[i].name, optarg) == 0) { + break; + } + } + if (i < ntypes) { + type = types[i].value; + } else { + usage(); + } + break; + + case 'T': + /* Set the TCP port number. */ + if (!ISDIGIT(*optarg)) { + usage(); + } + options.tcp_port = (unsigned short)strtol(optarg, NULL, 0); + options.flags |= ARES_FLAG_USEVC; + optmask |= ARES_OPT_TCP_PORT; + break; + + case 'U': + /* Set the UDP port number. */ + if (!ISDIGIT(*optarg)) { + usage(); + } + options.udp_port = (unsigned short)strtol(optarg, NULL, 0); + optmask |= ARES_OPT_UDP_PORT; + break; + + case 'x': + use_ptr_helper++; + break; } + } argc -= optind; argv += optind; - if (argc == 0) + if (argc == 0) { usage(); + } status = ares_init_options(&channel, &options, optmask); - if (status != ARES_SUCCESS) - { - fprintf(stderr, "ares_init_options: %s\n", - ares_strerror(status)); - return 1; - } + if (status != ARES_SUCCESS) { + fprintf(stderr, "ares_init_options: %s\n", ares_strerror(status)); + return 1; + } - if(servers) - { - status = ares_set_servers(channel, servers); - destroy_addr_list(servers); - if (status != ARES_SUCCESS) - { - fprintf(stderr, "ares_init_options: %s\n", - ares_strerror(status)); - return 1; - } + if (servers) { + status = ares_set_servers(channel, servers); + destroy_addr_list(servers); + if (status != ARES_SUCCESS) { + fprintf(stderr, "ares_init_options: %s\n", ares_strerror(status)); + return 1; } + } /* Initiate the queries, one per command-line argument. If there is * only one query to do, supply NULL as the callback argument; * otherwise, supply the query name as an argument so we can * distinguish responses for the user when printing them out. */ - for (i = 1; *argv; i++, argv++) - { - char *query = *argv; - - if (type == T_PTR && dnsclass == C_IN && use_ptr_helper) - if (!convert_query (&query, use_ptr_helper >= 2)) - continue; + for (i = 1; *argv; i++, argv++) { + char *query = *argv; - ares_query(channel, query, dnsclass, type, callback, i < argc-1 ? (void*)query : NULL); + if (type == T_PTR && dnsclass == C_IN && use_ptr_helper) { + if (!convert_query(&query, use_ptr_helper >= 2)) { + continue; + } } + ares_query(channel, query, dnsclass, type, callback, + i < argc - 1 ? (void *)query : NULL); + } + /* Wait for all queries to complete. */ - for (;;) - { - FD_ZERO(&read_fds); - FD_ZERO(&write_fds); - nfds = ares_fds(channel, &read_fds, &write_fds); - if (nfds == 0) - break; - tvp = ares_timeout(channel, NULL, &tv); - count = select(nfds, &read_fds, &write_fds, NULL, tvp); - if (count < 0 && (status = SOCKERRNO) != EINVAL) - { - printf("select fail: %d", status); - return 1; - } - ares_process(channel, &read_fds, &write_fds); + for (;;) { + FD_ZERO(&read_fds); + FD_ZERO(&write_fds); + nfds = ares_fds(channel, &read_fds, &write_fds); + if (nfds == 0) { + break; + } + tvp = ares_timeout(channel, NULL, &tv); + if (tvp == NULL) { + break; } + count = select(nfds, &read_fds, &write_fds, NULL, tvp); + if (count < 0 && (status = SOCKERRNO) != EINVAL) { + printf("select fail: %d", status); + return 1; + } + ares_process(channel, &read_fds, &write_fds); + } ares_destroy(channel); @@ -395,43 +424,56 @@ int main(int argc, char **argv) return 0; } -static void callback(void *arg, int status, int timeouts, - unsigned char *abuf, int alen) +static void callback(void *arg, int status, int timeouts, unsigned char *abuf, + int alen) { - char *name = (char *) arg; - int id, qr, opcode, aa, tc, rd, ra, rcode; - unsigned int qdcount, ancount, nscount, arcount, i; + char *name = (char *)arg; + int id; + int qr; + int opcode; + int aa; + int tc; + int rd; + int ra; + int rcode; + unsigned int qdcount; + unsigned int ancount; + unsigned int nscount; + unsigned int arcount; + unsigned int i; const unsigned char *aptr; - (void) timeouts; + (void)timeouts; /* Display the query name if given. */ - if (name) + if (name) { printf("Answer for query %s:\n", name); + } /* Display an error message if there was an error, but only stop if * we actually didn't get an answer buffer. */ - if (status != ARES_SUCCESS) - { - printf("%s\n", ares_strerror(status)); - if (!abuf) - return; + if (status != ARES_SUCCESS) { + printf("%s\n", ares_strerror(status)); + if (!abuf) { + return; } + } /* Won't happen, but check anyway, for safety. */ - if (alen < HFIXEDSZ) + if (alen < HFIXEDSZ) { return; + } /* Parse the answer header. */ - id = DNS_HEADER_QID(abuf); - qr = DNS_HEADER_QR(abuf); - opcode = DNS_HEADER_OPCODE(abuf); - aa = DNS_HEADER_AA(abuf); - tc = DNS_HEADER_TC(abuf); - rd = DNS_HEADER_RD(abuf); - ra = DNS_HEADER_RA(abuf); - rcode = DNS_HEADER_RCODE(abuf); + id = DNS_HEADER_QID(abuf); + qr = DNS_HEADER_QR(abuf); + opcode = DNS_HEADER_OPCODE(abuf); + aa = DNS_HEADER_AA(abuf); + tc = DNS_HEADER_TC(abuf); + rd = DNS_HEADER_RD(abuf); + ra = DNS_HEADER_RA(abuf); + rcode = DNS_HEADER_RCODE(abuf); qdcount = DNS_HEADER_QDCOUNT(abuf); ancount = DNS_HEADER_ANCOUNT(abuf); nscount = DNS_HEADER_NSCOUNT(abuf); @@ -439,87 +481,86 @@ static void callback(void *arg, int status, int timeouts, /* Display the answer header. */ printf("id: %d\n", id); - printf("flags: %s%s%s%s%s\n", - qr ? "qr " : "", - aa ? "aa " : "", - tc ? "tc " : "", - rd ? "rd " : "", - ra ? "ra " : ""); + printf("flags: %s%s%s%s%s\n", qr ? "qr " : "", aa ? "aa " : "", + tc ? "tc " : "", rd ? "rd " : "", ra ? "ra " : ""); printf("opcode: %s\n", opcodes[opcode]); printf("rcode: %s\n", rcodes[rcode]); /* Display the questions. */ printf("Questions:\n"); aptr = abuf + HFIXEDSZ; - for (i = 0; i < qdcount; i++) - { - aptr = display_question(aptr, abuf, alen); - if (aptr == NULL) - return; + for (i = 0; i < qdcount; i++) { + aptr = display_question(aptr, abuf, alen); + if (aptr == NULL) { + return; } + } /* Display the answers. */ printf("Answers:\n"); - for (i = 0; i < ancount; i++) - { - aptr = display_rr(aptr, abuf, alen); - if (aptr == NULL) - return; + for (i = 0; i < ancount; i++) { + aptr = display_rr(aptr, abuf, alen); + if (aptr == NULL) { + return; } + } /* Display the NS records. */ printf("NS records:\n"); - for (i = 0; i < nscount; i++) - { - aptr = display_rr(aptr, abuf, alen); - if (aptr == NULL) - return; + for (i = 0; i < nscount; i++) { + aptr = display_rr(aptr, abuf, alen); + if (aptr == NULL) { + return; } + } /* Display the additional records. */ printf("Additional records:\n"); - for (i = 0; i < arcount; i++) - { - aptr = display_rr(aptr, abuf, alen); - if (aptr == NULL) - return; + for (i = 0; i < arcount; i++) { + aptr = display_rr(aptr, abuf, alen); + if (aptr == NULL) { + return; } + } } static const unsigned char *display_question(const unsigned char *aptr, const unsigned char *abuf, - int alen) + int alen) { char *name; - int type, dnsclass, status; - long len; + int type; + int dnsclass; + int status; + long len; /* Parse the question name. */ status = ares_expand_name(aptr, abuf, alen, &name, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } aptr += len; /* Make sure there's enough data after the name for the fixed part * of the question. */ - if (aptr + QFIXEDSZ > abuf + alen) - { - ares_free_string(name); - return NULL; - } + if (aptr + QFIXEDSZ > abuf + alen) { + ares_free_string(name); + return NULL; + } /* Parse the question type and class. */ - type = DNS_QUESTION_TYPE(aptr); - dnsclass = DNS_QUESTION_CLASS(aptr); - aptr += QFIXEDSZ; + type = DNS_QUESTION_TYPE(aptr); + dnsclass = DNS_QUESTION_CLASS(aptr); + aptr += QFIXEDSZ; /* Display the question, in a format sort of similar to how we will * display RRs. */ printf("\t%-15s.\t", name); - if (dnsclass != C_IN) + if (dnsclass != C_IN) { printf("\t%s", class_name(dnsclass)); + } printf("\t%s\n", type_name(type)); ares_free_string(name); return aptr; @@ -529,53 +570,58 @@ static const unsigned char *display_rr(const unsigned char *aptr, const unsigned char *abuf, int alen) { const unsigned char *p; - int type, dnsclass, ttl, dlen, status, i; - long len; - int vlen; - char addr[46]; + int type; + int dnsclass; + unsigned int ttl; + int dlen; + int status; + int i; + long len; + int vlen; + char addr[46]; + union { - unsigned char * as_uchar; - char * as_char; + unsigned char *as_uchar; + char *as_char; } name; /* Parse the RR name. */ status = ares_expand_name(aptr, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } aptr += len; /* Make sure there is enough data after the RR name for the fixed * part of the RR. */ - if (aptr + RRFIXEDSZ > abuf + alen) - { - ares_free_string(name.as_char); - return NULL; - } + if (aptr + RRFIXEDSZ > abuf + alen) { + ares_free_string(name.as_char); + return NULL; + } /* Parse the fixed part of the RR, and advance to the RR data * field. */ - type = DNS_RR_TYPE(aptr); - dnsclass = DNS_RR_CLASS(aptr); - ttl = DNS_RR_TTL(aptr); - dlen = DNS_RR_LEN(aptr); - aptr += RRFIXEDSZ; - if (aptr + dlen > abuf + alen) - { - ares_free_string(name.as_char); - return NULL; - } + type = DNS_RR_TYPE(aptr); + dnsclass = DNS_RR_CLASS(aptr); + ttl = DNS_RR_TTL(aptr); + dlen = DNS_RR_LEN(aptr); + aptr += RRFIXEDSZ; + if (aptr + dlen > abuf + alen) { + ares_free_string(name.as_char); + return NULL; + } /* Display the RR name, class, and type. */ printf("\t%-15s.\t%d", name.as_char, ttl); - if (dnsclass != C_IN) + if (dnsclass != C_IN) { printf("\t%s", class_name(dnsclass)); + } printf("\t%s", type_name(type)); ares_free_string(name.as_char); /* Display the RR data. Don't touch aptr. */ - switch (type) - { + switch (type) { case T_CNAME: case T_MB: case T_MD: @@ -586,46 +632,53 @@ static const unsigned char *display_rr(const unsigned char *aptr, case T_PTR: /* For these types, the RR data is just a domain name. */ status = ares_expand_name(aptr, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s.", name.as_char); ares_free_string(name.as_char); break; case T_HINFO: /* The RR data is two length-counted character strings. */ - p = aptr; + p = aptr; len = *p; - if (p + len + 1 > aptr + dlen) + if (p + len + 1 > aptr + dlen) { return NULL; + } status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s", name.as_char); ares_free_string(name.as_char); - p += len; - len = *p; - if (p + len + 1 > aptr + dlen) + p += len; + len = *p; + if (p + len + 1 > aptr + dlen) { return NULL; + } status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s", name.as_char); ares_free_string(name.as_char); break; case T_MINFO: /* The RR data is two domain names. */ - p = aptr; + p = aptr; status = ares_expand_name(p, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s.", name.as_char); ares_free_string(name.as_char); - p += len; - status = ares_expand_name(p, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + p += len; + status = ares_expand_name(p, abuf, alen, &name.as_char, &len); + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s.", name.as_char); ares_free_string(name.as_char); break; @@ -634,12 +687,14 @@ static const unsigned char *display_rr(const unsigned char *aptr, /* The RR data is two bytes giving a preference ordering, and * then a domain name. */ - if (dlen < 2) + if (dlen < 2) { return NULL; + } printf("\t%d", (int)DNS__16BIT(aptr)); status = ares_expand_name(aptr + 2, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s.", name.as_char); ares_free_string(name.as_char); break; @@ -648,43 +703,45 @@ static const unsigned char *display_rr(const unsigned char *aptr, /* The RR data is two domain names and then five four-byte * numbers giving the serial number and some timeouts. */ - p = aptr; + p = aptr; status = ares_expand_name(p, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s.\n", name.as_char); ares_free_string(name.as_char); - p += len; - status = ares_expand_name(p, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + p += len; + status = ares_expand_name(p, abuf, alen, &name.as_char, &len); + if (status != ARES_SUCCESS) { return NULL; + } printf("\t\t\t\t\t\t%s.\n", name.as_char); ares_free_string(name.as_char); p += len; - if (p + 20 > aptr + dlen) + if (p + 20 > aptr + dlen) { return NULL; - printf("\t\t\t\t\t\t( %u %u %u %u %u )", - DNS__32BIT(p), DNS__32BIT(p+4), - DNS__32BIT(p+8), DNS__32BIT(p+12), - DNS__32BIT(p+16)); + } + printf("\t\t\t\t\t\t( %u %u %u %u %u )", DNS__32BIT(p), DNS__32BIT(p + 4), + DNS__32BIT(p + 8), DNS__32BIT(p + 12), DNS__32BIT(p + 16)); break; case T_TXT: /* The RR data is one or more length-counted character * strings. */ p = aptr; - while (p < aptr + dlen) - { - len = *p; - if (p + len + 1 > aptr + dlen) - return NULL; - status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len); - if (status != ARES_SUCCESS) - return NULL; - printf("\t%s", name.as_char); - ares_free_string(name.as_char); - p += len; + while (p < aptr + dlen) { + len = *p; + if (p + len + 1 > aptr + dlen) { + return NULL; } + status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len); + if (status != ARES_SUCCESS) { + return NULL; + } + printf("\t%s", name.as_char); + ares_free_string(name.as_char); + p += len; + } break; case T_CAA: @@ -703,14 +760,16 @@ static const unsigned char *display_rr(const unsigned char *aptr, - "iodef", or - "issuewild" */ status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf(" %s", name.as_char); ares_free_string(name.as_char); p += len; - if (p + vlen > abuf + alen) + if (p + vlen > abuf + alen) { return NULL; + } /* A sequence of octets representing the Property Value */ printf(" %.*s", vlen, p); @@ -718,16 +777,18 @@ static const unsigned char *display_rr(const unsigned char *aptr, case T_A: /* The RR data is a four-byte Internet address. */ - if (dlen != 4) + if (dlen != 4) { return NULL; - printf("\t%s", ares_inet_ntop(AF_INET,aptr,addr,sizeof(addr))); + } + printf("\t%s", ares_inet_ntop(AF_INET, aptr, addr, sizeof(addr))); break; case T_AAAA: /* The RR data is a 16-byte IPv6 address. */ - if (dlen != 16) + if (dlen != 16) { return NULL; - printf("\t%s", ares_inet_ntop(AF_INET6,aptr,addr,sizeof(addr))); + } + printf("\t%s", ares_inet_ntop(AF_INET6, aptr, addr, sizeof(addr))); break; case T_WKS: @@ -744,8 +805,9 @@ static const unsigned char *display_rr(const unsigned char *aptr, printf(" %d", (int)DNS__16BIT(aptr + 4)); status = ares_expand_name(aptr + 6, abuf, alen, &name.as_char, &len); - if (status != ARES_SUCCESS) + if (status != ARES_SUCCESS) { return NULL; + } printf("\t%s.", name.as_char); ares_free_string(name.as_char); break; @@ -756,42 +818,47 @@ static const unsigned char *display_rr(const unsigned char *aptr, */ printf("\t%d ", (int)DNS__16BIT(aptr)); - printf("%d \t\t", (int)DNS__16BIT(aptr+2)); - p = aptr +4; - for (i=0; i > 24UL) & 0xFFUL; - unsigned long a2 = (laddr >> 16UL) & 0xFFUL; - unsigned long a3 = (laddr >> 8UL) & 0xFFUL; - unsigned long a4 = laddr & 0xFFUL; - - snprintf(new_name, sizeof(new_name), "%lu.%lu.%lu.%lu.in-addr.arpa", a4, a3, a2, a1); - *name_p = new_name; - return (1); - } - - if (ares_inet_pton(AF_INET6, *name_p, &addr.addr6) == 1) - { - char *c = new_name; - const unsigned char *ip = (const unsigned char*) &addr.addr6; - int max_i = (int)sizeof(addr.addr6) - 1; - int i, hi, lo; - - /* Use the more compact RFC-2673 notation? - * Currently doesn't work or unsupported by the DNS-servers I've tested against. - */ - if (use_bitstring) - { - *c++ = '\\'; - *c++ = '['; - *c++ = 'x'; - for (i = max_i; i >= 0; i--) - { - hi = ip[i] >> 4; - lo = ip[i] & 15; - *c++ = hex_chars [lo]; - *c++ = hex_chars [hi]; - } - strcpy (c, "].IP6.ARPA"); - } - else - { - for (i = max_i; i >= 0; i--) - { - hi = ip[i] >> 4; - lo = ip[i] & 15; - *c++ = hex_chars [lo]; - *c++ = '.'; - *c++ = hex_chars [hi]; - *c++ = '.'; - } - strcpy (c, "IP6.ARPA"); - } - *name_p = new_name; - return (1); + if (ares_inet_pton(AF_INET, *name_p, &addr.addr4) == 1) { + unsigned long laddr = ntohl(addr.addr4.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; + + snprintf(new_name, sizeof(new_name), "%lu.%lu.%lu.%lu.in-addr.arpa", a4, a3, + a2, a1); + *name_p = new_name; + return (1); + } + + if (ares_inet_pton(AF_INET6, *name_p, &addr.addr6) == 1) { + char *c = new_name; + const unsigned char *ip = (const unsigned char *)&addr.addr6; + int max_i = (int)sizeof(addr.addr6) - 1; + int i; + int hi; + int lo; + + /* Use the more compact RFC-2673 notation? + * Currently doesn't work or unsupported by the DNS-servers I've tested + * against. + */ + if (use_bitstring) { + *c++ = '\\'; + *c++ = '['; + *c++ = 'x'; + for (i = max_i; i >= 0; i--) { + hi = ip[i] >> 4; + lo = ip[i] & 15; + *c++ = hex_chars[lo]; + *c++ = hex_chars[hi]; + } + ares_strcpy(c, "].IP6.ARPA", sizeof(new_name) - strlen(c)); + } else { + for (i = max_i; i >= 0; i--) { + hi = ip[i] >> 4; + lo = ip[i] & 15; + *c++ = hex_chars[lo]; + *c++ = '.'; + *c++ = hex_chars[hi]; + *c++ = '.'; + } + ares_strcpy(c, "IP6.ARPA", sizeof(new_name) - strlen(c)); } + *name_p = new_name; + return (1); + } printf("Address %s was not legal for this query.\n", *name_p); return (0); } @@ -915,11 +981,11 @@ static const char *type_name(int type) { int i; - for (i = 0; i < ntypes; i++) - { - if (types[i].value == type) - return types[i].name; + for (i = 0; i < ntypes; i++) { + if (types[i].value == type) { + return types[i].name; } + } return "(unknown)"; } @@ -927,73 +993,82 @@ static const char *class_name(int dnsclass) { int i; - for (i = 0; i < nclasses; i++) - { - if (classes[i].value == dnsclass) - return classes[i].name; + for (i = 0; i < nclasses; i++) { + if (classes[i].value == dnsclass) { + return classes[i].name; } + } return "(unknown)"; } static void usage(void) { fprintf(stderr, "usage: adig [-h] [-d] [-f flag] [-s server] [-c class] " - "[-t type] [-T|U port] [-x|-xx] name ...\n"); + "[-t type] [-T|U port] [-x|-xx] name ...\n"); exit(1); } static void destroy_addr_list(struct ares_addr_node *head) { - while(head) - { - struct ares_addr_node *detached = head; - head = head->next; - free(detached); - } + while (head) { + struct ares_addr_node *detached = head; + head = head->next; + free(detached); + } } static void append_addr_list(struct ares_addr_node **head, - struct ares_addr_node *node) + struct ares_addr_node *node) { struct ares_addr_node *last; node->next = NULL; - if(*head) - { - last = *head; - while(last->next) - last = last->next; - last->next = node; + if (*head) { + last = *head; + while (last->next) { + last = last->next; } - else + last->next = node; + } else { *head = node; + } } - /* Information from the man page. Formatting taken from man -h */ -static void print_help_info_adig(void) { - printf("adig, version %s\n\n", ARES_VERSION_STR); - printf("usage: adig [-h] [-d] [-f flag] [[-s server] ...] [-T|U port] [-c class] [-t type] [-x|-xx] name ...\n\n" +static void print_help_info_adig(void) +{ + printf("adig, version %s\n\n", ARES_VERSION_STR); + printf( + "usage: adig [-h] [-d] [-f flag] [[-s server] ...] [-T|U port] [-c class] " + "[-t type] [-x|-xx] name ...\n\n" " h : Display this help and exit.\n" " d : Print some extra debugging output.\n\n" " f flag : Add a behavior control flag. Possible values are\n" - " igntc - ignore to query in TCP to get truncated UDP answer,\n" - " noaliases - don't honor the HOSTALIASES environment variable,\n" + " igntc - ignore to query in TCP to get truncated UDP " + "answer,\n" + " noaliases - don't honor the HOSTALIASES environment " + "variable,\n" " norecurse - don't query upstream servers recursively,\n" " primary - use the first server,\n" " stayopen - don't close the communication sockets, and\n" " usevc - use TCP only.\n" - " s server : Connect to the specified DNS server, instead of the system's default one(s).\n" - " Servers are tried in round-robin, if the previous one failed.\n" + " s server : Connect to the specified DNS server, instead of the system's " + "default one(s).\n" + " Servers are tried in round-robin, if the previous one " + "failed.\n" " T port : Connect to the specified TCP port of DNS server.\n" " U port : Connect to the specified UDP port of DNS server.\n" - " c class : Set the query class. Possible values for class are ANY, CHAOS, HS and IN (default)\n" + " c class : Set the query class. Possible values for class are ANY, " + "CHAOS, HS and IN (default)\n" " t type : Query records of the specified type.\n" - " Possible values for type are A (default), AAAA, AFSDB, ANY, AXFR,\n" - " CNAME, GPOS, HINFO, ISDN, KEY, LOC, MAILA, MAILB, MB, MD, MF, MG,\n" - " MINFO, MR, MX, NAPTR, NS, NSAP, NSAP_PTR, NULL, PTR, PX, RP, RT,\n" + " Possible values for type are A (default), AAAA, AFSDB, ANY, " + "AXFR,\n" + " CNAME, GPOS, HINFO, ISDN, KEY, LOC, MAILA, MAILB, MB, MD, " + "MF, MG,\n" + " MINFO, MR, MX, NAPTR, NS, NSAP, NSAP_PTR, NULL, PTR, PX, " + "RP, RT,\n" " SIG, SOA, SRV, TXT, URI, WKS and X25.\n\n" " -x : For a '-t PTR a.b.c.d' lookup, query for 'd.c.b.a.in-addr.arpa.'\n" " -xx : As above, but for IPv6, compact the format into a bitstring like\n" " '[xabcdef00000000000000000000000000].IP6.ARPA.'\n"); - exit(0); + exit(0); } diff --git a/deps/cares/src/tools/ahost.c b/deps/cares/src/tools/ahost.c index f8a39eb4630e55..c67c53b1ec13c3 100644 --- a/deps/cares/src/tools/ahost.c +++ b/deps/cares/src/tools/ahost.c @@ -28,20 +28,19 @@ #include "ares_setup.h" #if !defined(WIN32) || defined(WATT32) -#include -#include -#include +# include +# include +# include #endif #ifdef HAVE_STRINGS_H -#include +# include #endif #include "ares.h" #include "ares_dns.h" #include "ares_getopt.h" #include "ares_ipv6.h" -#include "ares_nowarn.h" #ifndef HAVE_STRDUP # include "ares_strdup.h" @@ -50,31 +49,36 @@ #ifndef HAVE_STRCASECMP # include "ares_strcasecmp.h" -# define strcasecmp(p1,p2) ares_strcasecmp(p1,p2) +# 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) +# define strncasecmp(p1, p2, n) ares_strncasecmp(p1, p2, n) #endif static void callback(void *arg, int status, int timeouts, struct hostent *host); static void usage(void); static void print_help_info_ahost(void); -int main(int argc, char **argv) +int main(int argc, char **argv) { - struct ares_options options; - int optmask = 0; - ares_channel channel; - int status, nfds, c, addr_family = AF_INET; - fd_set read_fds, write_fds; - struct timeval *tvp, tv; - struct in_addr addr4; + struct ares_options options; + int optmask = 0; + ares_channel channel; + int status; + int nfds; + int c; + int addr_family = AF_INET; + fd_set read_fds; + fd_set write_fds; + struct timeval *tvp; + struct timeval tv; + struct in_addr addr4; struct ares_in6_addr addr6; #ifdef USE_WINSOCK - WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK); + WORD wVersionRequested = MAKEWORD(USE_WINSOCK, USE_WINSOCK); WSADATA wsaData; WSAStartup(wVersionRequested, &wsaData); #endif @@ -82,96 +86,92 @@ int main(int argc, char **argv) memset(&options, 0, sizeof(options)); status = ares_library_init(ARES_LIB_INIT_ALL); - if (status != ARES_SUCCESS) - { - fprintf(stderr, "ares_library_init: %s\n", ares_strerror(status)); - return 1; - } - - while ((c = ares_getopt(argc,argv,"dt:h?s:")) != -1) - { - switch (c) - { - case 'd': + if (status != ARES_SUCCESS) { + fprintf(stderr, "ares_library_init: %s\n", ares_strerror(status)); + return 1; + } + + while ((c = ares_getopt(argc, argv, "dt:h?s:")) != -1) { + switch (c) { + case 'd': #ifdef WATT32 - dbug_init(); + dbug_init(); #endif - break; - case 's': - optmask |= ARES_OPT_DOMAINS; - options.ndomains++; - options.domains = (char **)realloc(options.domains, - options.ndomains * sizeof(char *)); - options.domains[options.ndomains - 1] = strdup(optarg); - break; - case 't': - if (!strcasecmp(optarg,"a")) - addr_family = AF_INET; - else if (!strcasecmp(optarg,"aaaa")) - addr_family = AF_INET6; - else if (!strcasecmp(optarg,"u")) - addr_family = AF_UNSPEC; - else - usage(); - break; - case 'h': - print_help_info_ahost(); - break; - case '?': - print_help_info_ahost(); - break; - default: + break; + case 's': + optmask |= ARES_OPT_DOMAINS; + options.ndomains++; + options.domains = (char **)realloc( + options.domains, (size_t)options.ndomains * sizeof(char *)); + options.domains[options.ndomains - 1] = strdup(optarg); + break; + case 't': + if (!strcasecmp(optarg, "a")) { + addr_family = AF_INET; + } else if (!strcasecmp(optarg, "aaaa")) { + addr_family = AF_INET6; + } else if (!strcasecmp(optarg, "u")) { + addr_family = AF_UNSPEC; + } else { usage(); - break; } + break; + case 'h': + print_help_info_ahost(); + break; + case '?': + print_help_info_ahost(); + break; + default: + usage(); + break; } + } argc -= optind; argv += optind; - if (argc < 1) + if (argc < 1) { usage(); + } status = ares_init_options(&channel, &options, optmask); - if (status != ARES_SUCCESS) - { - fprintf(stderr, "ares_init: %s\n", ares_strerror(status)); - return 1; - } + if (status != ARES_SUCCESS) { + fprintf(stderr, "ares_init: %s\n", ares_strerror(status)); + return 1; + } /* Initiate the queries, one per command-line argument. */ - for ( ; *argv; argv++) - { - if (ares_inet_pton(AF_INET, *argv, &addr4) == 1) - { - ares_gethostbyaddr(channel, &addr4, sizeof(addr4), AF_INET, callback, - *argv); - } - else if (ares_inet_pton(AF_INET6, *argv, &addr6) == 1) - { - ares_gethostbyaddr(channel, &addr6, sizeof(addr6), AF_INET6, callback, - *argv); - } - else - { - ares_gethostbyname(channel, *argv, addr_family, callback, *argv); - } + for (; *argv; argv++) { + if (ares_inet_pton(AF_INET, *argv, &addr4) == 1) { + ares_gethostbyaddr(channel, &addr4, sizeof(addr4), AF_INET, callback, + *argv); + } else if (ares_inet_pton(AF_INET6, *argv, &addr6) == 1) { + ares_gethostbyaddr(channel, &addr6, sizeof(addr6), AF_INET6, callback, + *argv); + } else { + ares_gethostbyname(channel, *argv, addr_family, callback, *argv); } + } /* Wait for all queries to complete. */ - for (;;) - { - int res; - FD_ZERO(&read_fds); - FD_ZERO(&write_fds); - nfds = ares_fds(channel, &read_fds, &write_fds); - if (nfds == 0) - break; - tvp = ares_timeout(channel, NULL, &tv); - res = select(nfds, &read_fds, &write_fds, NULL, tvp); - if (-1 == res) - break; - ares_process(channel, &read_fds, &write_fds); + for (;;) { + int res; + FD_ZERO(&read_fds); + FD_ZERO(&write_fds); + nfds = ares_fds(channel, &read_fds, &write_fds); + if (nfds == 0) { + break; } + tvp = ares_timeout(channel, NULL, &tv); + if (tvp == NULL) { + break; + } + res = select(nfds, &read_fds, &write_fds, NULL, tvp); + if (-1 == res) { + break; + } + ares_process(channel, &read_fds, &write_fds); + } ares_destroy(channel); @@ -190,18 +190,16 @@ static void callback(void *arg, int status, int timeouts, struct hostent *host) (void)timeouts; - if (status != ARES_SUCCESS) - { - fprintf(stderr, "%s: %s\n", (char *) arg, ares_strerror(status)); - return; - } + if (status != ARES_SUCCESS) { + fprintf(stderr, "%s: %s\n", (char *)arg, ares_strerror(status)); + return; + } - for (p = host->h_addr_list; *p; p++) - { - char addr_buf[46] = "??"; + for (p = host->h_addr_list; *p; p++) { + char addr_buf[46] = "??"; - ares_inet_ntop(host->h_addrtype, *p, addr_buf, sizeof(addr_buf)); - printf("%-32s\t%s", host->h_name, addr_buf); + ares_inet_ntop(host->h_addrtype, *p, addr_buf, sizeof(addr_buf)); + printf("%-32s\t%s", host->h_name, addr_buf); #if 0 if (host->h_aliases[0]) { @@ -212,28 +210,36 @@ static void callback(void *arg, int status, int timeouts, struct hostent *host) printf("%s ", host->h_aliases[i]); } #endif - puts(""); - } + puts(""); + } } static void usage(void) { - fprintf(stderr, "usage: ahost [-h] [-d] [-s {domain}] [-t {a|aaaa|u}] {host|addr} ...\n"); + fprintf( + stderr, + "usage: ahost [-h] [-d] [-s {domain}] [-t {a|aaaa|u}] {host|addr} ...\n"); exit(1); } /* Information from the man page. Formatting taken from man -h */ -static void print_help_info_ahost(void) { - printf("ahost, version %s\n\n", ARES_VERSION_STR); - printf("usage: ahost [-h] [-d] [[-s domain] ...] [-t a|aaaa|u] host|addr ...\n\n" +static void print_help_info_ahost(void) +{ + printf("ahost, version %s\n\n", ARES_VERSION_STR); + printf( + "usage: ahost [-h] [-d] [[-s domain] ...] [-t a|aaaa|u] host|addr ...\n\n" " h : Display this help and exit.\n" " d : Print some extra debugging output.\n\n" - " s domain : Specify the domain to search instead of using the default values\n" + " s domain : Specify the domain to search instead of using the default " + "values\n" " from /etc/resolv.conf. This option only has an effect on\n" - " platforms that use /etc/resolv.conf for DNS configuration;\n" - " it has no effect on other platforms (such as Win32 or Android).\n\n" + " platforms that use /etc/resolv.conf for DNS " + "configuration;\n" + " it has no effect on other platforms (such as Win32 or " + "Android).\n\n" " t type : If type is \"a\", print the A record (default).\n" " If type is \"aaaa\", print the AAAA record.\n" - " If type is \"u\", look for either AAAA or A record (in that order).\n\n"); - exit(0); -} + " If type is \"u\", look for either AAAA or A record (in " + "that order).\n\n"); + exit(0); +} diff --git a/deps/cares/src/tools/ares_getopt.c b/deps/cares/src/tools/ares_getopt.c index f7154398aeae1a..b49606fa2288bf 100644 --- a/deps/cares/src/tools/ares_getopt.c +++ b/deps/cares/src/tools/ares_getopt.c @@ -50,75 +50,77 @@ #include #include "ares_getopt.h" -int opterr = 1, /* if error message should be printed */ - optind = 1; /* index into parent argv vector */ -int optopt = 0; /* character checked for validity */ -static int optreset; /* reset getopt */ -char *optarg; /* argument associated with option */ +int opterr = 1; /* if error message should be printed */ +int 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 *)"" +#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) +int ares_getopt(int nargc, char * const nargv[], const char *ostr) { - static char *place = EMSG; /* option letter processing */ - char *oli; /* option letter list index */ + 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 (optreset || !*place) { /* update scanning pointer */ + optreset = 0; + if (optind >= nargc || *(place = nargv[optind]) != '-') { + place = EMSG; + return (EOF); } - if (*++oli != ':') { /* don't need argument */ - optarg = NULL; - if (!*place) - ++optind; + if (place[1] && *++place == '-') { /* found "--" */ + ++optind; + place = EMSG; + return (EOF); } - 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; + } /* 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); } - return (optopt); /* dump back option letter */ + 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/tools/ares_getopt.h b/deps/cares/src/tools/ares_getopt.h index 7f06e7e09a88fe..b80da752b893a5 100644 --- a/deps/cares/src/tools/ares_getopt.h +++ b/deps/cares/src/tools/ares_getopt.h @@ -35,11 +35,21 @@ int ares_getopt(int nargc, char * const nargv[], const char *ostr); -#undef optarg -#undef optind -#undef opterr -#undef optopt -#undef optreset +#ifdef optarg +# undef optarg +#endif +#ifdef optind +# undef optind +#endif +#ifdef opterr +# undef opterr +#endif +#ifdef optopt +# undef optopt +#endif +#ifdef optreset +# undef optreset +#endif #define optarg ares_optarg #define optind ares_optind @@ -48,8 +58,8 @@ int ares_getopt(int nargc, char * const nargv[], const char *ostr); #define optreset ares_optreset extern char *optarg; -extern int optind; -extern int opterr; -extern int optopt; +extern int optind; +extern int opterr; +extern int optopt; #endif /* ARES_GETOPT_H */ diff --git a/doc/contributing/maintaining/maintaining-dependencies.md b/doc/contributing/maintaining/maintaining-dependencies.md index 4960f907141f79..7e08e6bafae2ac 100644 --- a/doc/contributing/maintaining/maintaining-dependencies.md +++ b/doc/contributing/maintaining/maintaining-dependencies.md @@ -12,7 +12,7 @@ This a list of all the dependencies: * [ada 2.7.2][] * [base64 0.5.0][] * [brotli 1.0.9][] -* [c-ares 1.20.1][] +* [c-ares 1.21.0][] * [cjs-module-lexer 1.2.2][] * [corepack][] * [googletest 116b7e5][] @@ -167,7 +167,7 @@ length-delimited strings. The [brotli](https://github.com/google/brotli) dependency is used for the homonym generic-purpose lossless compression algorithm. -### c-ares 1.20.1 +### c-ares 1.21.0 The [c-ares](https://github.com/c-ares/c-ares) is a C library for asynchronous DNS requests. @@ -322,7 +322,7 @@ performance improvements not currently available in standard zlib. [ada 2.7.2]: #ada-272 [base64 0.5.0]: #base64-050 [brotli 1.0.9]: #brotli-109 -[c-ares 1.20.1]: #c-ares-1201 +[c-ares 1.21.0]: #c-ares-1210 [cjs-module-lexer 1.2.2]: #cjs-module-lexer-122 [corepack]: #corepack [dependency-update-action]: ../../../.github/workflows/tools.yml From 0bd1e85537b2ab7b89cc5da8d408d0d464a6337c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 28 Oct 2023 14:51:03 +0200 Subject: [PATCH 2/2] fixup! deps: update c-ares to 1.21.0 update gypfile --- deps/cares/cares.gyp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/deps/cares/cares.gyp b/deps/cares/cares.gyp index 9797a3216ae882..f6c7287b29496c 100644 --- a/deps/cares/cares.gyp +++ b/deps/cares/cares.gyp @@ -33,6 +33,10 @@ 'src/lib/ares_data.c', 'src/lib/ares_data.h', 'src/lib/ares_destroy.c', + 'src/lib/ares_dns_mapping.c', + 'src/lib/ares_dns_parse.c', + 'src/lib/ares_dns_record.c', + 'src/lib/ares_dns_record.h', 'src/lib/ares_expand_name.c', 'src/lib/ares_expand_string.c', 'src/lib/ares_fds.c', @@ -49,9 +53,8 @@ 'src/lib/ares_init.c', 'src/lib/ares_ipv6.h', 'src/lib/ares_library_init.c', + 'src/lib/ares_math.c', 'src/lib/ares_mkquery.c', - 'src/lib/ares_nowarn.c', - 'src/lib/ares_nowarn.h', 'src/lib/ares_options.c', 'src/lib/ares_parse_a_reply.c', 'src/lib/ares_parse_aaaa_reply.c', @@ -74,8 +77,8 @@ 'src/lib/ares_setup.h', 'src/lib/ares_strcasecmp.c', 'src/lib/ares_strcasecmp.h', - 'src/lib/ares_strdup.c', - 'src/lib/ares_strdup.h', + 'src/lib/ares_str.c', + 'src/lib/ares_str.h', 'src/lib/ares_strerror.c', 'src/lib/ares_strsplit.c', 'src/lib/ares_timeout.c', @@ -203,4 +206,4 @@ ] } ] -} +} \ No newline at end of file