aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-10-19 17:59:18 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-10-19 17:59:18 +0000
commitceddbfe68f6ec7949a4062716c8f9840a59c6888 (patch)
treeabfecadbb9c1e5aea40701dd20d902cb7bccd962
parent07f2e60d02d95eab14a86a4b9469db1af7795001 (diff)
parentd920c750e476fa2dc80c45f990d9456b1afeadd1 (diff)
downloadydb-ceddbfe68f6ec7949a4062716c8f9840a59c6888.tar.gz
Merge branch 'rightlib' into mergelibs-241019-1758
-rw-r--r--build/conf/bison_lex.conf8
-rw-r--r--build/conf/docs.conf12
-rw-r--r--build/conf/fbs.conf16
-rw-r--r--build/conf/go.conf18
-rw-r--r--build/conf/java.conf50
-rw-r--r--build/conf/project_specific/other.conf2
-rw-r--r--build/conf/project_specific/yt.conf4
-rw-r--r--build/conf/proto.conf46
-rw-r--r--build/conf/python.conf36
-rw-r--r--build/conf/swig.conf20
-rw-r--r--build/conf/ts/node_modules.conf53
-rw-r--r--build/conf/ts/ts.conf7
-rw-r--r--build/conf/ts/ts_next.conf6
-rw-r--r--build/conf/ts/ts_package.conf2
-rw-r--r--build/conf/ts/ts_proto.conf6
-rw-r--r--build/conf/ts/ts_test.conf8
-rw-r--r--build/conf/ts/ts_tsc.conf6
-rw-r--r--build/conf/ts/ts_vite.conf6
-rw-r--r--build/conf/ts/ts_webpack.conf6
-rw-r--r--build/plugins/_dart_fields.py8
-rw-r--r--build/plugins/bundle.py23
-rw-r--r--build/plugins/lib/nots/package_manager/__init__.py8
-rw-r--r--build/plugins/lib/nots/package_manager/base/package_manager.py5
-rw-r--r--build/plugins/lib/nots/package_manager/npm/npm_package_manager.py4
-rw-r--r--build/plugins/lib/nots/package_manager/pnpm/package_manager.py23
-rw-r--r--build/plugins/lib/nots/typescript/ts_config.py2
-rw-r--r--build/plugins/nots.py294
-rw-r--r--build/plugins/ytest.py1
-rw-r--r--build/scripts/clang_wrapper.py2
-rw-r--r--build/scripts/fetch_from_npm.py113
-rw-r--r--build/scripts/generic_cmd.py31
-rw-r--r--build/scripts/ya.make1
-rw-r--r--build/ymake.core.conf54
-rw-r--r--contrib/libs/c-ares/.yandex_meta/devtools.copyrights.report117
-rw-r--r--contrib/libs/c-ares/.yandex_meta/devtools.licenses.report242
-rw-r--r--contrib/libs/c-ares/.yandex_meta/licenses.list.txt4
-rw-r--r--contrib/libs/c-ares/.yandex_meta/override.nix4
-rw-r--r--contrib/libs/c-ares/FEATURES.md260
-rw-r--r--contrib/libs/c-ares/FUZZING.md91
-rw-r--r--contrib/libs/c-ares/README.md9
-rw-r--r--contrib/libs/c-ares/RELEASE-NOTES.md93
-rw-r--r--contrib/libs/c-ares/include/ares.h308
-rw-r--r--contrib/libs/c-ares/include/ares_version.h15
-rw-r--r--contrib/libs/c-ares/patches/ubuntu16-compat.patch11
-rw-r--r--contrib/libs/c-ares/src/lib/ares__socket.c764
-rw-r--r--contrib/libs/c-ares/src/lib/ares_addrinfo2hostent.c (renamed from contrib/libs/c-ares/src/lib/ares__addrinfo2hostent.c)14
-rw-r--r--contrib/libs/c-ares/src/lib/ares_addrinfo_localhost.c (renamed from contrib/libs/c-ares/src/lib/ares__addrinfo_localhost.c)26
-rw-r--r--contrib/libs/c-ares/src/lib/ares_android.c6
-rw-r--r--contrib/libs/c-ares/src/lib/ares_cancel.c26
-rw-r--r--contrib/libs/c-ares/src/lib/ares_close_sockets.c (renamed from contrib/libs/c-ares/src/lib/ares__close_sockets.c)69
-rw-r--r--contrib/libs/c-ares/src/lib/ares_config-linux.h6
-rw-r--r--contrib/libs/c-ares/src/lib/ares_conn.c511
-rw-r--r--contrib/libs/c-ares/src/lib/ares_conn.h196
-rw-r--r--contrib/libs/c-ares/src/lib/ares_cookie.c9
-rw-r--r--contrib/libs/c-ares/src/lib/ares_destroy.c68
-rw-r--r--contrib/libs/c-ares/src/lib/ares_freeaddrinfo.c8
-rw-r--r--contrib/libs/c-ares/src/lib/ares_getaddrinfo.c64
-rw-r--r--contrib/libs/c-ares/src/lib/ares_gethostbyaddr.c9
-rw-r--r--contrib/libs/c-ares/src/lib/ares_gethostbyname.c29
-rw-r--r--contrib/libs/c-ares/src/lib/ares_getnameinfo.c10
-rw-r--r--contrib/libs/c-ares/src/lib/ares_hosts_file.c (renamed from contrib/libs/c-ares/src/lib/ares__hosts_file.c)339
-rw-r--r--contrib/libs/c-ares/src/lib/ares_inet_net_pton.h4
-rw-r--r--contrib/libs/c-ares/src/lib/ares_init.c141
-rw-r--r--contrib/libs/c-ares/src/lib/ares_ipv6.h2
-rw-r--r--contrib/libs/c-ares/src/lib/ares_library_init.c40
-rw-r--r--contrib/libs/c-ares/src/lib/ares_metrics.c4
-rw-r--r--contrib/libs/c-ares/src/lib/ares_options.c40
-rw-r--r--contrib/libs/c-ares/src/lib/ares_parse_into_addrinfo.c (renamed from contrib/libs/c-ares/src/lib/ares__parse_into_addrinfo.c)22
-rw-r--r--contrib/libs/c-ares/src/lib/ares_platform.c11047
-rw-r--r--contrib/libs/c-ares/src/lib/ares_private.h605
-rw-r--r--contrib/libs/c-ares/src/lib/ares_process.c1056
-rw-r--r--contrib/libs/c-ares/src/lib/ares_qcache.c139
-rw-r--r--contrib/libs/c-ares/src/lib/ares_query.c11
-rw-r--r--contrib/libs/c-ares/src/lib/ares_search.c129
-rw-r--r--contrib/libs/c-ares/src/lib/ares_send.c63
-rw-r--r--contrib/libs/c-ares/src/lib/ares_set_socket_functions.c586
-rw-r--r--contrib/libs/c-ares/src/lib/ares_setup.h149
-rw-r--r--contrib/libs/c-ares/src/lib/ares_socket.c424
-rw-r--r--contrib/libs/c-ares/src/lib/ares_socket.h163
-rw-r--r--contrib/libs/c-ares/src/lib/ares_sortaddrinfo.c (renamed from contrib/libs/c-ares/src/lib/ares__sortaddrinfo.c)35
-rw-r--r--contrib/libs/c-ares/src/lib/ares_sysconfig.c106
-rw-r--r--contrib/libs/c-ares/src/lib/ares_sysconfig_files.c382
-rw-r--r--contrib/libs/c-ares/src/lib/ares_sysconfig_mac.c32
-rw-r--r--contrib/libs/c-ares/src/lib/ares_sysconfig_win.c15
-rw-r--r--contrib/libs/c-ares/src/lib/ares_timeout.c24
-rw-r--r--contrib/libs/c-ares/src/lib/ares_update_servers.c593
-rw-r--r--contrib/libs/c-ares/src/lib/config-win32.h3
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_array.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__array.c)156
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable.c)179
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable.h)46
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable_asvp.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_asvp.c)80
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable_dict.c228
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable_strvp.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_strvp.c)104
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable_szvp.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_szvp.c)69
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable_vpstr.c186
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_htable_vpvp.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_vpvp.c)75
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_llist.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__llist.c)150
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_slist.c (renamed from contrib/libs/c-ares/src/lib/dsa/ares__slist.c)146
-rw-r--r--contrib/libs/c-ares/src/lib/dsa/ares_slist.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__slist.h)55
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event.h12
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_configchg.c54
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_epoll.c4
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_kqueue.c4
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_poll.c6
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_select.c6
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_thread.c121
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_wake_pipe.c6
-rw-r--r--contrib/libs/c-ares/src/lib/event/ares_event_win32.c74
-rw-r--r--contrib/libs/c-ares/src/lib/include/README.md8
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_array.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__array.h)109
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_buf.h (renamed from contrib/libs/c-ares/src/lib/str/ares__buf.h)327
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_htable_asvp.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_asvp.h)40
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_htable_dict.h123
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_htable_strvp.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_strvp.h)48
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_htable_szvp.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_szvp.h)35
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_htable_vpstr.h111
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_htable_vpvp.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__htable_vpvp.h)40
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_llist.h (renamed from contrib/libs/c-ares/src/lib/dsa/ares__llist.h)72
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_mem.h (renamed from contrib/libs/c-ares/src/lib/str/ares_strcasecmp.h)20
-rw-r--r--contrib/libs/c-ares/src/lib/include/ares_str.h230
-rw-r--r--contrib/libs/c-ares/src/lib/inet_net_pton.c58
-rw-r--r--contrib/libs/c-ares/src/lib/inet_ntop.c29
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_expand_name.c26
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_expand_string.c14
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_fds.c30
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_getsock.c32
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_parse_a_reply.c12
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_parse_aaaa_reply.c12
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_parse_ptr_reply.c2
-rw-r--r--contrib/libs/c-ares/src/lib/legacy/ares_parse_txt_reply.c11
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_mapping.c6
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_multistring.c145
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_multistring.h58
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_name.c197
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_parse.c189
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_private.h132
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_record.c208
-rw-r--r--contrib/libs/c-ares/src/lib/record/ares_dns_write.c264
-rw-r--r--contrib/libs/c-ares/src/lib/str/ares_buf.c (renamed from contrib/libs/c-ares/src/lib/str/ares__buf.c)687
-rw-r--r--contrib/libs/c-ares/src/lib/str/ares_str.c337
-rw-r--r--contrib/libs/c-ares/src/lib/str/ares_str.h89
-rw-r--r--contrib/libs/c-ares/src/lib/str/ares_strsplit.c71
-rw-r--r--contrib/libs/c-ares/src/lib/str/ares_strsplit.h8
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares__threads.h60
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_iface_ips.c (renamed from contrib/libs/c-ares/src/lib/util/ares__iface_ips.c)188
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_iface_ips.h (renamed from contrib/libs/c-ares/src/lib/util/ares__iface_ips.h)40
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_math.c26
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_math.h (renamed from contrib/libs/c-ares/src/lib/str/ares_strcasecmp.c)66
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_rand.c50
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_rand.h (renamed from contrib/libs/c-ares/src/lib/ares_platform.h)30
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_threads.c (renamed from contrib/libs/c-ares/src/lib/util/ares__threads.c)174
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_threads.h60
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_time.h48
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_timeval.c (renamed from contrib/libs/c-ares/src/lib/util/ares__timeval.c)6
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_uri.c1626
-rw-r--r--contrib/libs/c-ares/src/lib/util/ares_uri.h252
-rw-r--r--contrib/libs/c-ares/ya.make50
-rw-r--r--contrib/libs/croaring/.yandex_meta/override.nix4
-rw-r--r--contrib/libs/croaring/README.md80
-rw-r--r--contrib/libs/croaring/include/roaring/roaring_version.h4
-rw-r--r--contrib/libs/croaring/src/containers/bitset.c2
-rw-r--r--contrib/libs/croaring/ya.make4
-rw-r--r--contrib/libs/lzma/.yandex_meta/override.nix4
-rw-r--r--contrib/libs/lzma/INSTALL2
-rw-r--r--contrib/libs/lzma/NEWS125
-rw-r--r--contrib/libs/lzma/THANKS19
-rw-r--r--contrib/libs/lzma/common/tuklib_integer.h14
-rw-r--r--contrib/libs/lzma/liblzma/api/lzma/container.h2
-rw-r--r--contrib/libs/lzma/liblzma/api/lzma/version.h2
-rw-r--r--contrib/libs/lzma/liblzma/check/crc32_table.c10
-rw-r--r--contrib/libs/lzma/liblzma/check/crc_common.h6
-rw-r--r--contrib/libs/lzma/liblzma/check/crc_x86_clmul.h12
-rw-r--r--contrib/libs/lzma/liblzma/check/sha256.c2
-rw-r--r--contrib/libs/lzma/liblzma/rangecoder/range_decoder.h24
-rw-r--r--contrib/libs/lzma/liblzma/simple/arm64.c4
-rw-r--r--contrib/libs/lzma/ya.make4
-rw-r--r--contrib/python/clickhouse-connect/.dist-info/METADATA2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/__version__.py2
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py19
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/httputil.py3
-rw-r--r--contrib/python/clickhouse-connect/clickhouse_connect/driver/query.py7
-rw-r--r--contrib/python/clickhouse-connect/ya.make2
-rw-r--r--contrib/python/ipython/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/ipython/py3/IPython/core/debugger.py31
-rw-r--r--contrib/python/ipython/py3/IPython/core/display.py6
-rw-r--r--contrib/python/ipython/py3/IPython/core/magics/packaging.py17
-rw-r--r--contrib/python/ipython/py3/IPython/core/release.py2
-rw-r--r--contrib/python/ipython/py3/IPython/core/ultratb.py8
-rw-r--r--contrib/python/ipython/py3/IPython/external/qt_loaders.py16
-rw-r--r--contrib/python/ipython/py3/IPython/utils/_sysinfo.py2
-rw-r--r--contrib/python/ipython/py3/IPython/utils/terminal.py8
-rw-r--r--contrib/python/ipython/py3/patches/03-dissable-backgroud-highlighting.patch4
-rw-r--r--contrib/python/ipython/py3/ya.make2
-rw-r--r--contrib/tools/m4/lib/c-stack.c9
-rw-r--r--contrib/tools/m4/lib/config-win.h5
-rw-r--r--contrib/tools/m4/lib/fpurge.c150
-rw-r--r--contrib/tools/m4/lib/freading.c76
-rw-r--r--contrib/tools/m4/lib/isnand.c19
-rw-r--r--contrib/tools/m4/lib/isnanf.c20
-rw-r--r--contrib/tools/m4/lib/isnanl.c20
-rw-r--r--contrib/tools/m4/lib/lseek.c67
-rw-r--r--contrib/tools/m4/lib/mbrtowc.c402
-rw-r--r--contrib/tools/m4/lib/open.c181
-rw-r--r--contrib/tools/m4/lib/platform/win64/fcntl.h2
-rw-r--r--contrib/tools/m4/lib/platform/win64/sys/stat.h2
-rw-r--r--contrib/tools/m4/lib/platform/win64/unistd.h4
-rw-r--r--contrib/tools/m4/lib/printf.c40
-rw-r--r--contrib/tools/m4/lib/realloc.c79
-rw-r--r--contrib/tools/m4/lib/rmdir.c53
-rw-r--r--contrib/tools/m4/lib/same-inode.h33
-rw-r--r--contrib/tools/m4/lib/sigsegv.h243
-rw-r--r--contrib/tools/m4/lib/stat.c138
-rw-r--r--contrib/tools/m4/lib/stpcpy.c50
-rw-r--r--contrib/tools/m4/lib/streq.h176
-rw-r--r--contrib/tools/m4/lib/unsetenv.c127
-rw-r--r--contrib/tools/m4/lib/vasnprintf.c5
-rw-r--r--contrib/tools/m4/lib/vasprintf.c3
-rw-r--r--contrib/tools/m4/lib/xstrndup.c17
-rw-r--r--contrib/tools/m4/lib/xvasprintf.c7
-rw-r--r--contrib/tools/m4/lib/ya.make13
-rw-r--r--library/cpp/cache/thread_safe_cache.h1
-rw-r--r--library/cpp/linear_regression/linear_regression.h1
-rw-r--r--library/cpp/tld/tlds-alpha-by-domain.txt2
-rw-r--r--library/cpp/yt/memory/blob.cpp4
-rw-r--r--library/cpp/yt/memory/ya.make4
-rw-r--r--library/cpp/yt/string/string-inl.h32
-rw-r--r--library/cpp/yt/string/string.h28
-rw-r--r--util/folder/iterator.h1
-rw-r--r--util/generic/string.h3
-rw-r--r--yt/yt/client/api/file_reader.h1
-rw-r--r--yt/yt/client/api/queue_transaction.h2
-rw-r--r--yt/yt/client/api/rpc_proxy/client_base.cpp1
-rw-r--r--yt/yt/client/api/rpc_proxy/row_batch_reader.cpp3
-rw-r--r--yt/yt/client/chunk_client/public.h1
-rw-r--r--yt/yt/client/scheduler/public.h1
-rw-r--r--yt/yt/client/ya.make6
-rw-r--r--yt/yt/core/logging/log_manager.cpp3
-rw-r--r--yt/yt/core/ytree/ypath_client.cpp11
-rw-r--r--yt/yt/core/ytree/ypath_client.h6
-rw-r--r--yt/yt/library/profiling/solomon/sensor_service.cpp6
-rw-r--r--yt/yt/library/profiling/unittests/exporter_ut.cpp2
-rw-r--r--yt/yt/library/profiling/unittests/sensor_service_ut.cpp64
-rw-r--r--yt/yt/library/profiling/unittests/ya.make1
243 files changed, 11517 insertions, 19286 deletions
diff --git a/build/conf/bison_lex.conf b/build/conf/bison_lex.conf
index 317d1b6851..3aca4a0d29 100644
--- a/build/conf/bison_lex.conf
+++ b/build/conf/bison_lex.conf
@@ -135,8 +135,8 @@ macro USE_OLD_FLEX() {
macro _SRC("y", SRC, SRCFLAGS...) {
.PEERDIR=build/induced/by_bison
- .CMD=${tool:"contrib/tools/bison"} $BISON_FLAGS ${env:"M4=${tool:M4_PATH}"} ${env:"BISON_PKGDATADIR=${ARCADIA_ROOT}/${_BISON_DATA_DIR}"} $_BISON_HEADER ${hide:_BISON_GEN_EXT} -o ${nopath;output;suf=$_BISON_GEN_EXT:SRC} ${input:SRC} ${SRCFLAGS} ${kv;hide:"p YC"} ${kv;hide:"pc light-green"} && $_BISON_PP
- .SEM=target_bison_parser PRIVATE ${input:SRC} ${output;nopath;noext;hide;suf=${OBJ_SUF}.o:SRC} ${nopath;noext;output;hide:SRC.h} ${nopath;noext;output;addincl;hide:SRC.h} && set_global_flags BISON_FLAGS $BISON_FLAGS && conan_require_tool m4/1.4.19 && conan_import '"bin, m4* -> ./bin/m4/bin"' && conan_require_tool bison/3.8.2 && conan_import '"bin, bison* -> ./bin/bison/bin"' && conan_import '"res, * -> ./bin/bison/res"' && target_macroses-ITEM && target_macroses-macro target_bison_parser && target_macroses-args PRIVATE ${input:SRC} ${output;nopath;noext;hide;suf=${OBJ_SUF}.o:SRC} ${nopath;noext;output;hide:SRC.h} ${nopath;noext;output;addincl;hide:SRC.h} && platform_vars-BISON_FLAGS ${quo:BISON_FLAGS} && conan-tool_requires m4/1.4.19 && conan-imports 'bin, m4* -> ./bin/m4/bin' && conan-tool_requires bison/3.8.2 && conan-imports 'bin, bison* -> ./bin/bison/bin' && conan-imports 'res, * -> ./bin/bison/res'
+ .CMD=${tool:"contrib/tools/bison"} $BISON_FLAGS ${env:"M4=${tool:M4_PATH}"} ${env:"BISON_PKGDATADIR=${ARCADIA_ROOT}/${_BISON_DATA_DIR}"} $_BISON_HEADER ${hide:_BISON_GEN_EXT} -o ${nopath;output;suf=$_BISON_GEN_EXT:SRC} ${input:SRC} ${SRCFLAGS} ${hide;kv:"p YC"} ${hide;kv:"pc light-green"} && $_BISON_PP
+ .SEM=target_bison_parser PRIVATE ${input:SRC} ${output;nopath;noext;hide;suf=${OBJ_SUF}.o:SRC} ${nopath;noext;hide;output:SRC.h} ${nopath;noext;output;addincl;hide:SRC.h} && set_global_flags BISON_FLAGS $BISON_FLAGS && conan_require_tool m4/1.4.19 && conan_import '"bin, m4* -> ./bin/m4/bin"' && conan_require_tool bison/3.8.2 && conan_import '"bin, bison* -> ./bin/bison/bin"' && conan_import '"res, * -> ./bin/bison/res"' && target_macroses-ITEM && target_macroses-macro target_bison_parser && target_macroses-args PRIVATE ${input:SRC} ${output;nopath;noext;hide;suf=${OBJ_SUF}.o:SRC} ${nopath;noext;hide;output:SRC.h} ${nopath;noext;output;addincl;hide:SRC.h} && platform_vars-BISON_FLAGS ${quo:BISON_FLAGS} && conan-tool_requires m4/1.4.19 && conan-imports 'bin, m4* -> ./bin/m4/bin' && conan-tool_requires bison/3.8.2 && conan-imports 'bin, bison* -> ./bin/bison/bin' && conan-imports 'res, * -> ./bin/bison/res'
}
macro _SRC("ypp", SRC, SRCFLAGS...) {
@@ -146,9 +146,9 @@ macro _SRC("ypp", SRC, SRCFLAGS...) {
}
macro _SRC("l", SRC, SRCFLAGS...) {
- .CMD=$_FLEX_TOOL $LEX_FLAGS ${SRCFLAGS} $_FLEX_HEADER ${hide:_FLEX_GEN_EXT} -o${output;suf=$_FLEX_GEN_EXT:SRC} ${output_include;hide:"util/system/compiler.h"} ${input:SRC} ${kv;hide:"p LX"} ${kv;hide:"pc yellow"}
+ .CMD=$_FLEX_TOOL $LEX_FLAGS ${SRCFLAGS} $_FLEX_HEADER ${hide:_FLEX_GEN_EXT} -o${output;suf=$_FLEX_GEN_EXT:SRC} ${hide;output_include:"util/system/compiler.h"} ${input:SRC} ${hide;kv:"p LX"} ${hide;kv:"pc yellow"}
.ADDINCL=$_FLEX_TOOL_DIR
- .SEM=target_flex_lexers ${tool;hide:_FLEX_TOOL} ${output;hide;suf=${OBJ_SUF}.o:SRC} ${input:SRC} && target_macroses-ITEM && target_macroses-macro target_flex_lexers && target_macroses-args ${tool;hide:_FLEX_TOOL} ${output;hide;suf=${OBJ_SUF}.o:SRC} ${input:SRC} && set_global_flags LEX_FLAGS $LEX_FLAGS && platform_vars-LEX_FLAGS ${quo:LEX_FLAGS}
+ .SEM=target_flex_lexers ${hide;tool:_FLEX_TOOL} ${hide;output;suf=${OBJ_SUF}.o:SRC} ${input:SRC} && target_macroses-ITEM && target_macroses-macro target_flex_lexers && target_macroses-args ${hide;tool:_FLEX_TOOL} ${hide;output;suf=${OBJ_SUF}.o:SRC} ${input:SRC} && set_global_flags LEX_FLAGS $LEX_FLAGS && platform_vars-LEX_FLAGS ${quo:LEX_FLAGS}
}
# tag:src-processing
diff --git a/build/conf/docs.conf b/build/conf/docs.conf
index a5f611da2f..0cd8c7d20d 100644
--- a/build/conf/docs.conf
+++ b/build/conf/docs.conf
@@ -3,7 +3,7 @@
#
# tag:docs
-TOUCH_DOCS=$YMAKE_PYTHON3 ${input:"build/scripts/touch.py"} ${kv;hide:"p DC"} ${kv;hide:"pc light-cyan"} $TARGET
+TOUCH_DOCS=$YMAKE_PYTHON3 ${input:"build/scripts/touch.py"} ${hide;kv:"p DC"} ${hide;kv:"pc light-cyan"} $TARGET
TOUCH_DOCS_MF=$TOUCH_DOCS && $GENERATE_MF
# tag:docs
@@ -11,7 +11,7 @@ TOUCH_DOCS_MF=$TOUCH_DOCS && $GENERATE_MF
###
### Copy files from src_dir to $BINDIR/dst_dir
macro DOCS_COPY_FILES(FROM="${CURDIR}", NAMESPACE=".", FILES...) {
- .CMD=$YMAKE_PYTHON3 ${input:"build/scripts/copy_docs_files.py"} ${input;hide:"build/scripts/process_command_files.py"} --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --src-dir $FROM --dst-dir $BINDIR/$NAMESPACE $FILES ${input;hide;context=TEXT;pre=${FROM}/:FILES} ${output;hide;pre=${NAMESPACE}/:FILES}
+ .CMD=$YMAKE_PYTHON3 ${input:"build/scripts/copy_docs_files.py"} ${hide;input:"build/scripts/process_command_files.py"} --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --src-dir $FROM --dst-dir $BINDIR/$NAMESPACE $FILES ${hide;context=TEXT;input;pre=${FROM}/:FILES} ${hide;output;pre=${NAMESPACE}/:FILES}
}
# tag:docs
@@ -19,7 +19,7 @@ _DOCS_USE_PLANTUML=no
_DOCS_EXTRA_TOOLS=
_DOCS_EXTRA_INPUTS=
_DOCS_ENV=
-_DOCS_KV=${kv;hide:"p DO"} ${kv;hide:"pc light-cyan"} ${kv;hide:"show_out yes"}
+_DOCS_KV=${hide;kv:"p DO"} ${hide;kv:"pc light-cyan"} ${hide;kv:"show_out yes"}
_DOCS_PLANTUML_ENV=\
${env:"JAVA_PATH=$JDK21_RESOURCE_GLOBAL/bin/java"} \
@@ -37,7 +37,7 @@ _DOCS_YFM_BOOK_OUTPUT_FORMAT=--output-format html --allowHTML
_DOCS_YFM_LIB_OUTPUT_FORMAT=--output-format md --add-map-file --allow-custom-resources
_DOCS_YFM_CMDLINE=\
-${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/extract_docs.py"} ${input;hide:"build/scripts/process_command_files.py"} --skip-prefix $ARCADIA_BUILD_ROOT --dest-dir $BINDIR/__s ${rootrel:PEERS} \
+${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/extract_docs.py"} ${hide;input:"build/scripts/process_command_files.py"} --skip-prefix $ARCADIA_BUILD_ROOT --dest-dir $BINDIR/__s ${rootrel:PEERS} \
&& ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/stdout2stderr.py"} $YFM_TOOL_RESOURCE_GLOBAL/yfm-docs --input $BINDIR/__s --output $BINDIR/__docsbuild $_DOCS_VARS_FLAG $_DOCS_YFM_OUTPUT_FORMAT --config ${input:CONFIG} $_DOCS_EXTRA_TOOLS ${hide;input:EXTRA_INPUTS} $_DOCS_ENV \
&& $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --output $TARGET --input $BINDIR/__docsbuild $_DOCS_KV
@@ -70,7 +70,7 @@ _DOCS_SKIP_NAMESPACE=
# tag:internal tag:docs
_DOCS_LIBRARY_CMDLINE=\
-$YMAKE_PYTHON3 ${input:"build/scripts/copy_docs_files_to_dir.py"} ${input;hide:"build/scripts/process_command_files.py"} $_DOCS_IMPLICIT_SRCS_VALUE $_DOCS_DIR_VALUE $_DOCS_BIN_DIR_VALUE --dest-dir $BINDIR/__s --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --srcs ${input;context=TEXT:SOURCES} --include-srcs ${input;context=TEXT:INCLUDE_SOURCES} $_DOCS_SKIP_NAMESPACE \
+$YMAKE_PYTHON3 ${input:"build/scripts/copy_docs_files_to_dir.py"} ${hide;input:"build/scripts/process_command_files.py"} $_DOCS_IMPLICIT_SRCS_VALUE $_DOCS_DIR_VALUE $_DOCS_BIN_DIR_VALUE --dest-dir $BINDIR/__s --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --srcs ${context=TEXT;input:SOURCES} --include-srcs ${context=TEXT;input:INCLUDE_SOURCES} $_DOCS_SKIP_NAMESPACE \
&& $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --output $TARGET --input $BINDIR/__s $_DOCS_KV
# tag:internal tag:docs
@@ -262,7 +262,7 @@ macro _YFM_DOCS_DIR(DIR) {
SET(_VAR_DOCS_DIR_SALT __MODDIR__ $MODDIR __DIR__ $DIR)
SET(_DOCS_DIR_GLOB uniq_docs_dir_${hash:_VAR_DOCS_DIR_SALT})
_LATE_GLOB(${_DOCS_DIR_GLOB} ${ARCADIA_ROOT}/$DIR/**/*)
- SET_APPEND(_DOCS_IMPLICIT_SRCS_VALUE \${input;hide:$_DOCS_DIR_GLOB})
+ SET_APPEND(_DOCS_IMPLICIT_SRCS_VALUE \${hide;input:$_DOCS_DIR_GLOB})
# We set the value of var _YFM_DOCS_DIR_DEFAULT_VALUE to some non-existing dir. This value
# will be used in _DOCS_LIBRARY_EPILOGUE calls. In case when this macro _YFM_DOCS_DIR is
diff --git a/build/conf/fbs.conf b/build/conf/fbs.conf
index 23fff82272..83932fb23c 100644
--- a/build/conf/fbs.conf
+++ b/build/conf/fbs.conf
@@ -22,11 +22,11 @@ _PY_FBS_DEPS=contrib/python/flatbuffers
### processed when --add-flatbuf-result flag is specified on the command line
### for 'ya make ...' (tar archive is extracted to output directory).
macro FBS_TO_PYSRC(OUT_NAME, IN_FBS_FILES...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --python --no-warnings --python-typing --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${output;noauto;tared:OUT_NAME.py3.fbs.pysrc} ${kv;hide:"p FP"} ${kv;hide:"pc light-green"} ${kv;hide:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --python --no-warnings --python-typing --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${noauto;output;tared:OUT_NAME.py3.fbs.pysrc} ${hide;kv:"p FP"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
}
macro FBS_TO_PY2SRC(OUT_NAME, IN_FBS_FILES...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:"contrib/deprecated/flatc"} --python --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${output;noauto;tared:OUT_NAME.py2.fbs.pysrc} ${kv;hide:"p FP"} ${kv;hide:"pc light-green"} ${kv;hide:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:"contrib/deprecated/flatc"} --python --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${noauto;output;tared:OUT_NAME.py2.fbs.pysrc} ${hide;kv:"p FP"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
}
# tag:fbs tag:go-specific
@@ -38,14 +38,14 @@ _GO_FLATC_IMPORTS=\
# tag:fbs tag:cpp-specific
macro _CPP_FLATC_CMD(SRC, SRCFLAGS...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/cpp_flatc_wrapper.py"} ${tool:FLATC} --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${output;main;norel:SRC.h} ${output;hide;norel:SRC.cpp} ${input:SRC} ${output;hide;noext;norel:SRC.iter.fbs.h} ${output;noauto;hide;noext;norel:SRC.bfbs} ${kv;hide:"p FL"} ${kv;hide:"pc light-green"} ${hide:FBS_FAKEID}
- .SEM=target_fbs_source PRIVATE ${input:SRC} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} ${output;hide;norel:SRC.h} ${output;hide;norel:SRC.cpp} ${output;hide;noext;norel:SRC.iter.fbs.h} ${output;noauto;hide;noext;norel:SRC.bfbs} ${hide;tool:FLATC} && target_macroses-ITEM && target_macroses-macro target_fbs_source && target_macroses-args PRIVATE ${input:SRC} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} ${output;hide;norel:SRC.h} ${output;hide;norel:SRC.cpp} ${output;hide;noext;norel:SRC.iter.fbs.h} ${output;noauto;hide;noext;norel:SRC.bfbs} ${hide;tool:FLATC} && set_global_flags FBS_CPP_FLAGS --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs && platform_vars-FBS_CPP_FLAGS "--no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs" ${input;hide:"build/scripts/cpp_flatc_wrapper.py"}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/cpp_flatc_wrapper.py"} ${tool:FLATC} --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${output;main;norel:SRC.h} ${hide;output;norel:SRC.cpp} ${input:SRC} ${hide;output;noext;norel:SRC.iter.fbs.h} ${hide;noauto;output;noext;norel:SRC.bfbs} ${hide;kv:"p FL"} ${hide;kv:"pc light-green"} ${hide:FBS_FAKEID}
+ .SEM=target_fbs_source PRIVATE ${input:SRC} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} ${hide;output;norel:SRC.h} ${hide;output;norel:SRC.cpp} ${hide;output;noext;norel:SRC.iter.fbs.h} ${hide;noauto;output;noext;norel:SRC.bfbs} ${hide;tool:FLATC} && target_macroses-ITEM && target_macroses-macro target_fbs_source && target_macroses-args PRIVATE ${input:SRC} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} ${hide;output;norel:SRC.h} ${hide;output;norel:SRC.cpp} ${hide;output;noext;norel:SRC.iter.fbs.h} ${hide;noauto;output;noext;norel:SRC.bfbs} ${hide;tool:FLATC} && set_global_flags FBS_CPP_FLAGS --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs && platform_vars-FBS_CPP_FLAGS "--no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs" ${hide;input:"build/scripts/cpp_flatc_wrapper.py"}
.PEERDIR=contrib/libs/flatbuffers
}
# tag:fbs tag:cpp-specific
macro _CPP_FLATC64_CMD(SRC, SRCFLAGS...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/cpp_flatc_wrapper.py"} ${tool:FLATC64} --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --filename-suffix .fbs64 ${FLATC_FLAGS_VALUE} -I ${ARCADIA_ROOT} -I ${ARCADIA_BUILD_ROOT} -o ${output;main;norel:SRC.h} ${output;hide;norel:SRC.cpp} ${input:SRC} ${output;noauto;hide;noext;norel:SRC.bfbs64} ${kv;hide:"p FL64"} ${kv;hide:"pc light-green"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/cpp_flatc_wrapper.py"} ${tool:FLATC64} --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --filename-suffix .fbs64 ${FLATC_FLAGS_VALUE} -I ${ARCADIA_ROOT} -I ${ARCADIA_BUILD_ROOT} -o ${output;main;norel:SRC.h} ${hide;output;norel:SRC.cpp} ${input:SRC} ${hide;noauto;output;noext;norel:SRC.bfbs64} ${hide;kv:"p FL64"} ${hide;kv:"pc light-green"} ${hide:FBS_FAKEID}
.PEERDIR=contrib/libs/flatbuffers64
}
@@ -57,7 +57,7 @@ macro _CPP_FLATC64_CMD(SRC, SRCFLAGS...) {
### --add-protobuf-result flag is specified on the command line for 'ya make ...'
### (tar archive is extracted to output directory).
macro _GO_FLATC_CMD(SRC, PACKAGE_NAME) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --go --gen-mutable --go-namespace ${PACKAGE_NAME} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR}/_generated ${input:SRC} && $YMAKE_PYTHON3 ${input:"build/scripts/postprocess_go_fbs.py"} --arcadia-prefix ${GO_ARCADIA_PROJECT_PREFIX} --input-dir ${BINDIR} --map $_FBS_NAMESPACE_MAP_GLOBAL && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --flat --input ${BINDIR}/_generated --output ${output;noext;tared:SRC.fbs.gosrc} --exts .go ${kv;hide:"p FG"} ${kv;hide:"pc light-green"} ${kv;hide:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --go --gen-mutable --go-namespace ${PACKAGE_NAME} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR}/_generated ${input:SRC} && $YMAKE_PYTHON3 ${input:"build/scripts/postprocess_go_fbs.py"} --arcadia-prefix ${GO_ARCADIA_PROJECT_PREFIX} --input-dir ${BINDIR} --map $_FBS_NAMESPACE_MAP_GLOBAL && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --flat --input ${BINDIR}/_generated --output ${output;noext;tared:SRC.fbs.gosrc} --exts .go ${hide;kv:"p FG"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
.PEERDIR=${_GO_FLATC_IMPORTS}
}
@@ -69,7 +69,7 @@ macro _GO_FLATC_CMD(SRC, PACKAGE_NAME) {
### be added to results when --add-flatbuf-result flag is specified on the command
### line for 'ya make ...'
macro _JAVA_FLATC_CMD(SRC, SRCFLAGS...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --java --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:SRC} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --input $BINDIR --output ${output;nopath;noext:SRC.fbs.jsrc} --exts .java ${kv;hide:"p FJ"} ${kv;hide:"pc light-green"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --java --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:SRC} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --input $BINDIR --output ${output;nopath;noext:SRC.fbs.jsrc} --exts .java ${hide;kv:"p FJ"} ${hide;kv:"pc light-green"} ${hide:FBS_FAKEID}
.PEERDIR=contrib/java/com/google/flatbuffers/flatbuffers-java/${JAVA_FLATBUFFERS_VERSION}
}
@@ -149,7 +149,7 @@ macro FBS_CMD(SRC, SRCFLAGS...) {
###
### Produce flatbuf schema out of protobuf description.
macro PROTO2FBS(File) {
- .CMD=${cwd:BINDIR} ${tool:FLATC} -I . -I ${ARCADIA_ROOT} --proto ${input:File} ${output;hide;norel;noext:File.fbs} ${kv;hide:"p FBS"} ${kv;hide:"pc yellow"} && $MOVE_FILE ${BINDIR}/${nopath;noext:File.fbs} ${output;norel;noext:File.fbs}
+ .CMD=${cwd:BINDIR} ${tool:FLATC} -I . -I ${ARCADIA_ROOT} --proto ${input:File} ${hide;output;norel;noext:File.fbs} ${hide;kv:"p FBS"} ${hide;kv:"pc yellow"} && $MOVE_FILE ${BINDIR}/${nopath;noext:File.fbs} ${output;norel;noext:File.fbs}
}
_CPP_FLATC_CMDLINE=$_CPP_FLATC_CMD($SRC $SRCFLAGS)
diff --git a/build/conf/go.conf b/build/conf/go.conf
index 88f7f28b8e..85eb4b37c6 100644
--- a/build/conf/go.conf
+++ b/build/conf/go.conf
@@ -205,18 +205,18 @@ macro _GO_GEN_COVER_GO(GO_FILE, GO_COVER_OUTPUT, VAR_ID) {
# tag:go-specific
macro _GO_COMPILE_SYMABIS(FLAGS[], ASM_FILES...) {
- .CMD=${hide:_CGO_FAKEID} $GO_TOOLS_ROOT/pkg/tool/$_GO_TC_PATH/asm $_GO_COMPILE_SYMABIS_TRIMPATH__NO_UID__ ${pre=-I :_C__INCLUDE} -I $GO_TOOLS_ROOT/pkg/include -D GOOS_${GO_TARG_OS} -D GOARCH_${GO_TARG_ARCH} $FLAGS $GO_ASM_FLAGS_VALUE -gensymabis -o ${output:"gen.symabis"} ${input:ASM_FILES} ${kv;hide:"p go"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+ .CMD=${hide:_CGO_FAKEID} $GO_TOOLS_ROOT/pkg/tool/$_GO_TC_PATH/asm $_GO_COMPILE_SYMABIS_TRIMPATH__NO_UID__ ${pre=-I :_C__INCLUDE} -I $GO_TOOLS_ROOT/pkg/include -D GOOS_${GO_TARG_OS} -D GOARCH_${GO_TARG_ARCH} $FLAGS $GO_ASM_FLAGS_VALUE -gensymabis -o ${output:"gen.symabis"} ${input:ASM_FILES} ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
.ADDINCL=build/scripts/go_fake_include
}
# tag:go-specific
macro _GO_COMPILE_CGO1(NAME, FLAGS[], FILES...) {
- .CMD=${hide:_CGO_FAKEID} ${cwd:ARCADIA_ROOT} $YMAKE_PYTHON ${input:"build/scripts/cgo1_wrapper.py"} $_GO_CGO1_WRAPPER_FLAGS --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --cgo1-files ${output;noext:FILES.cgo1.go} --cgo2-files ${output;noauto;noext:FILES.cgo2.c} -- ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -objdir $BINDIR -importpath $NAME $GO_CGO1_FLAGS_VALUE $FLAGS -- $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} ${CGO_CFLAGS_VALUE} ${input:FILES} ${output;hide:"_cgo_export.h"} ${output;hide:"_cgo_export.c"} ${output;hide:"_cgo_gotypes.go"} ${output;noauto;hide:"_cgo_main.c"} $GO_TOOLCHAIN_ENV ${kv;hide:"p go"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+ .CMD=${hide:_CGO_FAKEID} ${cwd:ARCADIA_ROOT} $YMAKE_PYTHON ${input:"build/scripts/cgo1_wrapper.py"} $_GO_CGO1_WRAPPER_FLAGS --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --cgo1-files ${output;noext:FILES.cgo1.go} --cgo2-files ${noauto;output;noext:FILES.cgo2.c} -- ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -objdir $BINDIR -importpath $NAME $GO_CGO1_FLAGS_VALUE $FLAGS -- $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} ${CGO_CFLAGS_VALUE} ${input:FILES} ${hide;output:"_cgo_export.h"} ${hide;output:"_cgo_export.c"} ${hide;output:"_cgo_gotypes.go"} ${hide;noauto;output:"_cgo_main.c"} $GO_TOOLCHAIN_ENV ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
}
# tag:go-specific
macro _GO_COMPILE_CGO2(NAME, C_FILES[], S_FILES[], OBJ_FILES[], FILES...) {
- .CMD=${hide:_CGO_FAKEID} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} $CGO_CFLAGS_VALUE ${input;tobindir:"_cgo_main.c"} -c -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} && $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} $LDFLAGS $LDFLAGS_GLOBAL $CGO2_LDFLAGS_VALUE ${input;hide:"_cgo_export.h"} ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} ${input;suf=${OBJECT_SUF}:"_cgo_export.c"} ${input;nopath;noext;suf=.cgo2.c${OBJECT_SUF}:FILES} ${input;suf=${OBJECT_SUF}:C_FILES} ${input;suf=.o:S_FILES} ${input:OBJ_FILES} $CGO_LDFLAGS_VALUE && ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -dynpackage $NAME -dynimport ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} -dynout ${output:"_cgo_import.go"} -dynlinker $GO_CGO2_FLAGS_VALUE $GO_TOOLCHAIN_ENV ${kv;hide:"p go"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+ .CMD=${hide:_CGO_FAKEID} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} $CGO_CFLAGS_VALUE ${input;tobindir:"_cgo_main.c"} -c -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} && $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} $LDFLAGS $LDFLAGS_GLOBAL $CGO2_LDFLAGS_VALUE ${hide;input:"_cgo_export.h"} ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} ${input;suf=${OBJECT_SUF}:"_cgo_export.c"} ${input;nopath;noext;suf=.cgo2.c${OBJECT_SUF}:FILES} ${input;suf=${OBJECT_SUF}:C_FILES} ${input;suf=.o:S_FILES} ${input:OBJ_FILES} $CGO_LDFLAGS_VALUE && ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -dynpackage $NAME -dynimport ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} -dynout ${output:"_cgo_import.go"} -dynlinker $GO_CGO2_FLAGS_VALUE $GO_TOOLCHAIN_ENV ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
_USE_LINKER()
}
@@ -547,7 +547,7 @@ macro _GO_GRPC_GATEWAY_SRCS_IMPL(Files...) {
# tag:go-specific
macro _SETUP_GO_GRPC_GATEWAY() {
SET(_GO_PROTO_GRPC_GATEWAY_OPTS $_PROTO_PLUGIN_ARGS_BASE(go_grpc_gw vendor/github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway allow_repeated_fields_in_body=true))
- SET(_GO_PROTO_GRPC_GATEWAY_OUTS \${output;hide;norel;nopath;noext;suf=.pb.gw.go:File})
+ SET(_GO_PROTO_GRPC_GATEWAY_OUTS \${hide;output;norel;nopath;noext;suf=.pb.gw.go:File})
}
# tag:go-specific
@@ -560,7 +560,7 @@ macro _GO_GRPC_GATEWAY_SRCS(Files...) {
macro _GO_GRPC_GATEWAY_SWAGGER_SRCS(Files...) {
_SETUP_GO_GRPC_GATEWAY()
SET_APPEND(_GO_PROTO_GRPC_GATEWAY_OPTS $_PROTO_PLUGIN_ARGS_BASE(swagger vendor/github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger logtostderr=true allow_repeated_fields_in_body=true))
- SET_APPEND(_GO_PROTO_GRPC_GATEWAY_OUTS \${output;hide;norel;noauto;nopath;noext;suf=.swagger.json:File})
+ SET_APPEND(_GO_PROTO_GRPC_GATEWAY_OUTS \${hide;output;norel;noauto;nopath;noext;suf=.swagger.json:File})
_GO_GRPC_GATEWAY_SRCS_IMPL($Files)
PEERDIR(vendor/github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options)
@@ -578,7 +578,7 @@ macro _GO_GRPC_GATEWAY_V2_OPENAPI_SRCS(NO_JSON_NAMES_FOR_FIELDS?"json_names_for_
_SETUP_GO_GRPC_GATEWAY_V2()
SET_APPEND(_GO_PROTO_GRPC_GATEWAY_V2_OPTS $_PROTO_PLUGIN_ARGS_BASE(openapiv2 vendor/github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 $NO_JSON_NAMES_FOR_FIELDS logtostderr=true))
- SET_APPEND(_GO_PROTO_GRPC_GATEWAY_V2_OPTS \${output;hide;norel;noauto;nopath;noext;suf=.swagger.json:File})
+ SET_APPEND(_GO_PROTO_GRPC_GATEWAY_V2_OPTS \${hide;output;norel;noauto;nopath;noext;suf=.swagger.json:File})
_GO_GRPC_GATEWAY_V2_SRCS_IMPL($Files)
PEERDIR(vendor/github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options)
@@ -613,7 +613,7 @@ macro _GO_GRPC_GATEWAY_V2_SRCS_IMPL(Files...) {
# tag:go-specific
macro _SETUP_GO_GRPC_GATEWAY_V2() {
SET(_GO_PROTO_GRPC_GATEWAY_V2_OPTS $_PROTO_PLUGIN_ARGS_BASE(go_grpc_gw vendor/github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway allow_repeated_fields_in_body=true))
- SET(_GO_PROTO_GRPC_GATEWAY_V2_OUTS \${output;hide;norel;nopath;noext;suf=.pb.gw.go:File})
+ SET(_GO_PROTO_GRPC_GATEWAY_V2_OUTS \${hide;output;norel;nopath;noext;suf=.pb.gw.go:File})
}
# tag:go-specific
@@ -668,13 +668,13 @@ module _GO_BASE_UNIT: _BASE_UNIT {
GO_PROTO_GRPC_OUTS_V2=${output;norel;nopath;noext;suf=_grpc.pb.go:File}
select ($GO_PROTO_V2) {
"yes" | "on" ? {
- GO_PROTO_OUTS+=${output;hide;norel;nopath;noext;suf=.pb.go:File}
+ GO_PROTO_OUTS+=${hide;output;norel;nopath;noext;suf=.pb.go:File}
GO_PROTO_OPTS+=--plugin=protoc-gen-go=${tool:_TOOL_PROTOC_GEN_GO_V2} --go_out=${ARCADIA_BUILD_ROOT}/$PROTO_NAMESPACE
_GO_PROTO_CHECK_OUTPUT=--check $GO_PROTO_GRPC_OUTS_V2
GO_PROTO_OPTS+=$GO_PROTO_GRPC_OPTS
}
default ? {
- GO_PROTO_OUTS+=${output;hide;norel;nopath;noext;suf=.pb.go:File}
+ GO_PROTO_OUTS+=${hide;output;norel;nopath;noext;suf=.pb.go:File}
GO_PROTO_OPTS+=--plugin=protoc-gen-go=${tool:_TOOL_PROTOC_GEN_GO} --go_out=$GO_PROTO_GEN_PLUGINS:${ARCADIA_BUILD_ROOT}/$PROTO_NAMESPACE
}
}
diff --git a/build/conf/java.conf b/build/conf/java.conf
index e39b34818e..c7ec1bb0b3 100644
--- a/build/conf/java.conf
+++ b/build/conf/java.conf
@@ -3,12 +3,12 @@ macro _INPUT_WITH_FLAG(Flag, IN[]) {
}
macro _INPUT_WITH_FLAG_IMPL(IN{input}[], Args...) {
- .CMD=$Args ${input;hide:IN}
+ .CMD=$Args ${hide;input:IN}
}
macro ACCELEO(XSD{input}[], MTL{input}[], MTL_ROOT="${MODDIR}", LANG{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], DEBUG?"stdout2stderr":"stderr2stdout") {
.PEERDIR=build/platform/java/jdk $JDK_RESOURCE_PEERDIR
- .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input;pre=build/scripts/:DEBUG.py} $JDK_RESOURCE/bin/java -Dfile.encoding=utf8 -classpath ${RUN_JAR_PROG_CP_PRE}${tool:"tools/acceleo"}${RUN_JAR_PROG_CP_SUF} ru.yandex.se.logsng.tool.Cli $_INPUT_WITH_FLAG(--xsd IN $XSD) $_INPUT_WITH_FLAG(--mtl IN $MTL) $_INPUT_WITH_FLAG(--lang IN $LANG) --output-dir $BINDIR --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --mtl-root $MTL_ROOT ${output_include;hide:OUTPUT_INCLUDES} ${output;hide:OUT} ${output;noauto;hide:OUT_NOAUTO} ${kv;hide:"p JV"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input;pre=build/scripts/:DEBUG.py} $JDK_RESOURCE/bin/java -Dfile.encoding=utf8 -classpath ${RUN_JAR_PROG_CP_PRE}${tool:"tools/acceleo"}${RUN_JAR_PROG_CP_SUF} ru.yandex.se.logsng.tool.Cli $_INPUT_WITH_FLAG(--xsd IN $XSD) $_INPUT_WITH_FLAG(--mtl IN $MTL) $_INPUT_WITH_FLAG(--lang IN $LANG) --output-dir $BINDIR --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --mtl-root $MTL_ROOT ${hide;output_include:OUTPUT_INCLUDES} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
}
### @usage: JAVA_LIBRARY()
@@ -460,7 +460,7 @@ macro _HASH_HELPER(Args...) {
}
macro _GENTAR_HELPER(OUT_DIR[], Args...) {
- .CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/autotar_gendirs.py"} --pack ${OUT_DIR} --outs ${output;tared;suf=.$_HASH_HELPER($Args).gentar:OUT_DIR} ${kv;hide:"tared_kind nodir"}
+ .CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/autotar_gendirs.py"} --pack ${OUT_DIR} --outs ${output;tared;suf=.$_HASH_HELPER($Args).gentar:OUT_DIR} ${hide;kv:"tared_kind nodir"}
}
# tag:java-specific
@@ -484,8 +484,8 @@ _SEM_RUN_JAVA_PROGRAM=runs-ITEM \
&& runs-in ${IN} ${hide;input:IN} \
&& runs-in_dir ${IN_DIR} \
&& runs-in_dirs_inputs ${IN_DIRS_INPUTS} \
- && runs-in_noparse ${IN_NOPARSE} ${hide;input;context=TEXT:IN_NOPARSE} \
- && runs-out ${OUT} ${hide;output:OUT} ${OUT_NOAUTO} ${hide;output;noauto:OUT_NOAUTO} ${hide;output;suf=.$_HASH_HELPER($CLASSPATH $IN_DIR $IN $IN_NOPARSE $TOOL $Args).gentar:OUT_DIR} \
+ && runs-in_noparse ${IN_NOPARSE} ${hide;context=TEXT;input:IN_NOPARSE} \
+ && runs-out ${OUT} ${hide;output:OUT} ${OUT_NOAUTO} ${hide;noauto;output:OUT_NOAUTO} ${hide;output;suf=.$_HASH_HELPER($CLASSPATH $IN_DIR $IN $IN_NOPARSE $TOOL $Args).gentar:OUT_DIR} \
&& runs-out_dir ${OUT_DIR} \
&& runs-tool ${TOOL} ${hide;tool:TOOL}
@@ -493,13 +493,13 @@ macro _DO_2_RUN_JAR_PROGRAM(IN_DIRS_VAR="uniq_", IN_DIRS_INPUTS[], IN{input}[],
_LATE_GLOB(${IN_DIRS_VAR} ${suf=/**/*:IN_DIR})
_CHECK_RUN_JAVA_PROG_CLASSPATH($CLASSPATH)
.PEERDIR=build/platform/java/jdk $JDK_RESOURCE_PEERDIR
- .CMD=${kv;hide:"p RJ"} ${kv;hide:"pc blue"} ${hide:JAVA_FAKEID} ${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/mkdir.py"} ${OUT_DIR} && ${cwd:CWD} $YMAKE_PYTHON ${input:"build/scripts/setup_java_tmpdir.py"} $YMAKE_PYTHON ${input:"build/scripts/stdout2stderr.py"} ${pre=--file=:STDOUT} ${output;hide:STDOUT} ${pre=--file=:STDOUT_NOAUTO} ${output;hide;noauto:STDOUT_NOAUTO} $YMAKE_PYTHON ${input:"build/scripts/fix_java_command_file_cp.py"} --build-root ${ARCADIA_BUILD_ROOT} $JDK_RESOURCE/bin/java -Dfile.encoding=utf8 -classpath ${RUN_JAR_PROG_CP_PRE}${tool:CLASSPATH}${RUN_JAR_PROG_CP_SUF} ${Args} && $_GENTAR_HELPER($CLASSPATH $IN_DIR $IN $IN_NOPARSE $TOOL $Args OUT_DIR $OUT_DIR) ${input;hide:IN} ${input;context=TEXT;hide:IN_NOPARSE} ${output;noauto;hide:OUT_NOAUTO} ${output;hide:OUT} ${tool;hide:TOOL} ${IN_DIRS_INPUTS}
+ .CMD=${hide;kv:"p RJ"} ${hide;kv:"pc blue"} ${hide:JAVA_FAKEID} ${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/mkdir.py"} ${OUT_DIR} && ${cwd:CWD} $YMAKE_PYTHON ${input:"build/scripts/setup_java_tmpdir.py"} $YMAKE_PYTHON ${input:"build/scripts/stdout2stderr.py"} ${pre=--file=:STDOUT} ${hide;output:STDOUT} ${pre=--file=:STDOUT_NOAUTO} ${hide;noauto;output:STDOUT_NOAUTO} $YMAKE_PYTHON ${input:"build/scripts/fix_java_command_file_cp.py"} --build-root ${ARCADIA_BUILD_ROOT} $JDK_RESOURCE/bin/java -Dfile.encoding=utf8 -classpath ${RUN_JAR_PROG_CP_PRE}${tool:CLASSPATH}${RUN_JAR_PROG_CP_SUF} ${Args} && $_GENTAR_HELPER($CLASSPATH $IN_DIR $IN $IN_NOPARSE $TOOL $Args OUT_DIR $OUT_DIR) ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;noauto;output:OUT_NOAUTO} ${hide;output:OUT} ${hide;tool:TOOL} ${IN_DIRS_INPUTS}
.SEM=$_SEM_RUN_JAVA_PROGRAM
}
# tag:java-specific
macro _DO_1_RUN_JAR_PROGRAM(IN_DIRS_VAR="uniq", Args...) {
- _DO_2_RUN_JAR_PROGRAM($Args IN_DIRS_VAR $IN_DIRS_VAR IN_DIRS_INPUTS ${"$"}{input;hide:$IN_DIRS_VAR})
+ _DO_2_RUN_JAR_PROGRAM($Args IN_DIRS_VAR $IN_DIRS_VAR IN_DIRS_INPUTS ${"$"}{hide;input:$IN_DIRS_VAR})
}
# tag:java-specific
@@ -590,7 +590,7 @@ module JAVA_CONTRIB_PROXY: _JAR_BASE {
# tag:java-specific
macro _FETCH_CONTRIB(Id, Out, SBR="sbr:") {
- .CMD=${hide:SANDBOX_FAKEID} ${cwd:BINDIR} ${resource;pre=$SBR:Id} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_sandbox.py"} --resource-file $(RESOURCE_ROOT)/sbr/$Id/resource --resource-id $Id --copy-to ${output:Out} ${input;hide:"build/scripts/fetch_from.py"} ${requirements;hide:"network:full"} ${kv;hide:"p SB"} ${kv;hide:"pc yellow"} ${kv;hide:"show_out"}
+ .CMD=${hide:SANDBOX_FAKEID} ${cwd:BINDIR} ${resource;pre=$SBR:Id} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_sandbox.py"} --resource-file $(RESOURCE_ROOT)/sbr/$Id/resource --resource-id $Id --copy-to ${output:Out} ${hide;input:"build/scripts/fetch_from.py"} ${requirements;hide:"network:full"} ${hide;kv:"p SB"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
ADD_CHECK(check.resource $Id)
}
@@ -674,7 +674,7 @@ module JAVA_CONTRIB: _JAR_BASE {
_SETUP_MAVEN_EXPORT_COORDS_IF_NEED($MODDIR)
}
-MAKE_JAVA_CLASSPATH_FILE=$YMAKE_PYTHON ${input:"build/scripts/make_java_classpath_file.py"} ${input;hide:"build/scripts/process_command_files.py"}
+MAKE_JAVA_CLASSPATH_FILE=$YMAKE_PYTHON ${input:"build/scripts/make_java_classpath_file.py"} ${hide;input:"build/scripts/process_command_files.py"}
# tag:kotlin-specific
KOTLINC_OPTS_VALUE=
@@ -688,8 +688,8 @@ COLLECT_KT_CLASSPATH=${WRITER_PY} --file ${BINDIR}/kt_bfg.txt -m --ya-start-comm
LINK_KT_CLASSPATH=${MAKE_JAVA_CLASSPATH_FILE} ${BINDIR}/kt_bfg.txt $KT_CLASSPATH && $FS_TOOLS md $KT_CLASSES_DIR
COMPILE_KT= \
${cwd:ARCADIA_BUILD_ROOT} ${env:"LC_ALL=en_US.UTF-8"} $YMAKE_PYTHON ${input:"build/scripts/run_javac.py"} \
- ${input;hide:"build/scripts/build_java_with_error_prone2.py"} \
- ${input;hide:"build/scripts/setup_java_tmpdir.py"} \
+ ${hide;input:"build/scripts/build_java_with_error_prone2.py"} \
+ ${hide;input:"build/scripts/setup_java_tmpdir.py"} \
--kotlin --sources-list $KT_SRCLIST \
$JDK_RESOURCE/bin/java -jar $KOTLIN_COMPILER_RESOURCE_GLOBAL/kotlin-compiler.jar -no-stdlib -module-name $REALPRJNAME \
-jvm-target ${KOTLIN_JVM_TARGET} @$KT_SRCLIST -classpath @$KT_CLASSPATH $KOTLINC_FLAGS_VALUE -d $KT_CLASSES_DIR $KOTLINC_OPTS_VALUE
@@ -776,7 +776,7 @@ macro _PACK_JAR_HELPER(Out) {
# tag:java-specific
macro _JAVAC_RUN_HELPER(JAVAC_CMD_WITH_ARGS...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${env:"LC_ALL=en_US.UTF-8"} $YMAKE_PYTHON ${input:"build/scripts/run_javac.py"} ${input;hide:"build/scripts/build_java_with_error_prone2.py"} ${input;hide:"build/scripts/setup_java_tmpdir.py"} --with-setup-java-tmpdir --sources-list ${BINDIR}/all-java.srclst ${RUN_JAVAC_ARGS} ${JAVAC_CMD_WITH_ARGS} @${BINDIR}/all-java.srclst -classpath ${ARCADIA_BUILD_ROOT}/bfg.jar -Xpkginfo:always ${JAVAC_OPTS} $_JAR_ANN_PROC_OPTS($_JAR_ANN_PROCESSORS) -d ${BINDIR}/cls -g -encoding UTF-8
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${env:"LC_ALL=en_US.UTF-8"} $YMAKE_PYTHON ${input:"build/scripts/run_javac.py"} ${hide;input:"build/scripts/build_java_with_error_prone2.py"} ${hide;input:"build/scripts/setup_java_tmpdir.py"} --with-setup-java-tmpdir --sources-list ${BINDIR}/all-java.srclst ${RUN_JAVAC_ARGS} ${JAVAC_CMD_WITH_ARGS} @${BINDIR}/all-java.srclst -classpath ${ARCADIA_BUILD_ROOT}/bfg.jar -Xpkginfo:always ${JAVAC_OPTS} $_JAR_ANN_PROC_OPTS($_JAR_ANN_PROCESSORS) -d ${BINDIR}/cls -g -encoding UTF-8
}
# tag:java-specific
@@ -807,7 +807,7 @@ MAVEN_EXPORT_GEN_DEPLST= \
--file ${output;pre=$MODULE_PREFIX;suf=$MODULE_SUFFIX.mvn_coords:REALPRJNAME} \
--ya-start-command-file -m ${pre=D=:MAVEN_EXPORT_COORDS_GLOBAL} ${pre=E=:EXCLUDED_MAVEN_EXPORT_COORDS_GLOBAL} --ya-end-command-file \
${hide:APPLIED_EXCLUDES}
-MAVEN_EXPORT_GEN_POM=${kv;hide:"mvn_export yes"} \
+MAVEN_EXPORT_GEN_POM=${hide;kv:"mvn_export yes"} \
$YMAKE_PYTHON ${input:"build/scripts/generate_pom.py"} \
--from-coord-files \
--vcs-info $(VCS)/vcs.json \
@@ -831,13 +831,13 @@ JAVA_COVERAGE_SRCLIST_FLAG=--coverage ${output;pre=${MODULE_PREFIX};suf=.cpsf:RE
JAVA_COVERAGE_SRCLIST=
PREPARE_JAVA_BUILD_DIRS=$FS_TOOLS md ${BINDIR}/cls && $FS_TOOLS md ${BINDIR}/misc
EXTRACT_GENDIRS=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/autotar_gendirs.py"} --unpack --ext .gentar ${ext=.gentar:AUTO_INPUT}
-COLLECT_JAVA_SRCLIST=${YMAKE_PYTHON} ${input:"build/scripts/make_java_srclists.py"} ${input;hide:"build/scripts/process_command_files.py"} ${input;hide:"build/scripts/java_pack_to_file.py"} --moddir ${CURDIR} --java ${BINDIR}/all-java.srclst ${KT_SRSCLIST} ${JAVA_COVERAGE_SRCLIST} --ya-start-command-file ${ALL_JAR_SOURCES} ${ext=.java:AUTO_INPUT} ${ext=.kt:AUTO_INPUT} --ya-end-command-file
+COLLECT_JAVA_SRCLIST=${YMAKE_PYTHON} ${input:"build/scripts/make_java_srclists.py"} ${hide;input:"build/scripts/process_command_files.py"} ${hide;input:"build/scripts/java_pack_to_file.py"} --moddir ${CURDIR} --java ${BINDIR}/all-java.srclst ${KT_SRSCLIST} ${JAVA_COVERAGE_SRCLIST} --ya-start-command-file ${ALL_JAR_SOURCES} ${ext=.java:AUTO_INPUT} ${ext=.kt:AUTO_INPUT} --ya-end-command-file
COLLECT_CLASSPATH=${WRITER_PY} --file ${BINDIR}/bfg.txt -m --ya-start-command-file ${rootrel:MANAGED_PEERS_CLOSURE} $KT_CLASSPATH_ITEM --ya-end-command-file
LINK_CLASSPATH=${YMAKE_PYTHON} ${input:"build/scripts/make_manifest_from_bf.py"} ${BINDIR}/bfg.txt ${ARCADIA_BUILD_ROOT}/bfg.jar
COMPILE_JAVA_SRCLIST=$_JAVAC_RUN_HELPER($JAVAC_CMD)
PACK_JAR=$_PACK_JAR_HELPER($TARGET)
# NOTE: No && before LINK_JAR_RESOURCES, ALL_KT_COMMANDS and JAR_GEN_SRCS needed since those vars either empty or starts with &&
-LINK_JAR=${hide:JAVA_FAKEID} ${kv;hide:"p JV"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"} ${requirements;hide:"cpu:2"} \
+LINK_JAR=${hide:JAVA_FAKEID} ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"} ${requirements;hide:"cpu:2"} \
$PREPARE_JAVA_BUILD_DIRS \
&& $EXTRACT_GENDIRS \
&& $COLLECT_JAVA_SRCLIST \
@@ -1048,7 +1048,7 @@ module JAR_LIBRARY: _COMPILABLE_JAR_BASE {
DEPENDENCY_MANAGEMENT(contrib/java/org/jetbrains/kotlin/kotlin-stdlib-jdk8/${_KOTLIN_VERSION})
when ($WITH_KOTLIN_VALUE) {
KT_SRSCLIST=$KT_SRSCLIST_FLAG
- _MAKE_LINT_KT_FILES_LIST = $YMAKE_PYTHON ${input:"build/scripts/kt_copy.py"} $KT_SRCLIST ${output;noauto:"all-kt-sources.txt"} $(SOURCE_ROOT) $(BUILD_ROOT)
+ _MAKE_LINT_KT_FILES_LIST = $YMAKE_PYTHON ${input:"build/scripts/kt_copy.py"} $KT_SRCLIST ${noauto;output:"all-kt-sources.txt"} $(SOURCE_ROOT) $(BUILD_ROOT)
ALL_KT_COMMANDS=&& $COLLECT_KT_CLASSPATH && $LINK_KT_CLASSPATH
when ($WITH_KAPT_VALUE == "yes") {
# For Kapt usage see: https://kotlinlang.org/docs/kapt.html#using-in-cli
@@ -1079,7 +1079,7 @@ module JAR_LIBRARY: _COMPILABLE_JAR_BASE {
KOTLINC_OPTS_VALUE+=-P plugin:detekt-compiler-plugin:report=xml:${BINDIR}/misc/detekt-report.xml
# If there are no kt sources, the report won't be generated, however the file must be always present.
ALL_KT_COMMANDS+=&& $YMAKE_PYTHON ${input:"build/scripts/touch.py"} ${BINDIR}/misc/detekt-report.xml
- ALL_KT_COMMANDS+=&& $FS_TOOLS copy ${BINDIR}/misc/detekt-report.xml ${output;noauto:"detekt-report.xml"}
+ ALL_KT_COMMANDS+=&& $FS_TOOLS copy ${BINDIR}/misc/detekt-report.xml ${noauto;output:"detekt-report.xml"}
}
# Must be in sync with KT_CLASSES_DIR!
# There are problems in JDK13 with abs paths in classpath baked into jar file manifest. Using relative path
@@ -1126,7 +1126,7 @@ module JAR_LIBRARY: _COMPILABLE_JAR_BASE {
when($JAVA_YNDEXING == "yes") {
PEERDIR+=build/platform/java/kythe
- _DO_JAVA_YNDEXING=&& $_JAVAC_RUN_HELPER($_JAVA_YNDEXING_CMD) && ${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/find_and_tar.py"} kindex.tar .kzip ${output;hide;tared:"kindex.tar"}
+ _DO_JAVA_YNDEXING=&& $_JAVAC_RUN_HELPER($_JAVA_YNDEXING_CMD) && ${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/find_and_tar.py"} kindex.tar .kzip ${hide;output;tared:"kindex.tar"}
}
when($ERROR_PRONE_VALUE) {
@@ -1170,7 +1170,7 @@ module JAR_LIBRARY: _COMPILABLE_JAR_BASE {
}
when ($LINT_LEVEL_VALUE != "none") {
- _MAKE_JSTYLE_FILE_LIST= && ${WRITER_PY} --file ${output;noauto:"lint-java.srclst"} -m --ya-start-command-file $LINT_JAVA_SOURCES --ya-end-command-file
+ _MAKE_JSTYLE_FILE_LIST= && ${WRITER_PY} --file ${noauto;output:"lint-java.srclst"} -m --ya-start-command-file $LINT_JAVA_SOURCES --ya-end-command-file
}
SET(MODULE_TYPE JAVA_LIBRARY)
@@ -1211,11 +1211,11 @@ COLLECT_JAR_PROGRAM_CP=$FS_TOOLS link_or_copy_to_dir --ya-start-command-file ${e
MAKE_JAR_PROGRAM_CPLST=${MAKE_JAVA_CLASSPATH_FILE} --from-args ${output;pre=$MODULE_PREFIX;suf=${MODULE_SUFFIX}.cplst:REALPRJNAME} --ya-start-command-file ${nopath;rootrel;ext=.jar;pre=$BINDIR/$REALPRJNAME/:MANAGED_PEERS_CLOSURE} ${_SOURCE_JARS_CPLIST} --ya-end-command-file
TAR_CLASSPATH= && $YMAKE_PYTHON ${input:"build/scripts/find_and_tar.py"} ${output;pre=$MODULE_PREFIX;suf=.tar:REALPRJNAME} ${cwd;pre=$BINDIR/:REALPRJNAME}
DO_TAR_CLASSPATH=
-LINK_JAR_PROGRAM=${hide:JAVA_FAKEID} $FS_TOOLS md ${BINDIR}/${REALPRJNAME} && $COLLECT_JAR_PROGRAM_CP && $DO_GEN_JAVA_RUN_SH && $GEN_RUN_CP && $MAKE_JAR_PROGRAM_CPLST $DO_TAR_CLASSPATH $_GEN_USERSCRIPTS $_PACK_JDK ${kv;hide:"p JP"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+LINK_JAR_PROGRAM=${hide:JAVA_FAKEID} $FS_TOOLS md ${BINDIR}/${REALPRJNAME} && $COLLECT_JAR_PROGRAM_CP && $DO_GEN_JAVA_RUN_SH && $GEN_RUN_CP && $MAKE_JAR_PROGRAM_CPLST $DO_TAR_CLASSPATH $_GEN_USERSCRIPTS $_PACK_JDK ${hide;kv:"p JP"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
# tag:java-specific
# UBERJAR program link command
-LINK_UBERJAR_PROGRAM=${hide:JAVA_FAKEID} ${kv;hide:"p UJ"} ${MAKE_JAVA_CLASSPATH_FILE} --from-args ${output;pre=$MODULE_PREFIX;suf=${MODULE_SUFFIX}.cplst:REALPRJNAME} $TARGET \
+LINK_UBERJAR_PROGRAM=${hide:JAVA_FAKEID} ${hide;kv:"p UJ"} ${MAKE_JAVA_CLASSPATH_FILE} --from-args ${output;pre=$MODULE_PREFIX;suf=${MODULE_SUFFIX}.cplst:REALPRJNAME} $TARGET \
&& $FS_TOOLS md ${BINDIR}/${REALPRJNAME} \
&& $FS_TOOLS link_or_copy ${BINDIR}/${REALPRJNAME}.jar $TARGET \
&& $FS_TOOLS link_or_copy_to_dir --ya-start-command-file ${BINDIR}/${REALPRJNAME}.jar ${ext=.so:MANAGED_PEERS_CLOSURE} ${ext=.dll:MANAGED_PEERS_CLOSURE} ${ext=.dylib:MANAGED_PEERS_CLOSURE} ${_SOURCE_JARS} --ya-end-command-file ${BINDIR}/${REALPRJNAME} ${hide;output;ext=.jar;pre=$BINDIR/$REALPRJNAME/:REALPRJNAME} ${hide;late_out;nopath;ext=.so;pre=$BINDIR/$REALPRJNAME/:MANAGED_PEERS_CLOSURE} ${hide;late_out;nopath;ext=.dll;pre=$BINDIR/$REALPRJNAME/:MANAGED_PEERS_CLOSURE} ${hide;late_out;nopath;ext=.dylib;pre=$BINDIR/$REALPRJNAME/:MANAGED_PEERS_CLOSURE} \
@@ -1275,7 +1275,7 @@ module _JAR_RUNNABLE: _COMPILABLE_JAR_BASE {
}
# tag:java-specific
-LINK_JAR_TEST=${hide:JAVA_FAKEID} ${WRITER_PY} --file ${BINDIR}/run-bf.txt -Q -m --ya-start-command-file ${ext=.jar:MANAGED_PEERS_CLOSURE} --ya-end-command-file && ${YMAKE_PYTHON} ${input:"build/scripts/make_manifest_from_bf.py"} ${BINDIR}/run-bf.txt ${TARGET} ${kv;hide:"p JT"}
+LINK_JAR_TEST=${hide:JAVA_FAKEID} ${WRITER_PY} --file ${BINDIR}/run-bf.txt -Q -m --ya-start-command-file ${ext=.jar:MANAGED_PEERS_CLOSURE} --ya-end-command-file && ${YMAKE_PYTHON} ${input:"build/scripts/make_manifest_from_bf.py"} ${BINDIR}/run-bf.txt ${TARGET} ${hide;kv:"p JT"}
YMAKE_JAVA_TEST=
module _JAR_TEST: _COMPILABLE_JAR_BASE {
.FINAL_TARGET=yes
@@ -1499,7 +1499,7 @@ elsewhen ($JDK_VERSION == "") {
otherwise {
EXTERNAL_JAVA_JDK_RESOURCE=$JDK_RESOURCE
}
-COMPILE_JAVA=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/compile_java.py"} --ya-start-command-file --java-bin $EXTERNAL_JAVA_JDK_RESOURCE/bin/java --javac-bin $EXTERNAL_JAVA_JDK_RESOURCE/bin/javac --jar-bin $JDK_RESOURCE/bin/jar --kotlin-compiler $KOTLIN_COMPILER_RESOURCE_GLOBAL/kotlin-compiler.jar $JAVA_VCS_MF_ARG $PACKAGE_PREFIX_ARGS --jar-output $TARGET --srcs-jar-output ${output;suf=-sources.jar:REALPRJNAME} $AUTO_INPUT DELIM $JAVAC_OPTS DELIM $MANAGED_PEERS_CLOSURE DELIM -no-stdlib -module-name $REALPRJNAME -jvm-target ${KOTLIN_JVM_TARGET} ${KOTLINC_OPTS_VALUE} --ya-end-command-file ${kv;hide:"p JV"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"} ${requirements;hide:"cpu:2"} ${hide;input:"build/scripts/java_command_file.py"} ${hide;input:"build/scripts/process_command_files.py"}
+COMPILE_JAVA=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/compile_java.py"} --ya-start-command-file --java-bin $EXTERNAL_JAVA_JDK_RESOURCE/bin/java --javac-bin $EXTERNAL_JAVA_JDK_RESOURCE/bin/javac --jar-bin $JDK_RESOURCE/bin/jar --kotlin-compiler $KOTLIN_COMPILER_RESOURCE_GLOBAL/kotlin-compiler.jar $JAVA_VCS_MF_ARG $PACKAGE_PREFIX_ARGS --jar-output $TARGET --srcs-jar-output ${output;suf=-sources.jar:REALPRJNAME} $AUTO_INPUT DELIM $JAVAC_OPTS DELIM $MANAGED_PEERS_CLOSURE DELIM -no-stdlib -module-name $REALPRJNAME -jvm-target ${KOTLIN_JVM_TARGET} ${KOTLINC_OPTS_VALUE} --ya-end-command-file ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"} ${requirements;hide:"cpu:2"} ${hide;input:"build/scripts/java_command_file.py"} ${hide;input:"build/scripts/process_command_files.py"}
ARGS_DELIM="MACRO_CALLS_DELIM"
@@ -2089,7 +2089,7 @@ macro JAR_EXCLUDE(Filters...) {
}
# tag:java-specific
-_COMPILE_JSRC=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/compile_jsrc.py"} --input $AUTO_INPUT --output $TARGET --prefix $BINDIR ${kv;hide:"p JC"} ${kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+_COMPILE_JSRC=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/compile_jsrc.py"} --input $AUTO_INPUT --output $TARGET --prefix $BINDIR ${hide;kv:"p JC"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
# tag:java-specific
COMPILE_JSRC_MF=$_COMPILE_JSRC && $GENERATE_MF
@@ -2142,7 +2142,7 @@ otherwise {
###
### Specify JDK version for module
macro JDK_VERSION(Arg) {
- .SEM=required_jdk $Arg ${output;hide:"JdkVersionFakeProp.java"}
+ .SEM=required_jdk $Arg ${hide;output:"JdkVersionFakeProp.java"}
SET(JDK_REAL_VERSION $Arg)
_JDK_VERSION_MACRO_CHECK($Arg)
}
diff --git a/build/conf/project_specific/other.conf b/build/conf/project_specific/other.conf
index d187e706c4..0a121a5f04 100644
--- a/build/conf/project_specific/other.conf
+++ b/build/conf/project_specific/other.conf
@@ -7,5 +7,5 @@ BUILD_CATBOOST_SCRIPT=build/scripts/build_catboost.py
### cbname - name for a variable (of NCatboostCalcer::TCatboostCalcer type) to be available in CPP code.
### CatBoost specific macro.
macro BUILD_CATBOOST(CbModel, CbName) {
- .CMD=$YMAKE_PYTHON ${input:BUILD_CATBOOST_SCRIPT} build_cb_f $ARCADIA_ROOT $ARCH_TOOL ${input:CbModel} $CbName ${output;pre=cb.:CbName.cpp} ${output;hide;pre=CB_External_;suf=.rodata:CbName} ${output_include;hide:"kernel/catboost/catboost_calcer.h"} ${kv;hide:"p CB"} ${kv;hide:"pc yellow"}
+ .CMD=$YMAKE_PYTHON ${input:BUILD_CATBOOST_SCRIPT} build_cb_f $ARCADIA_ROOT $ARCH_TOOL ${input:CbModel} $CbName ${output;pre=cb.:CbName.cpp} ${hide;output;pre=CB_External_;suf=.rodata:CbName} ${hide;output_include:"kernel/catboost/catboost_calcer.h"} ${hide;kv:"p CB"} ${hide;kv:"pc yellow"}
}
diff --git a/build/conf/project_specific/yt.conf b/build/conf/project_specific/yt.conf
index d0c5cc9512..00c7b96ad0 100644
--- a/build/conf/project_specific/yt.conf
+++ b/build/conf/project_specific/yt.conf
@@ -1,5 +1,5 @@
macro GENERATE_YT_RECORD(Yaml, OUTPUT_INCLUDES[]) {
- .CMD=${tool:"yt/yt/tools/record_codegen"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${output;norel;noext;suf=.record.cpp:Yaml} ${output;hide;norel;noext;suf=.record.h:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${output_include;hide:OUTPUT_INCLUDES} ${output_include;hide:"yt/yt/client/table_client/record_codegen_deps.h"} ${kv;hide:"p RC"}
- .SEM=find_package Python3 && packages-ITEM && packages-name Python3 && mpackages-ITEM && mpackages-name Python3 && add_custom_command OUTPUT ${output;norel;noext;suf=.record.cpp:Yaml} ${output;norel;noext;suf=.record.h:Yaml} DEPENDS ${input:Yaml} ${input:"yt/yt/tools/record_codegen/__main__.py"} ${input:"yt/python/yt/record_codegen_helpers/__init__.py"} COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=$ENV{PYTHONPATH}:${ARCADIA_ROOT}/yt/python/yt" ${Python3_EXECUTABLE} ${input:"yt/yt/tools/record_codegen/__main__.py"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${output;norel;noext;suf=.record.cpp:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${output;hide;norel;noext;suf=.record.h:Yaml} && target_commands-ITEM && target_commands-macro add_custom_command && target_commands-args OUTPUT ${output;norel;noext;suf=.record.cpp:Yaml} ${output;norel;noext;suf=.record.h:Yaml} DEPENDS ${input:Yaml} ${input:"yt/yt/tools/record_codegen/__main__.py"} ${input:"yt/python/yt/record_codegen_helpers/__init__.py"} COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=$ENV{PYTHONPATH}:${ARCADIA_ROOT}/yt/python/yt" ${Python3_EXECUTABLE} ${input:"yt/yt/tools/record_codegen/__main__.py"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${output;norel;noext;suf=.record.cpp:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${output;hide;norel;noext;suf=.record.h:Yaml}
+ .CMD=${tool:"yt/yt/tools/record_codegen"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${output;norel;noext;suf=.record.cpp:Yaml} ${hide;output;norel;noext;suf=.record.h:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${hide;output_include:OUTPUT_INCLUDES} ${hide;output_include:"yt/yt/client/table_client/record_codegen_deps.h"} ${hide;kv:"p RC"}
+ .SEM=find_package Python3 && packages-ITEM && packages-name Python3 && mpackages-ITEM && mpackages-name Python3 && add_custom_command OUTPUT ${output;norel;noext;suf=.record.cpp:Yaml} ${output;norel;noext;suf=.record.h:Yaml} DEPENDS ${input:Yaml} ${input:"yt/yt/tools/record_codegen/__main__.py"} ${input:"yt/python/yt/record_codegen_helpers/__init__.py"} COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=$ENV{PYTHONPATH}:${ARCADIA_ROOT}/yt/python/yt" ${Python3_EXECUTABLE} ${input:"yt/yt/tools/record_codegen/__main__.py"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${output;norel;noext;suf=.record.cpp:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${hide;output;norel;noext;suf=.record.h:Yaml} && target_commands-ITEM && target_commands-macro add_custom_command && target_commands-args OUTPUT ${output;norel;noext;suf=.record.cpp:Yaml} ${output;norel;noext;suf=.record.h:Yaml} DEPENDS ${input:Yaml} ${input:"yt/yt/tools/record_codegen/__main__.py"} ${input:"yt/python/yt/record_codegen_helpers/__init__.py"} COMMAND ${CMAKE_COMMAND} -E env "PYTHONPATH=$ENV{PYTHONPATH}:${ARCADIA_ROOT}/yt/python/yt" ${Python3_EXECUTABLE} ${input:"yt/yt/tools/record_codegen/__main__.py"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${output;norel;noext;suf=.record.cpp:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${hide;output;norel;noext;suf=.record.h:Yaml}
PEERDIR(yt/yt/client)
}
diff --git a/build/conf/proto.conf b/build/conf/proto.conf
index b53adb1256..0f906cabab 100644
--- a/build/conf/proto.conf
+++ b/build/conf/proto.conf
@@ -150,8 +150,8 @@ macro _PROTO_PLUGIN_ARGS_BASE(Name, Tool, OutParm...) {
# tag:proto tag:python-specific
macro _ADD_PY_PROTO_OUT(Suf) {
- SET_APPEND(PY_PROTO_OUTS \${output;hide;noauto;norel;nopath;noext;suf=$Suf:File})
- SET_APPEND(PY_PROTO_OUTS_INTERNAL \${output;hide;noauto;norel;nopath;noext;suf=__int${_PYTHON_VER}__$Suf:File} \${hide;kv:"ext_out_name_for_\${nopath;noext;suf=__int${_PYTHON_VER}__$Suf:File} \${nopath;noext;suf=$Suf:File}"})
+ SET_APPEND(PY_PROTO_OUTS \${hide;noauto;output;norel;nopath;noext;suf=$Suf:File})
+ SET_APPEND(PY_PROTO_OUTS_INTERNAL \${hide;noauto;output;norel;nopath;noext;suf=__int${_PYTHON_VER}__$Suf:File} \${hide;kv:"ext_out_name_for_\${nopath;noext;suf=__int${_PYTHON_VER}__$Suf:File} \${nopath;noext;suf=$Suf:File}"})
# XXX fix variable expansion in plugins
SET(PY_PROTO_SUFFIXES $PY_PROTO_SUFFIXES $Suf)
}
@@ -210,7 +210,7 @@ macro WITH_KOTLIN_GRPC() {
# tag:proto tag:cpp-specific
macro _ADD_CPP_PROTO_OUT(Suf) {
- .SEM=append_target_property PROTOC_EXTRA_OUTS $Suf ${output;hide;suf=.o:Suf} $_ADD_SEM_PROP_IF_NON_EMPTY(PROTO_NAMESPACE $PROTO_NAMESPACE)
+ .SEM=append_target_property PROTOC_EXTRA_OUTS $Suf ${hide;output;suf=.o:Suf} $_ADD_SEM_PROP_IF_NON_EMPTY(PROTO_NAMESPACE $PROTO_NAMESPACE)
SET_APPEND(CPP_PROTO_OUTS \${output;norel;nopath;noext;suf=$Suf:File})
SET_APPEND(PROTOC_EXTRA_OUTS_SEM && protoc_extra_outs $Suf)
@@ -228,7 +228,7 @@ CPP_PROTOBUF_PEERS=
### Define protoc plugin for C++ with given Name that emits code into regular outputs
### using Tool. Extra dependencies are passed via DEPS.
macro CPP_PROTO_PLUGIN0(NAME, TOOL, DEPS[], EXTRA_OUT_FLAG="") {
- .SEM=target_proto_plugin $NAME ${tool;rootrel:TOOL} ${output;hide;suf=.fake.o:NAME} && target_macroses-ITEM && target_macroses-macro target_proto_plugin && target_macroses-args $NAME ${tool;rootrel:TOOL} ${output;hide;suf=.fake.o:NAME}
+ .SEM=target_proto_plugin $NAME ${tool;rootrel:TOOL} ${hide;output;suf=.fake.o:NAME} && target_macroses-ITEM && target_macroses-macro target_proto_plugin && target_macroses-args $NAME ${tool;rootrel:TOOL} ${hide;output;suf=.fake.o:NAME}
SET_APPEND(CPP_PROTO_OPTS $_PROTO_PLUGIN_ARGS_BASE($NAME $TOOL $EXTRA_OUT_FLAG))
# XXX fix variable expansion in plugins
@@ -256,7 +256,7 @@ macro CPP_PROTO_PLUGIN2(NAME, TOOL, SUF1, SUF2, DEPS[], EXTRA_OUT_FLAG="") {
CPP_PROTO_PLUGIN($NAME $TOOL $SUF1 DEPS $DEPS ${pre=EXTRA_OUT_FLAG :EXTRA_OUT_FLAG})
_ADD_CPP_PROTO_OUT($SUF2)
- SET_APPEND(CPP_PROTO_OUTS_SEM \${output;hide;norel;nopath;noext;suf=$SUF2:File})
+ SET_APPEND(CPP_PROTO_OUTS_SEM \${hide;output;norel;nopath;noext;suf=$SUF2:File})
}
# tag:proto
@@ -357,7 +357,7 @@ GO_PROTOBUF_WELLKNOWN_TYPES=\
### Ext using Tool. Extra dependencies are passed via DEPS.
macro GO_PROTO_PLUGIN(NAME, EXT, TOOL, DEPS[]) {
SET_APPEND(GO_PROTO_OPTS $_PROTO_PLUGIN_ARGS_BASE($NAME $TOOL))
- SET_APPEND(GO_PROTO_OUTS \${output;hide;noauto;norel;nopath;noext;suf=$EXT:File})
+ SET_APPEND(GO_PROTO_OUTS \${hide;noauto;output;norel;nopath;noext;suf=$EXT:File})
PEERDIR(${DEPS})
}
@@ -366,7 +366,7 @@ GO_PROTO_CMDLINE=${cwd;rootdir;input:File} $YMAKE_PYTHON3 ${input:"build/scripts
# tag:go-specific tag:proto
macro _GO_PROTO_CMD_IMPL(File, OPTS...) {
- .CMD=$GO_PROTO_CMDLINE $OPTS ${kv;hide:"p PB"} ${kv;hide:"pc yellow"}
+ .CMD=$GO_PROTO_CMDLINE $OPTS ${hide;kv:"p PB"} ${hide;kv:"pc yellow"}
.PEERDIR=${GO_PROTOBUF_IMPORTS} ${GO_PROTOBUF_WELLKNOWN_TYPES}
.ADDINCL=FOR proto ${PROTOBUF_INCLUDE_PATH}
}
@@ -381,7 +381,7 @@ macro _GO_PROTO_CMD(File) {
###
### Generate .yson.go from .proto using yt/yt/orm/go/codegen/yson/internal/proto-yson-gen/cmd/proto-yson-gen
macro YT_ORM_PROTO_YSON(OUT_OPTS[], Files...) {
- .CMD=${cwd:BINDIR} $PROTOC --plugin=protoc-gen-custom=${tool:"yt/yt/orm/go/codegen/yson/internal/proto-yson-gen/cmd/proto-yson-gen"} -I=${ARCADIA_ROOT}/${PROTO_NAMESPACE} ${pre=-I=:_PROTO__INCLUDE} -I=${ARCADIA_ROOT} --custom_out="$OUT_OPTS paths=base_name:." --custom_opt="goroot=${GO_TOOLS_ROOT}" $_PROTOC_FLAGS ${input:Files} ${output;hide;noauto;nopath;noext;suf=.yson.go:Files} ${hide:PROTO_FAKEID}
+ .CMD=${cwd:BINDIR} $PROTOC --plugin=protoc-gen-custom=${tool:"yt/yt/orm/go/codegen/yson/internal/proto-yson-gen/cmd/proto-yson-gen"} -I=${ARCADIA_ROOT}/${PROTO_NAMESPACE} ${pre=-I=:_PROTO__INCLUDE} -I=${ARCADIA_ROOT} --custom_out="$OUT_OPTS paths=base_name:." --custom_opt="goroot=${GO_TOOLS_ROOT}" $_PROTOC_FLAGS ${input:Files} ${hide;noauto;output;nopath;noext;suf=.yson.go:Files} ${hide:PROTO_FAKEID}
.ADDINCL=FOR proto ${ARCADIA_ROOT}/${MODDIR} FOR proto ${ARCADIA_ROOT}/${GO_TEST_IMPORT_PATH} FOR proto yt ${ARCADIA_BUILD_ROOT}/yt FOR proto ${PROTOBUF_INCLUDE_PATH}
.PEERDIR=$GOSTD/strings $GOSTD/fmt $GOSTD/errors $GOSTD/encoding/json library/go/core/xerrors yt/go/yson yt/go/yterrors yt/yt/orm/go/codegen/yson/ytypes contrib/libs/protobuf
@@ -389,7 +389,7 @@ macro YT_ORM_PROTO_YSON(OUT_OPTS[], Files...) {
_SEM_CPP_PROTO_CMD=target_proto_messages PRIVATE ${input:File} \
&& target_options-privates-ITEM && target_options-privates-option target_proto_messages && target_options-privates-args ${input:File} \
- $CPP_PROTO_OUTS_SEM ${output;hide;suf=${OBJ_SUF}.pb.o:File} $DEFAULT_PROTOC_TOOLS \
+ $CPP_PROTO_OUTS_SEM ${hide;output;suf=${OBJ_SUF}.pb.o:File} $DEFAULT_PROTOC_TOOLS \
$PROTOC_EXTRA_OUTS_SEM \
&& set_global_flags COMMON_PROTOC_FLAGS \
&& platform_vars-COMMON_PROTOC_FLAGS "" \
@@ -400,20 +400,20 @@ _SEM_CPP_PROTO_CMD=target_proto_messages PRIVATE ${input:File} \
# tag:proto
macro _CPP_PROTO_CMD(File) {
- .CMD=$CPP_PROTO_CMDLINE $CPP_PROTO_OPTS ${kv;hide:"p PB"} ${kv;hide:"pc yellow"}
+ .CMD=$CPP_PROTO_CMDLINE $CPP_PROTO_OPTS ${hide;kv:"p PB"} ${hide;kv:"pc yellow"}
.SEM=$_SEM_CPP_PROTO_CMD
.PEERDIR=contrib/libs/protobuf
}
# tag:proto
macro _CPP_VANILLA_PROTO_CMD(File) {
- .CMD=$CPP_PROTO_CMDLINE $CPP_PROTO_OPTS ${kv;hide:"p PB"} ${kv;hide:"pc yellow"}
+ .CMD=$CPP_PROTO_CMDLINE $CPP_PROTO_OPTS ${hide;kv:"p PB"} ${hide;kv:"pc yellow"}
.PEERDIR=contrib/libs/protobuf_std
}
_SEM_CPP_EV_CMD=target_ev_messages PRIVATE ${input:File} \
&& target_options-privates-ITEM && target_options-privates-option target_ev_messages && target_options-privates-args ${input:File} \
- $CPP_EV_OUTS_SEM ${output;hide;suf=${OBJ_SUF}.pb.o:File} ${hide;tool:"tools/event2cpp/bin"} $DEFAULT_PROTOC_TOOLS \
+ $CPP_EV_OUTS_SEM ${hide;output;suf=${OBJ_SUF}.pb.o:File} ${hide;tool:"tools/event2cpp/bin"} $DEFAULT_PROTOC_TOOLS \
&& set_global_flags COMMON_PROTOC_FLAGS \
&& platform_vars-COMMON_PROTOC_FLAGS "" \
&& target_proto_outs --cpp_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE $PROTOC_STYLEGUIDE_OUT --event2cpp_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE \
@@ -423,7 +423,7 @@ _SEM_CPP_EV_CMD=target_ev_messages PRIVATE ${input:File} \
# tag:proto
macro _CPP_EVLOG_CMD(File) {
- .CMD=$CPP_EV_CMDLINE $CPP_EV_OPTS ${kv;hide:"p EV"} ${kv;hide:"pc yellow"}
+ .CMD=$CPP_EV_CMDLINE $CPP_EV_OPTS ${hide;kv:"p EV"} ${hide;kv:"pc yellow"}
.SEM=$_SEM_CPP_EV_CMD
.PEERDIR=library/cpp/eventlog contrib/libs/protobuf
}
@@ -431,14 +431,14 @@ macro _CPP_EVLOG_CMD(File) {
# tag:proto
macro _CPP_PROTO_EVLOG_CMD(File) {
# process .proto as .ev
- .CMD=$CPP_PROTO_CMDLINE $CPP_EV_OPTS ${kv;hide:"p PB"} ${kv;hide:"pc yellow"}
+ .CMD=$CPP_PROTO_CMDLINE $CPP_EV_OPTS ${hide;kv:"p PB"} ${hide;kv:"pc yellow"}
.PEERDIR=library/cpp/eventlog contrib/libs/protobuf
}
# tag:proto
macro _CPP_CFGPROTO_CMD(File) {
# keep extension in output just as in EV: this is hard-coded behaviour of protoc for non-.proto extensions
- .CMD=$CPP_EV_CMDLINE --plugin=protoc-gen-config=${tool:"library/cpp/proto_config/plugin"} --config_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE ${kv;hide:"p PB"} ${kv;hide:"pc yellow"}
+ .CMD=$CPP_EV_CMDLINE --plugin=protoc-gen-config=${tool:"library/cpp/proto_config/plugin"} --config_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE ${hide;kv:"p PB"} ${hide;kv:"pc yellow"}
.PEERDIR=library/cpp/proto_config/codegen library/cpp/proto_config/protos contrib/libs/protobuf
}
@@ -458,7 +458,7 @@ macro NO_MYPY() {
# tag:proto tag:python-specific
macro _PY_PROTO_CMD_BASE(File, Suf, Args...) {
- .CMD=$PY_PROTOC -I=./$PROTO_NAMESPACE -I=$ARCADIA_ROOT/$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_BUILD_ROOT -I=$PROTOBUF_INCLUDE_PATH --python_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE $_PROTOC_FLAGS ${input;rootrel:File} ${output;main;hide;noauto;norel;nopath;noext;suf=$Suf:File} ${kv;hide:"p PB"} ${kv;hide:"pc yellow"} $Args ${hide:PROTO_FAKEID}
+ .CMD=$PY_PROTOC -I=./$PROTO_NAMESPACE -I=$ARCADIA_ROOT/$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_BUILD_ROOT -I=$PROTOBUF_INCLUDE_PATH --python_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE $_PROTOC_FLAGS ${input;rootrel:File} ${output;main;hide;noauto;norel;nopath;noext;suf=$Suf:File} ${hide;kv:"p PB"} ${hide;kv:"pc yellow"} $Args ${hide:PROTO_FAKEID}
}
# tag:proto tag:python-specific
@@ -505,7 +505,7 @@ otherwise {
KOTLIN_PROTO_FLAGS=
# tag:proto tag:java-specific
macro _JAVA_PROTO_CMD(File) {
- .CMD=${cwd;rootdir;input:File} $YMAKE_PYTHON ${input:"build/scripts/tared_protoc.py"} --tar-output ${output;norel;nopath;noext;suf=.jsrc:File} --protoc-out-dir $ARCADIA_BUILD_ROOT/java_out $JAVA_PROTOC -I=./$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_ROOT --java_out=${_JAVA_PROTO_LITE_ARG}$ARCADIA_BUILD_ROOT/java_out ${KOTLIN_PROTO_FLAGS} $_PROTOC_FLAGS ${input;rootrel:File} ${kv;hide:"p PB"} ${kv;hide:"pc yellow"} $JAVA_PROTO_ARGS ${hide:PROTO_FAKEID}
+ .CMD=${cwd;rootdir;input:File} $YMAKE_PYTHON ${input:"build/scripts/tared_protoc.py"} --tar-output ${output;norel;nopath;noext;suf=.jsrc:File} --protoc-out-dir $ARCADIA_BUILD_ROOT/java_out $JAVA_PROTOC -I=./$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_ROOT --java_out=${_JAVA_PROTO_LITE_ARG}$ARCADIA_BUILD_ROOT/java_out ${KOTLIN_PROTO_FLAGS} $_PROTOC_FLAGS ${input;rootrel:File} ${hide;kv:"p PB"} ${hide;kv:"pc yellow"} $JAVA_PROTO_ARGS ${hide:PROTO_FAKEID}
.SEM=proto_files ${input;rootrel:File} ${hide;output:File.jsrc}
}
@@ -544,7 +544,7 @@ macro _PY_EVLOG_CMD_INTERNAL(File) {
# tag:java-specific tag:proto
macro _JAVA_EVLOG_CMD(File) {
- .CMD=$COPY_CMD ${input:File} ${output;nopath;noext;norel;suf=_ev.proto:File} ${kv;hide:"p EV"} ${kv;hide:"pc yellow"}
+ .CMD=$COPY_CMD ${input:File} ${output;nopath;noext;norel;suf=_ev.proto:File} ${hide;kv:"p EV"} ${hide;kv:"pc yellow"}
.PEERDIR=library/cpp/eventlog/proto
}
@@ -583,7 +583,7 @@ macro GRPC_WITH_GMOCK() {
SET(_GRPC_GMOCK_OUTFLAG EXTRA_OUT_FLAG generate_mock_code=true)
GRPC()
_ADD_CPP_PROTO_OUT(_mock$_GRPC_SUF_H)
- SET_APPEND(CPP_PROTO_OUTS_SEM ${output;hide;norel;nopath;noext;suf=_mock$_GRPC_SUF_H:File})
+ SET_APPEND(CPP_PROTO_OUTS_SEM ${hide;output;norel;nopath;noext;suf=_mock$_GRPC_SUF_H:File})
}
macro GO_PROTO_USE_V2() {
@@ -638,13 +638,13 @@ macro _GENERATE_PY_EVS_INTERNAL(FILES...) {
###
### TODO: proper implementation needed
macro LIST_PROTO(TO="files.proto", Files...) {
- .CMD=$YMAKE_PYTHON3 ${input:"build/scripts/list.py"} ${Files} ${input;hide:Files} ${stdout;output;noauto:TO} ${output_include;from_input;hide:Files}
+ .CMD=$YMAKE_PYTHON3 ${input:"build/scripts/list.py"} ${Files} ${hide;input:Files} ${stdout;noauto;output:TO} ${output_include;from_input;hide:Files}
_COMPILE_LIST_PROTO(${TO})
_EXPOSE(${TO})
}
macro _COMPILE_LIST_PROTO(SRC) {
- .CMD=$YMAKE_PYTHON ${input:"build/scripts/touch.py"} ${input;hide:SRC} ${output;noext;suf=.pb.h:SRC}
+ .CMD=$YMAKE_PYTHON ${input:"build/scripts/touch.py"} ${hide;input:SRC} ${output;noext;suf=.pb.h:SRC}
}
# tag:proto
@@ -652,8 +652,8 @@ macro _PROTO_DESC_RAWPROTO_CMD(File) {
.CMD=${cwd;rootdir;input:File} $YMAKE_PYTHON3 ${input:"build/scripts/desc_rawproto_wrapper.py"} --desc-output ${output;suf=.desc:File} --rawproto-output ${output;norel;suf=.${_MODDIR_HASH}.rawproto:File} --proto-file ${input;rootrel:File} -- $PROTOC -I=./$PROTO_NAMESPACE -I=$ARCADIA_ROOT/$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_BUILD_ROOT -I=$PROTOBUF_INCLUDE_PATH --include_source_info $_PROTOC_FLAGS ${hide:PROTO_FAKEID}
}
-_PROTO_DESC_MERGE_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/merge_files.py"} $TARGET ${ext=.desc:AUTO_INPUT} ${kv;hide:"p PD"} ${kv;hide:"pc light-cyan"} && ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/collect_rawproto.py"} --output ${output;suf=.protosrc:REALPRJNAME} ${rootrel;ext=.rawproto:AUTO_INPUT}
-_PROTO_DESC_MERGE_PEERS_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/merge_files.py"} $TARGET $PEERS ${ext=.protodesc:SRCS_GLOBAL} ${kv;hide:"p PD"} ${kv;hide:"pc light-cyan"} && ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/merge_protosrc.py"} --output ${output;suf=.tar:REALPRJNAME} ${rootrel:PEERS}
+_PROTO_DESC_MERGE_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/merge_files.py"} $TARGET ${ext=.desc:AUTO_INPUT} ${hide;kv:"p PD"} ${hide;kv:"pc light-cyan"} && ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/collect_rawproto.py"} --output ${output;suf=.protosrc:REALPRJNAME} ${rootrel;ext=.rawproto:AUTO_INPUT}
+_PROTO_DESC_MERGE_PEERS_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/merge_files.py"} $TARGET $PEERS ${ext=.protodesc:SRCS_GLOBAL} ${hide;kv:"p PD"} ${hide;kv:"pc light-cyan"} && ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/merge_protosrc.py"} --output ${output;suf=.tar:REALPRJNAME} ${rootrel:PEERS}
NEED_GOOGLE_PROTO_PEERDIRS=yes
diff --git a/build/conf/python.conf b/build/conf/python.conf
index eaa2c402c0..756d986315 100644
--- a/build/conf/python.conf
+++ b/build/conf/python.conf
@@ -31,29 +31,29 @@ contrib/tools/cython/Cython/Utility/TestUtilityLoader.c \
contrib/tools/cython/Cython/Utility/TypeConversion.c
macro _UNWRAP_TEXT_INPUTS(Files...) {
- .CMD=${input;context=TEXT;hide:Files}
+ .CMD=${hide;context=TEXT;input:Files}
}
macro _UNWRAP_OUTPUT_INCLUDES(Files...) {
- .CMD=${output_include;hide:Files}
+ .CMD=${hide;output_include:Files}
}
CYTHON_OUTPUT_INCLUDES=\
-${output_include;hide:"contrib/libs/python/Include/compile.h"} \
-${output_include;hide:"contrib/libs/python/Include/frameobject.h"} \
-${output_include;hide:"contrib/libs/python/Include/longintrepr.h"} \
-${output_include;hide:"contrib/libs/python/Include/pyconfig.h"} \
-${output_include;hide:"contrib/libs/python/Include/Python.h"} \
-${output_include;hide:"contrib/libs/python/Include/pythread.h"} \
-${output_include;hide:"contrib/libs/python/Include/structmember.h"} \
-${output_include;hide:"contrib/libs/python/Include/traceback.h"} \
-${output_include;hide:"contrib/tools/cython/generated_c_headers.h"} \
-${output_include;hide:"omp.h"} \
+${hide;output_include:"contrib/libs/python/Include/compile.h"} \
+${hide;output_include:"contrib/libs/python/Include/frameobject.h"} \
+${hide;output_include:"contrib/libs/python/Include/longintrepr.h"} \
+${hide;output_include:"contrib/libs/python/Include/pyconfig.h"} \
+${hide;output_include:"contrib/libs/python/Include/Python.h"} \
+${hide;output_include:"contrib/libs/python/Include/pythread.h"} \
+${hide;output_include:"contrib/libs/python/Include/structmember.h"} \
+${hide;output_include:"contrib/libs/python/Include/traceback.h"} \
+${hide;output_include:"contrib/tools/cython/generated_c_headers.h"} \
+${hide;output_include:"omp.h"} \
$_UNWRAP_OUTPUT_INCLUDES($CYTHON_EMBEDED_FILES)
# tag:cython-specific
-CYTHON_CPP_OUTPUT_INCLUDES=${output_include;hide:"contrib/tools/cython/generated_cpp_headers.h"}
+CYTHON_CPP_OUTPUT_INCLUDES=${hide;output_include:"contrib/tools/cython/generated_cpp_headers.h"}
# tag:cython-specific
CYTHON_PREDEFINED_INCLUDES=$_UNWRAP_TEXT_INPUTS($CYTHON_EMBEDED_FILES)
@@ -613,8 +613,8 @@ module PY2_LIBRARY: _LIBRARY {
when ($PY_PROTO_MYPY_ENABLED == "yes") {
PY_PROTO_MYPY_SUFFIX=_pb2.pyi
- PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=_pb2.pyi:File}
- PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=__intpy2___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__intpy2___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
+ PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;output;norel;nopath;noext;suf=_pb2.pyi:File}
+ PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;output;norel;nopath;noext;suf=__intpy2___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__intpy2___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
}
SET(MODULE_LANG PY2)
@@ -660,8 +660,8 @@ module PY3_LIBRARY: _LIBRARY {
when ($PY_PROTO_MYPY_ENABLED == "yes") {
PY_PROTO_MYPY_SUFFIX=_pb2.pyi
- PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=_pb2.pyi:File}
- PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${output;hide;noauto;norel;nopath;noext;suf=__intpy3___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__intpy3___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
+ PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;output;norel;nopath;noext;suf=_pb2.pyi:File}
+ PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;output;norel;nopath;noext;suf=__intpy3___pb2.pyi:File} ${hide;kv:"ext_out_name_for_${nopath;noext;suf=__intpy3___pb2.pyi:File} ${nopath;noext;suf=_pb2.pyi:File}"})
}
SET(MODULE_LANG PY3)
@@ -732,7 +732,7 @@ module _BASE_PY_PROGRAM: _BASE_PROGRAM {
# tag:python-specific tag:codenav
when ($CODENAVIGATION && $NOCODENAVIGATION != "yes") {
- PY3_PROGRAM_LINK_EXE=$LINK_EXE ${kv;hide:"py3yndex $TARGET"}
+ PY3_PROGRAM_LINK_EXE=$LINK_EXE ${hide;kv:"py3yndex $TARGET"}
}
otherwise {
PY3_PROGRAM_LINK_EXE=$LINK_EXE
diff --git a/build/conf/swig.conf b/build/conf/swig.conf
index 8f175d5003..d29b9667df 100644
--- a/build/conf/swig.conf
+++ b/build/conf/swig.conf
@@ -6,15 +6,15 @@ _SWIG_LIBRARY_ABS=$ARCADIA_ROOT/$_SWIG_LIBRARY
SWIG_IMPLICIT_INCLUDES = swig.swg go.swg java.swg perl5.swg python.swg
_SWIG_CMD=$_SWIG_PYTHON_CMD
-_SWIG_SEM_TO_MODULE_LINK=${output;hide;suf=.o:SRC}
+_SWIG_SEM_TO_MODULE_LINK=${hide;output;suf=.o:SRC}
-_SWIG_PYTHON_CMD=${_SWIG_TOOL} -module ${REALPRJNAME} -cpperraswarn -c++ -python -interface ${MODULE_PREFIX}${REALPRJNAME} -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${output;noauto;add_to_outs;hide;tobindir;suf=.py:REALPRJNAME} -outdir ${BINDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
+_SWIG_PYTHON_CMD=${_SWIG_TOOL} -module ${REALPRJNAME} -cpperraswarn -c++ -python -interface ${MODULE_PREFIX}${REALPRJNAME} -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${noauto;output;add_to_outs;hide;tobindir;suf=.py:REALPRJNAME} -outdir ${BINDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
-_SWIG_PERL_CMD=${_SWIG_TOOL} -c++ -cpperraswarn -module ${REALPRJNAME} -shadow -perl -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${output;noauto;add_to_outs;hide;tobindir;suf=.pm:REALPRJNAME} -outdir ${ARCADIA_BUILD_ROOT}/${MODDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
+_SWIG_PERL_CMD=${_SWIG_TOOL} -c++ -cpperraswarn -module ${REALPRJNAME} -shadow -perl -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${noauto;output;add_to_outs;hide;tobindir;suf=.pm:REALPRJNAME} -outdir ${ARCADIA_BUILD_ROOT}/${MODDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
-_SWIG_JNI_CPP_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --out-header ${output;main;noext;suf=_wrap.swg.h:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${output;noext;suf=_wrap.swg.cpp:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
-_SWIG_JNI_JAVA_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} --jsrc ${output;main;suf=.jsrc:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${BINDIR}/unused.cpp ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
-_SWIG_JNI_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --out-header ${output;main;noext;suf=_wrap.swg.h:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} --jsrc ${output;suf=.jsrc:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${output;noext;suf=_wrap.swg.cpp:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
+_SWIG_JNI_CPP_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --out-header ${output;main;noext;suf=_wrap.swg.h:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${output;noext;suf=_wrap.swg.cpp:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
+_SWIG_JNI_JAVA_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} --jsrc ${output;main;suf=.jsrc:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${BINDIR}/unused.cpp ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
+_SWIG_JNI_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --out-header ${output;main;noext;suf=_wrap.swg.h:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} --jsrc ${output;suf=.jsrc:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${output;noext;suf=_wrap.swg.cpp:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
_SWIG_JNI_PEERDIR=contrib/libs/jdk
REAL_SWIG_DLL_JAR_CMD=$GENERATE_VCS_JAVA_INFO_NODEP && ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/build_dll_and_java.py"} $JAVA_SWIG_DELIM $REAL_LINK_DYN_LIB $JAVA_SWIG_DELIM $COMPILE_JAVA $JAVA_SWIG_DELIM $AUTO_INPUT $JAVA_SWIG_DELIM $TARGET $JAVA_SWIG_DELIM ${output;suf=.jar:REALPRJNAME} $JAVA_SWIG_DELIM ${output;suf=-sources.jar:REALPRJNAME} $JAVA_SWIG_DELIM $ARCADIA_BUILD_ROOT $ARCADIA_ROOT
@@ -29,7 +29,7 @@ when ($USE_SYSTEM_JDK == "yes" || $OS_ANDROID == "yes") {
### Run swig on Src to produce DstSubPrefix.py and DstSubPrefix_swg.cpp that
### provides DstSubPrefix_swg python module.
macro _SWIG_PYTHON_CPP(Src, DstSubPrefix) {
- .CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -c++ -python -module ${nopath:DstSubPrefix} -interface ${nopath;suf=_swg:DstSubPrefix} -o ${output;suf=.swg.cpp:DstSubPrefix} ${input:Src} ${output;noauto;hide;suf=.py:DstSubPrefix} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
+ .CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -c++ -python -module ${nopath:DstSubPrefix} -interface ${nopath;suf=_swg:DstSubPrefix} -o ${output;suf=.swg.cpp:DstSubPrefix} ${input:Src} ${hide;noauto;output;suf=.py:DstSubPrefix} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
.PEERDIR=contrib/tools/swig/Lib/python
}
@@ -38,7 +38,7 @@ macro _SWIG_PYTHON_CPP(Src, DstSubPrefix) {
###
### Like _SWIG_PYTHON_CPP but generate DstSubPrefix_swg.c.
macro _SWIG_PYTHON_C(Src, DstSubPrefix) {
- .CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -python -module ${nopath:DstSubPrefix} -interface ${nopath;suf=_swg:DstSubPrefix} -o ${output;suf=.swg.c:DstSubPrefix} ${input:Src} ${output;noauto;hide;suf=.py:DstSubPrefix} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
+ .CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -python -module ${nopath:DstSubPrefix} -interface ${nopath;suf=_swg:DstSubPrefix} -o ${output;suf=.swg.c:DstSubPrefix} ${input:Src} ${hide;noauto;output;suf=.py:DstSubPrefix} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
.PEERDIR=contrib/tools/swig/Lib/python
}
@@ -46,7 +46,7 @@ _EXPLICIT_SWIG_JAVA_SOURCES=
_EXPLICIT_SWIG_IFACE_SOURCES=
macro _EXPORT_JAVA_BINDINGS(JavaSrcs...) {
SET_APPEND(_EXPLICIT_SWIG_JAVA_SOURCES ${input:JavaSrcs})
- .SEM=find_package SWIG COMPONENTS java && find_package Java && packages-ITEM && packages-name SWIG && packages-components java && mpackages-ITEM && mpackages-name SWIG && mpackages-components java && packages-ITEM && packages-name Java && mpackages-ITEM && mpackages-name Java && include UseSWIG && include UseJava && dir_includes UseSWIG && dir_includes UseJava ${input;hide:JavaSrcs} ${output;hide;pre=$_HASH_HELPER($Args):".o"}
+ .SEM=find_package SWIG COMPONENTS java && find_package Java && packages-ITEM && packages-name SWIG && packages-components java && mpackages-ITEM && mpackages-name SWIG && mpackages-components java && packages-ITEM && packages-name Java && mpackages-ITEM && mpackages-name Java && include UseSWIG && include UseJava && dir_includes UseSWIG && dir_includes UseJava ${hide;input:JavaSrcs} ${hide;output;pre=$_HASH_HELPER($Args):".o"}
}
macro _EXPORT_SWIG_SOURCES(SwigSrcs...) {
SET_APPEND(_EXPLICIT_SWIG_IFACE_SOURCES ${input:SwigSrcs})
@@ -105,6 +105,6 @@ multimodule DLL_JAVA {
SWIG_LANG=jni_java
_SWIG_CMD=$_SWIG_JNI_JAVA_CMD
_SWIG_PEERDIR=contrib/tools/swig/Lib/java $_SWIG_JNI_PEERDIR
- _SWIG_SEM_TO_MODULE_LINK=${output;hide;suf=.jsrc:SRC}
+ _SWIG_SEM_TO_MODULE_LINK=${hide;output;suf=.jsrc:SRC}
}
}
diff --git a/build/conf/ts/node_modules.conf b/build/conf/ts/node_modules.conf
index 6c73cd17df..719aceb578 100644
--- a/build/conf/ts/node_modules.conf
+++ b/build/conf/ts/node_modules.conf
@@ -7,59 +7,10 @@ NPM_SCRIPT=$NPM_ROOT/node_modules/npm/bin/npm-cli.js
PM_SCRIPT=
PM_TYPE=
-NPM_CONTRIBS_PATH=-
# combined input/outputs records as list of directives ${input;hide:<path>} ${output;hide:<path>}, used in builders
_NODE_MODULES_INOUTS=
_YATOOL_PREBUILDER_ARG=
-macro CUSTOM_CONTRIB_TYPESCRIPT(P) {
- SET(NPM_CONTRIBS_PATH -)
-}
-
-macro NO_CONTRIB_TYPESCRIPT() {
- SET(NPM_CONTRIBS_PATH -)
-}
-
-### @usage: NPM_CONTRIBS() # internal
-###
-### Defines special module that provides contrib tarballs from internal npm registry.
-###
-### @see [FROM_NPM_LOCKFILES()](#macro_FROM_NPM_LOCKFILES)
-module NPM_CONTRIBS: _BARE_UNIT {
- .CMD=TOUCH_UNIT
- .PEERDIR_POLICY=as_build_from
- .FINAL_TARGET=no
- .ALLOWED=FROM_NPM_LOCKFILES
- .RESTRICTED=PEERDIR
- .EXTS=_ # Ignore all files, so module is not affected by FROM_NPM output (.EXTS=* is inherited from _BARE_UNIT)
-
- SET(MODULE_TAG NPM_CONTRIBS)
- SET(MODULE_LANG TS)
-
- # .fake tells builder to not materialize it in results
- SET(MODULE_SUFFIX .fake)
-}
-
-### @usage: FROM_NPM_LOCKFILES(LOCKFILES...) # internal
-###
-### Defines lockfile list for `NPM_CONTRIBS` module.
-###
-### @see [NPM_CONTRIBS()](#module_NPM_CONTRIBS)
-macro FROM_NPM_LOCKFILES(LOCKFILES...) {
- # SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS $LOCKFILES)
- # See implementation in build/plugins/nots.py
- # _FROM_NPM_LOCKFILES($LOCKFILES)
- MESSAGE("NPM_CONTRIBS and FROM_NPM_LOCKFILES are disabled. Please exclude them from your build process")
-}
-
-FROM_NPM_CWD=$ARCADIA_BUILD_ROOT/$NPM_CONTRIBS_PATH
-macro _FROM_NPM(TARBALL_URL, SKY_ID, INTEGRITY, INTEGRITY_ALGO, TARBALL_PATH) {
- .CMD=${cwd:FROM_NPM_CWD} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_npm.py"} ${input;hide:"build/scripts/fetch_from.py"} ${input;hide:"build/scripts/sky.py"} --tarball-url $TARBALL_URL --sky-id $SKY_ID --integrity $INTEGRITY --integrity-algorithm $INTEGRITY_ALGO --copy-to ${output;noauto:TARBALL_PATH} ${requirements;hide:"network:full"} ${kv;hide:"p TS_FNPM"} ${kv;hide:"pc magenta"}
- # we want output to be available for other modules without affecting NPM_CONTRIBS
- # we need to expose it (some details in https://st.yandex-team.ru/YMAKE-34)
- _EXPOSE($TARBALL_PATH)
-}
-
macro _TS_ADD_NODE_MODULES_FOR_BUILDER() {
# Calculate inputs and outputs of node_modules, fill `_NODE_MODULES_INOUTS` variable
_NODE_MODULES_CONFIGURE()
@@ -75,13 +26,13 @@ _PREPARE_DEPS_CMD=$TOUCH_UNIT \
$_PREPARE_DEPS_INOUTS \
$_PREPARE_DEPS_RESOURCES \
$_PREPARE_DEPS_USE_RESOURCES_FLAG \
- ${kv;hide:"pc magenta"} ${kv;hide:"p TS_DEP"}
+ ${hide;kv:"pc magenta"} ${hide;kv:"p TS_DEP"}
# In case of no deps we need to create empty outputs for graph connectivity
_PREPARE_NO_DEPS_CMD=$TOUCH_UNIT \
&& $YMAKE_PYTHON ${input:"build/scripts/touch.py"} \
$_PREPARE_DEPS_INOUTS \
- ${kv;hide:"pc magenta"} ${kv;hide:"p TS_NODEP"}
+ ${hide;kv:"pc magenta"} ${hide;kv:"p TS_NODEP"}
module _PREPARE_DEPS_BASE: _BARE_UNIT {
.CMD=_PREPARE_DEPS_CMD
diff --git a/build/conf/ts/ts.conf b/build/conf/ts/ts.conf
index 928f5cf456..0fb8cba30d 100644
--- a/build/conf/ts/ts.conf
+++ b/build/conf/ts/ts.conf
@@ -33,7 +33,6 @@ NOTS_TOOL_BASE_ARGS=\
--nodejs-bin $NODEJS_BIN \
--pm-script $PM_SCRIPT \
--pm-type $PM_TYPE \
- --contribs $NPM_CONTRIBS_PATH \
--trace $TS_TRACE \
--verbose $TS_LOG \
$_YATOOL_PREBUILDER_ARG
@@ -52,7 +51,7 @@ when($AUTOCHECK == "yes") {
# Arguments for builders' commands, passed after the command
NOTS_TOOL_COMMON_BUILDER_ARGS=\
- --output-file ${output:TS_OUTPUT_FILE} ${output;hide:TS_OUTPUT_FILE_UUID} \
+ --output-file ${output:TS_OUTPUT_FILE} ${hide;output:TS_OUTPUT_FILE_UUID} \
--tsconfigs $TS_CONFIG_PATH \
--vcs-info "${VCS_INFO_FILE}" \
$NOTS_TOOL_BUILD_REQUIREMENTS__NO_UID__ \
@@ -139,7 +138,7 @@ TSYNDEXER_OUTPUT_FILE=tsyndex.ydx.pb2
TSYNDEXER_TOOL=${tool:"devtools/codenav/typescript"}
TSYNDEXER_CMD=${cwd:ARCADIA_BUILD_ROOT} \
$TSYNDEXER_TOOL -m ${CURDIR} -o ${output:TSYNDEXER_OUTPUT_FILE} -r ${ARCADIA_ROOT} \
- ${kv;hide:"pc magenta"} ${kv;hide:"p YTS"} $_AS_HIDDEN_INPUTS(IN $_TS_LINT_SRCS_VALUE)
+ ${hide;kv:"pc magenta"} ${hide;kv:"p YTS"} $_AS_HIDDEN_INPUTS(IN $_TS_LINT_SRCS_VALUE)
### _DO_TS_YNDEXING() # internal
###
@@ -174,7 +173,7 @@ TS_GLOB_EXCLUDE=$TS_CONFIG_PATH \
# Ugly hack for using inputs from the variable
macro _AS_HIDDEN_INPUTS(IN{input}[]) {
# "context=TEXT" exclude file from the "include processing"
- .CMD=${input;hide;context=TEXT:IN}
+ .CMD=${hide;context=TEXT;input:IN}
}
diff --git a/build/conf/ts/ts_next.conf b/build/conf/ts/ts_next.conf
index e41f08182f..72c5a9a665 100644
--- a/build/conf/ts/ts_next.conf
+++ b/build/conf/ts/ts_next.conf
@@ -38,9 +38,9 @@ TS_NEXT_CMD=$TOUCH_UNIT \
--bundler-config-path ${input:TS_NEXT_CONFIG_PATH} \
--output-dirs ${TS_NEXT_OUTPUT_DIR} \
$_NODE_MODULES_INOUTS ${hide:PEERS} \
- ${input;hide:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
- ${output;hide:"package.json"} \
- ${kv;hide:"pc magenta"} ${kv;hide:"p TS_NXT"}
+ ${hide;input:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
+ ${hide;output:"package.json"} \
+ ${hide;kv:"pc magenta"} ${hide;kv:"p TS_NXT"}
### @usage: TS_NEXT([name])
###
diff --git a/build/conf/ts/ts_package.conf b/build/conf/ts/ts_package.conf
index 7eaea17e67..aa3a6baaaa 100644
--- a/build/conf/ts/ts_package.conf
+++ b/build/conf/ts/ts_package.conf
@@ -3,7 +3,7 @@ TS_PACK=$TOUCH_UNIT \
&& $NOTS_TOOL $NOTS_TOOL_BASE_ARGS build-package $_NODE_MODULES_INOUTS \
&& $COPY_CMD ${input:"package.json"} ${output:"package.json"} \
&& $_TS_FILES_COPY_CMD \
- ${kv;hide:"p TS_PKG"} ${kv;hide:"pc magenta"}
+ ${hide;kv:"p TS_PKG"} ${hide;kv:"pc magenta"}
### # internal
macro _TS_PACKAGE_EPILOGUE() {
diff --git a/build/conf/ts/ts_proto.conf b/build/conf/ts/ts_proto.conf
index 305728a90c..78cf3285d5 100644
--- a/build/conf/ts/ts_proto.conf
+++ b/build/conf/ts/ts_proto.conf
@@ -7,10 +7,10 @@ _TS_PROTO_IMPL_CMD=$TOUCH_UNIT \
--proto-srcs $_TS_PROTO_SRCS_FILES \
--proto-paths ./$PROTO_NAMESPACE $ARCADIA_ROOT/$PROTO_NAMESPACE $_PROTO__INCLUDE $ARCADIA_BUILD_ROOT $PROTOBUF_INCLUDE_PATH \
$_NODE_MODULES_INOUTS \
- ${input;hide:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
- ${output;hide:"package.json"} \
+ ${hide;input:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
+ ${hide;output:"package.json"} \
${hide:PROTO_FAKEID} \
- ${kv;hide:"pc magenta"} ${kv;hide:"p TS_PRO"}
+ ${hide;kv:"pc magenta"} ${hide;kv:"p TS_PRO"}
### # internal
diff --git a/build/conf/ts/ts_test.conf b/build/conf/ts/ts_test.conf
index 5051106b69..46887b8cd2 100644
--- a/build/conf/ts/ts_test.conf
+++ b/build/conf/ts/ts_test.conf
@@ -13,7 +13,7 @@ TS_TEST_JEST_CMD=$TOUCH_UNIT \
&& $NOTS_TOOL $NOTS_TOOL_BASE_ARGS create-node-modules --moddir $TS_TEST_FOR_PATH \
$_NODE_MODULES_INOUTS ${hide:PEERS} \
&& ${cwd:BINDIR} $MOVE_FILE $TS_TEST_NM ${output:"workspace_node_modules.tar"} \
- ${kv;hide:"p TS_JST"} ${kv;hide:"pc magenta"}
+ ${hide;kv:"p TS_JST"} ${hide;kv:"pc magenta"}
### @usage: TS_TEST_JEST_FOR(Path)
###
@@ -48,7 +48,7 @@ module TS_TEST_JEST_FOR: _TS_TEST_BASE {
TS_TEST_HERMIONE_CMD=$TOUCH_UNIT \
&& ${cwd:BINDIR} $MOVE_FILE ${input:TS_TEST_NM} ${output:"workspace_node_modules.tar"} \
- ${kv;hide:"p TSHRM"} ${kv;hide:"pc magenta"}
+ ${hide;kv:"p TSHRM"} ${hide;kv:"pc magenta"}
### @usage: TS_TEST_HERMIONE_FOR(Path)
###
@@ -82,7 +82,7 @@ TS_TEST_PLAYWRIGHT_CMD=$TOUCH_UNIT \
&& $NOTS_TOOL $NOTS_TOOL_BASE_ARGS create-node-modules --moddir $TS_TEST_FOR_PATH \
$_NODE_MODULES_INOUTS ${hide:PEERS} \
&& ${cwd:BINDIR} $MOVE_FILE $TS_TEST_NM ${output:"workspace_node_modules.tar"} \
- ${kv;hide:"p TSPW"} ${kv;hide:"pc magenta"}
+ ${hide;kv:"p TSPW"} ${hide;kv:"pc magenta"}
### @usage: TS_TEST_PLAYWRIGHT_FOR(Path)
###
@@ -115,7 +115,7 @@ module TS_TEST_PLAYWRIGHT_FOR: _TS_TEST_BASE {
TS_TEST_PLAYWRIGHT_LARGE_CMD=$TOUCH_UNIT \
&& ${cwd:BINDIR} $MOVE_FILE ${input:TS_TEST_NM} ${output:"workspace_node_modules.tar"} \
- ${kv;hide:"p TSPW"} ${kv;hide:"pc magenta"}
+ ${hide;kv:"p TSPW"} ${hide;kv:"pc magenta"}
### @usage: TS_TEST_PLAYWRIGHT_LARGE_FOR(Path)
###
diff --git a/build/conf/ts/ts_tsc.conf b/build/conf/ts/ts_tsc.conf
index 7dd51b29ac..0cbcbe4caa 100644
--- a/build/conf/ts/ts_tsc.conf
+++ b/build/conf/ts/ts_tsc.conf
@@ -2,9 +2,9 @@ TS_TSC_CMD=$TOUCH_UNIT \
&& $_TS_FILES_COPY_CMD \
&& $NOTS_TOOL $NOTS_TOOL_BASE_ARGS build-tsc $NOTS_TOOL_COMMON_BUILDER_ARGS \
$_NODE_MODULES_INOUTS ${hide:PEERS} \
- ${input;hide:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
- ${output;hide:"package.json"} \
- ${kv;hide:"pc magenta"} ${kv;hide:"p TS_TSC"}
+ ${hide;input:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
+ ${hide;output:"package.json"} \
+ ${hide;kv:"pc magenta"} ${hide;kv:"p TS_TSC"}
### @usage: TS_TSC([name])
###
diff --git a/build/conf/ts/ts_vite.conf b/build/conf/ts/ts_vite.conf
index ca6ff048f9..e8cb3cba98 100644
--- a/build/conf/ts/ts_vite.conf
+++ b/build/conf/ts/ts_vite.conf
@@ -40,9 +40,9 @@ TS_VITE_CMD=$TOUCH_UNIT \
--bundler-config-path ${input:VITE_CONFIG_PATH} \
--output-dirs ${VITE_OUTPUT_DIR} \
$_NODE_MODULES_INOUTS ${hide:PEERS} \
- ${input;hide:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
- ${output;hide:"package.json"} \
- ${kv;hide:"pc magenta"} ${kv;hide:"p TS_VIT"}
+ ${hide;input:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
+ ${hide;output:"package.json"} \
+ ${hide;kv:"pc magenta"} ${hide;kv:"p TS_VIT"}
### @usage: TS_VITE([name])
###
diff --git a/build/conf/ts/ts_webpack.conf b/build/conf/ts/ts_webpack.conf
index 6cea71c0e3..c3d5e07a9b 100644
--- a/build/conf/ts/ts_webpack.conf
+++ b/build/conf/ts/ts_webpack.conf
@@ -37,9 +37,9 @@ TS_WEBPACK_CMD=$TOUCH_UNIT \
--bundler-config-path ${input:WEBPACK_CONFIG_PATH} \
--output-dirs ${WEBPACK_OUTPUT_DIR} \
$_NODE_MODULES_INOUTS ${hide:PEERS} \
- ${input;hide:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
- ${output;hide:"package.json"} \
- ${kv;hide:"pc magenta"} ${kv;hide:"p TS_WPK"}
+ ${hide;input:"package.json"} ${TS_CONFIG_FILES} $_AS_HIDDEN_INPUTS(IN $TS_INPUT_FILES) \
+ ${hide;output:"package.json"} \
+ ${hide;kv:"pc magenta"} ${hide;kv:"p TS_WPK"}
### @usage: TS_WEBPACK([name])
###
diff --git a/build/plugins/_dart_fields.py b/build/plugins/_dart_fields.py
index 2b556e2073..9ba0fcb9da 100644
--- a/build/plugins/_dart_fields.py
+++ b/build/plugins/_dart_fields.py
@@ -863,14 +863,6 @@ class TestClasspathDeps:
return {cls.KEY: '${DART_CLASSPATH_DEPS}'}
-class TestClasspathOrigins:
- KEY = 'TEST_CLASSPATH_ORIGINS'
-
- @classmethod
- def value(cls, unit, flat_args, spec_args):
- return None
-
-
class TestCwd:
KEY = 'TEST-CWD'
diff --git a/build/plugins/bundle.py b/build/plugins/bundle.py
index 69e3e01681..aec47ffa2c 100644
--- a/build/plugins/bundle.py
+++ b/build/plugins/bundle.py
@@ -3,20 +3,29 @@ import os
def onbundle(unit, *args):
"""
- @usage BUNDLE(<Dir [NAME Name]>...)
+ @usage BUNDLE(<Dir [SUFFIX Suffix] [NAME Name]>...)
Brings build artefact from module Dir under optional Name to the current module (e.g. UNION)
If NAME is not specified, the name of the Dir's build artefact will be preserved
+ Optional SUFFIX allows to use secondary module output. The suffix is appended to the primary output name, so the applicability is limited.
It makes little sense to specify BUNDLE on non-final targets and so this may stop working without prior notice.
Bundle on multimodule will select final target among multimodule variants and will fail if there are none or more than one.
"""
i = 0
while i < len(args):
- if i + 2 < len(args) and args[i + 1] == "NAME":
- target, name = args[i], args[i + 2]
- i += 3
+ target = args[i]
+ i += 1
+
+ if i + 1 < len(args) and args[i] == "SUFFIX":
+ suffix = args[i + 1]
+ i += 2
+ else:
+ suffix = ""
+
+ if i + 1 < len(args) and args[i] == "NAME":
+ name = args[i + 1]
+ i += 2
else:
- target, name = args[i], os.path.basename(args[i])
- i += 1
+ name = os.path.basename(target) + suffix
- unit.on_bundle_target([target, name])
+ unit.on_bundle_target([target, name, suffix])
diff --git a/build/plugins/lib/nots/package_manager/__init__.py b/build/plugins/lib/nots/package_manager/__init__.py
index 4bb369ba47..20f47fffa1 100644
--- a/build/plugins/lib/nots/package_manager/__init__.py
+++ b/build/plugins/lib/nots/package_manager/__init__.py
@@ -1,4 +1,4 @@
-import typing
+from typing import Literal
from .base import (
bundle_node_modules,
@@ -14,10 +14,13 @@ from .base.package_json import PackageJsonWorkspaceError
from .pnpm import PnpmPackageManager
from .npm import NpmPackageManager
+
+type PackageManagerType = Literal["pnpm", "npm"]
+
manager = PnpmPackageManager
-def get_package_manager_type(key: typing.Literal["pnpm", "npm"]) -> typing.Type[BasePackageManager]:
+def get_package_manager_type(key: PackageManagerType) -> type[BasePackageManager]:
if key == "pnpm":
return PnpmPackageManager
if key == "npm":
@@ -33,6 +36,7 @@ __all__ = [
"PackageJson",
"PackageJsonWorkspaceError",
"PackageManagerCommandError",
+ "PackageManagerType",
"bundle_node_modules",
"constants",
"extract_node_modules",
diff --git a/build/plugins/lib/nots/package_manager/base/package_manager.py b/build/plugins/lib/nots/package_manager/base/package_manager.py
index 8805c94013..efd5038d27 100644
--- a/build/plugins/lib/nots/package_manager/base/package_manager.py
+++ b/build/plugins/lib/nots/package_manager/base/package_manager.py
@@ -34,7 +34,6 @@ class BasePackageManager(object):
sources_path,
nodejs_bin_path,
script_path,
- contribs_path,
module_path=None,
sources_root=None,
):
@@ -45,7 +44,6 @@ class BasePackageManager(object):
self.sources_root = sources_path[: -len(self.module_path) - 1] if sources_root is None else sources_root
self.nodejs_bin_path = nodejs_bin_path
self.script_path = script_path
- self.contribs_path = contribs_path
@classmethod
def load_package_json(cls, path):
@@ -150,9 +148,6 @@ class BasePackageManager(object):
def _nm_path(self, *parts):
return os.path.join(build_nm_path(self.build_path), *parts)
- def _contrib_tarball_path(self, pkg):
- return os.path.join(self.contribs_path, pkg.tarball_path)
-
def _tarballs_store_path(self, pkg, store_path):
return os.path.join(self.module_path, store_path, pkg.tarball_path)
diff --git a/build/plugins/lib/nots/package_manager/npm/npm_package_manager.py b/build/plugins/lib/nots/package_manager/npm/npm_package_manager.py
index 72abcd43eb..3de14b1d7c 100644
--- a/build/plugins/lib/nots/package_manager/npm/npm_package_manager.py
+++ b/build/plugins/lib/nots/package_manager/npm/npm_package_manager.py
@@ -50,9 +50,6 @@ class NpmPackageManager(BasePackageManager):
if errors:
raise PackageManagerError("Unable to process some lockfiles:\n{}".format("\n".join(errors)))
- def calc_prepare_deps_inouts(self, store_path: str, has_deps: bool) -> tuple[list[str], list[str]]:
- raise NotImplementedError("NPM does not support contrib/typescript flow.")
-
def calc_prepare_deps_inouts_and_resources(
self, store_path: str, has_deps: bool
) -> tuple[list[str], list[str], list[str]]:
@@ -147,7 +144,6 @@ class NpmPackageManager(BasePackageManager):
sources_path=dep_source_path,
nodejs_bin_path=self.nodejs_bin_path,
script_path=self.script_path,
- contribs_path=self.contribs_path,
module_path=module_path,
sources_root=self.sources_root,
)
diff --git a/build/plugins/lib/nots/package_manager/pnpm/package_manager.py b/build/plugins/lib/nots/package_manager/pnpm/package_manager.py
index 43e6cbfe15..8be7a2dddb 100644
--- a/build/plugins/lib/nots/package_manager/pnpm/package_manager.py
+++ b/build/plugins/lib/nots/package_manager/pnpm/package_manager.py
@@ -117,29 +117,6 @@ class PnpmPackageManager(BasePackageManager):
return ins, outs, resources
# TODO: FBP-1254
- # def calc_prepare_deps_inouts(self, store_path: str, has_deps: bool) -> (list[str], list[str]):
- def calc_prepare_deps_inouts(self, store_path, has_deps):
- ins = [
- s_rooted(build_pj_path(self.module_path)),
- s_rooted(build_lockfile_path(self.module_path)),
- ]
- outs = [
- b_rooted(build_ws_config_path(self.module_path)),
- b_rooted(build_pre_lockfile_path(self.module_path)),
- ]
-
- if has_deps:
- for dep_path in self.get_local_peers_from_package_json():
- ins.append(b_rooted(build_ws_config_path(dep_path)))
- ins.append(b_rooted(build_pre_lockfile_path(dep_path)))
-
- for pkg in self.extract_packages_meta_from_lockfiles([build_lockfile_path(self.sources_path)]):
- ins.append(b_rooted(self._contrib_tarball_path(pkg)))
- outs.append(b_rooted(self._tarballs_store_path(pkg, store_path)))
-
- return ins, outs
-
- # TODO: FBP-1254
# def calc_node_modules_inouts(self, local_cli=False) -> (list[str], list[str]):
def calc_node_modules_inouts(self, local_cli=False):
"""
diff --git a/build/plugins/lib/nots/typescript/ts_config.py b/build/plugins/lib/nots/typescript/ts_config.py
index 52dfa20550..d05a928171 100644
--- a/build/plugins/lib/nots/typescript/ts_config.py
+++ b/build/plugins/lib/nots/typescript/ts_config.py
@@ -157,7 +157,7 @@ class TsConfig(object):
"""
extends = self.data.get(RootFields.extends)
- if type(extends) == list:
+ if isinstance(extends, list):
paths = [self.extend_one(dep_paths, ext_value) for ext_value in extends]
flatten_paths = [item for row in paths for item in row]
else:
diff --git a/build/plugins/nots.py b/build/plugins/nots.py
index a193dbb52b..f6824b67e7 100644
--- a/build/plugins/nots.py
+++ b/build/plugins/nots.py
@@ -1,7 +1,8 @@
import os
-import typing
from enum import auto, StrEnum
+from typing import Any, Literal, TYPE_CHECKING
+# noinspection PyUnresolvedReferences
import ymake
import _dart_fields as df
@@ -15,29 +16,34 @@ from _common import (
from _dart_fields import create_dart_record
+if TYPE_CHECKING:
+ from lib.nots.erm_json_lite import ErmJsonLite
+ from lib.nots.package_manager import PackageManagerType, BasePackageManager
+ from lib.nots.semver import Version
+ from lib.nots.typescript import TsConfig
+
# 1 is 60 files per chunk for TIMEOUT(60) - default timeout for SIZE(SMALL)
# 0.5 is 120 files per chunk for TIMEOUT(60) - default timeout for SIZE(SMALL)
# 0.2 is 300 files per chunk for TIMEOUT(60) - default timeout for SIZE(SMALL)
ESLINT_FILE_PROCESSING_TIME_DEFAULT = 0.2 # seconds per file
-COLOR_CODES = {
- "red": "31",
- "green": "32",
- "yellow": "33",
- "cyan": "36",
- "reset": "49",
-}
-
REQUIRED_MISSING = "~~required~~"
-class ConsoleColors(dict):
- def __init__(self, color_codes):
- for k, v in color_codes.items():
- self.__dict__[k] = f"\033[0;{v}m"
+class COLORS:
+ """
+ See https://en.m.wikipedia.org/wiki/ANSI_escape_code#Colors for details
+ """
+ @staticmethod
+ def _wrap_color(color_code: int) -> str:
+ return f"\033[0;{color_code}m"
-COLORS = ConsoleColors(COLOR_CODES)
+ red = _wrap_color(31)
+ green = _wrap_color(32)
+ yellow = _wrap_color(33)
+ cyan = _wrap_color(36)
+ reset = _wrap_color(49)
class TsTestType(StrEnum):
@@ -50,6 +56,100 @@ class TsTestType(StrEnum):
TS_STYLELINT = auto()
+class UnitType:
+ MessageType = Literal["INFO", "WARN", "ERROR"]
+ PluginArgs = str | list[str] | tuple[str]
+
+ def message(self, args: list[MessageType | str]) -> None:
+ """
+ Print message to the log
+ """
+
+ def get(self, var_name: str) -> str | None:
+ """
+ Get variable value
+ """
+
+ def set(self, args: PluginArgs) -> None:
+ """
+ Set variable value
+ """
+
+ def enabled(self, var_name: str) -> None:
+ """
+ Set variable value to "yes"
+ """
+
+ def disabled(self, var_name: str) -> None:
+ """
+ Set variable value to "no"
+ """
+
+ def set_property(self, args: PluginArgs) -> None:
+ """
+ TODO (set vs set_property?)
+ """
+
+ def resolve(self, path: str) -> str:
+ """
+ Resolve path TODO?
+ """
+
+ def resolve_arc_path(self, path: str) -> str:
+ """
+ Resolve path TODO?
+ """
+
+ def path(self) -> str:
+ """
+ Get the project path
+ """
+
+ def ondepends(self, deps: PluginArgs) -> None:
+ """
+ Run DEPENDS(...)
+ """
+
+ def onpeerdir(self, args: str | list[str]) -> None:
+ """
+ Run PEERDIR(...)
+ """
+
+
+class NotsUnitType(UnitType):
+ def on_peerdir_ts_resource(self, *resources: str):
+ """
+ Ensure dependency installed on the project
+
+ Also check its version (is it supported by erm)
+ """
+
+ def on_do_ts_yndexing(self) -> None:
+ """
+ Turn on code navigation indexing
+ """
+
+ def on_from_npm(self, args: UnitType.PluginArgs) -> None:
+ """
+ TODO remove after removing on_from_pnpm_lockfiles
+ """
+
+ def on_setup_install_node_modules_recipe(self) -> None:
+ """
+ Setup test recipe to install node_modules before running tests
+ """
+
+ def on_setup_extract_node_modules_recipe(self, args: UnitType.PluginArgs) -> None:
+ """
+ Setup test recipe to extract workspace-node_modules.tar before running tests
+ """
+
+ def on_setup_extract_output_tars_recipe(self, args: UnitType.PluginArgs) -> None:
+ """
+ Setup test recipe to extract peer's output before running tests
+ """
+
+
TS_TEST_FIELDS_BASE = (
df.BinaryPath.normalized,
df.BuildFolderPath.normalized,
@@ -128,18 +228,17 @@ TS_TEST_SPECIFIC_FIELDS = {
class PluginLogger(object):
- def __init__(self):
- self.unit = None
- self.prefix = ""
+ unit: UnitType = None
+ prefix = ""
- def reset(self, unit, prefix=""):
+ def reset(self, unit: NotsUnitType | None, prefix=""):
self.unit = unit
self.prefix = prefix
def get_state(self):
- return (self.unit, self.prefix)
+ return self.unit, self.prefix
- def _stringify_messages(self, messages):
+ def _stringify_messages(self, messages: tuple[Any, ...]):
parts = []
for m in messages:
if m is None:
@@ -150,19 +249,19 @@ class PluginLogger(object):
# cyan color (code 36) for messages
return f"{COLORS.green}{self.prefix}{COLORS.reset}\n{COLORS.cyan}{" ".join(parts)}{COLORS.reset}"
- def info(self, *messages):
+ def info(self, *messages: Any) -> None:
if self.unit:
self.unit.message(["INFO", self._stringify_messages(messages)])
- def warn(self, *messages):
+ def warn(self, *messages: Any) -> None:
if self.unit:
self.unit.message(["WARN", self._stringify_messages(messages)])
- def error(self, *messages):
+ def error(self, *messages: Any) -> None:
if self.unit:
self.unit.message(["ERROR", self._stringify_messages(messages)])
- def print_vars(self, *variables):
+ def print_vars(self, *variables: str):
if self.unit:
values = ["{}={}".format(v, self.unit.get(v)) for v in variables]
self.info("\n".join(values))
@@ -172,6 +271,12 @@ logger = PluginLogger()
def _with_report_configure_error(fn):
+ """
+ Handle exceptions, report them as ymake configure error
+
+ Also wraps plugin function like `on<macro_name>` to register `unit` in the PluginLogger
+ """
+
def _wrapper(*args, **kwargs):
last_state = logger.get_state()
unit = args[0]
@@ -190,9 +295,7 @@ def _with_report_configure_error(fn):
return _wrapper
-def _build_directives(name, flags, paths):
- # type: (str, list[str]|tuple[str], list[str]) -> str
-
+def _build_directives(name: str, flags: list[str] | tuple[str], paths: list[str]) -> str:
parts = [p for p in [name] + (flags or []) if p]
parts_str = ";".join(parts)
expressions = ['${{{parts}:"{path}"}}'.format(parts=parts_str, path=path) for path in paths]
@@ -200,15 +303,14 @@ def _build_directives(name, flags, paths):
return " ".join(expressions)
-def _build_cmd_input_paths(paths, hide=False, disable_include_processor=False):
- # type: (list[str]|tuple[str], bool, bool) -> str
+def _build_cmd_input_paths(paths: list[str] | tuple[str], hide=False, disable_include_processor=False):
hide_part = "hide" if hide else ""
disable_ip_part = "context=TEXT" if disable_include_processor else ""
return _build_directives("input", [hide_part, disable_ip_part], paths)
-def _create_erm_json(unit):
+def _create_erm_json(unit: NotsUnitType):
from lib.nots.erm_json_lite import ErmJsonLite
erm_packages_path = unit.get("ERM_PACKAGES_PATH")
@@ -217,20 +319,20 @@ def _create_erm_json(unit):
return ErmJsonLite.load(path)
-def _get_pm_type(unit) -> typing.Literal["pnpm", "npm"]:
- resolved = unit.get("PM_TYPE")
+def _get_pm_type(unit: NotsUnitType) -> 'PackageManagerType':
+ resolved: PackageManagerType | None = unit.get("PM_TYPE")
if not resolved:
raise Exception("PM_TYPE is not set yet. Macro _SET_PACKAGE_MANAGER() should be called before.")
return resolved
-def _get_source_path(unit):
+def _get_source_path(unit: NotsUnitType) -> str:
sources_path = unit.get("TS_TEST_FOR_DIR") if unit.get("TS_TEST_FOR") else unit.path()
return sources_path
-def _create_pm(unit):
+def _create_pm(unit: NotsUnitType) -> 'BasePackageManager':
from lib.nots.package_manager import get_package_manager_type
sources_path = _get_source_path(unit)
@@ -243,7 +345,6 @@ def _create_pm(unit):
sources_path=unit.resolve(sources_path),
build_root="$B",
build_path=unit.path().replace("$S", "$B", 1),
- contribs_path=unit.get("NPM_CONTRIBS_PATH"),
nodejs_bin_path=None,
script_path=None,
module_path=module_path,
@@ -251,7 +352,7 @@ def _create_pm(unit):
@_with_report_configure_error
-def on_set_package_manager(unit):
+def on_set_package_manager(unit: NotsUnitType) -> None:
pm_type = "pnpm" # projects without any lockfile are processed by pnpm
source_path = _get_source_path(unit)
@@ -279,37 +380,13 @@ def on_set_package_manager(unit):
@_with_report_configure_error
-def on_set_append_with_directive(unit, var_name, dir, *values):
- wrapped = ['${{{dir}:"{v}"}}'.format(dir=dir, v=v) for v in values]
- __set_append(unit, var_name, " ".join(wrapped))
-
-
-@_with_report_configure_error
-def on_from_npm_lockfiles(unit, *args):
- from lib.nots.package_manager.base import PackageManagerError
-
- # This is contrib with pnpm-lock.yaml files only
- # Force set to pnpm
- unit.set(["PM_TYPE", "pnpm"])
- pm = _create_pm(unit)
- lf_paths = []
-
- for lf_path in args:
- abs_lf_path = unit.resolve(unit.resolve_arc_path(lf_path))
- if abs_lf_path:
- lf_paths.append(abs_lf_path)
- elif unit.get("TS_STRICT_FROM_NPM_LOCKFILES") == "yes":
- ymake.report_configure_error("lockfile not found: {}".format(lf_path))
+def on_set_append_with_directive(unit: NotsUnitType, var_name: str, directive: str, *values: str) -> None:
+ wrapped = [f'${{{directive}:"{v}"}}' for v in values]
- try:
- for pkg in pm.extract_packages_meta_from_lockfiles(lf_paths):
- unit.on_from_npm([pkg.tarball_url, pkg.sky_id, pkg.integrity, pkg.integrity_algorithm, pkg.tarball_path])
- except PackageManagerError as e:
- logger.warn(str(e))
- pass
+ __set_append(unit, var_name, " ".join(wrapped))
-def _check_nodejs_version(unit, major):
+def _check_nodejs_version(unit: NotsUnitType, major: int) -> None:
if major < 14:
raise Exception(
"Node.js {} is unsupported. Update Node.js please. See https://nda.ya.ru/t/joB9Mivm6h4znu".format(major)
@@ -325,7 +402,7 @@ def _check_nodejs_version(unit, major):
@_with_report_configure_error
-def on_peerdir_ts_resource(unit, *resources):
+def on_peerdir_ts_resource(unit: NotsUnitType, *resources: str) -> None:
from lib.nots.package_manager import BasePackageManager
pj = BasePackageManager.load_package_json_from_dir(unit.resolve(_get_source_path(unit)))
@@ -364,8 +441,7 @@ def on_peerdir_ts_resource(unit, *resources):
@_with_report_configure_error
-def on_ts_configure(unit):
- # type: (Unit) -> None
+def on_ts_configure(unit: NotsUnitType) -> None:
from lib.nots.package_manager.base import PackageJson
from lib.nots.package_manager.base.utils import build_pj_path
from lib.nots.typescript import TsConfig
@@ -423,8 +499,8 @@ def on_ts_configure(unit):
@_with_report_configure_error
-def on_setup_build_env(unit): # type: (Unit) -> None
- build_env_var = unit.get("TS_BUILD_ENV") # type: str
+def on_setup_build_env(unit: NotsUnitType) -> None:
+ build_env_var = unit.get("TS_BUILD_ENV")
if not build_env_var:
return
@@ -441,8 +517,7 @@ def on_setup_build_env(unit): # type: (Unit) -> None
unit.set(["NOTS_TOOL_BUILD_ENV", " ".join(options)])
-def __set_append(unit, var_name, value):
- # type: (Unit, str, str|list[str]|tuple[str]) -> None
+def __set_append(unit: NotsUnitType, var_name: str, value: UnitType.PluginArgs) -> None:
"""
SET_APPEND() python naive implementation - append value/values to the list of values
"""
@@ -453,9 +528,7 @@ def __set_append(unit, var_name, value):
unit.set([var_name, new_value])
-def __strip_prefix(prefix, line):
- # type: (str, str) -> str
-
+def __strip_prefix(prefix: str, line: str) -> str:
if line.startswith(prefix):
prefix_len = len(prefix)
return line[prefix_len:]
@@ -463,7 +536,7 @@ def __strip_prefix(prefix, line):
return line
-def _filter_inputs_by_rules_from_tsconfig(unit, tsconfig):
+def _filter_inputs_by_rules_from_tsconfig(unit: NotsUnitType, tsconfig: 'TsConfig') -> None:
"""
Reduce file list from the TS_GLOB_FILES variable following tsconfig.json rules
"""
@@ -476,14 +549,11 @@ def _filter_inputs_by_rules_from_tsconfig(unit, tsconfig):
__set_append(unit, "TS_INPUT_FILES", [os.path.join(target_path, f) for f in filtered_files])
-def _is_tests_enabled(unit):
- if unit.get("TIDY") == "yes":
- return False
+def _is_tests_enabled(unit: NotsUnitType) -> bool:
+ return unit.get("TIDY") != "yes"
- return True
-
-def _setup_eslint(unit):
+def _setup_eslint(unit: NotsUnitType) -> None:
if not _is_tests_enabled(unit):
return
@@ -532,7 +602,7 @@ def _setup_eslint(unit):
@_with_report_configure_error
-def _setup_tsc_typecheck(unit):
+def _setup_tsc_typecheck(unit: NotsUnitType) -> None:
if not _is_tests_enabled(unit):
return
@@ -594,7 +664,7 @@ def _setup_tsc_typecheck(unit):
@_with_report_configure_error
-def _setup_stylelint(unit):
+def _setup_stylelint(unit: NotsUnitType) -> None:
if not _is_tests_enabled(unit):
return
@@ -640,7 +710,7 @@ def _setup_stylelint(unit):
unit.set(["TEST_RECIPES_VALUE", recipes_value])
-def _resolve_module_files(unit, mod_dir, file_paths):
+def _resolve_module_files(unit: NotsUnitType, mod_dir: str, file_paths: list[str]) -> list[str]:
mod_dir_with_sep_len = len(mod_dir) + 1
resolved_files = []
@@ -653,9 +723,9 @@ def _resolve_module_files(unit, mod_dir, file_paths):
return resolved_files
-def _set_resource_vars(unit, erm_json, tool, version, nodejs_major=None):
- # type: (any, ErmJsonLite, Version, str|None, int|None) -> None
-
+def _set_resource_vars(
+ unit: NotsUnitType, erm_json: 'ErmJsonLite', tool: str, version: 'Version', nodejs_major: int = None
+) -> None:
resource_name = erm_json.canonize_name(tool).upper()
# example: NODEJS_12_18_4 | HERMIONE_7_0_4_NODEJS_18
@@ -671,8 +741,9 @@ def _set_resource_vars(unit, erm_json, tool, version, nodejs_major=None):
unit.set(["{}-ROOT-VAR-NAME".format(resource_name), yamake_resource_var])
-def _select_matching_version(erm_json, resource_name, range_str, dep_is_required=False):
- # type: (ErmJsonLite, str, str, bool) -> Version
+def _select_matching_version(
+ erm_json: 'ErmJsonLite', resource_name: str, range_str: str, dep_is_required=False
+) -> 'Version':
if dep_is_required and range_str is None:
raise Exception(
"Please install the '{tool}' package to the project. Run the command:\n"
@@ -702,29 +773,7 @@ def _select_matching_version(erm_json, resource_name, range_str, dep_is_required
@_with_report_configure_error
-def on_prepare_deps_configure(unit):
- contrib_path = unit.get("NPM_CONTRIBS_PATH")
- if contrib_path == '-':
- unit.on_prepare_deps_configure_no_contrib()
- return
- unit.onpeerdir(contrib_path)
- pm = _create_pm(unit)
- pj = pm.load_package_json_from_dir(pm.sources_path)
- has_deps = pj.has_dependencies()
- ins, outs = pm.calc_prepare_deps_inouts(unit.get("_TARBALLS_STORE"), has_deps)
-
- if has_deps:
- unit.onpeerdir(pm.get_local_peers_from_package_json())
- __set_append(unit, "_PREPARE_DEPS_INOUTS", _build_directives("input", ["hide"], sorted(ins)))
- __set_append(unit, "_PREPARE_DEPS_INOUTS", _build_directives("output", ["hide"], sorted(outs)))
-
- else:
- __set_append(unit, "_PREPARE_DEPS_INOUTS", _build_directives("output", [], sorted(outs)))
- unit.set(["_PREPARE_DEPS_CMD", "$_PREPARE_NO_DEPS_CMD"])
-
-
-@_with_report_configure_error
-def on_prepare_deps_configure_no_contrib(unit):
+def on_prepare_deps_configure(unit: NotsUnitType) -> None:
pm = _create_pm(unit)
pj = pm.load_package_json_from_dir(pm.sources_path)
has_deps = pj.has_dependencies()
@@ -743,7 +792,7 @@ def on_prepare_deps_configure_no_contrib(unit):
@_with_report_configure_error
-def on_node_modules_configure(unit):
+def on_node_modules_configure(unit: NotsUnitType) -> None:
pm = _create_pm(unit)
pj = pm.load_package_json_from_dir(pm.sources_path)
@@ -800,7 +849,9 @@ def on_node_modules_configure(unit):
@_with_report_configure_error
-def on_ts_test_for_configure(unit, test_runner, default_config, node_modules_filename):
+def on_ts_test_for_configure(
+ unit: NotsUnitType, test_runner: TsTestType, default_config: str, node_modules_filename: str
+) -> None:
if not _is_tests_enabled(unit):
return
@@ -857,8 +908,9 @@ def on_ts_test_for_configure(unit, test_runner, default_config, node_modules_fil
unit.set_property(["DART_DATA", data])
+# noinspection PyUnusedLocal
@_with_report_configure_error
-def on_validate_ts_test_for_args(unit, for_mod, root):
+def on_validate_ts_test_for_args(unit: NotsUnitType, for_mod: str, root: str) -> None:
# FBP-1085
is_arc_root = root == "${ARCADIA_ROOT}"
is_rel_for_mod = for_mod.startswith(".")
@@ -871,14 +923,14 @@ def on_validate_ts_test_for_args(unit, for_mod, root):
@_with_report_configure_error
-def on_set_ts_test_for_vars(unit, for_mod):
+def on_set_ts_test_for_vars(unit: NotsUnitType, for_mod: str) -> None:
unit.set(["TS_TEST_FOR", "yes"])
unit.set(["TS_TEST_FOR_DIR", unit.resolve_arc_path(for_mod)])
unit.set(["TS_TEST_FOR_PATH", rootrel_arc_src(for_mod, unit)])
@_with_report_configure_error
-def on_ts_files(unit, *files):
+def on_ts_files(unit: NotsUnitType, *files: str) -> None:
new_cmds = ['$COPY_CMD ${{input;context=TEXT:"{0}"}} ${{output;noauto:"{0}"}}'.format(f) for f in files]
all_cmds = unit.get("_TS_FILES_COPY_CMD")
if all_cmds:
@@ -887,7 +939,7 @@ def on_ts_files(unit, *files):
@_with_report_configure_error
-def on_ts_large_files(unit, destination: str, *files: list[str]):
+def on_ts_large_files(unit: NotsUnitType, destination: str, *files: list[str]) -> None:
if destination == REQUIRED_MISSING:
ymake.report_configure_error(
"Macro TS_LARGE_FILES() requires to use DESTINATION parameter.\n"
@@ -901,7 +953,7 @@ def on_ts_large_files(unit, destination: str, *files: list[str]):
return
# TODO: FBP-1795
- # ${BINDIR} prefix for input is important to resove to result of LARGE_FILES and not to SOURCEDIR
+ # ${BINDIR} prefix for input is important to resolve to result of LARGE_FILES and not to SOURCEDIR
new_cmds = [
'$COPY_CMD ${{input;context=TEXT:"${{BINDIR}}/{0}"}} ${{output;noauto:"{1}/{0}"}}'.format(f, destination)
for f in files
@@ -913,7 +965,7 @@ def on_ts_large_files(unit, destination: str, *files: list[str]):
@_with_report_configure_error
-def on_ts_package_check_files(unit):
+def on_ts_package_check_files(unit: NotsUnitType) -> None:
ts_files = unit.get("_TS_FILES_COPY_CMD")
if ts_files == "":
ymake.report_configure_error(
@@ -925,7 +977,7 @@ def on_ts_package_check_files(unit):
@_with_report_configure_error
-def on_depends_on_mod(unit):
+def on_depends_on_mod(unit: NotsUnitType) -> None:
if unit.get("_TS_TEST_DEPENDS_ON_BUILD"):
for_mod_path = unit.get("TS_TEST_FOR_PATH")
unit.ondepends([for_mod_path])
diff --git a/build/plugins/ytest.py b/build/plugins/ytest.py
index f24ba674a0..ab3f227bea 100644
--- a/build/plugins/ytest.py
+++ b/build/plugins/ytest.py
@@ -869,7 +869,6 @@ def onadd_pytest_bin(fields, unit, *args):
df.JdkForTests.value,
df.ModuleLang.value,
df.TestClasspath.value,
- df.TestClasspathOrigins.value,
df.TestClasspathDeps.value,
df.TestJar.value,
df.DockerImage.value,
diff --git a/build/scripts/clang_wrapper.py b/build/scripts/clang_wrapper.py
index b865c157cf..d5e48b91e1 100644
--- a/build/scripts/clang_wrapper.py
+++ b/build/scripts/clang_wrapper.py
@@ -34,7 +34,7 @@ def fix_path(p):
if __name__ == '__main__':
is_on_win = sys.argv[1] == 'yes'
path = sys.argv[2]
- args = filter(None, [fix(s) for s in sys.argv[3:]])
+ args = list(filter(None, [fix(s) for s in sys.argv[3:]]))
if is_on_win:
path = fix_path(path)
try:
diff --git a/build/scripts/fetch_from_npm.py b/build/scripts/fetch_from_npm.py
deleted file mode 100644
index d8f0c41f26..0000000000
--- a/build/scripts/fetch_from_npm.py
+++ /dev/null
@@ -1,113 +0,0 @@
-from __future__ import print_function
-from future.utils import raise_
-import os
-import sys
-import time
-import logging
-import argparse
-import hashlib
-import base64
-
-import sky
-import fetch_from
-
-
-NPM_BASEURL = "http://npm.yandex-team.ru"
-
-
-def parse_args():
- parser = argparse.ArgumentParser()
- fetch_from.add_common_arguments(parser)
-
- parser.add_argument("--tarball-url", required=True)
- parser.add_argument("--sky-id", required=True)
- parser.add_argument("--integrity", required=True)
- parser.add_argument("--integrity-algorithm", required=True)
-
- return parser.parse_args()
-
-
-def fetch(tarball_url, sky_id, integrity, integrity_algorithm, file_name, tries=5):
- """
- :param name: package name
- :type name: str
- :param version: package version
- :type version: str
- :param sky_id: sky id of tarball
- :type sky_id: str
- :param integrity: tarball integrity (hex)
- :type integrity: str
- :param integrity_algorithm: integrity algorithm (known for openssl)
- :type integrity_algorithm: str
- :param tries: tries count
- :type tries: int
- :return: path to fetched file
- :rtype: str
- """
- # if sky.is_avaliable() and 'NOTS_FETCH_FROM_HTTP_ONLY' not in os.environ:
- # fetcher = lambda: sky.fetch(sky_id, file_name)
- # else:
- # Отключаем походы через скай
- # TODO: https://st.yandex-team.ru/FBP-351
- if 'NOTS_FETCH_FROM_SKY' in os.environ and sky.is_avaliable():
- fetcher = lambda: sky.fetch(sky_id, file_name)
- else:
- fetcher = lambda: _fetch_via_http(tarball_url, integrity, integrity_algorithm, file_name)
-
- fetched_file = None
- exc_info = None
-
- for i in range(0, tries):
- try:
- fetched_file = fetcher()
- exc_info = None
- break
- except Exception as e:
- logging.exception(e)
- exc_info = exc_info or sys.exc_info()
- time.sleep(i)
-
- if exc_info:
- raise_(exc_info[0], exc_info[1], exc_info[2])
-
- return fetched_file
-
-
-def _fetch_via_http(tarball_url, integrity, integrity_algorithm, file_name):
- is_abs_url = tarball_url.startswith("https://") or tarball_url.startswith("http://")
- url_delim = "" if tarball_url.startswith("/") else "/"
- url = tarball_url if is_abs_url else NPM_BASEURL + url_delim + tarball_url
-
- hashobj = hashlib.new(integrity_algorithm)
- fetched_file = fetch_from.fetch_url(url, False, file_name, tries=1, writers=[hashobj.update])
- checksum = base64.b64encode(hashobj.digest()).decode('utf-8')
-
- if checksum != integrity:
- raise fetch_from.BadChecksumFetchError("Expected {}, but got {} for {}".format(
- integrity,
- checksum,
- file_name,
- ))
-
- return fetched_file
-
-
-def main(args):
- file_name = os.path.basename(args.copy_to)
- fetched_file = fetch(args.tarball_url, args.sky_id, args.integrity, args.integrity_algorithm, file_name)
- fetch_from.process(fetched_file, file_name, args)
-
-
-if __name__ == "__main__":
- args = parse_args()
- fetch_from.setup_logging(args, os.path.basename(__file__))
-
- try:
- main(args)
- except Exception as e:
- logging.exception(e)
- print(open(args.abs_log_path).read(), file=sys.stderr)
- sys.stderr.flush()
-
- import error
- sys.exit(error.ExitCodes.INFRASTRUCTURE_ERROR if fetch_from.is_temporary(e) else 1)
diff --git a/build/scripts/generic_cmd.py b/build/scripts/generic_cmd.py
new file mode 100644
index 0000000000..c850d244e8
--- /dev/null
+++ b/build/scripts/generic_cmd.py
@@ -0,0 +1,31 @@
+import os
+import sys
+import json
+import base64
+import subprocess
+
+
+if __name__ == '__main__':
+ p = sys.argv.index('--')
+ ctx = base64.b64decode(sys.argv[p + 1].encode()).decode()
+ kv = {}
+
+ for x in sys.argv[1:p]:
+ k, v = x.split('=')
+ ctx = ctx.replace(f'$({k})', v)
+ kv[k] = v
+
+ cmd = json.loads(ctx)
+
+ args = cmd['cmd_args']
+ cwd = cmd.get('cwd', kv['B'])
+
+ env = dict(**os.environ)
+ env['ARCADIA_ROOT_DISTBUILD'] = kv['S']
+ env.update(cmd['env'])
+
+ out = subprocess.check_output(args, env=env, cwd=cwd)
+
+ if stdout := cmd.get('stdout'):
+ with open(stdout, 'wb') as f:
+ f.write(out)
diff --git a/build/scripts/ya.make b/build/scripts/ya.make
index 43cda7dc0d..3941fa1fb8 100644
--- a/build/scripts/ya.make
+++ b/build/scripts/ya.make
@@ -15,7 +15,6 @@ IF (PY2)
fetch_from.py
fetch_from_archive.py
fetch_from_mds.py
- fetch_from_npm.py
fetch_from_sandbox.py
fetch_resource.py
fix_py2_protobuf.py
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index b59168f2bc..79ad503dea 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -2659,7 +2659,7 @@ macro ADD_COMPILABLE_TRANSLIT(TranslitTable, NGrams, Name, Options...) {
_COPY_FILE_CONTEXT=
macro _COPY_FILE_IMPL(TEXT[], AUTO_DST="", NOAUTO_DST="", OUTPUT_INCLUDES[], INDUCED_DEPS[], OUTPUT_INCLUDES_INP[], FILE...) {
- .CMD=$COPY_CMD ${input:FILE} ${input;context=TEXT:TEXT} ${output:AUTO_DST} ${noauto;output:NOAUTO_DST} ${output_include;hide:OUTPUT_INCLUDES} ${output_include;from_input;hide:OUTPUT_INCLUDES_INP} $INDUCED_DEPS ${hide;kv:"p CP"} ${hide;kv:"pc light-cyan"}
+ .CMD=$COPY_CMD ${input:FILE} ${context=TEXT;input:TEXT} ${output:AUTO_DST} ${noauto;output:NOAUTO_DST} ${hide;output_include:OUTPUT_INCLUDES} ${output_include;from_input;hide:OUTPUT_INCLUDES_INP} $INDUCED_DEPS ${hide;kv:"p CP"} ${hide;kv:"pc light-cyan"}
.SEM=copy_file ${input:FILE} ${output:AUTO_DST} ${noauto;output:NOAUTO_DST} && target_commands-ITEM && target_commands-macro copy_file && target_commands-args ${input:FILE} ${output:AUTO_DST} ${noauto;output:NOAUTO_DST}
}
@@ -2725,8 +2725,8 @@ macro ALL_RESOURCE_FILES_FROM_DIRS(PREFIX="", STRIP="", DIRS...) {
_ARF_HELPER(${pre=PREFIX :PREFIX} STRIP ${ARCADIA_ROOT}/${MODDIR}/${STRIP} ${_ALL_RES_DIRS})
}
-macro _BUNDLE_TARGET(Target, Destination) {
- .CMD=$MOVE_FILE ${result:Target} ${noauto;output:Destination} ${hide;kv:"p BN"} ${hide;kv:"pc light-cyan"} $VCS_INFO_DISABLE_CACHE__NO_UID__
+macro _BUNDLE_TARGET(Target, Destination, Suffix) {
+ .CMD=$MOVE_FILE ${result:Target}$Suffix ${noauto;output:Destination} ${hide;kv:"p BN"} ${hide;kv:"pc light-cyan"} $VCS_INFO_DISABLE_CACHE__NO_UID__
}
### @usage: TIMEOUT(TIMEOUT)
@@ -2844,7 +2844,7 @@ macro JOIN_SRCS_GLOBAL(Out, Src...) {
### This macro places all files into single file, so will work with any sources.
### You should specify file name with the extension as Out. Further processing will be done according to this extension.
macro FLAT_JOIN_SRCS_GLOBAL(Out, Src...) {
- .CMD=$FS_TOOLS cat ${noauto;output:Out} --ya-start-command-file ${input;context=TEXT:Src} --ya-end-command-file ${output_include;from_input;hide:Src} ${hide;kv:"p JS"} ${hide;kv:"pc magenta"}
+ .CMD=$FS_TOOLS cat ${noauto;output:Out} --ya-start-command-file ${context=TEXT;input:Src} --ya-end-command-file ${output_include;from_input;hide:Src} ${hide;kv:"p JS"} ${hide;kv:"pc magenta"}
SRCS(GLOBAL $Out)
}
@@ -3161,7 +3161,7 @@ macro MANUAL_GENERATION(Outs...) {
# tag:src-processing
macro _SRC("sc", SRC, SRCFLAGS...) {
- .CMD=${tool:"tools/domschemec"} --in ${input:SRC} --out ${output;norel:SRC.h} ${output_include;hide:"library/cpp/domscheme/runtime.h"} ${SRCFLAGS} ${hide;kv:"p SC"} ${hide;kv:"pc yellow"}
+ .CMD=${tool:"tools/domschemec"} --in ${input:SRC} --out ${output;norel:SRC.h} ${hide;output_include:"library/cpp/domscheme/runtime.h"} ${SRCFLAGS} ${hide;kv:"p SC"} ${hide;kv:"pc yellow"}
.PEERDIR=library/cpp/domscheme
}
@@ -3172,7 +3172,7 @@ macro _SRC("ssqls", SRC, SRCFLAGS...) {
# tag:src-processing
macro _SRC("f", SRC, SRCFLAGS...) {
- .CMD=$YMAKE_PYTHON ${input:"build/scripts/f2c.py"} -t ${tool:"contrib/tools/f2c"} -c ${input:SRC} -o ${output:SRC.c} ${output_include;hide:"f2c.h"} ${hide;kv:"p FT"} ${hide;kv:"pc light-green"}
+ .CMD=$YMAKE_PYTHON ${input:"build/scripts/f2c.py"} -t ${tool:"contrib/tools/f2c"} -c ${input:SRC} -o ${output:SRC.c} ${hide;output_include:"f2c.h"} ${hide;kv:"p FT"} ${hide;kv:"pc light-green"}
.PEERDIR=contrib/libs/libf2c
.ADDINCL=contrib/libs/libf2c
}
@@ -3488,7 +3488,7 @@ YDL_DESC_FLAGS=
# tag:src-processing tag:ydl-specific
macro _SRC("ydl", SRC, SRCFLAGS...) {
- .CMD=${tool:"statbox/ydl/compiler/tooling/ydl/bin"} c $YDL_FLAGS --cpp-output-header ${output;suf=.h:SRC} --cpp-output-source ${output;suf=.cpp:SRC} ${input:SRC} ${output_include;hide:"statbox/ydl/runtime/cpp/gen_support/standard_includes.h"} ${hide;kv:"p YDL"} ${hide;kv:"pc yellow"}
+ .CMD=${tool:"statbox/ydl/compiler/tooling/ydl/bin"} c $YDL_FLAGS --cpp-output-header ${output;suf=.h:SRC} --cpp-output-source ${output;suf=.cpp:SRC} ${input:SRC} ${hide;output_include:"statbox/ydl/runtime/cpp/gen_support/standard_includes.h"} ${hide;kv:"p YDL"} ${hide;kv:"pc yellow"}
.PEERDIR+=statbox/ydl/runtime/cpp
}
@@ -3909,7 +3909,7 @@ macro ARCHIVE_ASM(NAME="", DONTCOMPRESS?"-p":"", Files...) {
# tag:yweb-specific
macro PIRE_INLINE_CMD(SRC) {
- .CMD=${tool:"library/cpp/regex/pire/inline"} -o ${output:SRC} ${input:SRC} ${output_include;hide:SRC} ${hide;kv:"p PI"} ${hide;kv:"pc yellow"}
+ .CMD=${tool:"library/cpp/regex/pire/inline"} -o ${output:SRC} ${input:SRC} ${hide;output_include:SRC} ${hide;kv:"p PI"} ${hide;kv:"pc yellow"}
}
# tag:yweb-specific
@@ -4005,7 +4005,7 @@ DECIMAL_MD5_FIXED=
### Generates .cpp file <fileName> with one defined function 'const char* <funcName>() { return "<calculated_md5_hash>"; }'.
### <calculated_md5_hash> will be md5 hash for all inputs passed to this macro.
macro DECIMAL_MD5_LOWER_32_BITS(File, FUNCNAME="", Opts...) {
- .CMD=$YMAKE_PYTHON ${input:DECIMAL_MD5_SCRIPT} --fixed-output=${DECIMAL_MD5_FIXED} --func-name=${FUNCNAME} --lower-bits 32 --source-root=$ARCADIA_ROOT ${input;context=TEXT:Opts} ${stdout;output:File} ${hide;kv:"p SV"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .CMD=$YMAKE_PYTHON ${input:DECIMAL_MD5_SCRIPT} --fixed-output=${DECIMAL_MD5_FIXED} --func-name=${FUNCNAME} --lower-bits 32 --source-root=$ARCADIA_ROOT ${context=TEXT;input:Opts} ${stdout;output:File} ${hide;kv:"p SV"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
}
# tag:internal
@@ -4301,7 +4301,7 @@ macro _LUAJIT_OPENRESTY_OBJDUMP(Src, OUT="") {
###
### Documentation: https://wiki.yandex-team.ru/yatool/HowToWriteYaMakeFiles/
macro GENERATE_ENUM_SERIALIZATION(File) {
- .CMD=$ENUM_PARSER_TOOL ${input:File} --include-path ${input;rootrel:File} --output ${output;suf=_serialized.cpp:File} ${output_include;from_input;hide:File} ${output_include;hide:"util/generic/serialized_enum.h"} ${hide;kv:"p EN"} ${hide;kv:"pc yellow"}
+ .CMD=$ENUM_PARSER_TOOL ${input:File} --include-path ${input;rootrel:File} --output ${output;suf=_serialized.cpp:File} ${output_include;from_input;hide:File} ${hide;output_include:"util/generic/serialized_enum.h"} ${hide;kv:"p EN"} ${hide;kv:"pc yellow"}
.SEM=generate_enum_serilization ${input:File} ${hide;output;suf=_serialized.o:File} INCLUDE_HEADERS ${input;rootrel:File} ${hide;tool:"tools/enum_parser/enum_parser"} && target_macroses-ITEM && target_macroses-macro generate_enum_serilization && target_macroses-args ${input:File} ${hide;output;suf=_serialized.o:File} INCLUDE_HEADERS ${input;rootrel:File} ${hide;tool:"tools/enum_parser/enum_parser"}
PEERDIR(tools/enum_parser/enum_serialization_runtime)
}
@@ -4395,7 +4395,7 @@ SCHEEME2_STRUCT_INFO_FLAGS=-f "const static ui32 RecordSig" -u "RecordSig" --gcc
### for compatibility with C++ compiler and the external environment.
### See tools/structparser for more details.
macro GEN_SCHEEME2(ScheemeName, FromFile) {
- .CMD=$CXX_COMPILER_OLD $C_FLAGS_PLATFORM -c ${stdout;tmp:FromFile.cph} $SCHEEME2_CFLAGS ${input:FromFile} ${pre=-I:_C__INCLUDE} $CXXFLAGS -Wno-error && ${tool:"tools/structparser"} -o ${output:ScheemeName.inc} -n N${ScheemeName}SchemeInfo $SCHEEME2_STRUCT_INFO_FLAGS $DATAWORK_SCHEEME_EXPORT_FLAGS ${tmp:FromFile.cph} ${stdout;output;noauto:ScheemeName.inc.log} ${hide;kv:"p SH"} ${hide;kv:"pc yellow"}
+ .CMD=$CXX_COMPILER_OLD $C_FLAGS_PLATFORM -c ${stdout;tmp:FromFile.cph} $SCHEEME2_CFLAGS ${input:FromFile} ${pre=-I:_C__INCLUDE} $CXXFLAGS -Wno-error && ${tool:"tools/structparser"} -o ${output:ScheemeName.inc} -n N${ScheemeName}SchemeInfo $SCHEEME2_STRUCT_INFO_FLAGS $DATAWORK_SCHEEME_EXPORT_FLAGS ${tmp:FromFile.cph} ${stdout;noauto;output:ScheemeName.inc.log} ${hide;kv:"p SH"} ${hide;kv:"pc yellow"}
}
### @usage: SYMLINK(from to)
@@ -4563,8 +4563,8 @@ macro DECLARE_IN_DIRS(var_prefix, PATTERN, SRCDIR="", RECURSIVE?"**/":"", EXCLUD
### ${CURDIR} and ${BINDIR} which are expanded where the outputs are used.
### Note that Tool is always built for the host platform, so be careful to provide that tool can be built for all Arcadia major host platforms (Linux, MacOS and Windows).
macro RUN_PROGRAM(Tool, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], TOOL{tool}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], IN_DEPS[], STDOUT="", STDOUT_NOAUTO="", CWD="", ENV[], Args...) {
- .CMD=${cwd:CWD} ${env:ENV} ${tool:Tool} $Args ${hide;input:IN} ${input;context=TEXT;hide:IN_NOPARSE} ${hide;input:IN_DEPS} ${output_include;hide:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;output;noauto:STDOUT_NOAUTO} ${hide;kv:"p PR"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
- .SEM=add_custom_command $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${input;context=TEXT:IN_NOPARSE} ${tool:Tool} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND ${tool:Tool} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO) && target_commands-ITEM && target_commands-macro add_custom_command && target_commands-args $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${input;context=TEXT:IN_NOPARSE} ${tool:Tool} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND ${tool:Tool} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO)
+ .CMD=${cwd:CWD} ${env:ENV} ${tool:Tool} $Args ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;input:IN_DEPS} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p PR"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .SEM=add_custom_command $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${context=TEXT;input:IN_NOPARSE} ${tool:Tool} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND ${tool:Tool} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO) && target_commands-ITEM && target_commands-macro add_custom_command && target_commands-args $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${context=TEXT;input:IN_NOPARSE} ${tool:Tool} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND ${tool:Tool} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO)
}
# tag:lua-specific
@@ -4589,7 +4589,7 @@ macro RUN_PROGRAM(Tool, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOA
### For absolute paths use ${ARCADIA_ROOT} and ${ARCADIA_BUILD_ROOT}, or
### ${CURDIR} and ${BINDIR} which are expanded where the outputs are used.
macro RUN_LUA(ScriptPath, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], TOOL{tool}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], STDOUT="", STDOUT_NOAUTO="", CWD="", ENV[], Args...) {
- .CMD=${cwd:CWD} ${env:ENV} $LUA_TOOL ${input:ScriptPath} $Args ${hide;input:IN} ${input;context=TEXT;hide:IN_NOPARSE} ${output_include;hide:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;output;noauto:STDOUT_NOAUTO} ${hide;kv:"p LU"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .CMD=${cwd:CWD} ${env:ENV} $LUA_TOOL ${input:ScriptPath} $Args ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p LU"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
}
# tag:python-specific
@@ -4614,14 +4614,14 @@ macro RUN_LUA(ScriptPath, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_N
### For absolute paths use ${ARCADIA_ROOT} and ${ARCADIA_BUILD_ROOT}, or
### ${CURDIR} and ${BINDIR} which are expanded where the outputs are used.
macro RUN_PYTHON3(ScriptPath, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], TOOL{tool}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], STDOUT="", STDOUT_NOAUTO="", CWD="", ENV[], Args...) {
- .CMD=${cwd:CWD} ${env:ENV} $YMAKE_PYTHON3 ${input:ScriptPath} $Args ${hide;input:IN} ${input;context=TEXT;hide:IN_NOPARSE} ${output_include;hide:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;output;noauto:STDOUT_NOAUTO} ${hide;kv:"p PY"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
- .SEM=find_package Python3 && packages-ITEM && packages-name Python3 && mpackages-ITEM && mpackages-name Python3 && add_custom_command $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${input;context=TEXT:IN_NOPARSE} ${input:ScriptPath} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND Python3::Interpreter ${input:ScriptPath} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO) && target_commands-ITEM && target_commands-macro add_custom_command && target_commands-args $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${input;context=TEXT:IN_NOPARSE} ${input:ScriptPath} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND Python3::Interpreter ${input:ScriptPath} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO)
+ .CMD=${cwd:CWD} ${env:ENV} $YMAKE_PYTHON3 ${input:ScriptPath} $Args ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p PY"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .SEM=find_package Python3 && packages-ITEM && packages-name Python3 && mpackages-ITEM && mpackages-name Python3 && add_custom_command $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${context=TEXT;input:IN_NOPARSE} ${input:ScriptPath} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND Python3::Interpreter ${input:ScriptPath} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO) && target_commands-ITEM && target_commands-macro add_custom_command && target_commands-args $_SET_ENV_FOR_CUSTOM_COMMAND($ENV) OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} ${output:STDOUT} ${noauto;output:STDOUT_NOAUTO} DEPENDS ${input:IN} ${context=TEXT;input:IN_NOPARSE} ${input:ScriptPath} ${tool:TOOL} ${pre=WORKING_DIRECTORY :CWD} COMMAND Python3::Interpreter ${input:ScriptPath} $Args ${pre=> :STDOUT} ${pre=> :STDOUT_NOAUTO} $_TARGET_SOURCES_FOR_HEADERS($OUT $OUT_NOAUTO $STDOUT $STDOUT_NOAUTO)
}
# tag:java-specific
macro _RUN_ANTLR_BASE(IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], TOOL[], STDOUT="", STDOUT_NOAUTO="", CWD="", JAR[], SEM="run_java", SEM_ARGS_PREFIX="", ENV[], HIDE_OUTPUT?"stderr2stdout":"stdout2stderr", Args...) {
PEERDIR(build/platform/java/jdk $JDK_RESOURCE_PEERDIR)
- .CMD=${cwd:CWD} ${env:ENV} $YMAKE_PYTHON ${input;pre=build/scripts/:HIDE_OUTPUT.py} $JDK_RESOURCE/bin/java $JAR $Args ${hide;tool:TOOL} ${hide;input:IN} ${input;context=TEXT;hide:IN_NOPARSE} ${output_include;hide:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;output;noauto:STDOUT_NOAUTO} ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
+ .CMD=${cwd:CWD} ${env:ENV} $YMAKE_PYTHON ${input;pre=build/scripts/:HIDE_OUTPUT.py} $JDK_RESOURCE/bin/java $JAR $Args ${hide;tool:TOOL} ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p JV"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
.SEM=$SEM OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} DEPENDS ${input:IN} ${pre=WORKING_DIRECTORY :CWD} $SEM_ARGS_PREFIX $Args && target_commands-ITEM && target_commands-macro $SEM && target_commands-args OUTPUT ${output:OUT} ${noauto;output:OUT_NOAUTO} DEPENDS ${input:IN} ${pre=WORKING_DIRECTORY :CWD} $SEM_ARGS_PREFIX $Args
}
@@ -4648,7 +4648,7 @@ macro _RUN_ANTLR_BASE(IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUT
### changes resource_ids in such macros if newer resource of specified type is available. Note that the task seeks AUTOUPDATED in specific position,
### so you shall place it immediately after resource_id.
macro FROM_SANDBOX(Id, OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], FILE?"--copy-to-dir":"--untar-to", AUTOUPDATED="", PREFIX=".", RENAME[], EXECUTABLE?"--executable":"", SBR="sbr:") {
- .CMD=${hide:SANDBOX_FAKEID} ${cwd:BINDIR} ${resource;pre=$SBR:Id} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_sandbox.py"} --resource-file $(RESOURCE_ROOT)/sbr/$Id/resource --resource-id $Id $FILE $PREFIX ${pre=--rename :RENAME} $EXECUTABLE -- $OUT $OUT_NOAUTO ${hide;input:"build/scripts/fetch_from.py"} ${output_include;hide:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${requirements;hide:"network:full"} ${hide;kv:"p SB"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .CMD=${hide:SANDBOX_FAKEID} ${cwd:BINDIR} ${resource;pre=$SBR:Id} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_sandbox.py"} --resource-file $(RESOURCE_ROOT)/sbr/$Id/resource --resource-id $Id $FILE $PREFIX ${pre=--rename :RENAME} $EXECUTABLE -- $OUT $OUT_NOAUTO ${hide;input:"build/scripts/fetch_from.py"} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${requirements;hide:"network:full"} ${hide;kv:"p SB"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
ADD_CHECK(check.resource $Id)
}
@@ -4667,7 +4667,7 @@ macro LARGE_FILES(AUTOUPDATED?, Files...) {
###
### Process file archive as [FROM_SANDBOX()](#macro_FROM_SANDBOX).
macro FROM_ARCHIVE(Src, OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], PREFIX=".", RENAME[], EXECUTABLE?"--executable":"") {
- .CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_archive.py"} "--archive" ${input:Src} "--file-name" ${suf=-:Src} "--untar-to" $PREFIX ${pre=--rename :RENAME} $EXECUTABLE -- $OUT $OUT_NOAUTO ${hide;input:"build/scripts/fetch_from.py"} ${output_include;hide:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${hide;kv:"p FA"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_archive.py"} "--archive" ${input:Src} "--file-name" ${suf=-:Src} "--untar-to" $PREFIX ${pre=--rename :RENAME} $EXECUTABLE -- $OUT $OUT_NOAUTO ${hide;input:"build/scripts/fetch_from.py"} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${hide;kv:"p FA"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
}
when ($MSVC == "yes") {
@@ -5056,11 +5056,11 @@ macro TASKLET() {
}
TASKLET_REG_INCLUDES= \
- ${output_include;hide:"tasklet/v1/runtime/lib/cpp_wrapper.h"} \
- ${output_include;hide:"tasklet/v1/runtime/lib/go_wrapper.h"} \
- ${output_include;hide:"tasklet/v1/runtime/lib/py_wrapper.h"} \
- ${output_include;hide:"tasklet/v1/runtime/lib/js_wrapper.h"} \
- ${output_include;hide:"tasklet/v1/runtime/lib/registry.h"}
+ ${hide;output_include:"tasklet/v1/runtime/lib/cpp_wrapper.h"} \
+ ${hide;output_include:"tasklet/v1/runtime/lib/go_wrapper.h"} \
+ ${hide;output_include:"tasklet/v1/runtime/lib/py_wrapper.h"} \
+ ${hide;output_include:"tasklet/v1/runtime/lib/js_wrapper.h"} \
+ ${hide;output_include:"tasklet/v1/runtime/lib/registry.h"}
macro TASKLET_REG(Name, Lang, Impl, Includes...) {
PEERDIR(tasklet/v1/domain sandbox/bin sandbox/taskbox/worker)
@@ -5071,7 +5071,7 @@ macro TASKLET_REG(Name, Lang, Impl, Includes...) {
PEERDIR+=tasklet/v1/runtime/js
}
- .CMD=$YMAKE_PYTHON ${input:"build/scripts/gen_tasklet_reg.py"} $Name -l $Lang -i $Impl ${noauto;output:Name.task.cpp} $Includes ${output_include;hide:Includes} $TASKLET_REG_INCLUDES ${hide;kv:"p TT"} ${hide;kv:"pc yellow"}
+ .CMD=$YMAKE_PYTHON ${input:"build/scripts/gen_tasklet_reg.py"} $Name -l $Lang -i $Impl ${noauto;output:Name.task.cpp} $Includes ${hide;output_include:Includes} $TASKLET_REG_INCLUDES ${hide;kv:"p TT"} ${hide;kv:"pc yellow"}
SRCS(GLOBAL $Name.task.cpp)
}
@@ -5080,7 +5080,7 @@ macro TASKLET_REG(Name, Lang, Impl, Includes...) {
macro TASKLET_REG_EXT(Name, Lang, Impl, Wrapper, Includes...) {
PEERDIR(tasklet/v1/domain sandbox/bin sandbox/taskbox/worker)
- .CMD=$YMAKE_PYTHON ${input:"build/scripts/gen_tasklet_reg.py"} $Name -l $Lang -i $Impl -w $Wrapper ${noauto;output:Name.task.cpp} $Includes ${output_include;hide:Includes} $TASKLET_REG_INCLUDES ${hide;kv:"p TT"} ${hide;kv:"pc yellow"}
+ .CMD=$YMAKE_PYTHON ${input:"build/scripts/gen_tasklet_reg.py"} $Name -l $Lang -i $Impl -w $Wrapper ${noauto;output:Name.task.cpp} $Includes ${hide;output_include:Includes} $TASKLET_REG_INCLUDES ${hide;kv:"p TT"} ${hide;kv:"pc yellow"}
SRCS(GLOBAL $Name.task.cpp)
}
@@ -5888,7 +5888,7 @@ macro HEADERS(Dirs...) {
### - CWD - path to the working directory of the Tool
### Note: Generated AST files generated into BINDIR according to corresponding .cpp file names listed in SOURCES parameter.
macro CLANG_EMIT_AST_CXX_RUN_TOOL(SOURCES[], OPTS[], Tool, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], TOOL{tool}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], IN_DEPS[], STDOUT="", STDOUT_NOAUTO="", CWD="", ENV[], Args...) {
- .CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/clang_wrapper.py"} $WINDOWS ${CLANG_RESOURCE_GLOBAL}/bin/clang++ ${pre=-I:_C__INCLUDE} $CXXFLAGS $C_FLAGS_PLATFORM $LLVM_OPTS -emit-ast -c ${input:SOURCES} ${hide;tmp;noext;nopath:SOURCES.ast} $OPTS ${hide;kv:"p ST"} ${hide;kv:"pc light-green"} && ${cwd:CWD} ${env:ENV} ${tool:Tool} $Args ${hide;input:IN} ${input;context=TEXT;hide:IN_NOPARSE} ${hide;input:IN_DEPS} ${output_include;hide:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;output;noauto:STDOUT_NOAUTO} ${hide;kv:"p PR"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/clang_wrapper.py"} $WINDOWS ${CLANG_RESOURCE_GLOBAL}/bin/clang++ ${pre=-I:_C__INCLUDE} $CXXFLAGS $C_FLAGS_PLATFORM $LLVM_OPTS -emit-ast -c ${input:SOURCES} ${hide;tmp;noext;nopath:SOURCES.ast} $OPTS ${hide;kv:"p ST"} ${hide;kv:"pc light-green"} && ${cwd:CWD} ${env:ENV} ${tool:Tool} $Args ${hide;input:IN} ${hide;context=TEXT;input:IN_NOPARSE} ${hide;input:IN_DEPS} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p PR"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
PEERDIR(build/platform/clang)
}
diff --git a/contrib/libs/c-ares/.yandex_meta/devtools.copyrights.report b/contrib/libs/c-ares/.yandex_meta/devtools.copyrights.report
index 79b26c01c2..f1eed72db1 100644
--- a/contrib/libs/c-ares/.yandex_meta/devtools.copyrights.report
+++ b/contrib/libs/c-ares/.yandex_meta/devtools.copyrights.report
@@ -55,8 +55,9 @@ BELONGS ya.make
include/ares.h [3:4]
include/ares_dns.h [3:4]
include/ares_nameser.h [3:4]
- src/lib/ares__addrinfo_localhost.c [3:4]
- src/lib/ares__socket.c [3:4]
+ src/lib/ares_addrinfo_localhost.c [3:4]
+ src/lib/ares_conn.c [3:4]
+ src/lib/ares_socket.c [3:4]
KEEP COPYRIGHT_SERVICE_LABEL 169a51bc2a181587c3cadfcf8c1d7365
BELONGS ya.make
@@ -70,6 +71,17 @@ BELONGS ya.make
Files with this license:
src/lib/inet_net_pton.c [2:3]
+KEEP COPYRIGHT_SERVICE_LABEL 1c99eb644d88ff8097bfa9bdd8e99c78
+BELONGS ya.make
+ License text:
+ * Copyright (c) 2024 Brad house
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ src/lib/util/ares_uri.c [3:3]
+
KEEP COPYRIGHT_SERVICE_LABEL 39576df1509c67e327ee115665da4bfb
BELONGS ya.make
License text:
@@ -118,23 +130,24 @@ BELONGS ya.make
Match type : COPYRIGHT
Files with this license:
include/ares_dns_record.h [3:3]
- src/lib/ares__hosts_file.c [3:3]
- src/lib/ares__parse_into_addrinfo.c [3:4]
+ src/lib/ares_hosts_file.c [3:3]
+ src/lib/ares_parse_into_addrinfo.c [3:4]
src/lib/ares_qcache.c [3:3]
src/lib/ares_update_servers.c [3:5]
- src/lib/dsa/ares__htable.c [3:3]
- src/lib/dsa/ares__htable.h [3:3]
- src/lib/dsa/ares__htable_asvp.c [3:3]
- src/lib/dsa/ares__htable_asvp.h [3:3]
- src/lib/dsa/ares__htable_strvp.c [3:3]
- src/lib/dsa/ares__htable_strvp.h [3:3]
- src/lib/dsa/ares__htable_szvp.c [3:3]
- src/lib/dsa/ares__htable_szvp.h [3:3]
- src/lib/dsa/ares__llist.c [3:3]
- src/lib/dsa/ares__llist.h [3:3]
- src/lib/dsa/ares__slist.c [3:3]
- src/lib/dsa/ares__slist.h [3:3]
+ src/lib/dsa/ares_htable.c [3:3]
+ src/lib/dsa/ares_htable.h [3:3]
+ src/lib/dsa/ares_htable_asvp.c [3:3]
+ src/lib/dsa/ares_htable_strvp.c [3:3]
+ src/lib/dsa/ares_htable_szvp.c [3:3]
+ src/lib/dsa/ares_llist.c [3:3]
+ src/lib/dsa/ares_slist.c [3:3]
+ src/lib/dsa/ares_slist.h [3:3]
src/lib/event/ares_event.h [3:3]
+ src/lib/include/ares_buf.h [3:3]
+ src/lib/include/ares_htable_asvp.h [3:3]
+ src/lib/include/ares_htable_strvp.h [3:3]
+ src/lib/include/ares_htable_szvp.h [3:3]
+ src/lib/include/ares_llist.h [3:3]
src/lib/legacy/ares_create_query.c [3:3]
src/lib/legacy/ares_parse_caa_reply.c [3:3]
src/lib/legacy/ares_parse_mx_reply.c [3:3]
@@ -151,14 +164,13 @@ BELONGS ya.make
src/lib/record/ares_dns_private.h [3:3]
src/lib/record/ares_dns_record.c [3:3]
src/lib/record/ares_dns_write.c [3:3]
- src/lib/str/ares__buf.c [3:3]
- src/lib/str/ares__buf.h [3:3]
- src/lib/util/ares__iface_ips.c [3:3]
- src/lib/util/ares__iface_ips.h [3:3]
- src/lib/util/ares__threads.c [3:3]
- src/lib/util/ares__threads.h [3:3]
+ src/lib/str/ares_buf.c [3:3]
+ src/lib/util/ares_iface_ips.c [3:3]
+ src/lib/util/ares_iface_ips.h [3:3]
src/lib/util/ares_math.c [3:3]
src/lib/util/ares_rand.c [3:3]
+ src/lib/util/ares_threads.c [3:3]
+ src/lib/util/ares_threads.h [3:3]
KEEP COPYRIGHT_SERVICE_LABEL 581a26659693b3672712a294efb19777
BELONGS ya.make
@@ -174,7 +186,7 @@ BELONGS ya.make
KEEP COPYRIGHT_SERVICE_LABEL 59a5d4a5ee570c05deb62c0668f64397
BELONGS ya.make
-FILE_INCLUDE AUTHORS found in files: LICENSE.md at line 4, src/lib/ares__addrinfo2hostent.c at line 4, src/lib/ares__close_sockets.c at line 4, src/lib/ares_destroy.c at line 4, src/lib/ares_free_hostent.c at line 4, src/lib/ares_freeaddrinfo.c at line 4, src/lib/ares_getenv.c at line 4, src/lib/ares_getenv.h at line 4, src/lib/ares_gethostbyaddr.c at line 4, src/lib/ares_init.c at line 4, src/lib/ares_library_init.c at line 4, src/lib/ares_options.c at line 4, src/lib/ares_platform.c at line 4, src/lib/ares_platform.h at line 4, src/lib/ares_private.h at line 4, src/lib/ares_process.c at line 4, src/lib/ares_query.c at line 4, src/lib/ares_search.c at line 4, src/lib/ares_send.c at line 4, src/lib/ares_strerror.c at line 4, src/lib/ares_sysconfig.c at line 4, src/lib/ares_sysconfig_files.c at line 4, src/lib/ares_sysconfig_win.c at line 4, src/lib/ares_timeout.c at line 4, src/lib/ares_update_servers.c at line 4, src/lib/ares_version.c at line 4, src/lib/legacy/ares_expand_string.c at line 4, src/lib/legacy/ares_fds.c at line 4, src/lib/legacy/ares_parse_a_reply.c at line 4, src/lib/legacy/ares_parse_aaaa_reply.c at line 4, src/lib/str/ares_str.c at line 4, src/lib/str/ares_str.h at line 4, src/lib/str/ares_strcasecmp.c at line 4, src/lib/str/ares_strcasecmp.h at line 4, src/lib/windows_port.c at line 4
+FILE_INCLUDE AUTHORS found in files: LICENSE.md at line 4, src/lib/ares_addrinfo2hostent.c at line 4, src/lib/ares_close_sockets.c at line 4, src/lib/ares_destroy.c at line 4, src/lib/ares_free_hostent.c at line 4, src/lib/ares_freeaddrinfo.c at line 4, src/lib/ares_getenv.c at line 4, src/lib/ares_getenv.h at line 4, src/lib/ares_gethostbyaddr.c at line 4, src/lib/ares_init.c at line 4, src/lib/ares_library_init.c at line 4, src/lib/ares_options.c at line 4, src/lib/ares_private.h at line 4, src/lib/ares_process.c at line 4, src/lib/ares_query.c at line 4, src/lib/ares_search.c at line 4, src/lib/ares_send.c at line 4, src/lib/ares_strerror.c at line 4, src/lib/ares_sysconfig.c at line 4, src/lib/ares_sysconfig_files.c at line 4, src/lib/ares_sysconfig_win.c at line 4, src/lib/ares_timeout.c at line 4, src/lib/ares_update_servers.c at line 4, src/lib/ares_version.c at line 4, src/lib/include/ares_str.h at line 4, src/lib/legacy/ares_expand_string.c at line 4, src/lib/legacy/ares_fds.c at line 4, src/lib/legacy/ares_parse_a_reply.c at line 4, src/lib/legacy/ares_parse_aaaa_reply.c at line 4, src/lib/str/ares_str.c at line 4, src/lib/windows_port.c at line 4
License text:
Copyright (c) 1998 Massachusetts Institute of Technology
Copyright (c) 2007 - 2023 Daniel Stenberg with many contributors, see AUTHORS
@@ -185,8 +197,8 @@ FILE_INCLUDE AUTHORS found in files: LICENSE.md at line 4, src/lib/ares__addrinf
Match type : COPYRIGHT
Files with this license:
LICENSE.md [3:5]
- src/lib/ares__addrinfo2hostent.c [3:6]
- src/lib/ares__close_sockets.c [3:4]
+ src/lib/ares_addrinfo2hostent.c [3:6]
+ src/lib/ares_close_sockets.c [3:4]
src/lib/ares_destroy.c [3:4]
src/lib/ares_free_hostent.c [3:4]
src/lib/ares_freeaddrinfo.c [3:4]
@@ -196,8 +208,6 @@ FILE_INCLUDE AUTHORS found in files: LICENSE.md at line 4, src/lib/ares__addrinf
src/lib/ares_init.c [3:4]
src/lib/ares_library_init.c [3:4]
src/lib/ares_options.c [3:4]
- src/lib/ares_platform.c [3:4]
- src/lib/ares_platform.h [3:4]
src/lib/ares_private.h [3:4]
src/lib/ares_process.c [3:4]
src/lib/ares_query.c [3:4]
@@ -210,14 +220,12 @@ FILE_INCLUDE AUTHORS found in files: LICENSE.md at line 4, src/lib/ares__addrinf
src/lib/ares_timeout.c [3:4]
src/lib/ares_update_servers.c [3:5]
src/lib/ares_version.c [3:4]
+ src/lib/include/ares_str.h [3:4]
src/lib/legacy/ares_expand_string.c [3:4]
src/lib/legacy/ares_fds.c [3:4]
src/lib/legacy/ares_parse_a_reply.c [3:4]
src/lib/legacy/ares_parse_aaaa_reply.c [3:5]
src/lib/str/ares_str.c [3:4]
- src/lib/str/ares_str.h [3:4]
- src/lib/str/ares_strcasecmp.c [3:4]
- src/lib/str/ares_strcasecmp.h [3:4]
src/lib/windows_port.c [3:4]
KEEP COPYRIGHT_SERVICE_LABEL 6c49b190fc96e32ee1e8f2ea59984e79
@@ -258,7 +266,7 @@ BELONGS ya.make
Score : 100.00
Match type : COPYRIGHT
Files with this license:
- src/lib/ares__sortaddrinfo.c [7:10]
+ src/lib/ares_sortaddrinfo.c [7:10]
KEEP COPYRIGHT_SERVICE_LABEL 78db66be56803e72faf0c0319b5841bb
BELONGS ya.make
@@ -272,7 +280,7 @@ BELONGS ya.make
Score : 100.00
Match type : COPYRIGHT
Files with this license:
- src/lib/ares__sortaddrinfo.c [7:10]
+ src/lib/ares_sortaddrinfo.c [7:10]
KEEP COPYRIGHT_SERVICE_LABEL 85865ce667770443f065d82a66073a8b
BELONGS ya.make
@@ -286,7 +294,7 @@ BELONGS ya.make
Files with this license:
src/lib/ares_options.c [3:4]
src/lib/ares_update_servers.c [3:5]
- src/lib/util/ares__timeval.c [3:3]
+ src/lib/util/ares_timeval.c [3:3]
KEEP COPYRIGHT_SERVICE_LABEL 960dbf90fade4be8db2ae541b9662785
BELONGS ya.make
@@ -326,7 +334,7 @@ BELONGS ya.make
include/ares.h [3:4]
include/ares_nameser.h [3:4]
include/ares_version.h [3:3]
- src/lib/ares__addrinfo_localhost.c [3:4]
+ src/lib/ares_addrinfo_localhost.c [3:4]
src/lib/windows_port.c [3:4]
KEEP COPYRIGHT_SERVICE_LABEL a9fd87d904be8e622d0a1f64972520b3
@@ -364,7 +372,7 @@ BELONGS ya.make
Score : 100.00
Match type : COPYRIGHT
Files with this license:
- src/lib/ares__addrinfo2hostent.c [3:6]
+ src/lib/ares_addrinfo2hostent.c [3:6]
KEEP COPYRIGHT_SERVICE_LABEL b631dfa8a965ca744a170d01122adde3
BELONGS ya.make
@@ -378,11 +386,11 @@ BELONGS ya.make
Score : 100.00
Match type : COPYRIGHT
Files with this license:
- src/lib/ares__addrinfo2hostent.c [3:6]
- src/lib/ares__parse_into_addrinfo.c [3:4]
- src/lib/ares__sortaddrinfo.c [7:10]
+ src/lib/ares_addrinfo2hostent.c [3:6]
src/lib/ares_freeaddrinfo.c [3:4]
src/lib/ares_getaddrinfo.c [3:5]
+ src/lib/ares_parse_into_addrinfo.c [3:4]
+ src/lib/ares_sortaddrinfo.c [7:10]
src/lib/legacy/ares_parse_a_reply.c [3:4]
src/lib/legacy/ares_parse_aaaa_reply.c [3:5]
@@ -418,12 +426,15 @@ BELONGS ya.make
Score : 100.00
Match type : COPYRIGHT
Files with this license:
+ src/lib/ares_conn.h [3:3]
src/lib/ares_cookie.c [3:3]
src/lib/ares_metrics.c [3:3]
- src/lib/dsa/ares__array.c [3:3]
- src/lib/dsa/ares__array.h [3:3]
- src/lib/dsa/ares__htable_vpvp.c [3:3]
- src/lib/dsa/ares__htable_vpvp.h [3:3]
+ src/lib/ares_set_socket_functions.c [3:3]
+ src/lib/ares_socket.h [3:3]
+ src/lib/dsa/ares_array.c [3:3]
+ src/lib/dsa/ares_htable_dict.c [3:3]
+ src/lib/dsa/ares_htable_vpstr.c [3:3]
+ src/lib/dsa/ares_htable_vpvp.c [3:3]
src/lib/event/ares_event_configchg.c [3:3]
src/lib/event/ares_event_epoll.c [3:3]
src/lib/event/ares_event_kqueue.c [3:3]
@@ -433,8 +444,16 @@ BELONGS ya.make
src/lib/event/ares_event_wake_pipe.c [3:3]
src/lib/event/ares_event_win32.c [3:3]
src/lib/event/ares_event_win32.h [3:3]
+ src/lib/include/ares_array.h [3:3]
+ src/lib/include/ares_htable_dict.h [3:3]
+ src/lib/include/ares_htable_vpstr.h [3:3]
+ src/lib/include/ares_htable_vpvp.h [3:3]
src/lib/record/ares_dns_multistring.c [3:3]
src/lib/record/ares_dns_multistring.h [3:3]
+ src/lib/util/ares_math.h [3:3]
+ src/lib/util/ares_rand.h [3:3]
+ src/lib/util/ares_time.h [3:3]
+ src/lib/util/ares_uri.h [3:3]
KEEP COPYRIGHT_SERVICE_LABEL ce0977756b380247a8bc4bd331fcaee5
BELONGS ya.make
@@ -448,7 +467,7 @@ BELONGS ya.make
Score : 100.00
Match type : COPYRIGHT
Files with this license:
- src/lib/ares__addrinfo2hostent.c [3:6]
+ src/lib/ares_addrinfo2hostent.c [3:6]
src/lib/ares_ipv6.h [3:3]
src/lib/legacy/ares_parse_aaaa_reply.c [3:5]
@@ -464,8 +483,6 @@ BELONGS ya.make
src/lib/ares_cancel.c [3:3]
src/lib/ares_destroy.c [3:4]
src/lib/ares_library_init.c [3:4]
- src/lib/ares_platform.c [3:4]
- src/lib/ares_platform.h [3:4]
src/lib/ares_setup.h [3:3]
src/lib/config-win32.h [3:3]
@@ -518,11 +535,11 @@ BELONGS ya.make
include/ares_build-ios.h [4:5]
include/ares_build-linux.h [4:5]
include/ares_dns.h [3:4]
- src/lib/ares__close_sockets.c [3:4]
- src/lib/ares__socket.c [3:4]
+ src/lib/ares_close_sockets.c [3:4]
src/lib/ares_config-android.h [1:2]
src/lib/ares_config-linux.h [1:2]
src/lib/ares_config-osx.h [1:2]
+ src/lib/ares_conn.c [3:4]
src/lib/ares_free_hostent.c [3:4]
src/lib/ares_free_string.c [3:4]
src/lib/ares_getenv.c [3:4]
@@ -532,16 +549,16 @@ BELONGS ya.make
src/lib/ares_query.c [3:4]
src/lib/ares_search.c [3:4]
src/lib/ares_send.c [3:4]
+ src/lib/ares_socket.c [3:4]
src/lib/ares_strerror.c [3:4]
src/lib/ares_timeout.c [3:4]
src/lib/ares_version.c [3:4]
+ src/lib/include/ares_mem.h [3:3]
+ src/lib/include/ares_str.h [3:4]
src/lib/legacy/ares_expand_name.c [3:4]
src/lib/legacy/ares_expand_string.c [3:4]
src/lib/legacy/ares_fds.c [3:4]
src/lib/str/ares_str.c [3:4]
- src/lib/str/ares_str.h [3:4]
- src/lib/str/ares_strcasecmp.c [3:4]
- src/lib/str/ares_strcasecmp.h [3:4]
KEEP COPYRIGHT_SERVICE_LABEL fad8fe46bbe1d4c48e0cc175486c8a47
BELONGS ya.make
diff --git a/contrib/libs/c-ares/.yandex_meta/devtools.licenses.report b/contrib/libs/c-ares/.yandex_meta/devtools.licenses.report
index a484ec0e21..296579c1b5 100644
--- a/contrib/libs/c-ares/.yandex_meta/devtools.licenses.report
+++ b/contrib/libs/c-ares/.yandex_meta/devtools.licenses.report
@@ -44,15 +44,14 @@ BELONGS ya.make
include/ares_dns_record.h [1:1]
include/ares_nameser.h [1:1]
include/ares_version.h [1:1]
- src/lib/ares__addrinfo2hostent.c [1:1]
- src/lib/ares__addrinfo_localhost.c [1:1]
- src/lib/ares__close_sockets.c [1:1]
- src/lib/ares__hosts_file.c [1:1]
- src/lib/ares__parse_into_addrinfo.c [1:1]
- src/lib/ares__socket.c [1:1]
+ src/lib/ares_addrinfo2hostent.c [1:1]
+ src/lib/ares_addrinfo_localhost.c [1:1]
src/lib/ares_android.c [1:1]
src/lib/ares_android.h [1:1]
src/lib/ares_cancel.c [1:1]
+ src/lib/ares_close_sockets.c [1:1]
+ src/lib/ares_conn.c [1:1]
+ src/lib/ares_conn.h [1:1]
src/lib/ares_cookie.c [1:1]
src/lib/ares_data.c [1:1]
src/lib/ares_data.h [1:1]
@@ -66,21 +65,24 @@ BELONGS ya.make
src/lib/ares_gethostbyaddr.c [1:1]
src/lib/ares_gethostbyname.c [1:1]
src/lib/ares_getnameinfo.c [1:1]
+ src/lib/ares_hosts_file.c [1:1]
src/lib/ares_inet_net_pton.h [1:1]
src/lib/ares_init.c [1:1]
src/lib/ares_ipv6.h [1:1]
src/lib/ares_library_init.c [1:1]
src/lib/ares_metrics.c [1:1]
src/lib/ares_options.c [1:1]
- src/lib/ares_platform.c [1:1]
- src/lib/ares_platform.h [1:1]
+ src/lib/ares_parse_into_addrinfo.c [1:1]
src/lib/ares_private.h [1:1]
src/lib/ares_process.c [1:1]
src/lib/ares_qcache.c [1:1]
src/lib/ares_query.c [1:1]
src/lib/ares_search.c [1:1]
src/lib/ares_send.c [1:1]
+ src/lib/ares_set_socket_functions.c [1:1]
src/lib/ares_setup.h [1:1]
+ src/lib/ares_socket.c [1:1]
+ src/lib/ares_socket.h [1:1]
src/lib/ares_strerror.c [1:1]
src/lib/ares_sysconfig.c [1:1]
src/lib/ares_sysconfig_files.c [1:1]
@@ -90,22 +92,18 @@ BELONGS ya.make
src/lib/ares_update_servers.c [1:1]
src/lib/ares_version.c [1:1]
src/lib/config-win32.h [1:1]
- src/lib/dsa/ares__array.c [1:1]
- src/lib/dsa/ares__array.h [1:1]
- src/lib/dsa/ares__htable.c [1:1]
- src/lib/dsa/ares__htable.h [1:1]
- src/lib/dsa/ares__htable_asvp.c [1:1]
- src/lib/dsa/ares__htable_asvp.h [1:1]
- src/lib/dsa/ares__htable_strvp.c [1:1]
- src/lib/dsa/ares__htable_strvp.h [1:1]
- src/lib/dsa/ares__htable_szvp.c [1:1]
- src/lib/dsa/ares__htable_szvp.h [1:1]
- src/lib/dsa/ares__htable_vpvp.c [1:1]
- src/lib/dsa/ares__htable_vpvp.h [1:1]
- src/lib/dsa/ares__llist.c [1:1]
- src/lib/dsa/ares__llist.h [1:1]
- src/lib/dsa/ares__slist.c [1:1]
- src/lib/dsa/ares__slist.h [1:1]
+ src/lib/dsa/ares_array.c [1:1]
+ src/lib/dsa/ares_htable.c [1:1]
+ src/lib/dsa/ares_htable.h [1:1]
+ src/lib/dsa/ares_htable_asvp.c [1:1]
+ src/lib/dsa/ares_htable_dict.c [1:1]
+ src/lib/dsa/ares_htable_strvp.c [1:1]
+ src/lib/dsa/ares_htable_szvp.c [1:1]
+ src/lib/dsa/ares_htable_vpstr.c [1:1]
+ src/lib/dsa/ares_htable_vpvp.c [1:1]
+ src/lib/dsa/ares_llist.c [1:1]
+ src/lib/dsa/ares_slist.c [1:1]
+ src/lib/dsa/ares_slist.h [1:1]
src/lib/event/ares_event.h [1:1]
src/lib/event/ares_event_configchg.c [1:1]
src/lib/event/ares_event_epoll.c [1:1]
@@ -116,6 +114,17 @@ BELONGS ya.make
src/lib/event/ares_event_wake_pipe.c [1:1]
src/lib/event/ares_event_win32.c [1:1]
src/lib/event/ares_event_win32.h [1:1]
+ src/lib/include/ares_array.h [1:1]
+ src/lib/include/ares_buf.h [1:1]
+ src/lib/include/ares_htable_asvp.h [1:1]
+ src/lib/include/ares_htable_dict.h [1:1]
+ src/lib/include/ares_htable_strvp.h [1:1]
+ src/lib/include/ares_htable_szvp.h [1:1]
+ src/lib/include/ares_htable_vpstr.h [1:1]
+ src/lib/include/ares_htable_vpvp.h [1:1]
+ src/lib/include/ares_llist.h [1:1]
+ src/lib/include/ares_mem.h [1:1]
+ src/lib/include/ares_str.h [1:1]
src/lib/legacy/ares_create_query.c [1:1]
src/lib/legacy/ares_expand_name.c [1:1]
src/lib/legacy/ares_expand_string.c [1:1]
@@ -140,21 +149,22 @@ BELONGS ya.make
src/lib/record/ares_dns_private.h [1:1]
src/lib/record/ares_dns_record.c [1:1]
src/lib/record/ares_dns_write.c [1:1]
- src/lib/str/ares__buf.c [1:1]
- src/lib/str/ares__buf.h [1:1]
+ src/lib/str/ares_buf.c [1:1]
src/lib/str/ares_str.c [1:1]
- src/lib/str/ares_str.h [1:1]
- src/lib/str/ares_strcasecmp.c [1:1]
- src/lib/str/ares_strcasecmp.h [1:1]
src/lib/str/ares_strsplit.c [1:1]
src/lib/str/ares_strsplit.h [1:1]
- src/lib/util/ares__iface_ips.c [1:1]
- src/lib/util/ares__iface_ips.h [1:1]
- src/lib/util/ares__threads.c [1:1]
- src/lib/util/ares__threads.h [1:1]
- src/lib/util/ares__timeval.c [1:1]
+ src/lib/util/ares_iface_ips.c [1:1]
+ src/lib/util/ares_iface_ips.h [1:1]
src/lib/util/ares_math.c [1:1]
+ src/lib/util/ares_math.h [1:1]
src/lib/util/ares_rand.c [1:1]
+ src/lib/util/ares_rand.h [1:1]
+ src/lib/util/ares_threads.c [1:1]
+ src/lib/util/ares_threads.h [1:1]
+ src/lib/util/ares_time.h [1:1]
+ src/lib/util/ares_timeval.c [1:1]
+ src/lib/util/ares_uri.c [1:1]
+ src/lib/util/ares_uri.h [1:1]
KEEP APSL-2.0 1d515ca9f03c1c884ee87fdbbafed30b
BELONGS ya.make
@@ -196,18 +206,17 @@ BELONGS ya.make
include/ares_dns_record.h [24:24]
include/ares_nameser.h [25:25]
include/ares_version.h [24:24]
- src/lib/ares__addrinfo2hostent.c [27:27]
- src/lib/ares__addrinfo_localhost.c [25:25]
- src/lib/ares__close_sockets.c [25:25]
- src/lib/ares__hosts_file.c [24:24]
- src/lib/ares__parse_into_addrinfo.c [25:25]
- src/lib/ares__socket.c [25:25]
+ src/lib/ares_addrinfo2hostent.c [27:27]
+ src/lib/ares_addrinfo_localhost.c [25:25]
src/lib/ares_android.c [24:24]
src/lib/ares_android.h [24:24]
src/lib/ares_cancel.c [24:24]
+ src/lib/ares_close_sockets.c [25:25]
src/lib/ares_config-android.h [2:2]
src/lib/ares_config-linux.h [2:2]
src/lib/ares_config-osx.h [2:2]
+ src/lib/ares_conn.c [25:25]
+ src/lib/ares_conn.h [24:24]
src/lib/ares_cookie.c [24:24]
src/lib/ares_data.c [24:24]
src/lib/ares_data.h [24:24]
@@ -221,21 +230,24 @@ BELONGS ya.make
src/lib/ares_gethostbyaddr.c [25:25]
src/lib/ares_gethostbyname.c [25:25]
src/lib/ares_getnameinfo.c [24:24]
+ src/lib/ares_hosts_file.c [24:24]
src/lib/ares_inet_net_pton.h [24:24]
src/lib/ares_init.c [25:25]
src/lib/ares_ipv6.h [24:24]
src/lib/ares_library_init.c [25:25]
src/lib/ares_metrics.c [24:24]
src/lib/ares_options.c [25:25]
- src/lib/ares_platform.c [25:25]
- src/lib/ares_platform.h [25:25]
+ src/lib/ares_parse_into_addrinfo.c [25:25]
src/lib/ares_private.h [25:25]
src/lib/ares_process.c [25:25]
src/lib/ares_qcache.c [24:24]
src/lib/ares_query.c [25:25]
src/lib/ares_search.c [25:25]
src/lib/ares_send.c [25:25]
+ src/lib/ares_set_socket_functions.c [24:24]
src/lib/ares_setup.h [24:24]
+ src/lib/ares_socket.c [25:25]
+ src/lib/ares_socket.h [24:24]
src/lib/ares_strerror.c [25:25]
src/lib/ares_sysconfig.c [25:25]
src/lib/ares_sysconfig_files.c [25:25]
@@ -245,22 +257,18 @@ BELONGS ya.make
src/lib/ares_update_servers.c [26:26]
src/lib/ares_version.c [25:25]
src/lib/config-win32.h [24:24]
- src/lib/dsa/ares__array.c [24:24]
- src/lib/dsa/ares__array.h [24:24]
- src/lib/dsa/ares__htable.c [24:24]
- src/lib/dsa/ares__htable.h [24:24]
- src/lib/dsa/ares__htable_asvp.c [24:24]
- src/lib/dsa/ares__htable_asvp.h [24:24]
- src/lib/dsa/ares__htable_strvp.c [24:24]
- src/lib/dsa/ares__htable_strvp.h [24:24]
- src/lib/dsa/ares__htable_szvp.c [24:24]
- src/lib/dsa/ares__htable_szvp.h [24:24]
- src/lib/dsa/ares__htable_vpvp.c [24:24]
- src/lib/dsa/ares__htable_vpvp.h [24:24]
- src/lib/dsa/ares__llist.c [24:24]
- src/lib/dsa/ares__llist.h [24:24]
- src/lib/dsa/ares__slist.c [24:24]
- src/lib/dsa/ares__slist.h [24:24]
+ src/lib/dsa/ares_array.c [24:24]
+ src/lib/dsa/ares_htable.c [24:24]
+ src/lib/dsa/ares_htable.h [24:24]
+ src/lib/dsa/ares_htable_asvp.c [24:24]
+ src/lib/dsa/ares_htable_dict.c [24:24]
+ src/lib/dsa/ares_htable_strvp.c [24:24]
+ src/lib/dsa/ares_htable_szvp.c [24:24]
+ src/lib/dsa/ares_htable_vpstr.c [24:24]
+ src/lib/dsa/ares_htable_vpvp.c [24:24]
+ src/lib/dsa/ares_llist.c [24:24]
+ src/lib/dsa/ares_slist.c [24:24]
+ src/lib/dsa/ares_slist.h [24:24]
src/lib/event/ares_event.h [24:24]
src/lib/event/ares_event_configchg.c [24:24]
src/lib/event/ares_event_epoll.c [24:24]
@@ -271,6 +279,17 @@ BELONGS ya.make
src/lib/event/ares_event_wake_pipe.c [24:24]
src/lib/event/ares_event_win32.c [24:24]
src/lib/event/ares_event_win32.h [24:24]
+ src/lib/include/ares_array.h [24:24]
+ src/lib/include/ares_buf.h [24:24]
+ src/lib/include/ares_htable_asvp.h [24:24]
+ src/lib/include/ares_htable_dict.h [24:24]
+ src/lib/include/ares_htable_strvp.h [24:24]
+ src/lib/include/ares_htable_szvp.h [24:24]
+ src/lib/include/ares_htable_vpstr.h [24:24]
+ src/lib/include/ares_htable_vpvp.h [24:24]
+ src/lib/include/ares_llist.h [24:24]
+ src/lib/include/ares_mem.h [24:24]
+ src/lib/include/ares_str.h [25:25]
src/lib/inet_net_pton.c [18:18]
src/lib/inet_ntop.c [17:17]
src/lib/legacy/ares_create_query.c [24:24]
@@ -297,21 +316,22 @@ BELONGS ya.make
src/lib/record/ares_dns_private.h [24:24]
src/lib/record/ares_dns_record.c [24:24]
src/lib/record/ares_dns_write.c [24:24]
- src/lib/str/ares__buf.c [24:24]
- src/lib/str/ares__buf.h [24:24]
+ src/lib/str/ares_buf.c [24:24]
src/lib/str/ares_str.c [25:25]
- src/lib/str/ares_str.h [25:25]
- src/lib/str/ares_strcasecmp.c [25:25]
- src/lib/str/ares_strcasecmp.h [25:25]
src/lib/str/ares_strsplit.c [24:24]
src/lib/str/ares_strsplit.h [24:24]
- src/lib/util/ares__iface_ips.c [24:24]
- src/lib/util/ares__iface_ips.h [24:24]
- src/lib/util/ares__threads.c [24:24]
- src/lib/util/ares__threads.h [24:24]
- src/lib/util/ares__timeval.c [24:24]
+ src/lib/util/ares_iface_ips.c [24:24]
+ src/lib/util/ares_iface_ips.h [24:24]
src/lib/util/ares_math.c [24:24]
+ src/lib/util/ares_math.h [24:24]
src/lib/util/ares_rand.c [24:24]
+ src/lib/util/ares_rand.h [24:24]
+ src/lib/util/ares_threads.c [24:24]
+ src/lib/util/ares_threads.h [24:24]
+ src/lib/util/ares_time.h [24:24]
+ src/lib/util/ares_timeval.c [24:24]
+ src/lib/util/ares_uri.c [24:24]
+ src/lib/util/ares_uri.h [24:24]
src/lib/windows_port.c [6:6]
KEEP MIT 399584035c417b91040964779555dfac
@@ -347,7 +367,7 @@ BELONGS ya.make
Match type : REFERENCE
Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
Files with this license:
- src/lib/ares__sortaddrinfo.c [3:3]
+ src/lib/ares_sortaddrinfo.c [3:3]
KEEP MIT 9f87b7b185f90608bae6d2b5c377f145
BELONGS ya.make
@@ -370,7 +390,7 @@ BELONGS ya.make
Match type : TEXT
Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
Files with this license:
- src/lib/ares__sortaddrinfo.c [12:34]
+ src/lib/ares_sortaddrinfo.c [12:34]
KEEP ISC a33bf68b7a1c6d0ca7948114d5f40d02
BELONGS ya.make
@@ -393,11 +413,11 @@ BELONGS ya.make
Match type : TAG
Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
Files with this license:
- src/lib/ares__sortaddrinfo.c [36:36]
+ src/lib/ares_sortaddrinfo.c [36:36]
KEEP MIT c2fd01dec4e4c4c415b4e2bd90cd2e6b
BELONGS ya.make
-FILE_INCLUDE AUTHORS found in files: include/ares.h at line 20, include/ares_dns.h at line 20, include/ares_dns_record.h at line 19, include/ares_nameser.h at line 20, include/ares_version.h at line 19, src/lib/ares__addrinfo2hostent.c at line 22, src/lib/ares__addrinfo_localhost.c at line 20, src/lib/ares__close_sockets.c at line 20, src/lib/ares__hosts_file.c at line 19, src/lib/ares__parse_into_addrinfo.c at line 20, src/lib/ares__socket.c at line 20, src/lib/ares_android.c at line 19, src/lib/ares_android.h at line 19, src/lib/ares_cancel.c at line 19, src/lib/ares_cookie.c at line 19, src/lib/ares_data.c at line 19, src/lib/ares_data.h at line 19, src/lib/ares_destroy.c at line 20, src/lib/ares_free_hostent.c at line 20, src/lib/ares_free_string.c at line 20, src/lib/ares_freeaddrinfo.c at line 20, src/lib/ares_getaddrinfo.c at line 21, src/lib/ares_getenv.c at line 20, src/lib/ares_getenv.h at line 20, src/lib/ares_gethostbyaddr.c at line 20, src/lib/ares_gethostbyname.c at line 20, src/lib/ares_getnameinfo.c at line 19, src/lib/ares_inet_net_pton.h at line 19, src/lib/ares_init.c at line 20, src/lib/ares_ipv6.h at line 19, src/lib/ares_library_init.c at line 20, src/lib/ares_metrics.c at line 19, src/lib/ares_options.c at line 20, src/lib/ares_platform.c at line 20, src/lib/ares_platform.h at line 20, src/lib/ares_private.h at line 20, src/lib/ares_process.c at line 20, src/lib/ares_qcache.c at line 19, src/lib/ares_query.c at line 20, src/lib/ares_search.c at line 20, src/lib/ares_send.c at line 20, src/lib/ares_setup.h at line 19, src/lib/ares_strerror.c at line 20, src/lib/ares_sysconfig.c at line 20, src/lib/ares_sysconfig_files.c at line 20, src/lib/ares_sysconfig_mac.c at line 19, src/lib/ares_sysconfig_win.c at line 20, src/lib/ares_timeout.c at line 20, src/lib/ares_update_servers.c at line 21, src/lib/ares_version.c at line 20, src/lib/config-win32.h at line 19, src/lib/dsa/ares__array.c at line 19, src/lib/dsa/ares__array.h at line 19, src/lib/dsa/ares__htable.c at line 19, src/lib/dsa/ares__htable.h at line 19, src/lib/dsa/ares__htable_asvp.c at line 19, src/lib/dsa/ares__htable_asvp.h at line 19, src/lib/dsa/ares__htable_strvp.c at line 19, src/lib/dsa/ares__htable_strvp.h at line 19, src/lib/dsa/ares__htable_szvp.c at line 19, src/lib/dsa/ares__htable_szvp.h at line 19, src/lib/dsa/ares__htable_vpvp.c at line 19, src/lib/dsa/ares__htable_vpvp.h at line 19, src/lib/dsa/ares__llist.c at line 19, src/lib/dsa/ares__llist.h at line 19, src/lib/dsa/ares__slist.c at line 19, src/lib/dsa/ares__slist.h at line 19, src/lib/event/ares_event.h at line 19, src/lib/event/ares_event_configchg.c at line 19, src/lib/event/ares_event_epoll.c at line 19, src/lib/event/ares_event_kqueue.c at line 19, src/lib/event/ares_event_poll.c at line 19, src/lib/event/ares_event_select.c at line 19, src/lib/event/ares_event_thread.c at line 19, src/lib/event/ares_event_wake_pipe.c at line 19, src/lib/event/ares_event_win32.c at line 19, src/lib/event/ares_event_win32.h at line 19, src/lib/legacy/ares_create_query.c at line 19, src/lib/legacy/ares_expand_name.c at line 20, src/lib/legacy/ares_expand_string.c at line 20, src/lib/legacy/ares_fds.c at line 20, src/lib/legacy/ares_getsock.c at line 19, src/lib/legacy/ares_parse_a_reply.c at line 20, src/lib/legacy/ares_parse_aaaa_reply.c at line 21, src/lib/legacy/ares_parse_caa_reply.c at line 19, src/lib/legacy/ares_parse_mx_reply.c at line 19, src/lib/legacy/ares_parse_naptr_reply.c at line 19, src/lib/legacy/ares_parse_ns_reply.c at line 19, src/lib/legacy/ares_parse_ptr_reply.c at line 19, src/lib/legacy/ares_parse_soa_reply.c at line 19, src/lib/legacy/ares_parse_srv_reply.c at line 19, src/lib/legacy/ares_parse_txt_reply.c at line 19, src/lib/legacy/ares_parse_uri_reply.c at line 19, src/lib/record/ares_dns_mapping.c at line 19, src/lib/record/ares_dns_multistring.c at line 19, src/lib/record/ares_dns_multistring.h at line 19, src/lib/record/ares_dns_name.c at line 19, src/lib/record/ares_dns_parse.c at line 19, src/lib/record/ares_dns_private.h at line 19, src/lib/record/ares_dns_record.c at line 19, src/lib/record/ares_dns_write.c at line 19, src/lib/str/ares__buf.c at line 19, src/lib/str/ares__buf.h at line 19, src/lib/str/ares_str.c at line 20, src/lib/str/ares_str.h at line 20, src/lib/str/ares_strcasecmp.c at line 20, src/lib/str/ares_strcasecmp.h at line 20, src/lib/str/ares_strsplit.c at line 19, src/lib/str/ares_strsplit.h at line 19, src/lib/util/ares__iface_ips.c at line 19, src/lib/util/ares__iface_ips.h at line 19, src/lib/util/ares__threads.c at line 19, src/lib/util/ares__threads.h at line 19, src/lib/util/ares__timeval.c at line 19, src/lib/util/ares_math.c at line 19, src/lib/util/ares_rand.c at line 19
+FILE_INCLUDE AUTHORS found in files: include/ares.h at line 20, include/ares_dns.h at line 20, include/ares_dns_record.h at line 19, include/ares_nameser.h at line 20, include/ares_version.h at line 19, src/lib/ares_addrinfo2hostent.c at line 22, src/lib/ares_addrinfo_localhost.c at line 20, src/lib/ares_android.c at line 19, src/lib/ares_android.h at line 19, src/lib/ares_cancel.c at line 19, src/lib/ares_close_sockets.c at line 20, src/lib/ares_conn.c at line 20, src/lib/ares_conn.h at line 19, src/lib/ares_cookie.c at line 19, src/lib/ares_data.c at line 19, src/lib/ares_data.h at line 19, src/lib/ares_destroy.c at line 20, src/lib/ares_free_hostent.c at line 20, src/lib/ares_free_string.c at line 20, src/lib/ares_freeaddrinfo.c at line 20, src/lib/ares_getaddrinfo.c at line 21, src/lib/ares_getenv.c at line 20, src/lib/ares_getenv.h at line 20, src/lib/ares_gethostbyaddr.c at line 20, src/lib/ares_gethostbyname.c at line 20, src/lib/ares_getnameinfo.c at line 19, src/lib/ares_hosts_file.c at line 19, src/lib/ares_inet_net_pton.h at line 19, src/lib/ares_init.c at line 20, src/lib/ares_ipv6.h at line 19, src/lib/ares_library_init.c at line 20, src/lib/ares_metrics.c at line 19, src/lib/ares_options.c at line 20, src/lib/ares_parse_into_addrinfo.c at line 20, src/lib/ares_private.h at line 20, src/lib/ares_process.c at line 20, src/lib/ares_qcache.c at line 19, src/lib/ares_query.c at line 20, src/lib/ares_search.c at line 20, src/lib/ares_send.c at line 20, src/lib/ares_set_socket_functions.c at line 19, src/lib/ares_setup.h at line 19, src/lib/ares_socket.c at line 20, src/lib/ares_socket.h at line 19, src/lib/ares_strerror.c at line 20, src/lib/ares_sysconfig.c at line 20, src/lib/ares_sysconfig_files.c at line 20, src/lib/ares_sysconfig_mac.c at line 19, src/lib/ares_sysconfig_win.c at line 20, src/lib/ares_timeout.c at line 20, src/lib/ares_update_servers.c at line 21, src/lib/ares_version.c at line 20, src/lib/config-win32.h at line 19, src/lib/dsa/ares_array.c at line 19, src/lib/dsa/ares_htable.c at line 19, src/lib/dsa/ares_htable.h at line 19, src/lib/dsa/ares_htable_asvp.c at line 19, src/lib/dsa/ares_htable_dict.c at line 19, src/lib/dsa/ares_htable_strvp.c at line 19, src/lib/dsa/ares_htable_szvp.c at line 19, src/lib/dsa/ares_htable_vpstr.c at line 19, src/lib/dsa/ares_htable_vpvp.c at line 19, src/lib/dsa/ares_llist.c at line 19, src/lib/dsa/ares_slist.c at line 19, src/lib/dsa/ares_slist.h at line 19, src/lib/event/ares_event.h at line 19, src/lib/event/ares_event_configchg.c at line 19, src/lib/event/ares_event_epoll.c at line 19, src/lib/event/ares_event_kqueue.c at line 19, src/lib/event/ares_event_poll.c at line 19, src/lib/event/ares_event_select.c at line 19, src/lib/event/ares_event_thread.c at line 19, src/lib/event/ares_event_wake_pipe.c at line 19, src/lib/event/ares_event_win32.c at line 19, src/lib/event/ares_event_win32.h at line 19, src/lib/include/ares_array.h at line 19, src/lib/include/ares_buf.h at line 19, src/lib/include/ares_htable_asvp.h at line 19, src/lib/include/ares_htable_dict.h at line 19, src/lib/include/ares_htable_strvp.h at line 19, src/lib/include/ares_htable_szvp.h at line 19, src/lib/include/ares_htable_vpstr.h at line 19, src/lib/include/ares_htable_vpvp.h at line 19, src/lib/include/ares_llist.h at line 19, src/lib/include/ares_mem.h at line 19, src/lib/include/ares_str.h at line 20, src/lib/legacy/ares_create_query.c at line 19, src/lib/legacy/ares_expand_name.c at line 20, src/lib/legacy/ares_expand_string.c at line 20, src/lib/legacy/ares_fds.c at line 20, src/lib/legacy/ares_getsock.c at line 19, src/lib/legacy/ares_parse_a_reply.c at line 20, src/lib/legacy/ares_parse_aaaa_reply.c at line 21, src/lib/legacy/ares_parse_caa_reply.c at line 19, src/lib/legacy/ares_parse_mx_reply.c at line 19, src/lib/legacy/ares_parse_naptr_reply.c at line 19, src/lib/legacy/ares_parse_ns_reply.c at line 19, src/lib/legacy/ares_parse_ptr_reply.c at line 19, src/lib/legacy/ares_parse_soa_reply.c at line 19, src/lib/legacy/ares_parse_srv_reply.c at line 19, src/lib/legacy/ares_parse_txt_reply.c at line 19, src/lib/legacy/ares_parse_uri_reply.c at line 19, src/lib/record/ares_dns_mapping.c at line 19, src/lib/record/ares_dns_multistring.c at line 19, src/lib/record/ares_dns_multistring.h at line 19, src/lib/record/ares_dns_name.c at line 19, src/lib/record/ares_dns_parse.c at line 19, src/lib/record/ares_dns_private.h at line 19, src/lib/record/ares_dns_record.c at line 19, src/lib/record/ares_dns_write.c at line 19, src/lib/str/ares_buf.c at line 19, src/lib/str/ares_str.c at line 20, src/lib/str/ares_strsplit.c at line 19, src/lib/str/ares_strsplit.h at line 19, src/lib/util/ares_iface_ips.c at line 19, src/lib/util/ares_iface_ips.h at line 19, src/lib/util/ares_math.c at line 19, src/lib/util/ares_math.h at line 19, src/lib/util/ares_rand.c at line 19, src/lib/util/ares_rand.h at line 19, src/lib/util/ares_threads.c at line 19, src/lib/util/ares_threads.h at line 19, src/lib/util/ares_time.h at line 19, src/lib/util/ares_timeval.c at line 19, src/lib/util/ares_uri.c at line 19, src/lib/util/ares_uri.h at line 19
Note: matched license text is too long. Read it in the source files.
Scancode info:
Original SPDX id: MIT
@@ -410,15 +430,14 @@ FILE_INCLUDE AUTHORS found in files: include/ares.h at line 20, include/ares_dns
include/ares_dns_record.h [5:22]
include/ares_nameser.h [6:23]
include/ares_version.h [5:22]
- src/lib/ares__addrinfo2hostent.c [8:25]
- src/lib/ares__addrinfo_localhost.c [6:23]
- src/lib/ares__close_sockets.c [6:23]
- src/lib/ares__hosts_file.c [5:22]
- src/lib/ares__parse_into_addrinfo.c [6:23]
- src/lib/ares__socket.c [6:23]
+ src/lib/ares_addrinfo2hostent.c [8:25]
+ src/lib/ares_addrinfo_localhost.c [6:23]
src/lib/ares_android.c [5:22]
src/lib/ares_android.h [5:22]
src/lib/ares_cancel.c [5:22]
+ src/lib/ares_close_sockets.c [6:23]
+ src/lib/ares_conn.c [6:23]
+ src/lib/ares_conn.h [5:22]
src/lib/ares_cookie.c [5:22]
src/lib/ares_data.c [5:22]
src/lib/ares_data.h [5:22]
@@ -432,21 +451,24 @@ FILE_INCLUDE AUTHORS found in files: include/ares.h at line 20, include/ares_dns
src/lib/ares_gethostbyaddr.c [6:23]
src/lib/ares_gethostbyname.c [6:23]
src/lib/ares_getnameinfo.c [5:22]
+ src/lib/ares_hosts_file.c [5:22]
src/lib/ares_inet_net_pton.h [5:22]
src/lib/ares_init.c [6:23]
src/lib/ares_ipv6.h [5:22]
src/lib/ares_library_init.c [6:23]
src/lib/ares_metrics.c [5:22]
src/lib/ares_options.c [6:23]
- src/lib/ares_platform.c [6:23]
- src/lib/ares_platform.h [6:23]
+ src/lib/ares_parse_into_addrinfo.c [6:23]
src/lib/ares_private.h [6:23]
src/lib/ares_process.c [6:23]
src/lib/ares_qcache.c [5:22]
src/lib/ares_query.c [6:23]
src/lib/ares_search.c [6:23]
src/lib/ares_send.c [6:23]
+ src/lib/ares_set_socket_functions.c [5:22]
src/lib/ares_setup.h [5:22]
+ src/lib/ares_socket.c [6:23]
+ src/lib/ares_socket.h [5:22]
src/lib/ares_strerror.c [6:23]
src/lib/ares_sysconfig.c [6:23]
src/lib/ares_sysconfig_files.c [6:23]
@@ -456,22 +478,18 @@ FILE_INCLUDE AUTHORS found in files: include/ares.h at line 20, include/ares_dns
src/lib/ares_update_servers.c [7:24]
src/lib/ares_version.c [6:23]
src/lib/config-win32.h [5:22]
- src/lib/dsa/ares__array.c [5:22]
- src/lib/dsa/ares__array.h [5:22]
- src/lib/dsa/ares__htable.c [5:22]
- src/lib/dsa/ares__htable.h [5:22]
- src/lib/dsa/ares__htable_asvp.c [5:22]
- src/lib/dsa/ares__htable_asvp.h [5:22]
- src/lib/dsa/ares__htable_strvp.c [5:22]
- src/lib/dsa/ares__htable_strvp.h [5:22]
- src/lib/dsa/ares__htable_szvp.c [5:22]
- src/lib/dsa/ares__htable_szvp.h [5:22]
- src/lib/dsa/ares__htable_vpvp.c [5:22]
- src/lib/dsa/ares__htable_vpvp.h [5:22]
- src/lib/dsa/ares__llist.c [5:22]
- src/lib/dsa/ares__llist.h [5:22]
- src/lib/dsa/ares__slist.c [5:22]
- src/lib/dsa/ares__slist.h [5:22]
+ src/lib/dsa/ares_array.c [5:22]
+ src/lib/dsa/ares_htable.c [5:22]
+ src/lib/dsa/ares_htable.h [5:22]
+ src/lib/dsa/ares_htable_asvp.c [5:22]
+ src/lib/dsa/ares_htable_dict.c [5:22]
+ src/lib/dsa/ares_htable_strvp.c [5:22]
+ src/lib/dsa/ares_htable_szvp.c [5:22]
+ src/lib/dsa/ares_htable_vpstr.c [5:22]
+ src/lib/dsa/ares_htable_vpvp.c [5:22]
+ src/lib/dsa/ares_llist.c [5:22]
+ src/lib/dsa/ares_slist.c [5:22]
+ src/lib/dsa/ares_slist.h [5:22]
src/lib/event/ares_event.h [5:22]
src/lib/event/ares_event_configchg.c [5:22]
src/lib/event/ares_event_epoll.c [5:22]
@@ -482,6 +500,17 @@ FILE_INCLUDE AUTHORS found in files: include/ares.h at line 20, include/ares_dns
src/lib/event/ares_event_wake_pipe.c [5:22]
src/lib/event/ares_event_win32.c [5:22]
src/lib/event/ares_event_win32.h [5:22]
+ src/lib/include/ares_array.h [5:22]
+ src/lib/include/ares_buf.h [5:22]
+ src/lib/include/ares_htable_asvp.h [5:22]
+ src/lib/include/ares_htable_dict.h [5:22]
+ src/lib/include/ares_htable_strvp.h [5:22]
+ src/lib/include/ares_htable_szvp.h [5:22]
+ src/lib/include/ares_htable_vpstr.h [5:22]
+ src/lib/include/ares_htable_vpvp.h [5:22]
+ src/lib/include/ares_llist.h [5:22]
+ src/lib/include/ares_mem.h [5:22]
+ src/lib/include/ares_str.h [6:23]
src/lib/legacy/ares_create_query.c [5:22]
src/lib/legacy/ares_expand_name.c [6:23]
src/lib/legacy/ares_expand_string.c [6:23]
@@ -506,21 +535,22 @@ FILE_INCLUDE AUTHORS found in files: include/ares.h at line 20, include/ares_dns
src/lib/record/ares_dns_private.h [5:22]
src/lib/record/ares_dns_record.c [5:22]
src/lib/record/ares_dns_write.c [5:22]
- src/lib/str/ares__buf.c [5:22]
- src/lib/str/ares__buf.h [5:22]
+ src/lib/str/ares_buf.c [5:22]
src/lib/str/ares_str.c [6:23]
- src/lib/str/ares_str.h [6:23]
- src/lib/str/ares_strcasecmp.c [6:23]
- src/lib/str/ares_strcasecmp.h [6:23]
src/lib/str/ares_strsplit.c [5:22]
src/lib/str/ares_strsplit.h [5:22]
- src/lib/util/ares__iface_ips.c [5:22]
- src/lib/util/ares__iface_ips.h [5:22]
- src/lib/util/ares__threads.c [5:22]
- src/lib/util/ares__threads.h [5:22]
- src/lib/util/ares__timeval.c [5:22]
+ src/lib/util/ares_iface_ips.c [5:22]
+ src/lib/util/ares_iface_ips.h [5:22]
src/lib/util/ares_math.c [5:22]
+ src/lib/util/ares_math.h [5:22]
src/lib/util/ares_rand.c [5:22]
+ src/lib/util/ares_rand.h [5:22]
+ src/lib/util/ares_threads.c [5:22]
+ src/lib/util/ares_threads.h [5:22]
+ src/lib/util/ares_time.h [5:22]
+ src/lib/util/ares_timeval.c [5:22]
+ src/lib/util/ares_uri.c [5:22]
+ src/lib/util/ares_uri.h [5:22]
KEEP MIT e5e4ee9811f07656fe849a31959bb283
BELONGS ya.make
diff --git a/contrib/libs/c-ares/.yandex_meta/licenses.list.txt b/contrib/libs/c-ares/.yandex_meta/licenses.list.txt
index 949a0c5924..09977f8b21 100644
--- a/contrib/libs/c-ares/.yandex_meta/licenses.list.txt
+++ b/contrib/libs/c-ares/.yandex_meta/licenses.list.txt
@@ -146,6 +146,10 @@
====================COPYRIGHT====================
+ * Copyright (c) 2024 Brad house
+
+
+====================COPYRIGHT====================
* Copyright (c) 2024 The c-ares project and its contributors
diff --git a/contrib/libs/c-ares/.yandex_meta/override.nix b/contrib/libs/c-ares/.yandex_meta/override.nix
index a823408057..5b0c26de95 100644
--- a/contrib/libs/c-ares/.yandex_meta/override.nix
+++ b/contrib/libs/c-ares/.yandex_meta/override.nix
@@ -1,11 +1,11 @@
pkgs: attrs: with pkgs; with attrs; rec {
- version = "1.33.1";
+ version = "1.34.2";
src = fetchFromGitHub {
owner = "c-ares";
repo = "c-ares";
rev= "v${version}";
- hash = "sha256-aLHTvyAcCNY0mr96D68Ubf4RL0zmU7ARSdjQ59+2Pv0=";
+ hash = "sha256-KGNOc3l+bWifWFnBOLtL0ASJTuYayBOAE6g6gNsl5xk=";
};
patches = [];
diff --git a/contrib/libs/c-ares/FEATURES.md b/contrib/libs/c-ares/FEATURES.md
new file mode 100644
index 0000000000..5ec1975e35
--- /dev/null
+++ b/contrib/libs/c-ares/FEATURES.md
@@ -0,0 +1,260 @@
+# Features
+
+- [Dynamic Server Timeout Calculation](#dynamic-server-timeout-calculation)
+- [Failed Server Isolation](#failed-server-isolation)
+- [Query Cache](#query-cache)
+- [DNS 0x20 Query Name Case Randomization](#dns-0x20-query-name-case-randomization)
+- [DNS Cookies](#dns-cookies)
+- [TCP FastOpen (0-RTT)](#tcp-fastopen-0-rtt)
+- [Event Thread](#event-thread)
+- [System Configuration Change Monitoring](#system-configuration-change-monitoring)
+
+
+## Dynamic Server Timeout Calculation
+
+Metrics are stored for every server in time series buckets for both the current
+time span and prior time span in 1 minute, 15 minute, 1 hour, and 1 day
+intervals, plus a single since-inception bucket (of the server in the c-ares
+channel).
+
+These metrics are then used to calculate the average latency for queries on
+each server, which automatically adjusts to network conditions. This average
+is then multiplied by 5 to come up with a timeout to use for the query before
+re-queuing it. If there is not sufficient data yet to calculate a timeout
+(need at least 3 prior queries), then the default of 2000ms is used (or an
+administrator-set `ARES_OPT_TIMEOUTMS`).
+
+The timeout is then adjusted to a minimum bound of 250ms which is the
+approximate RTT of network traffic half-way around the world, to account for the
+upstream server needing to recurse to a DNS server far away. It is also
+bounded on the upper end to 5000ms (or an administrator-set
+`ARES_OPT_MAXTIMEOUTMS`).
+
+If a server does not reply within the given calculated timeout, the next time
+the query is re-queued to the same server, the timeout will approximately
+double thus leading to adjustments in timeouts automatically when a successful
+reply is recorded.
+
+In order to calculate the optimal timeout, it is highly recommended to ensure
+`ARES_OPT_QUERY_CACHE` is enabled with a non-zero `qcache_max_ttl` (which it
+is enabled by default with a 3600s default max ttl). The goal is to record
+the recursion time as part of query latency as the upstream server will also
+cache results.
+
+This feature requires the c-ares channel to persist for the lifetime of the
+application.
+
+
+## Failed Server Isolation
+
+Each server is tracked for failures relating to consecutive connectivity issues
+or unrecoverable response codes. Servers are sorted in priority order based
+on this metric. Downed servers will be brought back online either when the
+current highest priority server has failed, or has been determined to be online
+when a query is randomly selected to probe a downed server.
+
+By default a downed server won't be retried for 5 seconds, and queries will
+have a 10% chance of being chosen after this timeframe to test a downed server.
+When a downed server is selected to be probed, the query will be duplicated
+and sent to the downed server independent of the original query itself. This
+means that probing a downed server will always use an intended legitimate
+query, but not have a negative impact of a delayed response in case that server
+is still down.
+
+Administrators may customize these settings via `ARES_OPT_SERVER_FAILOVER`.
+
+Additionally, when using `ARES_OPT_ROTATE` or a system configuration option of
+`rotate`, c-ares will randomly select a server from the list of highest priority
+servers based on failures. Any servers in any lower priority bracket will be
+omitted from the random selection.
+
+This feature requires the c-ares channel to persist for the lifetime of the
+application.
+
+
+## Query Cache
+
+Every successful query response, as well as `NXDOMAIN` responses containing
+an `SOA` record are cached using the `TTL` returned or the SOA Minimum as
+appropriate. This timeout is bounded by the `ARES_OPT_QUERY_CACHE`
+`qcache_max_ttl`, which defaults to 1hr.
+
+The query is cached at the lowest possible layer, meaning a call into
+`ares_search_dnsrec()` or `ares_getaddrinfo()` may spawn multiple queries
+in order to complete its lookup, each individual backend query result will
+be cached.
+
+Any server list change will automatically invalidate the cache in order to
+purge any possible stale data. For example, if `NXDOMAIN` is cached but system
+configuration has changed due to a VPN connection, the same query might now
+result in a valid response.
+
+This feature is not expected to cause any issues that wouldn't already be
+present due to the upstream DNS server having substantially similar caching
+already. However if desired it can be disabled by setting `qcache_max_ttl` to
+`0`.
+
+This feature requires the c-ares channel to persist for the lifetime of the
+application.
+
+
+## DNS 0x20 Query Name Case Randomization
+
+DNS 0x20 is the name of the feature which automatically randomizes the case
+of the characters in a UDP query as defined in
+[draft-vixie-dnsext-dns0x20-00](https://datatracker.ietf.org/doc/html/draft-vixie-dnsext-dns0x20-00).
+
+For example, if name resolution is performed for `www.example.com`, the actual
+query sent to the upstream name server may be `Www.eXaMPlE.cOM`.
+
+The reason to randomize case characters is to provide additional entropy in the
+query to be able to detect off-path cache poisoning attacks for UDP. This is
+not used for TCP connections which are not known to be vulnerable to such
+attacks due to their stateful nature.
+
+Much research has been performed by
+[Google](https://groups.google.com/g/public-dns-discuss/c/KxIDPOydA5M)
+on case randomization and in general have found it to be effective and widely
+supported.
+
+This feature is disabled by default and can be enabled via `ARES_FLAG_DNS0x20`.
+There are some instances where servers do not properly facilitate this feature
+and unlike in a recursive resolver where it may be possible to determine an
+authoritative server is incapable, its much harder to come to any reliable
+conclusion as a stub resolver as to where in the path the issue resides. Due to
+the recent wide deployment of DNS 0x20 in large public DNS servers, it is
+expected compatibility will improve rapidly where this feature, in time, may be
+able to be enabled by default.
+
+Another feature which can be used to prevent off-path cache poisoning attacks
+is [DNS Cookies](#dns-cookies).
+
+
+## DNS Cookies
+
+DNS Cookies are are a method of learned mutual authentication between a server
+and a client as defined in
+[RFC7873](https://datatracker.ietf.org/doc/html/rfc7873)
+and [RFC9018](https://datatracker.ietf.org/doc/html/rfc9018).
+
+This mutual authentication ensures clients are protected from off-path cache
+poisoning attacks, and protects servers from being used as DNS amplification
+attack sources. Many servers will disable query throttling limits when DNS
+Cookies are in use. It only applies to UDP connections.
+
+Since DNS Cookies are optional and learned dynamically, this is an always-on
+feature and will automatically adjust based on the upstream server state. The
+only potential issue is if a server has once supported DNS Cookies then stops
+supporting them, it must clear a regression timeout of 2 minutes before it can
+accept responses without cookies. Such a scenario would be exceedingly rare.
+
+Interestingly, the large public recursive DNS servers such as provided by
+[Google](https://developers.google.com/speed/public-dns/docs/using),
+[CloudFlare](https://one.one.one.one/), and
+[OpenDNS](https://opendns.com) do not have this feature enabled. That said,
+most DNS products like [BIND](https://www.isc.org/bind/) enable DNS Cookies
+by default.
+
+This feature requires the c-ares channel to persist for the lifetime of the
+application.
+
+
+## TCP FastOpen (0-RTT)
+
+TCP Fast Open is defined in [RFC7413](https://datatracker.ietf.org/doc/html/rfc7413)
+and enables data to be sent with the TCP SYN packet when establishing the
+connection, thus rivaling the performance of UDP. A previous connection must
+have already have been established in order to obtain the client cookie to
+allow the server to trust the data sent in the first packet and know it was not
+an off-path attack.
+
+TCP FastOpen can only be used with idempotent requests since in timeout
+conditions the SYN packet with data may be re-sent which may cause the server
+to process the packet more than once. Luckily DNS requests are idempotent by
+nature.
+
+TCP FastOpen is supported on Linux, MacOS, and FreeBSD. Most other systems do
+not support this feature, or like on Windows require use of completion
+notifications to use it whereas c-ares relies on readiness notifications.
+
+Supported systems also need to be configured appropriately on both the client
+and server systems.
+
+### Linux TFO
+In linux a single sysctl value is used with flags to set the desired fastopen
+behavior.
+
+It is recommended to make any changes permanent by creating a file in
+`/etc/sysctl.d/` with the appropriate key and value. Legacy Linux systems
+might need to update `/etc/sysctl.conf` directly. After modifying the
+configuration, it can be loaded via `sysctl -p`.
+
+`net.ipv4.tcp_fastopen`:
+ - `1` = client only (typically default)
+ - `2` = server only
+ - `3` = client and server
+
+### MacOS TFO
+In MacOS, TCP FastOpen is enabled by default for clients and servers. You can
+verify via the `net.inet.tcp.fastopen` sysctl.
+
+If any change is needed, you should make it persistent as per this guidance:
+[Persistent Sysctl Settings](https://discussions.apple.com/thread/253840320?)
+
+`net.inet.tcp.fastopen`
+ - `1` = client only
+ - `2` = server only
+ - `3` = client and server (typically default)
+
+### FreeBSD TFO
+In FreeBSD, server mode TCP FastOpen is typically enabled by default but
+client mode is disabled. It is recommended to edit `/etc/sysctl.conf` and
+place in the values you wish to persist to enable or disable TCP Fast Open.
+Once the file is modified, it can be loaded via `sysctl -f /etc/sysctl.conf`.
+
+- `net.inet.tcp.fastopen.server_enable` (boolean) - enable/disable server
+- `net.inet.tcp.fastopen.client_enable` (boolean) - enable/disable client
+
+
+## Event Thread
+
+Historic c-ares integrations required integrators to have their own event loop
+which would be required to notify c-ares of read and write events for each
+socket. It was also required to notify c-ares at the appropriate timeout if
+no events had occurred. This could be difficult to do correctly and could
+lead to stalls or other issues.
+
+The Event Thread is currently supported on all systems except DOS which does
+not natively support threading (however it could in theory be possible to
+enable with something like [FSUpthreads](https://arcb.csc.ncsu.edu/~mueller/pthreads/)).
+
+c-ares is built by default with threading support enabled, however it may
+disabled at compile time. The event thread must also be specifically enabled
+via `ARES_OPT_EVENT_THREAD`.
+
+Using the Event Thread feature also facilitates some other features like
+[System Configuration Change Monitoring](#system-configuration-change-monitoring),
+and automatically enables the `ares_set_pending_write_cb()` feature to optimize
+multi-query writing.
+
+
+## System Configuration Change Monitoring
+
+The system configuration is automatically monitored for changes to the network
+and DNS settings. When a change is detected a thread is spawned to read the
+new configuration then apply it to the current c-ares configuration.
+
+This feature requires the [Event Thread](#event-thread) to be enabled via
+`ARES_OPT_EVENT_THREAD`. Otherwise it is up to the integrator to do their own
+configuration monitoring and call `ares_reinit()` to reload the system
+configuration.
+
+It is supported on Windows, MacOS, iOS and any system configuration that uses
+`/etc/resolv.conf` and similar files such as Linux and FreeBSD. Specifically
+excluded are DOS and Android due to missing mechanisms to support such a
+feature. On linux file monitoring will result in immediate change detection,
+however on other unix-like systems a polling mechanism is used that checks every
+30s for changes.
+
+This feature requires the c-ares channel to persist for the lifetime of the
+application.
diff --git a/contrib/libs/c-ares/FUZZING.md b/contrib/libs/c-ares/FUZZING.md
new file mode 100644
index 0000000000..1d6b354ec9
--- /dev/null
+++ b/contrib/libs/c-ares/FUZZING.md
@@ -0,0 +1,91 @@
+# Fuzzing Hints
+
+## LibFuzzer
+
+1. Set compiler that supports fuzzing, this is an example on MacOS using
+ a homebrew-installed clang/llvm:
+```
+export CC="/opt/homebrew/Cellar/llvm/18.1.8/bin/clang"
+export CXX="/opt/homebrew/Cellar/llvm/18.1.8/bin/clang++"
+```
+
+2. Compile c-ares with both ASAN and fuzzing support. We want an optimized
+ debug build so we will use `RelWithDebInfo`:
+```
+export CFLAGS="-fsanitize=address,fuzzer-no-link -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
+export CXXFLAGS="-fsanitize=address,fuzzer-no-link -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
+export LDFLAGS="-fsanitize=address,fuzzer-no-link"
+mkdir buildfuzz
+cd buildfuzz
+cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -G Ninja ..
+ninja
+```
+
+3. Build the fuzz test itself linked against our fuzzing-enabled build:
+```
+${CC} -W -Wall -Og -fsanitize=address,fuzzer -I../include -I../src/lib -I. -o ares-test-fuzz ../test/ares-test-fuzz.c -L./lib -Wl,-rpath ./lib -lcares
+${CC} -W -Wall -Og -fsanitize=address,fuzzer -I../include -I../src/lib -I. -o ares-test-fuzz-name ../test/ares-test-fuzz-name.c -L./lib -Wl,-rpath ./lib -lcares
+```
+
+4. Run the fuzzer, its better if you can provide seed input but it does pretty
+ well on its own since it uses coverage data to determine how to proceed.
+ You can play with other flags etc, like `-jobs=XX` for parallelism. See
+ https://llvm.org/docs/LibFuzzer.html
+```
+mkdir corpus
+cp ../test/fuzzinput/* corpus
+./ares-test-fuzz -max_len=65535 corpus
+```
+or
+```
+mkdir corpus
+cp ../test/fuzznames/* corpus
+./ares-test-fuzz-name -max_len=1024 corpus
+```
+
+
+## AFL
+
+To fuzz using AFL, follow the
+[AFL quick start guide](http://lcamtuf.coredump.cx/afl/QuickStartGuide.txt):
+
+ - Download and build AFL.
+ - Configure the c-ares library and test tool to use AFL's compiler wrappers:
+
+ ```console
+ % export CC=$AFLDIR/afl-gcc
+ % ./configure --disable-shared && make
+ % cd test && ./configure && make aresfuzz aresfuzzname
+ ```
+
+ - Run the AFL fuzzer against the starting corpus:
+
+ ```console
+ % mkdir fuzzoutput
+ % $AFLDIR/afl-fuzz -i fuzzinput -o fuzzoutput -- ./aresfuzz # OR
+ % $AFLDIR/afl-fuzz -i fuzznames -o fuzzoutput -- ./aresfuzzname
+ ```
+
+## AFL Persistent Mode
+
+If a recent version of Clang is available, AFL can use its built-in compiler
+instrumentation; this configuration also allows the use of a (much) faster
+persistent mode, where multiple fuzz inputs are run for each process invocation.
+
+ - Download and build a recent AFL, and run `make` in the `llvm_mode`
+ subdirectory to ensure that `afl-clang-fast` gets built.
+ - Configure the c-ares library and test tool to use AFL's clang wrappers that
+ use compiler instrumentation:
+
+ ```console
+ % export CC=$AFLDIR/afl-clang-fast
+ % ./configure --disable-shared && make
+ % cd test && ./configure && make aresfuzz
+ ```
+
+ - Run the AFL fuzzer (in persistent mode) against the starting corpus:
+
+ ```console
+ % mkdir fuzzoutput
+ % $AFLDIR/afl-fuzz -i fuzzinput -o fuzzoutput -- ./aresfuzz
+ ```
diff --git a/contrib/libs/c-ares/README.md b/contrib/libs/c-ares/README.md
index c32d0677c8..6566c9fe6a 100644
--- a/contrib/libs/c-ares/README.md
+++ b/contrib/libs/c-ares/README.md
@@ -82,7 +82,7 @@ to sign releases):
```bash
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 # Daniel Stenberg
-gpg --keyserver hkps://keys.openpgp.org --recv-keys DA7D64E4C82C6294CB73A20E22E3D13B5411B7CA # Brad House
+gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys DA7D64E4C82C6294CB73A20E22E3D13B5411B7CA # Brad House
```
### Verifying signatures
@@ -109,8 +109,11 @@ gpg: binary signature, digest algorithm SHA512, key algorithm rsa2048
```
## Features
+
+See [Features](FEATURES.md)
+
### Supported RFCs and Proposals
-- [RFC1035](https://datatracker.ietf.org/doc/html/rfc7873).
+- [RFC1035](https://datatracker.ietf.org/doc/html/rfc1035).
Initial/Base DNS RFC
- [RFC2671](https://datatracker.ietf.org/doc/html/rfc2671),
[RFC6891](https://datatracker.ietf.org/doc/html/rfc6891).
@@ -151,3 +154,5 @@ gpg: binary signature, digest algorithm SHA512, key algorithm rsa2048
IPv6 address sorting as used by `ares_getaddrinfo()`.
- [RFC7413](https://datatracker.ietf.org/doc/html/rfc7413).
TCP FastOpen (TFO) for 0-RTT TCP Connection Resumption.
+- [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986).
+ Uniform Resource Identifier (URI). Used for server configuration.
diff --git a/contrib/libs/c-ares/RELEASE-NOTES.md b/contrib/libs/c-ares/RELEASE-NOTES.md
index e9c04953dc..cbd4788600 100644
--- a/contrib/libs/c-ares/RELEASE-NOTES.md
+++ b/contrib/libs/c-ares/RELEASE-NOTES.md
@@ -1,65 +1,66 @@
-## c-ares version 1.33.1 - August 23 2024
+## c-ares version 1.34.2 - October 15 2024
-This is a bugfix release.
+This release contains a fix for downstream packages detecting the c-ares
+version based on the contents of the header file rather than the
+distributed pkgconf or cmake files.
-Bugfixes:
-* Work around systemd-resolved quirk that returns unexpected codes for single
- label names. Also adds test cases to validate the work around works and
- will continue to work in future releases.
- [PR #863](https://github.com/c-ares/c-ares/pull/863),
- See Also https://github.com/systemd/systemd/issues/34101
-* Fix sysconfig ndots default value, also adds containerized test case to
- prevent future regressions.
- [PR #862](https://github.com/c-ares/c-ares/pull/862)
-* Fix blank DNS name returning error code rather than valid record for
- commands like: `adig -t SOA .`. Also adds test case to prevent future
- regressions.
- [9e574af](https://github.com/c-ares/c-ares/commit/9e574af)
-* Fix calculation of query times > 1s.
- [2b2eae7](https://github.com/c-ares/c-ares/commit/2b2eae7)
-* Fix building on old Linux releases that don't have `TCP_FASTOPEN_CONNECT`.
- [b7a89b9](https://github.com/c-ares/c-ares/commit/b7a89b9)
-* Fix minor Android build warnings.
- [PR #848](https://github.com/c-ares/c-ares/pull/848)
+## c-ares version 1.34.1 - October 9 2024
+
+This release fixes a packaging issue.
-Thanks go to these friendly people for their efforts and contributions for this
-release:
-* Brad House (@bradh352)
-* Erik Lax (@eriklax)
-* Hans-Christian Egtvedt (@egtvedt)
-* Mikael Lindemann (@mikaellindemann)
-* Nodar Chkuaselidze (@nodech)
-## c-ares version 1.33.0 - August 2 2024
+## c-ares version 1.34.0 - October 9 2024
This is a feature and bugfix release.
Features:
-* Add DNS cookie support (RFC7873 + RFC9018) to help prevent off-path cache
- poisoning attacks. [PR #833](https://github.com/c-ares/c-ares/pull/833)
-* Implement TCP FastOpen (TFO) RFC7413, which will make TCP reconnects 0-RTT
- on supported systems. [PR #840](https://github.com/c-ares/c-ares/pull/840)
+* adig: read arguments from adigrc.
+ [PR #856](https://github.com/c-ares/c-ares/pull/856)
+* Add new pending write callback optimization via `ares_set_pending_write_cb`.
+ [PR #857](https://github.com/c-ares/c-ares/pull/857)
+* New function `ares_process_fds()`.
+ [PR #875](https://github.com/c-ares/c-ares/pull/875)
+* Failed servers should be probed rather than redirecting queries which could
+ cause unexpected latency.
+ [PR #877](https://github.com/c-ares/c-ares/pull/877)
+* adig: rework command line arguments to mimic dig from bind.
+ [PR #890](https://github.com/c-ares/c-ares/pull/890)
+* Add new method for overriding network functions
+ `ares_set_socket_function_ex()` to properly support all new functionality.
+ [PR #894](https://github.com/c-ares/c-ares/pull/894)
+* Fix regression with custom socket callbacks due to DNS cookie support.
+ [PR #895](https://github.com/c-ares/c-ares/pull/895)
+* ares_socket: set IP_BIND_ADDRESS_NO_PORT on ares_set_local_ip* tcp sockets
+ [PR #887](https://github.com/c-ares/c-ares/pull/887)
+* URI parser/writer for ares_set_servers_csv()/ares_get_servers_csv().
+ [PR #882](https://github.com/c-ares/c-ares/pull/882)
Changes:
-* Reorganize source tree. [PR #822](https://github.com/c-ares/c-ares/pull/822)
-* Refactoring of connection handling to prevent code duplication.
- [PR #839](https://github.com/c-ares/c-ares/pull/839)
-* New dynamic array data structure to prevent simple logic flaws in array
- handling in various code paths.
- [PR #841](https://github.com/c-ares/c-ares/pull/841)
+* Connection handling modularization.
+ [PR #857](https://github.com/c-ares/c-ares/pull/857),
+ [PR #876](https://github.com/c-ares/c-ares/pull/876)
+* Expose library/utility functions to tools.
+ [PR #860](https://github.com/c-ares/c-ares/pull/860)
+* Remove `ares__` prefix, just use `ares_` for internal functions.
+ [PR #872](https://github.com/c-ares/c-ares/pull/872)
+
Bugfixes:
-* `ares_destroy()` race condition during shutdown due to missing lock.
- [PR #831](https://github.com/c-ares/c-ares/pull/831)
-* Android: Preserve thread name after attaching it to JVM.
- [PR #838](https://github.com/c-ares/c-ares/pull/838)
-* Windows UWP (Store) support fix.
- [PR #845](https://github.com/c-ares/c-ares/pull/845)
+* fix: potential WIN32_LEAN_AND_MEAN redefinition.
+ [PR #869](https://github.com/c-ares/c-ares/pull/869)
+* Fix googletest v1.15 compatibility.
+ [PR #874](https://github.com/c-ares/c-ares/pull/874)
+* Fix pkgconfig thread dependencies.
+ [PR #884](https://github.com/c-ares/c-ares/pull/884)
Thanks go to these friendly people for their efforts and contributions for this
release:
* Brad House (@bradh352)
-* Yauheni Khnykin (@Hsilgos)
+* Cristian Rodríguez (@crrodriguez)
+* Georg (@tacerus)
+* @lifenjoiner
+* Shelley Vohr (@codebytere)
+* 前进,前进,进 (@leleliu008)
diff --git a/contrib/libs/c-ares/include/ares.h b/contrib/libs/c-ares/include/ares.h
index adb2fe8419..d9bd7fce03 100644
--- a/contrib/libs/c-ares/include/ares.h
+++ b/contrib/libs/c-ares/include/ares.h
@@ -460,6 +460,8 @@ typedef void (*ares_server_state_callback)(const char *server_string,
ares_bool_t success, int flags,
void *data);
+typedef void (*ares_pending_write_cb)(void *data);
+
CARES_EXTERN int ares_library_init(int flags);
CARES_EXTERN int ares_library_init_mem(int flags, void *(*amalloc)(size_t size),
@@ -473,6 +475,9 @@ CARES_EXTERN int ares_library_init_android(jobject connectivity_manager);
CARES_EXTERN int ares_library_android_initialized(void);
#endif
+#define CARES_HAVE_ARES_LIBRARY_INIT 1
+#define CARES_HAVE_ARES_LIBRARY_CLEANUP 1
+
CARES_EXTERN int ares_library_initialized(void);
CARES_EXTERN void ares_library_cleanup(void);
@@ -526,6 +531,12 @@ CARES_EXTERN void
ares_server_state_callback callback,
void *user_data);
+CARES_EXTERN void ares_set_pending_write_cb(ares_channel_t *channel,
+ ares_pending_write_cb callback,
+ void *user_data);
+
+CARES_EXTERN void ares_process_pending_write(ares_channel_t *channel);
+
CARES_EXTERN int ares_set_sortlist(ares_channel_t *channel,
const char *sortstr);
@@ -556,10 +567,251 @@ struct ares_socket_functions {
ares_ssize_t (*asendv)(ares_socket_t, const struct iovec *, int, void *);
};
-CARES_EXTERN void
- ares_set_socket_functions(ares_channel_t *channel,
- const struct ares_socket_functions *funcs,
- void *user_data);
+CARES_EXTERN CARES_DEPRECATED_FOR(
+ ares_set_socket_functions_ex) void ares_set_socket_functions(ares_channel_t
+ *channel,
+ const struct
+ ares_socket_functions
+ *funcs,
+ void *user_data);
+
+/*! Flags defining behavior of socket functions */
+typedef enum {
+ /*! Strongly recommended to create sockets as non-blocking and set this
+ * flag */
+ ARES_SOCKFUNC_FLAG_NONBLOCKING = 1 << 0
+} ares_sockfunc_flags_t;
+
+/*! Socket options in request to asetsockopt() in struct
+ * ares_socket_functions_ex */
+typedef enum {
+ /*! Set the send buffer size. Value is a pointer to an int. (SO_SNDBUF) */
+ ARES_SOCKET_OPT_SENDBUF_SIZE,
+ /*! Set the recv buffer size. Value is a pointer to an int. (SO_RCVBUF) */
+ ARES_SOCKET_OPT_RECVBUF_SIZE,
+ /*! Set the network interface to use as the source for communication.
+ * Value is a C string. (SO_BINDTODEVICE) */
+ ARES_SOCKET_OPT_BIND_DEVICE,
+ /*! Enable TCP Fast Open. Value is a pointer to an ares_bool_t. On some
+ * systems this could be a no-op if it is known it is on by default and
+ * return success. Other systems may be a no-op if known the system does
+ * not support the feature and returns failure with errno set to ENOSYS or
+ * WSASetLastError(WSAEOPNOTSUPP).
+ */
+ ARES_SOCKET_OPT_TCP_FASTOPEN
+} ares_socket_opt_t;
+
+/*! Flags for behavior during connect */
+typedef enum {
+ /*! Connect using TCP Fast Open */
+ ARES_SOCKET_CONN_TCP_FASTOPEN = 1 << 0
+} ares_socket_connect_flags_t;
+
+/*! Flags for behavior during bind */
+typedef enum {
+ /*! Bind is for a TCP connection */
+ ARES_SOCKET_BIND_TCP = 1 << 0,
+ /*! Bind is for a client connection, not server */
+ ARES_SOCKET_BIND_CLIENT = 1 << 1
+} ares_socket_bind_flags_t;
+
+/*! Socket functions to call rather than using OS-native functions */
+struct ares_socket_functions_ex {
+ /*! ABI Version: must be "1" */
+ unsigned int version;
+
+ /*! Flags indicating behavior of the subsystem. One or more
+ * ares_sockfunc_flags_t */
+ unsigned int flags;
+
+ /*! REQUIRED. Create a new socket file descriptor. The file descriptor must
+ * be opened in non-blocking mode (so that reads and writes never block).
+ * Recommended other options would be to disable signals on write errors
+ * (SO_NOSIGPIPE), Disable the Nagle algorithm on SOCK_STREAM (TCP_NODELAY),
+ * and to automatically close file descriptors on exec (FD_CLOEXEC).
+ *
+ * \param[in] domain Socket domain. Valid values are AF_INET, AF_INET6.
+ * \param[in] type Socket type. Valid values are SOCK_STREAM (tcp) and
+ * SOCK_DGRAM (udp).
+ * \param[in] protocol In general this should be ignored, may be passed as
+ * 0 (use as default for type), or may be IPPROTO_UDP
+ * or IPPROTO_TCP.
+ * \param[in] user_data Pointer provided to ares_set_socket_functions_ex().
+ * \return ARES_SOCKET_BAD on error, or socket file descriptor on success.
+ * On error, it is expected to set errno (or WSASetLastError()) to an
+ * appropriate reason code such as EAFNOSUPPORT / WSAAFNOSUPPORT. */
+ ares_socket_t (*asocket)(int domain, int type, int protocol, void *user_data);
+
+ /*! REQUIRED. Close a socket file descriptor.
+ * \param[in] sock Socket file descriptor returned from asocket.
+ * \param[in] user_data Pointer provided to ares_set_socket_functions_ex().
+ * \return 0 on success. On failure, should set errno (or WSASetLastError)
+ * to an appropriate code such as EBADF / WSAEBADF */
+ int (*aclose)(ares_socket_t sock, void *user_data);
+
+
+ /*! REQUIRED. Set socket option. This shares a similar syntax to the BSD
+ * setsockopt() call, however we use our own options. The value is typically
+ * a pointer to the desired value and each option has its own data type it
+ * will express in the documentation.
+ *
+ * \param[in] sock Socket file descriptor returned from asocket.
+ * \param[in] opt Option to set.
+ * \param[in] val Pointer to value for option.
+ * \param[in] val_size Size of value.
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return Return 0 on success, otherwise -1 should be returned with an
+ * appropriate errno (or WSASetLastError()) set. If error is ENOSYS /
+ * WSAEOPNOTSUPP an error will not be propagated as it will take it
+ * to mean it is an intentional decision to not support the feature.
+ */
+ int (*asetsockopt)(ares_socket_t sock, ares_socket_opt_t opt, const void *val,
+ ares_socklen_t val_size, void *user_data);
+
+ /*! REQUIRED. Connect to the remote using the supplied address. For UDP
+ * sockets this will bind the file descriptor to only send and receive packets
+ * from the remote address provided.
+ *
+ * \param[in] sock Socket file descriptor returned from asocket.
+ * \param[in] address Address to connect to
+ * \param[in] address_len Size of address structure passed
+ * \param[in] flags One or more ares_socket_connect_flags_t
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return Return 0 upon successful establishement, otherwise -1 should be
+ * returned with an appropriate errno (or WSASetLastError()) set. It
+ * is generally expected that most TCP connections (not using TCP Fast Open)
+ * will return -1 with an error of EINPROGRESS / WSAEINPROGRESS due to the
+ * non-blocking nature of the connection. It is then the responsibility of
+ * the implementation to notify of writability on the socket to indicate the
+ * connection has succeeded (or readability on failure to retrieve the
+ * appropriate error).
+ */
+ int (*aconnect)(ares_socket_t sock, const struct sockaddr *address,
+ ares_socklen_t address_len, unsigned int flags,
+ void *user_data);
+
+ /*! REQUIRED. Attempt to read data from the remote.
+ *
+ * \param[in] sock Socket file descriptor returned from asocket.
+ * \param[in,out] buffer Allocated buffer to place data read from
+ * socket.
+ * \param[in] length Size of buffer
+ * \param[in] flags Unused, always 0.
+ * \param[in,out] address Buffer to hold address data was received from.
+ * May be NULL if address not desired.
+ * \param[in,out] address_len Input size of address buffer, output actual
+ * written size. Must be NULL if address is NULL.
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return -1 on error with appropriate errno (or WSASetLastError()) set,
+ * such as EWOULDBLOCK / EAGAIN / WSAEWOULDBLOCK, or ECONNRESET /
+ * WSAECONNRESET.
+ */
+ ares_ssize_t (*arecvfrom)(ares_socket_t sock, void *buffer, size_t length,
+ int flags, struct sockaddr *address,
+ ares_socklen_t *address_len, void *user_data);
+
+ /*! REQUIRED. Attempt to send data to the remote. Optional address may be
+ * specified which may be useful on unbound UDP sockets (though currently not
+ * used), and TCP FastOpen where the connection is delayed until first write.
+ *
+ * \param[in] sock Socket file descriptor returned from asocket.
+ * \param[in] buffer Containing data to place onto wire.
+ * \param[in] length Size of buffer
+ * \param[in] flags Flags for writing. Currently only used flag is
+ * MSG_NOSIGNAL if the host OS has such a flag. In
+ * general flags can be ignored.
+ * \param[in] address Buffer containing address to send data to. May
+ * be NULL.
+ * \param[in,out] address_len Size of address buffer. Must be 0 if address
+ * is NULL.
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return Number of bytes written. -1 on error with appropriate errno (or
+ * WSASetLastError()) set.
+ */
+ ares_ssize_t (*asendto)(ares_socket_t sock, const void *buffer, size_t length,
+ int flags, const struct sockaddr *address,
+ ares_socklen_t address_len, void *user_data);
+
+ /*! Optional. Retrieve the local address of the socket.
+ *
+ * \param[in] sock Socket file descriptor returned from asocket
+ * \param[in,out] address Buffer to hold address
+ * \param[in,out] address_len Size of address buffer on input, written size
+ * on output.
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return 0 on success. -1 on error with an appropriate errno (or
+ * WSASetLastError()) set.
+ */
+ int (*agetsockname)(ares_socket_t sock, struct sockaddr *address,
+ ares_socklen_t *address_len, void *user_data);
+
+ /*! Optional. Bind the socket to an address. This can be used for client
+ * connections to bind the source address for packets before connect, or
+ * for server connections to bind to an address and port before listening.
+ * Currently c-ares only supports client connections.
+ *
+ * \param[in] sock Socket file descriptor returned from asocket
+ * \param[in] flags ares_socket_bind_flags_t flags.
+ * \param[in] address Buffer containing address.
+ * \param[in] address_len Size of address buffer.
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return 0 on success. -1 on error with an appropriate errno (or
+ * WSASetLastError()) set.
+ */
+ int (*abind)(ares_socket_t sock, unsigned int flags,
+ const struct sockaddr *address, socklen_t address_len,
+ void *user_data);
+
+ /* Optional. Convert an interface name into the interface index. If this
+ * callback is not specified, then IPv6 Link-Local DNS servers cannot be used.
+ *
+ * \param[in] ifname Interface Name as NULL-terminated string.
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return 0 on failure, otherwise interface index.
+ */
+ unsigned int (*aif_nametoindex)(const char *ifname, void *user_data);
+
+ /* Optional. Convert an interface index into the interface name. If this
+ * callback is not specified, then IPv6 Link-Local DNS servers cannot be used.
+ *
+ * \param[in] ifindex Interface index, must be > 0
+ * \param[in] ifname_buf Buffer to hold interface name. Must be at least
+ * IFNAMSIZ in length or 32 bytes if IFNAMSIZ isn't
+ * defined.
+ * \param[in] ifname_buf_len Size of ifname_buf for verification.
+ * \param[in] user_data Pointer provided to
+ * ares_set_socket_functions_ex().
+ * \return NULL on failure, otherwise pointer to provided ifname_buf
+ */
+ const char *(*aif_indextoname)(unsigned int ifindex, char *ifname_buf,
+ size_t ifname_buf_len, void *user_data);
+};
+
+/*! Override the native socket functions for the OS with the provided set.
+ * An optional user data thunk may be specified which will be passed to
+ * each registered callback. Replaces ares_set_socket_functions().
+ *
+ * \param[in] channel An initialized c-ares channel.
+ * \param[in] funcs Structure registering the implementations for the
+ * various functions. See the structure definition.
+ * This will be duplicated and does not need to exist
+ * past the life of this call.
+ * \param[in] user_data User data thunk which will be passed to each call of
+ * the registered callbacks.
+ * \return ARES_SUCCESS on success, or another error code such as ARES_EFORMERR
+ * on misuse.
+ */
+CARES_EXTERN ares_status_t ares_set_socket_functions_ex(
+ ares_channel_t *channel, const struct ares_socket_functions_ex *funcs,
+ void *user_data);
+
CARES_EXTERN CARES_DEPRECATED_FOR(ares_send_dnsrec) void ares_send(
ares_channel_t *channel, const unsigned char *qbuf, int qlen,
@@ -655,12 +907,52 @@ CARES_EXTERN struct timeval *ares_timeout(const ares_channel_t *channel,
struct timeval *maxtv,
struct timeval *tv);
-CARES_EXTERN CARES_DEPRECATED_FOR(ares_process_fd) void ares_process(
+CARES_EXTERN CARES_DEPRECATED_FOR(ares_process_fds) void ares_process(
ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds);
-CARES_EXTERN void ares_process_fd(ares_channel_t *channel,
- ares_socket_t read_fd,
- ares_socket_t write_fd);
+/*! Events used by ares_fd_events_t */
+typedef enum {
+ ARES_FD_EVENT_NONE = 0, /*!< No events */
+ ARES_FD_EVENT_READ = 1 << 0, /*!< Read event (including disconnect/error) */
+ ARES_FD_EVENT_WRITE = 1 << 1 /*!< Write event */
+} ares_fd_eventflag_t;
+
+/*! Type holding a file descriptor and mask of events, used by
+ * ares_process_fds() */
+typedef struct {
+ ares_socket_t fd; /*!< File descriptor */
+ unsigned int events; /*!< Mask of ares_fd_eventflag_t */
+} ares_fd_events_t;
+
+/*! Flags used by ares_process_fds() */
+typedef enum {
+ ARES_PROCESS_FLAG_NONE = 0, /*!< No flag value */
+ ARES_PROCESS_FLAG_SKIP_NON_FD = 1 << 0 /*!< skip any processing unrelated to
+ * the file descriptor events passed
+ * in */
+} ares_process_flag_t;
+
+/*! Process events on multiple file descriptors based on the event mask
+ * associated with each file descriptor. Recommended over calling
+ * ares_process_fd() multiple times since it would trigger additional logic
+ * such as timeout processing on each call.
+ *
+ * \param[in] channel Initialized ares channel
+ * \param[in] events Array of file descriptors with events. May be NULL if
+ * no events, but may have timeouts to process.
+ * \param[in] nevents Number of elements in the events array. May be 0 if
+ * no events, but may have timeouts to process.
+ * \param[in] flags Flags to alter behavior of the process command.
+ * \return ARES_ENOMEM on out of memory, ARES_EFORMERR on misuse,
+ * otherwise ARES_SUCCESS
+ */
+CARES_EXTERN ares_status_t ares_process_fds(ares_channel_t *channel,
+ const ares_fd_events_t *events,
+ size_t nevents, unsigned int flags);
+
+CARES_EXTERN void ares_process_fd(ares_channel_t *channel,
+ ares_socket_t read_fd,
+ ares_socket_t write_fd);
CARES_EXTERN CARES_DEPRECATED_FOR(ares_dns_record_create) int ares_create_query(
const char *name, int dnsclass, int type, unsigned short id, int rd,
diff --git a/contrib/libs/c-ares/include/ares_version.h b/contrib/libs/c-ares/include/ares_version.h
index c910d79209..d7a9c9e61e 100644
--- a/contrib/libs/c-ares/include/ares_version.h
+++ b/contrib/libs/c-ares/include/ares_version.h
@@ -31,14 +31,17 @@
#define ARES_COPYRIGHT "2004 - 2024 Daniel Stenberg, <daniel@haxx.se>."
#define ARES_VERSION_MAJOR 1
-#define ARES_VERSION_MINOR 33
-#define ARES_VERSION_PATCH 1
+#define ARES_VERSION_MINOR 34
+#define ARES_VERSION_PATCH 2
+#define ARES_VERSION_STR "1.34.2"
+
+/* NOTE: We cannot make the version string a C preprocessor stringify operation
+ * due to assumptions made by integrators that aren't properly using
+ * pkgconf or cmake and are doing their own detection based on parsing
+ * this header */
+
#define ARES_VERSION \
((ARES_VERSION_MAJOR << 16) | (ARES_VERSION_MINOR << 8) | \
(ARES_VERSION_PATCH))
-#define ARES_VERSION_STR "1.33.1"
-
-#define CARES_HAVE_ARES_LIBRARY_INIT 1
-#define CARES_HAVE_ARES_LIBRARY_CLEANUP 1
#endif
diff --git a/contrib/libs/c-ares/patches/ubuntu16-compat.patch b/contrib/libs/c-ares/patches/ubuntu16-compat.patch
deleted file mode 100644
index 710feaa354..0000000000
--- a/contrib/libs/c-ares/patches/ubuntu16-compat.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- contrib/libs/c-ares/src/lib/ares__socket.c (index)
-+++ contrib/libs/c-ares/src/lib/ares__socket.c (working tree)
-@@ -61,7 +61,7 @@
- # define TFO_SKIP_CONNECT 0
- # define TFO_USE_SENDTO 0
- # define TFO_USE_CONNECTX 0
--# define TFO_CLIENT_SOCKOPT TCP_FASTOPEN_CONNECT
-+# define TFO_CLIENT_SOCKOPT 0
- #elif defined(__FreeBSD__) && defined(TCP_FASTOPEN)
- # define TFO_SUPPORTED 1
- # define TFO_SKIP_CONNECT 1
diff --git a/contrib/libs/c-ares/src/lib/ares__socket.c b/contrib/libs/c-ares/src/lib/ares__socket.c
deleted file mode 100644
index 70ed7a8dd3..0000000000
--- a/contrib/libs/c-ares/src/lib/ares__socket.c
+++ /dev/null
@@ -1,764 +0,0 @@
-/* MIT License
- *
- * Copyright (c) Massachusetts Institute of Technology
- * Copyright (c) The c-ares project and its contributors
- *
- * 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_private.h"
-
-#ifdef HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-# include <netinet/tcp.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#endif
-#ifdef NETWARE
-# include <sys/filio.h>
-#endif
-
-#include <assert.h>
-#include <fcntl.h>
-#include <limits.h>
-
-#if defined(__linux__) && defined(TCP_FASTOPEN_CONNECT)
-# define TFO_SUPPORTED 1
-# define TFO_SKIP_CONNECT 0
-# define TFO_USE_SENDTO 0
-# define TFO_USE_CONNECTX 0
-# define TFO_CLIENT_SOCKOPT 0
-#elif defined(__FreeBSD__) && defined(TCP_FASTOPEN)
-# define TFO_SUPPORTED 1
-# define TFO_SKIP_CONNECT 1
-# define TFO_USE_SENDTO 1
-# define TFO_USE_CONNECTX 0
-# define TFO_CLIENT_SOCKOPT TCP_FASTOPEN
-#elif defined(__APPLE__) && defined(HAVE_CONNECTX)
-# define TFO_SUPPORTED 1
-# define TFO_SKIP_CONNECT 0
-# define TFO_USE_SENDTO 0
-# define TFO_USE_CONNECTX 1
-# undef TFO_CLIENT_SOCKOPT
-#else
-# define TFO_SUPPORTED 0
-#endif
-
-
-#ifndef HAVE_WRITEV
-/* Structure for scatter/gather I/O. */
-struct iovec {
- void *iov_base; /* Pointer to data. */
- size_t iov_len; /* Length of data. */
-};
-#endif
-
-
-/* Return 1 if the specified error number describes a readiness error, or 0
- * otherwise. This is mostly for HP-UX, which could return EAGAIN or
- * EWOULDBLOCK. See this man page
- *
- * http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html?
- * manpage=/usr/share/man/man2.Z/send.2
- */
-ares_bool_t ares__socket_try_again(int errnum)
-{
-#if !defined EWOULDBLOCK && !defined EAGAIN
-# error "Neither EWOULDBLOCK nor EAGAIN defined"
-#endif
-
-#ifdef EWOULDBLOCK
- if (errnum == EWOULDBLOCK) {
- return ARES_TRUE;
- }
-#endif
-
-#if defined EAGAIN && EAGAIN != EWOULDBLOCK
- if (errnum == EAGAIN) {
- return ARES_TRUE;
- }
-#endif
-
- return ARES_FALSE;
-}
-
-ares_ssize_t ares__socket_recv(ares_channel_t *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);
- }
-
- return (ares_ssize_t)recv((RECV_TYPE_ARG1)s, (RECV_TYPE_ARG2)data,
- (RECV_TYPE_ARG3)data_len, (RECV_TYPE_ARG4)(0));
-}
-
-ares_ssize_t ares__socket_recvfrom(ares_channel_t *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);
- }
-
-#ifdef HAVE_RECVFROM
- return (ares_ssize_t)recvfrom(s, data, (RECVFROM_TYPE_ARG3)data_len, flags,
- from, from_len);
-#else
- return ares__socket_recv(channel, s, data, data_len);
-#endif
-}
-
-/* Use like:
- * struct sockaddr_storage sa_storage;
- * ares_socklen_t salen = sizeof(sa_storage);
- * struct sockaddr *sa = (struct sockaddr *)&sa_storage;
- * ares__conn_set_sockaddr(conn, sa, &salen);
- */
-static ares_status_t ares__conn_set_sockaddr(const ares_conn_t *conn,
- struct sockaddr *sa,
- ares_socklen_t *salen)
-{
- const ares_server_t *server = conn->server;
- unsigned short port =
- conn->flags & ARES_CONN_FLAG_TCP ? server->tcp_port : server->udp_port;
- struct sockaddr_in *sin;
- struct sockaddr_in6 *sin6;
-
- switch (server->addr.family) {
- case AF_INET:
- sin = (struct sockaddr_in *)(void *)sa;
- if (*salen < (ares_socklen_t)sizeof(*sin)) {
- return ARES_EFORMERR;
- }
- *salen = sizeof(*sin);
- memset(sin, 0, sizeof(*sin));
- sin->sin_family = AF_INET;
- sin->sin_port = htons(port);
- memcpy(&sin->sin_addr, &server->addr.addr.addr4, sizeof(sin->sin_addr));
- return ARES_SUCCESS;
- case AF_INET6:
- sin6 = (struct sockaddr_in6 *)(void *)sa;
- if (*salen < (ares_socklen_t)sizeof(*sin6)) {
- return ARES_EFORMERR;
- }
- *salen = sizeof(*sin6);
- memset(sin6, 0, sizeof(*sin6));
- sin6->sin6_family = AF_INET6;
- sin6->sin6_port = htons(port);
- memcpy(&sin6->sin6_addr, &server->addr.addr.addr6,
- sizeof(sin6->sin6_addr));
-#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
- sin6->sin6_scope_id = server->ll_scope;
-#endif
- return ARES_SUCCESS;
- default:
- break;
- }
-
- return ARES_EBADFAMILY;
-}
-
-static ares_status_t ares_conn_set_self_ip(ares_conn_t *conn, ares_bool_t early)
-{
- struct sockaddr_storage sa_storage;
- int rv;
- ares_socklen_t len = sizeof(sa_storage);
-
- /* We call this twice on TFO, if we already have the IP we can go ahead and
- * skip processing */
- if (!early && conn->self_ip.family != AF_UNSPEC) {
- return ARES_SUCCESS;
- }
-
- memset(&sa_storage, 0, sizeof(sa_storage));
-
- rv = getsockname(conn->fd, (struct sockaddr *)(void *)&sa_storage, &len);
- if (rv != 0) {
- /* During TCP FastOpen, we can't get the IP this early since connect()
- * may not be called. That's ok, we'll try again later */
- if (early && conn->flags & ARES_CONN_FLAG_TCP &&
- conn->flags & ARES_CONN_FLAG_TFO) {
- memset(&conn->self_ip, 0, sizeof(conn->self_ip));
- return ARES_SUCCESS;
- }
- return ARES_ECONNREFUSED;
- }
-
- if (!ares_sockaddr_to_ares_addr(&conn->self_ip, NULL,
- (struct sockaddr *)(void *)&sa_storage)) {
- return ARES_ECONNREFUSED;
- }
-
- return ARES_SUCCESS;
-}
-
-ares_ssize_t ares__conn_write(ares_conn_t *conn, const void *data, size_t len)
-{
- ares_channel_t *channel = conn->server->channel;
- int flags = 0;
-
-#ifdef HAVE_MSG_NOSIGNAL
- flags |= MSG_NOSIGNAL;
-#endif
-
- if (channel->sock_funcs && channel->sock_funcs->asendv) {
- struct iovec vec;
- vec.iov_base = (void *)((size_t)data); /* Cast off const */
- vec.iov_len = len;
- return channel->sock_funcs->asendv(conn->fd, &vec, 1,
- channel->sock_func_cb_data);
- }
-
- if (conn->flags & ARES_CONN_FLAG_TFO_INITIAL) {
- conn->flags &= ~((unsigned int)ARES_CONN_FLAG_TFO_INITIAL);
-
-#if defined(TFO_USE_SENDTO) && TFO_USE_SENDTO
- {
- struct sockaddr_storage sa_storage;
- ares_socklen_t salen = sizeof(sa_storage);
- struct sockaddr *sa = (struct sockaddr *)&sa_storage;
- ares_status_t status;
- ares_ssize_t rv;
-
- status = ares__conn_set_sockaddr(conn, sa, &salen);
- if (status != ARES_SUCCESS) {
- return status;
- }
-
- rv = (ares_ssize_t)sendto((SEND_TYPE_ARG1)conn->fd, (SEND_TYPE_ARG2)data,
- (SEND_TYPE_ARG3)len, (SEND_TYPE_ARG4)flags, sa,
- salen);
-
- /* If using TFO, we might not have been able to get an IP earlier, since
- * we hadn't informed the OS of the destination. When using sendto()
- * now we have so we should be able to fetch it */
- ares_conn_set_self_ip(conn, ARES_TRUE);
- return rv;
- }
-#endif
- }
-
- return (ares_ssize_t)send((SEND_TYPE_ARG1)conn->fd, (SEND_TYPE_ARG2)data,
- (SEND_TYPE_ARG3)len, (SEND_TYPE_ARG4)flags);
-}
-
-/*
- * setsocknonblock sets the given socket to either blocking or non-blocking
- * mode based on the 'nonblock' boolean argument. This function is highly
- * portable.
- */
-static int setsocknonblock(ares_socket_t sockfd, /* operate on this */
- int nonblock /* TRUE or FALSE */)
-{
-#if defined(USE_BLOCKING_SOCKETS)
-
- return 0; /* returns success */
-
-#elif defined(HAVE_FCNTL_O_NONBLOCK)
-
- /* most recent unix versions */
- int flags;
- flags = fcntl(sockfd, F_GETFL, 0);
- if (nonblock) {
- return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
- } else {
- return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK)); /* LCOV_EXCL_LINE */
- }
-
-#elif defined(HAVE_IOCTL_FIONBIO)
-
- /* older unix versions */
- int flags = nonblock ? 1 : 0;
- return ioctl(sockfd, FIONBIO, &flags);
-
-#elif defined(HAVE_IOCTLSOCKET_FIONBIO)
-
-# ifdef WATT32
- char flags = nonblock ? 1 : 0;
-# else
- /* Windows */
- unsigned long flags = nonblock ? 1UL : 0UL;
-# endif
- return ioctlsocket(sockfd, (long)FIONBIO, &flags);
-
-#elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO)
-
- /* Amiga */
- long flags = nonblock ? 1L : 0L;
- return IoctlSocket(sockfd, FIONBIO, flags);
-
-#elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK)
-
- /* BeOS */
- long b = nonblock ? 1L : 0L;
- return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
-
-#else
-# error "no non-blocking method was found/used/set"
-#endif
-}
-
-#if defined(IPV6_V6ONLY) && defined(USE_WINSOCK)
-/* It makes support for IPv4-mapped IPv6 addresses.
- * Linux kernel, NetBSD, FreeBSD and Darwin: default is off;
- * Windows Vista and later: default is on;
- * DragonFly BSD: acts like off, and dummy setting;
- * OpenBSD and earlier Windows: unsupported.
- * Linux: controlled by /proc/sys/net/ipv6/bindv6only.
- */
-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)
-#endif
-
-static ares_status_t configure_socket(ares_conn_t *conn)
-{
- union {
- struct sockaddr sa;
- struct sockaddr_in sa4;
- struct sockaddr_in6 sa6;
- } local;
-
- ares_socklen_t bindlen = 0;
- ares_server_t *server = conn->server;
- ares_channel_t *channel = server->channel;
-
- /* do not set options for user-managed sockets */
- if (channel->sock_funcs && channel->sock_funcs->asocket) {
- return ARES_SUCCESS;
- }
-
- (void)setsocknonblock(conn->fd, 1);
-
-#if defined(FD_CLOEXEC) && !defined(MSDOS)
- /* Configure the socket fd as close-on-exec. */
- if (fcntl(conn->fd, F_SETFD, FD_CLOEXEC) != 0) {
- return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE */
- }
-#endif
-
- /* No need to emit SIGPIPE on socket errors */
-#if defined(SO_NOSIGPIPE)
- {
- int opt = 1;
- (void)setsockopt(conn->fd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&opt,
- sizeof(opt));
- }
-#endif
-
- /* Set the socket's send and receive buffer sizes. */
- if (channel->socket_send_buffer_size > 0 &&
- setsockopt(conn->fd, SOL_SOCKET, SO_SNDBUF,
- (void *)&channel->socket_send_buffer_size,
- sizeof(channel->socket_send_buffer_size)) != 0) {
- return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */
- }
-
- if (channel->socket_receive_buffer_size > 0 &&
- setsockopt(conn->fd, SOL_SOCKET, SO_RCVBUF,
- (void *)&channel->socket_receive_buffer_size,
- sizeof(channel->socket_receive_buffer_size)) != 0) {
- return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */
- }
-
-#ifdef SO_BINDTODEVICE
- if (ares_strlen(channel->local_dev_name)) {
- /* Only root can do this, and usually not fatal if it doesn't work, so
- * just continue on. */
- (void)setsockopt(conn->fd, SOL_SOCKET, SO_BINDTODEVICE,
- channel->local_dev_name, sizeof(channel->local_dev_name));
- }
-#endif
-
- if (server->addr.family == AF_INET && channel->local_ip4) {
- memset(&local.sa4, 0, sizeof(local.sa4));
- local.sa4.sin_family = AF_INET;
- local.sa4.sin_addr.s_addr = htonl(channel->local_ip4);
- bindlen = sizeof(local.sa4);
- } else if (server->addr.family == AF_INET6 && server->ll_scope == 0 &&
- memcmp(channel->local_ip6, ares_in6addr_any._S6_un._S6_u8,
- sizeof(channel->local_ip6)) != 0) {
- /* Only if not link-local and an ip other than "::" is specified */
- 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));
- bindlen = sizeof(local.sa6);
- }
-
- if (bindlen && bind(conn->fd, &local.sa, bindlen) < 0) {
- return ARES_ECONNREFUSED;
- }
-
- if (server->addr.family == AF_INET6) {
- set_ipv6_v6only(conn->fd, 0);
- }
-
- if (conn->flags & ARES_CONN_FLAG_TCP) {
- int opt = 1;
-
-#ifdef TCP_NODELAY
- /*
- * Disable the Nagle algorithm (only relevant for TCP sockets, and thus not
- * in configure_socket). In general, in DNS lookups we're pretty much
- * interested in firing off a single request and then waiting for a reply,
- * so batching isn't very interesting.
- */
- if (setsockopt(conn->fd, IPPROTO_TCP, TCP_NODELAY, (void *)&opt,
- sizeof(opt)) != 0) {
- return ARES_ECONNREFUSED;
- }
-#endif
-
-#if defined(TFO_CLIENT_SOCKOPT)
- if (conn->flags & ARES_CONN_FLAG_TFO &&
- setsockopt(conn->fd, IPPROTO_TCP, TFO_CLIENT_SOCKOPT, (void *)&opt,
- sizeof(opt)) != 0) {
- /* Disable TFO if flag can't be set. */
- conn->flags &= ~((unsigned int)ARES_CONN_FLAG_TFO);
- }
-#endif
- }
-
- return ARES_SUCCESS;
-}
-
-ares_bool_t ares_sockaddr_to_ares_addr(struct ares_addr *ares_addr,
- unsigned short *port,
- const struct sockaddr *sockaddr)
-{
- if (sockaddr->sa_family == AF_INET) {
- /* NOTE: memcpy sockaddr_in due to alignment issues found by UBSAN due to
- * dnsinfo packing on MacOS */
- struct sockaddr_in sockaddr_in;
- memcpy(&sockaddr_in, sockaddr, sizeof(sockaddr_in));
-
- ares_addr->family = AF_INET;
- memcpy(&ares_addr->addr.addr4, &(sockaddr_in.sin_addr),
- sizeof(ares_addr->addr.addr4));
-
- if (port) {
- *port = ntohs(sockaddr_in.sin_port);
- }
- return ARES_TRUE;
- }
-
- if (sockaddr->sa_family == AF_INET6) {
- /* NOTE: memcpy sockaddr_in6 due to alignment issues found by UBSAN due to
- * dnsinfo packing on MacOS */
- struct sockaddr_in6 sockaddr_in6;
- memcpy(&sockaddr_in6, sockaddr, sizeof(sockaddr_in6));
-
- ares_addr->family = AF_INET6;
- memcpy(&ares_addr->addr.addr6, &(sockaddr_in6.sin6_addr),
- sizeof(ares_addr->addr.addr6));
- if (port) {
- *port = ntohs(sockaddr_in6.sin6_port);
- }
- return ARES_TRUE;
- }
-
- return ARES_FALSE;
-}
-
-static ares_status_t ares__conn_connect(ares_conn_t *conn, struct sockaddr *sa,
- ares_socklen_t salen)
-{
- /* Normal non TCPFastOpen style connect */
- if (!(conn->flags & ARES_CONN_FLAG_TFO)) {
- return ares__connect_socket(conn->server->channel, conn->fd, sa, salen);
- }
-
- /* FreeBSD don't want any sort of connect() so skip */
-#if defined(TFO_SKIP_CONNECT) && TFO_SKIP_CONNECT
- return ARES_SUCCESS;
-#elif defined(TFO_USE_CONNECTX) && TFO_USE_CONNECTX
- {
- int rv;
- int err;
-
- do {
- sa_endpoints_t endpoints;
- memset(&endpoints, 0, sizeof(endpoints));
- endpoints.sae_dstaddr = sa;
- endpoints.sae_dstaddrlen = salen;
-
- rv = connectx(conn->fd, &endpoints, SAE_ASSOCID_ANY,
- CONNECT_DATA_IDEMPOTENT | CONNECT_RESUME_ON_READ_WRITE,
- NULL, 0, NULL, NULL);
-
- err = SOCKERRNO;
- if (rv == -1 && err != EINPROGRESS && err != EWOULDBLOCK) {
- return ARES_ECONNREFUSED;
- }
-
- } while (rv == -1 && err == EINTR);
- }
- return ARES_SUCCESS;
-#elif defined(TFO_SUPPORTED) && TFO_SUPPORTED
- return ares__connect_socket(conn->server->channel, conn->fd, sa, salen);
-#else
- /* Shouldn't be possible */
- return ARES_ECONNREFUSED;
-#endif
-}
-
-ares_status_t ares__open_connection(ares_conn_t **conn_out,
- ares_channel_t *channel,
- ares_server_t *server, ares_bool_t is_tcp)
-{
- ares_status_t status;
- struct sockaddr_storage sa_storage;
- ares_socklen_t salen = sizeof(sa_storage);
- struct sockaddr *sa = (struct sockaddr *)&sa_storage;
- ares_conn_t *conn;
- ares__llist_node_t *node = NULL;
- int stype = is_tcp ? SOCK_STREAM : SOCK_DGRAM;
-
- *conn_out = NULL;
-
- conn = ares_malloc(sizeof(*conn));
- if (conn == NULL) {
- return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
- }
-
- memset(conn, 0, sizeof(*conn));
- conn->fd = ARES_SOCKET_BAD;
- conn->server = server;
- conn->queries_to_conn = ares__llist_create(NULL);
- conn->flags = is_tcp ? ARES_CONN_FLAG_TCP : ARES_CONN_FLAG_NONE;
-
- /* Enable TFO if the OS supports it and we were passed in data to send during
- * the connect. It might be disabled later if an error is encountered. Make
- * sure a user isn't overriding anything. */
- if (conn->flags & ARES_CONN_FLAG_TCP && channel->sock_funcs == NULL &&
- TFO_SUPPORTED) {
- conn->flags |= ARES_CONN_FLAG_TFO;
- }
-
- if (conn->queries_to_conn == NULL) {
- /* LCOV_EXCL_START: OutOfMemory */
- status = ARES_ENOMEM;
- goto done;
- /* LCOV_EXCL_STOP */
- }
-
- /* Convert into the struct sockaddr structure needed by the OS */
- status = ares__conn_set_sockaddr(conn, sa, &salen);
- if (status != ARES_SUCCESS) {
- goto done;
- }
-
- /* Acquire a socket. */
- conn->fd = ares__open_socket(channel, server->addr.family, stype, 0);
- if (conn->fd == ARES_SOCKET_BAD) {
- status = ARES_ECONNREFUSED;
- goto done;
- }
-
- /* Configure it. */
- status = configure_socket(conn);
- if (status != ARES_SUCCESS) {
- goto done;
- }
-
- if (channel->sock_config_cb) {
- int err =
- channel->sock_config_cb(conn->fd, stype, channel->sock_config_cb_data);
- if (err < 0) {
- status = ARES_ECONNREFUSED;
- goto done;
- }
- }
-
- /* Connect */
- status = ares__conn_connect(conn, sa, salen);
- if (status != ARES_SUCCESS) {
- goto done;
- }
-
- if (channel->sock_create_cb) {
- int err =
- channel->sock_create_cb(conn->fd, stype, channel->sock_create_cb_data);
- if (err < 0) {
- status = ARES_ECONNREFUSED;
- goto done;
- }
- }
-
- /* Let the connection know we haven't written our first packet yet for TFO */
- if (conn->flags & ARES_CONN_FLAG_TFO) {
- conn->flags |= ARES_CONN_FLAG_TFO_INITIAL;
- }
-
- /* Need to store our own ip for DNS cookie support */
- status = ares_conn_set_self_ip(conn, ARES_FALSE);
- if (status != ARES_SUCCESS) {
- goto done; /* LCOV_EXCL_LINE: UntestablePath */
- }
-
- /* TCP connections are thrown to the end as we don't spawn multiple TCP
- * connections. UDP connections are put on front where the newest connection
- * can be quickly pulled */
- if (is_tcp) {
- node = ares__llist_insert_last(server->connections, conn);
- } else {
- node = ares__llist_insert_first(server->connections, conn);
- }
- if (node == NULL) {
- /* LCOV_EXCL_START: OutOfMemory */
- status = ARES_ENOMEM;
- goto done;
- /* LCOV_EXCL_STOP */
- }
-
- /* Register globally to quickly map event on file descriptor to connection
- * node object */
- if (!ares__htable_asvp_insert(channel->connnode_by_socket, conn->fd, node)) {
- /* LCOV_EXCL_START: OutOfMemory */
- status = ARES_ENOMEM;
- goto done;
- /* LCOV_EXCL_STOP */
- }
-
- SOCK_STATE_CALLBACK(channel, conn->fd, 1, is_tcp ? 1 : 0);
-
- if (is_tcp) {
- server->tcp_conn = conn;
- }
-
-done:
- if (status != ARES_SUCCESS) {
- ares__llist_node_claim(node);
- ares__llist_destroy(conn->queries_to_conn);
- ares__close_socket(channel, conn->fd);
- ares_free(conn);
- } else {
- *conn_out = conn;
- }
- return status;
-}
-
-ares_socket_t ares__open_socket(ares_channel_t *channel, int af, int type,
- int protocol)
-{
- if (channel->sock_funcs && channel->sock_funcs->asocket) {
- return channel->sock_funcs->asocket(af, type, protocol,
- channel->sock_func_cb_data);
- }
-
- return socket(af, type, protocol);
-}
-
-ares_status_t ares__connect_socket(ares_channel_t *channel,
- ares_socket_t sockfd,
- const struct sockaddr *addr,
- ares_socklen_t addrlen)
-{
- int rv;
- int err;
-
- do {
- if (channel->sock_funcs && channel->sock_funcs->aconnect) {
- rv = channel->sock_funcs->aconnect(sockfd, addr, addrlen,
- channel->sock_func_cb_data);
- } else {
- rv = connect(sockfd, addr, addrlen);
- }
-
- err = SOCKERRNO;
-
- if (rv == -1 && err != EINPROGRESS && err != EWOULDBLOCK) {
- return ARES_ECONNREFUSED;
- }
-
- } while (rv == -1 && err == EINTR);
-
- return ARES_SUCCESS;
-}
-
-void ares__close_socket(ares_channel_t *channel, ares_socket_t s)
-{
- if (s == ARES_SOCKET_BAD) {
- return;
- }
-
- if (channel->sock_funcs && channel->sock_funcs->aclose) {
- channel->sock_funcs->aclose(s, channel->sock_func_cb_data);
- } else {
- sclose(s);
- }
-}
-
-void ares_set_socket_callback(ares_channel_t *channel,
- ares_sock_create_callback cb, void *data)
-{
- if (channel == NULL) {
- return;
- }
- channel->sock_create_cb = cb;
- channel->sock_create_cb_data = data;
-}
-
-void ares_set_socket_configure_callback(ares_channel_t *channel,
- ares_sock_config_callback cb,
- void *data)
-{
- if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
- return;
- }
- channel->sock_config_cb = cb;
- channel->sock_config_cb_data = data;
-}
-
-void ares_set_socket_functions(ares_channel_t *channel,
- const struct ares_socket_functions *funcs,
- void *data)
-{
- if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
- return;
- }
- channel->sock_funcs = funcs;
- channel->sock_func_cb_data = data;
-}
diff --git a/contrib/libs/c-ares/src/lib/ares__addrinfo2hostent.c b/contrib/libs/c-ares/src/lib/ares_addrinfo2hostent.c
index f7b6d1edd2..2bbc791157 100644
--- a/contrib/libs/c-ares/src/lib/ares__addrinfo2hostent.c
+++ b/contrib/libs/c-ares/src/lib/ares_addrinfo2hostent.c
@@ -48,8 +48,8 @@
#endif
-ares_status_t 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_cname *next_cname;
@@ -196,11 +196,11 @@ enomem:
/* LCOV_EXCL_STOP */
}
-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_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_cname *next_cname;
diff --git a/contrib/libs/c-ares/src/lib/ares__addrinfo_localhost.c b/contrib/libs/c-ares/src/lib/ares_addrinfo_localhost.c
index e98dd4e277..6f4f2a373b 100644
--- a/contrib/libs/c-ares/src/lib/ares__addrinfo_localhost.c
+++ b/contrib/libs/c-ares/src/lib/ares_addrinfo_localhost.c
@@ -55,7 +55,7 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port,
{
struct ares_addrinfo_node *node;
- node = ares__append_addrinfo_node(nodes);
+ node = ares_append_addrinfo_node(nodes);
if (!node) {
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -102,8 +102,8 @@ ares_status_t ares_append_ai_node(int aftype, unsigned short port,
}
static ares_status_t
- ares__default_loopback_addrs(int aftype, unsigned short port,
- struct ares_addrinfo_node **nodes)
+ ares_default_loopback_addrs(int aftype, unsigned short port,
+ struct ares_addrinfo_node **nodes)
{
ares_status_t status = ARES_SUCCESS;
@@ -129,8 +129,8 @@ static ares_status_t
}
static ares_status_t
- ares__system_loopback_addrs(int aftype, unsigned short port,
- struct ares_addrinfo_node **nodes)
+ ares_system_loopback_addrs(int aftype, unsigned short port,
+ struct ares_addrinfo_node **nodes)
{
#if defined(USE_WINSOCK) && defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0600 && \
!defined(__WATCOMC__)
@@ -176,7 +176,7 @@ fail:
FreeMibTable(table);
if (status != ARES_SUCCESS) {
- ares__freeaddrinfo_nodes(*nodes);
+ ares_freeaddrinfo_nodes(*nodes);
*nodes = NULL;
}
@@ -191,9 +191,9 @@ fail:
#endif
}
-ares_status_t 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;
ares_status_t status;
@@ -213,19 +213,19 @@ ares_status_t ares__addrinfo_localhost(const char *name, unsigned short port,
goto enomem; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__system_loopback_addrs(hints->ai_family, port, &nodes);
+ status = ares_system_loopback_addrs(hints->ai_family, port, &nodes);
if (status == ARES_ENOTFOUND) {
- status = ares__default_loopback_addrs(hints->ai_family, port, &nodes);
+ status = ares_default_loopback_addrs(hints->ai_family, port, &nodes);
}
- ares__addrinfo_cat_nodes(&ai->nodes, nodes);
+ ares_addrinfo_cat_nodes(&ai->nodes, nodes);
return status;
/* LCOV_EXCL_START: OutOfMemory */
enomem:
- ares__freeaddrinfo_nodes(nodes);
+ ares_freeaddrinfo_nodes(nodes);
ares_free(ai->name);
ai->name = NULL;
return ARES_ENOMEM;
diff --git a/contrib/libs/c-ares/src/lib/ares_android.c b/contrib/libs/c-ares/src/lib/ares_android.c
index 06ab8940ad..a8284c1e50 100644
--- a/contrib/libs/c-ares/src/lib/ares_android.c
+++ b/contrib/libs/c-ares/src/lib/ares_android.c
@@ -84,9 +84,9 @@ static jmethodID jni_get_method_id(JNIEnv *env, jclass cls,
static int jvm_attach(JNIEnv **env)
{
- char name[17] = {0};
+ char name[17] = { 0 };
- JavaVMAttachArgs args;
+ JavaVMAttachArgs args;
args.version = JNI_VERSION_1_6;
if (prctl(PR_GET_NAME, name) == 0) {
@@ -94,7 +94,7 @@ static int jvm_attach(JNIEnv **env)
} else {
args.name = NULL;
}
- args.group = NULL;
+ args.group = NULL;
return (*android_jvm)->AttachCurrentThread(android_jvm, env, &args);
}
diff --git a/contrib/libs/c-ares/src/lib/ares_cancel.c b/contrib/libs/c-ares/src/lib/ares_cancel.c
index c29d8ef82f..75600dea6b 100644
--- a/contrib/libs/c-ares/src/lib/ares_cancel.c
+++ b/contrib/libs/c-ares/src/lib/ares_cancel.c
@@ -37,18 +37,18 @@ void ares_cancel(ares_channel_t *channel)
return;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- if (ares__llist_len(channel->all_queries) > 0) {
- ares__llist_node_t *node = NULL;
- ares__llist_node_t *next = NULL;
+ if (ares_llist_len(channel->all_queries) > 0) {
+ ares_llist_node_t *node = NULL;
+ ares_llist_node_t *next = NULL;
/* Swap list heads, so that only those queries which were present on entry
* into this function are cancelled. New queries added by callbacks of
* queries being cancelled will not be cancelled themselves.
*/
- 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 */
@@ -57,31 +57,31 @@ void ares_cancel(ares_channel_t *channel)
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- node = ares__llist_node_first(list_copy);
+ node = ares_llist_node_first(list_copy);
while (node != NULL) {
ares_query_t *query;
/* Cache next since this node is being deleted */
- next = ares__llist_node_next(node);
+ next = ares_llist_node_next(node);
- query = ares__llist_node_claim(node);
+ query = ares_llist_node_claim(node);
query->node_all_queries = NULL;
/* NOTE: its possible this may enqueue new queries */
query->callback(query->arg, ARES_ECANCELLED, 0, NULL);
- ares__free_query(query);
+ ares_free_query(query);
node = next;
}
- ares__llist_destroy(list_copy);
+ ares_llist_destroy(list_copy);
}
/* See if the connections should be cleaned up */
- ares__check_cleanup_conns(channel);
+ ares_check_cleanup_conns(channel);
ares_queue_notify_empty(channel);
done:
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
}
diff --git a/contrib/libs/c-ares/src/lib/ares__close_sockets.c b/contrib/libs/c-ares/src/lib/ares_close_sockets.c
index 71c7e64f08..fd3bf3c4b1 100644
--- a/contrib/libs/c-ares/src/lib/ares__close_sockets.c
+++ b/contrib/libs/c-ares/src/lib/ares_close_sockets.c
@@ -28,81 +28,82 @@
#include "ares_private.h"
#include <assert.h>
-static void ares__requeue_queries(ares_conn_t *conn,
- ares_status_t requeue_status)
+static void ares_requeue_queries(ares_conn_t *conn,
+ ares_status_t requeue_status)
{
ares_query_t *query;
ares_timeval_t now;
- ares__tvnow(&now);
+ ares_tvnow(&now);
- while ((query = ares__llist_first_val(conn->queries_to_conn)) != NULL) {
- ares__requeue_query(query, &now, requeue_status, ARES_TRUE, NULL);
+ while ((query = ares_llist_first_val(conn->queries_to_conn)) != NULL) {
+ ares_requeue_query(query, &now, requeue_status, ARES_TRUE, NULL);
}
}
-void ares__close_connection(ares_conn_t *conn, ares_status_t requeue_status)
+void ares_close_connection(ares_conn_t *conn, ares_status_t requeue_status)
{
ares_server_t *server = conn->server;
ares_channel_t *channel = server->channel;
/* Unlink */
- ares__llist_node_claim(
- ares__htable_asvp_get_direct(channel->connnode_by_socket, conn->fd));
- ares__htable_asvp_remove(channel->connnode_by_socket, conn->fd);
+ ares_llist_node_claim(
+ ares_htable_asvp_get_direct(channel->connnode_by_socket, conn->fd));
+ ares_htable_asvp_remove(channel->connnode_by_socket, conn->fd);
if (conn->flags & ARES_CONN_FLAG_TCP) {
- /* Reset any existing input and output buffer. */
- 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_conn = NULL;
}
+ ares_buf_destroy(conn->in_buf);
+ ares_buf_destroy(conn->out_buf);
+
/* Requeue queries to other connections */
- ares__requeue_queries(conn, requeue_status);
+ ares_requeue_queries(conn, requeue_status);
+
+ ares_llist_destroy(conn->queries_to_conn);
- ares__llist_destroy(conn->queries_to_conn);
+ ares_conn_sock_state_cb_update(conn, ARES_CONN_STATE_NONE);
- SOCK_STATE_CALLBACK(channel, conn->fd, 0, 0);
- ares__close_socket(channel, conn->fd);
+ ares_socket_close(channel, conn->fd);
ares_free(conn);
}
-void ares__close_sockets(ares_server_t *server)
+void ares_close_sockets(ares_server_t *server)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
- while ((node = ares__llist_node_first(server->connections)) != NULL) {
- ares_conn_t *conn = ares__llist_node_val(node);
- ares__close_connection(conn, ARES_SUCCESS);
+ while ((node = ares_llist_node_first(server->connections)) != NULL) {
+ ares_conn_t *conn = ares_llist_node_val(node);
+ ares_close_connection(conn, ARES_SUCCESS);
}
}
-void ares__check_cleanup_conns(const ares_channel_t *channel)
+void ares_check_cleanup_conns(const ares_channel_t *channel)
{
- ares__slist_node_t *snode;
+ ares_slist_node_t *snode;
if (channel == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
/* Iterate across each server */
- for (snode = ares__slist_node_first(channel->servers); snode != NULL;
- snode = ares__slist_node_next(snode)) {
- ares_server_t *server = ares__slist_node_val(snode);
- ares__llist_node_t *cnode;
+ for (snode = ares_slist_node_first(channel->servers); snode != NULL;
+ snode = ares_slist_node_next(snode)) {
+ ares_server_t *server = ares_slist_node_val(snode);
+ ares_llist_node_t *cnode;
/* Iterate across each connection */
- cnode = ares__llist_node_first(server->connections);
+ cnode = ares_llist_node_first(server->connections);
while (cnode != NULL) {
- ares__llist_node_t *next = ares__llist_node_next(cnode);
- ares_conn_t *conn = ares__llist_node_val(cnode);
- ares_bool_t do_cleanup = ARES_FALSE;
- cnode = next;
+ ares_llist_node_t *next = ares_llist_node_next(cnode);
+ ares_conn_t *conn = ares_llist_node_val(cnode);
+ ares_bool_t do_cleanup = ARES_FALSE;
+ cnode = next;
/* Has connections, not eligible */
- if (ares__llist_len(conn->queries_to_conn)) {
+ if (ares_llist_len(conn->queries_to_conn)) {
continue;
}
@@ -130,7 +131,7 @@ void ares__check_cleanup_conns(const ares_channel_t *channel)
}
/* Clean it up */
- ares__close_connection(conn, ARES_SUCCESS);
+ ares_close_connection(conn, ARES_SUCCESS);
}
}
}
diff --git a/contrib/libs/c-ares/src/lib/ares_config-linux.h b/contrib/libs/c-ares/src/lib/ares_config-linux.h
index d18434ea63..49e41d4f6e 100644
--- a/contrib/libs/c-ares/src/lib/ares_config-linux.h
+++ b/contrib/libs/c-ares/src/lib/ares_config-linux.h
@@ -82,6 +82,9 @@
/* Define to 1 if you have the <poll.h> header file. */
#define HAVE_POLL_H 1
+/* Define to 1 if you have the memmem function. */
+#define HAVE_MEMMEM 1
+
/* Define to 1 if you have the poll function. */
#define HAVE_POLL 1
@@ -242,6 +245,9 @@
/* Define to 1 if you have the send function. */
#define HAVE_SEND 1
+/* Define to 1 if you have the sendto function. */
+#define HAVE_SENDTO 1
+
/* Define to 1 if you have the setsockopt function. */
#define HAVE_SETSOCKOPT 1
diff --git a/contrib/libs/c-ares/src/lib/ares_conn.c b/contrib/libs/c-ares/src/lib/ares_conn.c
new file mode 100644
index 0000000000..6b315b0548
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/ares_conn.c
@@ -0,0 +1,511 @@
+/* MIT License
+ *
+ * Copyright (c) Massachusetts Institute of Technology
+ * Copyright (c) The c-ares project and its contributors
+ *
+ * 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_private.h"
+
+void ares_conn_sock_state_cb_update(ares_conn_t *conn,
+ ares_conn_state_flags_t flags)
+{
+ ares_channel_t *channel = conn->server->channel;
+
+ if ((conn->state_flags & ARES_CONN_STATE_CBFLAGS) != flags &&
+ channel->sock_state_cb) {
+ channel->sock_state_cb(channel->sock_state_cb_data, conn->fd,
+ flags & ARES_CONN_STATE_READ ? 1 : 0,
+ flags & ARES_CONN_STATE_WRITE ? 1 : 0);
+ }
+
+ conn->state_flags &= ~((unsigned int)ARES_CONN_STATE_CBFLAGS);
+ conn->state_flags |= flags;
+}
+
+ares_conn_err_t ares_conn_read(ares_conn_t *conn, void *data, size_t len,
+ size_t *read_bytes)
+{
+ ares_channel_t *channel = conn->server->channel;
+ ares_conn_err_t err;
+
+ if (!(conn->flags & ARES_CONN_FLAG_TCP)) {
+ struct sockaddr_storage sa_storage;
+ ares_socklen_t salen = sizeof(sa_storage);
+
+ memset(&sa_storage, 0, sizeof(sa_storage));
+
+ err =
+ ares_socket_recvfrom(channel, conn->fd, ARES_FALSE, data, len, 0,
+ (struct sockaddr *)&sa_storage, &salen, read_bytes);
+
+#ifdef HAVE_RECVFROM
+ if (err == ARES_CONN_ERR_SUCCESS &&
+ !ares_sockaddr_addr_eq((struct sockaddr *)&sa_storage,
+ &conn->server->addr)) {
+ err = ARES_CONN_ERR_WOULDBLOCK;
+ }
+#endif
+ } else {
+ err = ares_socket_recv(channel, conn->fd, ARES_TRUE, data, len, read_bytes);
+ }
+
+ /* Toggle connected state if needed */
+ if (err == ARES_CONN_ERR_SUCCESS) {
+ conn->state_flags |= ARES_CONN_STATE_CONNECTED;
+ }
+
+ return err;
+}
+
+/* Use like:
+ * struct sockaddr_storage sa_storage;
+ * ares_socklen_t salen = sizeof(sa_storage);
+ * struct sockaddr *sa = (struct sockaddr *)&sa_storage;
+ * ares_conn_set_sockaddr(conn, sa, &salen);
+ */
+static ares_status_t ares_conn_set_sockaddr(const ares_conn_t *conn,
+ struct sockaddr *sa,
+ ares_socklen_t *salen)
+{
+ const ares_server_t *server = conn->server;
+ unsigned short port =
+ conn->flags & ARES_CONN_FLAG_TCP ? server->tcp_port : server->udp_port;
+ struct sockaddr_in *sin;
+ struct sockaddr_in6 *sin6;
+
+ switch (server->addr.family) {
+ case AF_INET:
+ sin = (struct sockaddr_in *)(void *)sa;
+ if (*salen < (ares_socklen_t)sizeof(*sin)) {
+ return ARES_EFORMERR;
+ }
+ *salen = sizeof(*sin);
+ memset(sin, 0, sizeof(*sin));
+ sin->sin_family = AF_INET;
+ sin->sin_port = htons(port);
+ memcpy(&sin->sin_addr, &server->addr.addr.addr4, sizeof(sin->sin_addr));
+ return ARES_SUCCESS;
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *)(void *)sa;
+ if (*salen < (ares_socklen_t)sizeof(*sin6)) {
+ return ARES_EFORMERR;
+ }
+ *salen = sizeof(*sin6);
+ memset(sin6, 0, sizeof(*sin6));
+ sin6->sin6_family = AF_INET6;
+ sin6->sin6_port = htons(port);
+ memcpy(&sin6->sin6_addr, &server->addr.addr.addr6,
+ sizeof(sin6->sin6_addr));
+#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
+ sin6->sin6_scope_id = server->ll_scope;
+#endif
+ return ARES_SUCCESS;
+ default:
+ break;
+ }
+
+ return ARES_EBADFAMILY;
+}
+
+static ares_status_t ares_conn_set_self_ip(ares_conn_t *conn, ares_bool_t early)
+{
+ ares_channel_t *channel = conn->server->channel;
+ struct sockaddr_storage sa_storage;
+ int rv;
+ ares_socklen_t len = sizeof(sa_storage);
+
+ /* We call this twice on TFO, if we already have the IP we can go ahead and
+ * skip processing */
+ if (!early && conn->self_ip.family != AF_UNSPEC) {
+ return ARES_SUCCESS;
+ }
+
+ memset(&sa_storage, 0, sizeof(sa_storage));
+
+ if (channel->sock_funcs.agetsockname == NULL) {
+ /* Not specified, we can still use cookies cooked with an empty self_ip */
+ memset(&conn->self_ip, 0, sizeof(conn->self_ip));
+ return ARES_SUCCESS;
+ }
+ rv = channel->sock_funcs.agetsockname(conn->fd,
+ (struct sockaddr *)(void *)&sa_storage,
+ &len, channel->sock_func_cb_data);
+ if (rv != 0) {
+ /* During TCP FastOpen, we can't get the IP this early since connect()
+ * may not be called. That's ok, we'll try again later */
+ if (early && conn->flags & ARES_CONN_FLAG_TCP &&
+ conn->flags & ARES_CONN_FLAG_TFO) {
+ memset(&conn->self_ip, 0, sizeof(conn->self_ip));
+ return ARES_SUCCESS;
+ }
+ return ARES_ECONNREFUSED;
+ }
+
+ if (!ares_sockaddr_to_ares_addr(&conn->self_ip, NULL,
+ (struct sockaddr *)(void *)&sa_storage)) {
+ return ARES_ECONNREFUSED;
+ }
+
+ return ARES_SUCCESS;
+}
+
+ares_conn_err_t ares_conn_write(ares_conn_t *conn, const void *data, size_t len,
+ size_t *written)
+{
+ ares_channel_t *channel = conn->server->channel;
+ ares_bool_t is_tfo = ARES_FALSE;
+ ares_conn_err_t err = ARES_CONN_ERR_SUCCESS;
+ struct sockaddr_storage sa_storage;
+ ares_socklen_t salen = 0;
+ struct sockaddr *sa = NULL;
+
+ *written = 0;
+
+ /* Don't try to write if not doing initial TFO and not connected */
+ if (conn->flags & ARES_CONN_FLAG_TCP &&
+ !(conn->state_flags & ARES_CONN_STATE_CONNECTED) &&
+ !(conn->flags & ARES_CONN_FLAG_TFO_INITIAL)) {
+ return ARES_CONN_ERR_WOULDBLOCK;
+ }
+
+ /* On initial write during TFO we need to send an address */
+ if (conn->flags & ARES_CONN_FLAG_TFO_INITIAL) {
+ salen = sizeof(sa_storage);
+ sa = (struct sockaddr *)&sa_storage;
+
+ conn->flags &= ~((unsigned int)ARES_CONN_FLAG_TFO_INITIAL);
+ is_tfo = ARES_TRUE;
+
+ if (ares_conn_set_sockaddr(conn, sa, &salen) != ARES_SUCCESS) {
+ return ARES_CONN_ERR_FAILURE;
+ }
+ }
+
+ err = ares_socket_write(channel, conn->fd, data, len, written, sa, salen);
+ if (err != ARES_CONN_ERR_SUCCESS) {
+ goto done;
+ }
+
+ if (is_tfo) {
+ /* If using TFO, we might not have been able to get an IP earlier, since
+ * we hadn't informed the OS of the destination. When using sendto()
+ * now we have so we should be able to fetch it */
+ ares_conn_set_self_ip(conn, ARES_FALSE);
+ goto done;
+ }
+
+done:
+ if (err == ARES_CONN_ERR_SUCCESS && len == *written) {
+ /* Wrote all data, make sure we're not listening for write events unless
+ * using TFO, in which case we'll need a write event to know when
+ * we're connected. */
+ ares_conn_sock_state_cb_update(
+ conn, ARES_CONN_STATE_READ |
+ (is_tfo ? ARES_CONN_STATE_WRITE : ARES_CONN_STATE_NONE));
+ } else if (err == ARES_CONN_ERR_WOULDBLOCK) {
+ /* Need to wait on more buffer space to write */
+ ares_conn_sock_state_cb_update(conn, ARES_CONN_STATE_READ |
+ ARES_CONN_STATE_WRITE);
+ }
+
+ return err;
+}
+
+ares_status_t ares_conn_flush(ares_conn_t *conn)
+{
+ const unsigned char *data;
+ size_t data_len;
+ size_t count;
+ ares_conn_err_t err;
+ ares_status_t status;
+ ares_bool_t tfo = ARES_FALSE;
+
+ if (conn == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (conn->flags & ARES_CONN_FLAG_TFO_INITIAL) {
+ tfo = ARES_TRUE;
+ }
+
+ do {
+ if (ares_buf_len(conn->out_buf) == 0) {
+ status = ARES_SUCCESS;
+ goto done;
+ }
+
+ if (conn->flags & ARES_CONN_FLAG_TCP) {
+ data = ares_buf_peek(conn->out_buf, &data_len);
+ } else {
+ unsigned short msg_len;
+
+ /* Read length, then provide buffer without length */
+ ares_buf_tag(conn->out_buf);
+ status = ares_buf_fetch_be16(conn->out_buf, &msg_len);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ ares_buf_tag_rollback(conn->out_buf);
+
+ data = ares_buf_peek(conn->out_buf, &data_len);
+ if (data_len < (size_t)(msg_len + 2)) {
+ status = ARES_EFORMERR;
+ goto done;
+ }
+ data += 2;
+ data_len = msg_len;
+ }
+
+ err = ares_conn_write(conn, data, data_len, &count);
+ if (err != ARES_CONN_ERR_SUCCESS) {
+ if (err != ARES_CONN_ERR_WOULDBLOCK) {
+ status = ARES_ECONNREFUSED;
+ goto done;
+ }
+ status = ARES_SUCCESS;
+ goto done;
+ }
+
+ /* UDP didn't send the length prefix so augment that here */
+ if (!(conn->flags & ARES_CONN_FLAG_TCP)) {
+ count += 2;
+ }
+
+ /* Strip data written from the buffer */
+ ares_buf_consume(conn->out_buf, count);
+ status = ARES_SUCCESS;
+
+ /* Loop only for UDP since we have to send per-packet. We already
+ * sent everything we could if using tcp */
+ } while (!(conn->flags & ARES_CONN_FLAG_TCP));
+
+done:
+ if (status == ARES_SUCCESS) {
+ ares_conn_state_flags_t flags = ARES_CONN_STATE_READ;
+
+ /* When using TFO, the we need to enabling waiting on a write event to
+ * be notified of when a connection is actually established */
+ if (tfo) {
+ flags |= ARES_CONN_STATE_WRITE;
+ }
+
+ /* If using TCP and not all data was written (partial write), that means
+ * we need to also wait on a write event */
+ if (conn->flags & ARES_CONN_FLAG_TCP && ares_buf_len(conn->out_buf)) {
+ flags |= ARES_CONN_STATE_WRITE;
+ }
+
+ ares_conn_sock_state_cb_update(conn, flags);
+ }
+
+ return status;
+}
+
+static ares_status_t ares_conn_connect(ares_conn_t *conn,
+ const struct sockaddr *sa,
+ ares_socklen_t salen)
+{
+ ares_conn_err_t err;
+
+ err = ares_socket_connect(
+ conn->server->channel, conn->fd,
+ (conn->flags & ARES_CONN_FLAG_TFO) ? ARES_TRUE : ARES_FALSE, sa, salen);
+
+ if (err != ARES_CONN_ERR_WOULDBLOCK && err != ARES_CONN_ERR_SUCCESS) {
+ return ARES_ECONNREFUSED;
+ }
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_open_connection(ares_conn_t **conn_out,
+ ares_channel_t *channel,
+ ares_server_t *server, ares_bool_t is_tcp)
+{
+ ares_status_t status;
+ struct sockaddr_storage sa_storage;
+ ares_socklen_t salen = sizeof(sa_storage);
+ struct sockaddr *sa = (struct sockaddr *)&sa_storage;
+ ares_conn_t *conn;
+ ares_llist_node_t *node = NULL;
+ int stype = is_tcp ? SOCK_STREAM : SOCK_DGRAM;
+ ares_conn_state_flags_t state_flags;
+
+ *conn_out = NULL;
+
+ conn = ares_malloc(sizeof(*conn));
+ if (conn == NULL) {
+ return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+
+ memset(conn, 0, sizeof(*conn));
+ conn->fd = ARES_SOCKET_BAD;
+ conn->server = server;
+ conn->queries_to_conn = ares_llist_create(NULL);
+ conn->flags = is_tcp ? ARES_CONN_FLAG_TCP : ARES_CONN_FLAG_NONE;
+ conn->out_buf = ares_buf_create();
+ conn->in_buf = ares_buf_create();
+
+ if (conn->queries_to_conn == NULL || conn->out_buf == NULL ||
+ conn->in_buf == NULL) {
+ /* LCOV_EXCL_START: OutOfMemory */
+ status = ARES_ENOMEM;
+ goto done;
+ /* LCOV_EXCL_STOP */
+ }
+
+ /* Try to enable TFO always if using TCP. it will fail later on if its
+ * really not supported when we try to enable it on the socket. */
+ if (conn->flags & ARES_CONN_FLAG_TCP) {
+ conn->flags |= ARES_CONN_FLAG_TFO;
+ }
+
+ /* Convert into the struct sockaddr structure needed by the OS */
+ status = ares_conn_set_sockaddr(conn, sa, &salen);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ /* Acquire a socket. */
+ if (ares_socket_open(&conn->fd, channel, server->addr.family, stype, 0) !=
+ ARES_CONN_ERR_SUCCESS) {
+ status = ARES_ECONNREFUSED;
+ goto done;
+ }
+
+ /* Configure channel configured options */
+ status = ares_socket_configure(
+ channel, server->addr.family,
+ (conn->flags & ARES_CONN_FLAG_TCP) ? ARES_TRUE : ARES_FALSE, conn->fd);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ /* Enable TFO if possible */
+ if (conn->flags & ARES_CONN_FLAG_TFO &&
+ ares_socket_enable_tfo(channel, conn->fd) != ARES_CONN_ERR_SUCCESS) {
+ conn->flags &= ~((unsigned int)ARES_CONN_FLAG_TFO);
+ }
+
+ if (channel->sock_config_cb) {
+ int err =
+ channel->sock_config_cb(conn->fd, stype, channel->sock_config_cb_data);
+ if (err < 0) {
+ status = ARES_ECONNREFUSED;
+ goto done;
+ }
+ }
+
+ /* Connect */
+ status = ares_conn_connect(conn, sa, salen);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ if (channel->sock_create_cb) {
+ int err =
+ channel->sock_create_cb(conn->fd, stype, channel->sock_create_cb_data);
+ if (err < 0) {
+ status = ARES_ECONNREFUSED;
+ goto done;
+ }
+ }
+
+ /* Let the connection know we haven't written our first packet yet for TFO */
+ if (conn->flags & ARES_CONN_FLAG_TFO) {
+ conn->flags |= ARES_CONN_FLAG_TFO_INITIAL;
+ }
+
+ /* Need to store our own ip for DNS cookie support */
+ status = ares_conn_set_self_ip(conn, ARES_TRUE);
+ if (status != ARES_SUCCESS) {
+ goto done; /* LCOV_EXCL_LINE: UntestablePath */
+ }
+
+ /* TCP connections are thrown to the end as we don't spawn multiple TCP
+ * connections. UDP connections are put on front where the newest connection
+ * can be quickly pulled */
+ if (is_tcp) {
+ node = ares_llist_insert_last(server->connections, conn);
+ } else {
+ node = ares_llist_insert_first(server->connections, conn);
+ }
+ if (node == NULL) {
+ /* LCOV_EXCL_START: OutOfMemory */
+ status = ARES_ENOMEM;
+ goto done;
+ /* LCOV_EXCL_STOP */
+ }
+
+ /* Register globally to quickly map event on file descriptor to connection
+ * node object */
+ if (!ares_htable_asvp_insert(channel->connnode_by_socket, conn->fd, node)) {
+ /* LCOV_EXCL_START: OutOfMemory */
+ status = ARES_ENOMEM;
+ goto done;
+ /* LCOV_EXCL_STOP */
+ }
+
+ state_flags = ARES_CONN_STATE_READ;
+
+ /* Get notified on connect if using TCP */
+ if (conn->flags & ARES_CONN_FLAG_TCP) {
+ state_flags |= ARES_CONN_STATE_WRITE;
+ }
+
+ /* Dot no attempt to update sock state callbacks on TFO until *after* the
+ * initial write is performed. Due to the notification event, its possible
+ * an erroneous read can come in before the attempt to write the data which
+ * might be used to set the ip address */
+ if (!(conn->flags & ARES_CONN_FLAG_TFO_INITIAL)) {
+ ares_conn_sock_state_cb_update(conn, state_flags);
+ }
+
+ if (is_tcp) {
+ server->tcp_conn = conn;
+ }
+
+done:
+ if (status != ARES_SUCCESS) {
+ ares_llist_node_claim(node);
+ ares_llist_destroy(conn->queries_to_conn);
+ ares_socket_close(channel, conn->fd);
+ ares_buf_destroy(conn->out_buf);
+ ares_buf_destroy(conn->in_buf);
+ ares_free(conn);
+ } else {
+ *conn_out = conn;
+ }
+ return status;
+}
+
+ares_conn_t *ares_conn_from_fd(const ares_channel_t *channel, ares_socket_t fd)
+{
+ ares_llist_node_t *node;
+
+ node = ares_htable_asvp_get_direct(channel->connnode_by_socket, fd);
+ if (node == NULL) {
+ return NULL;
+ }
+
+ return ares_llist_node_val(node);
+}
diff --git a/contrib/libs/c-ares/src/lib/ares_conn.h b/contrib/libs/c-ares/src/lib/ares_conn.h
new file mode 100644
index 0000000000..16ecefdd19
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/ares_conn.h
@@ -0,0 +1,196 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_CONN_H
+#define __ARES_CONN_H
+
+#include "ares_socket.h"
+
+struct ares_conn;
+typedef struct ares_conn ares_conn_t;
+
+struct ares_server;
+typedef struct ares_server ares_server_t;
+
+typedef enum {
+ /*! No flags */
+ ARES_CONN_FLAG_NONE = 0,
+ /*! TCP connection, not UDP */
+ ARES_CONN_FLAG_TCP = 1 << 0,
+ /*! TCP Fast Open is enabled and being used if supported by the OS */
+ ARES_CONN_FLAG_TFO = 1 << 1,
+ /*! TCP Fast Open has not yet sent its first packet. Gets unset on first
+ * write to a connection */
+ ARES_CONN_FLAG_TFO_INITIAL = 1 << 2
+} ares_conn_flags_t;
+
+typedef enum {
+ ARES_CONN_STATE_NONE = 0,
+ ARES_CONN_STATE_READ = 1 << 0,
+ ARES_CONN_STATE_WRITE = 1 << 1,
+ ARES_CONN_STATE_CONNECTED = 1 << 2, /* This doesn't get a callback */
+ ARES_CONN_STATE_CBFLAGS = ARES_CONN_STATE_READ | ARES_CONN_STATE_WRITE
+} ares_conn_state_flags_t;
+
+struct ares_conn {
+ ares_server_t *server;
+ ares_socket_t fd;
+ struct ares_addr self_ip;
+ ares_conn_flags_t flags;
+ ares_conn_state_flags_t state_flags;
+
+ /*! Outbound buffered data that is not yet sent. Exists as one contiguous
+ * stream in TCP format (big endian 16bit length prefix followed by DNS
+ * wire-format message). For TCP this can be sent as-is, UDP this must
+ * be sent per-packet (stripping the length prefix) */
+ ares_buf_t *out_buf;
+
+ /*! Inbound buffered data that is not yet parsed. Exists as one contiguous
+ * stream in TCP format (big endian 16bit length prefix followed by DNS
+ * wire-format message). TCP may have partial data and this needs to be
+ * handled gracefully, but UDP will always have a full message */
+ ares_buf_t *in_buf;
+
+ /* total number of queries run on this connection since it was established */
+ size_t total_queries;
+
+ /* list of outstanding queries to this connection */
+ ares_llist_t *queries_to_conn;
+};
+
+/*! Various buckets for grouping history */
+typedef enum {
+ ARES_METRIC_1MINUTE = 0, /*!< Bucket for tracking over the last minute */
+ ARES_METRIC_15MINUTES, /*!< Bucket for tracking over the last 15 minutes */
+ ARES_METRIC_1HOUR, /*!< Bucket for tracking over the last hour */
+ ARES_METRIC_1DAY, /*!< Bucket for tracking over the last day */
+ ARES_METRIC_INCEPTION, /*!< Bucket for tracking since inception */
+ ARES_METRIC_COUNT /*!< Count of buckets, not a real bucket */
+} ares_server_bucket_t;
+
+/*! Data metrics collected for each bucket */
+typedef struct {
+ time_t ts; /*!< Timestamp divided by bucket divisor */
+ unsigned int latency_min_ms; /*!< Minimum latency for queries */
+ unsigned int latency_max_ms; /*!< Maximum latency for queries */
+ ares_uint64_t total_ms; /*!< Cumulative query time for bucket */
+ ares_uint64_t total_count; /*!< Number of queries for bucket */
+
+ time_t prev_ts; /*!< Previous period bucket timestamp */
+ ares_uint64_t
+ prev_total_ms; /*!< Previous period bucket cumulative query time */
+ ares_uint64_t prev_total_count; /*!< Previous period bucket query count */
+} ares_server_metrics_t;
+
+typedef enum {
+ ARES_COOKIE_INITIAL = 0,
+ ARES_COOKIE_GENERATED = 1,
+ ARES_COOKIE_SUPPORTED = 2,
+ ARES_COOKIE_UNSUPPORTED = 3
+} ares_cookie_state_t;
+
+/*! Structure holding tracking data for RFC 7873/9018 DNS cookies.
+ * Implementation plan for this feature is here:
+ * https://github.com/c-ares/c-ares/issues/620
+ */
+typedef struct {
+ /*! starts at INITIAL, transitions as needed. */
+ ares_cookie_state_t state;
+ /*! randomly-generate client cookie */
+ unsigned char client[8];
+ /*! timestamp client cookie was generated, used for rotation purposes */
+ ares_timeval_t client_ts;
+ /*! IP address last used for client to connect to server. If this changes
+ * The client cookie gets invalidated */
+ struct ares_addr client_ip;
+ /*! Server Cookie last received, 8-32 bytes in length */
+ unsigned char server[32];
+ /*! Length of server cookie on file. */
+ size_t server_len;
+ /*! Timestamp of last attempt to use cookies, but it was determined that the
+ * server didn't support them */
+ ares_timeval_t unsupported_ts;
+} ares_cookie_t;
+
+struct ares_server {
+ /* Configuration */
+ size_t idx; /* index for server in system configuration */
+ struct ares_addr addr;
+ unsigned short udp_port; /* host byte order */
+ unsigned short tcp_port; /* host byte order */
+ char ll_iface[64]; /* IPv6 Link Local Interface */
+ unsigned int ll_scope; /* IPv6 Link Local Scope */
+
+ size_t consec_failures; /* Consecutive query failure count
+ * can be hard errors or timeouts
+ */
+ ares_bool_t probe_pending; /* Whether a probe is pending for this
+ * server due to prior failures */
+ ares_llist_t *connections;
+ ares_conn_t *tcp_conn;
+
+ /* The next time when we will retry this server if it has hit failures */
+ ares_timeval_t next_retry_time;
+
+ /*! Buckets for collecting metrics about the server */
+ ares_server_metrics_t metrics[ARES_METRIC_COUNT];
+
+ /*! RFC 7873/9018 DNS Cookies */
+ ares_cookie_t cookie;
+
+ /* Link back to owning channel */
+ ares_channel_t *channel;
+};
+
+void ares_close_connection(ares_conn_t *conn, ares_status_t requeue_status);
+void ares_close_sockets(ares_server_t *server);
+void ares_check_cleanup_conns(const ares_channel_t *channel);
+
+void ares_destroy_servers_state(ares_channel_t *channel);
+ares_status_t ares_open_connection(ares_conn_t **conn_out,
+ ares_channel_t *channel,
+ ares_server_t *server, ares_bool_t is_tcp);
+
+ares_conn_err_t ares_conn_write(ares_conn_t *conn, const void *data, size_t len,
+ size_t *written);
+ares_status_t ares_conn_flush(ares_conn_t *conn);
+ares_conn_err_t ares_conn_read(ares_conn_t *conn, void *data, size_t len,
+ size_t *read_bytes);
+ares_conn_t *ares_conn_from_fd(const ares_channel_t *channel, ares_socket_t fd);
+void ares_conn_sock_state_cb_update(ares_conn_t *conn,
+ ares_conn_state_flags_t flags);
+ares_conn_err_t ares_socket_recv(ares_channel_t *channel, ares_socket_t s,
+ ares_bool_t is_tcp, void *data,
+ size_t data_len, size_t *read_bytes);
+ares_conn_err_t ares_socket_recvfrom(ares_channel_t *channel, ares_socket_t s,
+ ares_bool_t is_tcp, void *data,
+ size_t data_len, int flags,
+ struct sockaddr *from,
+ ares_socklen_t *from_len,
+ size_t *read_bytes);
+
+void ares_destroy_server(ares_server_t *server);
+
+#endif
diff --git a/contrib/libs/c-ares/src/lib/ares_cookie.c b/contrib/libs/c-ares/src/lib/ares_cookie.c
index bf9d1ba25d..f31c74e748 100644
--- a/contrib/libs/c-ares/src/lib/ares_cookie.c
+++ b/contrib/libs/c-ares/src/lib/ares_cookie.c
@@ -229,7 +229,7 @@ static ares_bool_t timeval_expired(const ares_timeval_t *tv,
{
ares_int64_t tvdiff_ms;
ares_timeval_t tvdiff;
- ares__timeval_diff(&tvdiff, tv, now);
+ ares_timeval_diff(&tvdiff, tv, now);
tvdiff_ms = tvdiff.sec * 1000 + tvdiff.usec / 1000;
if (tvdiff_ms >= (ares_int64_t)millsecs) {
@@ -249,7 +249,7 @@ static void ares_cookie_generate(ares_cookie_t *cookie, ares_conn_t *conn,
{
ares_channel_t *channel = conn->server->channel;
- ares__rand_bytes(channel->rand_state, cookie->client, sizeof(cookie->client));
+ ares_rand_bytes(channel->rand_state, cookie->client, sizeof(cookie->client));
memcpy(&cookie->client_ts, now, sizeof(cookie->client_ts));
memcpy(&cookie->client_ip, &conn->self_ip, sizeof(cookie->client_ip));
}
@@ -426,9 +426,8 @@ ares_status_t ares_cookie_validate(ares_query_t *query,
/* Resend the request, hopefully it will work the next time as we should
* have recorded a server cookie */
- ares__requeue_query(query, now, ARES_SUCCESS,
- ARES_FALSE /* Don't increment try count */,
- NULL);
+ ares_requeue_query(query, now, ARES_SUCCESS,
+ ARES_FALSE /* Don't increment try count */, NULL);
/* Parent needs to drop this response */
return ARES_EBADRESP;
diff --git a/contrib/libs/c-ares/src/lib/ares_destroy.c b/contrib/libs/c-ares/src/lib/ares_destroy.c
index d75b5e227c..1e5706e0e0 100644
--- a/contrib/libs/c-ares/src/lib/ares_destroy.c
+++ b/contrib/libs/c-ares/src/lib/ares_destroy.c
@@ -31,17 +31,17 @@
void ares_destroy(ares_channel_t *channel)
{
- size_t i;
- ares__llist_node_t *node = NULL;
+ size_t i;
+ ares_llist_node_t *node = NULL;
if (channel == NULL) {
return;
}
/* Mark as being shutdown */
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
channel->sys_up = ARES_FALSE;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
/* Disable configuration change monitoring. We can't hold a lock because
* some cleanup routines, such as on Windows, are synchronous operations.
@@ -61,23 +61,23 @@ void ares_destroy(ares_channel_t *channel)
* holding a lock as the thread may take locks. */
if (channel->reinit_thread != NULL) {
void *rv;
- ares__thread_join(channel->reinit_thread, &rv);
+ ares_thread_join(channel->reinit_thread, &rv);
channel->reinit_thread = NULL;
}
/* Lock because callbacks will be triggered, and any system-generated
* callbacks need to hold a channel lock. */
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
/* Destroy all queries */
- node = ares__llist_node_first(channel->all_queries);
+ node = ares_llist_node_first(channel->all_queries);
while (node != NULL) {
- ares__llist_node_t *next = ares__llist_node_next(node);
- ares_query_t *query = ares__llist_node_claim(node);
+ ares_llist_node_t *next = ares_llist_node_next(node);
+ ares_query_t *query = ares_llist_node_claim(node);
query->node_all_queries = NULL;
query->callback(query->arg, ARES_EDESTRUCTION, 0, NULL);
- ares__free_query(query);
+ ares_free_query(query);
node = next;
}
@@ -88,19 +88,19 @@ void ares_destroy(ares_channel_t *channel)
/* Freeing the query should remove it from all the lists in which it sits,
* so all query lists should be empty now.
*/
- assert(ares__llist_len(channel->all_queries) == 0);
- assert(ares__htable_szvp_num_keys(channel->queries_by_qid) == 0);
- assert(ares__slist_len(channel->queries_by_timeout) == 0);
+ assert(ares_llist_len(channel->all_queries) == 0);
+ assert(ares_htable_szvp_num_keys(channel->queries_by_qid) == 0);
+ assert(ares_slist_len(channel->queries_by_timeout) == 0);
#endif
- ares__destroy_servers_state(channel);
+ ares_destroy_servers_state(channel);
#ifndef NDEBUG
- assert(ares__htable_asvp_num_keys(channel->connnode_by_socket) == 0);
+ assert(ares_htable_asvp_num_keys(channel->connnode_by_socket) == 0);
#endif
/* No more callbacks will be triggered after this point, unlock */
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
/* Shut down the event thread */
if (channel->optmask & ARES_OPT_EVENT_THREAD) {
@@ -114,48 +114,46 @@ void ares_destroy(ares_channel_t *channel)
ares_free(channel->domains);
}
- ares__llist_destroy(channel->all_queries);
- ares__slist_destroy(channel->queries_by_timeout);
- ares__htable_szvp_destroy(channel->queries_by_qid);
- ares__htable_asvp_destroy(channel->connnode_by_socket);
+ ares_llist_destroy(channel->all_queries);
+ ares_slist_destroy(channel->queries_by_timeout);
+ ares_htable_szvp_destroy(channel->queries_by_qid);
+ ares_htable_asvp_destroy(channel->connnode_by_socket);
ares_free(channel->sortlist);
ares_free(channel->lookups);
ares_free(channel->resolvconf_path);
ares_free(channel->hosts_path);
- ares__destroy_rand_state(channel->rand_state);
+ ares_destroy_rand_state(channel->rand_state);
- ares__hosts_file_destroy(channel->hf);
+ ares_hosts_file_destroy(channel->hf);
- ares__qcache_destroy(channel->qcache);
+ ares_qcache_destroy(channel->qcache);
- ares__channel_threading_destroy(channel);
+ ares_channel_threading_destroy(channel);
ares_free(channel);
}
-void ares__destroy_server(ares_server_t *server)
+void ares_destroy_server(ares_server_t *server)
{
if (server == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__close_sockets(server);
- ares__llist_destroy(server->connections);
- ares__buf_destroy(server->tcp_parser);
- ares__buf_destroy(server->tcp_send);
+ ares_close_sockets(server);
+ ares_llist_destroy(server->connections);
ares_free(server);
}
-void ares__destroy_servers_state(ares_channel_t *channel)
+void ares_destroy_servers_state(ares_channel_t *channel)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
- while ((node = ares__slist_node_first(channel->servers)) != NULL) {
- ares_server_t *server = ares__slist_node_claim(node);
- ares__destroy_server(server);
+ while ((node = ares_slist_node_first(channel->servers)) != NULL) {
+ ares_server_t *server = ares_slist_node_claim(node);
+ ares_destroy_server(server);
}
- ares__slist_destroy(channel->servers);
+ ares_slist_destroy(channel->servers);
channel->servers = NULL;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_freeaddrinfo.c b/contrib/libs/c-ares/src/lib/ares_freeaddrinfo.c
index 2a49f57531..c996df9104 100644
--- a/contrib/libs/c-ares/src/lib/ares_freeaddrinfo.c
+++ b/contrib/libs/c-ares/src/lib/ares_freeaddrinfo.c
@@ -31,7 +31,7 @@
# include <netdb.h>
#endif
-void ares__freeaddrinfo_cnames(struct ares_addrinfo_cname *head)
+void ares_freeaddrinfo_cnames(struct ares_addrinfo_cname *head)
{
struct ares_addrinfo_cname *current;
while (head) {
@@ -43,7 +43,7 @@ void ares__freeaddrinfo_cnames(struct ares_addrinfo_cname *head)
}
}
-void ares__freeaddrinfo_nodes(struct ares_addrinfo_node *head)
+void ares_freeaddrinfo_nodes(struct ares_addrinfo_node *head)
{
struct ares_addrinfo_node *current;
while (head) {
@@ -59,8 +59,8 @@ void ares_freeaddrinfo(struct ares_addrinfo *ai)
if (ai == NULL) {
return;
}
- ares__freeaddrinfo_cnames(ai->cnames);
- ares__freeaddrinfo_nodes(ai->nodes);
+ ares_freeaddrinfo_cnames(ai->cnames);
+ ares_freeaddrinfo_nodes(ai->nodes);
ares_free(ai->name);
ares_free(ai);
diff --git a/contrib/libs/c-ares/src/lib/ares_getaddrinfo.c b/contrib/libs/c-ares/src/lib/ares_getaddrinfo.c
index 713acf744a..09d34d3378 100644
--- a/contrib/libs/c-ares/src/lib/ares_getaddrinfo.c
+++ b/contrib/libs/c-ares/src/lib/ares_getaddrinfo.c
@@ -58,10 +58,6 @@
#include "ares_dns.h"
-#ifdef _WIN32
-# include "ares_platform.h"
-#endif
-
struct host_query {
ares_channel_t *channel;
char *name;
@@ -101,7 +97,7 @@ static const struct ares_addrinfo_hints default_hints = {
static ares_bool_t next_dns_lookup(struct host_query *hquery);
struct ares_addrinfo_cname *
- ares__append_addrinfo_cname(struct ares_addrinfo_cname **head)
+ ares_append_addrinfo_cname(struct ares_addrinfo_cname **head)
{
struct ares_addrinfo_cname *tail = ares_malloc_zero(sizeof(*tail));
struct ares_addrinfo_cname *last = *head;
@@ -123,8 +119,8 @@ struct ares_addrinfo_cname *
return tail;
}
-void ares__addrinfo_cat_cnames(struct ares_addrinfo_cname **head,
- struct ares_addrinfo_cname *tail)
+void ares_addrinfo_cat_cnames(struct ares_addrinfo_cname **head,
+ struct ares_addrinfo_cname *tail)
{
struct ares_addrinfo_cname *last = *head;
if (!last) {
@@ -141,7 +137,7 @@ void ares__addrinfo_cat_cnames(struct ares_addrinfo_cname **head,
/* Allocate new addrinfo and append to the tail. */
struct ares_addrinfo_node *
- ares__append_addrinfo_node(struct ares_addrinfo_node **head)
+ ares_append_addrinfo_node(struct ares_addrinfo_node **head)
{
struct ares_addrinfo_node *tail = ares_malloc_zero(sizeof(*tail));
struct ares_addrinfo_node *last = *head;
@@ -163,8 +159,8 @@ struct ares_addrinfo_node *
return tail;
}
-void ares__addrinfo_cat_nodes(struct ares_addrinfo_node **head,
- struct ares_addrinfo_node *tail)
+void ares_addrinfo_cat_nodes(struct ares_addrinfo_node **head,
+ struct ares_addrinfo_node *tail)
{
struct ares_addrinfo_node *last = *head;
if (!last) {
@@ -252,7 +248,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port,
ares_bool_t valid = ARES_TRUE;
const char *p;
for (p = name; *p; p++) {
- if (!ares__isdigit(*p) && *p != '.') {
+ if (!ares_isdigit(*p) && *p != '.') {
valid = ARES_FALSE;
break;
} else if (*p == '.') {
@@ -297,7 +293,7 @@ static ares_bool_t fake_addrinfo(const char *name, unsigned short port,
}
if (hints->ai_flags & ARES_AI_CANONNAME) {
- cname = ares__append_addrinfo_cname(&ai->cnames);
+ cname = ares_append_addrinfo_cname(&ai->cnames);
if (!cname) {
/* LCOV_EXCL_START: OutOfMemory */
ares_freeaddrinfo(ai);
@@ -327,7 +323,7 @@ static void hquery_free(struct host_query *hquery, ares_bool_t cleanup_ai)
if (cleanup_ai) {
ares_freeaddrinfo(hquery->ai);
}
- ares__strsplit_free(hquery->names, hquery->names_cnt);
+ ares_strsplit_free(hquery->names, hquery->names_cnt);
ares_free(hquery->name);
ares_free(hquery->lookups);
ares_free(hquery);
@@ -341,7 +337,7 @@ static void end_hquery(struct host_query *hquery, ares_status_t status)
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);
+ ares_sortaddrinfo(hquery->channel, &sentinel);
hquery->ai->nodes = sentinel.ai_next;
}
next = hquery->ai->nodes;
@@ -361,7 +357,7 @@ static void end_hquery(struct host_query *hquery, ares_status_t status)
hquery_free(hquery, ARES_FALSE);
}
-ares_bool_t ares__is_localhost(const char *name)
+ares_bool_t ares_is_localhost(const char *name)
{
/* RFC6761 6.3 says : The domain "localhost." and any names falling within
* ".localhost." */
@@ -371,7 +367,7 @@ ares_bool_t ares__is_localhost(const char *name)
return ARES_FALSE; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- if (strcmp(name, "localhost") == 0) {
+ if (ares_strcaseeq(name, "localhost")) {
return ARES_TRUE;
}
@@ -380,7 +376,8 @@ ares_bool_t ares__is_localhost(const char *name)
return ARES_FALSE;
}
- if (strcmp(name + (len - 10 /* strlen(".localhost") */), ".localhost") == 0) {
+ if (ares_strcaseeq(name + (len - 10 /* strlen(".localhost") */),
+ ".localhost")) {
return ARES_TRUE;
}
@@ -393,11 +390,11 @@ static ares_status_t file_lookup(struct host_query *hquery)
ares_status_t status;
/* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */
- if (ares__is_onion_domain(hquery->name)) {
+ if (ares_is_onion_domain(hquery->name)) {
return ARES_ENOTFOUND;
}
- status = ares__hosts_search_host(
+ status = ares_hosts_search_host(
hquery->channel,
(hquery->hints.ai_flags & ARES_AI_ENVHOSTS) ? ARES_TRUE : ARES_FALSE,
hquery->name, &entry);
@@ -406,7 +403,7 @@ static ares_status_t file_lookup(struct host_query *hquery)
goto done;
}
- status = ares__hosts_entry_to_addrinfo(
+ status = ares_hosts_entry_to_addrinfo(
entry, hquery->name, hquery->hints.ai_family, hquery->port,
(hquery->hints.ai_flags & ARES_AI_CANONNAME) ? ARES_TRUE : ARES_FALSE,
hquery->ai);
@@ -423,9 +420,9 @@ done:
* 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 && status != ARES_ENOMEM &&
- ares__is_localhost(hquery->name)) {
- return ares__addrinfo_localhost(hquery->name, hquery->port, &hquery->hints,
- hquery->ai);
+ ares_is_localhost(hquery->name)) {
+ return ares_addrinfo_localhost(hquery->name, hquery->port, &hquery->hints,
+ hquery->ai);
}
return status;
@@ -439,7 +436,7 @@ static void next_lookup(struct host_query *hquery, ares_status_t status)
* queries for localhost names to their configured caching DNS
* server(s)."
* Otherwise, DNS lookup. */
- if (!ares__is_localhost(hquery->name) && next_dns_lookup(hquery)) {
+ if (!ares_is_localhost(hquery->name) && next_dns_lookup(hquery)) {
break;
}
@@ -476,7 +473,7 @@ static void terminate_retries(const struct host_query *hquery,
return;
}
- query = ares__htable_szvp_get_direct(channel->queries_by_qid, term_qid);
+ query = ares_htable_szvp_get_direct(channel->queries_by_qid, term_qid);
if (query == NULL) {
return;
}
@@ -497,7 +494,7 @@ static void host_callback(void *arg, ares_status_t status, size_t timeouts,
addinfostatus = ARES_EBADRESP; /* LCOV_EXCL_LINE: DefensiveCoding */
} else {
addinfostatus =
- ares__parse_into_addrinfo(dnsrec, ARES_TRUE, hquery->port, hquery->ai);
+ ares_parse_into_addrinfo(dnsrec, ARES_TRUE, hquery->port, hquery->ai);
}
if (addinfostatus == ARES_SUCCESS) {
terminate_retries(hquery, ares_dns_record_get_id(dnsrec));
@@ -528,10 +525,9 @@ static void host_callback(void *arg, ares_status_t status, size_t timeouts,
hquery->nodata_cnt++;
}
next_lookup(hquery, hquery->nodata_cnt ? ARES_ENODATA : status);
- } else if (
- (status == ARES_ESERVFAIL || status == ARES_EREFUSED) &&
- ares__name_label_cnt(hquery->names[hquery->next_name_idx-1]) == 1
- ) {
+ } else if ((status == ARES_ESERVFAIL || status == ARES_EREFUSED) &&
+ ares_name_label_cnt(hquery->names[hquery->next_name_idx - 1]) ==
+ 1) {
/* Issue #852, systemd-resolved may return SERVFAIL or REFUSED on a
* single label domain name. */
next_lookup(hquery, hquery->nodata_cnt ? ARES_ENODATA : status);
@@ -567,7 +563,7 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name,
return;
}
- if (ares__is_onion_domain(name)) {
+ if (ares_is_onion_domain(name)) {
callback(arg, ARES_ENOTFOUND, 0, NULL);
return;
}
@@ -630,7 +626,7 @@ static void ares_getaddrinfo_int(ares_channel_t *channel, const char *name,
}
status =
- ares__search_name_list(channel, name, &hquery->names, &hquery->names_cnt);
+ ares_search_name_list(channel, name, &hquery->names, &hquery->names_cnt);
if (status != ARES_SUCCESS) {
hquery_free(hquery, ARES_TRUE);
callback(arg, (int)status, 0, NULL);
@@ -659,9 +655,9 @@ void ares_getaddrinfo(ares_channel_t *channel, const char *name,
if (channel == NULL) {
return;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
ares_getaddrinfo_int(channel, name, service, hints, callback, arg);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
}
static ares_bool_t next_dns_lookup(struct host_query *hquery)
diff --git a/contrib/libs/c-ares/src/lib/ares_gethostbyaddr.c b/contrib/libs/c-ares/src/lib/ares_gethostbyaddr.c
index 1db81ec2b4..a7acf3c45c 100644
--- a/contrib/libs/c-ares/src/lib/ares_gethostbyaddr.c
+++ b/contrib/libs/c-ares/src/lib/ares_gethostbyaddr.c
@@ -39,7 +39,6 @@
#include "ares_nameser.h"
#include "ares_inet_net_pton.h"
-#include "ares_platform.h"
struct addr_query {
/* Arguments passed to ares_gethostbyaddr() */
@@ -112,9 +111,9 @@ void ares_gethostbyaddr(ares_channel_t *channel, const void *addr, int addrlen,
if (channel == NULL) {
return;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
ares_gethostbyaddr_nolock(channel, addr, addrlen, family, callback, arg);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
}
static void next_lookup(struct addr_query *aquery)
@@ -216,12 +215,12 @@ static ares_status_t file_lookup(ares_channel_t *channel,
return ARES_ENOTFOUND;
}
- status = ares__hosts_search_ipaddr(channel, ARES_FALSE, ipaddr, &entry);
+ status = ares_hosts_search_ipaddr(channel, ARES_FALSE, ipaddr, &entry);
if (status != ARES_SUCCESS) {
return status;
}
- status = ares__hosts_entry_to_hostent(entry, addr->family, host);
+ status = ares_hosts_entry_to_hostent(entry, addr->family, host);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
diff --git a/contrib/libs/c-ares/src/lib/ares_gethostbyname.c b/contrib/libs/c-ares/src/lib/ares_gethostbyname.c
index 6db86e0eed..56de729526 100644
--- a/contrib/libs/c-ares/src/lib/ares_gethostbyname.c
+++ b/contrib/libs/c-ares/src/lib/ares_gethostbyname.c
@@ -44,7 +44,6 @@
#endif
#include "ares_inet_net_pton.h"
-#include "ares_platform.h"
static void sort_addresses(const struct hostent *host,
const struct apattern *sortlist, size_t nsort);
@@ -68,7 +67,7 @@ static void ares_gethostbyname_callback(void *arg, int status, int timeouts,
struct host_query *ghbn_arg = arg;
if (status == ARES_SUCCESS) {
- status = (int)ares__addrinfo2hostent(result, AF_UNSPEC, &hostent);
+ status = (int)ares_addrinfo2hostent(result, AF_UNSPEC, &hostent);
}
/* addrinfo2hostent will only return ENODATA if there are no addresses _and_
@@ -175,7 +174,7 @@ static size_t get_address_index(const struct in_addr *addr,
continue;
}
- if (ares__subnet_match(&aaddr, &sortlist[i].addr, sortlist[i].mask)) {
+ if (ares_subnet_match(&aaddr, &sortlist[i].addr, sortlist[i].mask)) {
break;
}
}
@@ -231,15 +230,15 @@ static size_t get6_address_index(const struct ares_in6_addr *addr,
continue;
}
- if (ares__subnet_match(&aaddr, &sortlist[i].addr, sortlist[i].mask)) {
+ if (ares_subnet_match(&aaddr, &sortlist[i].addr, sortlist[i].mask)) {
break;
}
}
return i;
}
-static ares_status_t ares__hostent_localhost(const char *name, int family,
- struct hostent **host_out)
+static ares_status_t ares_hostent_localhost(const char *name, int family,
+ struct hostent **host_out)
{
ares_status_t status;
struct ares_addrinfo *ai = NULL;
@@ -254,12 +253,12 @@ static ares_status_t ares__hostent_localhost(const char *name, int family,
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__addrinfo_localhost(name, 0, &hints, ai);
+ status = ares_addrinfo_localhost(name, 0, &hints, ai);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__addrinfo2hostent(ai, family, host_out);
+ status = ares_addrinfo2hostent(ai, family, host_out);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -289,16 +288,16 @@ static ares_status_t ares_gethostbyname_file_int(ares_channel_t *channel,
}
/* 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;
}
- status = ares__hosts_search_host(channel, ARES_FALSE, name, &entry);
+ status = ares_hosts_search_host(channel, ARES_FALSE, name, &entry);
if (status != ARES_SUCCESS) {
goto done;
}
- status = ares__hosts_entry_to_hostent(entry, family, host);
+ status = ares_hosts_entry_to_hostent(entry, family, host);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -310,8 +309,8 @@ done:
* 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 && status != ARES_ENOMEM &&
- ares__is_localhost(name)) {
- return ares__hostent_localhost(name, family, host);
+ ares_is_localhost(name)) {
+ return ares_hostent_localhost(name, family, host);
}
return status;
@@ -325,8 +324,8 @@ int ares_gethostbyname_file(ares_channel_t *channel, const char *name,
return ARES_ENOTFOUND;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
status = ares_gethostbyname_file_int(channel, name, family, host);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return (int)status;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_getnameinfo.c b/contrib/libs/c-ares/src/lib/ares_getnameinfo.c
index 622c1adb1c..0159354530 100644
--- a/contrib/libs/c-ares/src/lib/ares_getnameinfo.c
+++ b/contrib/libs/c-ares/src/lib/ares_getnameinfo.c
@@ -193,9 +193,9 @@ void ares_getnameinfo(ares_channel_t *channel, const struct sockaddr *sa,
return;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
ares_getnameinfo_int(channel, sa, salen, flags_int, callback, arg);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
}
static void nameinfo_callback(void *arg, int status, int timeouts,
@@ -410,8 +410,8 @@ static char *ares_striendstr(const char *s1, const char *s2)
c1 = c1_begin;
c2 = s2;
while (c2 < s2 + s2_len) {
- lo1 = ares__tolower((unsigned char)*c1);
- lo2 = ares__tolower((unsigned char)*c2);
+ lo1 = ares_tolower((unsigned char)*c1);
+ lo2 = ares_tolower((unsigned char)*c2);
if (lo1 != lo2) {
return NULL;
} else {
@@ -423,7 +423,7 @@ static char *ares_striendstr(const char *s1, const char *s2)
return (char *)((size_t)c1_begin);
}
-ares_bool_t ares__is_onion_domain(const char *name)
+ares_bool_t ares_is_onion_domain(const char *name)
{
if (ares_striendstr(name, ".onion")) {
return ARES_TRUE;
diff --git a/contrib/libs/c-ares/src/lib/ares__hosts_file.c b/contrib/libs/c-ares/src/lib/ares_hosts_file.c
index ae9c071d7a..0439b8e1d4 100644
--- a/contrib/libs/c-ares/src/lib/ares__hosts_file.c
+++ b/contrib/libs/c-ares/src/lib/ares_hosts_file.c
@@ -40,7 +40,6 @@
# include <arpa/inet.h>
#endif
#include <time.h>
-#include "ares_platform.h"
/* HOSTS FILE PROCESSING OVERVIEW
* ==============================
@@ -78,22 +77,22 @@
*/
struct ares_hosts_file {
- time_t ts;
+ time_t ts;
/*! cache the filename so we know if the filename changes it automatically
* invalidates the cache */
- char *filename;
+ char *filename;
/*! iphash is the owner of the 'entry' object as there is only ever a single
* match to the object. */
- ares__htable_strvp_t *iphash;
+ ares_htable_strvp_t *iphash;
/*! hosthash does not own the entry so won't free on destruction */
- ares__htable_strvp_t *hosthash;
+ ares_htable_strvp_t *hosthash;
};
struct ares_hosts_entry {
- size_t refcnt; /*! If the entry is stored multiple times in the
- * ip address hash, we have to reference count it */
- ares__llist_t *ips;
- ares__llist_t *hosts;
+ size_t refcnt; /*! If the entry is stored multiple times in the
+ * ip address hash, we have to reference count it */
+ ares_llist_t *ips;
+ ares_llist_t *hosts;
};
const void *ares_dns_pton(const char *ipaddr, struct ares_addr *addr,
@@ -132,8 +131,8 @@ const void *ares_dns_pton(const char *ipaddr, struct ares_addr *addr,
return ptr;
}
-static ares_bool_t ares__normalize_ipaddr(const char *ipaddr, char *out,
- size_t out_len)
+static ares_bool_t ares_normalize_ipaddr(const char *ipaddr, char *out,
+ size_t out_len)
{
struct ares_addr data;
const void *addr;
@@ -154,7 +153,7 @@ static ares_bool_t ares__normalize_ipaddr(const char *ipaddr, char *out,
return ARES_TRUE;
}
-static void ares__hosts_entry_destroy(ares_hosts_entry_t *entry)
+static void ares_hosts_entry_destroy(ares_hosts_entry_t *entry)
{
if (entry == NULL) {
return;
@@ -169,29 +168,29 @@ static void ares__hosts_entry_destroy(ares_hosts_entry_t *entry)
return;
}
- ares__llist_destroy(entry->hosts);
- ares__llist_destroy(entry->ips);
+ ares_llist_destroy(entry->hosts);
+ ares_llist_destroy(entry->ips);
ares_free(entry);
}
-static void ares__hosts_entry_destroy_cb(void *entry)
+static void ares_hosts_entry_destroy_cb(void *entry)
{
- ares__hosts_entry_destroy(entry);
+ ares_hosts_entry_destroy(entry);
}
-void ares__hosts_file_destroy(ares_hosts_file_t *hf)
+void ares_hosts_file_destroy(ares_hosts_file_t *hf)
{
if (hf == NULL) {
return;
}
ares_free(hf->filename);
- ares__htable_strvp_destroy(hf->hosthash);
- ares__htable_strvp_destroy(hf->iphash);
+ ares_htable_strvp_destroy(hf->hosthash);
+ ares_htable_strvp_destroy(hf->iphash);
ares_free(hf);
}
-static ares_hosts_file_t *ares__hosts_file_create(const char *filename)
+static ares_hosts_file_t *ares_hosts_file_create(const char *filename)
{
ares_hosts_file_t *hf = ares_malloc_zero(sizeof(*hf));
if (hf == NULL) {
@@ -205,12 +204,12 @@ static ares_hosts_file_t *ares__hosts_file_create(const char *filename)
goto fail;
}
- hf->iphash = ares__htable_strvp_create(ares__hosts_entry_destroy_cb);
+ hf->iphash = ares_htable_strvp_create(ares_hosts_entry_destroy_cb);
if (hf->iphash == NULL) {
goto fail;
}
- hf->hosthash = ares__htable_strvp_create(NULL);
+ hf->hosthash = ares_htable_strvp_create(NULL);
if (hf->hosthash == NULL) {
goto fail;
}
@@ -218,7 +217,7 @@ static ares_hosts_file_t *ares__hosts_file_create(const char *filename)
return hf;
fail:
- ares__hosts_file_destroy(hf);
+ ares_hosts_file_destroy(hf);
return NULL;
}
@@ -228,63 +227,63 @@ typedef enum {
ARES_MATCH_HOST = 2
} ares_hosts_file_match_t;
-static ares_status_t ares__hosts_file_merge_entry(
+static ares_status_t ares_hosts_file_merge_entry(
const ares_hosts_file_t *hf, ares_hosts_entry_t *existing,
ares_hosts_entry_t *entry, ares_hosts_file_match_t matchtype)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
/* If we matched on IP address, we know there can only be 1, so there's no
* reason to do anything */
if (matchtype != ARES_MATCH_IPADDR) {
- while ((node = ares__llist_node_first(entry->ips)) != NULL) {
- const char *ipaddr = ares__llist_node_val(node);
+ while ((node = ares_llist_node_first(entry->ips)) != NULL) {
+ const char *ipaddr = ares_llist_node_val(node);
- if (ares__htable_strvp_get_direct(hf->iphash, ipaddr) != NULL) {
- ares__llist_node_destroy(node);
+ if (ares_htable_strvp_get_direct(hf->iphash, ipaddr) != NULL) {
+ ares_llist_node_destroy(node);
continue;
}
- ares__llist_node_move_parent_last(node, existing->ips);
+ ares_llist_node_mvparent_last(node, existing->ips);
}
}
- while ((node = ares__llist_node_first(entry->hosts)) != NULL) {
- const char *hostname = ares__llist_node_val(node);
+ while ((node = ares_llist_node_first(entry->hosts)) != NULL) {
+ const char *hostname = ares_llist_node_val(node);
- if (ares__htable_strvp_get_direct(hf->hosthash, hostname) != NULL) {
- ares__llist_node_destroy(node);
+ if (ares_htable_strvp_get_direct(hf->hosthash, hostname) != NULL) {
+ ares_llist_node_destroy(node);
continue;
}
- ares__llist_node_move_parent_last(node, existing->hosts);
+ ares_llist_node_mvparent_last(node, existing->hosts);
}
- ares__hosts_entry_destroy(entry);
+ ares_hosts_entry_destroy(entry);
return ARES_SUCCESS;
}
static ares_hosts_file_match_t
- ares__hosts_file_match(const ares_hosts_file_t *hf, ares_hosts_entry_t *entry,
- ares_hosts_entry_t **match)
+ ares_hosts_file_match(const ares_hosts_file_t *hf, ares_hosts_entry_t *entry,
+ ares_hosts_entry_t **match)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
*match = NULL;
- for (node = ares__llist_node_first(entry->ips); node != NULL;
- node = ares__llist_node_next(node)) {
- const char *ipaddr = ares__llist_node_val(node);
- *match = ares__htable_strvp_get_direct(hf->iphash, ipaddr);
+ for (node = ares_llist_node_first(entry->ips); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const char *ipaddr = ares_llist_node_val(node);
+ *match = ares_htable_strvp_get_direct(hf->iphash, ipaddr);
if (*match != NULL) {
return ARES_MATCH_IPADDR;
}
}
- for (node = ares__llist_node_first(entry->hosts); node != NULL;
- node = ares__llist_node_next(node)) {
- const char *host = ares__llist_node_val(node);
- *match = ares__htable_strvp_get_direct(hf->hosthash, host);
+ for (node = ares_llist_node_first(entry->hosts); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const char *host = ares_llist_node_val(node);
+ *match = ares_htable_strvp_get_direct(hf->hosthash, host);
if (*match != NULL) {
return ARES_MATCH_HOST;
}
@@ -294,38 +293,38 @@ static ares_hosts_file_match_t
}
/*! entry is invalidated upon calling this function, always, even on error */
-static ares_status_t ares__hosts_file_add(ares_hosts_file_t *hosts,
- ares_hosts_entry_t *entry)
+static ares_status_t ares_hosts_file_add(ares_hosts_file_t *hosts,
+ ares_hosts_entry_t *entry)
{
ares_hosts_entry_t *match = NULL;
ares_status_t status = ARES_SUCCESS;
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
ares_hosts_file_match_t matchtype;
size_t num_hostnames;
/* Record the number of hostnames in this entry file. If we merge into an
* existing record, these will be *appended* to the entry, so we'll count
* backwards when adding to the hosts hashtable */
- num_hostnames = ares__llist_len(entry->hosts);
+ num_hostnames = ares_llist_len(entry->hosts);
- matchtype = ares__hosts_file_match(hosts, entry, &match);
+ matchtype = ares_hosts_file_match(hosts, entry, &match);
if (matchtype != ARES_MATCH_NONE) {
- status = ares__hosts_file_merge_entry(hosts, match, entry, matchtype);
+ status = ares_hosts_file_merge_entry(hosts, match, entry, matchtype);
if (status != ARES_SUCCESS) {
- ares__hosts_entry_destroy(entry); /* LCOV_EXCL_LINE: DefensiveCoding */
- return status; /* LCOV_EXCL_LINE: DefensiveCoding */
+ ares_hosts_entry_destroy(entry); /* LCOV_EXCL_LINE: DefensiveCoding */
+ return status; /* LCOV_EXCL_LINE: DefensiveCoding */
}
/* entry was invalidated above by merging */
entry = match;
}
if (matchtype != ARES_MATCH_IPADDR) {
- const char *ipaddr = ares__llist_last_val(entry->ips);
+ const char *ipaddr = ares_llist_last_val(entry->ips);
- if (!ares__htable_strvp_get(hosts->iphash, ipaddr, NULL)) {
- if (!ares__htable_strvp_insert(hosts->iphash, ipaddr, entry)) {
- ares__hosts_entry_destroy(entry);
+ if (!ares_htable_strvp_get(hosts->iphash, ipaddr, NULL)) {
+ if (!ares_htable_strvp_insert(hosts->iphash, ipaddr, entry)) {
+ ares_hosts_entry_destroy(entry);
return ARES_ENOMEM;
}
entry->refcnt++;
@@ -334,9 +333,9 @@ static ares_status_t ares__hosts_file_add(ares_hosts_file_t *hosts,
/* Go backwards, on a merge, hostnames are appended. Breakout once we've
* consumed all the hosts that we appended */
- for (node = ares__llist_node_last(entry->hosts); node != NULL;
- node = ares__llist_node_prev(node)) {
- const char *val = ares__llist_node_val(node);
+ for (node = ares_llist_node_last(entry->hosts); node != NULL;
+ node = ares_llist_node_prev(node)) {
+ const char *val = ares_llist_node_val(node);
if (num_hostnames == 0) {
break;
@@ -346,11 +345,11 @@ static ares_status_t ares__hosts_file_add(ares_hosts_file_t *hosts,
/* first hostname match wins. If we detect a duplicate hostname for another
* ip it will automatically be added to the same entry */
- if (ares__htable_strvp_get(hosts->hosthash, val, NULL)) {
+ if (ares_htable_strvp_get(hosts->hosthash, val, NULL)) {
continue;
}
- if (!ares__htable_strvp_insert(hosts->hosthash, val, entry)) {
+ if (!ares_htable_strvp_insert(hosts->hosthash, val, entry)) {
return ARES_ENOMEM;
}
}
@@ -358,15 +357,15 @@ static ares_status_t ares__hosts_file_add(ares_hosts_file_t *hosts,
return ARES_SUCCESS;
}
-static ares_bool_t ares__hosts_entry_isdup(ares_hosts_entry_t *entry,
- const char *host)
+static ares_bool_t ares_hosts_entry_isdup(ares_hosts_entry_t *entry,
+ const char *host)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
- for (node = ares__llist_node_first(entry->ips); node != NULL;
- node = ares__llist_node_next(node)) {
- const char *myhost = ares__llist_node_val(node);
- if (strcasecmp(myhost, host) == 0) {
+ for (node = ares_llist_node_first(entry->ips); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const char *myhost = ares_llist_node_val(node);
+ if (ares_strcaseeq(myhost, host)) {
return ARES_TRUE;
}
}
@@ -374,44 +373,44 @@ static ares_bool_t ares__hosts_entry_isdup(ares_hosts_entry_t *entry,
return ARES_FALSE;
}
-static ares_status_t ares__parse_hosts_hostnames(ares__buf_t *buf,
- ares_hosts_entry_t *entry)
+static ares_status_t ares_parse_hosts_hostnames(ares_buf_t *buf,
+ ares_hosts_entry_t *entry)
{
- entry->hosts = ares__llist_create(ares_free);
+ entry->hosts = ares_llist_create(ares_free);
if (entry->hosts == NULL) {
return ARES_ENOMEM;
}
/* Parse hostnames and aliases */
- while (ares__buf_len(buf)) {
+ while (ares_buf_len(buf)) {
char hostname[256];
char *temp;
ares_status_t status;
unsigned char comment = '#';
- ares__buf_consume_whitespace(buf, ARES_FALSE);
+ ares_buf_consume_whitespace(buf, ARES_FALSE);
- if (ares__buf_len(buf) == 0) {
+ if (ares_buf_len(buf) == 0) {
break;
}
/* See if it is a comment, if so stop processing */
- if (ares__buf_begins_with(buf, &comment, 1)) {
+ if (ares_buf_begins_with(buf, &comment, 1)) {
break;
}
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
/* Must be at end of line */
- if (ares__buf_consume_nonwhitespace(buf) == 0) {
+ if (ares_buf_consume_nonwhitespace(buf) == 0) {
break;
}
- status = ares__buf_tag_fetch_string(buf, hostname, sizeof(hostname));
+ status = ares_buf_tag_fetch_string(buf, hostname, sizeof(hostname));
if (status != ARES_SUCCESS) {
/* Bad entry, just ignore as long as its not the first. If its the first,
* it must be valid */
- if (ares__llist_len(entry->hosts) == 0) {
+ if (ares_llist_len(entry->hosts) == 0) {
return ARES_EBADSTR;
}
@@ -419,12 +418,12 @@ static ares_status_t ares__parse_hosts_hostnames(ares__buf_t *buf,
}
/* Validate it is a valid hostname characterset */
- if (!ares__is_hostname(hostname)) {
+ if (!ares_is_hostname(hostname)) {
continue;
}
/* Don't add a duplicate to the same entry */
- if (ares__hosts_entry_isdup(entry, hostname)) {
+ if (ares_hosts_entry_isdup(entry, hostname)) {
continue;
}
@@ -434,22 +433,22 @@ static ares_status_t ares__parse_hosts_hostnames(ares__buf_t *buf,
return ARES_ENOMEM;
}
- if (ares__llist_insert_last(entry->hosts, temp) == NULL) {
+ if (ares_llist_insert_last(entry->hosts, temp) == NULL) {
ares_free(temp);
return ARES_ENOMEM;
}
}
/* Must have at least 1 entry */
- if (ares__llist_len(entry->hosts) == 0) {
+ if (ares_llist_len(entry->hosts) == 0) {
return ARES_EBADSTR;
}
return ARES_SUCCESS;
}
-static ares_status_t ares__parse_hosts_ipaddr(ares__buf_t *buf,
- ares_hosts_entry_t **entry_out)
+static ares_status_t ares_parse_hosts_ipaddr(ares_buf_t *buf,
+ ares_hosts_entry_t **entry_out)
{
char addr[INET6_ADDRSTRLEN];
char *temp;
@@ -458,15 +457,15 @@ static ares_status_t ares__parse_hosts_ipaddr(ares__buf_t *buf,
*entry_out = NULL;
- ares__buf_tag(buf);
- ares__buf_consume_nonwhitespace(buf);
- status = ares__buf_tag_fetch_string(buf, addr, sizeof(addr));
+ ares_buf_tag(buf);
+ ares_buf_consume_nonwhitespace(buf);
+ status = ares_buf_tag_fetch_string(buf, addr, sizeof(addr));
if (status != ARES_SUCCESS) {
return status;
}
/* Validate and normalize the ip address format */
- if (!ares__normalize_ipaddr(addr, addr, sizeof(addr))) {
+ if (!ares_normalize_ipaddr(addr, addr, sizeof(addr))) {
return ARES_EBADSTR;
}
@@ -475,21 +474,21 @@ static ares_status_t ares__parse_hosts_ipaddr(ares__buf_t *buf,
return ARES_ENOMEM;
}
- entry->ips = ares__llist_create(ares_free);
+ entry->ips = ares_llist_create(ares_free);
if (entry->ips == NULL) {
- ares__hosts_entry_destroy(entry);
+ ares_hosts_entry_destroy(entry);
return ARES_ENOMEM;
}
temp = ares_strdup(addr);
if (temp == NULL) {
- ares__hosts_entry_destroy(entry);
+ ares_hosts_entry_destroy(entry);
return ARES_ENOMEM;
}
- if (ares__llist_insert_first(entry->ips, temp) == NULL) {
+ if (ares_llist_insert_first(entry->ips, temp) == NULL) {
ares_free(temp);
- ares__hosts_entry_destroy(entry);
+ ares_hosts_entry_destroy(entry);
return ARES_ENOMEM;
}
@@ -498,100 +497,100 @@ static ares_status_t ares__parse_hosts_ipaddr(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares__parse_hosts(const char *filename,
- ares_hosts_file_t **out)
+static ares_status_t ares_parse_hosts(const char *filename,
+ ares_hosts_file_t **out)
{
- ares__buf_t *buf = NULL;
+ ares_buf_t *buf = NULL;
ares_status_t status = ARES_EBADRESP;
ares_hosts_file_t *hf = NULL;
ares_hosts_entry_t *entry = NULL;
*out = NULL;
- buf = ares__buf_create();
+ buf = ares_buf_create();
if (buf == NULL) {
status = ARES_ENOMEM;
goto done;
}
- status = ares__buf_load_file(filename, buf);
+ status = ares_buf_load_file(filename, buf);
if (status != ARES_SUCCESS) {
goto done;
}
- hf = ares__hosts_file_create(filename);
+ hf = ares_hosts_file_create(filename);
if (hf == NULL) {
status = ARES_ENOMEM;
goto done;
}
- while (ares__buf_len(buf)) {
+ while (ares_buf_len(buf)) {
unsigned char comment = '#';
/* -- Start of new line here -- */
/* Consume any leading whitespace */
- ares__buf_consume_whitespace(buf, ARES_FALSE);
+ ares_buf_consume_whitespace(buf, ARES_FALSE);
- if (ares__buf_len(buf) == 0) {
+ if (ares_buf_len(buf) == 0) {
break;
}
/* See if it is a comment, if so, consume remaining line */
- if (ares__buf_begins_with(buf, &comment, 1)) {
- ares__buf_consume_line(buf, ARES_TRUE);
+ if (ares_buf_begins_with(buf, &comment, 1)) {
+ ares_buf_consume_line(buf, ARES_TRUE);
continue;
}
/* Pull off ip address */
- status = ares__parse_hosts_ipaddr(buf, &entry);
+ status = ares_parse_hosts_ipaddr(buf, &entry);
if (status == ARES_ENOMEM) {
goto done;
}
if (status != ARES_SUCCESS) {
/* Bad line, consume and go onto next */
- ares__buf_consume_line(buf, ARES_TRUE);
+ ares_buf_consume_line(buf, ARES_TRUE);
continue;
}
/* Parse of the hostnames */
- status = ares__parse_hosts_hostnames(buf, entry);
+ status = ares_parse_hosts_hostnames(buf, entry);
if (status == ARES_ENOMEM) {
goto done;
} else if (status != ARES_SUCCESS) {
/* Bad line, consume and go onto next */
- ares__hosts_entry_destroy(entry);
+ ares_hosts_entry_destroy(entry);
entry = NULL;
- ares__buf_consume_line(buf, ARES_TRUE);
+ ares_buf_consume_line(buf, ARES_TRUE);
continue;
}
/* Append the successful entry to the hosts file */
- status = ares__hosts_file_add(hf, entry);
+ status = ares_hosts_file_add(hf, entry);
entry = NULL; /* is always invalidated by this function, even on error */
if (status != ARES_SUCCESS) {
goto done;
}
/* Go to next line */
- ares__buf_consume_line(buf, ARES_TRUE);
+ ares_buf_consume_line(buf, ARES_TRUE);
}
status = ARES_SUCCESS;
done:
- ares__hosts_entry_destroy(entry);
- ares__buf_destroy(buf);
+ ares_hosts_entry_destroy(entry);
+ ares_buf_destroy(buf);
if (status != ARES_SUCCESS) {
- ares__hosts_file_destroy(hf);
+ ares_hosts_file_destroy(hf);
} else {
*out = hf;
}
return status;
}
-static ares_bool_t ares__hosts_expired(const char *filename,
- const ares_hosts_file_t *hf)
+static ares_bool_t ares_hosts_expired(const char *filename,
+ const ares_hosts_file_t *hf)
{
time_t mod_ts = 0;
@@ -620,7 +619,7 @@ static ares_bool_t ares__hosts_expired(const char *filename,
}
/* If filenames are different, its expired */
- if (strcasecmp(hf->filename, filename) != 0) {
+ if (!ares_strcaseeq(hf->filename, filename)) {
return ARES_TRUE;
}
@@ -631,8 +630,8 @@ static ares_bool_t ares__hosts_expired(const char *filename,
return ARES_FALSE;
}
-static ares_status_t ares__hosts_path(const ares_channel_t *channel,
- ares_bool_t use_env, char **path)
+static ares_status_t ares_hosts_path(const ares_channel_t *channel,
+ ares_bool_t use_env, char **path)
{
char *path_hosts = NULL;
@@ -688,40 +687,40 @@ static ares_status_t ares__hosts_path(const ares_channel_t *channel,
return ARES_SUCCESS;
}
-static ares_status_t ares__hosts_update(ares_channel_t *channel,
- ares_bool_t use_env)
+static ares_status_t ares_hosts_update(ares_channel_t *channel,
+ ares_bool_t use_env)
{
ares_status_t status;
char *filename = NULL;
- status = ares__hosts_path(channel, use_env, &filename);
+ status = ares_hosts_path(channel, use_env, &filename);
if (status != ARES_SUCCESS) {
return status;
}
- if (!ares__hosts_expired(filename, channel->hf)) {
+ if (!ares_hosts_expired(filename, channel->hf)) {
ares_free(filename);
return ARES_SUCCESS;
}
- ares__hosts_file_destroy(channel->hf);
+ ares_hosts_file_destroy(channel->hf);
channel->hf = NULL;
- status = ares__parse_hosts(filename, &channel->hf);
+ status = ares_parse_hosts(filename, &channel->hf);
ares_free(filename);
return status;
}
-ares_status_t ares__hosts_search_ipaddr(ares_channel_t *channel,
- ares_bool_t use_env, const char *ipaddr,
- const ares_hosts_entry_t **entry)
+ares_status_t ares_hosts_search_ipaddr(ares_channel_t *channel,
+ ares_bool_t use_env, const char *ipaddr,
+ const ares_hosts_entry_t **entry)
{
ares_status_t status;
char addr[INET6_ADDRSTRLEN];
*entry = NULL;
- status = ares__hosts_update(channel, use_env);
+ status = ares_hosts_update(channel, use_env);
if (status != ARES_SUCCESS) {
return status;
}
@@ -730,11 +729,11 @@ ares_status_t ares__hosts_search_ipaddr(ares_channel_t *channel,
return ARES_ENOTFOUND; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- if (!ares__normalize_ipaddr(ipaddr, addr, sizeof(addr))) {
+ if (!ares_normalize_ipaddr(ipaddr, addr, sizeof(addr))) {
return ARES_EBADNAME;
}
- *entry = ares__htable_strvp_get_direct(channel->hf->iphash, addr);
+ *entry = ares_htable_strvp_get_direct(channel->hf->iphash, addr);
if (*entry == NULL) {
return ARES_ENOTFOUND;
}
@@ -742,15 +741,15 @@ ares_status_t ares__hosts_search_ipaddr(ares_channel_t *channel,
return ARES_SUCCESS;
}
-ares_status_t ares__hosts_search_host(ares_channel_t *channel,
- ares_bool_t use_env, const char *host,
- const ares_hosts_entry_t **entry)
+ares_status_t ares_hosts_search_host(ares_channel_t *channel,
+ ares_bool_t use_env, const char *host,
+ const ares_hosts_entry_t **entry)
{
ares_status_t status;
*entry = NULL;
- status = ares__hosts_update(channel, use_env);
+ status = ares_hosts_update(channel, use_env);
if (status != ARES_SUCCESS) {
return status;
}
@@ -759,7 +758,7 @@ ares_status_t ares__hosts_search_host(ares_channel_t *channel,
return ARES_ENOTFOUND; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- *entry = ares__htable_strvp_get_direct(channel->hf->hosthash, host);
+ *entry = ares_htable_strvp_get_direct(channel->hf->hosthash, host);
if (*entry == NULL) {
return ARES_ENOTFOUND;
}
@@ -768,23 +767,23 @@ ares_status_t ares__hosts_search_host(ares_channel_t *channel,
}
static ares_status_t
- ares__hosts_ai_append_cnames(const ares_hosts_entry_t *entry,
- struct ares_addrinfo_cname **cnames_out)
+ ares_hosts_ai_append_cnames(const ares_hosts_entry_t *entry,
+ struct ares_addrinfo_cname **cnames_out)
{
struct ares_addrinfo_cname *cname = NULL;
struct ares_addrinfo_cname *cnames = NULL;
const char *primaryhost;
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
ares_status_t status;
size_t cnt = 0;
- node = ares__llist_node_first(entry->hosts);
- primaryhost = ares__llist_node_val(node);
+ node = ares_llist_node_first(entry->hosts);
+ primaryhost = ares_llist_node_val(node);
/* Skip to next node to start with aliases */
- node = ares__llist_node_next(node);
+ node = ares_llist_node_next(node);
while (node != NULL) {
- const char *host = ares__llist_node_val(node);
+ const char *host = ares_llist_node_val(node);
/* Cap at 100 entries. , some people use
* https://github.com/StevenBlack/hosts and we don't need 200k+ aliases */
@@ -793,7 +792,7 @@ static ares_status_t
break; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- cname = ares__append_addrinfo_cname(&cnames);
+ cname = ares_append_addrinfo_cname(&cnames);
if (cname == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -811,12 +810,12 @@ static ares_status_t
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- node = ares__llist_node_next(node);
+ node = ares_llist_node_next(node);
}
/* No entries, add only primary */
if (cnames == NULL) {
- cname = ares__append_addrinfo_cname(&cnames);
+ cname = ares_append_addrinfo_cname(&cnames);
if (cname == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -832,24 +831,24 @@ static ares_status_t
done:
if (status != ARES_SUCCESS) {
- ares__freeaddrinfo_cnames(cnames); /* LCOV_EXCL_LINE: DefensiveCoding */
- return status; /* LCOV_EXCL_LINE: DefensiveCoding */
+ ares_freeaddrinfo_cnames(cnames); /* LCOV_EXCL_LINE: DefensiveCoding */
+ return status; /* LCOV_EXCL_LINE: DefensiveCoding */
}
*cnames_out = cnames;
return ARES_SUCCESS;
}
-ares_status_t ares__hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
- const char *name, int family,
- unsigned short port,
- ares_bool_t want_cnames,
- struct ares_addrinfo *ai)
+ares_status_t ares_hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
+ const char *name, int family,
+ unsigned short port,
+ ares_bool_t want_cnames,
+ struct ares_addrinfo *ai)
{
ares_status_t status;
struct ares_addrinfo_cname *cnames = NULL;
struct ares_addrinfo_node *ainodes = NULL;
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
switch (family) {
case AF_INET:
@@ -868,12 +867,12 @@ ares_status_t ares__hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
}
}
- for (node = ares__llist_node_first(entry->ips); node != NULL;
- node = ares__llist_node_next(node)) {
+ for (node = ares_llist_node_first(entry->ips); node != NULL;
+ node = ares_llist_node_next(node)) {
struct ares_addr addr;
const void *ptr = NULL;
size_t ptr_len = 0;
- const char *ipaddr = ares__llist_node_val(node);
+ const char *ipaddr = ares_llist_node_val(node);
memset(&addr, 0, sizeof(addr));
addr.family = family;
@@ -890,7 +889,7 @@ ares_status_t ares__hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
}
if (want_cnames) {
- status = ares__hosts_ai_append_cnames(entry, &cnames);
+ status = ares_hosts_ai_append_cnames(entry, &cnames);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
}
@@ -901,21 +900,21 @@ ares_status_t ares__hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
done:
if (status != ARES_SUCCESS) {
/* LCOV_EXCL_START: defensive coding */
- ares__freeaddrinfo_cnames(cnames);
- ares__freeaddrinfo_nodes(ainodes);
+ ares_freeaddrinfo_cnames(cnames);
+ ares_freeaddrinfo_nodes(ainodes);
ares_free(ai->name);
ai->name = NULL;
return status;
/* LCOV_EXCL_STOP */
}
- ares__addrinfo_cat_cnames(&ai->cnames, cnames);
- ares__addrinfo_cat_nodes(&ai->nodes, ainodes);
+ ares_addrinfo_cat_cnames(&ai->cnames, cnames);
+ ares_addrinfo_cat_nodes(&ai->nodes, ainodes);
return status;
}
-ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
- int family, struct hostent **hostent)
+ares_status_t ares_hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
+ int family, struct hostent **hostent)
{
ares_status_t status;
struct ares_addrinfo *ai = ares_malloc_zero(sizeof(*ai));
@@ -926,12 +925,12 @@ ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
return ARES_ENOMEM;
}
- status = ares__hosts_entry_to_addrinfo(entry, NULL, family, 0, ARES_TRUE, ai);
+ status = ares_hosts_entry_to_addrinfo(entry, NULL, family, 0, ARES_TRUE, ai);
if (status != ARES_SUCCESS) {
goto done;
}
- status = ares__addrinfo2hostent(ai, family, hostent);
+ status = ares_addrinfo2hostent(ai, family, hostent);
if (status != ARES_SUCCESS) {
goto done;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_inet_net_pton.h b/contrib/libs/c-ares/src/lib/ares_inet_net_pton.h
index 0a52855bd8..e3ed83a3cb 100644
--- a/contrib/libs/c-ares/src/lib/ares_inet_net_pton.h
+++ b/contrib/libs/c-ares/src/lib/ares_inet_net_pton.h
@@ -26,10 +26,6 @@
#ifndef HEADER_CARES_INET_NET_PTON_H
#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)
-#else
int ares_inet_net_pton(int af, const char *src, void *dst, size_t size);
-#endif
#endif /* HEADER_CARES_INET_NET_PTON_H */
diff --git a/contrib/libs/c-ares/src/lib/ares_init.c b/contrib/libs/c-ares/src/lib/ares_init.c
index 6dc5f4f935..ae78262a11 100644
--- a/contrib/libs/c-ares/src/lib/ares_init.c
+++ b/contrib/libs/c-ares/src/lib/ares_init.c
@@ -62,7 +62,6 @@
#endif
#include "ares_inet_net_pton.h"
-#include "ares_platform.h"
#include "event/ares_event.h"
int ares_init(ares_channel_t **channelptr)
@@ -117,7 +116,7 @@ static void server_destroy_cb(void *data)
if (data == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__destroy_server(data);
+ ares_destroy_server(data);
}
static ares_status_t init_by_defaults(ares_channel_t *channel)
@@ -128,7 +127,7 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
const char *dot;
#endif
struct ares_addr addr;
- ares__llist_t *sconfig = NULL;
+ ares_llist_t *sconfig = NULL;
/* Enable EDNS by default */
if (!(channel->optmask & ARES_OPT_FLAGS)) {
@@ -146,7 +145,7 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
channel->tries = DEFAULT_TRIES;
}
- if (ares__slist_len(channel->servers) == 0) {
+ if (ares_slist_len(channel->servers) == 0) {
/* Add a default local named server to the channel unless configured not
* to (in which case return an error).
*/
@@ -158,28 +157,19 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
addr.family = AF_INET;
addr.addr.addr4.s_addr = htonl(INADDR_LOOPBACK);
- rc = ares__sconfig_append(&sconfig, &addr, 0, 0, NULL);
+ rc = ares_sconfig_append(channel, &sconfig, &addr, 0, 0, NULL);
if (rc != ARES_SUCCESS) {
goto error; /* LCOV_EXCL_LINE: OutOfMemory */
}
- rc = ares__servers_update(channel, sconfig, ARES_FALSE);
- ares__llist_destroy(sconfig);
+ rc = ares_servers_update(channel, sconfig, ARES_FALSE);
+ ares_llist_destroy(sconfig);
if (rc != ARES_SUCCESS) {
goto error;
}
}
-#if defined(USE_WINSOCK)
-# define toolong(x) (x == -1) && (SOCKERRNO == WSAEFAULT)
-#elif defined(ENAMETOOLONG)
-# define toolong(x) \
- (x == -1) && ((SOCKERRNO == ENAMETOOLONG) || (SOCKERRNO == EINVAL))
-#else
-# define toolong(x) (x == -1) && (SOCKERRNO == EINVAL)
-#endif
-
if (channel->ndomains == 0) {
/* Derive a default domain search list from the kernel hostname,
* or set it to empty if the hostname isn't helpful.
@@ -187,9 +177,7 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
#ifndef HAVE_GETHOSTNAME
channel->ndomains = 0; /* default to none */
#else
- GETHOSTNAME_TYPE_ARG2 lenv = 64;
- size_t len = 64;
- int res;
+ size_t len = 256;
channel->ndomains = 0; /* default to none */
hostname = ares_malloc(len);
@@ -198,28 +186,11 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
goto error; /* LCOV_EXCL_LINE: OutOfMemory */
}
- do {
- res = gethostname(hostname, lenv);
-
- if (toolong(res)) {
- char *p;
- len *= 2;
- lenv *= 2;
- p = ares_realloc(hostname, len);
- if (!p) {
- rc = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
- goto error; /* LCOV_EXCL_LINE: OutOfMemory */
- }
- hostname = p;
- continue;
- } else if (res) {
- /* Lets not treat a gethostname failure as critical, since we
- * are ok if gethostname doesn't even exist */
- *hostname = '\0';
- break;
- }
-
- } while (res != 0);
+ if (gethostname(hostname, (GETHOSTNAME_TYPE_ARG2)len) != 0) {
+ /* Lets not treat a gethostname failure as critical, since we
+ * are ok if gethostname doesn't even exist */
+ *hostname = '\0';
+ }
dot = strchr(hostname, '.');
if (dot) {
@@ -286,13 +257,13 @@ int ares_init_options(ares_channel_t **channelptr,
/* One option where zero is valid, so set default value here */
channel->ndots = 1;
- status = ares__channel_threading_init(channel);
+ status = ares_channel_threading_init(channel);
if (status != ARES_SUCCESS) {
goto done;
}
/* Generate random key */
- channel->rand_state = ares__init_rand_state();
+ 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",
@@ -302,33 +273,33 @@ int ares_init_options(ares_channel_t **channelptr,
/* Initialize Server List */
channel->servers =
- ares__slist_create(channel->rand_state, server_sort_cb, server_destroy_cb);
+ ares_slist_create(channel->rand_state, server_sort_cb, server_destroy_cb);
if (channel->servers == NULL) {
status = ARES_ENOMEM;
goto done;
}
/* Initialize our lists of queries */
- channel->all_queries = ares__llist_create(NULL);
+ channel->all_queries = ares_llist_create(NULL);
if (channel->all_queries == NULL) {
status = ARES_ENOMEM;
goto done;
}
- channel->queries_by_qid = ares__htable_szvp_create(NULL);
+ channel->queries_by_qid = ares_htable_szvp_create(NULL);
if (channel->queries_by_qid == NULL) {
status = ARES_ENOMEM;
goto done;
}
channel->queries_by_timeout =
- ares__slist_create(channel->rand_state, ares_query_timeout_cmp_cb, NULL);
+ ares_slist_create(channel->rand_state, ares_query_timeout_cmp_cb, NULL);
if (channel->queries_by_timeout == NULL) {
status = ARES_ENOMEM;
goto done;
}
- channel->connnode_by_socket = ares__htable_asvp_create(NULL);
+ channel->connnode_by_socket = ares_htable_asvp_create(NULL);
if (channel->connnode_by_socket == NULL) {
status = ARES_ENOMEM;
goto done;
@@ -338,7 +309,7 @@ int ares_init_options(ares_channel_t **channelptr,
* precedence to lowest.
*/
- status = ares__init_by_options(channel, options, optmask);
+ status = ares_init_by_options(channel, options, optmask);
if (status != ARES_SUCCESS) {
DEBUGF(fprintf(stderr, "Error: init_by_options failed: %s\n",
ares_strerror(status)));
@@ -350,14 +321,14 @@ int ares_init_options(ares_channel_t **channelptr,
/* Go ahead and let it initialize the query cache even if the ttl is 0 and
* completely unused. This reduces the number of different code paths that
* might be followed even if there is a minor performance hit. */
- status = ares__qcache_create(channel->rand_state, channel->qcache_max_ttl,
- &channel->qcache);
+ status = ares_qcache_create(channel->rand_state, channel->qcache_max_ttl,
+ &channel->qcache);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
if (status == ARES_SUCCESS) {
- status = ares__init_by_sysconfig(channel);
+ status = ares_init_by_sysconfig(channel);
if (status != ARES_SUCCESS) {
DEBUGF(fprintf(stderr, "Error: init_by_sysconfig failed: %s\n",
ares_strerror(status)));
@@ -375,6 +346,8 @@ int ares_init_options(ares_channel_t **channelptr,
goto done;
}
+ ares_set_socket_functions_def(channel);
+
/* Initialize the event thread */
if (channel->optmask & ARES_OPT_EVENT_THREAD) {
ares_event_thread_t *e = NULL;
@@ -409,23 +382,23 @@ static void *ares_reinit_thread(void *arg)
ares_channel_t *channel = arg;
ares_status_t status;
- /* ares__init_by_sysconfig() will lock when applying the config, but not
+ /* ares_init_by_sysconfig() will lock when applying the config, but not
* when retrieving. */
- status = ares__init_by_sysconfig(channel);
+ status = ares_init_by_sysconfig(channel);
if (status != ARES_SUCCESS) {
DEBUGF(fprintf(stderr, "Error: init_by_sysconfig failed: %s\n",
ares_strerror(status)));
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
/* Flush cached queries on reinit */
if (status == ARES_SUCCESS && channel->qcache) {
- ares__qcache_flush(channel->qcache);
+ ares_qcache_flush(channel->qcache);
}
channel->reinit_pending = ARES_FALSE;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return NULL;
}
@@ -438,34 +411,34 @@ ares_status_t ares_reinit(ares_channel_t *channel)
return ARES_EFORMERR;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
/* If a reinit is already in process, lets not do it again. Or if we are
* shutting down, skip. */
if (!channel->sys_up || channel->reinit_pending) {
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return ARES_SUCCESS;
}
channel->reinit_pending = ARES_TRUE;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
if (ares_threadsafety()) {
/* clean up the prior reinit process's thread. We know the thread isn't
* running since reinit_pending was false */
if (channel->reinit_thread != NULL) {
void *rv;
- ares__thread_join(channel->reinit_thread, &rv);
+ ares_thread_join(channel->reinit_thread, &rv);
channel->reinit_thread = NULL;
}
/* Spawn a new thread */
status =
- ares__thread_create(&channel->reinit_thread, ares_reinit_thread, channel);
+ ares_thread_create(&channel->reinit_thread, ares_reinit_thread, channel);
if (status != ARES_SUCCESS) {
/* LCOV_EXCL_START: UntestablePath */
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
channel->reinit_pending = ARES_FALSE;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
/* LCOV_EXCL_STOP */
}
} else {
@@ -508,23 +481,25 @@ int ares_dup(ares_channel_t **dest, const ares_channel_t *src)
goto done;
}
- ares__channel_lock(src);
+ ares_channel_lock(src);
/* Now clone the options that ares_save_options() doesn't support, but are
* user-provided */
- (*dest)->sock_create_cb = src->sock_create_cb;
- (*dest)->sock_create_cb_data = src->sock_create_cb_data;
- (*dest)->sock_config_cb = src->sock_config_cb;
- (*dest)->sock_config_cb_data = src->sock_config_cb_data;
- (*dest)->sock_funcs = src->sock_funcs;
- (*dest)->sock_func_cb_data = src->sock_func_cb_data;
- (*dest)->server_state_cb = src->server_state_cb;
- (*dest)->server_state_cb_data = src->server_state_cb_data;
+ (*dest)->sock_create_cb = src->sock_create_cb;
+ (*dest)->sock_create_cb_data = src->sock_create_cb_data;
+ (*dest)->sock_config_cb = src->sock_config_cb;
+ (*dest)->sock_config_cb_data = src->sock_config_cb_data;
+ memcpy(&(*dest)->sock_funcs, &(src->sock_funcs), sizeof((*dest)->sock_funcs));
+ (*dest)->sock_func_cb_data = src->sock_func_cb_data;
+ (*dest)->legacy_sock_funcs = src->legacy_sock_funcs;
+ (*dest)->legacy_sock_funcs_cb_data = src->legacy_sock_funcs_cb_data;
+ (*dest)->server_state_cb = src->server_state_cb;
+ (*dest)->server_state_cb_data = src->server_state_cb_data;
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));
- ares__channel_unlock(src);
+ ares_channel_unlock(src);
/* Servers are a bit unique as ares_init_options() only allows ipv4 servers
* and not a port per server, but there are other user specified ways, that
@@ -568,9 +543,9 @@ void ares_set_local_ip4(ares_channel_t *channel, unsigned int local_ip)
if (channel == NULL) {
return;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
channel->local_ip4 = local_ip;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
}
/* local_ip6 should be 16 bytes in length */
@@ -579,9 +554,9 @@ void ares_set_local_ip6(ares_channel_t *channel, const unsigned char *local_ip6)
if (channel == NULL) {
return;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
memcpy(&channel->local_ip6, local_ip6, sizeof(channel->local_ip6));
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
}
/* local_dev_name should be null terminated. */
@@ -591,11 +566,11 @@ void ares_set_local_dev(ares_channel_t *channel, const char *local_dev_name)
return;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
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;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
}
int ares_set_sortlist(ares_channel_t *channel, const char *sortstr)
@@ -607,9 +582,9 @@ int ares_set_sortlist(ares_channel_t *channel, const char *sortstr)
if (!channel) {
return ARES_ENODATA;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- status = ares__parse_sortlist(&sortlist, &nsort, sortstr);
+ status = ares_parse_sortlist(&sortlist, &nsort, sortstr);
if (status == ARES_SUCCESS && sortlist) {
if (channel->sortlist) {
ares_free(channel->sortlist);
@@ -620,6 +595,6 @@ int ares_set_sortlist(ares_channel_t *channel, const char *sortstr)
/* Save sortlist as if it was passed in as an option */
channel->optmask |= ARES_OPT_SORTLIST;
}
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return (int)status;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_ipv6.h b/contrib/libs/c-ares/src/lib/ares_ipv6.h
index e7e0b6d3a5..5da341b010 100644
--- a/contrib/libs/c-ares/src/lib/ares_ipv6.h
+++ b/contrib/libs/c-ares/src/lib/ares_ipv6.h
@@ -94,7 +94,7 @@ struct addrinfo {
# ifdef IFNAMSIZ
# define IF_NAMESIZE IFNAMSIZ
# else
-# define IF_NAMESIZE 256
+# define IF_NAMESIZE 32
# endif
#endif
diff --git a/contrib/libs/c-ares/src/lib/ares_library_init.c b/contrib/libs/c-ares/src/lib/ares_library_init.c
index 01d8ff1a44..f22bb3d78c 100644
--- a/contrib/libs/c-ares/src/lib/ares_library_init.c
+++ b/contrib/libs/c-ares/src/lib/ares_library_init.c
@@ -52,8 +52,6 @@ static void *default_malloc(size_t size)
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);
@@ -63,13 +61,25 @@ static void default_free(void *p)
{
free(p);
}
-#else
-# define default_realloc realloc
-# define default_free free
-#endif
-void *(*ares_malloc)(size_t size) = default_malloc;
-void *(*ares_realloc)(void *ptr, size_t size) = default_realloc;
-void (*ares_free)(void *ptr) = default_free;
+
+static void *(*__ares_malloc)(size_t size) = default_malloc;
+static void *(*__ares_realloc)(void *ptr, size_t size) = default_realloc;
+static void (*__ares_free)(void *ptr) = default_free;
+
+void *ares_malloc(size_t size)
+{
+ return __ares_malloc(size);
+}
+
+void *ares_realloc(void *ptr, size_t size)
+{
+ return __ares_realloc(ptr, size);
+}
+
+void ares_free(void *ptr)
+{
+ __ares_free(ptr);
+}
void *ares_malloc_zero(size_t size)
{
@@ -115,13 +125,13 @@ int ares_library_init_mem(int flags, void *(*amalloc)(size_t size),
void *(*arealloc)(void *ptr, size_t size))
{
if (amalloc) {
- ares_malloc = amalloc;
+ __ares_malloc = amalloc;
}
if (arealloc) {
- ares_realloc = arealloc;
+ __ares_realloc = arealloc;
}
if (afree) {
- ares_free = afree;
+ __ares_free = afree;
}
return ares_library_init(flags);
}
@@ -143,9 +153,9 @@ void ares_library_cleanup_unsafe(void)
#endif
ares_init_flags = ARES_LIB_INIT_NONE;
- ares_malloc = malloc;
- ares_realloc = realloc;
- ares_free = free;
+ __ares_malloc = default_malloc;
+ __ares_realloc = default_realloc;
+ __ares_free = default_free;
}
int ares_library_initialized_unsafe(void)
diff --git a/contrib/libs/c-ares/src/lib/ares_metrics.c b/contrib/libs/c-ares/src/lib/ares_metrics.c
index 0e22fc37e7..13e34decc0 100644
--- a/contrib/libs/c-ares/src/lib/ares_metrics.c
+++ b/contrib/libs/c-ares/src/lib/ares_metrics.c
@@ -162,14 +162,14 @@ void ares_metrics_record(const ares_query_t *query, ares_server_t *server,
return;
}
- ares__tvnow(&now);
+ ares_tvnow(&now);
rcode = ares_dns_record_get_rcode(dnsrec);
if (rcode != ARES_RCODE_NOERROR && rcode != ARES_RCODE_NXDOMAIN) {
return;
}
- ares__timeval_diff(&tvdiff, &query->ts, &now);
+ ares_timeval_diff(&tvdiff, &query->ts, &now);
query_ms = (unsigned int)((tvdiff.sec * 1000) + (tvdiff.usec / 1000));
if (query_ms == 0) {
query_ms = 1;
diff --git a/contrib/libs/c-ares/src/lib/ares_options.c b/contrib/libs/c-ares/src/lib/ares_options.c
index 9aeb4bad3d..3082f33245 100644
--- a/contrib/libs/c-ares/src/lib/ares_options.c
+++ b/contrib/libs/c-ares/src/lib/ares_options.c
@@ -54,9 +54,9 @@ void ares_destroy_options(struct ares_options *options)
static struct in_addr *ares_save_opt_servers(const ares_channel_t *channel,
int *nservers)
{
- ares__slist_node_t *snode;
- struct in_addr *out =
- ares_malloc_zero(ares__slist_len(channel->servers) * sizeof(*out));
+ ares_slist_node_t *snode;
+ struct in_addr *out =
+ ares_malloc_zero(ares_slist_len(channel->servers) * sizeof(*out));
*nservers = 0;
@@ -64,9 +64,9 @@ static struct in_addr *ares_save_opt_servers(const ares_channel_t *channel,
return NULL;
}
- for (snode = ares__slist_node_first(channel->servers); snode != NULL;
- snode = ares__slist_node_next(snode)) {
- const ares_server_t *server = ares__slist_node_val(snode);
+ for (snode = ares_slist_node_first(channel->servers); snode != NULL;
+ snode = ares_slist_node_next(snode)) {
+ const ares_server_t *server = ares_slist_node_val(snode);
if (server->addr.family != AF_INET) {
continue;
@@ -111,7 +111,7 @@ int ares_save_options(const ares_channel_t *channel,
}
/* We convert ARES_OPT_TIMEOUT to ARES_OPT_TIMEOUTMS in
- * ares__init_by_options() */
+ * ares_init_by_options() */
if (channel->optmask & ARES_OPT_TIMEOUTMS) {
options->timeout = (int)channel->timeout;
}
@@ -238,28 +238,28 @@ int ares_save_options(const ares_channel_t *channel,
return ARES_SUCCESS;
}
-static ares_status_t ares__init_options_servers(ares_channel_t *channel,
- const struct in_addr *servers,
- size_t nservers)
+static ares_status_t ares_init_options_servers(ares_channel_t *channel,
+ const struct in_addr *servers,
+ size_t nservers)
{
- ares__llist_t *slist = NULL;
- ares_status_t status;
+ ares_llist_t *slist = NULL;
+ ares_status_t status;
- status = ares_in_addr_to_server_config_llist(servers, nservers, &slist);
+ status = ares_in_addr_to_sconfig_llist(servers, nservers, &slist);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__servers_update(channel, slist, ARES_TRUE);
+ status = ares_servers_update(channel, slist, ARES_TRUE);
- ares__llist_destroy(slist);
+ ares_llist_destroy(slist);
return status;
}
-ares_status_t ares__init_by_options(ares_channel_t *channel,
- const struct ares_options *options,
- int optmask)
+ares_status_t ares_init_by_options(ares_channel_t *channel,
+ const struct ares_options *options,
+ int optmask)
{
size_t i;
@@ -472,8 +472,8 @@ ares_status_t ares__init_by_options(ares_channel_t *channel,
optmask &= ~(ARES_OPT_SERVERS);
} else {
ares_status_t status;
- status = ares__init_options_servers(channel, options->servers,
- (size_t)options->nservers);
+ status = ares_init_options_servers(channel, options->servers,
+ (size_t)options->nservers);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
diff --git a/contrib/libs/c-ares/src/lib/ares__parse_into_addrinfo.c b/contrib/libs/c-ares/src/lib/ares_parse_into_addrinfo.c
index 65c94c0401..2108f9b861 100644
--- a/contrib/libs/c-ares/src/lib/ares__parse_into_addrinfo.c
+++ b/contrib/libs/c-ares/src/lib/ares_parse_into_addrinfo.c
@@ -45,10 +45,10 @@
#endif
-ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
- ares_bool_t cname_only_is_enodata,
- unsigned short port,
- struct ares_addrinfo *ai)
+ares_status_t ares_parse_into_addrinfo(const ares_dns_record_t *dnsrec,
+ ares_bool_t cname_only_is_enodata,
+ unsigned short port,
+ struct ares_addrinfo *ai)
{
ares_status_t status;
size_t i;
@@ -90,7 +90,7 @@ ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
*
* rname = ares_dns_rr_get_name(rr);
* if ((rtype == ARES_REC_TYPE_A || rtype == ARES_REC_TYPE_AAAA) &&
- * strcasecmp(rname, hostname) != 0) {
+ * !ares_strcaseeq(rname, hostname)) {
* continue;
* }
*/
@@ -103,7 +103,7 @@ ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
* 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);
+ cname = ares_append_addrinfo_cname(&cnames);
if (cname == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -147,7 +147,7 @@ ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
}
/* save the hostname as ai->name */
- if (ai->name == NULL || strcasecmp(ai->name, hostname) != 0) {
+ if (ai->name == NULL || !ares_strcaseeq(ai->name, hostname)) {
ares_free(ai->name);
ai->name = ares_strdup(hostname);
if (ai->name == NULL) {
@@ -157,18 +157,18 @@ ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
}
if (got_a || got_aaaa) {
- ares__addrinfo_cat_nodes(&ai->nodes, nodes);
+ ares_addrinfo_cat_nodes(&ai->nodes, nodes);
nodes = NULL;
}
if (got_cname) {
- ares__addrinfo_cat_cnames(&ai->cnames, cnames);
+ ares_addrinfo_cat_cnames(&ai->cnames, cnames);
cnames = NULL;
}
done:
- ares__freeaddrinfo_cnames(cnames);
- ares__freeaddrinfo_nodes(nodes);
+ ares_freeaddrinfo_cnames(cnames);
+ ares_freeaddrinfo_nodes(nodes);
/* compatibility */
if (status == ARES_EBADNAME) {
diff --git a/contrib/libs/c-ares/src/lib/ares_platform.c b/contrib/libs/c-ares/src/lib/ares_platform.c
deleted file mode 100644
index 8f0a1dbffb..0000000000
--- a/contrib/libs/c-ares/src/lib/ares_platform.c
+++ /dev/null
@@ -1,11047 +0,0 @@
-/* MIT License
- *
- * Copyright (c) 1998 Massachusetts Institute of Technology
- * Copyright (c) 2004 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_private.h"
-#include "ares_platform.h"
-
-#if defined(_WIN32) && !defined(MSDOS)
-
-# define V_PLATFORM_WIN32s 0
-# define V_PLATFORM_WIN32_WINDOWS 1
-# define V_PLATFORM_WIN32_NT 2
-# define V_PLATFORM_WIN32_CE 3
-
-win_platform ares__getplatform(void)
-{
- OSVERSIONINFOEX OsvEx;
-
- memset(&OsvEx, 0, sizeof(OsvEx));
- OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
-# ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable : 4996) /* warning C4996: 'GetVersionExW': was \
- declared deprecated */
-# endif
- if (!GetVersionEx((void *)&OsvEx)) {
- memset(&OsvEx, 0, sizeof(OsvEx));
- OsvEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- if (!GetVersionEx((void *)&OsvEx)) {
- return WIN_UNKNOWN;
- }
- }
-# ifdef _MSC_VER
-# pragma warning(pop)
-# endif
-
- switch (OsvEx.dwPlatformId) {
- case V_PLATFORM_WIN32s:
- return WIN_3X;
-
- case V_PLATFORM_WIN32_WINDOWS:
- return WIN_9X;
-
- case V_PLATFORM_WIN32_NT:
- return WIN_NT;
-
- case V_PLATFORM_WIN32_CE:
- return WIN_CE;
-
- default:
- return WIN_UNKNOWN;
- }
-}
-
-#endif /* _WIN32 && ! MSDOS */
-
-#if defined(_WIN32_WCE)
-
-/* IANA Well Known Ports are in range 0-1023 */
-# define USE_IANA_WELL_KNOWN_PORTS 1
-
-/* IANA Registered Ports are in range 1024-49151 */
-# define USE_IANA_REGISTERED_PORTS 1
-
-struct pvt_servent {
- char *s_name;
- char **s_aliases;
- unsigned short s_port;
- char *s_proto;
-};
-
-/*
- * Ref: http://www.iana.org/assignments/port-numbers
- */
-
-static struct pvt_servent IANAports[] = {
-# ifdef USE_IANA_WELL_KNOWN_PORTS
- { "tcpmux", { NULL }, 1, "tcp" },
- { "tcpmux", { NULL }, 1, "udp" },
- { "compressnet", { NULL }, 2, "tcp" },
- { "compressnet", { NULL }, 2, "udp" },
- { "compressnet", { NULL }, 3, "tcp" },
- { "compressnet", { NULL }, 3, "udp" },
- { "rje", { NULL }, 5, "tcp" },
- { "rje", { NULL }, 5, "udp" },
- { "echo", { NULL }, 7, "tcp" },
- { "echo", { NULL }, 7, "udp" },
- { "discard", { NULL }, 9, "tcp" },
- { "discard", { NULL }, 9, "udp" },
- { "discard", { NULL }, 9, "sctp" },
- { "discard", { NULL }, 9, "dccp" },
- { "systat", { NULL }, 11, "tcp" },
- { "systat", { NULL }, 11, "udp" },
- { "daytime", { NULL }, 13, "tcp" },
- { "daytime", { NULL }, 13, "udp" },
- { "qotd", { NULL }, 17, "tcp" },
- { "qotd", { NULL }, 17, "udp" },
- { "msp", { NULL }, 18, "tcp" },
- { "msp", { NULL }, 18, "udp" },
- { "chargen", { NULL }, 19, "tcp" },
- { "chargen", { NULL }, 19, "udp" },
- { "ftp-data", { NULL }, 20, "tcp" },
- { "ftp-data", { NULL }, 20, "udp" },
- { "ftp-data", { NULL }, 20, "sctp" },
- { "ftp", { NULL }, 21, "tcp" },
- { "ftp", { NULL }, 21, "udp" },
- { "ftp", { NULL }, 21, "sctp" },
- { "ssh", { NULL }, 22, "tcp" },
- { "ssh", { NULL }, 22, "udp" },
- { "ssh", { NULL }, 22, "sctp" },
- { "telnet", { NULL }, 23, "tcp" },
- { "telnet", { NULL }, 23, "udp" },
- { "smtp", { NULL }, 25, "tcp" },
- { "smtp", { NULL }, 25, "udp" },
- { "nsw-fe", { NULL }, 27, "tcp" },
- { "nsw-fe", { NULL }, 27, "udp" },
- { "msg-icp", { NULL }, 29, "tcp" },
- { "msg-icp", { NULL }, 29, "udp" },
- { "msg-auth", { NULL }, 31, "tcp" },
- { "msg-auth", { NULL }, 31, "udp" },
- { "dsp", { NULL }, 33, "tcp" },
- { "dsp", { NULL }, 33, "udp" },
- { "time", { NULL }, 37, "tcp" },
- { "time", { NULL }, 37, "udp" },
- { "rap", { NULL }, 38, "tcp" },
- { "rap", { NULL }, 38, "udp" },
- { "rlp", { NULL }, 39, "tcp" },
- { "rlp", { NULL }, 39, "udp" },
- { "graphics", { NULL }, 41, "tcp" },
- { "graphics", { NULL }, 41, "udp" },
- { "name", { NULL }, 42, "tcp" },
- { "name", { NULL }, 42, "udp" },
- { "nameserver", { NULL }, 42, "tcp" },
- { "nameserver", { NULL }, 42, "udp" },
- { "nicname", { NULL }, 43, "tcp" },
- { "nicname", { NULL }, 43, "udp" },
- { "mpm-flags", { NULL }, 44, "tcp" },
- { "mpm-flags", { NULL }, 44, "udp" },
- { "mpm", { NULL }, 45, "tcp" },
- { "mpm", { NULL }, 45, "udp" },
- { "mpm-snd", { NULL }, 46, "tcp" },
- { "mpm-snd", { NULL }, 46, "udp" },
- { "ni-ftp", { NULL }, 47, "tcp" },
- { "ni-ftp", { NULL }, 47, "udp" },
- { "auditd", { NULL }, 48, "tcp" },
- { "auditd", { NULL }, 48, "udp" },
- { "tacacs", { NULL }, 49, "tcp" },
- { "tacacs", { NULL }, 49, "udp" },
- { "re-mail-ck", { NULL }, 50, "tcp" },
- { "re-mail-ck", { NULL }, 50, "udp" },
- { "la-maint", { NULL }, 51, "tcp" },
- { "la-maint", { NULL }, 51, "udp" },
- { "xns-time", { NULL }, 52, "tcp" },
- { "xns-time", { NULL }, 52, "udp" },
- { "domain", { NULL }, 53, "tcp" },
- { "domain", { NULL }, 53, "udp" },
- { "xns-ch", { NULL }, 54, "tcp" },
- { "xns-ch", { NULL }, 54, "udp" },
- { "isi-gl", { NULL }, 55, "tcp" },
- { "isi-gl", { NULL }, 55, "udp" },
- { "xns-auth", { NULL }, 56, "tcp" },
- { "xns-auth", { NULL }, 56, "udp" },
- { "xns-mail", { NULL }, 58, "tcp" },
- { "xns-mail", { NULL }, 58, "udp" },
- { "ni-mail", { NULL }, 61, "tcp" },
- { "ni-mail", { NULL }, 61, "udp" },
- { "acas", { NULL }, 62, "tcp" },
- { "acas", { NULL }, 62, "udp" },
- { "whois++", { NULL }, 63, "tcp" },
- { "whois++", { NULL }, 63, "udp" },
- { "covia", { NULL }, 64, "tcp" },
- { "covia", { NULL }, 64, "udp" },
- { "tacacs-ds", { NULL }, 65, "tcp" },
- { "tacacs-ds", { NULL }, 65, "udp" },
- { "sql*net", { NULL }, 66, "tcp" },
- { "sql*net", { NULL }, 66, "udp" },
- { "bootps", { NULL }, 67, "tcp" },
- { "bootps", { NULL }, 67, "udp" },
- { "bootpc", { NULL }, 68, "tcp" },
- { "bootpc", { NULL }, 68, "udp" },
- { "tftp", { NULL }, 69, "tcp" },
- { "tftp", { NULL }, 69, "udp" },
- { "gopher", { NULL }, 70, "tcp" },
- { "gopher", { NULL }, 70, "udp" },
- { "netrjs-1", { NULL }, 71, "tcp" },
- { "netrjs-1", { NULL }, 71, "udp" },
- { "netrjs-2", { NULL }, 72, "tcp" },
- { "netrjs-2", { NULL }, 72, "udp" },
- { "netrjs-3", { NULL }, 73, "tcp" },
- { "netrjs-3", { NULL }, 73, "udp" },
- { "netrjs-4", { NULL }, 74, "tcp" },
- { "netrjs-4", { NULL }, 74, "udp" },
- { "deos", { NULL }, 76, "tcp" },
- { "deos", { NULL }, 76, "udp" },
- { "vettcp", { NULL }, 78, "tcp" },
- { "vettcp", { NULL }, 78, "udp" },
- { "finger", { NULL }, 79, "tcp" },
- { "finger", { NULL }, 79, "udp" },
- { "http", { NULL }, 80, "tcp" },
- { "http", { NULL }, 80, "udp" },
- { "www", { NULL }, 80, "tcp" },
- { "www", { NULL }, 80, "udp" },
- { "www-http", { NULL }, 80, "tcp" },
- { "www-http", { NULL }, 80, "udp" },
- { "http", { NULL }, 80, "sctp" },
- { "xfer", { NULL }, 82, "tcp" },
- { "xfer", { NULL }, 82, "udp" },
- { "mit-ml-dev", { NULL }, 83, "tcp" },
- { "mit-ml-dev", { NULL }, 83, "udp" },
- { "ctf", { NULL }, 84, "tcp" },
- { "ctf", { NULL }, 84, "udp" },
- { "mit-ml-dev", { NULL }, 85, "tcp" },
- { "mit-ml-dev", { NULL }, 85, "udp" },
- { "mfcobol", { NULL }, 86, "tcp" },
- { "mfcobol", { NULL }, 86, "udp" },
- { "kerberos", { NULL }, 88, "tcp" },
- { "kerberos", { NULL }, 88, "udp" },
- { "su-mit-tg", { NULL }, 89, "tcp" },
- { "su-mit-tg", { NULL }, 89, "udp" },
- { "dnsix", { NULL }, 90, "tcp" },
- { "dnsix", { NULL }, 90, "udp" },
- { "mit-dov", { NULL }, 91, "tcp" },
- { "mit-dov", { NULL }, 91, "udp" },
- { "npp", { NULL }, 92, "tcp" },
- { "npp", { NULL }, 92, "udp" },
- { "dcp", { NULL }, 93, "tcp" },
- { "dcp", { NULL }, 93, "udp" },
- { "objcall", { NULL }, 94, "tcp" },
- { "objcall", { NULL }, 94, "udp" },
- { "supdup", { NULL }, 95, "tcp" },
- { "supdup", { NULL }, 95, "udp" },
- { "dixie", { NULL }, 96, "tcp" },
- { "dixie", { NULL }, 96, "udp" },
- { "swift-rvf", { NULL }, 97, "tcp" },
- { "swift-rvf", { NULL }, 97, "udp" },
- { "tacnews", { NULL }, 98, "tcp" },
- { "tacnews", { NULL }, 98, "udp" },
- { "metagram", { NULL }, 99, "tcp" },
- { "metagram", { NULL }, 99, "udp" },
- { "newacct", { NULL }, 100, "tcp" },
- { "hostname", { NULL }, 101, "tcp" },
- { "hostname", { NULL }, 101, "udp" },
- { "iso-tsap", { NULL }, 102, "tcp" },
- { "iso-tsap", { NULL }, 102, "udp" },
- { "gppitnp", { NULL }, 103, "tcp" },
- { "gppitnp", { NULL }, 103, "udp" },
- { "acr-nema", { NULL }, 104, "tcp" },
- { "acr-nema", { NULL }, 104, "udp" },
- { "cso", { NULL }, 105, "tcp" },
- { "cso", { NULL }, 105, "udp" },
- { "csnet-ns", { NULL }, 105, "tcp" },
- { "csnet-ns", { NULL }, 105, "udp" },
- { "3com-tsmux", { NULL }, 106, "tcp" },
- { "3com-tsmux", { NULL }, 106, "udp" },
- { "rtelnet", { NULL }, 107, "tcp" },
- { "rtelnet", { NULL }, 107, "udp" },
- { "snagas", { NULL }, 108, "tcp" },
- { "snagas", { NULL }, 108, "udp" },
- { "pop2", { NULL }, 109, "tcp" },
- { "pop2", { NULL }, 109, "udp" },
- { "pop3", { NULL }, 110, "tcp" },
- { "pop3", { NULL }, 110, "udp" },
- { "sunrpc", { NULL }, 111, "tcp" },
- { "sunrpc", { NULL }, 111, "udp" },
- { "mcidas", { NULL }, 112, "tcp" },
- { "mcidas", { NULL }, 112, "udp" },
- { "ident", { NULL }, 113, "tcp" },
- { "auth", { NULL }, 113, "tcp" },
- { "auth", { NULL }, 113, "udp" },
- { "sftp", { NULL }, 115, "tcp" },
- { "sftp", { NULL }, 115, "udp" },
- { "ansanotify", { NULL }, 116, "tcp" },
- { "ansanotify", { NULL }, 116, "udp" },
- { "uucp-path", { NULL }, 117, "tcp" },
- { "uucp-path", { NULL }, 117, "udp" },
- { "sqlserv", { NULL }, 118, "tcp" },
- { "sqlserv", { NULL }, 118, "udp" },
- { "nntp", { NULL }, 119, "tcp" },
- { "nntp", { NULL }, 119, "udp" },
- { "cfdptkt", { NULL }, 120, "tcp" },
- { "cfdptkt", { NULL }, 120, "udp" },
- { "erpc", { NULL }, 121, "tcp" },
- { "erpc", { NULL }, 121, "udp" },
- { "smakynet", { NULL }, 122, "tcp" },
- { "smakynet", { NULL }, 122, "udp" },
- { "ntp", { NULL }, 123, "tcp" },
- { "ntp", { NULL }, 123, "udp" },
- { "ansatrader", { NULL }, 124, "tcp" },
- { "ansatrader", { NULL }, 124, "udp" },
- { "locus-map", { NULL }, 125, "tcp" },
- { "locus-map", { NULL }, 125, "udp" },
- { "nxedit", { NULL }, 126, "tcp" },
- { "nxedit", { NULL }, 126, "udp" },
- { "locus-con", { NULL }, 127, "tcp" },
- { "locus-con", { NULL }, 127, "udp" },
- { "gss-xlicen", { NULL }, 128, "tcp" },
- { "gss-xlicen", { NULL }, 128, "udp" },
- { "pwdgen", { NULL }, 129, "tcp" },
- { "pwdgen", { NULL }, 129, "udp" },
- { "cisco-fna", { NULL }, 130, "tcp" },
- { "cisco-fna", { NULL }, 130, "udp" },
- { "cisco-tna", { NULL }, 131, "tcp" },
- { "cisco-tna", { NULL }, 131, "udp" },
- { "cisco-sys", { NULL }, 132, "tcp" },
- { "cisco-sys", { NULL }, 132, "udp" },
- { "statsrv", { NULL }, 133, "tcp" },
- { "statsrv", { NULL }, 133, "udp" },
- { "ingres-net", { NULL }, 134, "tcp" },
- { "ingres-net", { NULL }, 134, "udp" },
- { "epmap", { NULL }, 135, "tcp" },
- { "epmap", { NULL }, 135, "udp" },
- { "profile", { NULL }, 136, "tcp" },
- { "profile", { NULL }, 136, "udp" },
- { "netbios-ns", { NULL }, 137, "tcp" },
- { "netbios-ns", { NULL }, 137, "udp" },
- { "netbios-dgm", { NULL }, 138, "tcp" },
- { "netbios-dgm", { NULL }, 138, "udp" },
- { "netbios-ssn", { NULL }, 139, "tcp" },
- { "netbios-ssn", { NULL }, 139, "udp" },
- { "emfis-data", { NULL }, 140, "tcp" },
- { "emfis-data", { NULL }, 140, "udp" },
- { "emfis-cntl", { NULL }, 141, "tcp" },
- { "emfis-cntl", { NULL }, 141, "udp" },
- { "bl-idm", { NULL }, 142, "tcp" },
- { "bl-idm", { NULL }, 142, "udp" },
- { "imap", { NULL }, 143, "tcp" },
- { "imap", { NULL }, 143, "udp" },
- { "uma", { NULL }, 144, "tcp" },
- { "uma", { NULL }, 144, "udp" },
- { "uaac", { NULL }, 145, "tcp" },
- { "uaac", { NULL }, 145, "udp" },
- { "iso-tp0", { NULL }, 146, "tcp" },
- { "iso-tp0", { NULL }, 146, "udp" },
- { "iso-ip", { NULL }, 147, "tcp" },
- { "iso-ip", { NULL }, 147, "udp" },
- { "jargon", { NULL }, 148, "tcp" },
- { "jargon", { NULL }, 148, "udp" },
- { "aed-512", { NULL }, 149, "tcp" },
- { "aed-512", { NULL }, 149, "udp" },
- { "sql-net", { NULL }, 150, "tcp" },
- { "sql-net", { NULL }, 150, "udp" },
- { "hems", { NULL }, 151, "tcp" },
- { "hems", { NULL }, 151, "udp" },
- { "bftp", { NULL }, 152, "tcp" },
- { "bftp", { NULL }, 152, "udp" },
- { "sgmp", { NULL }, 153, "tcp" },
- { "sgmp", { NULL }, 153, "udp" },
- { "netsc-prod", { NULL }, 154, "tcp" },
- { "netsc-prod", { NULL }, 154, "udp" },
- { "netsc-dev", { NULL }, 155, "tcp" },
- { "netsc-dev", { NULL }, 155, "udp" },
- { "sqlsrv", { NULL }, 156, "tcp" },
- { "sqlsrv", { NULL }, 156, "udp" },
- { "knet-cmp", { NULL }, 157, "tcp" },
- { "knet-cmp", { NULL }, 157, "udp" },
- { "pcmail-srv", { NULL }, 158, "tcp" },
- { "pcmail-srv", { NULL }, 158, "udp" },
- { "nss-routing", { NULL }, 159, "tcp" },
- { "nss-routing", { NULL }, 159, "udp" },
- { "sgmp-traps", { NULL }, 160, "tcp" },
- { "sgmp-traps", { NULL }, 160, "udp" },
- { "snmp", { NULL }, 161, "tcp" },
- { "snmp", { NULL }, 161, "udp" },
- { "snmptrap", { NULL }, 162, "tcp" },
- { "snmptrap", { NULL }, 162, "udp" },
- { "cmip-man", { NULL }, 163, "tcp" },
- { "cmip-man", { NULL }, 163, "udp" },
- { "cmip-agent", { NULL }, 164, "tcp" },
- { "cmip-agent", { NULL }, 164, "udp" },
- { "xns-courier", { NULL }, 165, "tcp" },
- { "xns-courier", { NULL }, 165, "udp" },
- { "s-net", { NULL }, 166, "tcp" },
- { "s-net", { NULL }, 166, "udp" },
- { "namp", { NULL }, 167, "tcp" },
- { "namp", { NULL }, 167, "udp" },
- { "rsvd", { NULL }, 168, "tcp" },
- { "rsvd", { NULL }, 168, "udp" },
- { "send", { NULL }, 169, "tcp" },
- { "send", { NULL }, 169, "udp" },
- { "print-srv", { NULL }, 170, "tcp" },
- { "print-srv", { NULL }, 170, "udp" },
- { "multiplex", { NULL }, 171, "tcp" },
- { "multiplex", { NULL }, 171, "udp" },
- { "cl/1", { NULL }, 172, "tcp" },
- { "cl/1", { NULL }, 172, "udp" },
- { "xyplex-mux", { NULL }, 173, "tcp" },
- { "xyplex-mux", { NULL }, 173, "udp" },
- { "mailq", { NULL }, 174, "tcp" },
- { "mailq", { NULL }, 174, "udp" },
- { "vmnet", { NULL }, 175, "tcp" },
- { "vmnet", { NULL }, 175, "udp" },
- { "genrad-mux", { NULL }, 176, "tcp" },
- { "genrad-mux", { NULL }, 176, "udp" },
- { "xdmcp", { NULL }, 177, "tcp" },
- { "xdmcp", { NULL }, 177, "udp" },
- { "nextstep", { NULL }, 178, "tcp" },
- { "nextstep", { NULL }, 178, "udp" },
- { "bgp", { NULL }, 179, "tcp" },
- { "bgp", { NULL }, 179, "udp" },
- { "bgp", { NULL }, 179, "sctp" },
- { "ris", { NULL }, 180, "tcp" },
- { "ris", { NULL }, 180, "udp" },
- { "unify", { NULL }, 181, "tcp" },
- { "unify", { NULL }, 181, "udp" },
- { "audit", { NULL }, 182, "tcp" },
- { "audit", { NULL }, 182, "udp" },
- { "ocbinder", { NULL }, 183, "tcp" },
- { "ocbinder", { NULL }, 183, "udp" },
- { "ocserver", { NULL }, 184, "tcp" },
- { "ocserver", { NULL }, 184, "udp" },
- { "remote-kis", { NULL }, 185, "tcp" },
- { "remote-kis", { NULL }, 185, "udp" },
- { "kis", { NULL }, 186, "tcp" },
- { "kis", { NULL }, 186, "udp" },
- { "aci", { NULL }, 187, "tcp" },
- { "aci", { NULL }, 187, "udp" },
- { "mumps", { NULL }, 188, "tcp" },
- { "mumps", { NULL }, 188, "udp" },
- { "qft", { NULL }, 189, "tcp" },
- { "qft", { NULL }, 189, "udp" },
- { "gacp", { NULL }, 190, "tcp" },
- { "gacp", { NULL }, 190, "udp" },
- { "prospero", { NULL }, 191, "tcp" },
- { "prospero", { NULL }, 191, "udp" },
- { "osu-nms", { NULL }, 192, "tcp" },
- { "osu-nms", { NULL }, 192, "udp" },
- { "srmp", { NULL }, 193, "tcp" },
- { "srmp", { NULL }, 193, "udp" },
- { "irc", { NULL }, 194, "tcp" },
- { "irc", { NULL }, 194, "udp" },
- { "dn6-nlm-aud", { NULL }, 195, "tcp" },
- { "dn6-nlm-aud", { NULL }, 195, "udp" },
- { "dn6-smm-red", { NULL }, 196, "tcp" },
- { "dn6-smm-red", { NULL }, 196, "udp" },
- { "dls", { NULL }, 197, "tcp" },
- { "dls", { NULL }, 197, "udp" },
- { "dls-mon", { NULL }, 198, "tcp" },
- { "dls-mon", { NULL }, 198, "udp" },
- { "smux", { NULL }, 199, "tcp" },
- { "smux", { NULL }, 199, "udp" },
- { "src", { NULL }, 200, "tcp" },
- { "src", { NULL }, 200, "udp" },
- { "at-rtmp", { NULL }, 201, "tcp" },
- { "at-rtmp", { NULL }, 201, "udp" },
- { "at-nbp", { NULL }, 202, "tcp" },
- { "at-nbp", { NULL }, 202, "udp" },
- { "at-3", { NULL }, 203, "tcp" },
- { "at-3", { NULL }, 203, "udp" },
- { "at-echo", { NULL }, 204, "tcp" },
- { "at-echo", { NULL }, 204, "udp" },
- { "at-5", { NULL }, 205, "tcp" },
- { "at-5", { NULL }, 205, "udp" },
- { "at-zis", { NULL }, 206, "tcp" },
- { "at-zis", { NULL }, 206, "udp" },
- { "at-7", { NULL }, 207, "tcp" },
- { "at-7", { NULL }, 207, "udp" },
- { "at-8", { NULL }, 208, "tcp" },
- { "at-8", { NULL }, 208, "udp" },
- { "qmtp", { NULL }, 209, "tcp" },
- { "qmtp", { NULL }, 209, "udp" },
- { "z39.50", { NULL }, 210, "tcp" },
- { "z39.50", { NULL }, 210, "udp" },
- { "914c/g", { NULL }, 211, "tcp" },
- { "914c/g", { NULL }, 211, "udp" },
- { "anet", { NULL }, 212, "tcp" },
- { "anet", { NULL }, 212, "udp" },
- { "ipx", { NULL }, 213, "tcp" },
- { "ipx", { NULL }, 213, "udp" },
- { "vmpwscs", { NULL }, 214, "tcp" },
- { "vmpwscs", { NULL }, 214, "udp" },
- { "softpc", { NULL }, 215, "tcp" },
- { "softpc", { NULL }, 215, "udp" },
- { "CAIlic", { NULL }, 216, "tcp" },
- { "CAIlic", { NULL }, 216, "udp" },
- { "dbase", { NULL }, 217, "tcp" },
- { "dbase", { NULL }, 217, "udp" },
- { "mpp", { NULL }, 218, "tcp" },
- { "mpp", { NULL }, 218, "udp" },
- { "uarps", { NULL }, 219, "tcp" },
- { "uarps", { NULL }, 219, "udp" },
- { "imap3", { NULL }, 220, "tcp" },
- { "imap3", { NULL }, 220, "udp" },
- { "fln-spx", { NULL }, 221, "tcp" },
- { "fln-spx", { NULL }, 221, "udp" },
- { "rsh-spx", { NULL }, 222, "tcp" },
- { "rsh-spx", { NULL }, 222, "udp" },
- { "cdc", { NULL }, 223, "tcp" },
- { "cdc", { NULL }, 223, "udp" },
- { "masqdialer", { NULL }, 224, "tcp" },
- { "masqdialer", { NULL }, 224, "udp" },
- { "direct", { NULL }, 242, "tcp" },
- { "direct", { NULL }, 242, "udp" },
- { "sur-meas", { NULL }, 243, "tcp" },
- { "sur-meas", { NULL }, 243, "udp" },
- { "inbusiness", { NULL }, 244, "tcp" },
- { "inbusiness", { NULL }, 244, "udp" },
- { "link", { NULL }, 245, "tcp" },
- { "link", { NULL }, 245, "udp" },
- { "dsp3270", { NULL }, 246, "tcp" },
- { "dsp3270", { NULL }, 246, "udp" },
- { "subntbcst_tftp", { NULL }, 247, "tcp" },
- { "subntbcst_tftp", { NULL }, 247, "udp" },
- { "bhfhs", { NULL }, 248, "tcp" },
- { "bhfhs", { NULL }, 248, "udp" },
- { "rap", { NULL }, 256, "tcp" },
- { "rap", { NULL }, 256, "udp" },
- { "set", { NULL }, 257, "tcp" },
- { "set", { NULL }, 257, "udp" },
- { "esro-gen", { NULL }, 259, "tcp" },
- { "esro-gen", { NULL }, 259, "udp" },
- { "openport", { NULL }, 260, "tcp" },
- { "openport", { NULL }, 260, "udp" },
- { "nsiiops", { NULL }, 261, "tcp" },
- { "nsiiops", { NULL }, 261, "udp" },
- { "arcisdms", { NULL }, 262, "tcp" },
- { "arcisdms", { NULL }, 262, "udp" },
- { "hdap", { NULL }, 263, "tcp" },
- { "hdap", { NULL }, 263, "udp" },
- { "bgmp", { NULL }, 264, "tcp" },
- { "bgmp", { NULL }, 264, "udp" },
- { "x-bone-ctl", { NULL }, 265, "tcp" },
- { "x-bone-ctl", { NULL }, 265, "udp" },
- { "sst", { NULL }, 266, "tcp" },
- { "sst", { NULL }, 266, "udp" },
- { "td-service", { NULL }, 267, "tcp" },
- { "td-service", { NULL }, 267, "udp" },
- { "td-replica", { NULL }, 268, "tcp" },
- { "td-replica", { NULL }, 268, "udp" },
- { "manet", { NULL }, 269, "tcp" },
- { "manet", { NULL }, 269, "udp" },
- { "gist", { NULL }, 270, "udp" },
- { "http-mgmt", { NULL }, 280, "tcp" },
- { "http-mgmt", { NULL }, 280, "udp" },
- { "personal-link", { NULL }, 281, "tcp" },
- { "personal-link", { NULL }, 281, "udp" },
- { "cableport-ax", { NULL }, 282, "tcp" },
- { "cableport-ax", { NULL }, 282, "udp" },
- { "rescap", { NULL }, 283, "tcp" },
- { "rescap", { NULL }, 283, "udp" },
- { "corerjd", { NULL }, 284, "tcp" },
- { "corerjd", { NULL }, 284, "udp" },
- { "fxp", { NULL }, 286, "tcp" },
- { "fxp", { NULL }, 286, "udp" },
- { "k-block", { NULL }, 287, "tcp" },
- { "k-block", { NULL }, 287, "udp" },
- { "novastorbakcup", { NULL }, 308, "tcp" },
- { "novastorbakcup", { NULL }, 308, "udp" },
- { "entrusttime", { NULL }, 309, "tcp" },
- { "entrusttime", { NULL }, 309, "udp" },
- { "bhmds", { NULL }, 310, "tcp" },
- { "bhmds", { NULL }, 310, "udp" },
- { "asip-webadmin", { NULL }, 311, "tcp" },
- { "asip-webadmin", { NULL }, 311, "udp" },
- { "vslmp", { NULL }, 312, "tcp" },
- { "vslmp", { NULL }, 312, "udp" },
- { "magenta-logic", { NULL }, 313, "tcp" },
- { "magenta-logic", { NULL }, 313, "udp" },
- { "opalis-robot", { NULL }, 314, "tcp" },
- { "opalis-robot", { NULL }, 314, "udp" },
- { "dpsi", { NULL }, 315, "tcp" },
- { "dpsi", { NULL }, 315, "udp" },
- { "decauth", { NULL }, 316, "tcp" },
- { "decauth", { NULL }, 316, "udp" },
- { "zannet", { NULL }, 317, "tcp" },
- { "zannet", { NULL }, 317, "udp" },
- { "pkix-timestamp", { NULL }, 318, "tcp" },
- { "pkix-timestamp", { NULL }, 318, "udp" },
- { "ptp-event", { NULL }, 319, "tcp" },
- { "ptp-event", { NULL }, 319, "udp" },
- { "ptp-general", { NULL }, 320, "tcp" },
- { "ptp-general", { NULL }, 320, "udp" },
- { "pip", { NULL }, 321, "tcp" },
- { "pip", { NULL }, 321, "udp" },
- { "rtsps", { NULL }, 322, "tcp" },
- { "rtsps", { NULL }, 322, "udp" },
- { "texar", { NULL }, 333, "tcp" },
- { "texar", { NULL }, 333, "udp" },
- { "pdap", { NULL }, 344, "tcp" },
- { "pdap", { NULL }, 344, "udp" },
- { "pawserv", { NULL }, 345, "tcp" },
- { "pawserv", { NULL }, 345, "udp" },
- { "zserv", { NULL }, 346, "tcp" },
- { "zserv", { NULL }, 346, "udp" },
- { "fatserv", { NULL }, 347, "tcp" },
- { "fatserv", { NULL }, 347, "udp" },
- { "csi-sgwp", { NULL }, 348, "tcp" },
- { "csi-sgwp", { NULL }, 348, "udp" },
- { "mftp", { NULL }, 349, "tcp" },
- { "mftp", { NULL }, 349, "udp" },
- { "matip-type-a", { NULL }, 350, "tcp" },
- { "matip-type-a", { NULL }, 350, "udp" },
- { "matip-type-b", { NULL }, 351, "tcp" },
- { "matip-type-b", { NULL }, 351, "udp" },
- { "bhoetty", { NULL }, 351, "tcp" },
- { "bhoetty", { NULL }, 351, "udp" },
- { "dtag-ste-sb", { NULL }, 352, "tcp" },
- { "dtag-ste-sb", { NULL }, 352, "udp" },
- { "bhoedap4", { NULL }, 352, "tcp" },
- { "bhoedap4", { NULL }, 352, "udp" },
- { "ndsauth", { NULL }, 353, "tcp" },
- { "ndsauth", { NULL }, 353, "udp" },
- { "bh611", { NULL }, 354, "tcp" },
- { "bh611", { NULL }, 354, "udp" },
- { "datex-asn", { NULL }, 355, "tcp" },
- { "datex-asn", { NULL }, 355, "udp" },
- { "cloanto-net-1", { NULL }, 356, "tcp" },
- { "cloanto-net-1", { NULL }, 356, "udp" },
- { "bhevent", { NULL }, 357, "tcp" },
- { "bhevent", { NULL }, 357, "udp" },
- { "shrinkwrap", { NULL }, 358, "tcp" },
- { "shrinkwrap", { NULL }, 358, "udp" },
- { "nsrmp", { NULL }, 359, "tcp" },
- { "nsrmp", { NULL }, 359, "udp" },
- { "scoi2odialog", { NULL }, 360, "tcp" },
- { "scoi2odialog", { NULL }, 360, "udp" },
- { "semantix", { NULL }, 361, "tcp" },
- { "semantix", { NULL }, 361, "udp" },
- { "srssend", { NULL }, 362, "tcp" },
- { "srssend", { NULL }, 362, "udp" },
- { "rsvp_tunnel", { NULL }, 363, "tcp" },
- { "rsvp_tunnel", { NULL }, 363, "udp" },
- { "aurora-cmgr", { NULL }, 364, "tcp" },
- { "aurora-cmgr", { NULL }, 364, "udp" },
- { "dtk", { NULL }, 365, "tcp" },
- { "dtk", { NULL }, 365, "udp" },
- { "odmr", { NULL }, 366, "tcp" },
- { "odmr", { NULL }, 366, "udp" },
- { "mortgageware", { NULL }, 367, "tcp" },
- { "mortgageware", { NULL }, 367, "udp" },
- { "qbikgdp", { NULL }, 368, "tcp" },
- { "qbikgdp", { NULL }, 368, "udp" },
- { "rpc2portmap", { NULL }, 369, "tcp" },
- { "rpc2portmap", { NULL }, 369, "udp" },
- { "codaauth2", { NULL }, 370, "tcp" },
- { "codaauth2", { NULL }, 370, "udp" },
- { "clearcase", { NULL }, 371, "tcp" },
- { "clearcase", { NULL }, 371, "udp" },
- { "ulistproc", { NULL }, 372, "tcp" },
- { "ulistproc", { NULL }, 372, "udp" },
- { "legent-1", { NULL }, 373, "tcp" },
- { "legent-1", { NULL }, 373, "udp" },
- { "legent-2", { NULL }, 374, "tcp" },
- { "legent-2", { NULL }, 374, "udp" },
- { "hassle", { NULL }, 375, "tcp" },
- { "hassle", { NULL }, 375, "udp" },
- { "nip", { NULL }, 376, "tcp" },
- { "nip", { NULL }, 376, "udp" },
- { "tnETOS", { NULL }, 377, "tcp" },
- { "tnETOS", { NULL }, 377, "udp" },
- { "dsETOS", { NULL }, 378, "tcp" },
- { "dsETOS", { NULL }, 378, "udp" },
- { "is99c", { NULL }, 379, "tcp" },
- { "is99c", { NULL }, 379, "udp" },
- { "is99s", { NULL }, 380, "tcp" },
- { "is99s", { NULL }, 380, "udp" },
- { "hp-collector", { NULL }, 381, "tcp" },
- { "hp-collector", { NULL }, 381, "udp" },
- { "hp-managed-node", { NULL }, 382, "tcp" },
- { "hp-managed-node", { NULL }, 382, "udp" },
- { "hp-alarm-mgr", { NULL }, 383, "tcp" },
- { "hp-alarm-mgr", { NULL }, 383, "udp" },
- { "arns", { NULL }, 384, "tcp" },
- { "arns", { NULL }, 384, "udp" },
- { "ibm-app", { NULL }, 385, "tcp" },
- { "ibm-app", { NULL }, 385, "udp" },
- { "asa", { NULL }, 386, "tcp" },
- { "asa", { NULL }, 386, "udp" },
- { "aurp", { NULL }, 387, "tcp" },
- { "aurp", { NULL }, 387, "udp" },
- { "unidata-ldm", { NULL }, 388, "tcp" },
- { "unidata-ldm", { NULL }, 388, "udp" },
- { "ldap", { NULL }, 389, "tcp" },
- { "ldap", { NULL }, 389, "udp" },
- { "uis", { NULL }, 390, "tcp" },
- { "uis", { NULL }, 390, "udp" },
- { "synotics-relay", { NULL }, 391, "tcp" },
- { "synotics-relay", { NULL }, 391, "udp" },
- { "synotics-broker", { NULL }, 392, "tcp" },
- { "synotics-broker", { NULL }, 392, "udp" },
- { "meta5", { NULL }, 393, "tcp" },
- { "meta5", { NULL }, 393, "udp" },
- { "embl-ndt", { NULL }, 394, "tcp" },
- { "embl-ndt", { NULL }, 394, "udp" },
- { "netcp", { NULL }, 395, "tcp" },
- { "netcp", { NULL }, 395, "udp" },
- { "netware-ip", { NULL }, 396, "tcp" },
- { "netware-ip", { NULL }, 396, "udp" },
- { "mptn", { NULL }, 397, "tcp" },
- { "mptn", { NULL }, 397, "udp" },
- { "kryptolan", { NULL }, 398, "tcp" },
- { "kryptolan", { NULL }, 398, "udp" },
- { "iso-tsap-c2", { NULL }, 399, "tcp" },
- { "iso-tsap-c2", { NULL }, 399, "udp" },
- { "osb-sd", { NULL }, 400, "tcp" },
- { "osb-sd", { NULL }, 400, "udp" },
- { "ups", { NULL }, 401, "tcp" },
- { "ups", { NULL }, 401, "udp" },
- { "genie", { NULL }, 402, "tcp" },
- { "genie", { NULL }, 402, "udp" },
- { "decap", { NULL }, 403, "tcp" },
- { "decap", { NULL }, 403, "udp" },
- { "nced", { NULL }, 404, "tcp" },
- { "nced", { NULL }, 404, "udp" },
- { "ncld", { NULL }, 405, "tcp" },
- { "ncld", { NULL }, 405, "udp" },
- { "imsp", { NULL }, 406, "tcp" },
- { "imsp", { NULL }, 406, "udp" },
- { "timbuktu", { NULL }, 407, "tcp" },
- { "timbuktu", { NULL }, 407, "udp" },
- { "prm-sm", { NULL }, 408, "tcp" },
- { "prm-sm", { NULL }, 408, "udp" },
- { "prm-nm", { NULL }, 409, "tcp" },
- { "prm-nm", { NULL }, 409, "udp" },
- { "decladebug", { NULL }, 410, "tcp" },
- { "decladebug", { NULL }, 410, "udp" },
- { "rmt", { NULL }, 411, "tcp" },
- { "rmt", { NULL }, 411, "udp" },
- { "synoptics-trap", { NULL }, 412, "tcp" },
- { "synoptics-trap", { NULL }, 412, "udp" },
- { "smsp", { NULL }, 413, "tcp" },
- { "smsp", { NULL }, 413, "udp" },
- { "infoseek", { NULL }, 414, "tcp" },
- { "infoseek", { NULL }, 414, "udp" },
- { "bnet", { NULL }, 415, "tcp" },
- { "bnet", { NULL }, 415, "udp" },
- { "silverplatter", { NULL }, 416, "tcp" },
- { "silverplatter", { NULL }, 416, "udp" },
- { "onmux", { NULL }, 417, "tcp" },
- { "onmux", { NULL }, 417, "udp" },
- { "hyper-g", { NULL }, 418, "tcp" },
- { "hyper-g", { NULL }, 418, "udp" },
- { "ariel1", { NULL }, 419, "tcp" },
- { "ariel1", { NULL }, 419, "udp" },
- { "smpte", { NULL }, 420, "tcp" },
- { "smpte", { NULL }, 420, "udp" },
- { "ariel2", { NULL }, 421, "tcp" },
- { "ariel2", { NULL }, 421, "udp" },
- { "ariel3", { NULL }, 422, "tcp" },
- { "ariel3", { NULL }, 422, "udp" },
- { "opc-job-start", { NULL }, 423, "tcp" },
- { "opc-job-start", { NULL }, 423, "udp" },
- { "opc-job-track", { NULL }, 424, "tcp" },
- { "opc-job-track", { NULL }, 424, "udp" },
- { "icad-el", { NULL }, 425, "tcp" },
- { "icad-el", { NULL }, 425, "udp" },
- { "smartsdp", { NULL }, 426, "tcp" },
- { "smartsdp", { NULL }, 426, "udp" },
- { "svrloc", { NULL }, 427, "tcp" },
- { "svrloc", { NULL }, 427, "udp" },
- { "ocs_cmu", { NULL }, 428, "tcp" },
- { "ocs_cmu", { NULL }, 428, "udp" },
- { "ocs_amu", { NULL }, 429, "tcp" },
- { "ocs_amu", { NULL }, 429, "udp" },
- { "utmpsd", { NULL }, 430, "tcp" },
- { "utmpsd", { NULL }, 430, "udp" },
- { "utmpcd", { NULL }, 431, "tcp" },
- { "utmpcd", { NULL }, 431, "udp" },
- { "iasd", { NULL }, 432, "tcp" },
- { "iasd", { NULL }, 432, "udp" },
- { "nnsp", { NULL }, 433, "tcp" },
- { "nnsp", { NULL }, 433, "udp" },
- { "mobileip-agent", { NULL }, 434, "tcp" },
- { "mobileip-agent", { NULL }, 434, "udp" },
- { "mobilip-mn", { NULL }, 435, "tcp" },
- { "mobilip-mn", { NULL }, 435, "udp" },
- { "dna-cml", { NULL }, 436, "tcp" },
- { "dna-cml", { NULL }, 436, "udp" },
- { "comscm", { NULL }, 437, "tcp" },
- { "comscm", { NULL }, 437, "udp" },
- { "dsfgw", { NULL }, 438, "tcp" },
- { "dsfgw", { NULL }, 438, "udp" },
- { "dasp", { NULL }, 439, "tcp" },
- { "dasp", { NULL }, 439, "udp" },
- { "sgcp", { NULL }, 440, "tcp" },
- { "sgcp", { NULL }, 440, "udp" },
- { "decvms-sysmgt", { NULL }, 441, "tcp" },
- { "decvms-sysmgt", { NULL }, 441, "udp" },
- { "cvc_hostd", { NULL }, 442, "tcp" },
- { "cvc_hostd", { NULL }, 442, "udp" },
- { "https", { NULL }, 443, "tcp" },
- { "https", { NULL }, 443, "udp" },
- { "https", { NULL }, 443, "sctp" },
- { "snpp", { NULL }, 444, "tcp" },
- { "snpp", { NULL }, 444, "udp" },
- { "microsoft-ds", { NULL }, 445, "tcp" },
- { "microsoft-ds", { NULL }, 445, "udp" },
- { "ddm-rdb", { NULL }, 446, "tcp" },
- { "ddm-rdb", { NULL }, 446, "udp" },
- { "ddm-dfm", { NULL }, 447, "tcp" },
- { "ddm-dfm", { NULL }, 447, "udp" },
- { "ddm-ssl", { NULL }, 448, "tcp" },
- { "ddm-ssl", { NULL }, 448, "udp" },
- { "as-servermap", { NULL }, 449, "tcp" },
- { "as-servermap", { NULL }, 449, "udp" },
- { "tserver", { NULL }, 450, "tcp" },
- { "tserver", { NULL }, 450, "udp" },
- { "sfs-smp-net", { NULL }, 451, "tcp" },
- { "sfs-smp-net", { NULL }, 451, "udp" },
- { "sfs-config", { NULL }, 452, "tcp" },
- { "sfs-config", { NULL }, 452, "udp" },
- { "creativeserver", { NULL }, 453, "tcp" },
- { "creativeserver", { NULL }, 453, "udp" },
- { "contentserver", { NULL }, 454, "tcp" },
- { "contentserver", { NULL }, 454, "udp" },
- { "creativepartnr", { NULL }, 455, "tcp" },
- { "creativepartnr", { NULL }, 455, "udp" },
- { "macon-tcp", { NULL }, 456, "tcp" },
- { "macon-udp", { NULL }, 456, "udp" },
- { "scohelp", { NULL }, 457, "tcp" },
- { "scohelp", { NULL }, 457, "udp" },
- { "appleqtc", { NULL }, 458, "tcp" },
- { "appleqtc", { NULL }, 458, "udp" },
- { "ampr-rcmd", { NULL }, 459, "tcp" },
- { "ampr-rcmd", { NULL }, 459, "udp" },
- { "skronk", { NULL }, 460, "tcp" },
- { "skronk", { NULL }, 460, "udp" },
- { "datasurfsrv", { NULL }, 461, "tcp" },
- { "datasurfsrv", { NULL }, 461, "udp" },
- { "datasurfsrvsec", { NULL }, 462, "tcp" },
- { "datasurfsrvsec", { NULL }, 462, "udp" },
- { "alpes", { NULL }, 463, "tcp" },
- { "alpes", { NULL }, 463, "udp" },
- { "kpasswd", { NULL }, 464, "tcp" },
- { "kpasswd", { NULL }, 464, "udp" },
- { "urd", { NULL }, 465, "tcp" },
- { "igmpv3lite", { NULL }, 465, "udp" },
- { "digital-vrc", { NULL }, 466, "tcp" },
- { "digital-vrc", { NULL }, 466, "udp" },
- { "mylex-mapd", { NULL }, 467, "tcp" },
- { "mylex-mapd", { NULL }, 467, "udp" },
- { "photuris", { NULL }, 468, "tcp" },
- { "photuris", { NULL }, 468, "udp" },
- { "rcp", { NULL }, 469, "tcp" },
- { "rcp", { NULL }, 469, "udp" },
- { "scx-proxy", { NULL }, 470, "tcp" },
- { "scx-proxy", { NULL }, 470, "udp" },
- { "mondex", { NULL }, 471, "tcp" },
- { "mondex", { NULL }, 471, "udp" },
- { "ljk-login", { NULL }, 472, "tcp" },
- { "ljk-login", { NULL }, 472, "udp" },
- { "hybrid-pop", { NULL }, 473, "tcp" },
- { "hybrid-pop", { NULL }, 473, "udp" },
- { "tn-tl-w1", { NULL }, 474, "tcp" },
- { "tn-tl-w2", { NULL }, 474, "udp" },
- { "tcpnethaspsrv", { NULL }, 475, "tcp" },
- { "tcpnethaspsrv", { NULL }, 475, "udp" },
- { "tn-tl-fd1", { NULL }, 476, "tcp" },
- { "tn-tl-fd1", { NULL }, 476, "udp" },
- { "ss7ns", { NULL }, 477, "tcp" },
- { "ss7ns", { NULL }, 477, "udp" },
- { "spsc", { NULL }, 478, "tcp" },
- { "spsc", { NULL }, 478, "udp" },
- { "iafserver", { NULL }, 479, "tcp" },
- { "iafserver", { NULL }, 479, "udp" },
- { "iafdbase", { NULL }, 480, "tcp" },
- { "iafdbase", { NULL }, 480, "udp" },
- { "ph", { NULL }, 481, "tcp" },
- { "ph", { NULL }, 481, "udp" },
- { "bgs-nsi", { NULL }, 482, "tcp" },
- { "bgs-nsi", { NULL }, 482, "udp" },
- { "ulpnet", { NULL }, 483, "tcp" },
- { "ulpnet", { NULL }, 483, "udp" },
- { "integra-sme", { NULL }, 484, "tcp" },
- { "integra-sme", { NULL }, 484, "udp" },
- { "powerburst", { NULL }, 485, "tcp" },
- { "powerburst", { NULL }, 485, "udp" },
- { "avian", { NULL }, 486, "tcp" },
- { "avian", { NULL }, 486, "udp" },
- { "saft", { NULL }, 487, "tcp" },
- { "saft", { NULL }, 487, "udp" },
- { "gss-http", { NULL }, 488, "tcp" },
- { "gss-http", { NULL }, 488, "udp" },
- { "nest-protocol", { NULL }, 489, "tcp" },
- { "nest-protocol", { NULL }, 489, "udp" },
- { "micom-pfs", { NULL }, 490, "tcp" },
- { "micom-pfs", { NULL }, 490, "udp" },
- { "go-login", { NULL }, 491, "tcp" },
- { "go-login", { NULL }, 491, "udp" },
- { "ticf-1", { NULL }, 492, "tcp" },
- { "ticf-1", { NULL }, 492, "udp" },
- { "ticf-2", { NULL }, 493, "tcp" },
- { "ticf-2", { NULL }, 493, "udp" },
- { "pov-ray", { NULL }, 494, "tcp" },
- { "pov-ray", { NULL }, 494, "udp" },
- { "intecourier", { NULL }, 495, "tcp" },
- { "intecourier", { NULL }, 495, "udp" },
- { "pim-rp-disc", { NULL }, 496, "tcp" },
- { "pim-rp-disc", { NULL }, 496, "udp" },
- { "dantz", { NULL }, 497, "tcp" },
- { "dantz", { NULL }, 497, "udp" },
- { "siam", { NULL }, 498, "tcp" },
- { "siam", { NULL }, 498, "udp" },
- { "iso-ill", { NULL }, 499, "tcp" },
- { "iso-ill", { NULL }, 499, "udp" },
- { "isakmp", { NULL }, 500, "tcp" },
- { "isakmp", { NULL }, 500, "udp" },
- { "stmf", { NULL }, 501, "tcp" },
- { "stmf", { NULL }, 501, "udp" },
- { "asa-appl-proto", { NULL }, 502, "tcp" },
- { "asa-appl-proto", { NULL }, 502, "udp" },
- { "intrinsa", { NULL }, 503, "tcp" },
- { "intrinsa", { NULL }, 503, "udp" },
- { "citadel", { NULL }, 504, "tcp" },
- { "citadel", { NULL }, 504, "udp" },
- { "mailbox-lm", { NULL }, 505, "tcp" },
- { "mailbox-lm", { NULL }, 505, "udp" },
- { "ohimsrv", { NULL }, 506, "tcp" },
- { "ohimsrv", { NULL }, 506, "udp" },
- { "crs", { NULL }, 507, "tcp" },
- { "crs", { NULL }, 507, "udp" },
- { "xvttp", { NULL }, 508, "tcp" },
- { "xvttp", { NULL }, 508, "udp" },
- { "snare", { NULL }, 509, "tcp" },
- { "snare", { NULL }, 509, "udp" },
- { "fcp", { NULL }, 510, "tcp" },
- { "fcp", { NULL }, 510, "udp" },
- { "passgo", { NULL }, 511, "tcp" },
- { "passgo", { NULL }, 511, "udp" },
- { "exec", { NULL }, 512, "tcp" },
- { "comsat", { NULL }, 512, "udp" },
- { "biff", { NULL }, 512, "udp" },
- { "login", { NULL }, 513, "tcp" },
- { "who", { NULL }, 513, "udp" },
- { "shell", { NULL }, 514, "tcp" },
- { "syslog", { NULL }, 514, "udp" },
- { "printer", { NULL }, 515, "tcp" },
- { "printer", { NULL }, 515, "udp" },
- { "videotex", { NULL }, 516, "tcp" },
- { "videotex", { NULL }, 516, "udp" },
- { "talk", { NULL }, 517, "tcp" },
- { "talk", { NULL }, 517, "udp" },
- { "ntalk", { NULL }, 518, "tcp" },
- { "ntalk", { NULL }, 518, "udp" },
- { "utime", { NULL }, 519, "tcp" },
- { "utime", { NULL }, 519, "udp" },
- { "efs", { NULL }, 520, "tcp" },
- { "router", { NULL }, 520, "udp" },
- { "ripng", { NULL }, 521, "tcp" },
- { "ripng", { NULL }, 521, "udp" },
- { "ulp", { NULL }, 522, "tcp" },
- { "ulp", { NULL }, 522, "udp" },
- { "ibm-db2", { NULL }, 523, "tcp" },
- { "ibm-db2", { NULL }, 523, "udp" },
- { "ncp", { NULL }, 524, "tcp" },
- { "ncp", { NULL }, 524, "udp" },
- { "timed", { NULL }, 525, "tcp" },
- { "timed", { NULL }, 525, "udp" },
- { "tempo", { NULL }, 526, "tcp" },
- { "tempo", { NULL }, 526, "udp" },
- { "stx", { NULL }, 527, "tcp" },
- { "stx", { NULL }, 527, "udp" },
- { "custix", { NULL }, 528, "tcp" },
- { "custix", { NULL }, 528, "udp" },
- { "irc-serv", { NULL }, 529, "tcp" },
- { "irc-serv", { NULL }, 529, "udp" },
- { "courier", { NULL }, 530, "tcp" },
- { "courier", { NULL }, 530, "udp" },
- { "conference", { NULL }, 531, "tcp" },
- { "conference", { NULL }, 531, "udp" },
- { "netnews", { NULL }, 532, "tcp" },
- { "netnews", { NULL }, 532, "udp" },
- { "netwall", { NULL }, 533, "tcp" },
- { "netwall", { NULL }, 533, "udp" },
- { "windream", { NULL }, 534, "tcp" },
- { "windream", { NULL }, 534, "udp" },
- { "iiop", { NULL }, 535, "tcp" },
- { "iiop", { NULL }, 535, "udp" },
- { "opalis-rdv", { NULL }, 536, "tcp" },
- { "opalis-rdv", { NULL }, 536, "udp" },
- { "nmsp", { NULL }, 537, "tcp" },
- { "nmsp", { NULL }, 537, "udp" },
- { "gdomap", { NULL }, 538, "tcp" },
- { "gdomap", { NULL }, 538, "udp" },
- { "apertus-ldp", { NULL }, 539, "tcp" },
- { "apertus-ldp", { NULL }, 539, "udp" },
- { "uucp", { NULL }, 540, "tcp" },
- { "uucp", { NULL }, 540, "udp" },
- { "uucp-rlogin", { NULL }, 541, "tcp" },
- { "uucp-rlogin", { NULL }, 541, "udp" },
- { "commerce", { NULL }, 542, "tcp" },
- { "commerce", { NULL }, 542, "udp" },
- { "klogin", { NULL }, 543, "tcp" },
- { "klogin", { NULL }, 543, "udp" },
- { "kshell", { NULL }, 544, "tcp" },
- { "kshell", { NULL }, 544, "udp" },
- { "appleqtcsrvr", { NULL }, 545, "tcp" },
- { "appleqtcsrvr", { NULL }, 545, "udp" },
- { "dhcpv6-client", { NULL }, 546, "tcp" },
- { "dhcpv6-client", { NULL }, 546, "udp" },
- { "dhcpv6-server", { NULL }, 547, "tcp" },
- { "dhcpv6-server", { NULL }, 547, "udp" },
- { "afpovertcp", { NULL }, 548, "tcp" },
- { "afpovertcp", { NULL }, 548, "udp" },
- { "idfp", { NULL }, 549, "tcp" },
- { "idfp", { NULL }, 549, "udp" },
- { "new-rwho", { NULL }, 550, "tcp" },
- { "new-rwho", { NULL }, 550, "udp" },
- { "cybercash", { NULL }, 551, "tcp" },
- { "cybercash", { NULL }, 551, "udp" },
- { "devshr-nts", { NULL }, 552, "tcp" },
- { "devshr-nts", { NULL }, 552, "udp" },
- { "pirp", { NULL }, 553, "tcp" },
- { "pirp", { NULL }, 553, "udp" },
- { "rtsp", { NULL }, 554, "tcp" },
- { "rtsp", { NULL }, 554, "udp" },
- { "dsf", { NULL }, 555, "tcp" },
- { "dsf", { NULL }, 555, "udp" },
- { "remotefs", { NULL }, 556, "tcp" },
- { "remotefs", { NULL }, 556, "udp" },
- { "openvms-sysipc", { NULL }, 557, "tcp" },
- { "openvms-sysipc", { NULL }, 557, "udp" },
- { "sdnskmp", { NULL }, 558, "tcp" },
- { "sdnskmp", { NULL }, 558, "udp" },
- { "teedtap", { NULL }, 559, "tcp" },
- { "teedtap", { NULL }, 559, "udp" },
- { "rmonitor", { NULL }, 560, "tcp" },
- { "rmonitor", { NULL }, 560, "udp" },
- { "monitor", { NULL }, 561, "tcp" },
- { "monitor", { NULL }, 561, "udp" },
- { "chshell", { NULL }, 562, "tcp" },
- { "chshell", { NULL }, 562, "udp" },
- { "nntps", { NULL }, 563, "tcp" },
- { "nntps", { NULL }, 563, "udp" },
- { "9pfs", { NULL }, 564, "tcp" },
- { "9pfs", { NULL }, 564, "udp" },
- { "whoami", { NULL }, 565, "tcp" },
- { "whoami", { NULL }, 565, "udp" },
- { "streettalk", { NULL }, 566, "tcp" },
- { "streettalk", { NULL }, 566, "udp" },
- { "banyan-rpc", { NULL }, 567, "tcp" },
- { "banyan-rpc", { NULL }, 567, "udp" },
- { "ms-shuttle", { NULL }, 568, "tcp" },
- { "ms-shuttle", { NULL }, 568, "udp" },
- { "ms-rome", { NULL }, 569, "tcp" },
- { "ms-rome", { NULL }, 569, "udp" },
- { "meter", { NULL }, 570, "tcp" },
- { "meter", { NULL }, 570, "udp" },
- { "meter", { NULL }, 571, "tcp" },
- { "meter", { NULL }, 571, "udp" },
- { "sonar", { NULL }, 572, "tcp" },
- { "sonar", { NULL }, 572, "udp" },
- { "banyan-vip", { NULL }, 573, "tcp" },
- { "banyan-vip", { NULL }, 573, "udp" },
- { "ftp-agent", { NULL }, 574, "tcp" },
- { "ftp-agent", { NULL }, 574, "udp" },
- { "vemmi", { NULL }, 575, "tcp" },
- { "vemmi", { NULL }, 575, "udp" },
- { "ipcd", { NULL }, 576, "tcp" },
- { "ipcd", { NULL }, 576, "udp" },
- { "vnas", { NULL }, 577, "tcp" },
- { "vnas", { NULL }, 577, "udp" },
- { "ipdd", { NULL }, 578, "tcp" },
- { "ipdd", { NULL }, 578, "udp" },
- { "decbsrv", { NULL }, 579, "tcp" },
- { "decbsrv", { NULL }, 579, "udp" },
- { "sntp-heartbeat", { NULL }, 580, "tcp" },
- { "sntp-heartbeat", { NULL }, 580, "udp" },
- { "bdp", { NULL }, 581, "tcp" },
- { "bdp", { NULL }, 581, "udp" },
- { "scc-security", { NULL }, 582, "tcp" },
- { "scc-security", { NULL }, 582, "udp" },
- { "philips-vc", { NULL }, 583, "tcp" },
- { "philips-vc", { NULL }, 583, "udp" },
- { "keyserver", { NULL }, 584, "tcp" },
- { "keyserver", { NULL }, 584, "udp" },
- { "password-chg", { NULL }, 586, "tcp" },
- { "password-chg", { NULL }, 586, "udp" },
- { "submission", { NULL }, 587, "tcp" },
- { "submission", { NULL }, 587, "udp" },
- { "cal", { NULL }, 588, "tcp" },
- { "cal", { NULL }, 588, "udp" },
- { "eyelink", { NULL }, 589, "tcp" },
- { "eyelink", { NULL }, 589, "udp" },
- { "tns-cml", { NULL }, 590, "tcp" },
- { "tns-cml", { NULL }, 590, "udp" },
- { "http-alt", { NULL }, 591, "tcp" },
- { "http-alt", { NULL }, 591, "udp" },
- { "eudora-set", { NULL }, 592, "tcp" },
- { "eudora-set", { NULL }, 592, "udp" },
- { "http-rpc-epmap", { NULL }, 593, "tcp" },
- { "http-rpc-epmap", { NULL }, 593, "udp" },
- { "tpip", { NULL }, 594, "tcp" },
- { "tpip", { NULL }, 594, "udp" },
- { "cab-protocol", { NULL }, 595, "tcp" },
- { "cab-protocol", { NULL }, 595, "udp" },
- { "smsd", { NULL }, 596, "tcp" },
- { "smsd", { NULL }, 596, "udp" },
- { "ptcnameservice", { NULL }, 597, "tcp" },
- { "ptcnameservice", { NULL }, 597, "udp" },
- { "sco-websrvrmg3", { NULL }, 598, "tcp" },
- { "sco-websrvrmg3", { NULL }, 598, "udp" },
- { "acp", { NULL }, 599, "tcp" },
- { "acp", { NULL }, 599, "udp" },
- { "ipcserver", { NULL }, 600, "tcp" },
- { "ipcserver", { NULL }, 600, "udp" },
- { "syslog-conn", { NULL }, 601, "tcp" },
- { "syslog-conn", { NULL }, 601, "udp" },
- { "xmlrpc-beep", { NULL }, 602, "tcp" },
- { "xmlrpc-beep", { NULL }, 602, "udp" },
- { "idxp", { NULL }, 603, "tcp" },
- { "idxp", { NULL }, 603, "udp" },
- { "tunnel", { NULL }, 604, "tcp" },
- { "tunnel", { NULL }, 604, "udp" },
- { "soap-beep", { NULL }, 605, "tcp" },
- { "soap-beep", { NULL }, 605, "udp" },
- { "urm", { NULL }, 606, "tcp" },
- { "urm", { NULL }, 606, "udp" },
- { "nqs", { NULL }, 607, "tcp" },
- { "nqs", { NULL }, 607, "udp" },
- { "sift-uft", { NULL }, 608, "tcp" },
- { "sift-uft", { NULL }, 608, "udp" },
- { "npmp-trap", { NULL }, 609, "tcp" },
- { "npmp-trap", { NULL }, 609, "udp" },
- { "npmp-local", { NULL }, 610, "tcp" },
- { "npmp-local", { NULL }, 610, "udp" },
- { "npmp-gui", { NULL }, 611, "tcp" },
- { "npmp-gui", { NULL }, 611, "udp" },
- { "hmmp-ind", { NULL }, 612, "tcp" },
- { "hmmp-ind", { NULL }, 612, "udp" },
- { "hmmp-op", { NULL }, 613, "tcp" },
- { "hmmp-op", { NULL }, 613, "udp" },
- { "sshell", { NULL }, 614, "tcp" },
- { "sshell", { NULL }, 614, "udp" },
- { "sco-inetmgr", { NULL }, 615, "tcp" },
- { "sco-inetmgr", { NULL }, 615, "udp" },
- { "sco-sysmgr", { NULL }, 616, "tcp" },
- { "sco-sysmgr", { NULL }, 616, "udp" },
- { "sco-dtmgr", { NULL }, 617, "tcp" },
- { "sco-dtmgr", { NULL }, 617, "udp" },
- { "dei-icda", { NULL }, 618, "tcp" },
- { "dei-icda", { NULL }, 618, "udp" },
- { "compaq-evm", { NULL }, 619, "tcp" },
- { "compaq-evm", { NULL }, 619, "udp" },
- { "sco-websrvrmgr", { NULL }, 620, "tcp" },
- { "sco-websrvrmgr", { NULL }, 620, "udp" },
- { "escp-ip", { NULL }, 621, "tcp" },
- { "escp-ip", { NULL }, 621, "udp" },
- { "collaborator", { NULL }, 622, "tcp" },
- { "collaborator", { NULL }, 622, "udp" },
- { "oob-ws-http", { NULL }, 623, "tcp" },
- { "asf-rmcp", { NULL }, 623, "udp" },
- { "cryptoadmin", { NULL }, 624, "tcp" },
- { "cryptoadmin", { NULL }, 624, "udp" },
- { "dec_dlm", { NULL }, 625, "tcp" },
- { "dec_dlm", { NULL }, 625, "udp" },
- { "asia", { NULL }, 626, "tcp" },
- { "asia", { NULL }, 626, "udp" },
- { "passgo-tivoli", { NULL }, 627, "tcp" },
- { "passgo-tivoli", { NULL }, 627, "udp" },
- { "qmqp", { NULL }, 628, "tcp" },
- { "qmqp", { NULL }, 628, "udp" },
- { "3com-amp3", { NULL }, 629, "tcp" },
- { "3com-amp3", { NULL }, 629, "udp" },
- { "rda", { NULL }, 630, "tcp" },
- { "rda", { NULL }, 630, "udp" },
- { "ipp", { NULL }, 631, "tcp" },
- { "ipp", { NULL }, 631, "udp" },
- { "bmpp", { NULL }, 632, "tcp" },
- { "bmpp", { NULL }, 632, "udp" },
- { "servstat", { NULL }, 633, "tcp" },
- { "servstat", { NULL }, 633, "udp" },
- { "ginad", { NULL }, 634, "tcp" },
- { "ginad", { NULL }, 634, "udp" },
- { "rlzdbase", { NULL }, 635, "tcp" },
- { "rlzdbase", { NULL }, 635, "udp" },
- { "ldaps", { NULL }, 636, "tcp" },
- { "ldaps", { NULL }, 636, "udp" },
- { "lanserver", { NULL }, 637, "tcp" },
- { "lanserver", { NULL }, 637, "udp" },
- { "mcns-sec", { NULL }, 638, "tcp" },
- { "mcns-sec", { NULL }, 638, "udp" },
- { "msdp", { NULL }, 639, "tcp" },
- { "msdp", { NULL }, 639, "udp" },
- { "entrust-sps", { NULL }, 640, "tcp" },
- { "entrust-sps", { NULL }, 640, "udp" },
- { "repcmd", { NULL }, 641, "tcp" },
- { "repcmd", { NULL }, 641, "udp" },
- { "esro-emsdp", { NULL }, 642, "tcp" },
- { "esro-emsdp", { NULL }, 642, "udp" },
- { "sanity", { NULL }, 643, "tcp" },
- { "sanity", { NULL }, 643, "udp" },
- { "dwr", { NULL }, 644, "tcp" },
- { "dwr", { NULL }, 644, "udp" },
- { "pssc", { NULL }, 645, "tcp" },
- { "pssc", { NULL }, 645, "udp" },
- { "ldp", { NULL }, 646, "tcp" },
- { "ldp", { NULL }, 646, "udp" },
- { "dhcp-failover", { NULL }, 647, "tcp" },
- { "dhcp-failover", { NULL }, 647, "udp" },
- { "rrp", { NULL }, 648, "tcp" },
- { "rrp", { NULL }, 648, "udp" },
- { "cadview-3d", { NULL }, 649, "tcp" },
- { "cadview-3d", { NULL }, 649, "udp" },
- { "obex", { NULL }, 650, "tcp" },
- { "obex", { NULL }, 650, "udp" },
- { "ieee-mms", { NULL }, 651, "tcp" },
- { "ieee-mms", { NULL }, 651, "udp" },
- { "hello-port", { NULL }, 652, "tcp" },
- { "hello-port", { NULL }, 652, "udp" },
- { "repscmd", { NULL }, 653, "tcp" },
- { "repscmd", { NULL }, 653, "udp" },
- { "aodv", { NULL }, 654, "tcp" },
- { "aodv", { NULL }, 654, "udp" },
- { "tinc", { NULL }, 655, "tcp" },
- { "tinc", { NULL }, 655, "udp" },
- { "spmp", { NULL }, 656, "tcp" },
- { "spmp", { NULL }, 656, "udp" },
- { "rmc", { NULL }, 657, "tcp" },
- { "rmc", { NULL }, 657, "udp" },
- { "tenfold", { NULL }, 658, "tcp" },
- { "tenfold", { NULL }, 658, "udp" },
- { "mac-srvr-admin", { NULL }, 660, "tcp" },
- { "mac-srvr-admin", { NULL }, 660, "udp" },
- { "hap", { NULL }, 661, "tcp" },
- { "hap", { NULL }, 661, "udp" },
- { "pftp", { NULL }, 662, "tcp" },
- { "pftp", { NULL }, 662, "udp" },
- { "purenoise", { NULL }, 663, "tcp" },
- { "purenoise", { NULL }, 663, "udp" },
- { "oob-ws-https", { NULL }, 664, "tcp" },
- { "asf-secure-rmcp", { NULL }, 664, "udp" },
- { "sun-dr", { NULL }, 665, "tcp" },
- { "sun-dr", { NULL }, 665, "udp" },
- { "mdqs", { NULL }, 666, "tcp" },
- { "mdqs", { NULL }, 666, "udp" },
- { "doom", { NULL }, 666, "tcp" },
- { "doom", { NULL }, 666, "udp" },
- { "disclose", { NULL }, 667, "tcp" },
- { "disclose", { NULL }, 667, "udp" },
- { "mecomm", { NULL }, 668, "tcp" },
- { "mecomm", { NULL }, 668, "udp" },
- { "meregister", { NULL }, 669, "tcp" },
- { "meregister", { NULL }, 669, "udp" },
- { "vacdsm-sws", { NULL }, 670, "tcp" },
- { "vacdsm-sws", { NULL }, 670, "udp" },
- { "vacdsm-app", { NULL }, 671, "tcp" },
- { "vacdsm-app", { NULL }, 671, "udp" },
- { "vpps-qua", { NULL }, 672, "tcp" },
- { "vpps-qua", { NULL }, 672, "udp" },
- { "cimplex", { NULL }, 673, "tcp" },
- { "cimplex", { NULL }, 673, "udp" },
- { "acap", { NULL }, 674, "tcp" },
- { "acap", { NULL }, 674, "udp" },
- { "dctp", { NULL }, 675, "tcp" },
- { "dctp", { NULL }, 675, "udp" },
- { "vpps-via", { NULL }, 676, "tcp" },
- { "vpps-via", { NULL }, 676, "udp" },
- { "vpp", { NULL }, 677, "tcp" },
- { "vpp", { NULL }, 677, "udp" },
- { "ggf-ncp", { NULL }, 678, "tcp" },
- { "ggf-ncp", { NULL }, 678, "udp" },
- { "mrm", { NULL }, 679, "tcp" },
- { "mrm", { NULL }, 679, "udp" },
- { "entrust-aaas", { NULL }, 680, "tcp" },
- { "entrust-aaas", { NULL }, 680, "udp" },
- { "entrust-aams", { NULL }, 681, "tcp" },
- { "entrust-aams", { NULL }, 681, "udp" },
- { "xfr", { NULL }, 682, "tcp" },
- { "xfr", { NULL }, 682, "udp" },
- { "corba-iiop", { NULL }, 683, "tcp" },
- { "corba-iiop", { NULL }, 683, "udp" },
- { "corba-iiop-ssl", { NULL }, 684, "tcp" },
- { "corba-iiop-ssl", { NULL }, 684, "udp" },
- { "mdc-portmapper", { NULL }, 685, "tcp" },
- { "mdc-portmapper", { NULL }, 685, "udp" },
- { "hcp-wismar", { NULL }, 686, "tcp" },
- { "hcp-wismar", { NULL }, 686, "udp" },
- { "asipregistry", { NULL }, 687, "tcp" },
- { "asipregistry", { NULL }, 687, "udp" },
- { "realm-rusd", { NULL }, 688, "tcp" },
- { "realm-rusd", { NULL }, 688, "udp" },
- { "nmap", { NULL }, 689, "tcp" },
- { "nmap", { NULL }, 689, "udp" },
- { "vatp", { NULL }, 690, "tcp" },
- { "vatp", { NULL }, 690, "udp" },
- { "msexch-routing", { NULL }, 691, "tcp" },
- { "msexch-routing", { NULL }, 691, "udp" },
- { "hyperwave-isp", { NULL }, 692, "tcp" },
- { "hyperwave-isp", { NULL }, 692, "udp" },
- { "connendp", { NULL }, 693, "tcp" },
- { "connendp", { NULL }, 693, "udp" },
- { "ha-cluster", { NULL }, 694, "tcp" },
- { "ha-cluster", { NULL }, 694, "udp" },
- { "ieee-mms-ssl", { NULL }, 695, "tcp" },
- { "ieee-mms-ssl", { NULL }, 695, "udp" },
- { "rushd", { NULL }, 696, "tcp" },
- { "rushd", { NULL }, 696, "udp" },
- { "uuidgen", { NULL }, 697, "tcp" },
- { "uuidgen", { NULL }, 697, "udp" },
- { "olsr", { NULL }, 698, "tcp" },
- { "olsr", { NULL }, 698, "udp" },
- { "accessnetwork", { NULL }, 699, "tcp" },
- { "accessnetwork", { NULL }, 699, "udp" },
- { "epp", { NULL }, 700, "tcp" },
- { "epp", { NULL }, 700, "udp" },
- { "lmp", { NULL }, 701, "tcp" },
- { "lmp", { NULL }, 701, "udp" },
- { "iris-beep", { NULL }, 702, "tcp" },
- { "iris-beep", { NULL }, 702, "udp" },
- { "elcsd", { NULL }, 704, "tcp" },
- { "elcsd", { NULL }, 704, "udp" },
- { "agentx", { NULL }, 705, "tcp" },
- { "agentx", { NULL }, 705, "udp" },
- { "silc", { NULL }, 706, "tcp" },
- { "silc", { NULL }, 706, "udp" },
- { "borland-dsj", { NULL }, 707, "tcp" },
- { "borland-dsj", { NULL }, 707, "udp" },
- { "entrust-kmsh", { NULL }, 709, "tcp" },
- { "entrust-kmsh", { NULL }, 709, "udp" },
- { "entrust-ash", { NULL }, 710, "tcp" },
- { "entrust-ash", { NULL }, 710, "udp" },
- { "cisco-tdp", { NULL }, 711, "tcp" },
- { "cisco-tdp", { NULL }, 711, "udp" },
- { "tbrpf", { NULL }, 712, "tcp" },
- { "tbrpf", { NULL }, 712, "udp" },
- { "iris-xpc", { NULL }, 713, "tcp" },
- { "iris-xpc", { NULL }, 713, "udp" },
- { "iris-xpcs", { NULL }, 714, "tcp" },
- { "iris-xpcs", { NULL }, 714, "udp" },
- { "iris-lwz", { NULL }, 715, "tcp" },
- { "iris-lwz", { NULL }, 715, "udp" },
- { "pana", { NULL }, 716, "udp" },
- { "netviewdm1", { NULL }, 729, "tcp" },
- { "netviewdm1", { NULL }, 729, "udp" },
- { "netviewdm2", { NULL }, 730, "tcp" },
- { "netviewdm2", { NULL }, 730, "udp" },
- { "netviewdm3", { NULL }, 731, "tcp" },
- { "netviewdm3", { NULL }, 731, "udp" },
- { "netgw", { NULL }, 741, "tcp" },
- { "netgw", { NULL }, 741, "udp" },
- { "netrcs", { NULL }, 742, "tcp" },
- { "netrcs", { NULL }, 742, "udp" },
- { "flexlm", { NULL }, 744, "tcp" },
- { "flexlm", { NULL }, 744, "udp" },
- { "fujitsu-dev", { NULL }, 747, "tcp" },
- { "fujitsu-dev", { NULL }, 747, "udp" },
- { "ris-cm", { NULL }, 748, "tcp" },
- { "ris-cm", { NULL }, 748, "udp" },
- { "kerberos-adm", { NULL }, 749, "tcp" },
- { "kerberos-adm", { NULL }, 749, "udp" },
- { "rfile", { NULL }, 750, "tcp" },
- { "loadav", { NULL }, 750, "udp" },
- { "kerberos-iv", { NULL }, 750, "udp" },
- { "pump", { NULL }, 751, "tcp" },
- { "pump", { NULL }, 751, "udp" },
- { "qrh", { NULL }, 752, "tcp" },
- { "qrh", { NULL }, 752, "udp" },
- { "rrh", { NULL }, 753, "tcp" },
- { "rrh", { NULL }, 753, "udp" },
- { "tell", { NULL }, 754, "tcp" },
- { "tell", { NULL }, 754, "udp" },
- { "nlogin", { NULL }, 758, "tcp" },
- { "nlogin", { NULL }, 758, "udp" },
- { "con", { NULL }, 759, "tcp" },
- { "con", { NULL }, 759, "udp" },
- { "ns", { NULL }, 760, "tcp" },
- { "ns", { NULL }, 760, "udp" },
- { "rxe", { NULL }, 761, "tcp" },
- { "rxe", { NULL }, 761, "udp" },
- { "quotad", { NULL }, 762, "tcp" },
- { "quotad", { NULL }, 762, "udp" },
- { "cycleserv", { NULL }, 763, "tcp" },
- { "cycleserv", { NULL }, 763, "udp" },
- { "omserv", { NULL }, 764, "tcp" },
- { "omserv", { NULL }, 764, "udp" },
- { "webster", { NULL }, 765, "tcp" },
- { "webster", { NULL }, 765, "udp" },
- { "phonebook", { NULL }, 767, "tcp" },
- { "phonebook", { NULL }, 767, "udp" },
- { "vid", { NULL }, 769, "tcp" },
- { "vid", { NULL }, 769, "udp" },
- { "cadlock", { NULL }, 770, "tcp" },
- { "cadlock", { NULL }, 770, "udp" },
- { "rtip", { NULL }, 771, "tcp" },
- { "rtip", { NULL }, 771, "udp" },
- { "cycleserv2", { NULL }, 772, "tcp" },
- { "cycleserv2", { NULL }, 772, "udp" },
- { "submit", { NULL }, 773, "tcp" },
- { "notify", { NULL }, 773, "udp" },
- { "rpasswd", { NULL }, 774, "tcp" },
- { "acmaint_dbd", { NULL }, 774, "udp" },
- { "entomb", { NULL }, 775, "tcp" },
- { "acmaint_transd", { NULL }, 775, "udp" },
- { "wpages", { NULL }, 776, "tcp" },
- { "wpages", { NULL }, 776, "udp" },
- { "multiling-http", { NULL }, 777, "tcp" },
- { "multiling-http", { NULL }, 777, "udp" },
- { "wpgs", { NULL }, 780, "tcp" },
- { "wpgs", { NULL }, 780, "udp" },
- { "mdbs_daemon", { NULL }, 800, "tcp" },
- { "mdbs_daemon", { NULL }, 800, "udp" },
- { "device", { NULL }, 801, "tcp" },
- { "device", { NULL }, 801, "udp" },
- { "fcp-udp", { NULL }, 810, "tcp" },
- { "fcp-udp", { NULL }, 810, "udp" },
- { "itm-mcell-s", { NULL }, 828, "tcp" },
- { "itm-mcell-s", { NULL }, 828, "udp" },
- { "pkix-3-ca-ra", { NULL }, 829, "tcp" },
- { "pkix-3-ca-ra", { NULL }, 829, "udp" },
- { "netconf-ssh", { NULL }, 830, "tcp" },
- { "netconf-ssh", { NULL }, 830, "udp" },
- { "netconf-beep", { NULL }, 831, "tcp" },
- { "netconf-beep", { NULL }, 831, "udp" },
- { "netconfsoaphttp", { NULL }, 832, "tcp" },
- { "netconfsoaphttp", { NULL }, 832, "udp" },
- { "netconfsoapbeep", { NULL }, 833, "tcp" },
- { "netconfsoapbeep", { NULL }, 833, "udp" },
- { "dhcp-failover2", { NULL }, 847, "tcp" },
- { "dhcp-failover2", { NULL }, 847, "udp" },
- { "gdoi", { NULL }, 848, "tcp" },
- { "gdoi", { NULL }, 848, "udp" },
- { "iscsi", { NULL }, 860, "tcp" },
- { "iscsi", { NULL }, 860, "udp" },
- { "owamp-control", { NULL }, 861, "tcp" },
- { "owamp-control", { NULL }, 861, "udp" },
- { "twamp-control", { NULL }, 862, "tcp" },
- { "twamp-control", { NULL }, 862, "udp" },
- { "rsync", { NULL }, 873, "tcp" },
- { "rsync", { NULL }, 873, "udp" },
- { "iclcnet-locate", { NULL }, 886, "tcp" },
- { "iclcnet-locate", { NULL }, 886, "udp" },
- { "iclcnet_svinfo", { NULL }, 887, "tcp" },
- { "iclcnet_svinfo", { NULL }, 887, "udp" },
- { "accessbuilder", { NULL }, 888, "tcp" },
- { "accessbuilder", { NULL }, 888, "udp" },
- { "cddbp", { NULL }, 888, "tcp" },
- { "omginitialrefs", { NULL }, 900, "tcp" },
- { "omginitialrefs", { NULL }, 900, "udp" },
- { "smpnameres", { NULL }, 901, "tcp" },
- { "smpnameres", { NULL }, 901, "udp" },
- { "ideafarm-door", { NULL }, 902, "tcp" },
- { "ideafarm-door", { NULL }, 902, "udp" },
- { "ideafarm-panic", { NULL }, 903, "tcp" },
- { "ideafarm-panic", { NULL }, 903, "udp" },
- { "kink", { NULL }, 910, "tcp" },
- { "kink", { NULL }, 910, "udp" },
- { "xact-backup", { NULL }, 911, "tcp" },
- { "xact-backup", { NULL }, 911, "udp" },
- { "apex-mesh", { NULL }, 912, "tcp" },
- { "apex-mesh", { NULL }, 912, "udp" },
- { "apex-edge", { NULL }, 913, "tcp" },
- { "apex-edge", { NULL }, 913, "udp" },
- { "ftps-data", { NULL }, 989, "tcp" },
- { "ftps-data", { NULL }, 989, "udp" },
- { "ftps", { NULL }, 990, "tcp" },
- { "ftps", { NULL }, 990, "udp" },
- { "nas", { NULL }, 991, "tcp" },
- { "nas", { NULL }, 991, "udp" },
- { "telnets", { NULL }, 992, "tcp" },
- { "telnets", { NULL }, 992, "udp" },
- { "imaps", { NULL }, 993, "tcp" },
- { "imaps", { NULL }, 993, "udp" },
- { "ircs", { NULL }, 994, "tcp" },
- { "ircs", { NULL }, 994, "udp" },
- { "pop3s", { NULL }, 995, "tcp" },
- { "pop3s", { NULL }, 995, "udp" },
- { "vsinet", { NULL }, 996, "tcp" },
- { "vsinet", { NULL }, 996, "udp" },
- { "maitrd", { NULL }, 997, "tcp" },
- { "maitrd", { NULL }, 997, "udp" },
- { "busboy", { NULL }, 998, "tcp" },
- { "puparp", { NULL }, 998, "udp" },
- { "garcon", { NULL }, 999, "tcp" },
- { "applix", { NULL }, 999, "udp" },
- { "puprouter", { NULL }, 999, "tcp" },
- { "puprouter", { NULL }, 999, "udp" },
- { "cadlock2", { NULL }, 1000, "tcp" },
- { "cadlock2", { NULL }, 1000, "udp" },
- { "surf", { NULL }, 1010, "tcp" },
- { "surf", { NULL }, 1010, "udp" },
- { "exp1", { NULL }, 1021, "tcp" },
- { "exp1", { NULL }, 1021, "udp" },
- { "exp2", { NULL }, 1022, "tcp" },
- { "exp2", { NULL }, 1022, "udp" },
-# endif /* USE_IANA_WELL_KNOWN_PORTS */
-# ifdef USE_IANA_REGISTERED_PORTS
- { "blackjack", { NULL }, 1025, "tcp" },
- { "blackjack", { NULL }, 1025, "udp" },
- { "cap", { NULL }, 1026, "tcp" },
- { "cap", { NULL }, 1026, "udp" },
- { "solid-mux", { NULL }, 1029, "tcp" },
- { "solid-mux", { NULL }, 1029, "udp" },
- { "iad1", { NULL }, 1030, "tcp" },
- { "iad1", { NULL }, 1030, "udp" },
- { "iad2", { NULL }, 1031, "tcp" },
- { "iad2", { NULL }, 1031, "udp" },
- { "iad3", { NULL }, 1032, "tcp" },
- { "iad3", { NULL }, 1032, "udp" },
- { "netinfo-local", { NULL }, 1033, "tcp" },
- { "netinfo-local", { NULL }, 1033, "udp" },
- { "activesync", { NULL }, 1034, "tcp" },
- { "activesync", { NULL }, 1034, "udp" },
- { "mxxrlogin", { NULL }, 1035, "tcp" },
- { "mxxrlogin", { NULL }, 1035, "udp" },
- { "nsstp", { NULL }, 1036, "tcp" },
- { "nsstp", { NULL }, 1036, "udp" },
- { "ams", { NULL }, 1037, "tcp" },
- { "ams", { NULL }, 1037, "udp" },
- { "mtqp", { NULL }, 1038, "tcp" },
- { "mtqp", { NULL }, 1038, "udp" },
- { "sbl", { NULL }, 1039, "tcp" },
- { "sbl", { NULL }, 1039, "udp" },
- { "netarx", { NULL }, 1040, "tcp" },
- { "netarx", { NULL }, 1040, "udp" },
- { "danf-ak2", { NULL }, 1041, "tcp" },
- { "danf-ak2", { NULL }, 1041, "udp" },
- { "afrog", { NULL }, 1042, "tcp" },
- { "afrog", { NULL }, 1042, "udp" },
- { "boinc-client", { NULL }, 1043, "tcp" },
- { "boinc-client", { NULL }, 1043, "udp" },
- { "dcutility", { NULL }, 1044, "tcp" },
- { "dcutility", { NULL }, 1044, "udp" },
- { "fpitp", { NULL }, 1045, "tcp" },
- { "fpitp", { NULL }, 1045, "udp" },
- { "wfremotertm", { NULL }, 1046, "tcp" },
- { "wfremotertm", { NULL }, 1046, "udp" },
- { "neod1", { NULL }, 1047, "tcp" },
- { "neod1", { NULL }, 1047, "udp" },
- { "neod2", { NULL }, 1048, "tcp" },
- { "neod2", { NULL }, 1048, "udp" },
- { "td-postman", { NULL }, 1049, "tcp" },
- { "td-postman", { NULL }, 1049, "udp" },
- { "cma", { NULL }, 1050, "tcp" },
- { "cma", { NULL }, 1050, "udp" },
- { "optima-vnet", { NULL }, 1051, "tcp" },
- { "optima-vnet", { NULL }, 1051, "udp" },
- { "ddt", { NULL }, 1052, "tcp" },
- { "ddt", { NULL }, 1052, "udp" },
- { "remote-as", { NULL }, 1053, "tcp" },
- { "remote-as", { NULL }, 1053, "udp" },
- { "brvread", { NULL }, 1054, "tcp" },
- { "brvread", { NULL }, 1054, "udp" },
- { "ansyslmd", { NULL }, 1055, "tcp" },
- { "ansyslmd", { NULL }, 1055, "udp" },
- { "vfo", { NULL }, 1056, "tcp" },
- { "vfo", { NULL }, 1056, "udp" },
- { "startron", { NULL }, 1057, "tcp" },
- { "startron", { NULL }, 1057, "udp" },
- { "nim", { NULL }, 1058, "tcp" },
- { "nim", { NULL }, 1058, "udp" },
- { "nimreg", { NULL }, 1059, "tcp" },
- { "nimreg", { NULL }, 1059, "udp" },
- { "polestar", { NULL }, 1060, "tcp" },
- { "polestar", { NULL }, 1060, "udp" },
- { "kiosk", { NULL }, 1061, "tcp" },
- { "kiosk", { NULL }, 1061, "udp" },
- { "veracity", { NULL }, 1062, "tcp" },
- { "veracity", { NULL }, 1062, "udp" },
- { "kyoceranetdev", { NULL }, 1063, "tcp" },
- { "kyoceranetdev", { NULL }, 1063, "udp" },
- { "jstel", { NULL }, 1064, "tcp" },
- { "jstel", { NULL }, 1064, "udp" },
- { "syscomlan", { NULL }, 1065, "tcp" },
- { "syscomlan", { NULL }, 1065, "udp" },
- { "fpo-fns", { NULL }, 1066, "tcp" },
- { "fpo-fns", { NULL }, 1066, "udp" },
- { "instl_boots", { NULL }, 1067, "tcp" },
- { "instl_boots", { NULL }, 1067, "udp" },
- { "instl_bootc", { NULL }, 1068, "tcp" },
- { "instl_bootc", { NULL }, 1068, "udp" },
- { "cognex-insight", { NULL }, 1069, "tcp" },
- { "cognex-insight", { NULL }, 1069, "udp" },
- { "gmrupdateserv", { NULL }, 1070, "tcp" },
- { "gmrupdateserv", { NULL }, 1070, "udp" },
- { "bsquare-voip", { NULL }, 1071, "tcp" },
- { "bsquare-voip", { NULL }, 1071, "udp" },
- { "cardax", { NULL }, 1072, "tcp" },
- { "cardax", { NULL }, 1072, "udp" },
- { "bridgecontrol", { NULL }, 1073, "tcp" },
- { "bridgecontrol", { NULL }, 1073, "udp" },
- { "warmspotMgmt", { NULL }, 1074, "tcp" },
- { "warmspotMgmt", { NULL }, 1074, "udp" },
- { "rdrmshc", { NULL }, 1075, "tcp" },
- { "rdrmshc", { NULL }, 1075, "udp" },
- { "dab-sti-c", { NULL }, 1076, "tcp" },
- { "dab-sti-c", { NULL }, 1076, "udp" },
- { "imgames", { NULL }, 1077, "tcp" },
- { "imgames", { NULL }, 1077, "udp" },
- { "avocent-proxy", { NULL }, 1078, "tcp" },
- { "avocent-proxy", { NULL }, 1078, "udp" },
- { "asprovatalk", { NULL }, 1079, "tcp" },
- { "asprovatalk", { NULL }, 1079, "udp" },
- { "socks", { NULL }, 1080, "tcp" },
- { "socks", { NULL }, 1080, "udp" },
- { "pvuniwien", { NULL }, 1081, "tcp" },
- { "pvuniwien", { NULL }, 1081, "udp" },
- { "amt-esd-prot", { NULL }, 1082, "tcp" },
- { "amt-esd-prot", { NULL }, 1082, "udp" },
- { "ansoft-lm-1", { NULL }, 1083, "tcp" },
- { "ansoft-lm-1", { NULL }, 1083, "udp" },
- { "ansoft-lm-2", { NULL }, 1084, "tcp" },
- { "ansoft-lm-2", { NULL }, 1084, "udp" },
- { "webobjects", { NULL }, 1085, "tcp" },
- { "webobjects", { NULL }, 1085, "udp" },
- { "cplscrambler-lg", { NULL }, 1086, "tcp" },
- { "cplscrambler-lg", { NULL }, 1086, "udp" },
- { "cplscrambler-in", { NULL }, 1087, "tcp" },
- { "cplscrambler-in", { NULL }, 1087, "udp" },
- { "cplscrambler-al", { NULL }, 1088, "tcp" },
- { "cplscrambler-al", { NULL }, 1088, "udp" },
- { "ff-annunc", { NULL }, 1089, "tcp" },
- { "ff-annunc", { NULL }, 1089, "udp" },
- { "ff-fms", { NULL }, 1090, "tcp" },
- { "ff-fms", { NULL }, 1090, "udp" },
- { "ff-sm", { NULL }, 1091, "tcp" },
- { "ff-sm", { NULL }, 1091, "udp" },
- { "obrpd", { NULL }, 1092, "tcp" },
- { "obrpd", { NULL }, 1092, "udp" },
- { "proofd", { NULL }, 1093, "tcp" },
- { "proofd", { NULL }, 1093, "udp" },
- { "rootd", { NULL }, 1094, "tcp" },
- { "rootd", { NULL }, 1094, "udp" },
- { "nicelink", { NULL }, 1095, "tcp" },
- { "nicelink", { NULL }, 1095, "udp" },
- { "cnrprotocol", { NULL }, 1096, "tcp" },
- { "cnrprotocol", { NULL }, 1096, "udp" },
- { "sunclustermgr", { NULL }, 1097, "tcp" },
- { "sunclustermgr", { NULL }, 1097, "udp" },
- { "rmiactivation", { NULL }, 1098, "tcp" },
- { "rmiactivation", { NULL }, 1098, "udp" },
- { "rmiregistry", { NULL }, 1099, "tcp" },
- { "rmiregistry", { NULL }, 1099, "udp" },
- { "mctp", { NULL }, 1100, "tcp" },
- { "mctp", { NULL }, 1100, "udp" },
- { "pt2-discover", { NULL }, 1101, "tcp" },
- { "pt2-discover", { NULL }, 1101, "udp" },
- { "adobeserver-1", { NULL }, 1102, "tcp" },
- { "adobeserver-1", { NULL }, 1102, "udp" },
- { "adobeserver-2", { NULL }, 1103, "tcp" },
- { "adobeserver-2", { NULL }, 1103, "udp" },
- { "xrl", { NULL }, 1104, "tcp" },
- { "xrl", { NULL }, 1104, "udp" },
- { "ftranhc", { NULL }, 1105, "tcp" },
- { "ftranhc", { NULL }, 1105, "udp" },
- { "isoipsigport-1", { NULL }, 1106, "tcp" },
- { "isoipsigport-1", { NULL }, 1106, "udp" },
- { "isoipsigport-2", { NULL }, 1107, "tcp" },
- { "isoipsigport-2", { NULL }, 1107, "udp" },
- { "ratio-adp", { NULL }, 1108, "tcp" },
- { "ratio-adp", { NULL }, 1108, "udp" },
- { "webadmstart", { NULL }, 1110, "tcp" },
- { "nfsd-keepalive", { NULL }, 1110, "udp" },
- { "lmsocialserver", { NULL }, 1111, "tcp" },
- { "lmsocialserver", { NULL }, 1111, "udp" },
- { "icp", { NULL }, 1112, "tcp" },
- { "icp", { NULL }, 1112, "udp" },
- { "ltp-deepspace", { NULL }, 1113, "tcp" },
- { "ltp-deepspace", { NULL }, 1113, "udp" },
- { "mini-sql", { NULL }, 1114, "tcp" },
- { "mini-sql", { NULL }, 1114, "udp" },
- { "ardus-trns", { NULL }, 1115, "tcp" },
- { "ardus-trns", { NULL }, 1115, "udp" },
- { "ardus-cntl", { NULL }, 1116, "tcp" },
- { "ardus-cntl", { NULL }, 1116, "udp" },
- { "ardus-mtrns", { NULL }, 1117, "tcp" },
- { "ardus-mtrns", { NULL }, 1117, "udp" },
- { "sacred", { NULL }, 1118, "tcp" },
- { "sacred", { NULL }, 1118, "udp" },
- { "bnetgame", { NULL }, 1119, "tcp" },
- { "bnetgame", { NULL }, 1119, "udp" },
- { "bnetfile", { NULL }, 1120, "tcp" },
- { "bnetfile", { NULL }, 1120, "udp" },
- { "rmpp", { NULL }, 1121, "tcp" },
- { "rmpp", { NULL }, 1121, "udp" },
- { "availant-mgr", { NULL }, 1122, "tcp" },
- { "availant-mgr", { NULL }, 1122, "udp" },
- { "murray", { NULL }, 1123, "tcp" },
- { "murray", { NULL }, 1123, "udp" },
- { "hpvmmcontrol", { NULL }, 1124, "tcp" },
- { "hpvmmcontrol", { NULL }, 1124, "udp" },
- { "hpvmmagent", { NULL }, 1125, "tcp" },
- { "hpvmmagent", { NULL }, 1125, "udp" },
- { "hpvmmdata", { NULL }, 1126, "tcp" },
- { "hpvmmdata", { NULL }, 1126, "udp" },
- { "kwdb-commn", { NULL }, 1127, "tcp" },
- { "kwdb-commn", { NULL }, 1127, "udp" },
- { "saphostctrl", { NULL }, 1128, "tcp" },
- { "saphostctrl", { NULL }, 1128, "udp" },
- { "saphostctrls", { NULL }, 1129, "tcp" },
- { "saphostctrls", { NULL }, 1129, "udp" },
- { "casp", { NULL }, 1130, "tcp" },
- { "casp", { NULL }, 1130, "udp" },
- { "caspssl", { NULL }, 1131, "tcp" },
- { "caspssl", { NULL }, 1131, "udp" },
- { "kvm-via-ip", { NULL }, 1132, "tcp" },
- { "kvm-via-ip", { NULL }, 1132, "udp" },
- { "dfn", { NULL }, 1133, "tcp" },
- { "dfn", { NULL }, 1133, "udp" },
- { "aplx", { NULL }, 1134, "tcp" },
- { "aplx", { NULL }, 1134, "udp" },
- { "omnivision", { NULL }, 1135, "tcp" },
- { "omnivision", { NULL }, 1135, "udp" },
- { "hhb-gateway", { NULL }, 1136, "tcp" },
- { "hhb-gateway", { NULL }, 1136, "udp" },
- { "trim", { NULL }, 1137, "tcp" },
- { "trim", { NULL }, 1137, "udp" },
- { "encrypted_admin", { NULL }, 1138, "tcp" },
- { "encrypted_admin", { NULL }, 1138, "udp" },
- { "evm", { NULL }, 1139, "tcp" },
- { "evm", { NULL }, 1139, "udp" },
- { "autonoc", { NULL }, 1140, "tcp" },
- { "autonoc", { NULL }, 1140, "udp" },
- { "mxomss", { NULL }, 1141, "tcp" },
- { "mxomss", { NULL }, 1141, "udp" },
- { "edtools", { NULL }, 1142, "tcp" },
- { "edtools", { NULL }, 1142, "udp" },
- { "imyx", { NULL }, 1143, "tcp" },
- { "imyx", { NULL }, 1143, "udp" },
- { "fuscript", { NULL }, 1144, "tcp" },
- { "fuscript", { NULL }, 1144, "udp" },
- { "x9-icue", { NULL }, 1145, "tcp" },
- { "x9-icue", { NULL }, 1145, "udp" },
- { "audit-transfer", { NULL }, 1146, "tcp" },
- { "audit-transfer", { NULL }, 1146, "udp" },
- { "capioverlan", { NULL }, 1147, "tcp" },
- { "capioverlan", { NULL }, 1147, "udp" },
- { "elfiq-repl", { NULL }, 1148, "tcp" },
- { "elfiq-repl", { NULL }, 1148, "udp" },
- { "bvtsonar", { NULL }, 1149, "tcp" },
- { "bvtsonar", { NULL }, 1149, "udp" },
- { "blaze", { NULL }, 1150, "tcp" },
- { "blaze", { NULL }, 1150, "udp" },
- { "unizensus", { NULL }, 1151, "tcp" },
- { "unizensus", { NULL }, 1151, "udp" },
- { "winpoplanmess", { NULL }, 1152, "tcp" },
- { "winpoplanmess", { NULL }, 1152, "udp" },
- { "c1222-acse", { NULL }, 1153, "tcp" },
- { "c1222-acse", { NULL }, 1153, "udp" },
- { "resacommunity", { NULL }, 1154, "tcp" },
- { "resacommunity", { NULL }, 1154, "udp" },
- { "nfa", { NULL }, 1155, "tcp" },
- { "nfa", { NULL }, 1155, "udp" },
- { "iascontrol-oms", { NULL }, 1156, "tcp" },
- { "iascontrol-oms", { NULL }, 1156, "udp" },
- { "iascontrol", { NULL }, 1157, "tcp" },
- { "iascontrol", { NULL }, 1157, "udp" },
- { "dbcontrol-oms", { NULL }, 1158, "tcp" },
- { "dbcontrol-oms", { NULL }, 1158, "udp" },
- { "oracle-oms", { NULL }, 1159, "tcp" },
- { "oracle-oms", { NULL }, 1159, "udp" },
- { "olsv", { NULL }, 1160, "tcp" },
- { "olsv", { NULL }, 1160, "udp" },
- { "health-polling", { NULL }, 1161, "tcp" },
- { "health-polling", { NULL }, 1161, "udp" },
- { "health-trap", { NULL }, 1162, "tcp" },
- { "health-trap", { NULL }, 1162, "udp" },
- { "sddp", { NULL }, 1163, "tcp" },
- { "sddp", { NULL }, 1163, "udp" },
- { "qsm-proxy", { NULL }, 1164, "tcp" },
- { "qsm-proxy", { NULL }, 1164, "udp" },
- { "qsm-gui", { NULL }, 1165, "tcp" },
- { "qsm-gui", { NULL }, 1165, "udp" },
- { "qsm-remote", { NULL }, 1166, "tcp" },
- { "qsm-remote", { NULL }, 1166, "udp" },
- { "cisco-ipsla", { NULL }, 1167, "tcp" },
- { "cisco-ipsla", { NULL }, 1167, "udp" },
- { "cisco-ipsla", { NULL }, 1167, "sctp" },
- { "vchat", { NULL }, 1168, "tcp" },
- { "vchat", { NULL }, 1168, "udp" },
- { "tripwire", { NULL }, 1169, "tcp" },
- { "tripwire", { NULL }, 1169, "udp" },
- { "atc-lm", { NULL }, 1170, "tcp" },
- { "atc-lm", { NULL }, 1170, "udp" },
- { "atc-appserver", { NULL }, 1171, "tcp" },
- { "atc-appserver", { NULL }, 1171, "udp" },
- { "dnap", { NULL }, 1172, "tcp" },
- { "dnap", { NULL }, 1172, "udp" },
- { "d-cinema-rrp", { NULL }, 1173, "tcp" },
- { "d-cinema-rrp", { NULL }, 1173, "udp" },
- { "fnet-remote-ui", { NULL }, 1174, "tcp" },
- { "fnet-remote-ui", { NULL }, 1174, "udp" },
- { "dossier", { NULL }, 1175, "tcp" },
- { "dossier", { NULL }, 1175, "udp" },
- { "indigo-server", { NULL }, 1176, "tcp" },
- { "indigo-server", { NULL }, 1176, "udp" },
- { "dkmessenger", { NULL }, 1177, "tcp" },
- { "dkmessenger", { NULL }, 1177, "udp" },
- { "sgi-storman", { NULL }, 1178, "tcp" },
- { "sgi-storman", { NULL }, 1178, "udp" },
- { "b2n", { NULL }, 1179, "tcp" },
- { "b2n", { NULL }, 1179, "udp" },
- { "mc-client", { NULL }, 1180, "tcp" },
- { "mc-client", { NULL }, 1180, "udp" },
- { "3comnetman", { NULL }, 1181, "tcp" },
- { "3comnetman", { NULL }, 1181, "udp" },
- { "accelenet", { NULL }, 1182, "tcp" },
- { "accelenet-data", { NULL }, 1182, "udp" },
- { "llsurfup-http", { NULL }, 1183, "tcp" },
- { "llsurfup-http", { NULL }, 1183, "udp" },
- { "llsurfup-https", { NULL }, 1184, "tcp" },
- { "llsurfup-https", { NULL }, 1184, "udp" },
- { "catchpole", { NULL }, 1185, "tcp" },
- { "catchpole", { NULL }, 1185, "udp" },
- { "mysql-cluster", { NULL }, 1186, "tcp" },
- { "mysql-cluster", { NULL }, 1186, "udp" },
- { "alias", { NULL }, 1187, "tcp" },
- { "alias", { NULL }, 1187, "udp" },
- { "hp-webadmin", { NULL }, 1188, "tcp" },
- { "hp-webadmin", { NULL }, 1188, "udp" },
- { "unet", { NULL }, 1189, "tcp" },
- { "unet", { NULL }, 1189, "udp" },
- { "commlinx-avl", { NULL }, 1190, "tcp" },
- { "commlinx-avl", { NULL }, 1190, "udp" },
- { "gpfs", { NULL }, 1191, "tcp" },
- { "gpfs", { NULL }, 1191, "udp" },
- { "caids-sensor", { NULL }, 1192, "tcp" },
- { "caids-sensor", { NULL }, 1192, "udp" },
- { "fiveacross", { NULL }, 1193, "tcp" },
- { "fiveacross", { NULL }, 1193, "udp" },
- { "openvpn", { NULL }, 1194, "tcp" },
- { "openvpn", { NULL }, 1194, "udp" },
- { "rsf-1", { NULL }, 1195, "tcp" },
- { "rsf-1", { NULL }, 1195, "udp" },
- { "netmagic", { NULL }, 1196, "tcp" },
- { "netmagic", { NULL }, 1196, "udp" },
- { "carrius-rshell", { NULL }, 1197, "tcp" },
- { "carrius-rshell", { NULL }, 1197, "udp" },
- { "cajo-discovery", { NULL }, 1198, "tcp" },
- { "cajo-discovery", { NULL }, 1198, "udp" },
- { "dmidi", { NULL }, 1199, "tcp" },
- { "dmidi", { NULL }, 1199, "udp" },
- { "scol", { NULL }, 1200, "tcp" },
- { "scol", { NULL }, 1200, "udp" },
- { "nucleus-sand", { NULL }, 1201, "tcp" },
- { "nucleus-sand", { NULL }, 1201, "udp" },
- { "caiccipc", { NULL }, 1202, "tcp" },
- { "caiccipc", { NULL }, 1202, "udp" },
- { "ssslic-mgr", { NULL }, 1203, "tcp" },
- { "ssslic-mgr", { NULL }, 1203, "udp" },
- { "ssslog-mgr", { NULL }, 1204, "tcp" },
- { "ssslog-mgr", { NULL }, 1204, "udp" },
- { "accord-mgc", { NULL }, 1205, "tcp" },
- { "accord-mgc", { NULL }, 1205, "udp" },
- { "anthony-data", { NULL }, 1206, "tcp" },
- { "anthony-data", { NULL }, 1206, "udp" },
- { "metasage", { NULL }, 1207, "tcp" },
- { "metasage", { NULL }, 1207, "udp" },
- { "seagull-ais", { NULL }, 1208, "tcp" },
- { "seagull-ais", { NULL }, 1208, "udp" },
- { "ipcd3", { NULL }, 1209, "tcp" },
- { "ipcd3", { NULL }, 1209, "udp" },
- { "eoss", { NULL }, 1210, "tcp" },
- { "eoss", { NULL }, 1210, "udp" },
- { "groove-dpp", { NULL }, 1211, "tcp" },
- { "groove-dpp", { NULL }, 1211, "udp" },
- { "lupa", { NULL }, 1212, "tcp" },
- { "lupa", { NULL }, 1212, "udp" },
- { "mpc-lifenet", { NULL }, 1213, "tcp" },
- { "mpc-lifenet", { NULL }, 1213, "udp" },
- { "kazaa", { NULL }, 1214, "tcp" },
- { "kazaa", { NULL }, 1214, "udp" },
- { "scanstat-1", { NULL }, 1215, "tcp" },
- { "scanstat-1", { NULL }, 1215, "udp" },
- { "etebac5", { NULL }, 1216, "tcp" },
- { "etebac5", { NULL }, 1216, "udp" },
- { "hpss-ndapi", { NULL }, 1217, "tcp" },
- { "hpss-ndapi", { NULL }, 1217, "udp" },
- { "aeroflight-ads", { NULL }, 1218, "tcp" },
- { "aeroflight-ads", { NULL }, 1218, "udp" },
- { "aeroflight-ret", { NULL }, 1219, "tcp" },
- { "aeroflight-ret", { NULL }, 1219, "udp" },
- { "qt-serveradmin", { NULL }, 1220, "tcp" },
- { "qt-serveradmin", { NULL }, 1220, "udp" },
- { "sweetware-apps", { NULL }, 1221, "tcp" },
- { "sweetware-apps", { NULL }, 1221, "udp" },
- { "nerv", { NULL }, 1222, "tcp" },
- { "nerv", { NULL }, 1222, "udp" },
- { "tgp", { NULL }, 1223, "tcp" },
- { "tgp", { NULL }, 1223, "udp" },
- { "vpnz", { NULL }, 1224, "tcp" },
- { "vpnz", { NULL }, 1224, "udp" },
- { "slinkysearch", { NULL }, 1225, "tcp" },
- { "slinkysearch", { NULL }, 1225, "udp" },
- { "stgxfws", { NULL }, 1226, "tcp" },
- { "stgxfws", { NULL }, 1226, "udp" },
- { "dns2go", { NULL }, 1227, "tcp" },
- { "dns2go", { NULL }, 1227, "udp" },
- { "florence", { NULL }, 1228, "tcp" },
- { "florence", { NULL }, 1228, "udp" },
- { "zented", { NULL }, 1229, "tcp" },
- { "zented", { NULL }, 1229, "udp" },
- { "periscope", { NULL }, 1230, "tcp" },
- { "periscope", { NULL }, 1230, "udp" },
- { "menandmice-lpm", { NULL }, 1231, "tcp" },
- { "menandmice-lpm", { NULL }, 1231, "udp" },
- { "univ-appserver", { NULL }, 1233, "tcp" },
- { "univ-appserver", { NULL }, 1233, "udp" },
- { "search-agent", { NULL }, 1234, "tcp" },
- { "search-agent", { NULL }, 1234, "udp" },
- { "mosaicsyssvc1", { NULL }, 1235, "tcp" },
- { "mosaicsyssvc1", { NULL }, 1235, "udp" },
- { "bvcontrol", { NULL }, 1236, "tcp" },
- { "bvcontrol", { NULL }, 1236, "udp" },
- { "tsdos390", { NULL }, 1237, "tcp" },
- { "tsdos390", { NULL }, 1237, "udp" },
- { "hacl-qs", { NULL }, 1238, "tcp" },
- { "hacl-qs", { NULL }, 1238, "udp" },
- { "nmsd", { NULL }, 1239, "tcp" },
- { "nmsd", { NULL }, 1239, "udp" },
- { "instantia", { NULL }, 1240, "tcp" },
- { "instantia", { NULL }, 1240, "udp" },
- { "nessus", { NULL }, 1241, "tcp" },
- { "nessus", { NULL }, 1241, "udp" },
- { "nmasoverip", { NULL }, 1242, "tcp" },
- { "nmasoverip", { NULL }, 1242, "udp" },
- { "serialgateway", { NULL }, 1243, "tcp" },
- { "serialgateway", { NULL }, 1243, "udp" },
- { "isbconference1", { NULL }, 1244, "tcp" },
- { "isbconference1", { NULL }, 1244, "udp" },
- { "isbconference2", { NULL }, 1245, "tcp" },
- { "isbconference2", { NULL }, 1245, "udp" },
- { "payrouter", { NULL }, 1246, "tcp" },
- { "payrouter", { NULL }, 1246, "udp" },
- { "visionpyramid", { NULL }, 1247, "tcp" },
- { "visionpyramid", { NULL }, 1247, "udp" },
- { "hermes", { NULL }, 1248, "tcp" },
- { "hermes", { NULL }, 1248, "udp" },
- { "mesavistaco", { NULL }, 1249, "tcp" },
- { "mesavistaco", { NULL }, 1249, "udp" },
- { "swldy-sias", { NULL }, 1250, "tcp" },
- { "swldy-sias", { NULL }, 1250, "udp" },
- { "servergraph", { NULL }, 1251, "tcp" },
- { "servergraph", { NULL }, 1251, "udp" },
- { "bspne-pcc", { NULL }, 1252, "tcp" },
- { "bspne-pcc", { NULL }, 1252, "udp" },
- { "q55-pcc", { NULL }, 1253, "tcp" },
- { "q55-pcc", { NULL }, 1253, "udp" },
- { "de-noc", { NULL }, 1254, "tcp" },
- { "de-noc", { NULL }, 1254, "udp" },
- { "de-cache-query", { NULL }, 1255, "tcp" },
- { "de-cache-query", { NULL }, 1255, "udp" },
- { "de-server", { NULL }, 1256, "tcp" },
- { "de-server", { NULL }, 1256, "udp" },
- { "shockwave2", { NULL }, 1257, "tcp" },
- { "shockwave2", { NULL }, 1257, "udp" },
- { "opennl", { NULL }, 1258, "tcp" },
- { "opennl", { NULL }, 1258, "udp" },
- { "opennl-voice", { NULL }, 1259, "tcp" },
- { "opennl-voice", { NULL }, 1259, "udp" },
- { "ibm-ssd", { NULL }, 1260, "tcp" },
- { "ibm-ssd", { NULL }, 1260, "udp" },
- { "mpshrsv", { NULL }, 1261, "tcp" },
- { "mpshrsv", { NULL }, 1261, "udp" },
- { "qnts-orb", { NULL }, 1262, "tcp" },
- { "qnts-orb", { NULL }, 1262, "udp" },
- { "dka", { NULL }, 1263, "tcp" },
- { "dka", { NULL }, 1263, "udp" },
- { "prat", { NULL }, 1264, "tcp" },
- { "prat", { NULL }, 1264, "udp" },
- { "dssiapi", { NULL }, 1265, "tcp" },
- { "dssiapi", { NULL }, 1265, "udp" },
- { "dellpwrappks", { NULL }, 1266, "tcp" },
- { "dellpwrappks", { NULL }, 1266, "udp" },
- { "epc", { NULL }, 1267, "tcp" },
- { "epc", { NULL }, 1267, "udp" },
- { "propel-msgsys", { NULL }, 1268, "tcp" },
- { "propel-msgsys", { NULL }, 1268, "udp" },
- { "watilapp", { NULL }, 1269, "tcp" },
- { "watilapp", { NULL }, 1269, "udp" },
- { "opsmgr", { NULL }, 1270, "tcp" },
- { "opsmgr", { NULL }, 1270, "udp" },
- { "excw", { NULL }, 1271, "tcp" },
- { "excw", { NULL }, 1271, "udp" },
- { "cspmlockmgr", { NULL }, 1272, "tcp" },
- { "cspmlockmgr", { NULL }, 1272, "udp" },
- { "emc-gateway", { NULL }, 1273, "tcp" },
- { "emc-gateway", { NULL }, 1273, "udp" },
- { "t1distproc", { NULL }, 1274, "tcp" },
- { "t1distproc", { NULL }, 1274, "udp" },
- { "ivcollector", { NULL }, 1275, "tcp" },
- { "ivcollector", { NULL }, 1275, "udp" },
- { "ivmanager", { NULL }, 1276, "tcp" },
- { "ivmanager", { NULL }, 1276, "udp" },
- { "miva-mqs", { NULL }, 1277, "tcp" },
- { "miva-mqs", { NULL }, 1277, "udp" },
- { "dellwebadmin-1", { NULL }, 1278, "tcp" },
- { "dellwebadmin-1", { NULL }, 1278, "udp" },
- { "dellwebadmin-2", { NULL }, 1279, "tcp" },
- { "dellwebadmin-2", { NULL }, 1279, "udp" },
- { "pictrography", { NULL }, 1280, "tcp" },
- { "pictrography", { NULL }, 1280, "udp" },
- { "healthd", { NULL }, 1281, "tcp" },
- { "healthd", { NULL }, 1281, "udp" },
- { "emperion", { NULL }, 1282, "tcp" },
- { "emperion", { NULL }, 1282, "udp" },
- { "productinfo", { NULL }, 1283, "tcp" },
- { "productinfo", { NULL }, 1283, "udp" },
- { "iee-qfx", { NULL }, 1284, "tcp" },
- { "iee-qfx", { NULL }, 1284, "udp" },
- { "neoiface", { NULL }, 1285, "tcp" },
- { "neoiface", { NULL }, 1285, "udp" },
- { "netuitive", { NULL }, 1286, "tcp" },
- { "netuitive", { NULL }, 1286, "udp" },
- { "routematch", { NULL }, 1287, "tcp" },
- { "routematch", { NULL }, 1287, "udp" },
- { "navbuddy", { NULL }, 1288, "tcp" },
- { "navbuddy", { NULL }, 1288, "udp" },
- { "jwalkserver", { NULL }, 1289, "tcp" },
- { "jwalkserver", { NULL }, 1289, "udp" },
- { "winjaserver", { NULL }, 1290, "tcp" },
- { "winjaserver", { NULL }, 1290, "udp" },
- { "seagulllms", { NULL }, 1291, "tcp" },
- { "seagulllms", { NULL }, 1291, "udp" },
- { "dsdn", { NULL }, 1292, "tcp" },
- { "dsdn", { NULL }, 1292, "udp" },
- { "pkt-krb-ipsec", { NULL }, 1293, "tcp" },
- { "pkt-krb-ipsec", { NULL }, 1293, "udp" },
- { "cmmdriver", { NULL }, 1294, "tcp" },
- { "cmmdriver", { NULL }, 1294, "udp" },
- { "ehtp", { NULL }, 1295, "tcp" },
- { "ehtp", { NULL }, 1295, "udp" },
- { "dproxy", { NULL }, 1296, "tcp" },
- { "dproxy", { NULL }, 1296, "udp" },
- { "sdproxy", { NULL }, 1297, "tcp" },
- { "sdproxy", { NULL }, 1297, "udp" },
- { "lpcp", { NULL }, 1298, "tcp" },
- { "lpcp", { NULL }, 1298, "udp" },
- { "hp-sci", { NULL }, 1299, "tcp" },
- { "hp-sci", { NULL }, 1299, "udp" },
- { "h323hostcallsc", { NULL }, 1300, "tcp" },
- { "h323hostcallsc", { NULL }, 1300, "udp" },
- { "ci3-software-1", { NULL }, 1301, "tcp" },
- { "ci3-software-1", { NULL }, 1301, "udp" },
- { "ci3-software-2", { NULL }, 1302, "tcp" },
- { "ci3-software-2", { NULL }, 1302, "udp" },
- { "sftsrv", { NULL }, 1303, "tcp" },
- { "sftsrv", { NULL }, 1303, "udp" },
- { "boomerang", { NULL }, 1304, "tcp" },
- { "boomerang", { NULL }, 1304, "udp" },
- { "pe-mike", { NULL }, 1305, "tcp" },
- { "pe-mike", { NULL }, 1305, "udp" },
- { "re-conn-proto", { NULL }, 1306, "tcp" },
- { "re-conn-proto", { NULL }, 1306, "udp" },
- { "pacmand", { NULL }, 1307, "tcp" },
- { "pacmand", { NULL }, 1307, "udp" },
- { "odsi", { NULL }, 1308, "tcp" },
- { "odsi", { NULL }, 1308, "udp" },
- { "jtag-server", { NULL }, 1309, "tcp" },
- { "jtag-server", { NULL }, 1309, "udp" },
- { "husky", { NULL }, 1310, "tcp" },
- { "husky", { NULL }, 1310, "udp" },
- { "rxmon", { NULL }, 1311, "tcp" },
- { "rxmon", { NULL }, 1311, "udp" },
- { "sti-envision", { NULL }, 1312, "tcp" },
- { "sti-envision", { NULL }, 1312, "udp" },
- { "bmc_patroldb", { NULL }, 1313, "tcp" },
- { "bmc_patroldb", { NULL }, 1313, "udp" },
- { "pdps", { NULL }, 1314, "tcp" },
- { "pdps", { NULL }, 1314, "udp" },
- { "els", { NULL }, 1315, "tcp" },
- { "els", { NULL }, 1315, "udp" },
- { "exbit-escp", { NULL }, 1316, "tcp" },
- { "exbit-escp", { NULL }, 1316, "udp" },
- { "vrts-ipcserver", { NULL }, 1317, "tcp" },
- { "vrts-ipcserver", { NULL }, 1317, "udp" },
- { "krb5gatekeeper", { NULL }, 1318, "tcp" },
- { "krb5gatekeeper", { NULL }, 1318, "udp" },
- { "amx-icsp", { NULL }, 1319, "tcp" },
- { "amx-icsp", { NULL }, 1319, "udp" },
- { "amx-axbnet", { NULL }, 1320, "tcp" },
- { "amx-axbnet", { NULL }, 1320, "udp" },
- { "pip", { NULL }, 1321, "tcp" },
- { "pip", { NULL }, 1321, "udp" },
- { "novation", { NULL }, 1322, "tcp" },
- { "novation", { NULL }, 1322, "udp" },
- { "brcd", { NULL }, 1323, "tcp" },
- { "brcd", { NULL }, 1323, "udp" },
- { "delta-mcp", { NULL }, 1324, "tcp" },
- { "delta-mcp", { NULL }, 1324, "udp" },
- { "dx-instrument", { NULL }, 1325, "tcp" },
- { "dx-instrument", { NULL }, 1325, "udp" },
- { "wimsic", { NULL }, 1326, "tcp" },
- { "wimsic", { NULL }, 1326, "udp" },
- { "ultrex", { NULL }, 1327, "tcp" },
- { "ultrex", { NULL }, 1327, "udp" },
- { "ewall", { NULL }, 1328, "tcp" },
- { "ewall", { NULL }, 1328, "udp" },
- { "netdb-export", { NULL }, 1329, "tcp" },
- { "netdb-export", { NULL }, 1329, "udp" },
- { "streetperfect", { NULL }, 1330, "tcp" },
- { "streetperfect", { NULL }, 1330, "udp" },
- { "intersan", { NULL }, 1331, "tcp" },
- { "intersan", { NULL }, 1331, "udp" },
- { "pcia-rxp-b", { NULL }, 1332, "tcp" },
- { "pcia-rxp-b", { NULL }, 1332, "udp" },
- { "passwrd-policy", { NULL }, 1333, "tcp" },
- { "passwrd-policy", { NULL }, 1333, "udp" },
- { "writesrv", { NULL }, 1334, "tcp" },
- { "writesrv", { NULL }, 1334, "udp" },
- { "digital-notary", { NULL }, 1335, "tcp" },
- { "digital-notary", { NULL }, 1335, "udp" },
- { "ischat", { NULL }, 1336, "tcp" },
- { "ischat", { NULL }, 1336, "udp" },
- { "menandmice-dns", { NULL }, 1337, "tcp" },
- { "menandmice-dns", { NULL }, 1337, "udp" },
- { "wmc-log-svc", { NULL }, 1338, "tcp" },
- { "wmc-log-svc", { NULL }, 1338, "udp" },
- { "kjtsiteserver", { NULL }, 1339, "tcp" },
- { "kjtsiteserver", { NULL }, 1339, "udp" },
- { "naap", { NULL }, 1340, "tcp" },
- { "naap", { NULL }, 1340, "udp" },
- { "qubes", { NULL }, 1341, "tcp" },
- { "qubes", { NULL }, 1341, "udp" },
- { "esbroker", { NULL }, 1342, "tcp" },
- { "esbroker", { NULL }, 1342, "udp" },
- { "re101", { NULL }, 1343, "tcp" },
- { "re101", { NULL }, 1343, "udp" },
- { "icap", { NULL }, 1344, "tcp" },
- { "icap", { NULL }, 1344, "udp" },
- { "vpjp", { NULL }, 1345, "tcp" },
- { "vpjp", { NULL }, 1345, "udp" },
- { "alta-ana-lm", { NULL }, 1346, "tcp" },
- { "alta-ana-lm", { NULL }, 1346, "udp" },
- { "bbn-mmc", { NULL }, 1347, "tcp" },
- { "bbn-mmc", { NULL }, 1347, "udp" },
- { "bbn-mmx", { NULL }, 1348, "tcp" },
- { "bbn-mmx", { NULL }, 1348, "udp" },
- { "sbook", { NULL }, 1349, "tcp" },
- { "sbook", { NULL }, 1349, "udp" },
- { "editbench", { NULL }, 1350, "tcp" },
- { "editbench", { NULL }, 1350, "udp" },
- { "equationbuilder", { NULL }, 1351, "tcp" },
- { "equationbuilder", { NULL }, 1351, "udp" },
- { "lotusnote", { NULL }, 1352, "tcp" },
- { "lotusnote", { NULL }, 1352, "udp" },
- { "relief", { NULL }, 1353, "tcp" },
- { "relief", { NULL }, 1353, "udp" },
- { "XSIP-network", { NULL }, 1354, "tcp" },
- { "XSIP-network", { NULL }, 1354, "udp" },
- { "intuitive-edge", { NULL }, 1355, "tcp" },
- { "intuitive-edge", { NULL }, 1355, "udp" },
- { "cuillamartin", { NULL }, 1356, "tcp" },
- { "cuillamartin", { NULL }, 1356, "udp" },
- { "pegboard", { NULL }, 1357, "tcp" },
- { "pegboard", { NULL }, 1357, "udp" },
- { "connlcli", { NULL }, 1358, "tcp" },
- { "connlcli", { NULL }, 1358, "udp" },
- { "ftsrv", { NULL }, 1359, "tcp" },
- { "ftsrv", { NULL }, 1359, "udp" },
- { "mimer", { NULL }, 1360, "tcp" },
- { "mimer", { NULL }, 1360, "udp" },
- { "linx", { NULL }, 1361, "tcp" },
- { "linx", { NULL }, 1361, "udp" },
- { "timeflies", { NULL }, 1362, "tcp" },
- { "timeflies", { NULL }, 1362, "udp" },
- { "ndm-requester", { NULL }, 1363, "tcp" },
- { "ndm-requester", { NULL }, 1363, "udp" },
- { "ndm-server", { NULL }, 1364, "tcp" },
- { "ndm-server", { NULL }, 1364, "udp" },
- { "adapt-sna", { NULL }, 1365, "tcp" },
- { "adapt-sna", { NULL }, 1365, "udp" },
- { "netware-csp", { NULL }, 1366, "tcp" },
- { "netware-csp", { NULL }, 1366, "udp" },
- { "dcs", { NULL }, 1367, "tcp" },
- { "dcs", { NULL }, 1367, "udp" },
- { "screencast", { NULL }, 1368, "tcp" },
- { "screencast", { NULL }, 1368, "udp" },
- { "gv-us", { NULL }, 1369, "tcp" },
- { "gv-us", { NULL }, 1369, "udp" },
- { "us-gv", { NULL }, 1370, "tcp" },
- { "us-gv", { NULL }, 1370, "udp" },
- { "fc-cli", { NULL }, 1371, "tcp" },
- { "fc-cli", { NULL }, 1371, "udp" },
- { "fc-ser", { NULL }, 1372, "tcp" },
- { "fc-ser", { NULL }, 1372, "udp" },
- { "chromagrafx", { NULL }, 1373, "tcp" },
- { "chromagrafx", { NULL }, 1373, "udp" },
- { "molly", { NULL }, 1374, "tcp" },
- { "molly", { NULL }, 1374, "udp" },
- { "bytex", { NULL }, 1375, "tcp" },
- { "bytex", { NULL }, 1375, "udp" },
- { "ibm-pps", { NULL }, 1376, "tcp" },
- { "ibm-pps", { NULL }, 1376, "udp" },
- { "cichlid", { NULL }, 1377, "tcp" },
- { "cichlid", { NULL }, 1377, "udp" },
- { "elan", { NULL }, 1378, "tcp" },
- { "elan", { NULL }, 1378, "udp" },
- { "dbreporter", { NULL }, 1379, "tcp" },
- { "dbreporter", { NULL }, 1379, "udp" },
- { "telesis-licman", { NULL }, 1380, "tcp" },
- { "telesis-licman", { NULL }, 1380, "udp" },
- { "apple-licman", { NULL }, 1381, "tcp" },
- { "apple-licman", { NULL }, 1381, "udp" },
- { "udt_os", { NULL }, 1382, "tcp" },
- { "udt_os", { NULL }, 1382, "udp" },
- { "gwha", { NULL }, 1383, "tcp" },
- { "gwha", { NULL }, 1383, "udp" },
- { "os-licman", { NULL }, 1384, "tcp" },
- { "os-licman", { NULL }, 1384, "udp" },
- { "atex_elmd", { NULL }, 1385, "tcp" },
- { "atex_elmd", { NULL }, 1385, "udp" },
- { "checksum", { NULL }, 1386, "tcp" },
- { "checksum", { NULL }, 1386, "udp" },
- { "cadsi-lm", { NULL }, 1387, "tcp" },
- { "cadsi-lm", { NULL }, 1387, "udp" },
- { "objective-dbc", { NULL }, 1388, "tcp" },
- { "objective-dbc", { NULL }, 1388, "udp" },
- { "iclpv-dm", { NULL }, 1389, "tcp" },
- { "iclpv-dm", { NULL }, 1389, "udp" },
- { "iclpv-sc", { NULL }, 1390, "tcp" },
- { "iclpv-sc", { NULL }, 1390, "udp" },
- { "iclpv-sas", { NULL }, 1391, "tcp" },
- { "iclpv-sas", { NULL }, 1391, "udp" },
- { "iclpv-pm", { NULL }, 1392, "tcp" },
- { "iclpv-pm", { NULL }, 1392, "udp" },
- { "iclpv-nls", { NULL }, 1393, "tcp" },
- { "iclpv-nls", { NULL }, 1393, "udp" },
- { "iclpv-nlc", { NULL }, 1394, "tcp" },
- { "iclpv-nlc", { NULL }, 1394, "udp" },
- { "iclpv-wsm", { NULL }, 1395, "tcp" },
- { "iclpv-wsm", { NULL }, 1395, "udp" },
- { "dvl-activemail", { NULL }, 1396, "tcp" },
- { "dvl-activemail", { NULL }, 1396, "udp" },
- { "audio-activmail", { NULL }, 1397, "tcp" },
- { "audio-activmail", { NULL }, 1397, "udp" },
- { "video-activmail", { NULL }, 1398, "tcp" },
- { "video-activmail", { NULL }, 1398, "udp" },
- { "cadkey-licman", { NULL }, 1399, "tcp" },
- { "cadkey-licman", { NULL }, 1399, "udp" },
- { "cadkey-tablet", { NULL }, 1400, "tcp" },
- { "cadkey-tablet", { NULL }, 1400, "udp" },
- { "goldleaf-licman", { NULL }, 1401, "tcp" },
- { "goldleaf-licman", { NULL }, 1401, "udp" },
- { "prm-sm-np", { NULL }, 1402, "tcp" },
- { "prm-sm-np", { NULL }, 1402, "udp" },
- { "prm-nm-np", { NULL }, 1403, "tcp" },
- { "prm-nm-np", { NULL }, 1403, "udp" },
- { "igi-lm", { NULL }, 1404, "tcp" },
- { "igi-lm", { NULL }, 1404, "udp" },
- { "ibm-res", { NULL }, 1405, "tcp" },
- { "ibm-res", { NULL }, 1405, "udp" },
- { "netlabs-lm", { NULL }, 1406, "tcp" },
- { "netlabs-lm", { NULL }, 1406, "udp" },
- { "dbsa-lm", { NULL }, 1407, "tcp" },
- { "dbsa-lm", { NULL }, 1407, "udp" },
- { "sophia-lm", { NULL }, 1408, "tcp" },
- { "sophia-lm", { NULL }, 1408, "udp" },
- { "here-lm", { NULL }, 1409, "tcp" },
- { "here-lm", { NULL }, 1409, "udp" },
- { "hiq", { NULL }, 1410, "tcp" },
- { "hiq", { NULL }, 1410, "udp" },
- { "af", { NULL }, 1411, "tcp" },
- { "af", { NULL }, 1411, "udp" },
- { "innosys", { NULL }, 1412, "tcp" },
- { "innosys", { NULL }, 1412, "udp" },
- { "innosys-acl", { NULL }, 1413, "tcp" },
- { "innosys-acl", { NULL }, 1413, "udp" },
- { "ibm-mqseries", { NULL }, 1414, "tcp" },
- { "ibm-mqseries", { NULL }, 1414, "udp" },
- { "dbstar", { NULL }, 1415, "tcp" },
- { "dbstar", { NULL }, 1415, "udp" },
- { "novell-lu6.2", { NULL }, 1416, "tcp" },
- { "novell-lu6.2", { NULL }, 1416, "udp" },
- { "timbuktu-srv1", { NULL }, 1417, "tcp" },
- { "timbuktu-srv1", { NULL }, 1417, "udp" },
- { "timbuktu-srv2", { NULL }, 1418, "tcp" },
- { "timbuktu-srv2", { NULL }, 1418, "udp" },
- { "timbuktu-srv3", { NULL }, 1419, "tcp" },
- { "timbuktu-srv3", { NULL }, 1419, "udp" },
- { "timbuktu-srv4", { NULL }, 1420, "tcp" },
- { "timbuktu-srv4", { NULL }, 1420, "udp" },
- { "gandalf-lm", { NULL }, 1421, "tcp" },
- { "gandalf-lm", { NULL }, 1421, "udp" },
- { "autodesk-lm", { NULL }, 1422, "tcp" },
- { "autodesk-lm", { NULL }, 1422, "udp" },
- { "essbase", { NULL }, 1423, "tcp" },
- { "essbase", { NULL }, 1423, "udp" },
- { "hybrid", { NULL }, 1424, "tcp" },
- { "hybrid", { NULL }, 1424, "udp" },
- { "zion-lm", { NULL }, 1425, "tcp" },
- { "zion-lm", { NULL }, 1425, "udp" },
- { "sais", { NULL }, 1426, "tcp" },
- { "sais", { NULL }, 1426, "udp" },
- { "mloadd", { NULL }, 1427, "tcp" },
- { "mloadd", { NULL }, 1427, "udp" },
- { "informatik-lm", { NULL }, 1428, "tcp" },
- { "informatik-lm", { NULL }, 1428, "udp" },
- { "nms", { NULL }, 1429, "tcp" },
- { "nms", { NULL }, 1429, "udp" },
- { "tpdu", { NULL }, 1430, "tcp" },
- { "tpdu", { NULL }, 1430, "udp" },
- { "rgtp", { NULL }, 1431, "tcp" },
- { "rgtp", { NULL }, 1431, "udp" },
- { "blueberry-lm", { NULL }, 1432, "tcp" },
- { "blueberry-lm", { NULL }, 1432, "udp" },
- { "ms-sql-s", { NULL }, 1433, "tcp" },
- { "ms-sql-s", { NULL }, 1433, "udp" },
- { "ms-sql-m", { NULL }, 1434, "tcp" },
- { "ms-sql-m", { NULL }, 1434, "udp" },
- { "ibm-cics", { NULL }, 1435, "tcp" },
- { "ibm-cics", { NULL }, 1435, "udp" },
- { "saism", { NULL }, 1436, "tcp" },
- { "saism", { NULL }, 1436, "udp" },
- { "tabula", { NULL }, 1437, "tcp" },
- { "tabula", { NULL }, 1437, "udp" },
- { "eicon-server", { NULL }, 1438, "tcp" },
- { "eicon-server", { NULL }, 1438, "udp" },
- { "eicon-x25", { NULL }, 1439, "tcp" },
- { "eicon-x25", { NULL }, 1439, "udp" },
- { "eicon-slp", { NULL }, 1440, "tcp" },
- { "eicon-slp", { NULL }, 1440, "udp" },
- { "cadis-1", { NULL }, 1441, "tcp" },
- { "cadis-1", { NULL }, 1441, "udp" },
- { "cadis-2", { NULL }, 1442, "tcp" },
- { "cadis-2", { NULL }, 1442, "udp" },
- { "ies-lm", { NULL }, 1443, "tcp" },
- { "ies-lm", { NULL }, 1443, "udp" },
- { "marcam-lm", { NULL }, 1444, "tcp" },
- { "marcam-lm", { NULL }, 1444, "udp" },
- { "proxima-lm", { NULL }, 1445, "tcp" },
- { "proxima-lm", { NULL }, 1445, "udp" },
- { "ora-lm", { NULL }, 1446, "tcp" },
- { "ora-lm", { NULL }, 1446, "udp" },
- { "apri-lm", { NULL }, 1447, "tcp" },
- { "apri-lm", { NULL }, 1447, "udp" },
- { "oc-lm", { NULL }, 1448, "tcp" },
- { "oc-lm", { NULL }, 1448, "udp" },
- { "peport", { NULL }, 1449, "tcp" },
- { "peport", { NULL }, 1449, "udp" },
- { "dwf", { NULL }, 1450, "tcp" },
- { "dwf", { NULL }, 1450, "udp" },
- { "infoman", { NULL }, 1451, "tcp" },
- { "infoman", { NULL }, 1451, "udp" },
- { "gtegsc-lm", { NULL }, 1452, "tcp" },
- { "gtegsc-lm", { NULL }, 1452, "udp" },
- { "genie-lm", { NULL }, 1453, "tcp" },
- { "genie-lm", { NULL }, 1453, "udp" },
- { "interhdl_elmd", { NULL }, 1454, "tcp" },
- { "interhdl_elmd", { NULL }, 1454, "udp" },
- { "esl-lm", { NULL }, 1455, "tcp" },
- { "esl-lm", { NULL }, 1455, "udp" },
- { "dca", { NULL }, 1456, "tcp" },
- { "dca", { NULL }, 1456, "udp" },
- { "valisys-lm", { NULL }, 1457, "tcp" },
- { "valisys-lm", { NULL }, 1457, "udp" },
- { "nrcabq-lm", { NULL }, 1458, "tcp" },
- { "nrcabq-lm", { NULL }, 1458, "udp" },
- { "proshare1", { NULL }, 1459, "tcp" },
- { "proshare1", { NULL }, 1459, "udp" },
- { "proshare2", { NULL }, 1460, "tcp" },
- { "proshare2", { NULL }, 1460, "udp" },
- { "ibm_wrless_lan", { NULL }, 1461, "tcp" },
- { "ibm_wrless_lan", { NULL }, 1461, "udp" },
- { "world-lm", { NULL }, 1462, "tcp" },
- { "world-lm", { NULL }, 1462, "udp" },
- { "nucleus", { NULL }, 1463, "tcp" },
- { "nucleus", { NULL }, 1463, "udp" },
- { "msl_lmd", { NULL }, 1464, "tcp" },
- { "msl_lmd", { NULL }, 1464, "udp" },
- { "pipes", { NULL }, 1465, "tcp" },
- { "pipes", { NULL }, 1465, "udp" },
- { "oceansoft-lm", { NULL }, 1466, "tcp" },
- { "oceansoft-lm", { NULL }, 1466, "udp" },
- { "csdmbase", { NULL }, 1467, "tcp" },
- { "csdmbase", { NULL }, 1467, "udp" },
- { "csdm", { NULL }, 1468, "tcp" },
- { "csdm", { NULL }, 1468, "udp" },
- { "aal-lm", { NULL }, 1469, "tcp" },
- { "aal-lm", { NULL }, 1469, "udp" },
- { "uaiact", { NULL }, 1470, "tcp" },
- { "uaiact", { NULL }, 1470, "udp" },
- { "csdmbase", { NULL }, 1471, "tcp" },
- { "csdmbase", { NULL }, 1471, "udp" },
- { "csdm", { NULL }, 1472, "tcp" },
- { "csdm", { NULL }, 1472, "udp" },
- { "openmath", { NULL }, 1473, "tcp" },
- { "openmath", { NULL }, 1473, "udp" },
- { "telefinder", { NULL }, 1474, "tcp" },
- { "telefinder", { NULL }, 1474, "udp" },
- { "taligent-lm", { NULL }, 1475, "tcp" },
- { "taligent-lm", { NULL }, 1475, "udp" },
- { "clvm-cfg", { NULL }, 1476, "tcp" },
- { "clvm-cfg", { NULL }, 1476, "udp" },
- { "ms-sna-server", { NULL }, 1477, "tcp" },
- { "ms-sna-server", { NULL }, 1477, "udp" },
- { "ms-sna-base", { NULL }, 1478, "tcp" },
- { "ms-sna-base", { NULL }, 1478, "udp" },
- { "dberegister", { NULL }, 1479, "tcp" },
- { "dberegister", { NULL }, 1479, "udp" },
- { "pacerforum", { NULL }, 1480, "tcp" },
- { "pacerforum", { NULL }, 1480, "udp" },
- { "airs", { NULL }, 1481, "tcp" },
- { "airs", { NULL }, 1481, "udp" },
- { "miteksys-lm", { NULL }, 1482, "tcp" },
- { "miteksys-lm", { NULL }, 1482, "udp" },
- { "afs", { NULL }, 1483, "tcp" },
- { "afs", { NULL }, 1483, "udp" },
- { "confluent", { NULL }, 1484, "tcp" },
- { "confluent", { NULL }, 1484, "udp" },
- { "lansource", { NULL }, 1485, "tcp" },
- { "lansource", { NULL }, 1485, "udp" },
- { "nms_topo_serv", { NULL }, 1486, "tcp" },
- { "nms_topo_serv", { NULL }, 1486, "udp" },
- { "localinfosrvr", { NULL }, 1487, "tcp" },
- { "localinfosrvr", { NULL }, 1487, "udp" },
- { "docstor", { NULL }, 1488, "tcp" },
- { "docstor", { NULL }, 1488, "udp" },
- { "dmdocbroker", { NULL }, 1489, "tcp" },
- { "dmdocbroker", { NULL }, 1489, "udp" },
- { "insitu-conf", { NULL }, 1490, "tcp" },
- { "insitu-conf", { NULL }, 1490, "udp" },
- { "stone-design-1", { NULL }, 1492, "tcp" },
- { "stone-design-1", { NULL }, 1492, "udp" },
- { "netmap_lm", { NULL }, 1493, "tcp" },
- { "netmap_lm", { NULL }, 1493, "udp" },
- { "ica", { NULL }, 1494, "tcp" },
- { "ica", { NULL }, 1494, "udp" },
- { "cvc", { NULL }, 1495, "tcp" },
- { "cvc", { NULL }, 1495, "udp" },
- { "liberty-lm", { NULL }, 1496, "tcp" },
- { "liberty-lm", { NULL }, 1496, "udp" },
- { "rfx-lm", { NULL }, 1497, "tcp" },
- { "rfx-lm", { NULL }, 1497, "udp" },
- { "sybase-sqlany", { NULL }, 1498, "tcp" },
- { "sybase-sqlany", { NULL }, 1498, "udp" },
- { "fhc", { NULL }, 1499, "tcp" },
- { "fhc", { NULL }, 1499, "udp" },
- { "vlsi-lm", { NULL }, 1500, "tcp" },
- { "vlsi-lm", { NULL }, 1500, "udp" },
- { "saiscm", { NULL }, 1501, "tcp" },
- { "saiscm", { NULL }, 1501, "udp" },
- { "shivadiscovery", { NULL }, 1502, "tcp" },
- { "shivadiscovery", { NULL }, 1502, "udp" },
- { "imtc-mcs", { NULL }, 1503, "tcp" },
- { "imtc-mcs", { NULL }, 1503, "udp" },
- { "evb-elm", { NULL }, 1504, "tcp" },
- { "evb-elm", { NULL }, 1504, "udp" },
- { "funkproxy", { NULL }, 1505, "tcp" },
- { "funkproxy", { NULL }, 1505, "udp" },
- { "utcd", { NULL }, 1506, "tcp" },
- { "utcd", { NULL }, 1506, "udp" },
- { "symplex", { NULL }, 1507, "tcp" },
- { "symplex", { NULL }, 1507, "udp" },
- { "diagmond", { NULL }, 1508, "tcp" },
- { "diagmond", { NULL }, 1508, "udp" },
- { "robcad-lm", { NULL }, 1509, "tcp" },
- { "robcad-lm", { NULL }, 1509, "udp" },
- { "mvx-lm", { NULL }, 1510, "tcp" },
- { "mvx-lm", { NULL }, 1510, "udp" },
- { "3l-l1", { NULL }, 1511, "tcp" },
- { "3l-l1", { NULL }, 1511, "udp" },
- { "wins", { NULL }, 1512, "tcp" },
- { "wins", { NULL }, 1512, "udp" },
- { "fujitsu-dtc", { NULL }, 1513, "tcp" },
- { "fujitsu-dtc", { NULL }, 1513, "udp" },
- { "fujitsu-dtcns", { NULL }, 1514, "tcp" },
- { "fujitsu-dtcns", { NULL }, 1514, "udp" },
- { "ifor-protocol", { NULL }, 1515, "tcp" },
- { "ifor-protocol", { NULL }, 1515, "udp" },
- { "vpad", { NULL }, 1516, "tcp" },
- { "vpad", { NULL }, 1516, "udp" },
- { "vpac", { NULL }, 1517, "tcp" },
- { "vpac", { NULL }, 1517, "udp" },
- { "vpvd", { NULL }, 1518, "tcp" },
- { "vpvd", { NULL }, 1518, "udp" },
- { "vpvc", { NULL }, 1519, "tcp" },
- { "vpvc", { NULL }, 1519, "udp" },
- { "atm-zip-office", { NULL }, 1520, "tcp" },
- { "atm-zip-office", { NULL }, 1520, "udp" },
- { "ncube-lm", { NULL }, 1521, "tcp" },
- { "ncube-lm", { NULL }, 1521, "udp" },
- { "ricardo-lm", { NULL }, 1522, "tcp" },
- { "ricardo-lm", { NULL }, 1522, "udp" },
- { "cichild-lm", { NULL }, 1523, "tcp" },
- { "cichild-lm", { NULL }, 1523, "udp" },
- { "ingreslock", { NULL }, 1524, "tcp" },
- { "ingreslock", { NULL }, 1524, "udp" },
- { "orasrv", { NULL }, 1525, "tcp" },
- { "orasrv", { NULL }, 1525, "udp" },
- { "prospero-np", { NULL }, 1525, "tcp" },
- { "prospero-np", { NULL }, 1525, "udp" },
- { "pdap-np", { NULL }, 1526, "tcp" },
- { "pdap-np", { NULL }, 1526, "udp" },
- { "tlisrv", { NULL }, 1527, "tcp" },
- { "tlisrv", { NULL }, 1527, "udp" },
- { "coauthor", { NULL }, 1529, "tcp" },
- { "coauthor", { NULL }, 1529, "udp" },
- { "rap-service", { NULL }, 1530, "tcp" },
- { "rap-service", { NULL }, 1530, "udp" },
- { "rap-listen", { NULL }, 1531, "tcp" },
- { "rap-listen", { NULL }, 1531, "udp" },
- { "miroconnect", { NULL }, 1532, "tcp" },
- { "miroconnect", { NULL }, 1532, "udp" },
- { "virtual-places", { NULL }, 1533, "tcp" },
- { "virtual-places", { NULL }, 1533, "udp" },
- { "micromuse-lm", { NULL }, 1534, "tcp" },
- { "micromuse-lm", { NULL }, 1534, "udp" },
- { "ampr-info", { NULL }, 1535, "tcp" },
- { "ampr-info", { NULL }, 1535, "udp" },
- { "ampr-inter", { NULL }, 1536, "tcp" },
- { "ampr-inter", { NULL }, 1536, "udp" },
- { "sdsc-lm", { NULL }, 1537, "tcp" },
- { "sdsc-lm", { NULL }, 1537, "udp" },
- { "3ds-lm", { NULL }, 1538, "tcp" },
- { "3ds-lm", { NULL }, 1538, "udp" },
- { "intellistor-lm", { NULL }, 1539, "tcp" },
- { "intellistor-lm", { NULL }, 1539, "udp" },
- { "rds", { NULL }, 1540, "tcp" },
- { "rds", { NULL }, 1540, "udp" },
- { "rds2", { NULL }, 1541, "tcp" },
- { "rds2", { NULL }, 1541, "udp" },
- { "gridgen-elmd", { NULL }, 1542, "tcp" },
- { "gridgen-elmd", { NULL }, 1542, "udp" },
- { "simba-cs", { NULL }, 1543, "tcp" },
- { "simba-cs", { NULL }, 1543, "udp" },
- { "aspeclmd", { NULL }, 1544, "tcp" },
- { "aspeclmd", { NULL }, 1544, "udp" },
- { "vistium-share", { NULL }, 1545, "tcp" },
- { "vistium-share", { NULL }, 1545, "udp" },
- { "abbaccuray", { NULL }, 1546, "tcp" },
- { "abbaccuray", { NULL }, 1546, "udp" },
- { "laplink", { NULL }, 1547, "tcp" },
- { "laplink", { NULL }, 1547, "udp" },
- { "axon-lm", { NULL }, 1548, "tcp" },
- { "axon-lm", { NULL }, 1548, "udp" },
- { "shivahose", { NULL }, 1549, "tcp" },
- { "shivasound", { NULL }, 1549, "udp" },
- { "3m-image-lm", { NULL }, 1550, "tcp" },
- { "3m-image-lm", { NULL }, 1550, "udp" },
- { "hecmtl-db", { NULL }, 1551, "tcp" },
- { "hecmtl-db", { NULL }, 1551, "udp" },
- { "pciarray", { NULL }, 1552, "tcp" },
- { "pciarray", { NULL }, 1552, "udp" },
- { "sna-cs", { NULL }, 1553, "tcp" },
- { "sna-cs", { NULL }, 1553, "udp" },
- { "caci-lm", { NULL }, 1554, "tcp" },
- { "caci-lm", { NULL }, 1554, "udp" },
- { "livelan", { NULL }, 1555, "tcp" },
- { "livelan", { NULL }, 1555, "udp" },
- { "veritas_pbx", { NULL }, 1556, "tcp" },
- { "veritas_pbx", { NULL }, 1556, "udp" },
- { "arbortext-lm", { NULL }, 1557, "tcp" },
- { "arbortext-lm", { NULL }, 1557, "udp" },
- { "xingmpeg", { NULL }, 1558, "tcp" },
- { "xingmpeg", { NULL }, 1558, "udp" },
- { "web2host", { NULL }, 1559, "tcp" },
- { "web2host", { NULL }, 1559, "udp" },
- { "asci-val", { NULL }, 1560, "tcp" },
- { "asci-val", { NULL }, 1560, "udp" },
- { "facilityview", { NULL }, 1561, "tcp" },
- { "facilityview", { NULL }, 1561, "udp" },
- { "pconnectmgr", { NULL }, 1562, "tcp" },
- { "pconnectmgr", { NULL }, 1562, "udp" },
- { "cadabra-lm", { NULL }, 1563, "tcp" },
- { "cadabra-lm", { NULL }, 1563, "udp" },
- { "pay-per-view", { NULL }, 1564, "tcp" },
- { "pay-per-view", { NULL }, 1564, "udp" },
- { "winddlb", { NULL }, 1565, "tcp" },
- { "winddlb", { NULL }, 1565, "udp" },
- { "corelvideo", { NULL }, 1566, "tcp" },
- { "corelvideo", { NULL }, 1566, "udp" },
- { "jlicelmd", { NULL }, 1567, "tcp" },
- { "jlicelmd", { NULL }, 1567, "udp" },
- { "tsspmap", { NULL }, 1568, "tcp" },
- { "tsspmap", { NULL }, 1568, "udp" },
- { "ets", { NULL }, 1569, "tcp" },
- { "ets", { NULL }, 1569, "udp" },
- { "orbixd", { NULL }, 1570, "tcp" },
- { "orbixd", { NULL }, 1570, "udp" },
- { "rdb-dbs-disp", { NULL }, 1571, "tcp" },
- { "rdb-dbs-disp", { NULL }, 1571, "udp" },
- { "chip-lm", { NULL }, 1572, "tcp" },
- { "chip-lm", { NULL }, 1572, "udp" },
- { "itscomm-ns", { NULL }, 1573, "tcp" },
- { "itscomm-ns", { NULL }, 1573, "udp" },
- { "mvel-lm", { NULL }, 1574, "tcp" },
- { "mvel-lm", { NULL }, 1574, "udp" },
- { "oraclenames", { NULL }, 1575, "tcp" },
- { "oraclenames", { NULL }, 1575, "udp" },
- { "moldflow-lm", { NULL }, 1576, "tcp" },
- { "moldflow-lm", { NULL }, 1576, "udp" },
- { "hypercube-lm", { NULL }, 1577, "tcp" },
- { "hypercube-lm", { NULL }, 1577, "udp" },
- { "jacobus-lm", { NULL }, 1578, "tcp" },
- { "jacobus-lm", { NULL }, 1578, "udp" },
- { "ioc-sea-lm", { NULL }, 1579, "tcp" },
- { "ioc-sea-lm", { NULL }, 1579, "udp" },
- { "tn-tl-r1", { NULL }, 1580, "tcp" },
- { "tn-tl-r2", { NULL }, 1580, "udp" },
- { "mil-2045-47001", { NULL }, 1581, "tcp" },
- { "mil-2045-47001", { NULL }, 1581, "udp" },
- { "msims", { NULL }, 1582, "tcp" },
- { "msims", { NULL }, 1582, "udp" },
- { "simbaexpress", { NULL }, 1583, "tcp" },
- { "simbaexpress", { NULL }, 1583, "udp" },
- { "tn-tl-fd2", { NULL }, 1584, "tcp" },
- { "tn-tl-fd2", { NULL }, 1584, "udp" },
- { "intv", { NULL }, 1585, "tcp" },
- { "intv", { NULL }, 1585, "udp" },
- { "ibm-abtact", { NULL }, 1586, "tcp" },
- { "ibm-abtact", { NULL }, 1586, "udp" },
- { "pra_elmd", { NULL }, 1587, "tcp" },
- { "pra_elmd", { NULL }, 1587, "udp" },
- { "triquest-lm", { NULL }, 1588, "tcp" },
- { "triquest-lm", { NULL }, 1588, "udp" },
- { "vqp", { NULL }, 1589, "tcp" },
- { "vqp", { NULL }, 1589, "udp" },
- { "gemini-lm", { NULL }, 1590, "tcp" },
- { "gemini-lm", { NULL }, 1590, "udp" },
- { "ncpm-pm", { NULL }, 1591, "tcp" },
- { "ncpm-pm", { NULL }, 1591, "udp" },
- { "commonspace", { NULL }, 1592, "tcp" },
- { "commonspace", { NULL }, 1592, "udp" },
- { "mainsoft-lm", { NULL }, 1593, "tcp" },
- { "mainsoft-lm", { NULL }, 1593, "udp" },
- { "sixtrak", { NULL }, 1594, "tcp" },
- { "sixtrak", { NULL }, 1594, "udp" },
- { "radio", { NULL }, 1595, "tcp" },
- { "radio", { NULL }, 1595, "udp" },
- { "radio-sm", { NULL }, 1596, "tcp" },
- { "radio-bc", { NULL }, 1596, "udp" },
- { "orbplus-iiop", { NULL }, 1597, "tcp" },
- { "orbplus-iiop", { NULL }, 1597, "udp" },
- { "picknfs", { NULL }, 1598, "tcp" },
- { "picknfs", { NULL }, 1598, "udp" },
- { "simbaservices", { NULL }, 1599, "tcp" },
- { "simbaservices", { NULL }, 1599, "udp" },
- { "issd", { NULL }, 1600, "tcp" },
- { "issd", { NULL }, 1600, "udp" },
- { "aas", { NULL }, 1601, "tcp" },
- { "aas", { NULL }, 1601, "udp" },
- { "inspect", { NULL }, 1602, "tcp" },
- { "inspect", { NULL }, 1602, "udp" },
- { "picodbc", { NULL }, 1603, "tcp" },
- { "picodbc", { NULL }, 1603, "udp" },
- { "icabrowser", { NULL }, 1604, "tcp" },
- { "icabrowser", { NULL }, 1604, "udp" },
- { "slp", { NULL }, 1605, "tcp" },
- { "slp", { NULL }, 1605, "udp" },
- { "slm-api", { NULL }, 1606, "tcp" },
- { "slm-api", { NULL }, 1606, "udp" },
- { "stt", { NULL }, 1607, "tcp" },
- { "stt", { NULL }, 1607, "udp" },
- { "smart-lm", { NULL }, 1608, "tcp" },
- { "smart-lm", { NULL }, 1608, "udp" },
- { "isysg-lm", { NULL }, 1609, "tcp" },
- { "isysg-lm", { NULL }, 1609, "udp" },
- { "taurus-wh", { NULL }, 1610, "tcp" },
- { "taurus-wh", { NULL }, 1610, "udp" },
- { "ill", { NULL }, 1611, "tcp" },
- { "ill", { NULL }, 1611, "udp" },
- { "netbill-trans", { NULL }, 1612, "tcp" },
- { "netbill-trans", { NULL }, 1612, "udp" },
- { "netbill-keyrep", { NULL }, 1613, "tcp" },
- { "netbill-keyrep", { NULL }, 1613, "udp" },
- { "netbill-cred", { NULL }, 1614, "tcp" },
- { "netbill-cred", { NULL }, 1614, "udp" },
- { "netbill-auth", { NULL }, 1615, "tcp" },
- { "netbill-auth", { NULL }, 1615, "udp" },
- { "netbill-prod", { NULL }, 1616, "tcp" },
- { "netbill-prod", { NULL }, 1616, "udp" },
- { "nimrod-agent", { NULL }, 1617, "tcp" },
- { "nimrod-agent", { NULL }, 1617, "udp" },
- { "skytelnet", { NULL }, 1618, "tcp" },
- { "skytelnet", { NULL }, 1618, "udp" },
- { "xs-openstorage", { NULL }, 1619, "tcp" },
- { "xs-openstorage", { NULL }, 1619, "udp" },
- { "faxportwinport", { NULL }, 1620, "tcp" },
- { "faxportwinport", { NULL }, 1620, "udp" },
- { "softdataphone", { NULL }, 1621, "tcp" },
- { "softdataphone", { NULL }, 1621, "udp" },
- { "ontime", { NULL }, 1622, "tcp" },
- { "ontime", { NULL }, 1622, "udp" },
- { "jaleosnd", { NULL }, 1623, "tcp" },
- { "jaleosnd", { NULL }, 1623, "udp" },
- { "udp-sr-port", { NULL }, 1624, "tcp" },
- { "udp-sr-port", { NULL }, 1624, "udp" },
- { "svs-omagent", { NULL }, 1625, "tcp" },
- { "svs-omagent", { NULL }, 1625, "udp" },
- { "shockwave", { NULL }, 1626, "tcp" },
- { "shockwave", { NULL }, 1626, "udp" },
- { "t128-gateway", { NULL }, 1627, "tcp" },
- { "t128-gateway", { NULL }, 1627, "udp" },
- { "lontalk-norm", { NULL }, 1628, "tcp" },
- { "lontalk-norm", { NULL }, 1628, "udp" },
- { "lontalk-urgnt", { NULL }, 1629, "tcp" },
- { "lontalk-urgnt", { NULL }, 1629, "udp" },
- { "oraclenet8cman", { NULL }, 1630, "tcp" },
- { "oraclenet8cman", { NULL }, 1630, "udp" },
- { "visitview", { NULL }, 1631, "tcp" },
- { "visitview", { NULL }, 1631, "udp" },
- { "pammratc", { NULL }, 1632, "tcp" },
- { "pammratc", { NULL }, 1632, "udp" },
- { "pammrpc", { NULL }, 1633, "tcp" },
- { "pammrpc", { NULL }, 1633, "udp" },
- { "loaprobe", { NULL }, 1634, "tcp" },
- { "loaprobe", { NULL }, 1634, "udp" },
- { "edb-server1", { NULL }, 1635, "tcp" },
- { "edb-server1", { NULL }, 1635, "udp" },
- { "isdc", { NULL }, 1636, "tcp" },
- { "isdc", { NULL }, 1636, "udp" },
- { "islc", { NULL }, 1637, "tcp" },
- { "islc", { NULL }, 1637, "udp" },
- { "ismc", { NULL }, 1638, "tcp" },
- { "ismc", { NULL }, 1638, "udp" },
- { "cert-initiator", { NULL }, 1639, "tcp" },
- { "cert-initiator", { NULL }, 1639, "udp" },
- { "cert-responder", { NULL }, 1640, "tcp" },
- { "cert-responder", { NULL }, 1640, "udp" },
- { "invision", { NULL }, 1641, "tcp" },
- { "invision", { NULL }, 1641, "udp" },
- { "isis-am", { NULL }, 1642, "tcp" },
- { "isis-am", { NULL }, 1642, "udp" },
- { "isis-ambc", { NULL }, 1643, "tcp" },
- { "isis-ambc", { NULL }, 1643, "udp" },
- { "saiseh", { NULL }, 1644, "tcp" },
- { "sightline", { NULL }, 1645, "tcp" },
- { "sightline", { NULL }, 1645, "udp" },
- { "sa-msg-port", { NULL }, 1646, "tcp" },
- { "sa-msg-port", { NULL }, 1646, "udp" },
- { "rsap", { NULL }, 1647, "tcp" },
- { "rsap", { NULL }, 1647, "udp" },
- { "concurrent-lm", { NULL }, 1648, "tcp" },
- { "concurrent-lm", { NULL }, 1648, "udp" },
- { "kermit", { NULL }, 1649, "tcp" },
- { "kermit", { NULL }, 1649, "udp" },
- { "nkd", { NULL }, 1650, "tcp" },
- { "nkd", { NULL }, 1650, "udp" },
- { "shiva_confsrvr", { NULL }, 1651, "tcp" },
- { "shiva_confsrvr", { NULL }, 1651, "udp" },
- { "xnmp", { NULL }, 1652, "tcp" },
- { "xnmp", { NULL }, 1652, "udp" },
- { "alphatech-lm", { NULL }, 1653, "tcp" },
- { "alphatech-lm", { NULL }, 1653, "udp" },
- { "stargatealerts", { NULL }, 1654, "tcp" },
- { "stargatealerts", { NULL }, 1654, "udp" },
- { "dec-mbadmin", { NULL }, 1655, "tcp" },
- { "dec-mbadmin", { NULL }, 1655, "udp" },
- { "dec-mbadmin-h", { NULL }, 1656, "tcp" },
- { "dec-mbadmin-h", { NULL }, 1656, "udp" },
- { "fujitsu-mmpdc", { NULL }, 1657, "tcp" },
- { "fujitsu-mmpdc", { NULL }, 1657, "udp" },
- { "sixnetudr", { NULL }, 1658, "tcp" },
- { "sixnetudr", { NULL }, 1658, "udp" },
- { "sg-lm", { NULL }, 1659, "tcp" },
- { "sg-lm", { NULL }, 1659, "udp" },
- { "skip-mc-gikreq", { NULL }, 1660, "tcp" },
- { "skip-mc-gikreq", { NULL }, 1660, "udp" },
- { "netview-aix-1", { NULL }, 1661, "tcp" },
- { "netview-aix-1", { NULL }, 1661, "udp" },
- { "netview-aix-2", { NULL }, 1662, "tcp" },
- { "netview-aix-2", { NULL }, 1662, "udp" },
- { "netview-aix-3", { NULL }, 1663, "tcp" },
- { "netview-aix-3", { NULL }, 1663, "udp" },
- { "netview-aix-4", { NULL }, 1664, "tcp" },
- { "netview-aix-4", { NULL }, 1664, "udp" },
- { "netview-aix-5", { NULL }, 1665, "tcp" },
- { "netview-aix-5", { NULL }, 1665, "udp" },
- { "netview-aix-6", { NULL }, 1666, "tcp" },
- { "netview-aix-6", { NULL }, 1666, "udp" },
- { "netview-aix-7", { NULL }, 1667, "tcp" },
- { "netview-aix-7", { NULL }, 1667, "udp" },
- { "netview-aix-8", { NULL }, 1668, "tcp" },
- { "netview-aix-8", { NULL }, 1668, "udp" },
- { "netview-aix-9", { NULL }, 1669, "tcp" },
- { "netview-aix-9", { NULL }, 1669, "udp" },
- { "netview-aix-10", { NULL }, 1670, "tcp" },
- { "netview-aix-10", { NULL }, 1670, "udp" },
- { "netview-aix-11", { NULL }, 1671, "tcp" },
- { "netview-aix-11", { NULL }, 1671, "udp" },
- { "netview-aix-12", { NULL }, 1672, "tcp" },
- { "netview-aix-12", { NULL }, 1672, "udp" },
- { "proshare-mc-1", { NULL }, 1673, "tcp" },
- { "proshare-mc-1", { NULL }, 1673, "udp" },
- { "proshare-mc-2", { NULL }, 1674, "tcp" },
- { "proshare-mc-2", { NULL }, 1674, "udp" },
- { "pdp", { NULL }, 1675, "tcp" },
- { "pdp", { NULL }, 1675, "udp" },
- { "netcomm1", { NULL }, 1676, "tcp" },
- { "netcomm2", { NULL }, 1676, "udp" },
- { "groupwise", { NULL }, 1677, "tcp" },
- { "groupwise", { NULL }, 1677, "udp" },
- { "prolink", { NULL }, 1678, "tcp" },
- { "prolink", { NULL }, 1678, "udp" },
- { "darcorp-lm", { NULL }, 1679, "tcp" },
- { "darcorp-lm", { NULL }, 1679, "udp" },
- { "microcom-sbp", { NULL }, 1680, "tcp" },
- { "microcom-sbp", { NULL }, 1680, "udp" },
- { "sd-elmd", { NULL }, 1681, "tcp" },
- { "sd-elmd", { NULL }, 1681, "udp" },
- { "lanyon-lantern", { NULL }, 1682, "tcp" },
- { "lanyon-lantern", { NULL }, 1682, "udp" },
- { "ncpm-hip", { NULL }, 1683, "tcp" },
- { "ncpm-hip", { NULL }, 1683, "udp" },
- { "snaresecure", { NULL }, 1684, "tcp" },
- { "snaresecure", { NULL }, 1684, "udp" },
- { "n2nremote", { NULL }, 1685, "tcp" },
- { "n2nremote", { NULL }, 1685, "udp" },
- { "cvmon", { NULL }, 1686, "tcp" },
- { "cvmon", { NULL }, 1686, "udp" },
- { "nsjtp-ctrl", { NULL }, 1687, "tcp" },
- { "nsjtp-ctrl", { NULL }, 1687, "udp" },
- { "nsjtp-data", { NULL }, 1688, "tcp" },
- { "nsjtp-data", { NULL }, 1688, "udp" },
- { "firefox", { NULL }, 1689, "tcp" },
- { "firefox", { NULL }, 1689, "udp" },
- { "ng-umds", { NULL }, 1690, "tcp" },
- { "ng-umds", { NULL }, 1690, "udp" },
- { "empire-empuma", { NULL }, 1691, "tcp" },
- { "empire-empuma", { NULL }, 1691, "udp" },
- { "sstsys-lm", { NULL }, 1692, "tcp" },
- { "sstsys-lm", { NULL }, 1692, "udp" },
- { "rrirtr", { NULL }, 1693, "tcp" },
- { "rrirtr", { NULL }, 1693, "udp" },
- { "rrimwm", { NULL }, 1694, "tcp" },
- { "rrimwm", { NULL }, 1694, "udp" },
- { "rrilwm", { NULL }, 1695, "tcp" },
- { "rrilwm", { NULL }, 1695, "udp" },
- { "rrifmm", { NULL }, 1696, "tcp" },
- { "rrifmm", { NULL }, 1696, "udp" },
- { "rrisat", { NULL }, 1697, "tcp" },
- { "rrisat", { NULL }, 1697, "udp" },
- { "rsvp-encap-1", { NULL }, 1698, "tcp" },
- { "rsvp-encap-1", { NULL }, 1698, "udp" },
- { "rsvp-encap-2", { NULL }, 1699, "tcp" },
- { "rsvp-encap-2", { NULL }, 1699, "udp" },
- { "mps-raft", { NULL }, 1700, "tcp" },
- { "mps-raft", { NULL }, 1700, "udp" },
- { "l2f", { NULL }, 1701, "tcp" },
- { "l2f", { NULL }, 1701, "udp" },
- { "l2tp", { NULL }, 1701, "tcp" },
- { "l2tp", { NULL }, 1701, "udp" },
- { "deskshare", { NULL }, 1702, "tcp" },
- { "deskshare", { NULL }, 1702, "udp" },
- { "hb-engine", { NULL }, 1703, "tcp" },
- { "hb-engine", { NULL }, 1703, "udp" },
- { "bcs-broker", { NULL }, 1704, "tcp" },
- { "bcs-broker", { NULL }, 1704, "udp" },
- { "slingshot", { NULL }, 1705, "tcp" },
- { "slingshot", { NULL }, 1705, "udp" },
- { "jetform", { NULL }, 1706, "tcp" },
- { "jetform", { NULL }, 1706, "udp" },
- { "vdmplay", { NULL }, 1707, "tcp" },
- { "vdmplay", { NULL }, 1707, "udp" },
- { "gat-lmd", { NULL }, 1708, "tcp" },
- { "gat-lmd", { NULL }, 1708, "udp" },
- { "centra", { NULL }, 1709, "tcp" },
- { "centra", { NULL }, 1709, "udp" },
- { "impera", { NULL }, 1710, "tcp" },
- { "impera", { NULL }, 1710, "udp" },
- { "pptconference", { NULL }, 1711, "tcp" },
- { "pptconference", { NULL }, 1711, "udp" },
- { "registrar", { NULL }, 1712, "tcp" },
- { "registrar", { NULL }, 1712, "udp" },
- { "conferencetalk", { NULL }, 1713, "tcp" },
- { "conferencetalk", { NULL }, 1713, "udp" },
- { "sesi-lm", { NULL }, 1714, "tcp" },
- { "sesi-lm", { NULL }, 1714, "udp" },
- { "houdini-lm", { NULL }, 1715, "tcp" },
- { "houdini-lm", { NULL }, 1715, "udp" },
- { "xmsg", { NULL }, 1716, "tcp" },
- { "xmsg", { NULL }, 1716, "udp" },
- { "fj-hdnet", { NULL }, 1717, "tcp" },
- { "fj-hdnet", { NULL }, 1717, "udp" },
- { "h323gatedisc", { NULL }, 1718, "tcp" },
- { "h323gatedisc", { NULL }, 1718, "udp" },
- { "h323gatestat", { NULL }, 1719, "tcp" },
- { "h323gatestat", { NULL }, 1719, "udp" },
- { "h323hostcall", { NULL }, 1720, "tcp" },
- { "h323hostcall", { NULL }, 1720, "udp" },
- { "caicci", { NULL }, 1721, "tcp" },
- { "caicci", { NULL }, 1721, "udp" },
- { "hks-lm", { NULL }, 1722, "tcp" },
- { "hks-lm", { NULL }, 1722, "udp" },
- { "pptp", { NULL }, 1723, "tcp" },
- { "pptp", { NULL }, 1723, "udp" },
- { "csbphonemaster", { NULL }, 1724, "tcp" },
- { "csbphonemaster", { NULL }, 1724, "udp" },
- { "iden-ralp", { NULL }, 1725, "tcp" },
- { "iden-ralp", { NULL }, 1725, "udp" },
- { "iberiagames", { NULL }, 1726, "tcp" },
- { "iberiagames", { NULL }, 1726, "udp" },
- { "winddx", { NULL }, 1727, "tcp" },
- { "winddx", { NULL }, 1727, "udp" },
- { "telindus", { NULL }, 1728, "tcp" },
- { "telindus", { NULL }, 1728, "udp" },
- { "citynl", { NULL }, 1729, "tcp" },
- { "citynl", { NULL }, 1729, "udp" },
- { "roketz", { NULL }, 1730, "tcp" },
- { "roketz", { NULL }, 1730, "udp" },
- { "msiccp", { NULL }, 1731, "tcp" },
- { "msiccp", { NULL }, 1731, "udp" },
- { "proxim", { NULL }, 1732, "tcp" },
- { "proxim", { NULL }, 1732, "udp" },
- { "siipat", { NULL }, 1733, "tcp" },
- { "siipat", { NULL }, 1733, "udp" },
- { "cambertx-lm", { NULL }, 1734, "tcp" },
- { "cambertx-lm", { NULL }, 1734, "udp" },
- { "privatechat", { NULL }, 1735, "tcp" },
- { "privatechat", { NULL }, 1735, "udp" },
- { "street-stream", { NULL }, 1736, "tcp" },
- { "street-stream", { NULL }, 1736, "udp" },
- { "ultimad", { NULL }, 1737, "tcp" },
- { "ultimad", { NULL }, 1737, "udp" },
- { "gamegen1", { NULL }, 1738, "tcp" },
- { "gamegen1", { NULL }, 1738, "udp" },
- { "webaccess", { NULL }, 1739, "tcp" },
- { "webaccess", { NULL }, 1739, "udp" },
- { "encore", { NULL }, 1740, "tcp" },
- { "encore", { NULL }, 1740, "udp" },
- { "cisco-net-mgmt", { NULL }, 1741, "tcp" },
- { "cisco-net-mgmt", { NULL }, 1741, "udp" },
- { "3Com-nsd", { NULL }, 1742, "tcp" },
- { "3Com-nsd", { NULL }, 1742, "udp" },
- { "cinegrfx-lm", { NULL }, 1743, "tcp" },
- { "cinegrfx-lm", { NULL }, 1743, "udp" },
- { "ncpm-ft", { NULL }, 1744, "tcp" },
- { "ncpm-ft", { NULL }, 1744, "udp" },
- { "remote-winsock", { NULL }, 1745, "tcp" },
- { "remote-winsock", { NULL }, 1745, "udp" },
- { "ftrapid-1", { NULL }, 1746, "tcp" },
- { "ftrapid-1", { NULL }, 1746, "udp" },
- { "ftrapid-2", { NULL }, 1747, "tcp" },
- { "ftrapid-2", { NULL }, 1747, "udp" },
- { "oracle-em1", { NULL }, 1748, "tcp" },
- { "oracle-em1", { NULL }, 1748, "udp" },
- { "aspen-services", { NULL }, 1749, "tcp" },
- { "aspen-services", { NULL }, 1749, "udp" },
- { "sslp", { NULL }, 1750, "tcp" },
- { "sslp", { NULL }, 1750, "udp" },
- { "swiftnet", { NULL }, 1751, "tcp" },
- { "swiftnet", { NULL }, 1751, "udp" },
- { "lofr-lm", { NULL }, 1752, "tcp" },
- { "lofr-lm", { NULL }, 1752, "udp" },
- { "oracle-em2", { NULL }, 1754, "tcp" },
- { "oracle-em2", { NULL }, 1754, "udp" },
- { "ms-streaming", { NULL }, 1755, "tcp" },
- { "ms-streaming", { NULL }, 1755, "udp" },
- { "capfast-lmd", { NULL }, 1756, "tcp" },
- { "capfast-lmd", { NULL }, 1756, "udp" },
- { "cnhrp", { NULL }, 1757, "tcp" },
- { "cnhrp", { NULL }, 1757, "udp" },
- { "tftp-mcast", { NULL }, 1758, "tcp" },
- { "tftp-mcast", { NULL }, 1758, "udp" },
- { "spss-lm", { NULL }, 1759, "tcp" },
- { "spss-lm", { NULL }, 1759, "udp" },
- { "www-ldap-gw", { NULL }, 1760, "tcp" },
- { "www-ldap-gw", { NULL }, 1760, "udp" },
- { "cft-0", { NULL }, 1761, "tcp" },
- { "cft-0", { NULL }, 1761, "udp" },
- { "cft-1", { NULL }, 1762, "tcp" },
- { "cft-1", { NULL }, 1762, "udp" },
- { "cft-2", { NULL }, 1763, "tcp" },
- { "cft-2", { NULL }, 1763, "udp" },
- { "cft-3", { NULL }, 1764, "tcp" },
- { "cft-3", { NULL }, 1764, "udp" },
- { "cft-4", { NULL }, 1765, "tcp" },
- { "cft-4", { NULL }, 1765, "udp" },
- { "cft-5", { NULL }, 1766, "tcp" },
- { "cft-5", { NULL }, 1766, "udp" },
- { "cft-6", { NULL }, 1767, "tcp" },
- { "cft-6", { NULL }, 1767, "udp" },
- { "cft-7", { NULL }, 1768, "tcp" },
- { "cft-7", { NULL }, 1768, "udp" },
- { "bmc-net-adm", { NULL }, 1769, "tcp" },
- { "bmc-net-adm", { NULL }, 1769, "udp" },
- { "bmc-net-svc", { NULL }, 1770, "tcp" },
- { "bmc-net-svc", { NULL }, 1770, "udp" },
- { "vaultbase", { NULL }, 1771, "tcp" },
- { "vaultbase", { NULL }, 1771, "udp" },
- { "essweb-gw", { NULL }, 1772, "tcp" },
- { "essweb-gw", { NULL }, 1772, "udp" },
- { "kmscontrol", { NULL }, 1773, "tcp" },
- { "kmscontrol", { NULL }, 1773, "udp" },
- { "global-dtserv", { NULL }, 1774, "tcp" },
- { "global-dtserv", { NULL }, 1774, "udp" },
- { "femis", { NULL }, 1776, "tcp" },
- { "femis", { NULL }, 1776, "udp" },
- { "powerguardian", { NULL }, 1777, "tcp" },
- { "powerguardian", { NULL }, 1777, "udp" },
- { "prodigy-intrnet", { NULL }, 1778, "tcp" },
- { "prodigy-intrnet", { NULL }, 1778, "udp" },
- { "pharmasoft", { NULL }, 1779, "tcp" },
- { "pharmasoft", { NULL }, 1779, "udp" },
- { "dpkeyserv", { NULL }, 1780, "tcp" },
- { "dpkeyserv", { NULL }, 1780, "udp" },
- { "answersoft-lm", { NULL }, 1781, "tcp" },
- { "answersoft-lm", { NULL }, 1781, "udp" },
- { "hp-hcip", { NULL }, 1782, "tcp" },
- { "hp-hcip", { NULL }, 1782, "udp" },
- { "finle-lm", { NULL }, 1784, "tcp" },
- { "finle-lm", { NULL }, 1784, "udp" },
- { "windlm", { NULL }, 1785, "tcp" },
- { "windlm", { NULL }, 1785, "udp" },
- { "funk-logger", { NULL }, 1786, "tcp" },
- { "funk-logger", { NULL }, 1786, "udp" },
- { "funk-license", { NULL }, 1787, "tcp" },
- { "funk-license", { NULL }, 1787, "udp" },
- { "psmond", { NULL }, 1788, "tcp" },
- { "psmond", { NULL }, 1788, "udp" },
- { "hello", { NULL }, 1789, "tcp" },
- { "hello", { NULL }, 1789, "udp" },
- { "nmsp", { NULL }, 1790, "tcp" },
- { "nmsp", { NULL }, 1790, "udp" },
- { "ea1", { NULL }, 1791, "tcp" },
- { "ea1", { NULL }, 1791, "udp" },
- { "ibm-dt-2", { NULL }, 1792, "tcp" },
- { "ibm-dt-2", { NULL }, 1792, "udp" },
- { "rsc-robot", { NULL }, 1793, "tcp" },
- { "rsc-robot", { NULL }, 1793, "udp" },
- { "cera-bcm", { NULL }, 1794, "tcp" },
- { "cera-bcm", { NULL }, 1794, "udp" },
- { "dpi-proxy", { NULL }, 1795, "tcp" },
- { "dpi-proxy", { NULL }, 1795, "udp" },
- { "vocaltec-admin", { NULL }, 1796, "tcp" },
- { "vocaltec-admin", { NULL }, 1796, "udp" },
- { "uma", { NULL }, 1797, "tcp" },
- { "uma", { NULL }, 1797, "udp" },
- { "etp", { NULL }, 1798, "tcp" },
- { "etp", { NULL }, 1798, "udp" },
- { "netrisk", { NULL }, 1799, "tcp" },
- { "netrisk", { NULL }, 1799, "udp" },
- { "ansys-lm", { NULL }, 1800, "tcp" },
- { "ansys-lm", { NULL }, 1800, "udp" },
- { "msmq", { NULL }, 1801, "tcp" },
- { "msmq", { NULL }, 1801, "udp" },
- { "concomp1", { NULL }, 1802, "tcp" },
- { "concomp1", { NULL }, 1802, "udp" },
- { "hp-hcip-gwy", { NULL }, 1803, "tcp" },
- { "hp-hcip-gwy", { NULL }, 1803, "udp" },
- { "enl", { NULL }, 1804, "tcp" },
- { "enl", { NULL }, 1804, "udp" },
- { "enl-name", { NULL }, 1805, "tcp" },
- { "enl-name", { NULL }, 1805, "udp" },
- { "musiconline", { NULL }, 1806, "tcp" },
- { "musiconline", { NULL }, 1806, "udp" },
- { "fhsp", { NULL }, 1807, "tcp" },
- { "fhsp", { NULL }, 1807, "udp" },
- { "oracle-vp2", { NULL }, 1808, "tcp" },
- { "oracle-vp2", { NULL }, 1808, "udp" },
- { "oracle-vp1", { NULL }, 1809, "tcp" },
- { "oracle-vp1", { NULL }, 1809, "udp" },
- { "jerand-lm", { NULL }, 1810, "tcp" },
- { "jerand-lm", { NULL }, 1810, "udp" },
- { "scientia-sdb", { NULL }, 1811, "tcp" },
- { "scientia-sdb", { NULL }, 1811, "udp" },
- { "radius", { NULL }, 1812, "tcp" },
- { "radius", { NULL }, 1812, "udp" },
- { "radius-acct", { NULL }, 1813, "tcp" },
- { "radius-acct", { NULL }, 1813, "udp" },
- { "tdp-suite", { NULL }, 1814, "tcp" },
- { "tdp-suite", { NULL }, 1814, "udp" },
- { "mmpft", { NULL }, 1815, "tcp" },
- { "mmpft", { NULL }, 1815, "udp" },
- { "harp", { NULL }, 1816, "tcp" },
- { "harp", { NULL }, 1816, "udp" },
- { "rkb-oscs", { NULL }, 1817, "tcp" },
- { "rkb-oscs", { NULL }, 1817, "udp" },
- { "etftp", { NULL }, 1818, "tcp" },
- { "etftp", { NULL }, 1818, "udp" },
- { "plato-lm", { NULL }, 1819, "tcp" },
- { "plato-lm", { NULL }, 1819, "udp" },
- { "mcagent", { NULL }, 1820, "tcp" },
- { "mcagent", { NULL }, 1820, "udp" },
- { "donnyworld", { NULL }, 1821, "tcp" },
- { "donnyworld", { NULL }, 1821, "udp" },
- { "es-elmd", { NULL }, 1822, "tcp" },
- { "es-elmd", { NULL }, 1822, "udp" },
- { "unisys-lm", { NULL }, 1823, "tcp" },
- { "unisys-lm", { NULL }, 1823, "udp" },
- { "metrics-pas", { NULL }, 1824, "tcp" },
- { "metrics-pas", { NULL }, 1824, "udp" },
- { "direcpc-video", { NULL }, 1825, "tcp" },
- { "direcpc-video", { NULL }, 1825, "udp" },
- { "ardt", { NULL }, 1826, "tcp" },
- { "ardt", { NULL }, 1826, "udp" },
- { "asi", { NULL }, 1827, "tcp" },
- { "asi", { NULL }, 1827, "udp" },
- { "itm-mcell-u", { NULL }, 1828, "tcp" },
- { "itm-mcell-u", { NULL }, 1828, "udp" },
- { "optika-emedia", { NULL }, 1829, "tcp" },
- { "optika-emedia", { NULL }, 1829, "udp" },
- { "net8-cman", { NULL }, 1830, "tcp" },
- { "net8-cman", { NULL }, 1830, "udp" },
- { "myrtle", { NULL }, 1831, "tcp" },
- { "myrtle", { NULL }, 1831, "udp" },
- { "tht-treasure", { NULL }, 1832, "tcp" },
- { "tht-treasure", { NULL }, 1832, "udp" },
- { "udpradio", { NULL }, 1833, "tcp" },
- { "udpradio", { NULL }, 1833, "udp" },
- { "ardusuni", { NULL }, 1834, "tcp" },
- { "ardusuni", { NULL }, 1834, "udp" },
- { "ardusmul", { NULL }, 1835, "tcp" },
- { "ardusmul", { NULL }, 1835, "udp" },
- { "ste-smsc", { NULL }, 1836, "tcp" },
- { "ste-smsc", { NULL }, 1836, "udp" },
- { "csoft1", { NULL }, 1837, "tcp" },
- { "csoft1", { NULL }, 1837, "udp" },
- { "talnet", { NULL }, 1838, "tcp" },
- { "talnet", { NULL }, 1838, "udp" },
- { "netopia-vo1", { NULL }, 1839, "tcp" },
- { "netopia-vo1", { NULL }, 1839, "udp" },
- { "netopia-vo2", { NULL }, 1840, "tcp" },
- { "netopia-vo2", { NULL }, 1840, "udp" },
- { "netopia-vo3", { NULL }, 1841, "tcp" },
- { "netopia-vo3", { NULL }, 1841, "udp" },
- { "netopia-vo4", { NULL }, 1842, "tcp" },
- { "netopia-vo4", { NULL }, 1842, "udp" },
- { "netopia-vo5", { NULL }, 1843, "tcp" },
- { "netopia-vo5", { NULL }, 1843, "udp" },
- { "direcpc-dll", { NULL }, 1844, "tcp" },
- { "direcpc-dll", { NULL }, 1844, "udp" },
- { "altalink", { NULL }, 1845, "tcp" },
- { "altalink", { NULL }, 1845, "udp" },
- { "tunstall-pnc", { NULL }, 1846, "tcp" },
- { "tunstall-pnc", { NULL }, 1846, "udp" },
- { "slp-notify", { NULL }, 1847, "tcp" },
- { "slp-notify", { NULL }, 1847, "udp" },
- { "fjdocdist", { NULL }, 1848, "tcp" },
- { "fjdocdist", { NULL }, 1848, "udp" },
- { "alpha-sms", { NULL }, 1849, "tcp" },
- { "alpha-sms", { NULL }, 1849, "udp" },
- { "gsi", { NULL }, 1850, "tcp" },
- { "gsi", { NULL }, 1850, "udp" },
- { "ctcd", { NULL }, 1851, "tcp" },
- { "ctcd", { NULL }, 1851, "udp" },
- { "virtual-time", { NULL }, 1852, "tcp" },
- { "virtual-time", { NULL }, 1852, "udp" },
- { "vids-avtp", { NULL }, 1853, "tcp" },
- { "vids-avtp", { NULL }, 1853, "udp" },
- { "buddy-draw", { NULL }, 1854, "tcp" },
- { "buddy-draw", { NULL }, 1854, "udp" },
- { "fiorano-rtrsvc", { NULL }, 1855, "tcp" },
- { "fiorano-rtrsvc", { NULL }, 1855, "udp" },
- { "fiorano-msgsvc", { NULL }, 1856, "tcp" },
- { "fiorano-msgsvc", { NULL }, 1856, "udp" },
- { "datacaptor", { NULL }, 1857, "tcp" },
- { "datacaptor", { NULL }, 1857, "udp" },
- { "privateark", { NULL }, 1858, "tcp" },
- { "privateark", { NULL }, 1858, "udp" },
- { "gammafetchsvr", { NULL }, 1859, "tcp" },
- { "gammafetchsvr", { NULL }, 1859, "udp" },
- { "sunscalar-svc", { NULL }, 1860, "tcp" },
- { "sunscalar-svc", { NULL }, 1860, "udp" },
- { "lecroy-vicp", { NULL }, 1861, "tcp" },
- { "lecroy-vicp", { NULL }, 1861, "udp" },
- { "mysql-cm-agent", { NULL }, 1862, "tcp" },
- { "mysql-cm-agent", { NULL }, 1862, "udp" },
- { "msnp", { NULL }, 1863, "tcp" },
- { "msnp", { NULL }, 1863, "udp" },
- { "paradym-31port", { NULL }, 1864, "tcp" },
- { "paradym-31port", { NULL }, 1864, "udp" },
- { "entp", { NULL }, 1865, "tcp" },
- { "entp", { NULL }, 1865, "udp" },
- { "swrmi", { NULL }, 1866, "tcp" },
- { "swrmi", { NULL }, 1866, "udp" },
- { "udrive", { NULL }, 1867, "tcp" },
- { "udrive", { NULL }, 1867, "udp" },
- { "viziblebrowser", { NULL }, 1868, "tcp" },
- { "viziblebrowser", { NULL }, 1868, "udp" },
- { "transact", { NULL }, 1869, "tcp" },
- { "transact", { NULL }, 1869, "udp" },
- { "sunscalar-dns", { NULL }, 1870, "tcp" },
- { "sunscalar-dns", { NULL }, 1870, "udp" },
- { "canocentral0", { NULL }, 1871, "tcp" },
- { "canocentral0", { NULL }, 1871, "udp" },
- { "canocentral1", { NULL }, 1872, "tcp" },
- { "canocentral1", { NULL }, 1872, "udp" },
- { "fjmpjps", { NULL }, 1873, "tcp" },
- { "fjmpjps", { NULL }, 1873, "udp" },
- { "fjswapsnp", { NULL }, 1874, "tcp" },
- { "fjswapsnp", { NULL }, 1874, "udp" },
- { "westell-stats", { NULL }, 1875, "tcp" },
- { "westell-stats", { NULL }, 1875, "udp" },
- { "ewcappsrv", { NULL }, 1876, "tcp" },
- { "ewcappsrv", { NULL }, 1876, "udp" },
- { "hp-webqosdb", { NULL }, 1877, "tcp" },
- { "hp-webqosdb", { NULL }, 1877, "udp" },
- { "drmsmc", { NULL }, 1878, "tcp" },
- { "drmsmc", { NULL }, 1878, "udp" },
- { "nettgain-nms", { NULL }, 1879, "tcp" },
- { "nettgain-nms", { NULL }, 1879, "udp" },
- { "vsat-control", { NULL }, 1880, "tcp" },
- { "vsat-control", { NULL }, 1880, "udp" },
- { "ibm-mqseries2", { NULL }, 1881, "tcp" },
- { "ibm-mqseries2", { NULL }, 1881, "udp" },
- { "ecsqdmn", { NULL }, 1882, "tcp" },
- { "ecsqdmn", { NULL }, 1882, "udp" },
- { "ibm-mqisdp", { NULL }, 1883, "tcp" },
- { "ibm-mqisdp", { NULL }, 1883, "udp" },
- { "idmaps", { NULL }, 1884, "tcp" },
- { "idmaps", { NULL }, 1884, "udp" },
- { "vrtstrapserver", { NULL }, 1885, "tcp" },
- { "vrtstrapserver", { NULL }, 1885, "udp" },
- { "leoip", { NULL }, 1886, "tcp" },
- { "leoip", { NULL }, 1886, "udp" },
- { "filex-lport", { NULL }, 1887, "tcp" },
- { "filex-lport", { NULL }, 1887, "udp" },
- { "ncconfig", { NULL }, 1888, "tcp" },
- { "ncconfig", { NULL }, 1888, "udp" },
- { "unify-adapter", { NULL }, 1889, "tcp" },
- { "unify-adapter", { NULL }, 1889, "udp" },
- { "wilkenlistener", { NULL }, 1890, "tcp" },
- { "wilkenlistener", { NULL }, 1890, "udp" },
- { "childkey-notif", { NULL }, 1891, "tcp" },
- { "childkey-notif", { NULL }, 1891, "udp" },
- { "childkey-ctrl", { NULL }, 1892, "tcp" },
- { "childkey-ctrl", { NULL }, 1892, "udp" },
- { "elad", { NULL }, 1893, "tcp" },
- { "elad", { NULL }, 1893, "udp" },
- { "o2server-port", { NULL }, 1894, "tcp" },
- { "o2server-port", { NULL }, 1894, "udp" },
- { "b-novative-ls", { NULL }, 1896, "tcp" },
- { "b-novative-ls", { NULL }, 1896, "udp" },
- { "metaagent", { NULL }, 1897, "tcp" },
- { "metaagent", { NULL }, 1897, "udp" },
- { "cymtec-port", { NULL }, 1898, "tcp" },
- { "cymtec-port", { NULL }, 1898, "udp" },
- { "mc2studios", { NULL }, 1899, "tcp" },
- { "mc2studios", { NULL }, 1899, "udp" },
- { "ssdp", { NULL }, 1900, "tcp" },
- { "ssdp", { NULL }, 1900, "udp" },
- { "fjicl-tep-a", { NULL }, 1901, "tcp" },
- { "fjicl-tep-a", { NULL }, 1901, "udp" },
- { "fjicl-tep-b", { NULL }, 1902, "tcp" },
- { "fjicl-tep-b", { NULL }, 1902, "udp" },
- { "linkname", { NULL }, 1903, "tcp" },
- { "linkname", { NULL }, 1903, "udp" },
- { "fjicl-tep-c", { NULL }, 1904, "tcp" },
- { "fjicl-tep-c", { NULL }, 1904, "udp" },
- { "sugp", { NULL }, 1905, "tcp" },
- { "sugp", { NULL }, 1905, "udp" },
- { "tpmd", { NULL }, 1906, "tcp" },
- { "tpmd", { NULL }, 1906, "udp" },
- { "intrastar", { NULL }, 1907, "tcp" },
- { "intrastar", { NULL }, 1907, "udp" },
- { "dawn", { NULL }, 1908, "tcp" },
- { "dawn", { NULL }, 1908, "udp" },
- { "global-wlink", { NULL }, 1909, "tcp" },
- { "global-wlink", { NULL }, 1909, "udp" },
- { "ultrabac", { NULL }, 1910, "tcp" },
- { "ultrabac", { NULL }, 1910, "udp" },
- { "mtp", { NULL }, 1911, "tcp" },
- { "mtp", { NULL }, 1911, "udp" },
- { "rhp-iibp", { NULL }, 1912, "tcp" },
- { "rhp-iibp", { NULL }, 1912, "udp" },
- { "armadp", { NULL }, 1913, "tcp" },
- { "armadp", { NULL }, 1913, "udp" },
- { "elm-momentum", { NULL }, 1914, "tcp" },
- { "elm-momentum", { NULL }, 1914, "udp" },
- { "facelink", { NULL }, 1915, "tcp" },
- { "facelink", { NULL }, 1915, "udp" },
- { "persona", { NULL }, 1916, "tcp" },
- { "persona", { NULL }, 1916, "udp" },
- { "noagent", { NULL }, 1917, "tcp" },
- { "noagent", { NULL }, 1917, "udp" },
- { "can-nds", { NULL }, 1918, "tcp" },
- { "can-nds", { NULL }, 1918, "udp" },
- { "can-dch", { NULL }, 1919, "tcp" },
- { "can-dch", { NULL }, 1919, "udp" },
- { "can-ferret", { NULL }, 1920, "tcp" },
- { "can-ferret", { NULL }, 1920, "udp" },
- { "noadmin", { NULL }, 1921, "tcp" },
- { "noadmin", { NULL }, 1921, "udp" },
- { "tapestry", { NULL }, 1922, "tcp" },
- { "tapestry", { NULL }, 1922, "udp" },
- { "spice", { NULL }, 1923, "tcp" },
- { "spice", { NULL }, 1923, "udp" },
- { "xiip", { NULL }, 1924, "tcp" },
- { "xiip", { NULL }, 1924, "udp" },
- { "discovery-port", { NULL }, 1925, "tcp" },
- { "discovery-port", { NULL }, 1925, "udp" },
- { "egs", { NULL }, 1926, "tcp" },
- { "egs", { NULL }, 1926, "udp" },
- { "videte-cipc", { NULL }, 1927, "tcp" },
- { "videte-cipc", { NULL }, 1927, "udp" },
- { "emsd-port", { NULL }, 1928, "tcp" },
- { "emsd-port", { NULL }, 1928, "udp" },
- { "bandwiz-system", { NULL }, 1929, "tcp" },
- { "bandwiz-system", { NULL }, 1929, "udp" },
- { "driveappserver", { NULL }, 1930, "tcp" },
- { "driveappserver", { NULL }, 1930, "udp" },
- { "amdsched", { NULL }, 1931, "tcp" },
- { "amdsched", { NULL }, 1931, "udp" },
- { "ctt-broker", { NULL }, 1932, "tcp" },
- { "ctt-broker", { NULL }, 1932, "udp" },
- { "xmapi", { NULL }, 1933, "tcp" },
- { "xmapi", { NULL }, 1933, "udp" },
- { "xaapi", { NULL }, 1934, "tcp" },
- { "xaapi", { NULL }, 1934, "udp" },
- { "macromedia-fcs", { NULL }, 1935, "tcp" },
- { "macromedia-fcs", { NULL }, 1935, "udp" },
- { "jetcmeserver", { NULL }, 1936, "tcp" },
- { "jetcmeserver", { NULL }, 1936, "udp" },
- { "jwserver", { NULL }, 1937, "tcp" },
- { "jwserver", { NULL }, 1937, "udp" },
- { "jwclient", { NULL }, 1938, "tcp" },
- { "jwclient", { NULL }, 1938, "udp" },
- { "jvserver", { NULL }, 1939, "tcp" },
- { "jvserver", { NULL }, 1939, "udp" },
- { "jvclient", { NULL }, 1940, "tcp" },
- { "jvclient", { NULL }, 1940, "udp" },
- { "dic-aida", { NULL }, 1941, "tcp" },
- { "dic-aida", { NULL }, 1941, "udp" },
- { "res", { NULL }, 1942, "tcp" },
- { "res", { NULL }, 1942, "udp" },
- { "beeyond-media", { NULL }, 1943, "tcp" },
- { "beeyond-media", { NULL }, 1943, "udp" },
- { "close-combat", { NULL }, 1944, "tcp" },
- { "close-combat", { NULL }, 1944, "udp" },
- { "dialogic-elmd", { NULL }, 1945, "tcp" },
- { "dialogic-elmd", { NULL }, 1945, "udp" },
- { "tekpls", { NULL }, 1946, "tcp" },
- { "tekpls", { NULL }, 1946, "udp" },
- { "sentinelsrm", { NULL }, 1947, "tcp" },
- { "sentinelsrm", { NULL }, 1947, "udp" },
- { "eye2eye", { NULL }, 1948, "tcp" },
- { "eye2eye", { NULL }, 1948, "udp" },
- { "ismaeasdaqlive", { NULL }, 1949, "tcp" },
- { "ismaeasdaqlive", { NULL }, 1949, "udp" },
- { "ismaeasdaqtest", { NULL }, 1950, "tcp" },
- { "ismaeasdaqtest", { NULL }, 1950, "udp" },
- { "bcs-lmserver", { NULL }, 1951, "tcp" },
- { "bcs-lmserver", { NULL }, 1951, "udp" },
- { "mpnjsc", { NULL }, 1952, "tcp" },
- { "mpnjsc", { NULL }, 1952, "udp" },
- { "rapidbase", { NULL }, 1953, "tcp" },
- { "rapidbase", { NULL }, 1953, "udp" },
- { "abr-api", { NULL }, 1954, "tcp" },
- { "abr-api", { NULL }, 1954, "udp" },
- { "abr-secure", { NULL }, 1955, "tcp" },
- { "abr-secure", { NULL }, 1955, "udp" },
- { "vrtl-vmf-ds", { NULL }, 1956, "tcp" },
- { "vrtl-vmf-ds", { NULL }, 1956, "udp" },
- { "unix-status", { NULL }, 1957, "tcp" },
- { "unix-status", { NULL }, 1957, "udp" },
- { "dxadmind", { NULL }, 1958, "tcp" },
- { "dxadmind", { NULL }, 1958, "udp" },
- { "simp-all", { NULL }, 1959, "tcp" },
- { "simp-all", { NULL }, 1959, "udp" },
- { "nasmanager", { NULL }, 1960, "tcp" },
- { "nasmanager", { NULL }, 1960, "udp" },
- { "bts-appserver", { NULL }, 1961, "tcp" },
- { "bts-appserver", { NULL }, 1961, "udp" },
- { "biap-mp", { NULL }, 1962, "tcp" },
- { "biap-mp", { NULL }, 1962, "udp" },
- { "webmachine", { NULL }, 1963, "tcp" },
- { "webmachine", { NULL }, 1963, "udp" },
- { "solid-e-engine", { NULL }, 1964, "tcp" },
- { "solid-e-engine", { NULL }, 1964, "udp" },
- { "tivoli-npm", { NULL }, 1965, "tcp" },
- { "tivoli-npm", { NULL }, 1965, "udp" },
- { "slush", { NULL }, 1966, "tcp" },
- { "slush", { NULL }, 1966, "udp" },
- { "sns-quote", { NULL }, 1967, "tcp" },
- { "sns-quote", { NULL }, 1967, "udp" },
- { "lipsinc", { NULL }, 1968, "tcp" },
- { "lipsinc", { NULL }, 1968, "udp" },
- { "lipsinc1", { NULL }, 1969, "tcp" },
- { "lipsinc1", { NULL }, 1969, "udp" },
- { "netop-rc", { NULL }, 1970, "tcp" },
- { "netop-rc", { NULL }, 1970, "udp" },
- { "netop-school", { NULL }, 1971, "tcp" },
- { "netop-school", { NULL }, 1971, "udp" },
- { "intersys-cache", { NULL }, 1972, "tcp" },
- { "intersys-cache", { NULL }, 1972, "udp" },
- { "dlsrap", { NULL }, 1973, "tcp" },
- { "dlsrap", { NULL }, 1973, "udp" },
- { "drp", { NULL }, 1974, "tcp" },
- { "drp", { NULL }, 1974, "udp" },
- { "tcoflashagent", { NULL }, 1975, "tcp" },
- { "tcoflashagent", { NULL }, 1975, "udp" },
- { "tcoregagent", { NULL }, 1976, "tcp" },
- { "tcoregagent", { NULL }, 1976, "udp" },
- { "tcoaddressbook", { NULL }, 1977, "tcp" },
- { "tcoaddressbook", { NULL }, 1977, "udp" },
- { "unisql", { NULL }, 1978, "tcp" },
- { "unisql", { NULL }, 1978, "udp" },
- { "unisql-java", { NULL }, 1979, "tcp" },
- { "unisql-java", { NULL }, 1979, "udp" },
- { "pearldoc-xact", { NULL }, 1980, "tcp" },
- { "pearldoc-xact", { NULL }, 1980, "udp" },
- { "p2pq", { NULL }, 1981, "tcp" },
- { "p2pq", { NULL }, 1981, "udp" },
- { "estamp", { NULL }, 1982, "tcp" },
- { "estamp", { NULL }, 1982, "udp" },
- { "lhtp", { NULL }, 1983, "tcp" },
- { "lhtp", { NULL }, 1983, "udp" },
- { "bb", { NULL }, 1984, "tcp" },
- { "bb", { NULL }, 1984, "udp" },
- { "hsrp", { NULL }, 1985, "tcp" },
- { "hsrp", { NULL }, 1985, "udp" },
- { "licensedaemon", { NULL }, 1986, "tcp" },
- { "licensedaemon", { NULL }, 1986, "udp" },
- { "tr-rsrb-p1", { NULL }, 1987, "tcp" },
- { "tr-rsrb-p1", { NULL }, 1987, "udp" },
- { "tr-rsrb-p2", { NULL }, 1988, "tcp" },
- { "tr-rsrb-p2", { NULL }, 1988, "udp" },
- { "tr-rsrb-p3", { NULL }, 1989, "tcp" },
- { "tr-rsrb-p3", { NULL }, 1989, "udp" },
- { "mshnet", { NULL }, 1989, "tcp" },
- { "mshnet", { NULL }, 1989, "udp" },
- { "stun-p1", { NULL }, 1990, "tcp" },
- { "stun-p1", { NULL }, 1990, "udp" },
- { "stun-p2", { NULL }, 1991, "tcp" },
- { "stun-p2", { NULL }, 1991, "udp" },
- { "stun-p3", { NULL }, 1992, "tcp" },
- { "stun-p3", { NULL }, 1992, "udp" },
- { "ipsendmsg", { NULL }, 1992, "tcp" },
- { "ipsendmsg", { NULL }, 1992, "udp" },
- { "snmp-tcp-port", { NULL }, 1993, "tcp" },
- { "snmp-tcp-port", { NULL }, 1993, "udp" },
- { "stun-port", { NULL }, 1994, "tcp" },
- { "stun-port", { NULL }, 1994, "udp" },
- { "perf-port", { NULL }, 1995, "tcp" },
- { "perf-port", { NULL }, 1995, "udp" },
- { "tr-rsrb-port", { NULL }, 1996, "tcp" },
- { "tr-rsrb-port", { NULL }, 1996, "udp" },
- { "gdp-port", { NULL }, 1997, "tcp" },
- { "gdp-port", { NULL }, 1997, "udp" },
- { "x25-svc-port", { NULL }, 1998, "tcp" },
- { "x25-svc-port", { NULL }, 1998, "udp" },
- { "tcp-id-port", { NULL }, 1999, "tcp" },
- { "tcp-id-port", { NULL }, 1999, "udp" },
- { "cisco-sccp", { NULL }, 2000, "tcp" },
- { "cisco-sccp", { NULL }, 2000, "udp" },
- { "dc", { NULL }, 2001, "tcp" },
- { "wizard", { NULL }, 2001, "udp" },
- { "globe", { NULL }, 2002, "tcp" },
- { "globe", { NULL }, 2002, "udp" },
- { "brutus", { NULL }, 2003, "tcp" },
- { "brutus", { NULL }, 2003, "udp" },
- { "mailbox", { NULL }, 2004, "tcp" },
- { "emce", { NULL }, 2004, "udp" },
- { "berknet", { NULL }, 2005, "tcp" },
- { "oracle", { NULL }, 2005, "udp" },
- { "invokator", { NULL }, 2006, "tcp" },
- { "raid-cd", { NULL }, 2006, "udp" },
- { "dectalk", { NULL }, 2007, "tcp" },
- { "raid-am", { NULL }, 2007, "udp" },
- { "conf", { NULL }, 2008, "tcp" },
- { "terminaldb", { NULL }, 2008, "udp" },
- { "news", { NULL }, 2009, "tcp" },
- { "whosockami", { NULL }, 2009, "udp" },
- { "search", { NULL }, 2010, "tcp" },
- { "pipe_server", { NULL }, 2010, "udp" },
- { "raid-cc", { NULL }, 2011, "tcp" },
- { "servserv", { NULL }, 2011, "udp" },
- { "ttyinfo", { NULL }, 2012, "tcp" },
- { "raid-ac", { NULL }, 2012, "udp" },
- { "raid-am", { NULL }, 2013, "tcp" },
- { "raid-cd", { NULL }, 2013, "udp" },
- { "troff", { NULL }, 2014, "tcp" },
- { "raid-sf", { NULL }, 2014, "udp" },
- { "cypress", { NULL }, 2015, "tcp" },
- { "raid-cs", { NULL }, 2015, "udp" },
- { "bootserver", { NULL }, 2016, "tcp" },
- { "bootserver", { NULL }, 2016, "udp" },
- { "cypress-stat", { NULL }, 2017, "tcp" },
- { "bootclient", { NULL }, 2017, "udp" },
- { "terminaldb", { NULL }, 2018, "tcp" },
- { "rellpack", { NULL }, 2018, "udp" },
- { "whosockami", { NULL }, 2019, "tcp" },
- { "about", { NULL }, 2019, "udp" },
- { "xinupageserver", { NULL }, 2020, "tcp" },
- { "xinupageserver", { NULL }, 2020, "udp" },
- { "servexec", { NULL }, 2021, "tcp" },
- { "xinuexpansion1", { NULL }, 2021, "udp" },
- { "down", { NULL }, 2022, "tcp" },
- { "xinuexpansion2", { NULL }, 2022, "udp" },
- { "xinuexpansion3", { NULL }, 2023, "tcp" },
- { "xinuexpansion3", { NULL }, 2023, "udp" },
- { "xinuexpansion4", { NULL }, 2024, "tcp" },
- { "xinuexpansion4", { NULL }, 2024, "udp" },
- { "ellpack", { NULL }, 2025, "tcp" },
- { "xribs", { NULL }, 2025, "udp" },
- { "scrabble", { NULL }, 2026, "tcp" },
- { "scrabble", { NULL }, 2026, "udp" },
- { "shadowserver", { NULL }, 2027, "tcp" },
- { "shadowserver", { NULL }, 2027, "udp" },
- { "submitserver", { NULL }, 2028, "tcp" },
- { "submitserver", { NULL }, 2028, "udp" },
- { "hsrpv6", { NULL }, 2029, "tcp" },
- { "hsrpv6", { NULL }, 2029, "udp" },
- { "device2", { NULL }, 2030, "tcp" },
- { "device2", { NULL }, 2030, "udp" },
- { "mobrien-chat", { NULL }, 2031, "tcp" },
- { "mobrien-chat", { NULL }, 2031, "udp" },
- { "blackboard", { NULL }, 2032, "tcp" },
- { "blackboard", { NULL }, 2032, "udp" },
- { "glogger", { NULL }, 2033, "tcp" },
- { "glogger", { NULL }, 2033, "udp" },
- { "scoremgr", { NULL }, 2034, "tcp" },
- { "scoremgr", { NULL }, 2034, "udp" },
- { "imsldoc", { NULL }, 2035, "tcp" },
- { "imsldoc", { NULL }, 2035, "udp" },
- { "e-dpnet", { NULL }, 2036, "tcp" },
- { "e-dpnet", { NULL }, 2036, "udp" },
- { "applus", { NULL }, 2037, "tcp" },
- { "applus", { NULL }, 2037, "udp" },
- { "objectmanager", { NULL }, 2038, "tcp" },
- { "objectmanager", { NULL }, 2038, "udp" },
- { "prizma", { NULL }, 2039, "tcp" },
- { "prizma", { NULL }, 2039, "udp" },
- { "lam", { NULL }, 2040, "tcp" },
- { "lam", { NULL }, 2040, "udp" },
- { "interbase", { NULL }, 2041, "tcp" },
- { "interbase", { NULL }, 2041, "udp" },
- { "isis", { NULL }, 2042, "tcp" },
- { "isis", { NULL }, 2042, "udp" },
- { "isis-bcast", { NULL }, 2043, "tcp" },
- { "isis-bcast", { NULL }, 2043, "udp" },
- { "rimsl", { NULL }, 2044, "tcp" },
- { "rimsl", { NULL }, 2044, "udp" },
- { "cdfunc", { NULL }, 2045, "tcp" },
- { "cdfunc", { NULL }, 2045, "udp" },
- { "sdfunc", { NULL }, 2046, "tcp" },
- { "sdfunc", { NULL }, 2046, "udp" },
- { "dls", { NULL }, 2047, "tcp" },
- { "dls", { NULL }, 2047, "udp" },
- { "dls-monitor", { NULL }, 2048, "tcp" },
- { "dls-monitor", { NULL }, 2048, "udp" },
- { "shilp", { NULL }, 2049, "tcp" },
- { "shilp", { NULL }, 2049, "udp" },
- { "nfs", { NULL }, 2049, "tcp" },
- { "nfs", { NULL }, 2049, "udp" },
- { "nfs", { NULL }, 2049, "sctp" },
- { "av-emb-config", { NULL }, 2050, "tcp" },
- { "av-emb-config", { NULL }, 2050, "udp" },
- { "epnsdp", { NULL }, 2051, "tcp" },
- { "epnsdp", { NULL }, 2051, "udp" },
- { "clearvisn", { NULL }, 2052, "tcp" },
- { "clearvisn", { NULL }, 2052, "udp" },
- { "lot105-ds-upd", { NULL }, 2053, "tcp" },
- { "lot105-ds-upd", { NULL }, 2053, "udp" },
- { "weblogin", { NULL }, 2054, "tcp" },
- { "weblogin", { NULL }, 2054, "udp" },
- { "iop", { NULL }, 2055, "tcp" },
- { "iop", { NULL }, 2055, "udp" },
- { "omnisky", { NULL }, 2056, "tcp" },
- { "omnisky", { NULL }, 2056, "udp" },
- { "rich-cp", { NULL }, 2057, "tcp" },
- { "rich-cp", { NULL }, 2057, "udp" },
- { "newwavesearch", { NULL }, 2058, "tcp" },
- { "newwavesearch", { NULL }, 2058, "udp" },
- { "bmc-messaging", { NULL }, 2059, "tcp" },
- { "bmc-messaging", { NULL }, 2059, "udp" },
- { "teleniumdaemon", { NULL }, 2060, "tcp" },
- { "teleniumdaemon", { NULL }, 2060, "udp" },
- { "netmount", { NULL }, 2061, "tcp" },
- { "netmount", { NULL }, 2061, "udp" },
- { "icg-swp", { NULL }, 2062, "tcp" },
- { "icg-swp", { NULL }, 2062, "udp" },
- { "icg-bridge", { NULL }, 2063, "tcp" },
- { "icg-bridge", { NULL }, 2063, "udp" },
- { "icg-iprelay", { NULL }, 2064, "tcp" },
- { "icg-iprelay", { NULL }, 2064, "udp" },
- { "dlsrpn", { NULL }, 2065, "tcp" },
- { "dlsrpn", { NULL }, 2065, "udp" },
- { "aura", { NULL }, 2066, "tcp" },
- { "aura", { NULL }, 2066, "udp" },
- { "dlswpn", { NULL }, 2067, "tcp" },
- { "dlswpn", { NULL }, 2067, "udp" },
- { "avauthsrvprtcl", { NULL }, 2068, "tcp" },
- { "avauthsrvprtcl", { NULL }, 2068, "udp" },
- { "event-port", { NULL }, 2069, "tcp" },
- { "event-port", { NULL }, 2069, "udp" },
- { "ah-esp-encap", { NULL }, 2070, "tcp" },
- { "ah-esp-encap", { NULL }, 2070, "udp" },
- { "acp-port", { NULL }, 2071, "tcp" },
- { "acp-port", { NULL }, 2071, "udp" },
- { "msync", { NULL }, 2072, "tcp" },
- { "msync", { NULL }, 2072, "udp" },
- { "gxs-data-port", { NULL }, 2073, "tcp" },
- { "gxs-data-port", { NULL }, 2073, "udp" },
- { "vrtl-vmf-sa", { NULL }, 2074, "tcp" },
- { "vrtl-vmf-sa", { NULL }, 2074, "udp" },
- { "newlixengine", { NULL }, 2075, "tcp" },
- { "newlixengine", { NULL }, 2075, "udp" },
- { "newlixconfig", { NULL }, 2076, "tcp" },
- { "newlixconfig", { NULL }, 2076, "udp" },
- { "tsrmagt", { NULL }, 2077, "tcp" },
- { "tsrmagt", { NULL }, 2077, "udp" },
- { "tpcsrvr", { NULL }, 2078, "tcp" },
- { "tpcsrvr", { NULL }, 2078, "udp" },
- { "idware-router", { NULL }, 2079, "tcp" },
- { "idware-router", { NULL }, 2079, "udp" },
- { "autodesk-nlm", { NULL }, 2080, "tcp" },
- { "autodesk-nlm", { NULL }, 2080, "udp" },
- { "kme-trap-port", { NULL }, 2081, "tcp" },
- { "kme-trap-port", { NULL }, 2081, "udp" },
- { "infowave", { NULL }, 2082, "tcp" },
- { "infowave", { NULL }, 2082, "udp" },
- { "radsec", { NULL }, 2083, "tcp" },
- { "radsec", { NULL }, 2083, "udp" },
- { "sunclustergeo", { NULL }, 2084, "tcp" },
- { "sunclustergeo", { NULL }, 2084, "udp" },
- { "ada-cip", { NULL }, 2085, "tcp" },
- { "ada-cip", { NULL }, 2085, "udp" },
- { "gnunet", { NULL }, 2086, "tcp" },
- { "gnunet", { NULL }, 2086, "udp" },
- { "eli", { NULL }, 2087, "tcp" },
- { "eli", { NULL }, 2087, "udp" },
- { "ip-blf", { NULL }, 2088, "tcp" },
- { "ip-blf", { NULL }, 2088, "udp" },
- { "sep", { NULL }, 2089, "tcp" },
- { "sep", { NULL }, 2089, "udp" },
- { "lrp", { NULL }, 2090, "tcp" },
- { "lrp", { NULL }, 2090, "udp" },
- { "prp", { NULL }, 2091, "tcp" },
- { "prp", { NULL }, 2091, "udp" },
- { "descent3", { NULL }, 2092, "tcp" },
- { "descent3", { NULL }, 2092, "udp" },
- { "nbx-cc", { NULL }, 2093, "tcp" },
- { "nbx-cc", { NULL }, 2093, "udp" },
- { "nbx-au", { NULL }, 2094, "tcp" },
- { "nbx-au", { NULL }, 2094, "udp" },
- { "nbx-ser", { NULL }, 2095, "tcp" },
- { "nbx-ser", { NULL }, 2095, "udp" },
- { "nbx-dir", { NULL }, 2096, "tcp" },
- { "nbx-dir", { NULL }, 2096, "udp" },
- { "jetformpreview", { NULL }, 2097, "tcp" },
- { "jetformpreview", { NULL }, 2097, "udp" },
- { "dialog-port", { NULL }, 2098, "tcp" },
- { "dialog-port", { NULL }, 2098, "udp" },
- { "h2250-annex-g", { NULL }, 2099, "tcp" },
- { "h2250-annex-g", { NULL }, 2099, "udp" },
- { "amiganetfs", { NULL }, 2100, "tcp" },
- { "amiganetfs", { NULL }, 2100, "udp" },
- { "rtcm-sc104", { NULL }, 2101, "tcp" },
- { "rtcm-sc104", { NULL }, 2101, "udp" },
- { "zephyr-srv", { NULL }, 2102, "tcp" },
- { "zephyr-srv", { NULL }, 2102, "udp" },
- { "zephyr-clt", { NULL }, 2103, "tcp" },
- { "zephyr-clt", { NULL }, 2103, "udp" },
- { "zephyr-hm", { NULL }, 2104, "tcp" },
- { "zephyr-hm", { NULL }, 2104, "udp" },
- { "minipay", { NULL }, 2105, "tcp" },
- { "minipay", { NULL }, 2105, "udp" },
- { "mzap", { NULL }, 2106, "tcp" },
- { "mzap", { NULL }, 2106, "udp" },
- { "bintec-admin", { NULL }, 2107, "tcp" },
- { "bintec-admin", { NULL }, 2107, "udp" },
- { "comcam", { NULL }, 2108, "tcp" },
- { "comcam", { NULL }, 2108, "udp" },
- { "ergolight", { NULL }, 2109, "tcp" },
- { "ergolight", { NULL }, 2109, "udp" },
- { "umsp", { NULL }, 2110, "tcp" },
- { "umsp", { NULL }, 2110, "udp" },
- { "dsatp", { NULL }, 2111, "tcp" },
- { "dsatp", { NULL }, 2111, "udp" },
- { "idonix-metanet", { NULL }, 2112, "tcp" },
- { "idonix-metanet", { NULL }, 2112, "udp" },
- { "hsl-storm", { NULL }, 2113, "tcp" },
- { "hsl-storm", { NULL }, 2113, "udp" },
- { "newheights", { NULL }, 2114, "tcp" },
- { "newheights", { NULL }, 2114, "udp" },
- { "kdm", { NULL }, 2115, "tcp" },
- { "kdm", { NULL }, 2115, "udp" },
- { "ccowcmr", { NULL }, 2116, "tcp" },
- { "ccowcmr", { NULL }, 2116, "udp" },
- { "mentaclient", { NULL }, 2117, "tcp" },
- { "mentaclient", { NULL }, 2117, "udp" },
- { "mentaserver", { NULL }, 2118, "tcp" },
- { "mentaserver", { NULL }, 2118, "udp" },
- { "gsigatekeeper", { NULL }, 2119, "tcp" },
- { "gsigatekeeper", { NULL }, 2119, "udp" },
- { "qencp", { NULL }, 2120, "tcp" },
- { "qencp", { NULL }, 2120, "udp" },
- { "scientia-ssdb", { NULL }, 2121, "tcp" },
- { "scientia-ssdb", { NULL }, 2121, "udp" },
- { "caupc-remote", { NULL }, 2122, "tcp" },
- { "caupc-remote", { NULL }, 2122, "udp" },
- { "gtp-control", { NULL }, 2123, "tcp" },
- { "gtp-control", { NULL }, 2123, "udp" },
- { "elatelink", { NULL }, 2124, "tcp" },
- { "elatelink", { NULL }, 2124, "udp" },
- { "lockstep", { NULL }, 2125, "tcp" },
- { "lockstep", { NULL }, 2125, "udp" },
- { "pktcable-cops", { NULL }, 2126, "tcp" },
- { "pktcable-cops", { NULL }, 2126, "udp" },
- { "index-pc-wb", { NULL }, 2127, "tcp" },
- { "index-pc-wb", { NULL }, 2127, "udp" },
- { "net-steward", { NULL }, 2128, "tcp" },
- { "net-steward", { NULL }, 2128, "udp" },
- { "cs-live", { NULL }, 2129, "tcp" },
- { "cs-live", { NULL }, 2129, "udp" },
- { "xds", { NULL }, 2130, "tcp" },
- { "xds", { NULL }, 2130, "udp" },
- { "avantageb2b", { NULL }, 2131, "tcp" },
- { "avantageb2b", { NULL }, 2131, "udp" },
- { "solera-epmap", { NULL }, 2132, "tcp" },
- { "solera-epmap", { NULL }, 2132, "udp" },
- { "zymed-zpp", { NULL }, 2133, "tcp" },
- { "zymed-zpp", { NULL }, 2133, "udp" },
- { "avenue", { NULL }, 2134, "tcp" },
- { "avenue", { NULL }, 2134, "udp" },
- { "gris", { NULL }, 2135, "tcp" },
- { "gris", { NULL }, 2135, "udp" },
- { "appworxsrv", { NULL }, 2136, "tcp" },
- { "appworxsrv", { NULL }, 2136, "udp" },
- { "connect", { NULL }, 2137, "tcp" },
- { "connect", { NULL }, 2137, "udp" },
- { "unbind-cluster", { NULL }, 2138, "tcp" },
- { "unbind-cluster", { NULL }, 2138, "udp" },
- { "ias-auth", { NULL }, 2139, "tcp" },
- { "ias-auth", { NULL }, 2139, "udp" },
- { "ias-reg", { NULL }, 2140, "tcp" },
- { "ias-reg", { NULL }, 2140, "udp" },
- { "ias-admind", { NULL }, 2141, "tcp" },
- { "ias-admind", { NULL }, 2141, "udp" },
- { "tdmoip", { NULL }, 2142, "tcp" },
- { "tdmoip", { NULL }, 2142, "udp" },
- { "lv-jc", { NULL }, 2143, "tcp" },
- { "lv-jc", { NULL }, 2143, "udp" },
- { "lv-ffx", { NULL }, 2144, "tcp" },
- { "lv-ffx", { NULL }, 2144, "udp" },
- { "lv-pici", { NULL }, 2145, "tcp" },
- { "lv-pici", { NULL }, 2145, "udp" },
- { "lv-not", { NULL }, 2146, "tcp" },
- { "lv-not", { NULL }, 2146, "udp" },
- { "lv-auth", { NULL }, 2147, "tcp" },
- { "lv-auth", { NULL }, 2147, "udp" },
- { "veritas-ucl", { NULL }, 2148, "tcp" },
- { "veritas-ucl", { NULL }, 2148, "udp" },
- { "acptsys", { NULL }, 2149, "tcp" },
- { "acptsys", { NULL }, 2149, "udp" },
- { "dynamic3d", { NULL }, 2150, "tcp" },
- { "dynamic3d", { NULL }, 2150, "udp" },
- { "docent", { NULL }, 2151, "tcp" },
- { "docent", { NULL }, 2151, "udp" },
- { "gtp-user", { NULL }, 2152, "tcp" },
- { "gtp-user", { NULL }, 2152, "udp" },
- { "ctlptc", { NULL }, 2153, "tcp" },
- { "ctlptc", { NULL }, 2153, "udp" },
- { "stdptc", { NULL }, 2154, "tcp" },
- { "stdptc", { NULL }, 2154, "udp" },
- { "brdptc", { NULL }, 2155, "tcp" },
- { "brdptc", { NULL }, 2155, "udp" },
- { "trp", { NULL }, 2156, "tcp" },
- { "trp", { NULL }, 2156, "udp" },
- { "xnds", { NULL }, 2157, "tcp" },
- { "xnds", { NULL }, 2157, "udp" },
- { "touchnetplus", { NULL }, 2158, "tcp" },
- { "touchnetplus", { NULL }, 2158, "udp" },
- { "gdbremote", { NULL }, 2159, "tcp" },
- { "gdbremote", { NULL }, 2159, "udp" },
- { "apc-2160", { NULL }, 2160, "tcp" },
- { "apc-2160", { NULL }, 2160, "udp" },
- { "apc-2161", { NULL }, 2161, "tcp" },
- { "apc-2161", { NULL }, 2161, "udp" },
- { "navisphere", { NULL }, 2162, "tcp" },
- { "navisphere", { NULL }, 2162, "udp" },
- { "navisphere-sec", { NULL }, 2163, "tcp" },
- { "navisphere-sec", { NULL }, 2163, "udp" },
- { "ddns-v3", { NULL }, 2164, "tcp" },
- { "ddns-v3", { NULL }, 2164, "udp" },
- { "x-bone-api", { NULL }, 2165, "tcp" },
- { "x-bone-api", { NULL }, 2165, "udp" },
- { "iwserver", { NULL }, 2166, "tcp" },
- { "iwserver", { NULL }, 2166, "udp" },
- { "raw-serial", { NULL }, 2167, "tcp" },
- { "raw-serial", { NULL }, 2167, "udp" },
- { "easy-soft-mux", { NULL }, 2168, "tcp" },
- { "easy-soft-mux", { NULL }, 2168, "udp" },
- { "brain", { NULL }, 2169, "tcp" },
- { "brain", { NULL }, 2169, "udp" },
- { "eyetv", { NULL }, 2170, "tcp" },
- { "eyetv", { NULL }, 2170, "udp" },
- { "msfw-storage", { NULL }, 2171, "tcp" },
- { "msfw-storage", { NULL }, 2171, "udp" },
- { "msfw-s-storage", { NULL }, 2172, "tcp" },
- { "msfw-s-storage", { NULL }, 2172, "udp" },
- { "msfw-replica", { NULL }, 2173, "tcp" },
- { "msfw-replica", { NULL }, 2173, "udp" },
- { "msfw-array", { NULL }, 2174, "tcp" },
- { "msfw-array", { NULL }, 2174, "udp" },
- { "airsync", { NULL }, 2175, "tcp" },
- { "airsync", { NULL }, 2175, "udp" },
- { "rapi", { NULL }, 2176, "tcp" },
- { "rapi", { NULL }, 2176, "udp" },
- { "qwave", { NULL }, 2177, "tcp" },
- { "qwave", { NULL }, 2177, "udp" },
- { "bitspeer", { NULL }, 2178, "tcp" },
- { "bitspeer", { NULL }, 2178, "udp" },
- { "vmrdp", { NULL }, 2179, "tcp" },
- { "vmrdp", { NULL }, 2179, "udp" },
- { "mc-gt-srv", { NULL }, 2180, "tcp" },
- { "mc-gt-srv", { NULL }, 2180, "udp" },
- { "eforward", { NULL }, 2181, "tcp" },
- { "eforward", { NULL }, 2181, "udp" },
- { "cgn-stat", { NULL }, 2182, "tcp" },
- { "cgn-stat", { NULL }, 2182, "udp" },
- { "cgn-config", { NULL }, 2183, "tcp" },
- { "cgn-config", { NULL }, 2183, "udp" },
- { "nvd", { NULL }, 2184, "tcp" },
- { "nvd", { NULL }, 2184, "udp" },
- { "onbase-dds", { NULL }, 2185, "tcp" },
- { "onbase-dds", { NULL }, 2185, "udp" },
- { "gtaua", { NULL }, 2186, "tcp" },
- { "gtaua", { NULL }, 2186, "udp" },
- { "ssmc", { NULL }, 2187, "tcp" },
- { "ssmd", { NULL }, 2187, "udp" },
- { "tivoconnect", { NULL }, 2190, "tcp" },
- { "tivoconnect", { NULL }, 2190, "udp" },
- { "tvbus", { NULL }, 2191, "tcp" },
- { "tvbus", { NULL }, 2191, "udp" },
- { "asdis", { NULL }, 2192, "tcp" },
- { "asdis", { NULL }, 2192, "udp" },
- { "drwcs", { NULL }, 2193, "tcp" },
- { "drwcs", { NULL }, 2193, "udp" },
- { "mnp-exchange", { NULL }, 2197, "tcp" },
- { "mnp-exchange", { NULL }, 2197, "udp" },
- { "onehome-remote", { NULL }, 2198, "tcp" },
- { "onehome-remote", { NULL }, 2198, "udp" },
- { "onehome-help", { NULL }, 2199, "tcp" },
- { "onehome-help", { NULL }, 2199, "udp" },
- { "ici", { NULL }, 2200, "tcp" },
- { "ici", { NULL }, 2200, "udp" },
- { "ats", { NULL }, 2201, "tcp" },
- { "ats", { NULL }, 2201, "udp" },
- { "imtc-map", { NULL }, 2202, "tcp" },
- { "imtc-map", { NULL }, 2202, "udp" },
- { "b2-runtime", { NULL }, 2203, "tcp" },
- { "b2-runtime", { NULL }, 2203, "udp" },
- { "b2-license", { NULL }, 2204, "tcp" },
- { "b2-license", { NULL }, 2204, "udp" },
- { "jps", { NULL }, 2205, "tcp" },
- { "jps", { NULL }, 2205, "udp" },
- { "hpocbus", { NULL }, 2206, "tcp" },
- { "hpocbus", { NULL }, 2206, "udp" },
- { "hpssd", { NULL }, 2207, "tcp" },
- { "hpssd", { NULL }, 2207, "udp" },
- { "hpiod", { NULL }, 2208, "tcp" },
- { "hpiod", { NULL }, 2208, "udp" },
- { "rimf-ps", { NULL }, 2209, "tcp" },
- { "rimf-ps", { NULL }, 2209, "udp" },
- { "noaaport", { NULL }, 2210, "tcp" },
- { "noaaport", { NULL }, 2210, "udp" },
- { "emwin", { NULL }, 2211, "tcp" },
- { "emwin", { NULL }, 2211, "udp" },
- { "leecoposserver", { NULL }, 2212, "tcp" },
- { "leecoposserver", { NULL }, 2212, "udp" },
- { "kali", { NULL }, 2213, "tcp" },
- { "kali", { NULL }, 2213, "udp" },
- { "rpi", { NULL }, 2214, "tcp" },
- { "rpi", { NULL }, 2214, "udp" },
- { "ipcore", { NULL }, 2215, "tcp" },
- { "ipcore", { NULL }, 2215, "udp" },
- { "vtu-comms", { NULL }, 2216, "tcp" },
- { "vtu-comms", { NULL }, 2216, "udp" },
- { "gotodevice", { NULL }, 2217, "tcp" },
- { "gotodevice", { NULL }, 2217, "udp" },
- { "bounzza", { NULL }, 2218, "tcp" },
- { "bounzza", { NULL }, 2218, "udp" },
- { "netiq-ncap", { NULL }, 2219, "tcp" },
- { "netiq-ncap", { NULL }, 2219, "udp" },
- { "netiq", { NULL }, 2220, "tcp" },
- { "netiq", { NULL }, 2220, "udp" },
- { "rockwell-csp1", { NULL }, 2221, "tcp" },
- { "rockwell-csp1", { NULL }, 2221, "udp" },
- { "EtherNet/IP-1", { NULL }, 2222, "tcp" },
- { "EtherNet/IP-1", { NULL }, 2222, "udp" },
- { "rockwell-csp2", { NULL }, 2223, "tcp" },
- { "rockwell-csp2", { NULL }, 2223, "udp" },
- { "efi-mg", { NULL }, 2224, "tcp" },
- { "efi-mg", { NULL }, 2224, "udp" },
- { "rcip-itu", { NULL }, 2225, "tcp" },
- { "rcip-itu", { NULL }, 2225, "sctp" },
- { "di-drm", { NULL }, 2226, "tcp" },
- { "di-drm", { NULL }, 2226, "udp" },
- { "di-msg", { NULL }, 2227, "tcp" },
- { "di-msg", { NULL }, 2227, "udp" },
- { "ehome-ms", { NULL }, 2228, "tcp" },
- { "ehome-ms", { NULL }, 2228, "udp" },
- { "datalens", { NULL }, 2229, "tcp" },
- { "datalens", { NULL }, 2229, "udp" },
- { "queueadm", { NULL }, 2230, "tcp" },
- { "queueadm", { NULL }, 2230, "udp" },
- { "wimaxasncp", { NULL }, 2231, "tcp" },
- { "wimaxasncp", { NULL }, 2231, "udp" },
- { "ivs-video", { NULL }, 2232, "tcp" },
- { "ivs-video", { NULL }, 2232, "udp" },
- { "infocrypt", { NULL }, 2233, "tcp" },
- { "infocrypt", { NULL }, 2233, "udp" },
- { "directplay", { NULL }, 2234, "tcp" },
- { "directplay", { NULL }, 2234, "udp" },
- { "sercomm-wlink", { NULL }, 2235, "tcp" },
- { "sercomm-wlink", { NULL }, 2235, "udp" },
- { "nani", { NULL }, 2236, "tcp" },
- { "nani", { NULL }, 2236, "udp" },
- { "optech-port1-lm", { NULL }, 2237, "tcp" },
- { "optech-port1-lm", { NULL }, 2237, "udp" },
- { "aviva-sna", { NULL }, 2238, "tcp" },
- { "aviva-sna", { NULL }, 2238, "udp" },
- { "imagequery", { NULL }, 2239, "tcp" },
- { "imagequery", { NULL }, 2239, "udp" },
- { "recipe", { NULL }, 2240, "tcp" },
- { "recipe", { NULL }, 2240, "udp" },
- { "ivsd", { NULL }, 2241, "tcp" },
- { "ivsd", { NULL }, 2241, "udp" },
- { "foliocorp", { NULL }, 2242, "tcp" },
- { "foliocorp", { NULL }, 2242, "udp" },
- { "magicom", { NULL }, 2243, "tcp" },
- { "magicom", { NULL }, 2243, "udp" },
- { "nmsserver", { NULL }, 2244, "tcp" },
- { "nmsserver", { NULL }, 2244, "udp" },
- { "hao", { NULL }, 2245, "tcp" },
- { "hao", { NULL }, 2245, "udp" },
- { "pc-mta-addrmap", { NULL }, 2246, "tcp" },
- { "pc-mta-addrmap", { NULL }, 2246, "udp" },
- { "antidotemgrsvr", { NULL }, 2247, "tcp" },
- { "antidotemgrsvr", { NULL }, 2247, "udp" },
- { "ums", { NULL }, 2248, "tcp" },
- { "ums", { NULL }, 2248, "udp" },
- { "rfmp", { NULL }, 2249, "tcp" },
- { "rfmp", { NULL }, 2249, "udp" },
- { "remote-collab", { NULL }, 2250, "tcp" },
- { "remote-collab", { NULL }, 2250, "udp" },
- { "dif-port", { NULL }, 2251, "tcp" },
- { "dif-port", { NULL }, 2251, "udp" },
- { "njenet-ssl", { NULL }, 2252, "tcp" },
- { "njenet-ssl", { NULL }, 2252, "udp" },
- { "dtv-chan-req", { NULL }, 2253, "tcp" },
- { "dtv-chan-req", { NULL }, 2253, "udp" },
- { "seispoc", { NULL }, 2254, "tcp" },
- { "seispoc", { NULL }, 2254, "udp" },
- { "vrtp", { NULL }, 2255, "tcp" },
- { "vrtp", { NULL }, 2255, "udp" },
- { "pcc-mfp", { NULL }, 2256, "tcp" },
- { "pcc-mfp", { NULL }, 2256, "udp" },
- { "simple-tx-rx", { NULL }, 2257, "tcp" },
- { "simple-tx-rx", { NULL }, 2257, "udp" },
- { "rcts", { NULL }, 2258, "tcp" },
- { "rcts", { NULL }, 2258, "udp" },
- { "acd-pm", { NULL }, 2259, "tcp" },
- { "acd-pm", { NULL }, 2259, "udp" },
- { "apc-2260", { NULL }, 2260, "tcp" },
- { "apc-2260", { NULL }, 2260, "udp" },
- { "comotionmaster", { NULL }, 2261, "tcp" },
- { "comotionmaster", { NULL }, 2261, "udp" },
- { "comotionback", { NULL }, 2262, "tcp" },
- { "comotionback", { NULL }, 2262, "udp" },
- { "ecwcfg", { NULL }, 2263, "tcp" },
- { "ecwcfg", { NULL }, 2263, "udp" },
- { "apx500api-1", { NULL }, 2264, "tcp" },
- { "apx500api-1", { NULL }, 2264, "udp" },
- { "apx500api-2", { NULL }, 2265, "tcp" },
- { "apx500api-2", { NULL }, 2265, "udp" },
- { "mfserver", { NULL }, 2266, "tcp" },
- { "mfserver", { NULL }, 2266, "udp" },
- { "ontobroker", { NULL }, 2267, "tcp" },
- { "ontobroker", { NULL }, 2267, "udp" },
- { "amt", { NULL }, 2268, "tcp" },
- { "amt", { NULL }, 2268, "udp" },
- { "mikey", { NULL }, 2269, "tcp" },
- { "mikey", { NULL }, 2269, "udp" },
- { "starschool", { NULL }, 2270, "tcp" },
- { "starschool", { NULL }, 2270, "udp" },
- { "mmcals", { NULL }, 2271, "tcp" },
- { "mmcals", { NULL }, 2271, "udp" },
- { "mmcal", { NULL }, 2272, "tcp" },
- { "mmcal", { NULL }, 2272, "udp" },
- { "mysql-im", { NULL }, 2273, "tcp" },
- { "mysql-im", { NULL }, 2273, "udp" },
- { "pcttunnell", { NULL }, 2274, "tcp" },
- { "pcttunnell", { NULL }, 2274, "udp" },
- { "ibridge-data", { NULL }, 2275, "tcp" },
- { "ibridge-data", { NULL }, 2275, "udp" },
- { "ibridge-mgmt", { NULL }, 2276, "tcp" },
- { "ibridge-mgmt", { NULL }, 2276, "udp" },
- { "bluectrlproxy", { NULL }, 2277, "tcp" },
- { "bluectrlproxy", { NULL }, 2277, "udp" },
- { "s3db", { NULL }, 2278, "tcp" },
- { "s3db", { NULL }, 2278, "udp" },
- { "xmquery", { NULL }, 2279, "tcp" },
- { "xmquery", { NULL }, 2279, "udp" },
- { "lnvpoller", { NULL }, 2280, "tcp" },
- { "lnvpoller", { NULL }, 2280, "udp" },
- { "lnvconsole", { NULL }, 2281, "tcp" },
- { "lnvconsole", { NULL }, 2281, "udp" },
- { "lnvalarm", { NULL }, 2282, "tcp" },
- { "lnvalarm", { NULL }, 2282, "udp" },
- { "lnvstatus", { NULL }, 2283, "tcp" },
- { "lnvstatus", { NULL }, 2283, "udp" },
- { "lnvmaps", { NULL }, 2284, "tcp" },
- { "lnvmaps", { NULL }, 2284, "udp" },
- { "lnvmailmon", { NULL }, 2285, "tcp" },
- { "lnvmailmon", { NULL }, 2285, "udp" },
- { "nas-metering", { NULL }, 2286, "tcp" },
- { "nas-metering", { NULL }, 2286, "udp" },
- { "dna", { NULL }, 2287, "tcp" },
- { "dna", { NULL }, 2287, "udp" },
- { "netml", { NULL }, 2288, "tcp" },
- { "netml", { NULL }, 2288, "udp" },
- { "dict-lookup", { NULL }, 2289, "tcp" },
- { "dict-lookup", { NULL }, 2289, "udp" },
- { "sonus-logging", { NULL }, 2290, "tcp" },
- { "sonus-logging", { NULL }, 2290, "udp" },
- { "eapsp", { NULL }, 2291, "tcp" },
- { "eapsp", { NULL }, 2291, "udp" },
- { "mib-streaming", { NULL }, 2292, "tcp" },
- { "mib-streaming", { NULL }, 2292, "udp" },
- { "npdbgmngr", { NULL }, 2293, "tcp" },
- { "npdbgmngr", { NULL }, 2293, "udp" },
- { "konshus-lm", { NULL }, 2294, "tcp" },
- { "konshus-lm", { NULL }, 2294, "udp" },
- { "advant-lm", { NULL }, 2295, "tcp" },
- { "advant-lm", { NULL }, 2295, "udp" },
- { "theta-lm", { NULL }, 2296, "tcp" },
- { "theta-lm", { NULL }, 2296, "udp" },
- { "d2k-datamover1", { NULL }, 2297, "tcp" },
- { "d2k-datamover1", { NULL }, 2297, "udp" },
- { "d2k-datamover2", { NULL }, 2298, "tcp" },
- { "d2k-datamover2", { NULL }, 2298, "udp" },
- { "pc-telecommute", { NULL }, 2299, "tcp" },
- { "pc-telecommute", { NULL }, 2299, "udp" },
- { "cvmmon", { NULL }, 2300, "tcp" },
- { "cvmmon", { NULL }, 2300, "udp" },
- { "cpq-wbem", { NULL }, 2301, "tcp" },
- { "cpq-wbem", { NULL }, 2301, "udp" },
- { "binderysupport", { NULL }, 2302, "tcp" },
- { "binderysupport", { NULL }, 2302, "udp" },
- { "proxy-gateway", { NULL }, 2303, "tcp" },
- { "proxy-gateway", { NULL }, 2303, "udp" },
- { "attachmate-uts", { NULL }, 2304, "tcp" },
- { "attachmate-uts", { NULL }, 2304, "udp" },
- { "mt-scaleserver", { NULL }, 2305, "tcp" },
- { "mt-scaleserver", { NULL }, 2305, "udp" },
- { "tappi-boxnet", { NULL }, 2306, "tcp" },
- { "tappi-boxnet", { NULL }, 2306, "udp" },
- { "pehelp", { NULL }, 2307, "tcp" },
- { "pehelp", { NULL }, 2307, "udp" },
- { "sdhelp", { NULL }, 2308, "tcp" },
- { "sdhelp", { NULL }, 2308, "udp" },
- { "sdserver", { NULL }, 2309, "tcp" },
- { "sdserver", { NULL }, 2309, "udp" },
- { "sdclient", { NULL }, 2310, "tcp" },
- { "sdclient", { NULL }, 2310, "udp" },
- { "messageservice", { NULL }, 2311, "tcp" },
- { "messageservice", { NULL }, 2311, "udp" },
- { "wanscaler", { NULL }, 2312, "tcp" },
- { "wanscaler", { NULL }, 2312, "udp" },
- { "iapp", { NULL }, 2313, "tcp" },
- { "iapp", { NULL }, 2313, "udp" },
- { "cr-websystems", { NULL }, 2314, "tcp" },
- { "cr-websystems", { NULL }, 2314, "udp" },
- { "precise-sft", { NULL }, 2315, "tcp" },
- { "precise-sft", { NULL }, 2315, "udp" },
- { "sent-lm", { NULL }, 2316, "tcp" },
- { "sent-lm", { NULL }, 2316, "udp" },
- { "attachmate-g32", { NULL }, 2317, "tcp" },
- { "attachmate-g32", { NULL }, 2317, "udp" },
- { "cadencecontrol", { NULL }, 2318, "tcp" },
- { "cadencecontrol", { NULL }, 2318, "udp" },
- { "infolibria", { NULL }, 2319, "tcp" },
- { "infolibria", { NULL }, 2319, "udp" },
- { "siebel-ns", { NULL }, 2320, "tcp" },
- { "siebel-ns", { NULL }, 2320, "udp" },
- { "rdlap", { NULL }, 2321, "tcp" },
- { "rdlap", { NULL }, 2321, "udp" },
- { "ofsd", { NULL }, 2322, "tcp" },
- { "ofsd", { NULL }, 2322, "udp" },
- { "3d-nfsd", { NULL }, 2323, "tcp" },
- { "3d-nfsd", { NULL }, 2323, "udp" },
- { "cosmocall", { NULL }, 2324, "tcp" },
- { "cosmocall", { NULL }, 2324, "udp" },
- { "ansysli", { NULL }, 2325, "tcp" },
- { "ansysli", { NULL }, 2325, "udp" },
- { "idcp", { NULL }, 2326, "tcp" },
- { "idcp", { NULL }, 2326, "udp" },
- { "xingcsm", { NULL }, 2327, "tcp" },
- { "xingcsm", { NULL }, 2327, "udp" },
- { "netrix-sftm", { NULL }, 2328, "tcp" },
- { "netrix-sftm", { NULL }, 2328, "udp" },
- { "nvd", { NULL }, 2329, "tcp" },
- { "nvd", { NULL }, 2329, "udp" },
- { "tscchat", { NULL }, 2330, "tcp" },
- { "tscchat", { NULL }, 2330, "udp" },
- { "agentview", { NULL }, 2331, "tcp" },
- { "agentview", { NULL }, 2331, "udp" },
- { "rcc-host", { NULL }, 2332, "tcp" },
- { "rcc-host", { NULL }, 2332, "udp" },
- { "snapp", { NULL }, 2333, "tcp" },
- { "snapp", { NULL }, 2333, "udp" },
- { "ace-client", { NULL }, 2334, "tcp" },
- { "ace-client", { NULL }, 2334, "udp" },
- { "ace-proxy", { NULL }, 2335, "tcp" },
- { "ace-proxy", { NULL }, 2335, "udp" },
- { "appleugcontrol", { NULL }, 2336, "tcp" },
- { "appleugcontrol", { NULL }, 2336, "udp" },
- { "ideesrv", { NULL }, 2337, "tcp" },
- { "ideesrv", { NULL }, 2337, "udp" },
- { "norton-lambert", { NULL }, 2338, "tcp" },
- { "norton-lambert", { NULL }, 2338, "udp" },
- { "3com-webview", { NULL }, 2339, "tcp" },
- { "3com-webview", { NULL }, 2339, "udp" },
- { "wrs_registry", { NULL }, 2340, "tcp" },
- { "wrs_registry", { NULL }, 2340, "udp" },
- { "xiostatus", { NULL }, 2341, "tcp" },
- { "xiostatus", { NULL }, 2341, "udp" },
- { "manage-exec", { NULL }, 2342, "tcp" },
- { "manage-exec", { NULL }, 2342, "udp" },
- { "nati-logos", { NULL }, 2343, "tcp" },
- { "nati-logos", { NULL }, 2343, "udp" },
- { "fcmsys", { NULL }, 2344, "tcp" },
- { "fcmsys", { NULL }, 2344, "udp" },
- { "dbm", { NULL }, 2345, "tcp" },
- { "dbm", { NULL }, 2345, "udp" },
- { "redstorm_join", { NULL }, 2346, "tcp" },
- { "redstorm_join", { NULL }, 2346, "udp" },
- { "redstorm_find", { NULL }, 2347, "tcp" },
- { "redstorm_find", { NULL }, 2347, "udp" },
- { "redstorm_info", { NULL }, 2348, "tcp" },
- { "redstorm_info", { NULL }, 2348, "udp" },
- { "redstorm_diag", { NULL }, 2349, "tcp" },
- { "redstorm_diag", { NULL }, 2349, "udp" },
- { "psbserver", { NULL }, 2350, "tcp" },
- { "psbserver", { NULL }, 2350, "udp" },
- { "psrserver", { NULL }, 2351, "tcp" },
- { "psrserver", { NULL }, 2351, "udp" },
- { "pslserver", { NULL }, 2352, "tcp" },
- { "pslserver", { NULL }, 2352, "udp" },
- { "pspserver", { NULL }, 2353, "tcp" },
- { "pspserver", { NULL }, 2353, "udp" },
- { "psprserver", { NULL }, 2354, "tcp" },
- { "psprserver", { NULL }, 2354, "udp" },
- { "psdbserver", { NULL }, 2355, "tcp" },
- { "psdbserver", { NULL }, 2355, "udp" },
- { "gxtelmd", { NULL }, 2356, "tcp" },
- { "gxtelmd", { NULL }, 2356, "udp" },
- { "unihub-server", { NULL }, 2357, "tcp" },
- { "unihub-server", { NULL }, 2357, "udp" },
- { "futrix", { NULL }, 2358, "tcp" },
- { "futrix", { NULL }, 2358, "udp" },
- { "flukeserver", { NULL }, 2359, "tcp" },
- { "flukeserver", { NULL }, 2359, "udp" },
- { "nexstorindltd", { NULL }, 2360, "tcp" },
- { "nexstorindltd", { NULL }, 2360, "udp" },
- { "tl1", { NULL }, 2361, "tcp" },
- { "tl1", { NULL }, 2361, "udp" },
- { "digiman", { NULL }, 2362, "tcp" },
- { "digiman", { NULL }, 2362, "udp" },
- { "mediacntrlnfsd", { NULL }, 2363, "tcp" },
- { "mediacntrlnfsd", { NULL }, 2363, "udp" },
- { "oi-2000", { NULL }, 2364, "tcp" },
- { "oi-2000", { NULL }, 2364, "udp" },
- { "dbref", { NULL }, 2365, "tcp" },
- { "dbref", { NULL }, 2365, "udp" },
- { "qip-login", { NULL }, 2366, "tcp" },
- { "qip-login", { NULL }, 2366, "udp" },
- { "service-ctrl", { NULL }, 2367, "tcp" },
- { "service-ctrl", { NULL }, 2367, "udp" },
- { "opentable", { NULL }, 2368, "tcp" },
- { "opentable", { NULL }, 2368, "udp" },
- { "l3-hbmon", { NULL }, 2370, "tcp" },
- { "l3-hbmon", { NULL }, 2370, "udp" },
- { "worldwire", { NULL }, 2371, "tcp" },
- { "worldwire", { NULL }, 2371, "udp" },
- { "lanmessenger", { NULL }, 2372, "tcp" },
- { "lanmessenger", { NULL }, 2372, "udp" },
- { "remographlm", { NULL }, 2373, "tcp" },
- { "hydra", { NULL }, 2374, "tcp" },
- { "compaq-https", { NULL }, 2381, "tcp" },
- { "compaq-https", { NULL }, 2381, "udp" },
- { "ms-olap3", { NULL }, 2382, "tcp" },
- { "ms-olap3", { NULL }, 2382, "udp" },
- { "ms-olap4", { NULL }, 2383, "tcp" },
- { "ms-olap4", { NULL }, 2383, "udp" },
- { "sd-request", { NULL }, 2384, "tcp" },
- { "sd-capacity", { NULL }, 2384, "udp" },
- { "sd-data", { NULL }, 2385, "tcp" },
- { "sd-data", { NULL }, 2385, "udp" },
- { "virtualtape", { NULL }, 2386, "tcp" },
- { "virtualtape", { NULL }, 2386, "udp" },
- { "vsamredirector", { NULL }, 2387, "tcp" },
- { "vsamredirector", { NULL }, 2387, "udp" },
- { "mynahautostart", { NULL }, 2388, "tcp" },
- { "mynahautostart", { NULL }, 2388, "udp" },
- { "ovsessionmgr", { NULL }, 2389, "tcp" },
- { "ovsessionmgr", { NULL }, 2389, "udp" },
- { "rsmtp", { NULL }, 2390, "tcp" },
- { "rsmtp", { NULL }, 2390, "udp" },
- { "3com-net-mgmt", { NULL }, 2391, "tcp" },
- { "3com-net-mgmt", { NULL }, 2391, "udp" },
- { "tacticalauth", { NULL }, 2392, "tcp" },
- { "tacticalauth", { NULL }, 2392, "udp" },
- { "ms-olap1", { NULL }, 2393, "tcp" },
- { "ms-olap1", { NULL }, 2393, "udp" },
- { "ms-olap2", { NULL }, 2394, "tcp" },
- { "ms-olap2", { NULL }, 2394, "udp" },
- { "lan900_remote", { NULL }, 2395, "tcp" },
- { "lan900_remote", { NULL }, 2395, "udp" },
- { "wusage", { NULL }, 2396, "tcp" },
- { "wusage", { NULL }, 2396, "udp" },
- { "ncl", { NULL }, 2397, "tcp" },
- { "ncl", { NULL }, 2397, "udp" },
- { "orbiter", { NULL }, 2398, "tcp" },
- { "orbiter", { NULL }, 2398, "udp" },
- { "fmpro-fdal", { NULL }, 2399, "tcp" },
- { "fmpro-fdal", { NULL }, 2399, "udp" },
- { "opequus-server", { NULL }, 2400, "tcp" },
- { "opequus-server", { NULL }, 2400, "udp" },
- { "cvspserver", { NULL }, 2401, "tcp" },
- { "cvspserver", { NULL }, 2401, "udp" },
- { "taskmaster2000", { NULL }, 2402, "tcp" },
- { "taskmaster2000", { NULL }, 2402, "udp" },
- { "taskmaster2000", { NULL }, 2403, "tcp" },
- { "taskmaster2000", { NULL }, 2403, "udp" },
- { "iec-104", { NULL }, 2404, "tcp" },
- { "iec-104", { NULL }, 2404, "udp" },
- { "trc-netpoll", { NULL }, 2405, "tcp" },
- { "trc-netpoll", { NULL }, 2405, "udp" },
- { "jediserver", { NULL }, 2406, "tcp" },
- { "jediserver", { NULL }, 2406, "udp" },
- { "orion", { NULL }, 2407, "tcp" },
- { "orion", { NULL }, 2407, "udp" },
- { "optimanet", { NULL }, 2408, "tcp" },
- { "optimanet", { NULL }, 2408, "udp" },
- { "sns-protocol", { NULL }, 2409, "tcp" },
- { "sns-protocol", { NULL }, 2409, "udp" },
- { "vrts-registry", { NULL }, 2410, "tcp" },
- { "vrts-registry", { NULL }, 2410, "udp" },
- { "netwave-ap-mgmt", { NULL }, 2411, "tcp" },
- { "netwave-ap-mgmt", { NULL }, 2411, "udp" },
- { "cdn", { NULL }, 2412, "tcp" },
- { "cdn", { NULL }, 2412, "udp" },
- { "orion-rmi-reg", { NULL }, 2413, "tcp" },
- { "orion-rmi-reg", { NULL }, 2413, "udp" },
- { "beeyond", { NULL }, 2414, "tcp" },
- { "beeyond", { NULL }, 2414, "udp" },
- { "codima-rtp", { NULL }, 2415, "tcp" },
- { "codima-rtp", { NULL }, 2415, "udp" },
- { "rmtserver", { NULL }, 2416, "tcp" },
- { "rmtserver", { NULL }, 2416, "udp" },
- { "composit-server", { NULL }, 2417, "tcp" },
- { "composit-server", { NULL }, 2417, "udp" },
- { "cas", { NULL }, 2418, "tcp" },
- { "cas", { NULL }, 2418, "udp" },
- { "attachmate-s2s", { NULL }, 2419, "tcp" },
- { "attachmate-s2s", { NULL }, 2419, "udp" },
- { "dslremote-mgmt", { NULL }, 2420, "tcp" },
- { "dslremote-mgmt", { NULL }, 2420, "udp" },
- { "g-talk", { NULL }, 2421, "tcp" },
- { "g-talk", { NULL }, 2421, "udp" },
- { "crmsbits", { NULL }, 2422, "tcp" },
- { "crmsbits", { NULL }, 2422, "udp" },
- { "rnrp", { NULL }, 2423, "tcp" },
- { "rnrp", { NULL }, 2423, "udp" },
- { "kofax-svr", { NULL }, 2424, "tcp" },
- { "kofax-svr", { NULL }, 2424, "udp" },
- { "fjitsuappmgr", { NULL }, 2425, "tcp" },
- { "fjitsuappmgr", { NULL }, 2425, "udp" },
- { "mgcp-gateway", { NULL }, 2427, "tcp" },
- { "mgcp-gateway", { NULL }, 2427, "udp" },
- { "ott", { NULL }, 2428, "tcp" },
- { "ott", { NULL }, 2428, "udp" },
- { "ft-role", { NULL }, 2429, "tcp" },
- { "ft-role", { NULL }, 2429, "udp" },
- { "venus", { NULL }, 2430, "tcp" },
- { "venus", { NULL }, 2430, "udp" },
- { "venus-se", { NULL }, 2431, "tcp" },
- { "venus-se", { NULL }, 2431, "udp" },
- { "codasrv", { NULL }, 2432, "tcp" },
- { "codasrv", { NULL }, 2432, "udp" },
- { "codasrv-se", { NULL }, 2433, "tcp" },
- { "codasrv-se", { NULL }, 2433, "udp" },
- { "pxc-epmap", { NULL }, 2434, "tcp" },
- { "pxc-epmap", { NULL }, 2434, "udp" },
- { "optilogic", { NULL }, 2435, "tcp" },
- { "optilogic", { NULL }, 2435, "udp" },
- { "topx", { NULL }, 2436, "tcp" },
- { "topx", { NULL }, 2436, "udp" },
- { "unicontrol", { NULL }, 2437, "tcp" },
- { "unicontrol", { NULL }, 2437, "udp" },
- { "msp", { NULL }, 2438, "tcp" },
- { "msp", { NULL }, 2438, "udp" },
- { "sybasedbsynch", { NULL }, 2439, "tcp" },
- { "sybasedbsynch", { NULL }, 2439, "udp" },
- { "spearway", { NULL }, 2440, "tcp" },
- { "spearway", { NULL }, 2440, "udp" },
- { "pvsw-inet", { NULL }, 2441, "tcp" },
- { "pvsw-inet", { NULL }, 2441, "udp" },
- { "netangel", { NULL }, 2442, "tcp" },
- { "netangel", { NULL }, 2442, "udp" },
- { "powerclientcsf", { NULL }, 2443, "tcp" },
- { "powerclientcsf", { NULL }, 2443, "udp" },
- { "btpp2sectrans", { NULL }, 2444, "tcp" },
- { "btpp2sectrans", { NULL }, 2444, "udp" },
- { "dtn1", { NULL }, 2445, "tcp" },
- { "dtn1", { NULL }, 2445, "udp" },
- { "bues_service", { NULL }, 2446, "tcp" },
- { "bues_service", { NULL }, 2446, "udp" },
- { "ovwdb", { NULL }, 2447, "tcp" },
- { "ovwdb", { NULL }, 2447, "udp" },
- { "hpppssvr", { NULL }, 2448, "tcp" },
- { "hpppssvr", { NULL }, 2448, "udp" },
- { "ratl", { NULL }, 2449, "tcp" },
- { "ratl", { NULL }, 2449, "udp" },
- { "netadmin", { NULL }, 2450, "tcp" },
- { "netadmin", { NULL }, 2450, "udp" },
- { "netchat", { NULL }, 2451, "tcp" },
- { "netchat", { NULL }, 2451, "udp" },
- { "snifferclient", { NULL }, 2452, "tcp" },
- { "snifferclient", { NULL }, 2452, "udp" },
- { "madge-ltd", { NULL }, 2453, "tcp" },
- { "madge-ltd", { NULL }, 2453, "udp" },
- { "indx-dds", { NULL }, 2454, "tcp" },
- { "indx-dds", { NULL }, 2454, "udp" },
- { "wago-io-system", { NULL }, 2455, "tcp" },
- { "wago-io-system", { NULL }, 2455, "udp" },
- { "altav-remmgt", { NULL }, 2456, "tcp" },
- { "altav-remmgt", { NULL }, 2456, "udp" },
- { "rapido-ip", { NULL }, 2457, "tcp" },
- { "rapido-ip", { NULL }, 2457, "udp" },
- { "griffin", { NULL }, 2458, "tcp" },
- { "griffin", { NULL }, 2458, "udp" },
- { "community", { NULL }, 2459, "tcp" },
- { "community", { NULL }, 2459, "udp" },
- { "ms-theater", { NULL }, 2460, "tcp" },
- { "ms-theater", { NULL }, 2460, "udp" },
- { "qadmifoper", { NULL }, 2461, "tcp" },
- { "qadmifoper", { NULL }, 2461, "udp" },
- { "qadmifevent", { NULL }, 2462, "tcp" },
- { "qadmifevent", { NULL }, 2462, "udp" },
- { "lsi-raid-mgmt", { NULL }, 2463, "tcp" },
- { "lsi-raid-mgmt", { NULL }, 2463, "udp" },
- { "direcpc-si", { NULL }, 2464, "tcp" },
- { "direcpc-si", { NULL }, 2464, "udp" },
- { "lbm", { NULL }, 2465, "tcp" },
- { "lbm", { NULL }, 2465, "udp" },
- { "lbf", { NULL }, 2466, "tcp" },
- { "lbf", { NULL }, 2466, "udp" },
- { "high-criteria", { NULL }, 2467, "tcp" },
- { "high-criteria", { NULL }, 2467, "udp" },
- { "qip-msgd", { NULL }, 2468, "tcp" },
- { "qip-msgd", { NULL }, 2468, "udp" },
- { "mti-tcs-comm", { NULL }, 2469, "tcp" },
- { "mti-tcs-comm", { NULL }, 2469, "udp" },
- { "taskman-port", { NULL }, 2470, "tcp" },
- { "taskman-port", { NULL }, 2470, "udp" },
- { "seaodbc", { NULL }, 2471, "tcp" },
- { "seaodbc", { NULL }, 2471, "udp" },
- { "c3", { NULL }, 2472, "tcp" },
- { "c3", { NULL }, 2472, "udp" },
- { "aker-cdp", { NULL }, 2473, "tcp" },
- { "aker-cdp", { NULL }, 2473, "udp" },
- { "vitalanalysis", { NULL }, 2474, "tcp" },
- { "vitalanalysis", { NULL }, 2474, "udp" },
- { "ace-server", { NULL }, 2475, "tcp" },
- { "ace-server", { NULL }, 2475, "udp" },
- { "ace-svr-prop", { NULL }, 2476, "tcp" },
- { "ace-svr-prop", { NULL }, 2476, "udp" },
- { "ssm-cvs", { NULL }, 2477, "tcp" },
- { "ssm-cvs", { NULL }, 2477, "udp" },
- { "ssm-cssps", { NULL }, 2478, "tcp" },
- { "ssm-cssps", { NULL }, 2478, "udp" },
- { "ssm-els", { NULL }, 2479, "tcp" },
- { "ssm-els", { NULL }, 2479, "udp" },
- { "powerexchange", { NULL }, 2480, "tcp" },
- { "powerexchange", { NULL }, 2480, "udp" },
- { "giop", { NULL }, 2481, "tcp" },
- { "giop", { NULL }, 2481, "udp" },
- { "giop-ssl", { NULL }, 2482, "tcp" },
- { "giop-ssl", { NULL }, 2482, "udp" },
- { "ttc", { NULL }, 2483, "tcp" },
- { "ttc", { NULL }, 2483, "udp" },
- { "ttc-ssl", { NULL }, 2484, "tcp" },
- { "ttc-ssl", { NULL }, 2484, "udp" },
- { "netobjects1", { NULL }, 2485, "tcp" },
- { "netobjects1", { NULL }, 2485, "udp" },
- { "netobjects2", { NULL }, 2486, "tcp" },
- { "netobjects2", { NULL }, 2486, "udp" },
- { "pns", { NULL }, 2487, "tcp" },
- { "pns", { NULL }, 2487, "udp" },
- { "moy-corp", { NULL }, 2488, "tcp" },
- { "moy-corp", { NULL }, 2488, "udp" },
- { "tsilb", { NULL }, 2489, "tcp" },
- { "tsilb", { NULL }, 2489, "udp" },
- { "qip-qdhcp", { NULL }, 2490, "tcp" },
- { "qip-qdhcp", { NULL }, 2490, "udp" },
- { "conclave-cpp", { NULL }, 2491, "tcp" },
- { "conclave-cpp", { NULL }, 2491, "udp" },
- { "groove", { NULL }, 2492, "tcp" },
- { "groove", { NULL }, 2492, "udp" },
- { "talarian-mqs", { NULL }, 2493, "tcp" },
- { "talarian-mqs", { NULL }, 2493, "udp" },
- { "bmc-ar", { NULL }, 2494, "tcp" },
- { "bmc-ar", { NULL }, 2494, "udp" },
- { "fast-rem-serv", { NULL }, 2495, "tcp" },
- { "fast-rem-serv", { NULL }, 2495, "udp" },
- { "dirgis", { NULL }, 2496, "tcp" },
- { "dirgis", { NULL }, 2496, "udp" },
- { "quaddb", { NULL }, 2497, "tcp" },
- { "quaddb", { NULL }, 2497, "udp" },
- { "odn-castraq", { NULL }, 2498, "tcp" },
- { "odn-castraq", { NULL }, 2498, "udp" },
- { "unicontrol", { NULL }, 2499, "tcp" },
- { "unicontrol", { NULL }, 2499, "udp" },
- { "rtsserv", { NULL }, 2500, "tcp" },
- { "rtsserv", { NULL }, 2500, "udp" },
- { "rtsclient", { NULL }, 2501, "tcp" },
- { "rtsclient", { NULL }, 2501, "udp" },
- { "kentrox-prot", { NULL }, 2502, "tcp" },
- { "kentrox-prot", { NULL }, 2502, "udp" },
- { "nms-dpnss", { NULL }, 2503, "tcp" },
- { "nms-dpnss", { NULL }, 2503, "udp" },
- { "wlbs", { NULL }, 2504, "tcp" },
- { "wlbs", { NULL }, 2504, "udp" },
- { "ppcontrol", { NULL }, 2505, "tcp" },
- { "ppcontrol", { NULL }, 2505, "udp" },
- { "jbroker", { NULL }, 2506, "tcp" },
- { "jbroker", { NULL }, 2506, "udp" },
- { "spock", { NULL }, 2507, "tcp" },
- { "spock", { NULL }, 2507, "udp" },
- { "jdatastore", { NULL }, 2508, "tcp" },
- { "jdatastore", { NULL }, 2508, "udp" },
- { "fjmpss", { NULL }, 2509, "tcp" },
- { "fjmpss", { NULL }, 2509, "udp" },
- { "fjappmgrbulk", { NULL }, 2510, "tcp" },
- { "fjappmgrbulk", { NULL }, 2510, "udp" },
- { "metastorm", { NULL }, 2511, "tcp" },
- { "metastorm", { NULL }, 2511, "udp" },
- { "citrixima", { NULL }, 2512, "tcp" },
- { "citrixima", { NULL }, 2512, "udp" },
- { "citrixadmin", { NULL }, 2513, "tcp" },
- { "citrixadmin", { NULL }, 2513, "udp" },
- { "facsys-ntp", { NULL }, 2514, "tcp" },
- { "facsys-ntp", { NULL }, 2514, "udp" },
- { "facsys-router", { NULL }, 2515, "tcp" },
- { "facsys-router", { NULL }, 2515, "udp" },
- { "maincontrol", { NULL }, 2516, "tcp" },
- { "maincontrol", { NULL }, 2516, "udp" },
- { "call-sig-trans", { NULL }, 2517, "tcp" },
- { "call-sig-trans", { NULL }, 2517, "udp" },
- { "willy", { NULL }, 2518, "tcp" },
- { "willy", { NULL }, 2518, "udp" },
- { "globmsgsvc", { NULL }, 2519, "tcp" },
- { "globmsgsvc", { NULL }, 2519, "udp" },
- { "pvsw", { NULL }, 2520, "tcp" },
- { "pvsw", { NULL }, 2520, "udp" },
- { "adaptecmgr", { NULL }, 2521, "tcp" },
- { "adaptecmgr", { NULL }, 2521, "udp" },
- { "windb", { NULL }, 2522, "tcp" },
- { "windb", { NULL }, 2522, "udp" },
- { "qke-llc-v3", { NULL }, 2523, "tcp" },
- { "qke-llc-v3", { NULL }, 2523, "udp" },
- { "optiwave-lm", { NULL }, 2524, "tcp" },
- { "optiwave-lm", { NULL }, 2524, "udp" },
- { "ms-v-worlds", { NULL }, 2525, "tcp" },
- { "ms-v-worlds", { NULL }, 2525, "udp" },
- { "ema-sent-lm", { NULL }, 2526, "tcp" },
- { "ema-sent-lm", { NULL }, 2526, "udp" },
- { "iqserver", { NULL }, 2527, "tcp" },
- { "iqserver", { NULL }, 2527, "udp" },
- { "ncr_ccl", { NULL }, 2528, "tcp" },
- { "ncr_ccl", { NULL }, 2528, "udp" },
- { "utsftp", { NULL }, 2529, "tcp" },
- { "utsftp", { NULL }, 2529, "udp" },
- { "vrcommerce", { NULL }, 2530, "tcp" },
- { "vrcommerce", { NULL }, 2530, "udp" },
- { "ito-e-gui", { NULL }, 2531, "tcp" },
- { "ito-e-gui", { NULL }, 2531, "udp" },
- { "ovtopmd", { NULL }, 2532, "tcp" },
- { "ovtopmd", { NULL }, 2532, "udp" },
- { "snifferserver", { NULL }, 2533, "tcp" },
- { "snifferserver", { NULL }, 2533, "udp" },
- { "combox-web-acc", { NULL }, 2534, "tcp" },
- { "combox-web-acc", { NULL }, 2534, "udp" },
- { "madcap", { NULL }, 2535, "tcp" },
- { "madcap", { NULL }, 2535, "udp" },
- { "btpp2audctr1", { NULL }, 2536, "tcp" },
- { "btpp2audctr1", { NULL }, 2536, "udp" },
- { "upgrade", { NULL }, 2537, "tcp" },
- { "upgrade", { NULL }, 2537, "udp" },
- { "vnwk-prapi", { NULL }, 2538, "tcp" },
- { "vnwk-prapi", { NULL }, 2538, "udp" },
- { "vsiadmin", { NULL }, 2539, "tcp" },
- { "vsiadmin", { NULL }, 2539, "udp" },
- { "lonworks", { NULL }, 2540, "tcp" },
- { "lonworks", { NULL }, 2540, "udp" },
- { "lonworks2", { NULL }, 2541, "tcp" },
- { "lonworks2", { NULL }, 2541, "udp" },
- { "udrawgraph", { NULL }, 2542, "tcp" },
- { "udrawgraph", { NULL }, 2542, "udp" },
- { "reftek", { NULL }, 2543, "tcp" },
- { "reftek", { NULL }, 2543, "udp" },
- { "novell-zen", { NULL }, 2544, "tcp" },
- { "novell-zen", { NULL }, 2544, "udp" },
- { "sis-emt", { NULL }, 2545, "tcp" },
- { "sis-emt", { NULL }, 2545, "udp" },
- { "vytalvaultbrtp", { NULL }, 2546, "tcp" },
- { "vytalvaultbrtp", { NULL }, 2546, "udp" },
- { "vytalvaultvsmp", { NULL }, 2547, "tcp" },
- { "vytalvaultvsmp", { NULL }, 2547, "udp" },
- { "vytalvaultpipe", { NULL }, 2548, "tcp" },
- { "vytalvaultpipe", { NULL }, 2548, "udp" },
- { "ipass", { NULL }, 2549, "tcp" },
- { "ipass", { NULL }, 2549, "udp" },
- { "ads", { NULL }, 2550, "tcp" },
- { "ads", { NULL }, 2550, "udp" },
- { "isg-uda-server", { NULL }, 2551, "tcp" },
- { "isg-uda-server", { NULL }, 2551, "udp" },
- { "call-logging", { NULL }, 2552, "tcp" },
- { "call-logging", { NULL }, 2552, "udp" },
- { "efidiningport", { NULL }, 2553, "tcp" },
- { "efidiningport", { NULL }, 2553, "udp" },
- { "vcnet-link-v10", { NULL }, 2554, "tcp" },
- { "vcnet-link-v10", { NULL }, 2554, "udp" },
- { "compaq-wcp", { NULL }, 2555, "tcp" },
- { "compaq-wcp", { NULL }, 2555, "udp" },
- { "nicetec-nmsvc", { NULL }, 2556, "tcp" },
- { "nicetec-nmsvc", { NULL }, 2556, "udp" },
- { "nicetec-mgmt", { NULL }, 2557, "tcp" },
- { "nicetec-mgmt", { NULL }, 2557, "udp" },
- { "pclemultimedia", { NULL }, 2558, "tcp" },
- { "pclemultimedia", { NULL }, 2558, "udp" },
- { "lstp", { NULL }, 2559, "tcp" },
- { "lstp", { NULL }, 2559, "udp" },
- { "labrat", { NULL }, 2560, "tcp" },
- { "labrat", { NULL }, 2560, "udp" },
- { "mosaixcc", { NULL }, 2561, "tcp" },
- { "mosaixcc", { NULL }, 2561, "udp" },
- { "delibo", { NULL }, 2562, "tcp" },
- { "delibo", { NULL }, 2562, "udp" },
- { "cti-redwood", { NULL }, 2563, "tcp" },
- { "cti-redwood", { NULL }, 2563, "udp" },
- { "hp-3000-telnet", { NULL }, 2564, "tcp" },
- { "coord-svr", { NULL }, 2565, "tcp" },
- { "coord-svr", { NULL }, 2565, "udp" },
- { "pcs-pcw", { NULL }, 2566, "tcp" },
- { "pcs-pcw", { NULL }, 2566, "udp" },
- { "clp", { NULL }, 2567, "tcp" },
- { "clp", { NULL }, 2567, "udp" },
- { "spamtrap", { NULL }, 2568, "tcp" },
- { "spamtrap", { NULL }, 2568, "udp" },
- { "sonuscallsig", { NULL }, 2569, "tcp" },
- { "sonuscallsig", { NULL }, 2569, "udp" },
- { "hs-port", { NULL }, 2570, "tcp" },
- { "hs-port", { NULL }, 2570, "udp" },
- { "cecsvc", { NULL }, 2571, "tcp" },
- { "cecsvc", { NULL }, 2571, "udp" },
- { "ibp", { NULL }, 2572, "tcp" },
- { "ibp", { NULL }, 2572, "udp" },
- { "trustestablish", { NULL }, 2573, "tcp" },
- { "trustestablish", { NULL }, 2573, "udp" },
- { "blockade-bpsp", { NULL }, 2574, "tcp" },
- { "blockade-bpsp", { NULL }, 2574, "udp" },
- { "hl7", { NULL }, 2575, "tcp" },
- { "hl7", { NULL }, 2575, "udp" },
- { "tclprodebugger", { NULL }, 2576, "tcp" },
- { "tclprodebugger", { NULL }, 2576, "udp" },
- { "scipticslsrvr", { NULL }, 2577, "tcp" },
- { "scipticslsrvr", { NULL }, 2577, "udp" },
- { "rvs-isdn-dcp", { NULL }, 2578, "tcp" },
- { "rvs-isdn-dcp", { NULL }, 2578, "udp" },
- { "mpfoncl", { NULL }, 2579, "tcp" },
- { "mpfoncl", { NULL }, 2579, "udp" },
- { "tributary", { NULL }, 2580, "tcp" },
- { "tributary", { NULL }, 2580, "udp" },
- { "argis-te", { NULL }, 2581, "tcp" },
- { "argis-te", { NULL }, 2581, "udp" },
- { "argis-ds", { NULL }, 2582, "tcp" },
- { "argis-ds", { NULL }, 2582, "udp" },
- { "mon", { NULL }, 2583, "tcp" },
- { "mon", { NULL }, 2583, "udp" },
- { "cyaserv", { NULL }, 2584, "tcp" },
- { "cyaserv", { NULL }, 2584, "udp" },
- { "netx-server", { NULL }, 2585, "tcp" },
- { "netx-server", { NULL }, 2585, "udp" },
- { "netx-agent", { NULL }, 2586, "tcp" },
- { "netx-agent", { NULL }, 2586, "udp" },
- { "masc", { NULL }, 2587, "tcp" },
- { "masc", { NULL }, 2587, "udp" },
- { "privilege", { NULL }, 2588, "tcp" },
- { "privilege", { NULL }, 2588, "udp" },
- { "quartus-tcl", { NULL }, 2589, "tcp" },
- { "quartus-tcl", { NULL }, 2589, "udp" },
- { "idotdist", { NULL }, 2590, "tcp" },
- { "idotdist", { NULL }, 2590, "udp" },
- { "maytagshuffle", { NULL }, 2591, "tcp" },
- { "maytagshuffle", { NULL }, 2591, "udp" },
- { "netrek", { NULL }, 2592, "tcp" },
- { "netrek", { NULL }, 2592, "udp" },
- { "mns-mail", { NULL }, 2593, "tcp" },
- { "mns-mail", { NULL }, 2593, "udp" },
- { "dts", { NULL }, 2594, "tcp" },
- { "dts", { NULL }, 2594, "udp" },
- { "worldfusion1", { NULL }, 2595, "tcp" },
- { "worldfusion1", { NULL }, 2595, "udp" },
- { "worldfusion2", { NULL }, 2596, "tcp" },
- { "worldfusion2", { NULL }, 2596, "udp" },
- { "homesteadglory", { NULL }, 2597, "tcp" },
- { "homesteadglory", { NULL }, 2597, "udp" },
- { "citriximaclient", { NULL }, 2598, "tcp" },
- { "citriximaclient", { NULL }, 2598, "udp" },
- { "snapd", { NULL }, 2599, "tcp" },
- { "snapd", { NULL }, 2599, "udp" },
- { "hpstgmgr", { NULL }, 2600, "tcp" },
- { "hpstgmgr", { NULL }, 2600, "udp" },
- { "discp-client", { NULL }, 2601, "tcp" },
- { "discp-client", { NULL }, 2601, "udp" },
- { "discp-server", { NULL }, 2602, "tcp" },
- { "discp-server", { NULL }, 2602, "udp" },
- { "servicemeter", { NULL }, 2603, "tcp" },
- { "servicemeter", { NULL }, 2603, "udp" },
- { "nsc-ccs", { NULL }, 2604, "tcp" },
- { "nsc-ccs", { NULL }, 2604, "udp" },
- { "nsc-posa", { NULL }, 2605, "tcp" },
- { "nsc-posa", { NULL }, 2605, "udp" },
- { "netmon", { NULL }, 2606, "tcp" },
- { "netmon", { NULL }, 2606, "udp" },
- { "connection", { NULL }, 2607, "tcp" },
- { "connection", { NULL }, 2607, "udp" },
- { "wag-service", { NULL }, 2608, "tcp" },
- { "wag-service", { NULL }, 2608, "udp" },
- { "system-monitor", { NULL }, 2609, "tcp" },
- { "system-monitor", { NULL }, 2609, "udp" },
- { "versa-tek", { NULL }, 2610, "tcp" },
- { "versa-tek", { NULL }, 2610, "udp" },
- { "lionhead", { NULL }, 2611, "tcp" },
- { "lionhead", { NULL }, 2611, "udp" },
- { "qpasa-agent", { NULL }, 2612, "tcp" },
- { "qpasa-agent", { NULL }, 2612, "udp" },
- { "smntubootstrap", { NULL }, 2613, "tcp" },
- { "smntubootstrap", { NULL }, 2613, "udp" },
- { "neveroffline", { NULL }, 2614, "tcp" },
- { "neveroffline", { NULL }, 2614, "udp" },
- { "firepower", { NULL }, 2615, "tcp" },
- { "firepower", { NULL }, 2615, "udp" },
- { "appswitch-emp", { NULL }, 2616, "tcp" },
- { "appswitch-emp", { NULL }, 2616, "udp" },
- { "cmadmin", { NULL }, 2617, "tcp" },
- { "cmadmin", { NULL }, 2617, "udp" },
- { "priority-e-com", { NULL }, 2618, "tcp" },
- { "priority-e-com", { NULL }, 2618, "udp" },
- { "bruce", { NULL }, 2619, "tcp" },
- { "bruce", { NULL }, 2619, "udp" },
- { "lpsrecommender", { NULL }, 2620, "tcp" },
- { "lpsrecommender", { NULL }, 2620, "udp" },
- { "miles-apart", { NULL }, 2621, "tcp" },
- { "miles-apart", { NULL }, 2621, "udp" },
- { "metricadbc", { NULL }, 2622, "tcp" },
- { "metricadbc", { NULL }, 2622, "udp" },
- { "lmdp", { NULL }, 2623, "tcp" },
- { "lmdp", { NULL }, 2623, "udp" },
- { "aria", { NULL }, 2624, "tcp" },
- { "aria", { NULL }, 2624, "udp" },
- { "blwnkl-port", { NULL }, 2625, "tcp" },
- { "blwnkl-port", { NULL }, 2625, "udp" },
- { "gbjd816", { NULL }, 2626, "tcp" },
- { "gbjd816", { NULL }, 2626, "udp" },
- { "moshebeeri", { NULL }, 2627, "tcp" },
- { "moshebeeri", { NULL }, 2627, "udp" },
- { "dict", { NULL }, 2628, "tcp" },
- { "dict", { NULL }, 2628, "udp" },
- { "sitaraserver", { NULL }, 2629, "tcp" },
- { "sitaraserver", { NULL }, 2629, "udp" },
- { "sitaramgmt", { NULL }, 2630, "tcp" },
- { "sitaramgmt", { NULL }, 2630, "udp" },
- { "sitaradir", { NULL }, 2631, "tcp" },
- { "sitaradir", { NULL }, 2631, "udp" },
- { "irdg-post", { NULL }, 2632, "tcp" },
- { "irdg-post", { NULL }, 2632, "udp" },
- { "interintelli", { NULL }, 2633, "tcp" },
- { "interintelli", { NULL }, 2633, "udp" },
- { "pk-electronics", { NULL }, 2634, "tcp" },
- { "pk-electronics", { NULL }, 2634, "udp" },
- { "backburner", { NULL }, 2635, "tcp" },
- { "backburner", { NULL }, 2635, "udp" },
- { "solve", { NULL }, 2636, "tcp" },
- { "solve", { NULL }, 2636, "udp" },
- { "imdocsvc", { NULL }, 2637, "tcp" },
- { "imdocsvc", { NULL }, 2637, "udp" },
- { "sybaseanywhere", { NULL }, 2638, "tcp" },
- { "sybaseanywhere", { NULL }, 2638, "udp" },
- { "aminet", { NULL }, 2639, "tcp" },
- { "aminet", { NULL }, 2639, "udp" },
- { "sai_sentlm", { NULL }, 2640, "tcp" },
- { "sai_sentlm", { NULL }, 2640, "udp" },
- { "hdl-srv", { NULL }, 2641, "tcp" },
- { "hdl-srv", { NULL }, 2641, "udp" },
- { "tragic", { NULL }, 2642, "tcp" },
- { "tragic", { NULL }, 2642, "udp" },
- { "gte-samp", { NULL }, 2643, "tcp" },
- { "gte-samp", { NULL }, 2643, "udp" },
- { "travsoft-ipx-t", { NULL }, 2644, "tcp" },
- { "travsoft-ipx-t", { NULL }, 2644, "udp" },
- { "novell-ipx-cmd", { NULL }, 2645, "tcp" },
- { "novell-ipx-cmd", { NULL }, 2645, "udp" },
- { "and-lm", { NULL }, 2646, "tcp" },
- { "and-lm", { NULL }, 2646, "udp" },
- { "syncserver", { NULL }, 2647, "tcp" },
- { "syncserver", { NULL }, 2647, "udp" },
- { "upsnotifyprot", { NULL }, 2648, "tcp" },
- { "upsnotifyprot", { NULL }, 2648, "udp" },
- { "vpsipport", { NULL }, 2649, "tcp" },
- { "vpsipport", { NULL }, 2649, "udp" },
- { "eristwoguns", { NULL }, 2650, "tcp" },
- { "eristwoguns", { NULL }, 2650, "udp" },
- { "ebinsite", { NULL }, 2651, "tcp" },
- { "ebinsite", { NULL }, 2651, "udp" },
- { "interpathpanel", { NULL }, 2652, "tcp" },
- { "interpathpanel", { NULL }, 2652, "udp" },
- { "sonus", { NULL }, 2653, "tcp" },
- { "sonus", { NULL }, 2653, "udp" },
- { "corel_vncadmin", { NULL }, 2654, "tcp" },
- { "corel_vncadmin", { NULL }, 2654, "udp" },
- { "unglue", { NULL }, 2655, "tcp" },
- { "unglue", { NULL }, 2655, "udp" },
- { "kana", { NULL }, 2656, "tcp" },
- { "kana", { NULL }, 2656, "udp" },
- { "sns-dispatcher", { NULL }, 2657, "tcp" },
- { "sns-dispatcher", { NULL }, 2657, "udp" },
- { "sns-admin", { NULL }, 2658, "tcp" },
- { "sns-admin", { NULL }, 2658, "udp" },
- { "sns-query", { NULL }, 2659, "tcp" },
- { "sns-query", { NULL }, 2659, "udp" },
- { "gcmonitor", { NULL }, 2660, "tcp" },
- { "gcmonitor", { NULL }, 2660, "udp" },
- { "olhost", { NULL }, 2661, "tcp" },
- { "olhost", { NULL }, 2661, "udp" },
- { "bintec-capi", { NULL }, 2662, "tcp" },
- { "bintec-capi", { NULL }, 2662, "udp" },
- { "bintec-tapi", { NULL }, 2663, "tcp" },
- { "bintec-tapi", { NULL }, 2663, "udp" },
- { "patrol-mq-gm", { NULL }, 2664, "tcp" },
- { "patrol-mq-gm", { NULL }, 2664, "udp" },
- { "patrol-mq-nm", { NULL }, 2665, "tcp" },
- { "patrol-mq-nm", { NULL }, 2665, "udp" },
- { "extensis", { NULL }, 2666, "tcp" },
- { "extensis", { NULL }, 2666, "udp" },
- { "alarm-clock-s", { NULL }, 2667, "tcp" },
- { "alarm-clock-s", { NULL }, 2667, "udp" },
- { "alarm-clock-c", { NULL }, 2668, "tcp" },
- { "alarm-clock-c", { NULL }, 2668, "udp" },
- { "toad", { NULL }, 2669, "tcp" },
- { "toad", { NULL }, 2669, "udp" },
- { "tve-announce", { NULL }, 2670, "tcp" },
- { "tve-announce", { NULL }, 2670, "udp" },
- { "newlixreg", { NULL }, 2671, "tcp" },
- { "newlixreg", { NULL }, 2671, "udp" },
- { "nhserver", { NULL }, 2672, "tcp" },
- { "nhserver", { NULL }, 2672, "udp" },
- { "firstcall42", { NULL }, 2673, "tcp" },
- { "firstcall42", { NULL }, 2673, "udp" },
- { "ewnn", { NULL }, 2674, "tcp" },
- { "ewnn", { NULL }, 2674, "udp" },
- { "ttc-etap", { NULL }, 2675, "tcp" },
- { "ttc-etap", { NULL }, 2675, "udp" },
- { "simslink", { NULL }, 2676, "tcp" },
- { "simslink", { NULL }, 2676, "udp" },
- { "gadgetgate1way", { NULL }, 2677, "tcp" },
- { "gadgetgate1way", { NULL }, 2677, "udp" },
- { "gadgetgate2way", { NULL }, 2678, "tcp" },
- { "gadgetgate2way", { NULL }, 2678, "udp" },
- { "syncserverssl", { NULL }, 2679, "tcp" },
- { "syncserverssl", { NULL }, 2679, "udp" },
- { "pxc-sapxom", { NULL }, 2680, "tcp" },
- { "pxc-sapxom", { NULL }, 2680, "udp" },
- { "mpnjsomb", { NULL }, 2681, "tcp" },
- { "mpnjsomb", { NULL }, 2681, "udp" },
- { "ncdloadbalance", { NULL }, 2683, "tcp" },
- { "ncdloadbalance", { NULL }, 2683, "udp" },
- { "mpnjsosv", { NULL }, 2684, "tcp" },
- { "mpnjsosv", { NULL }, 2684, "udp" },
- { "mpnjsocl", { NULL }, 2685, "tcp" },
- { "mpnjsocl", { NULL }, 2685, "udp" },
- { "mpnjsomg", { NULL }, 2686, "tcp" },
- { "mpnjsomg", { NULL }, 2686, "udp" },
- { "pq-lic-mgmt", { NULL }, 2687, "tcp" },
- { "pq-lic-mgmt", { NULL }, 2687, "udp" },
- { "md-cg-http", { NULL }, 2688, "tcp" },
- { "md-cg-http", { NULL }, 2688, "udp" },
- { "fastlynx", { NULL }, 2689, "tcp" },
- { "fastlynx", { NULL }, 2689, "udp" },
- { "hp-nnm-data", { NULL }, 2690, "tcp" },
- { "hp-nnm-data", { NULL }, 2690, "udp" },
- { "itinternet", { NULL }, 2691, "tcp" },
- { "itinternet", { NULL }, 2691, "udp" },
- { "admins-lms", { NULL }, 2692, "tcp" },
- { "admins-lms", { NULL }, 2692, "udp" },
- { "pwrsevent", { NULL }, 2694, "tcp" },
- { "pwrsevent", { NULL }, 2694, "udp" },
- { "vspread", { NULL }, 2695, "tcp" },
- { "vspread", { NULL }, 2695, "udp" },
- { "unifyadmin", { NULL }, 2696, "tcp" },
- { "unifyadmin", { NULL }, 2696, "udp" },
- { "oce-snmp-trap", { NULL }, 2697, "tcp" },
- { "oce-snmp-trap", { NULL }, 2697, "udp" },
- { "mck-ivpip", { NULL }, 2698, "tcp" },
- { "mck-ivpip", { NULL }, 2698, "udp" },
- { "csoft-plusclnt", { NULL }, 2699, "tcp" },
- { "csoft-plusclnt", { NULL }, 2699, "udp" },
- { "tqdata", { NULL }, 2700, "tcp" },
- { "tqdata", { NULL }, 2700, "udp" },
- { "sms-rcinfo", { NULL }, 2701, "tcp" },
- { "sms-rcinfo", { NULL }, 2701, "udp" },
- { "sms-xfer", { NULL }, 2702, "tcp" },
- { "sms-xfer", { NULL }, 2702, "udp" },
- { "sms-chat", { NULL }, 2703, "tcp" },
- { "sms-chat", { NULL }, 2703, "udp" },
- { "sms-remctrl", { NULL }, 2704, "tcp" },
- { "sms-remctrl", { NULL }, 2704, "udp" },
- { "sds-admin", { NULL }, 2705, "tcp" },
- { "sds-admin", { NULL }, 2705, "udp" },
- { "ncdmirroring", { NULL }, 2706, "tcp" },
- { "ncdmirroring", { NULL }, 2706, "udp" },
- { "emcsymapiport", { NULL }, 2707, "tcp" },
- { "emcsymapiport", { NULL }, 2707, "udp" },
- { "banyan-net", { NULL }, 2708, "tcp" },
- { "banyan-net", { NULL }, 2708, "udp" },
- { "supermon", { NULL }, 2709, "tcp" },
- { "supermon", { NULL }, 2709, "udp" },
- { "sso-service", { NULL }, 2710, "tcp" },
- { "sso-service", { NULL }, 2710, "udp" },
- { "sso-control", { NULL }, 2711, "tcp" },
- { "sso-control", { NULL }, 2711, "udp" },
- { "aocp", { NULL }, 2712, "tcp" },
- { "aocp", { NULL }, 2712, "udp" },
- { "raventbs", { NULL }, 2713, "tcp" },
- { "raventbs", { NULL }, 2713, "udp" },
- { "raventdm", { NULL }, 2714, "tcp" },
- { "raventdm", { NULL }, 2714, "udp" },
- { "hpstgmgr2", { NULL }, 2715, "tcp" },
- { "hpstgmgr2", { NULL }, 2715, "udp" },
- { "inova-ip-disco", { NULL }, 2716, "tcp" },
- { "inova-ip-disco", { NULL }, 2716, "udp" },
- { "pn-requester", { NULL }, 2717, "tcp" },
- { "pn-requester", { NULL }, 2717, "udp" },
- { "pn-requester2", { NULL }, 2718, "tcp" },
- { "pn-requester2", { NULL }, 2718, "udp" },
- { "scan-change", { NULL }, 2719, "tcp" },
- { "scan-change", { NULL }, 2719, "udp" },
- { "wkars", { NULL }, 2720, "tcp" },
- { "wkars", { NULL }, 2720, "udp" },
- { "smart-diagnose", { NULL }, 2721, "tcp" },
- { "smart-diagnose", { NULL }, 2721, "udp" },
- { "proactivesrvr", { NULL }, 2722, "tcp" },
- { "proactivesrvr", { NULL }, 2722, "udp" },
- { "watchdog-nt", { NULL }, 2723, "tcp" },
- { "watchdog-nt", { NULL }, 2723, "udp" },
- { "qotps", { NULL }, 2724, "tcp" },
- { "qotps", { NULL }, 2724, "udp" },
- { "msolap-ptp2", { NULL }, 2725, "tcp" },
- { "msolap-ptp2", { NULL }, 2725, "udp" },
- { "tams", { NULL }, 2726, "tcp" },
- { "tams", { NULL }, 2726, "udp" },
- { "mgcp-callagent", { NULL }, 2727, "tcp" },
- { "mgcp-callagent", { NULL }, 2727, "udp" },
- { "sqdr", { NULL }, 2728, "tcp" },
- { "sqdr", { NULL }, 2728, "udp" },
- { "tcim-control", { NULL }, 2729, "tcp" },
- { "tcim-control", { NULL }, 2729, "udp" },
- { "nec-raidplus", { NULL }, 2730, "tcp" },
- { "nec-raidplus", { NULL }, 2730, "udp" },
- { "fyre-messanger", { NULL }, 2731, "tcp" },
- { "fyre-messanger", { NULL }, 2731, "udp" },
- { "g5m", { NULL }, 2732, "tcp" },
- { "g5m", { NULL }, 2732, "udp" },
- { "signet-ctf", { NULL }, 2733, "tcp" },
- { "signet-ctf", { NULL }, 2733, "udp" },
- { "ccs-software", { NULL }, 2734, "tcp" },
- { "ccs-software", { NULL }, 2734, "udp" },
- { "netiq-mc", { NULL }, 2735, "tcp" },
- { "netiq-mc", { NULL }, 2735, "udp" },
- { "radwiz-nms-srv", { NULL }, 2736, "tcp" },
- { "radwiz-nms-srv", { NULL }, 2736, "udp" },
- { "srp-feedback", { NULL }, 2737, "tcp" },
- { "srp-feedback", { NULL }, 2737, "udp" },
- { "ndl-tcp-ois-gw", { NULL }, 2738, "tcp" },
- { "ndl-tcp-ois-gw", { NULL }, 2738, "udp" },
- { "tn-timing", { NULL }, 2739, "tcp" },
- { "tn-timing", { NULL }, 2739, "udp" },
- { "alarm", { NULL }, 2740, "tcp" },
- { "alarm", { NULL }, 2740, "udp" },
- { "tsb", { NULL }, 2741, "tcp" },
- { "tsb", { NULL }, 2741, "udp" },
- { "tsb2", { NULL }, 2742, "tcp" },
- { "tsb2", { NULL }, 2742, "udp" },
- { "murx", { NULL }, 2743, "tcp" },
- { "murx", { NULL }, 2743, "udp" },
- { "honyaku", { NULL }, 2744, "tcp" },
- { "honyaku", { NULL }, 2744, "udp" },
- { "urbisnet", { NULL }, 2745, "tcp" },
- { "urbisnet", { NULL }, 2745, "udp" },
- { "cpudpencap", { NULL }, 2746, "tcp" },
- { "cpudpencap", { NULL }, 2746, "udp" },
- { "fjippol-swrly", { NULL }, 2747, "tcp" },
- { "fjippol-swrly", { NULL }, 2747, "udp" },
- { "fjippol-polsvr", { NULL }, 2748, "tcp" },
- { "fjippol-polsvr", { NULL }, 2748, "udp" },
- { "fjippol-cnsl", { NULL }, 2749, "tcp" },
- { "fjippol-cnsl", { NULL }, 2749, "udp" },
- { "fjippol-port1", { NULL }, 2750, "tcp" },
- { "fjippol-port1", { NULL }, 2750, "udp" },
- { "fjippol-port2", { NULL }, 2751, "tcp" },
- { "fjippol-port2", { NULL }, 2751, "udp" },
- { "rsisysaccess", { NULL }, 2752, "tcp" },
- { "rsisysaccess", { NULL }, 2752, "udp" },
- { "de-spot", { NULL }, 2753, "tcp" },
- { "de-spot", { NULL }, 2753, "udp" },
- { "apollo-cc", { NULL }, 2754, "tcp" },
- { "apollo-cc", { NULL }, 2754, "udp" },
- { "expresspay", { NULL }, 2755, "tcp" },
- { "expresspay", { NULL }, 2755, "udp" },
- { "simplement-tie", { NULL }, 2756, "tcp" },
- { "simplement-tie", { NULL }, 2756, "udp" },
- { "cnrp", { NULL }, 2757, "tcp" },
- { "cnrp", { NULL }, 2757, "udp" },
- { "apollo-status", { NULL }, 2758, "tcp" },
- { "apollo-status", { NULL }, 2758, "udp" },
- { "apollo-gms", { NULL }, 2759, "tcp" },
- { "apollo-gms", { NULL }, 2759, "udp" },
- { "sabams", { NULL }, 2760, "tcp" },
- { "sabams", { NULL }, 2760, "udp" },
- { "dicom-iscl", { NULL }, 2761, "tcp" },
- { "dicom-iscl", { NULL }, 2761, "udp" },
- { "dicom-tls", { NULL }, 2762, "tcp" },
- { "dicom-tls", { NULL }, 2762, "udp" },
- { "desktop-dna", { NULL }, 2763, "tcp" },
- { "desktop-dna", { NULL }, 2763, "udp" },
- { "data-insurance", { NULL }, 2764, "tcp" },
- { "data-insurance", { NULL }, 2764, "udp" },
- { "qip-audup", { NULL }, 2765, "tcp" },
- { "qip-audup", { NULL }, 2765, "udp" },
- { "compaq-scp", { NULL }, 2766, "tcp" },
- { "compaq-scp", { NULL }, 2766, "udp" },
- { "uadtc", { NULL }, 2767, "tcp" },
- { "uadtc", { NULL }, 2767, "udp" },
- { "uacs", { NULL }, 2768, "tcp" },
- { "uacs", { NULL }, 2768, "udp" },
- { "exce", { NULL }, 2769, "tcp" },
- { "exce", { NULL }, 2769, "udp" },
- { "veronica", { NULL }, 2770, "tcp" },
- { "veronica", { NULL }, 2770, "udp" },
- { "vergencecm", { NULL }, 2771, "tcp" },
- { "vergencecm", { NULL }, 2771, "udp" },
- { "auris", { NULL }, 2772, "tcp" },
- { "auris", { NULL }, 2772, "udp" },
- { "rbakcup1", { NULL }, 2773, "tcp" },
- { "rbakcup1", { NULL }, 2773, "udp" },
- { "rbakcup2", { NULL }, 2774, "tcp" },
- { "rbakcup2", { NULL }, 2774, "udp" },
- { "smpp", { NULL }, 2775, "tcp" },
- { "smpp", { NULL }, 2775, "udp" },
- { "ridgeway1", { NULL }, 2776, "tcp" },
- { "ridgeway1", { NULL }, 2776, "udp" },
- { "ridgeway2", { NULL }, 2777, "tcp" },
- { "ridgeway2", { NULL }, 2777, "udp" },
- { "gwen-sonya", { NULL }, 2778, "tcp" },
- { "gwen-sonya", { NULL }, 2778, "udp" },
- { "lbc-sync", { NULL }, 2779, "tcp" },
- { "lbc-sync", { NULL }, 2779, "udp" },
- { "lbc-control", { NULL }, 2780, "tcp" },
- { "lbc-control", { NULL }, 2780, "udp" },
- { "whosells", { NULL }, 2781, "tcp" },
- { "whosells", { NULL }, 2781, "udp" },
- { "everydayrc", { NULL }, 2782, "tcp" },
- { "everydayrc", { NULL }, 2782, "udp" },
- { "aises", { NULL }, 2783, "tcp" },
- { "aises", { NULL }, 2783, "udp" },
- { "www-dev", { NULL }, 2784, "tcp" },
- { "www-dev", { NULL }, 2784, "udp" },
- { "aic-np", { NULL }, 2785, "tcp" },
- { "aic-np", { NULL }, 2785, "udp" },
- { "aic-oncrpc", { NULL }, 2786, "tcp" },
- { "aic-oncrpc", { NULL }, 2786, "udp" },
- { "piccolo", { NULL }, 2787, "tcp" },
- { "piccolo", { NULL }, 2787, "udp" },
- { "fryeserv", { NULL }, 2788, "tcp" },
- { "fryeserv", { NULL }, 2788, "udp" },
- { "media-agent", { NULL }, 2789, "tcp" },
- { "media-agent", { NULL }, 2789, "udp" },
- { "plgproxy", { NULL }, 2790, "tcp" },
- { "plgproxy", { NULL }, 2790, "udp" },
- { "mtport-regist", { NULL }, 2791, "tcp" },
- { "mtport-regist", { NULL }, 2791, "udp" },
- { "f5-globalsite", { NULL }, 2792, "tcp" },
- { "f5-globalsite", { NULL }, 2792, "udp" },
- { "initlsmsad", { NULL }, 2793, "tcp" },
- { "initlsmsad", { NULL }, 2793, "udp" },
- { "livestats", { NULL }, 2795, "tcp" },
- { "livestats", { NULL }, 2795, "udp" },
- { "ac-tech", { NULL }, 2796, "tcp" },
- { "ac-tech", { NULL }, 2796, "udp" },
- { "esp-encap", { NULL }, 2797, "tcp" },
- { "esp-encap", { NULL }, 2797, "udp" },
- { "tmesis-upshot", { NULL }, 2798, "tcp" },
- { "tmesis-upshot", { NULL }, 2798, "udp" },
- { "icon-discover", { NULL }, 2799, "tcp" },
- { "icon-discover", { NULL }, 2799, "udp" },
- { "acc-raid", { NULL }, 2800, "tcp" },
- { "acc-raid", { NULL }, 2800, "udp" },
- { "igcp", { NULL }, 2801, "tcp" },
- { "igcp", { NULL }, 2801, "udp" },
- { "veritas-tcp1", { NULL }, 2802, "tcp" },
- { "veritas-udp1", { NULL }, 2802, "udp" },
- { "btprjctrl", { NULL }, 2803, "tcp" },
- { "btprjctrl", { NULL }, 2803, "udp" },
- { "dvr-esm", { NULL }, 2804, "tcp" },
- { "dvr-esm", { NULL }, 2804, "udp" },
- { "wta-wsp-s", { NULL }, 2805, "tcp" },
- { "wta-wsp-s", { NULL }, 2805, "udp" },
- { "cspuni", { NULL }, 2806, "tcp" },
- { "cspuni", { NULL }, 2806, "udp" },
- { "cspmulti", { NULL }, 2807, "tcp" },
- { "cspmulti", { NULL }, 2807, "udp" },
- { "j-lan-p", { NULL }, 2808, "tcp" },
- { "j-lan-p", { NULL }, 2808, "udp" },
- { "corbaloc", { NULL }, 2809, "tcp" },
- { "corbaloc", { NULL }, 2809, "udp" },
- { "netsteward", { NULL }, 2810, "tcp" },
- { "netsteward", { NULL }, 2810, "udp" },
- { "gsiftp", { NULL }, 2811, "tcp" },
- { "gsiftp", { NULL }, 2811, "udp" },
- { "atmtcp", { NULL }, 2812, "tcp" },
- { "atmtcp", { NULL }, 2812, "udp" },
- { "llm-pass", { NULL }, 2813, "tcp" },
- { "llm-pass", { NULL }, 2813, "udp" },
- { "llm-csv", { NULL }, 2814, "tcp" },
- { "llm-csv", { NULL }, 2814, "udp" },
- { "lbc-measure", { NULL }, 2815, "tcp" },
- { "lbc-measure", { NULL }, 2815, "udp" },
- { "lbc-watchdog", { NULL }, 2816, "tcp" },
- { "lbc-watchdog", { NULL }, 2816, "udp" },
- { "nmsigport", { NULL }, 2817, "tcp" },
- { "nmsigport", { NULL }, 2817, "udp" },
- { "rmlnk", { NULL }, 2818, "tcp" },
- { "rmlnk", { NULL }, 2818, "udp" },
- { "fc-faultnotify", { NULL }, 2819, "tcp" },
- { "fc-faultnotify", { NULL }, 2819, "udp" },
- { "univision", { NULL }, 2820, "tcp" },
- { "univision", { NULL }, 2820, "udp" },
- { "vrts-at-port", { NULL }, 2821, "tcp" },
- { "vrts-at-port", { NULL }, 2821, "udp" },
- { "ka0wuc", { NULL }, 2822, "tcp" },
- { "ka0wuc", { NULL }, 2822, "udp" },
- { "cqg-netlan", { NULL }, 2823, "tcp" },
- { "cqg-netlan", { NULL }, 2823, "udp" },
- { "cqg-netlan-1", { NULL }, 2824, "tcp" },
- { "cqg-netlan-1", { NULL }, 2824, "udp" },
- { "slc-systemlog", { NULL }, 2826, "tcp" },
- { "slc-systemlog", { NULL }, 2826, "udp" },
- { "slc-ctrlrloops", { NULL }, 2827, "tcp" },
- { "slc-ctrlrloops", { NULL }, 2827, "udp" },
- { "itm-lm", { NULL }, 2828, "tcp" },
- { "itm-lm", { NULL }, 2828, "udp" },
- { "silkp1", { NULL }, 2829, "tcp" },
- { "silkp1", { NULL }, 2829, "udp" },
- { "silkp2", { NULL }, 2830, "tcp" },
- { "silkp2", { NULL }, 2830, "udp" },
- { "silkp3", { NULL }, 2831, "tcp" },
- { "silkp3", { NULL }, 2831, "udp" },
- { "silkp4", { NULL }, 2832, "tcp" },
- { "silkp4", { NULL }, 2832, "udp" },
- { "glishd", { NULL }, 2833, "tcp" },
- { "glishd", { NULL }, 2833, "udp" },
- { "evtp", { NULL }, 2834, "tcp" },
- { "evtp", { NULL }, 2834, "udp" },
- { "evtp-data", { NULL }, 2835, "tcp" },
- { "evtp-data", { NULL }, 2835, "udp" },
- { "catalyst", { NULL }, 2836, "tcp" },
- { "catalyst", { NULL }, 2836, "udp" },
- { "repliweb", { NULL }, 2837, "tcp" },
- { "repliweb", { NULL }, 2837, "udp" },
- { "starbot", { NULL }, 2838, "tcp" },
- { "starbot", { NULL }, 2838, "udp" },
- { "nmsigport", { NULL }, 2839, "tcp" },
- { "nmsigport", { NULL }, 2839, "udp" },
- { "l3-exprt", { NULL }, 2840, "tcp" },
- { "l3-exprt", { NULL }, 2840, "udp" },
- { "l3-ranger", { NULL }, 2841, "tcp" },
- { "l3-ranger", { NULL }, 2841, "udp" },
- { "l3-hawk", { NULL }, 2842, "tcp" },
- { "l3-hawk", { NULL }, 2842, "udp" },
- { "pdnet", { NULL }, 2843, "tcp" },
- { "pdnet", { NULL }, 2843, "udp" },
- { "bpcp-poll", { NULL }, 2844, "tcp" },
- { "bpcp-poll", { NULL }, 2844, "udp" },
- { "bpcp-trap", { NULL }, 2845, "tcp" },
- { "bpcp-trap", { NULL }, 2845, "udp" },
- { "aimpp-hello", { NULL }, 2846, "tcp" },
- { "aimpp-hello", { NULL }, 2846, "udp" },
- { "aimpp-port-req", { NULL }, 2847, "tcp" },
- { "aimpp-port-req", { NULL }, 2847, "udp" },
- { "amt-blc-port", { NULL }, 2848, "tcp" },
- { "amt-blc-port", { NULL }, 2848, "udp" },
- { "fxp", { NULL }, 2849, "tcp" },
- { "fxp", { NULL }, 2849, "udp" },
- { "metaconsole", { NULL }, 2850, "tcp" },
- { "metaconsole", { NULL }, 2850, "udp" },
- { "webemshttp", { NULL }, 2851, "tcp" },
- { "webemshttp", { NULL }, 2851, "udp" },
- { "bears-01", { NULL }, 2852, "tcp" },
- { "bears-01", { NULL }, 2852, "udp" },
- { "ispipes", { NULL }, 2853, "tcp" },
- { "ispipes", { NULL }, 2853, "udp" },
- { "infomover", { NULL }, 2854, "tcp" },
- { "infomover", { NULL }, 2854, "udp" },
- { "msrp", { NULL }, 2855, "tcp" },
- { "msrp", { NULL }, 2855, "udp" },
- { "cesdinv", { NULL }, 2856, "tcp" },
- { "cesdinv", { NULL }, 2856, "udp" },
- { "simctlp", { NULL }, 2857, "tcp" },
- { "simctlp", { NULL }, 2857, "udp" },
- { "ecnp", { NULL }, 2858, "tcp" },
- { "ecnp", { NULL }, 2858, "udp" },
- { "activememory", { NULL }, 2859, "tcp" },
- { "activememory", { NULL }, 2859, "udp" },
- { "dialpad-voice1", { NULL }, 2860, "tcp" },
- { "dialpad-voice1", { NULL }, 2860, "udp" },
- { "dialpad-voice2", { NULL }, 2861, "tcp" },
- { "dialpad-voice2", { NULL }, 2861, "udp" },
- { "ttg-protocol", { NULL }, 2862, "tcp" },
- { "ttg-protocol", { NULL }, 2862, "udp" },
- { "sonardata", { NULL }, 2863, "tcp" },
- { "sonardata", { NULL }, 2863, "udp" },
- { "astromed-main", { NULL }, 2864, "tcp" },
- { "astromed-main", { NULL }, 2864, "udp" },
- { "pit-vpn", { NULL }, 2865, "tcp" },
- { "pit-vpn", { NULL }, 2865, "udp" },
- { "iwlistener", { NULL }, 2866, "tcp" },
- { "iwlistener", { NULL }, 2866, "udp" },
- { "esps-portal", { NULL }, 2867, "tcp" },
- { "esps-portal", { NULL }, 2867, "udp" },
- { "npep-messaging", { NULL }, 2868, "tcp" },
- { "npep-messaging", { NULL }, 2868, "udp" },
- { "icslap", { NULL }, 2869, "tcp" },
- { "icslap", { NULL }, 2869, "udp" },
- { "daishi", { NULL }, 2870, "tcp" },
- { "daishi", { NULL }, 2870, "udp" },
- { "msi-selectplay", { NULL }, 2871, "tcp" },
- { "msi-selectplay", { NULL }, 2871, "udp" },
- { "radix", { NULL }, 2872, "tcp" },
- { "radix", { NULL }, 2872, "udp" },
- { "dxmessagebase1", { NULL }, 2874, "tcp" },
- { "dxmessagebase1", { NULL }, 2874, "udp" },
- { "dxmessagebase2", { NULL }, 2875, "tcp" },
- { "dxmessagebase2", { NULL }, 2875, "udp" },
- { "sps-tunnel", { NULL }, 2876, "tcp" },
- { "sps-tunnel", { NULL }, 2876, "udp" },
- { "bluelance", { NULL }, 2877, "tcp" },
- { "bluelance", { NULL }, 2877, "udp" },
- { "aap", { NULL }, 2878, "tcp" },
- { "aap", { NULL }, 2878, "udp" },
- { "ucentric-ds", { NULL }, 2879, "tcp" },
- { "ucentric-ds", { NULL }, 2879, "udp" },
- { "synapse", { NULL }, 2880, "tcp" },
- { "synapse", { NULL }, 2880, "udp" },
- { "ndsp", { NULL }, 2881, "tcp" },
- { "ndsp", { NULL }, 2881, "udp" },
- { "ndtp", { NULL }, 2882, "tcp" },
- { "ndtp", { NULL }, 2882, "udp" },
- { "ndnp", { NULL }, 2883, "tcp" },
- { "ndnp", { NULL }, 2883, "udp" },
- { "flashmsg", { NULL }, 2884, "tcp" },
- { "flashmsg", { NULL }, 2884, "udp" },
- { "topflow", { NULL }, 2885, "tcp" },
- { "topflow", { NULL }, 2885, "udp" },
- { "responselogic", { NULL }, 2886, "tcp" },
- { "responselogic", { NULL }, 2886, "udp" },
- { "aironetddp", { NULL }, 2887, "tcp" },
- { "aironetddp", { NULL }, 2887, "udp" },
- { "spcsdlobby", { NULL }, 2888, "tcp" },
- { "spcsdlobby", { NULL }, 2888, "udp" },
- { "rsom", { NULL }, 2889, "tcp" },
- { "rsom", { NULL }, 2889, "udp" },
- { "cspclmulti", { NULL }, 2890, "tcp" },
- { "cspclmulti", { NULL }, 2890, "udp" },
- { "cinegrfx-elmd", { NULL }, 2891, "tcp" },
- { "cinegrfx-elmd", { NULL }, 2891, "udp" },
- { "snifferdata", { NULL }, 2892, "tcp" },
- { "snifferdata", { NULL }, 2892, "udp" },
- { "vseconnector", { NULL }, 2893, "tcp" },
- { "vseconnector", { NULL }, 2893, "udp" },
- { "abacus-remote", { NULL }, 2894, "tcp" },
- { "abacus-remote", { NULL }, 2894, "udp" },
- { "natuslink", { NULL }, 2895, "tcp" },
- { "natuslink", { NULL }, 2895, "udp" },
- { "ecovisiong6-1", { NULL }, 2896, "tcp" },
- { "ecovisiong6-1", { NULL }, 2896, "udp" },
- { "citrix-rtmp", { NULL }, 2897, "tcp" },
- { "citrix-rtmp", { NULL }, 2897, "udp" },
- { "appliance-cfg", { NULL }, 2898, "tcp" },
- { "appliance-cfg", { NULL }, 2898, "udp" },
- { "powergemplus", { NULL }, 2899, "tcp" },
- { "powergemplus", { NULL }, 2899, "udp" },
- { "quicksuite", { NULL }, 2900, "tcp" },
- { "quicksuite", { NULL }, 2900, "udp" },
- { "allstorcns", { NULL }, 2901, "tcp" },
- { "allstorcns", { NULL }, 2901, "udp" },
- { "netaspi", { NULL }, 2902, "tcp" },
- { "netaspi", { NULL }, 2902, "udp" },
- { "suitcase", { NULL }, 2903, "tcp" },
- { "suitcase", { NULL }, 2903, "udp" },
- { "m2ua", { NULL }, 2904, "tcp" },
- { "m2ua", { NULL }, 2904, "udp" },
- { "m2ua", { NULL }, 2904, "sctp" },
- { "m3ua", { NULL }, 2905, "tcp" },
- { "m3ua", { NULL }, 2905, "sctp" },
- { "caller9", { NULL }, 2906, "tcp" },
- { "caller9", { NULL }, 2906, "udp" },
- { "webmethods-b2b", { NULL }, 2907, "tcp" },
- { "webmethods-b2b", { NULL }, 2907, "udp" },
- { "mao", { NULL }, 2908, "tcp" },
- { "mao", { NULL }, 2908, "udp" },
- { "funk-dialout", { NULL }, 2909, "tcp" },
- { "funk-dialout", { NULL }, 2909, "udp" },
- { "tdaccess", { NULL }, 2910, "tcp" },
- { "tdaccess", { NULL }, 2910, "udp" },
- { "blockade", { NULL }, 2911, "tcp" },
- { "blockade", { NULL }, 2911, "udp" },
- { "epicon", { NULL }, 2912, "tcp" },
- { "epicon", { NULL }, 2912, "udp" },
- { "boosterware", { NULL }, 2913, "tcp" },
- { "boosterware", { NULL }, 2913, "udp" },
- { "gamelobby", { NULL }, 2914, "tcp" },
- { "gamelobby", { NULL }, 2914, "udp" },
- { "tksocket", { NULL }, 2915, "tcp" },
- { "tksocket", { NULL }, 2915, "udp" },
- { "elvin_server", { NULL }, 2916, "tcp" },
- { "elvin_server", { NULL }, 2916, "udp" },
- { "elvin_client", { NULL }, 2917, "tcp" },
- { "elvin_client", { NULL }, 2917, "udp" },
- { "kastenchasepad", { NULL }, 2918, "tcp" },
- { "kastenchasepad", { NULL }, 2918, "udp" },
- { "roboer", { NULL }, 2919, "tcp" },
- { "roboer", { NULL }, 2919, "udp" },
- { "roboeda", { NULL }, 2920, "tcp" },
- { "roboeda", { NULL }, 2920, "udp" },
- { "cesdcdman", { NULL }, 2921, "tcp" },
- { "cesdcdman", { NULL }, 2921, "udp" },
- { "cesdcdtrn", { NULL }, 2922, "tcp" },
- { "cesdcdtrn", { NULL }, 2922, "udp" },
- { "wta-wsp-wtp-s", { NULL }, 2923, "tcp" },
- { "wta-wsp-wtp-s", { NULL }, 2923, "udp" },
- { "precise-vip", { NULL }, 2924, "tcp" },
- { "precise-vip", { NULL }, 2924, "udp" },
- { "mobile-file-dl", { NULL }, 2926, "tcp" },
- { "mobile-file-dl", { NULL }, 2926, "udp" },
- { "unimobilectrl", { NULL }, 2927, "tcp" },
- { "unimobilectrl", { NULL }, 2927, "udp" },
- { "redstone-cpss", { NULL }, 2928, "tcp" },
- { "redstone-cpss", { NULL }, 2928, "udp" },
- { "amx-webadmin", { NULL }, 2929, "tcp" },
- { "amx-webadmin", { NULL }, 2929, "udp" },
- { "amx-weblinx", { NULL }, 2930, "tcp" },
- { "amx-weblinx", { NULL }, 2930, "udp" },
- { "circle-x", { NULL }, 2931, "tcp" },
- { "circle-x", { NULL }, 2931, "udp" },
- { "incp", { NULL }, 2932, "tcp" },
- { "incp", { NULL }, 2932, "udp" },
- { "4-tieropmgw", { NULL }, 2933, "tcp" },
- { "4-tieropmgw", { NULL }, 2933, "udp" },
- { "4-tieropmcli", { NULL }, 2934, "tcp" },
- { "4-tieropmcli", { NULL }, 2934, "udp" },
- { "qtp", { NULL }, 2935, "tcp" },
- { "qtp", { NULL }, 2935, "udp" },
- { "otpatch", { NULL }, 2936, "tcp" },
- { "otpatch", { NULL }, 2936, "udp" },
- { "pnaconsult-lm", { NULL }, 2937, "tcp" },
- { "pnaconsult-lm", { NULL }, 2937, "udp" },
- { "sm-pas-1", { NULL }, 2938, "tcp" },
- { "sm-pas-1", { NULL }, 2938, "udp" },
- { "sm-pas-2", { NULL }, 2939, "tcp" },
- { "sm-pas-2", { NULL }, 2939, "udp" },
- { "sm-pas-3", { NULL }, 2940, "tcp" },
- { "sm-pas-3", { NULL }, 2940, "udp" },
- { "sm-pas-4", { NULL }, 2941, "tcp" },
- { "sm-pas-4", { NULL }, 2941, "udp" },
- { "sm-pas-5", { NULL }, 2942, "tcp" },
- { "sm-pas-5", { NULL }, 2942, "udp" },
- { "ttnrepository", { NULL }, 2943, "tcp" },
- { "ttnrepository", { NULL }, 2943, "udp" },
- { "megaco-h248", { NULL }, 2944, "tcp" },
- { "megaco-h248", { NULL }, 2944, "udp" },
- { "megaco-h248", { NULL }, 2944, "sctp" },
- { "h248-binary", { NULL }, 2945, "tcp" },
- { "h248-binary", { NULL }, 2945, "udp" },
- { "h248-binary", { NULL }, 2945, "sctp" },
- { "fjsvmpor", { NULL }, 2946, "tcp" },
- { "fjsvmpor", { NULL }, 2946, "udp" },
- { "gpsd", { NULL }, 2947, "tcp" },
- { "gpsd", { NULL }, 2947, "udp" },
- { "wap-push", { NULL }, 2948, "tcp" },
- { "wap-push", { NULL }, 2948, "udp" },
- { "wap-pushsecure", { NULL }, 2949, "tcp" },
- { "wap-pushsecure", { NULL }, 2949, "udp" },
- { "esip", { NULL }, 2950, "tcp" },
- { "esip", { NULL }, 2950, "udp" },
- { "ottp", { NULL }, 2951, "tcp" },
- { "ottp", { NULL }, 2951, "udp" },
- { "mpfwsas", { NULL }, 2952, "tcp" },
- { "mpfwsas", { NULL }, 2952, "udp" },
- { "ovalarmsrv", { NULL }, 2953, "tcp" },
- { "ovalarmsrv", { NULL }, 2953, "udp" },
- { "ovalarmsrv-cmd", { NULL }, 2954, "tcp" },
- { "ovalarmsrv-cmd", { NULL }, 2954, "udp" },
- { "csnotify", { NULL }, 2955, "tcp" },
- { "csnotify", { NULL }, 2955, "udp" },
- { "ovrimosdbman", { NULL }, 2956, "tcp" },
- { "ovrimosdbman", { NULL }, 2956, "udp" },
- { "jmact5", { NULL }, 2957, "tcp" },
- { "jmact5", { NULL }, 2957, "udp" },
- { "jmact6", { NULL }, 2958, "tcp" },
- { "jmact6", { NULL }, 2958, "udp" },
- { "rmopagt", { NULL }, 2959, "tcp" },
- { "rmopagt", { NULL }, 2959, "udp" },
- { "dfoxserver", { NULL }, 2960, "tcp" },
- { "dfoxserver", { NULL }, 2960, "udp" },
- { "boldsoft-lm", { NULL }, 2961, "tcp" },
- { "boldsoft-lm", { NULL }, 2961, "udp" },
- { "iph-policy-cli", { NULL }, 2962, "tcp" },
- { "iph-policy-cli", { NULL }, 2962, "udp" },
- { "iph-policy-adm", { NULL }, 2963, "tcp" },
- { "iph-policy-adm", { NULL }, 2963, "udp" },
- { "bullant-srap", { NULL }, 2964, "tcp" },
- { "bullant-srap", { NULL }, 2964, "udp" },
- { "bullant-rap", { NULL }, 2965, "tcp" },
- { "bullant-rap", { NULL }, 2965, "udp" },
- { "idp-infotrieve", { NULL }, 2966, "tcp" },
- { "idp-infotrieve", { NULL }, 2966, "udp" },
- { "ssc-agent", { NULL }, 2967, "tcp" },
- { "ssc-agent", { NULL }, 2967, "udp" },
- { "enpp", { NULL }, 2968, "tcp" },
- { "enpp", { NULL }, 2968, "udp" },
- { "essp", { NULL }, 2969, "tcp" },
- { "essp", { NULL }, 2969, "udp" },
- { "index-net", { NULL }, 2970, "tcp" },
- { "index-net", { NULL }, 2970, "udp" },
- { "netclip", { NULL }, 2971, "tcp" },
- { "netclip", { NULL }, 2971, "udp" },
- { "pmsm-webrctl", { NULL }, 2972, "tcp" },
- { "pmsm-webrctl", { NULL }, 2972, "udp" },
- { "svnetworks", { NULL }, 2973, "tcp" },
- { "svnetworks", { NULL }, 2973, "udp" },
- { "signal", { NULL }, 2974, "tcp" },
- { "signal", { NULL }, 2974, "udp" },
- { "fjmpcm", { NULL }, 2975, "tcp" },
- { "fjmpcm", { NULL }, 2975, "udp" },
- { "cns-srv-port", { NULL }, 2976, "tcp" },
- { "cns-srv-port", { NULL }, 2976, "udp" },
- { "ttc-etap-ns", { NULL }, 2977, "tcp" },
- { "ttc-etap-ns", { NULL }, 2977, "udp" },
- { "ttc-etap-ds", { NULL }, 2978, "tcp" },
- { "ttc-etap-ds", { NULL }, 2978, "udp" },
- { "h263-video", { NULL }, 2979, "tcp" },
- { "h263-video", { NULL }, 2979, "udp" },
- { "wimd", { NULL }, 2980, "tcp" },
- { "wimd", { NULL }, 2980, "udp" },
- { "mylxamport", { NULL }, 2981, "tcp" },
- { "mylxamport", { NULL }, 2981, "udp" },
- { "iwb-whiteboard", { NULL }, 2982, "tcp" },
- { "iwb-whiteboard", { NULL }, 2982, "udp" },
- { "netplan", { NULL }, 2983, "tcp" },
- { "netplan", { NULL }, 2983, "udp" },
- { "hpidsadmin", { NULL }, 2984, "tcp" },
- { "hpidsadmin", { NULL }, 2984, "udp" },
- { "hpidsagent", { NULL }, 2985, "tcp" },
- { "hpidsagent", { NULL }, 2985, "udp" },
- { "stonefalls", { NULL }, 2986, "tcp" },
- { "stonefalls", { NULL }, 2986, "udp" },
- { "identify", { NULL }, 2987, "tcp" },
- { "identify", { NULL }, 2987, "udp" },
- { "hippad", { NULL }, 2988, "tcp" },
- { "hippad", { NULL }, 2988, "udp" },
- { "zarkov", { NULL }, 2989, "tcp" },
- { "zarkov", { NULL }, 2989, "udp" },
- { "boscap", { NULL }, 2990, "tcp" },
- { "boscap", { NULL }, 2990, "udp" },
- { "wkstn-mon", { NULL }, 2991, "tcp" },
- { "wkstn-mon", { NULL }, 2991, "udp" },
- { "avenyo", { NULL }, 2992, "tcp" },
- { "avenyo", { NULL }, 2992, "udp" },
- { "veritas-vis1", { NULL }, 2993, "tcp" },
- { "veritas-vis1", { NULL }, 2993, "udp" },
- { "veritas-vis2", { NULL }, 2994, "tcp" },
- { "veritas-vis2", { NULL }, 2994, "udp" },
- { "idrs", { NULL }, 2995, "tcp" },
- { "idrs", { NULL }, 2995, "udp" },
- { "vsixml", { NULL }, 2996, "tcp" },
- { "vsixml", { NULL }, 2996, "udp" },
- { "rebol", { NULL }, 2997, "tcp" },
- { "rebol", { NULL }, 2997, "udp" },
- { "realsecure", { NULL }, 2998, "tcp" },
- { "realsecure", { NULL }, 2998, "udp" },
- { "remoteware-un", { NULL }, 2999, "tcp" },
- { "remoteware-un", { NULL }, 2999, "udp" },
- { "hbci", { NULL }, 3000, "tcp" },
- { "hbci", { NULL }, 3000, "udp" },
- { "remoteware-cl", { NULL }, 3000, "tcp" },
- { "remoteware-cl", { NULL }, 3000, "udp" },
- { "exlm-agent", { NULL }, 3002, "tcp" },
- { "exlm-agent", { NULL }, 3002, "udp" },
- { "remoteware-srv", { NULL }, 3002, "tcp" },
- { "remoteware-srv", { NULL }, 3002, "udp" },
- { "cgms", { NULL }, 3003, "tcp" },
- { "cgms", { NULL }, 3003, "udp" },
- { "csoftragent", { NULL }, 3004, "tcp" },
- { "csoftragent", { NULL }, 3004, "udp" },
- { "geniuslm", { NULL }, 3005, "tcp" },
- { "geniuslm", { NULL }, 3005, "udp" },
- { "ii-admin", { NULL }, 3006, "tcp" },
- { "ii-admin", { NULL }, 3006, "udp" },
- { "lotusmtap", { NULL }, 3007, "tcp" },
- { "lotusmtap", { NULL }, 3007, "udp" },
- { "midnight-tech", { NULL }, 3008, "tcp" },
- { "midnight-tech", { NULL }, 3008, "udp" },
- { "pxc-ntfy", { NULL }, 3009, "tcp" },
- { "pxc-ntfy", { NULL }, 3009, "udp" },
- { "gw", { NULL }, 3010, "tcp" },
- { "ping-pong", { NULL }, 3010, "udp" },
- { "trusted-web", { NULL }, 3011, "tcp" },
- { "trusted-web", { NULL }, 3011, "udp" },
- { "twsdss", { NULL }, 3012, "tcp" },
- { "twsdss", { NULL }, 3012, "udp" },
- { "gilatskysurfer", { NULL }, 3013, "tcp" },
- { "gilatskysurfer", { NULL }, 3013, "udp" },
- { "broker_service", { NULL }, 3014, "tcp" },
- { "broker_service", { NULL }, 3014, "udp" },
- { "nati-dstp", { NULL }, 3015, "tcp" },
- { "nati-dstp", { NULL }, 3015, "udp" },
- { "notify_srvr", { NULL }, 3016, "tcp" },
- { "notify_srvr", { NULL }, 3016, "udp" },
- { "event_listener", { NULL }, 3017, "tcp" },
- { "event_listener", { NULL }, 3017, "udp" },
- { "srvc_registry", { NULL }, 3018, "tcp" },
- { "srvc_registry", { NULL }, 3018, "udp" },
- { "resource_mgr", { NULL }, 3019, "tcp" },
- { "resource_mgr", { NULL }, 3019, "udp" },
- { "cifs", { NULL }, 3020, "tcp" },
- { "cifs", { NULL }, 3020, "udp" },
- { "agriserver", { NULL }, 3021, "tcp" },
- { "agriserver", { NULL }, 3021, "udp" },
- { "csregagent", { NULL }, 3022, "tcp" },
- { "csregagent", { NULL }, 3022, "udp" },
- { "magicnotes", { NULL }, 3023, "tcp" },
- { "magicnotes", { NULL }, 3023, "udp" },
- { "nds_sso", { NULL }, 3024, "tcp" },
- { "nds_sso", { NULL }, 3024, "udp" },
- { "arepa-raft", { NULL }, 3025, "tcp" },
- { "arepa-raft", { NULL }, 3025, "udp" },
- { "agri-gateway", { NULL }, 3026, "tcp" },
- { "agri-gateway", { NULL }, 3026, "udp" },
- { "LiebDevMgmt_C", { NULL }, 3027, "tcp" },
- { "LiebDevMgmt_C", { NULL }, 3027, "udp" },
- { "LiebDevMgmt_DM", { NULL }, 3028, "tcp" },
- { "LiebDevMgmt_DM", { NULL }, 3028, "udp" },
- { "LiebDevMgmt_A", { NULL }, 3029, "tcp" },
- { "LiebDevMgmt_A", { NULL }, 3029, "udp" },
- { "arepa-cas", { NULL }, 3030, "tcp" },
- { "arepa-cas", { NULL }, 3030, "udp" },
- { "eppc", { NULL }, 3031, "tcp" },
- { "eppc", { NULL }, 3031, "udp" },
- { "redwood-chat", { NULL }, 3032, "tcp" },
- { "redwood-chat", { NULL }, 3032, "udp" },
- { "pdb", { NULL }, 3033, "tcp" },
- { "pdb", { NULL }, 3033, "udp" },
- { "osmosis-aeea", { NULL }, 3034, "tcp" },
- { "osmosis-aeea", { NULL }, 3034, "udp" },
- { "fjsv-gssagt", { NULL }, 3035, "tcp" },
- { "fjsv-gssagt", { NULL }, 3035, "udp" },
- { "hagel-dump", { NULL }, 3036, "tcp" },
- { "hagel-dump", { NULL }, 3036, "udp" },
- { "hp-san-mgmt", { NULL }, 3037, "tcp" },
- { "hp-san-mgmt", { NULL }, 3037, "udp" },
- { "santak-ups", { NULL }, 3038, "tcp" },
- { "santak-ups", { NULL }, 3038, "udp" },
- { "cogitate", { NULL }, 3039, "tcp" },
- { "cogitate", { NULL }, 3039, "udp" },
- { "tomato-springs", { NULL }, 3040, "tcp" },
- { "tomato-springs", { NULL }, 3040, "udp" },
- { "di-traceware", { NULL }, 3041, "tcp" },
- { "di-traceware", { NULL }, 3041, "udp" },
- { "journee", { NULL }, 3042, "tcp" },
- { "journee", { NULL }, 3042, "udp" },
- { "brp", { NULL }, 3043, "tcp" },
- { "brp", { NULL }, 3043, "udp" },
- { "epp", { NULL }, 3044, "tcp" },
- { "epp", { NULL }, 3044, "udp" },
- { "responsenet", { NULL }, 3045, "tcp" },
- { "responsenet", { NULL }, 3045, "udp" },
- { "di-ase", { NULL }, 3046, "tcp" },
- { "di-ase", { NULL }, 3046, "udp" },
- { "hlserver", { NULL }, 3047, "tcp" },
- { "hlserver", { NULL }, 3047, "udp" },
- { "pctrader", { NULL }, 3048, "tcp" },
- { "pctrader", { NULL }, 3048, "udp" },
- { "nsws", { NULL }, 3049, "tcp" },
- { "nsws", { NULL }, 3049, "udp" },
- { "gds_db", { NULL }, 3050, "tcp" },
- { "gds_db", { NULL }, 3050, "udp" },
- { "galaxy-server", { NULL }, 3051, "tcp" },
- { "galaxy-server", { NULL }, 3051, "udp" },
- { "apc-3052", { NULL }, 3052, "tcp" },
- { "apc-3052", { NULL }, 3052, "udp" },
- { "dsom-server", { NULL }, 3053, "tcp" },
- { "dsom-server", { NULL }, 3053, "udp" },
- { "amt-cnf-prot", { NULL }, 3054, "tcp" },
- { "amt-cnf-prot", { NULL }, 3054, "udp" },
- { "policyserver", { NULL }, 3055, "tcp" },
- { "policyserver", { NULL }, 3055, "udp" },
- { "cdl-server", { NULL }, 3056, "tcp" },
- { "cdl-server", { NULL }, 3056, "udp" },
- { "goahead-fldup", { NULL }, 3057, "tcp" },
- { "goahead-fldup", { NULL }, 3057, "udp" },
- { "videobeans", { NULL }, 3058, "tcp" },
- { "videobeans", { NULL }, 3058, "udp" },
- { "qsoft", { NULL }, 3059, "tcp" },
- { "qsoft", { NULL }, 3059, "udp" },
- { "interserver", { NULL }, 3060, "tcp" },
- { "interserver", { NULL }, 3060, "udp" },
- { "cautcpd", { NULL }, 3061, "tcp" },
- { "cautcpd", { NULL }, 3061, "udp" },
- { "ncacn-ip-tcp", { NULL }, 3062, "tcp" },
- { "ncacn-ip-tcp", { NULL }, 3062, "udp" },
- { "ncadg-ip-udp", { NULL }, 3063, "tcp" },
- { "ncadg-ip-udp", { NULL }, 3063, "udp" },
- { "rprt", { NULL }, 3064, "tcp" },
- { "rprt", { NULL }, 3064, "udp" },
- { "slinterbase", { NULL }, 3065, "tcp" },
- { "slinterbase", { NULL }, 3065, "udp" },
- { "netattachsdmp", { NULL }, 3066, "tcp" },
- { "netattachsdmp", { NULL }, 3066, "udp" },
- { "fjhpjp", { NULL }, 3067, "tcp" },
- { "fjhpjp", { NULL }, 3067, "udp" },
- { "ls3bcast", { NULL }, 3068, "tcp" },
- { "ls3bcast", { NULL }, 3068, "udp" },
- { "ls3", { NULL }, 3069, "tcp" },
- { "ls3", { NULL }, 3069, "udp" },
- { "mgxswitch", { NULL }, 3070, "tcp" },
- { "mgxswitch", { NULL }, 3070, "udp" },
- { "csd-mgmt-port", { NULL }, 3071, "tcp" },
- { "csd-mgmt-port", { NULL }, 3071, "udp" },
- { "csd-monitor", { NULL }, 3072, "tcp" },
- { "csd-monitor", { NULL }, 3072, "udp" },
- { "vcrp", { NULL }, 3073, "tcp" },
- { "vcrp", { NULL }, 3073, "udp" },
- { "xbox", { NULL }, 3074, "tcp" },
- { "xbox", { NULL }, 3074, "udp" },
- { "orbix-locator", { NULL }, 3075, "tcp" },
- { "orbix-locator", { NULL }, 3075, "udp" },
- { "orbix-config", { NULL }, 3076, "tcp" },
- { "orbix-config", { NULL }, 3076, "udp" },
- { "orbix-loc-ssl", { NULL }, 3077, "tcp" },
- { "orbix-loc-ssl", { NULL }, 3077, "udp" },
- { "orbix-cfg-ssl", { NULL }, 3078, "tcp" },
- { "orbix-cfg-ssl", { NULL }, 3078, "udp" },
- { "lv-frontpanel", { NULL }, 3079, "tcp" },
- { "lv-frontpanel", { NULL }, 3079, "udp" },
- { "stm_pproc", { NULL }, 3080, "tcp" },
- { "stm_pproc", { NULL }, 3080, "udp" },
- { "tl1-lv", { NULL }, 3081, "tcp" },
- { "tl1-lv", { NULL }, 3081, "udp" },
- { "tl1-raw", { NULL }, 3082, "tcp" },
- { "tl1-raw", { NULL }, 3082, "udp" },
- { "tl1-telnet", { NULL }, 3083, "tcp" },
- { "tl1-telnet", { NULL }, 3083, "udp" },
- { "itm-mccs", { NULL }, 3084, "tcp" },
- { "itm-mccs", { NULL }, 3084, "udp" },
- { "pcihreq", { NULL }, 3085, "tcp" },
- { "pcihreq", { NULL }, 3085, "udp" },
- { "jdl-dbkitchen", { NULL }, 3086, "tcp" },
- { "jdl-dbkitchen", { NULL }, 3086, "udp" },
- { "asoki-sma", { NULL }, 3087, "tcp" },
- { "asoki-sma", { NULL }, 3087, "udp" },
- { "xdtp", { NULL }, 3088, "tcp" },
- { "xdtp", { NULL }, 3088, "udp" },
- { "ptk-alink", { NULL }, 3089, "tcp" },
- { "ptk-alink", { NULL }, 3089, "udp" },
- { "stss", { NULL }, 3090, "tcp" },
- { "stss", { NULL }, 3090, "udp" },
- { "1ci-smcs", { NULL }, 3091, "tcp" },
- { "1ci-smcs", { NULL }, 3091, "udp" },
- { "rapidmq-center", { NULL }, 3093, "tcp" },
- { "rapidmq-center", { NULL }, 3093, "udp" },
- { "rapidmq-reg", { NULL }, 3094, "tcp" },
- { "rapidmq-reg", { NULL }, 3094, "udp" },
- { "panasas", { NULL }, 3095, "tcp" },
- { "panasas", { NULL }, 3095, "udp" },
- { "ndl-aps", { NULL }, 3096, "tcp" },
- { "ndl-aps", { NULL }, 3096, "udp" },
- { "itu-bicc-stc", { NULL }, 3097, "sctp" },
- { "umm-port", { NULL }, 3098, "tcp" },
- { "umm-port", { NULL }, 3098, "udp" },
- { "chmd", { NULL }, 3099, "tcp" },
- { "chmd", { NULL }, 3099, "udp" },
- { "opcon-xps", { NULL }, 3100, "tcp" },
- { "opcon-xps", { NULL }, 3100, "udp" },
- { "hp-pxpib", { NULL }, 3101, "tcp" },
- { "hp-pxpib", { NULL }, 3101, "udp" },
- { "slslavemon", { NULL }, 3102, "tcp" },
- { "slslavemon", { NULL }, 3102, "udp" },
- { "autocuesmi", { NULL }, 3103, "tcp" },
- { "autocuesmi", { NULL }, 3103, "udp" },
- { "autocuelog", { NULL }, 3104, "tcp" },
- { "autocuetime", { NULL }, 3104, "udp" },
- { "cardbox", { NULL }, 3105, "tcp" },
- { "cardbox", { NULL }, 3105, "udp" },
- { "cardbox-http", { NULL }, 3106, "tcp" },
- { "cardbox-http", { NULL }, 3106, "udp" },
- { "business", { NULL }, 3107, "tcp" },
- { "business", { NULL }, 3107, "udp" },
- { "geolocate", { NULL }, 3108, "tcp" },
- { "geolocate", { NULL }, 3108, "udp" },
- { "personnel", { NULL }, 3109, "tcp" },
- { "personnel", { NULL }, 3109, "udp" },
- { "sim-control", { NULL }, 3110, "tcp" },
- { "sim-control", { NULL }, 3110, "udp" },
- { "wsynch", { NULL }, 3111, "tcp" },
- { "wsynch", { NULL }, 3111, "udp" },
- { "ksysguard", { NULL }, 3112, "tcp" },
- { "ksysguard", { NULL }, 3112, "udp" },
- { "cs-auth-svr", { NULL }, 3113, "tcp" },
- { "cs-auth-svr", { NULL }, 3113, "udp" },
- { "ccmad", { NULL }, 3114, "tcp" },
- { "ccmad", { NULL }, 3114, "udp" },
- { "mctet-master", { NULL }, 3115, "tcp" },
- { "mctet-master", { NULL }, 3115, "udp" },
- { "mctet-gateway", { NULL }, 3116, "tcp" },
- { "mctet-gateway", { NULL }, 3116, "udp" },
- { "mctet-jserv", { NULL }, 3117, "tcp" },
- { "mctet-jserv", { NULL }, 3117, "udp" },
- { "pkagent", { NULL }, 3118, "tcp" },
- { "pkagent", { NULL }, 3118, "udp" },
- { "d2000kernel", { NULL }, 3119, "tcp" },
- { "d2000kernel", { NULL }, 3119, "udp" },
- { "d2000webserver", { NULL }, 3120, "tcp" },
- { "d2000webserver", { NULL }, 3120, "udp" },
- { "vtr-emulator", { NULL }, 3122, "tcp" },
- { "vtr-emulator", { NULL }, 3122, "udp" },
- { "edix", { NULL }, 3123, "tcp" },
- { "edix", { NULL }, 3123, "udp" },
- { "beacon-port", { NULL }, 3124, "tcp" },
- { "beacon-port", { NULL }, 3124, "udp" },
- { "a13-an", { NULL }, 3125, "tcp" },
- { "a13-an", { NULL }, 3125, "udp" },
- { "ctx-bridge", { NULL }, 3127, "tcp" },
- { "ctx-bridge", { NULL }, 3127, "udp" },
- { "ndl-aas", { NULL }, 3128, "tcp" },
- { "ndl-aas", { NULL }, 3128, "udp" },
- { "netport-id", { NULL }, 3129, "tcp" },
- { "netport-id", { NULL }, 3129, "udp" },
- { "icpv2", { NULL }, 3130, "tcp" },
- { "icpv2", { NULL }, 3130, "udp" },
- { "netbookmark", { NULL }, 3131, "tcp" },
- { "netbookmark", { NULL }, 3131, "udp" },
- { "ms-rule-engine", { NULL }, 3132, "tcp" },
- { "ms-rule-engine", { NULL }, 3132, "udp" },
- { "prism-deploy", { NULL }, 3133, "tcp" },
- { "prism-deploy", { NULL }, 3133, "udp" },
- { "ecp", { NULL }, 3134, "tcp" },
- { "ecp", { NULL }, 3134, "udp" },
- { "peerbook-port", { NULL }, 3135, "tcp" },
- { "peerbook-port", { NULL }, 3135, "udp" },
- { "grubd", { NULL }, 3136, "tcp" },
- { "grubd", { NULL }, 3136, "udp" },
- { "rtnt-1", { NULL }, 3137, "tcp" },
- { "rtnt-1", { NULL }, 3137, "udp" },
- { "rtnt-2", { NULL }, 3138, "tcp" },
- { "rtnt-2", { NULL }, 3138, "udp" },
- { "incognitorv", { NULL }, 3139, "tcp" },
- { "incognitorv", { NULL }, 3139, "udp" },
- { "ariliamulti", { NULL }, 3140, "tcp" },
- { "ariliamulti", { NULL }, 3140, "udp" },
- { "vmodem", { NULL }, 3141, "tcp" },
- { "vmodem", { NULL }, 3141, "udp" },
- { "rdc-wh-eos", { NULL }, 3142, "tcp" },
- { "rdc-wh-eos", { NULL }, 3142, "udp" },
- { "seaview", { NULL }, 3143, "tcp" },
- { "seaview", { NULL }, 3143, "udp" },
- { "tarantella", { NULL }, 3144, "tcp" },
- { "tarantella", { NULL }, 3144, "udp" },
- { "csi-lfap", { NULL }, 3145, "tcp" },
- { "csi-lfap", { NULL }, 3145, "udp" },
- { "bears-02", { NULL }, 3146, "tcp" },
- { "bears-02", { NULL }, 3146, "udp" },
- { "rfio", { NULL }, 3147, "tcp" },
- { "rfio", { NULL }, 3147, "udp" },
- { "nm-game-admin", { NULL }, 3148, "tcp" },
- { "nm-game-admin", { NULL }, 3148, "udp" },
- { "nm-game-server", { NULL }, 3149, "tcp" },
- { "nm-game-server", { NULL }, 3149, "udp" },
- { "nm-asses-admin", { NULL }, 3150, "tcp" },
- { "nm-asses-admin", { NULL }, 3150, "udp" },
- { "nm-assessor", { NULL }, 3151, "tcp" },
- { "nm-assessor", { NULL }, 3151, "udp" },
- { "feitianrockey", { NULL }, 3152, "tcp" },
- { "feitianrockey", { NULL }, 3152, "udp" },
- { "s8-client-port", { NULL }, 3153, "tcp" },
- { "s8-client-port", { NULL }, 3153, "udp" },
- { "ccmrmi", { NULL }, 3154, "tcp" },
- { "ccmrmi", { NULL }, 3154, "udp" },
- { "jpegmpeg", { NULL }, 3155, "tcp" },
- { "jpegmpeg", { NULL }, 3155, "udp" },
- { "indura", { NULL }, 3156, "tcp" },
- { "indura", { NULL }, 3156, "udp" },
- { "e3consultants", { NULL }, 3157, "tcp" },
- { "e3consultants", { NULL }, 3157, "udp" },
- { "stvp", { NULL }, 3158, "tcp" },
- { "stvp", { NULL }, 3158, "udp" },
- { "navegaweb-port", { NULL }, 3159, "tcp" },
- { "navegaweb-port", { NULL }, 3159, "udp" },
- { "tip-app-server", { NULL }, 3160, "tcp" },
- { "tip-app-server", { NULL }, 3160, "udp" },
- { "doc1lm", { NULL }, 3161, "tcp" },
- { "doc1lm", { NULL }, 3161, "udp" },
- { "sflm", { NULL }, 3162, "tcp" },
- { "sflm", { NULL }, 3162, "udp" },
- { "res-sap", { NULL }, 3163, "tcp" },
- { "res-sap", { NULL }, 3163, "udp" },
- { "imprs", { NULL }, 3164, "tcp" },
- { "imprs", { NULL }, 3164, "udp" },
- { "newgenpay", { NULL }, 3165, "tcp" },
- { "newgenpay", { NULL }, 3165, "udp" },
- { "sossecollector", { NULL }, 3166, "tcp" },
- { "sossecollector", { NULL }, 3166, "udp" },
- { "nowcontact", { NULL }, 3167, "tcp" },
- { "nowcontact", { NULL }, 3167, "udp" },
- { "poweronnud", { NULL }, 3168, "tcp" },
- { "poweronnud", { NULL }, 3168, "udp" },
- { "serverview-as", { NULL }, 3169, "tcp" },
- { "serverview-as", { NULL }, 3169, "udp" },
- { "serverview-asn", { NULL }, 3170, "tcp" },
- { "serverview-asn", { NULL }, 3170, "udp" },
- { "serverview-gf", { NULL }, 3171, "tcp" },
- { "serverview-gf", { NULL }, 3171, "udp" },
- { "serverview-rm", { NULL }, 3172, "tcp" },
- { "serverview-rm", { NULL }, 3172, "udp" },
- { "serverview-icc", { NULL }, 3173, "tcp" },
- { "serverview-icc", { NULL }, 3173, "udp" },
- { "armi-server", { NULL }, 3174, "tcp" },
- { "armi-server", { NULL }, 3174, "udp" },
- { "t1-e1-over-ip", { NULL }, 3175, "tcp" },
- { "t1-e1-over-ip", { NULL }, 3175, "udp" },
- { "ars-master", { NULL }, 3176, "tcp" },
- { "ars-master", { NULL }, 3176, "udp" },
- { "phonex-port", { NULL }, 3177, "tcp" },
- { "phonex-port", { NULL }, 3177, "udp" },
- { "radclientport", { NULL }, 3178, "tcp" },
- { "radclientport", { NULL }, 3178, "udp" },
- { "h2gf-w-2m", { NULL }, 3179, "tcp" },
- { "h2gf-w-2m", { NULL }, 3179, "udp" },
- { "mc-brk-srv", { NULL }, 3180, "tcp" },
- { "mc-brk-srv", { NULL }, 3180, "udp" },
- { "bmcpatrolagent", { NULL }, 3181, "tcp" },
- { "bmcpatrolagent", { NULL }, 3181, "udp" },
- { "bmcpatrolrnvu", { NULL }, 3182, "tcp" },
- { "bmcpatrolrnvu", { NULL }, 3182, "udp" },
- { "cops-tls", { NULL }, 3183, "tcp" },
- { "cops-tls", { NULL }, 3183, "udp" },
- { "apogeex-port", { NULL }, 3184, "tcp" },
- { "apogeex-port", { NULL }, 3184, "udp" },
- { "smpppd", { NULL }, 3185, "tcp" },
- { "smpppd", { NULL }, 3185, "udp" },
- { "iiw-port", { NULL }, 3186, "tcp" },
- { "iiw-port", { NULL }, 3186, "udp" },
- { "odi-port", { NULL }, 3187, "tcp" },
- { "odi-port", { NULL }, 3187, "udp" },
- { "brcm-comm-port", { NULL }, 3188, "tcp" },
- { "brcm-comm-port", { NULL }, 3188, "udp" },
- { "pcle-infex", { NULL }, 3189, "tcp" },
- { "pcle-infex", { NULL }, 3189, "udp" },
- { "csvr-proxy", { NULL }, 3190, "tcp" },
- { "csvr-proxy", { NULL }, 3190, "udp" },
- { "csvr-sslproxy", { NULL }, 3191, "tcp" },
- { "csvr-sslproxy", { NULL }, 3191, "udp" },
- { "firemonrcc", { NULL }, 3192, "tcp" },
- { "firemonrcc", { NULL }, 3192, "udp" },
- { "spandataport", { NULL }, 3193, "tcp" },
- { "spandataport", { NULL }, 3193, "udp" },
- { "magbind", { NULL }, 3194, "tcp" },
- { "magbind", { NULL }, 3194, "udp" },
- { "ncu-1", { NULL }, 3195, "tcp" },
- { "ncu-1", { NULL }, 3195, "udp" },
- { "ncu-2", { NULL }, 3196, "tcp" },
- { "ncu-2", { NULL }, 3196, "udp" },
- { "embrace-dp-s", { NULL }, 3197, "tcp" },
- { "embrace-dp-s", { NULL }, 3197, "udp" },
- { "embrace-dp-c", { NULL }, 3198, "tcp" },
- { "embrace-dp-c", { NULL }, 3198, "udp" },
- { "dmod-workspace", { NULL }, 3199, "tcp" },
- { "dmod-workspace", { NULL }, 3199, "udp" },
- { "tick-port", { NULL }, 3200, "tcp" },
- { "tick-port", { NULL }, 3200, "udp" },
- { "cpq-tasksmart", { NULL }, 3201, "tcp" },
- { "cpq-tasksmart", { NULL }, 3201, "udp" },
- { "intraintra", { NULL }, 3202, "tcp" },
- { "intraintra", { NULL }, 3202, "udp" },
- { "netwatcher-mon", { NULL }, 3203, "tcp" },
- { "netwatcher-mon", { NULL }, 3203, "udp" },
- { "netwatcher-db", { NULL }, 3204, "tcp" },
- { "netwatcher-db", { NULL }, 3204, "udp" },
- { "isns", { NULL }, 3205, "tcp" },
- { "isns", { NULL }, 3205, "udp" },
- { "ironmail", { NULL }, 3206, "tcp" },
- { "ironmail", { NULL }, 3206, "udp" },
- { "vx-auth-port", { NULL }, 3207, "tcp" },
- { "vx-auth-port", { NULL }, 3207, "udp" },
- { "pfu-prcallback", { NULL }, 3208, "tcp" },
- { "pfu-prcallback", { NULL }, 3208, "udp" },
- { "netwkpathengine", { NULL }, 3209, "tcp" },
- { "netwkpathengine", { NULL }, 3209, "udp" },
- { "flamenco-proxy", { NULL }, 3210, "tcp" },
- { "flamenco-proxy", { NULL }, 3210, "udp" },
- { "avsecuremgmt", { NULL }, 3211, "tcp" },
- { "avsecuremgmt", { NULL }, 3211, "udp" },
- { "surveyinst", { NULL }, 3212, "tcp" },
- { "surveyinst", { NULL }, 3212, "udp" },
- { "neon24x7", { NULL }, 3213, "tcp" },
- { "neon24x7", { NULL }, 3213, "udp" },
- { "jmq-daemon-1", { NULL }, 3214, "tcp" },
- { "jmq-daemon-1", { NULL }, 3214, "udp" },
- { "jmq-daemon-2", { NULL }, 3215, "tcp" },
- { "jmq-daemon-2", { NULL }, 3215, "udp" },
- { "ferrari-foam", { NULL }, 3216, "tcp" },
- { "ferrari-foam", { NULL }, 3216, "udp" },
- { "unite", { NULL }, 3217, "tcp" },
- { "unite", { NULL }, 3217, "udp" },
- { "smartpackets", { NULL }, 3218, "tcp" },
- { "smartpackets", { NULL }, 3218, "udp" },
- { "wms-messenger", { NULL }, 3219, "tcp" },
- { "wms-messenger", { NULL }, 3219, "udp" },
- { "xnm-ssl", { NULL }, 3220, "tcp" },
- { "xnm-ssl", { NULL }, 3220, "udp" },
- { "xnm-clear-text", { NULL }, 3221, "tcp" },
- { "xnm-clear-text", { NULL }, 3221, "udp" },
- { "glbp", { NULL }, 3222, "tcp" },
- { "glbp", { NULL }, 3222, "udp" },
- { "digivote", { NULL }, 3223, "tcp" },
- { "digivote", { NULL }, 3223, "udp" },
- { "aes-discovery", { NULL }, 3224, "tcp" },
- { "aes-discovery", { NULL }, 3224, "udp" },
- { "fcip-port", { NULL }, 3225, "tcp" },
- { "fcip-port", { NULL }, 3225, "udp" },
- { "isi-irp", { NULL }, 3226, "tcp" },
- { "isi-irp", { NULL }, 3226, "udp" },
- { "dwnmshttp", { NULL }, 3227, "tcp" },
- { "dwnmshttp", { NULL }, 3227, "udp" },
- { "dwmsgserver", { NULL }, 3228, "tcp" },
- { "dwmsgserver", { NULL }, 3228, "udp" },
- { "global-cd-port", { NULL }, 3229, "tcp" },
- { "global-cd-port", { NULL }, 3229, "udp" },
- { "sftdst-port", { NULL }, 3230, "tcp" },
- { "sftdst-port", { NULL }, 3230, "udp" },
- { "vidigo", { NULL }, 3231, "tcp" },
- { "vidigo", { NULL }, 3231, "udp" },
- { "mdtp", { NULL }, 3232, "tcp" },
- { "mdtp", { NULL }, 3232, "udp" },
- { "whisker", { NULL }, 3233, "tcp" },
- { "whisker", { NULL }, 3233, "udp" },
- { "alchemy", { NULL }, 3234, "tcp" },
- { "alchemy", { NULL }, 3234, "udp" },
- { "mdap-port", { NULL }, 3235, "tcp" },
- { "mdap-port", { NULL }, 3235, "udp" },
- { "apparenet-ts", { NULL }, 3236, "tcp" },
- { "apparenet-ts", { NULL }, 3236, "udp" },
- { "apparenet-tps", { NULL }, 3237, "tcp" },
- { "apparenet-tps", { NULL }, 3237, "udp" },
- { "apparenet-as", { NULL }, 3238, "tcp" },
- { "apparenet-as", { NULL }, 3238, "udp" },
- { "apparenet-ui", { NULL }, 3239, "tcp" },
- { "apparenet-ui", { NULL }, 3239, "udp" },
- { "triomotion", { NULL }, 3240, "tcp" },
- { "triomotion", { NULL }, 3240, "udp" },
- { "sysorb", { NULL }, 3241, "tcp" },
- { "sysorb", { NULL }, 3241, "udp" },
- { "sdp-id-port", { NULL }, 3242, "tcp" },
- { "sdp-id-port", { NULL }, 3242, "udp" },
- { "timelot", { NULL }, 3243, "tcp" },
- { "timelot", { NULL }, 3243, "udp" },
- { "onesaf", { NULL }, 3244, "tcp" },
- { "onesaf", { NULL }, 3244, "udp" },
- { "vieo-fe", { NULL }, 3245, "tcp" },
- { "vieo-fe", { NULL }, 3245, "udp" },
- { "dvt-system", { NULL }, 3246, "tcp" },
- { "dvt-system", { NULL }, 3246, "udp" },
- { "dvt-data", { NULL }, 3247, "tcp" },
- { "dvt-data", { NULL }, 3247, "udp" },
- { "procos-lm", { NULL }, 3248, "tcp" },
- { "procos-lm", { NULL }, 3248, "udp" },
- { "ssp", { NULL }, 3249, "tcp" },
- { "ssp", { NULL }, 3249, "udp" },
- { "hicp", { NULL }, 3250, "tcp" },
- { "hicp", { NULL }, 3250, "udp" },
- { "sysscanner", { NULL }, 3251, "tcp" },
- { "sysscanner", { NULL }, 3251, "udp" },
- { "dhe", { NULL }, 3252, "tcp" },
- { "dhe", { NULL }, 3252, "udp" },
- { "pda-data", { NULL }, 3253, "tcp" },
- { "pda-data", { NULL }, 3253, "udp" },
- { "pda-sys", { NULL }, 3254, "tcp" },
- { "pda-sys", { NULL }, 3254, "udp" },
- { "semaphore", { NULL }, 3255, "tcp" },
- { "semaphore", { NULL }, 3255, "udp" },
- { "cpqrpm-agent", { NULL }, 3256, "tcp" },
- { "cpqrpm-agent", { NULL }, 3256, "udp" },
- { "cpqrpm-server", { NULL }, 3257, "tcp" },
- { "cpqrpm-server", { NULL }, 3257, "udp" },
- { "ivecon-port", { NULL }, 3258, "tcp" },
- { "ivecon-port", { NULL }, 3258, "udp" },
- { "epncdp2", { NULL }, 3259, "tcp" },
- { "epncdp2", { NULL }, 3259, "udp" },
- { "iscsi-target", { NULL }, 3260, "tcp" },
- { "iscsi-target", { NULL }, 3260, "udp" },
- { "winshadow", { NULL }, 3261, "tcp" },
- { "winshadow", { NULL }, 3261, "udp" },
- { "necp", { NULL }, 3262, "tcp" },
- { "necp", { NULL }, 3262, "udp" },
- { "ecolor-imager", { NULL }, 3263, "tcp" },
- { "ecolor-imager", { NULL }, 3263, "udp" },
- { "ccmail", { NULL }, 3264, "tcp" },
- { "ccmail", { NULL }, 3264, "udp" },
- { "altav-tunnel", { NULL }, 3265, "tcp" },
- { "altav-tunnel", { NULL }, 3265, "udp" },
- { "ns-cfg-server", { NULL }, 3266, "tcp" },
- { "ns-cfg-server", { NULL }, 3266, "udp" },
- { "ibm-dial-out", { NULL }, 3267, "tcp" },
- { "ibm-dial-out", { NULL }, 3267, "udp" },
- { "msft-gc", { NULL }, 3268, "tcp" },
- { "msft-gc", { NULL }, 3268, "udp" },
- { "msft-gc-ssl", { NULL }, 3269, "tcp" },
- { "msft-gc-ssl", { NULL }, 3269, "udp" },
- { "verismart", { NULL }, 3270, "tcp" },
- { "verismart", { NULL }, 3270, "udp" },
- { "csoft-prev", { NULL }, 3271, "tcp" },
- { "csoft-prev", { NULL }, 3271, "udp" },
- { "user-manager", { NULL }, 3272, "tcp" },
- { "user-manager", { NULL }, 3272, "udp" },
- { "sxmp", { NULL }, 3273, "tcp" },
- { "sxmp", { NULL }, 3273, "udp" },
- { "ordinox-server", { NULL }, 3274, "tcp" },
- { "ordinox-server", { NULL }, 3274, "udp" },
- { "samd", { NULL }, 3275, "tcp" },
- { "samd", { NULL }, 3275, "udp" },
- { "maxim-asics", { NULL }, 3276, "tcp" },
- { "maxim-asics", { NULL }, 3276, "udp" },
- { "awg-proxy", { NULL }, 3277, "tcp" },
- { "awg-proxy", { NULL }, 3277, "udp" },
- { "lkcmserver", { NULL }, 3278, "tcp" },
- { "lkcmserver", { NULL }, 3278, "udp" },
- { "admind", { NULL }, 3279, "tcp" },
- { "admind", { NULL }, 3279, "udp" },
- { "vs-server", { NULL }, 3280, "tcp" },
- { "vs-server", { NULL }, 3280, "udp" },
- { "sysopt", { NULL }, 3281, "tcp" },
- { "sysopt", { NULL }, 3281, "udp" },
- { "datusorb", { NULL }, 3282, "tcp" },
- { "datusorb", { NULL }, 3282, "udp" },
- { "net-assistant", { NULL }, 3283, "tcp" },
- { "net-assistant", { NULL }, 3283, "udp" },
- { "4talk", { NULL }, 3284, "tcp" },
- { "4talk", { NULL }, 3284, "udp" },
- { "plato", { NULL }, 3285, "tcp" },
- { "plato", { NULL }, 3285, "udp" },
- { "e-net", { NULL }, 3286, "tcp" },
- { "e-net", { NULL }, 3286, "udp" },
- { "directvdata", { NULL }, 3287, "tcp" },
- { "directvdata", { NULL }, 3287, "udp" },
- { "cops", { NULL }, 3288, "tcp" },
- { "cops", { NULL }, 3288, "udp" },
- { "enpc", { NULL }, 3289, "tcp" },
- { "enpc", { NULL }, 3289, "udp" },
- { "caps-lm", { NULL }, 3290, "tcp" },
- { "caps-lm", { NULL }, 3290, "udp" },
- { "sah-lm", { NULL }, 3291, "tcp" },
- { "sah-lm", { NULL }, 3291, "udp" },
- { "cart-o-rama", { NULL }, 3292, "tcp" },
- { "cart-o-rama", { NULL }, 3292, "udp" },
- { "fg-fps", { NULL }, 3293, "tcp" },
- { "fg-fps", { NULL }, 3293, "udp" },
- { "fg-gip", { NULL }, 3294, "tcp" },
- { "fg-gip", { NULL }, 3294, "udp" },
- { "dyniplookup", { NULL }, 3295, "tcp" },
- { "dyniplookup", { NULL }, 3295, "udp" },
- { "rib-slm", { NULL }, 3296, "tcp" },
- { "rib-slm", { NULL }, 3296, "udp" },
- { "cytel-lm", { NULL }, 3297, "tcp" },
- { "cytel-lm", { NULL }, 3297, "udp" },
- { "deskview", { NULL }, 3298, "tcp" },
- { "deskview", { NULL }, 3298, "udp" },
- { "pdrncs", { NULL }, 3299, "tcp" },
- { "pdrncs", { NULL }, 3299, "udp" },
- { "mcs-fastmail", { NULL }, 3302, "tcp" },
- { "mcs-fastmail", { NULL }, 3302, "udp" },
- { "opsession-clnt", { NULL }, 3303, "tcp" },
- { "opsession-clnt", { NULL }, 3303, "udp" },
- { "opsession-srvr", { NULL }, 3304, "tcp" },
- { "opsession-srvr", { NULL }, 3304, "udp" },
- { "odette-ftp", { NULL }, 3305, "tcp" },
- { "odette-ftp", { NULL }, 3305, "udp" },
- { "mysql", { NULL }, 3306, "tcp" },
- { "mysql", { NULL }, 3306, "udp" },
- { "opsession-prxy", { NULL }, 3307, "tcp" },
- { "opsession-prxy", { NULL }, 3307, "udp" },
- { "tns-server", { NULL }, 3308, "tcp" },
- { "tns-server", { NULL }, 3308, "udp" },
- { "tns-adv", { NULL }, 3309, "tcp" },
- { "tns-adv", { NULL }, 3309, "udp" },
- { "dyna-access", { NULL }, 3310, "tcp" },
- { "dyna-access", { NULL }, 3310, "udp" },
- { "mcns-tel-ret", { NULL }, 3311, "tcp" },
- { "mcns-tel-ret", { NULL }, 3311, "udp" },
- { "appman-server", { NULL }, 3312, "tcp" },
- { "appman-server", { NULL }, 3312, "udp" },
- { "uorb", { NULL }, 3313, "tcp" },
- { "uorb", { NULL }, 3313, "udp" },
- { "uohost", { NULL }, 3314, "tcp" },
- { "uohost", { NULL }, 3314, "udp" },
- { "cdid", { NULL }, 3315, "tcp" },
- { "cdid", { NULL }, 3315, "udp" },
- { "aicc-cmi", { NULL }, 3316, "tcp" },
- { "aicc-cmi", { NULL }, 3316, "udp" },
- { "vsaiport", { NULL }, 3317, "tcp" },
- { "vsaiport", { NULL }, 3317, "udp" },
- { "ssrip", { NULL }, 3318, "tcp" },
- { "ssrip", { NULL }, 3318, "udp" },
- { "sdt-lmd", { NULL }, 3319, "tcp" },
- { "sdt-lmd", { NULL }, 3319, "udp" },
- { "officelink2000", { NULL }, 3320, "tcp" },
- { "officelink2000", { NULL }, 3320, "udp" },
- { "vnsstr", { NULL }, 3321, "tcp" },
- { "vnsstr", { NULL }, 3321, "udp" },
- { "sftu", { NULL }, 3326, "tcp" },
- { "sftu", { NULL }, 3326, "udp" },
- { "bbars", { NULL }, 3327, "tcp" },
- { "bbars", { NULL }, 3327, "udp" },
- { "egptlm", { NULL }, 3328, "tcp" },
- { "egptlm", { NULL }, 3328, "udp" },
- { "hp-device-disc", { NULL }, 3329, "tcp" },
- { "hp-device-disc", { NULL }, 3329, "udp" },
- { "mcs-calypsoicf", { NULL }, 3330, "tcp" },
- { "mcs-calypsoicf", { NULL }, 3330, "udp" },
- { "mcs-messaging", { NULL }, 3331, "tcp" },
- { "mcs-messaging", { NULL }, 3331, "udp" },
- { "mcs-mailsvr", { NULL }, 3332, "tcp" },
- { "mcs-mailsvr", { NULL }, 3332, "udp" },
- { "dec-notes", { NULL }, 3333, "tcp" },
- { "dec-notes", { NULL }, 3333, "udp" },
- { "directv-web", { NULL }, 3334, "tcp" },
- { "directv-web", { NULL }, 3334, "udp" },
- { "directv-soft", { NULL }, 3335, "tcp" },
- { "directv-soft", { NULL }, 3335, "udp" },
- { "directv-tick", { NULL }, 3336, "tcp" },
- { "directv-tick", { NULL }, 3336, "udp" },
- { "directv-catlg", { NULL }, 3337, "tcp" },
- { "directv-catlg", { NULL }, 3337, "udp" },
- { "anet-b", { NULL }, 3338, "tcp" },
- { "anet-b", { NULL }, 3338, "udp" },
- { "anet-l", { NULL }, 3339, "tcp" },
- { "anet-l", { NULL }, 3339, "udp" },
- { "anet-m", { NULL }, 3340, "tcp" },
- { "anet-m", { NULL }, 3340, "udp" },
- { "anet-h", { NULL }, 3341, "tcp" },
- { "anet-h", { NULL }, 3341, "udp" },
- { "webtie", { NULL }, 3342, "tcp" },
- { "webtie", { NULL }, 3342, "udp" },
- { "ms-cluster-net", { NULL }, 3343, "tcp" },
- { "ms-cluster-net", { NULL }, 3343, "udp" },
- { "bnt-manager", { NULL }, 3344, "tcp" },
- { "bnt-manager", { NULL }, 3344, "udp" },
- { "influence", { NULL }, 3345, "tcp" },
- { "influence", { NULL }, 3345, "udp" },
- { "trnsprntproxy", { NULL }, 3346, "tcp" },
- { "trnsprntproxy", { NULL }, 3346, "udp" },
- { "phoenix-rpc", { NULL }, 3347, "tcp" },
- { "phoenix-rpc", { NULL }, 3347, "udp" },
- { "pangolin-laser", { NULL }, 3348, "tcp" },
- { "pangolin-laser", { NULL }, 3348, "udp" },
- { "chevinservices", { NULL }, 3349, "tcp" },
- { "chevinservices", { NULL }, 3349, "udp" },
- { "findviatv", { NULL }, 3350, "tcp" },
- { "findviatv", { NULL }, 3350, "udp" },
- { "btrieve", { NULL }, 3351, "tcp" },
- { "btrieve", { NULL }, 3351, "udp" },
- { "ssql", { NULL }, 3352, "tcp" },
- { "ssql", { NULL }, 3352, "udp" },
- { "fatpipe", { NULL }, 3353, "tcp" },
- { "fatpipe", { NULL }, 3353, "udp" },
- { "suitjd", { NULL }, 3354, "tcp" },
- { "suitjd", { NULL }, 3354, "udp" },
- { "ordinox-dbase", { NULL }, 3355, "tcp" },
- { "ordinox-dbase", { NULL }, 3355, "udp" },
- { "upnotifyps", { NULL }, 3356, "tcp" },
- { "upnotifyps", { NULL }, 3356, "udp" },
- { "adtech-test", { NULL }, 3357, "tcp" },
- { "adtech-test", { NULL }, 3357, "udp" },
- { "mpsysrmsvr", { NULL }, 3358, "tcp" },
- { "mpsysrmsvr", { NULL }, 3358, "udp" },
- { "wg-netforce", { NULL }, 3359, "tcp" },
- { "wg-netforce", { NULL }, 3359, "udp" },
- { "kv-server", { NULL }, 3360, "tcp" },
- { "kv-server", { NULL }, 3360, "udp" },
- { "kv-agent", { NULL }, 3361, "tcp" },
- { "kv-agent", { NULL }, 3361, "udp" },
- { "dj-ilm", { NULL }, 3362, "tcp" },
- { "dj-ilm", { NULL }, 3362, "udp" },
- { "nati-vi-server", { NULL }, 3363, "tcp" },
- { "nati-vi-server", { NULL }, 3363, "udp" },
- { "creativeserver", { NULL }, 3364, "tcp" },
- { "creativeserver", { NULL }, 3364, "udp" },
- { "contentserver", { NULL }, 3365, "tcp" },
- { "contentserver", { NULL }, 3365, "udp" },
- { "creativepartnr", { NULL }, 3366, "tcp" },
- { "creativepartnr", { NULL }, 3366, "udp" },
- { "tip2", { NULL }, 3372, "tcp" },
- { "tip2", { NULL }, 3372, "udp" },
- { "lavenir-lm", { NULL }, 3373, "tcp" },
- { "lavenir-lm", { NULL }, 3373, "udp" },
- { "cluster-disc", { NULL }, 3374, "tcp" },
- { "cluster-disc", { NULL }, 3374, "udp" },
- { "vsnm-agent", { NULL }, 3375, "tcp" },
- { "vsnm-agent", { NULL }, 3375, "udp" },
- { "cdbroker", { NULL }, 3376, "tcp" },
- { "cdbroker", { NULL }, 3376, "udp" },
- { "cogsys-lm", { NULL }, 3377, "tcp" },
- { "cogsys-lm", { NULL }, 3377, "udp" },
- { "wsicopy", { NULL }, 3378, "tcp" },
- { "wsicopy", { NULL }, 3378, "udp" },
- { "socorfs", { NULL }, 3379, "tcp" },
- { "socorfs", { NULL }, 3379, "udp" },
- { "sns-channels", { NULL }, 3380, "tcp" },
- { "sns-channels", { NULL }, 3380, "udp" },
- { "geneous", { NULL }, 3381, "tcp" },
- { "geneous", { NULL }, 3381, "udp" },
- { "fujitsu-neat", { NULL }, 3382, "tcp" },
- { "fujitsu-neat", { NULL }, 3382, "udp" },
- { "esp-lm", { NULL }, 3383, "tcp" },
- { "esp-lm", { NULL }, 3383, "udp" },
- { "hp-clic", { NULL }, 3384, "tcp" },
- { "hp-clic", { NULL }, 3384, "udp" },
- { "qnxnetman", { NULL }, 3385, "tcp" },
- { "qnxnetman", { NULL }, 3385, "udp" },
- { "gprs-data", { NULL }, 3386, "tcp" },
- { "gprs-sig", { NULL }, 3386, "udp" },
- { "backroomnet", { NULL }, 3387, "tcp" },
- { "backroomnet", { NULL }, 3387, "udp" },
- { "cbserver", { NULL }, 3388, "tcp" },
- { "cbserver", { NULL }, 3388, "udp" },
- { "ms-wbt-server", { NULL }, 3389, "tcp" },
- { "ms-wbt-server", { NULL }, 3389, "udp" },
- { "dsc", { NULL }, 3390, "tcp" },
- { "dsc", { NULL }, 3390, "udp" },
- { "savant", { NULL }, 3391, "tcp" },
- { "savant", { NULL }, 3391, "udp" },
- { "efi-lm", { NULL }, 3392, "tcp" },
- { "efi-lm", { NULL }, 3392, "udp" },
- { "d2k-tapestry1", { NULL }, 3393, "tcp" },
- { "d2k-tapestry1", { NULL }, 3393, "udp" },
- { "d2k-tapestry2", { NULL }, 3394, "tcp" },
- { "d2k-tapestry2", { NULL }, 3394, "udp" },
- { "dyna-lm", { NULL }, 3395, "tcp" },
- { "dyna-lm", { NULL }, 3395, "udp" },
- { "printer_agent", { NULL }, 3396, "tcp" },
- { "printer_agent", { NULL }, 3396, "udp" },
- { "cloanto-lm", { NULL }, 3397, "tcp" },
- { "cloanto-lm", { NULL }, 3397, "udp" },
- { "mercantile", { NULL }, 3398, "tcp" },
- { "mercantile", { NULL }, 3398, "udp" },
- { "csms", { NULL }, 3399, "tcp" },
- { "csms", { NULL }, 3399, "udp" },
- { "csms2", { NULL }, 3400, "tcp" },
- { "csms2", { NULL }, 3400, "udp" },
- { "filecast", { NULL }, 3401, "tcp" },
- { "filecast", { NULL }, 3401, "udp" },
- { "fxaengine-net", { NULL }, 3402, "tcp" },
- { "fxaengine-net", { NULL }, 3402, "udp" },
- { "nokia-ann-ch1", { NULL }, 3405, "tcp" },
- { "nokia-ann-ch1", { NULL }, 3405, "udp" },
- { "nokia-ann-ch2", { NULL }, 3406, "tcp" },
- { "nokia-ann-ch2", { NULL }, 3406, "udp" },
- { "ldap-admin", { NULL }, 3407, "tcp" },
- { "ldap-admin", { NULL }, 3407, "udp" },
- { "BESApi", { NULL }, 3408, "tcp" },
- { "BESApi", { NULL }, 3408, "udp" },
- { "networklens", { NULL }, 3409, "tcp" },
- { "networklens", { NULL }, 3409, "udp" },
- { "networklenss", { NULL }, 3410, "tcp" },
- { "networklenss", { NULL }, 3410, "udp" },
- { "biolink-auth", { NULL }, 3411, "tcp" },
- { "biolink-auth", { NULL }, 3411, "udp" },
- { "xmlblaster", { NULL }, 3412, "tcp" },
- { "xmlblaster", { NULL }, 3412, "udp" },
- { "svnet", { NULL }, 3413, "tcp" },
- { "svnet", { NULL }, 3413, "udp" },
- { "wip-port", { NULL }, 3414, "tcp" },
- { "wip-port", { NULL }, 3414, "udp" },
- { "bcinameservice", { NULL }, 3415, "tcp" },
- { "bcinameservice", { NULL }, 3415, "udp" },
- { "commandport", { NULL }, 3416, "tcp" },
- { "commandport", { NULL }, 3416, "udp" },
- { "csvr", { NULL }, 3417, "tcp" },
- { "csvr", { NULL }, 3417, "udp" },
- { "rnmap", { NULL }, 3418, "tcp" },
- { "rnmap", { NULL }, 3418, "udp" },
- { "softaudit", { NULL }, 3419, "tcp" },
- { "softaudit", { NULL }, 3419, "udp" },
- { "ifcp-port", { NULL }, 3420, "tcp" },
- { "ifcp-port", { NULL }, 3420, "udp" },
- { "bmap", { NULL }, 3421, "tcp" },
- { "bmap", { NULL }, 3421, "udp" },
- { "rusb-sys-port", { NULL }, 3422, "tcp" },
- { "rusb-sys-port", { NULL }, 3422, "udp" },
- { "xtrm", { NULL }, 3423, "tcp" },
- { "xtrm", { NULL }, 3423, "udp" },
- { "xtrms", { NULL }, 3424, "tcp" },
- { "xtrms", { NULL }, 3424, "udp" },
- { "agps-port", { NULL }, 3425, "tcp" },
- { "agps-port", { NULL }, 3425, "udp" },
- { "arkivio", { NULL }, 3426, "tcp" },
- { "arkivio", { NULL }, 3426, "udp" },
- { "websphere-snmp", { NULL }, 3427, "tcp" },
- { "websphere-snmp", { NULL }, 3427, "udp" },
- { "twcss", { NULL }, 3428, "tcp" },
- { "twcss", { NULL }, 3428, "udp" },
- { "gcsp", { NULL }, 3429, "tcp" },
- { "gcsp", { NULL }, 3429, "udp" },
- { "ssdispatch", { NULL }, 3430, "tcp" },
- { "ssdispatch", { NULL }, 3430, "udp" },
- { "ndl-als", { NULL }, 3431, "tcp" },
- { "ndl-als", { NULL }, 3431, "udp" },
- { "osdcp", { NULL }, 3432, "tcp" },
- { "osdcp", { NULL }, 3432, "udp" },
- { "alta-smp", { NULL }, 3433, "tcp" },
- { "alta-smp", { NULL }, 3433, "udp" },
- { "opencm", { NULL }, 3434, "tcp" },
- { "opencm", { NULL }, 3434, "udp" },
- { "pacom", { NULL }, 3435, "tcp" },
- { "pacom", { NULL }, 3435, "udp" },
- { "gc-config", { NULL }, 3436, "tcp" },
- { "gc-config", { NULL }, 3436, "udp" },
- { "autocueds", { NULL }, 3437, "tcp" },
- { "autocueds", { NULL }, 3437, "udp" },
- { "spiral-admin", { NULL }, 3438, "tcp" },
- { "spiral-admin", { NULL }, 3438, "udp" },
- { "hri-port", { NULL }, 3439, "tcp" },
- { "hri-port", { NULL }, 3439, "udp" },
- { "ans-console", { NULL }, 3440, "tcp" },
- { "ans-console", { NULL }, 3440, "udp" },
- { "connect-client", { NULL }, 3441, "tcp" },
- { "connect-client", { NULL }, 3441, "udp" },
- { "connect-server", { NULL }, 3442, "tcp" },
- { "connect-server", { NULL }, 3442, "udp" },
- { "ov-nnm-websrv", { NULL }, 3443, "tcp" },
- { "ov-nnm-websrv", { NULL }, 3443, "udp" },
- { "denali-server", { NULL }, 3444, "tcp" },
- { "denali-server", { NULL }, 3444, "udp" },
- { "monp", { NULL }, 3445, "tcp" },
- { "monp", { NULL }, 3445, "udp" },
- { "3comfaxrpc", { NULL }, 3446, "tcp" },
- { "3comfaxrpc", { NULL }, 3446, "udp" },
- { "directnet", { NULL }, 3447, "tcp" },
- { "directnet", { NULL }, 3447, "udp" },
- { "dnc-port", { NULL }, 3448, "tcp" },
- { "dnc-port", { NULL }, 3448, "udp" },
- { "hotu-chat", { NULL }, 3449, "tcp" },
- { "hotu-chat", { NULL }, 3449, "udp" },
- { "castorproxy", { NULL }, 3450, "tcp" },
- { "castorproxy", { NULL }, 3450, "udp" },
- { "asam", { NULL }, 3451, "tcp" },
- { "asam", { NULL }, 3451, "udp" },
- { "sabp-signal", { NULL }, 3452, "tcp" },
- { "sabp-signal", { NULL }, 3452, "udp" },
- { "pscupd", { NULL }, 3453, "tcp" },
- { "pscupd", { NULL }, 3453, "udp" },
- { "mira", { NULL }, 3454, "tcp" },
- { "prsvp", { NULL }, 3455, "tcp" },
- { "prsvp", { NULL }, 3455, "udp" },
- { "vat", { NULL }, 3456, "tcp" },
- { "vat", { NULL }, 3456, "udp" },
- { "vat-control", { NULL }, 3457, "tcp" },
- { "vat-control", { NULL }, 3457, "udp" },
- { "d3winosfi", { NULL }, 3458, "tcp" },
- { "d3winosfi", { NULL }, 3458, "udp" },
- { "integral", { NULL }, 3459, "tcp" },
- { "integral", { NULL }, 3459, "udp" },
- { "edm-manager", { NULL }, 3460, "tcp" },
- { "edm-manager", { NULL }, 3460, "udp" },
- { "edm-stager", { NULL }, 3461, "tcp" },
- { "edm-stager", { NULL }, 3461, "udp" },
- { "edm-std-notify", { NULL }, 3462, "tcp" },
- { "edm-std-notify", { NULL }, 3462, "udp" },
- { "edm-adm-notify", { NULL }, 3463, "tcp" },
- { "edm-adm-notify", { NULL }, 3463, "udp" },
- { "edm-mgr-sync", { NULL }, 3464, "tcp" },
- { "edm-mgr-sync", { NULL }, 3464, "udp" },
- { "edm-mgr-cntrl", { NULL }, 3465, "tcp" },
- { "edm-mgr-cntrl", { NULL }, 3465, "udp" },
- { "workflow", { NULL }, 3466, "tcp" },
- { "workflow", { NULL }, 3466, "udp" },
- { "rcst", { NULL }, 3467, "tcp" },
- { "rcst", { NULL }, 3467, "udp" },
- { "ttcmremotectrl", { NULL }, 3468, "tcp" },
- { "ttcmremotectrl", { NULL }, 3468, "udp" },
- { "pluribus", { NULL }, 3469, "tcp" },
- { "pluribus", { NULL }, 3469, "udp" },
- { "jt400", { NULL }, 3470, "tcp" },
- { "jt400", { NULL }, 3470, "udp" },
- { "jt400-ssl", { NULL }, 3471, "tcp" },
- { "jt400-ssl", { NULL }, 3471, "udp" },
- { "jaugsremotec-1", { NULL }, 3472, "tcp" },
- { "jaugsremotec-1", { NULL }, 3472, "udp" },
- { "jaugsremotec-2", { NULL }, 3473, "tcp" },
- { "jaugsremotec-2", { NULL }, 3473, "udp" },
- { "ttntspauto", { NULL }, 3474, "tcp" },
- { "ttntspauto", { NULL }, 3474, "udp" },
- { "genisar-port", { NULL }, 3475, "tcp" },
- { "genisar-port", { NULL }, 3475, "udp" },
- { "nppmp", { NULL }, 3476, "tcp" },
- { "nppmp", { NULL }, 3476, "udp" },
- { "ecomm", { NULL }, 3477, "tcp" },
- { "ecomm", { NULL }, 3477, "udp" },
- { "stun", { NULL }, 3478, "tcp" },
- { "stun", { NULL }, 3478, "udp" },
- { "turn", { NULL }, 3478, "tcp" },
- { "turn", { NULL }, 3478, "udp" },
- { "stun-behavior", { NULL }, 3478, "tcp" },
- { "stun-behavior", { NULL }, 3478, "udp" },
- { "twrpc", { NULL }, 3479, "tcp" },
- { "twrpc", { NULL }, 3479, "udp" },
- { "plethora", { NULL }, 3480, "tcp" },
- { "plethora", { NULL }, 3480, "udp" },
- { "cleanerliverc", { NULL }, 3481, "tcp" },
- { "cleanerliverc", { NULL }, 3481, "udp" },
- { "vulture", { NULL }, 3482, "tcp" },
- { "vulture", { NULL }, 3482, "udp" },
- { "slim-devices", { NULL }, 3483, "tcp" },
- { "slim-devices", { NULL }, 3483, "udp" },
- { "gbs-stp", { NULL }, 3484, "tcp" },
- { "gbs-stp", { NULL }, 3484, "udp" },
- { "celatalk", { NULL }, 3485, "tcp" },
- { "celatalk", { NULL }, 3485, "udp" },
- { "ifsf-hb-port", { NULL }, 3486, "tcp" },
- { "ifsf-hb-port", { NULL }, 3486, "udp" },
- { "ltctcp", { NULL }, 3487, "tcp" },
- { "ltcudp", { NULL }, 3487, "udp" },
- { "fs-rh-srv", { NULL }, 3488, "tcp" },
- { "fs-rh-srv", { NULL }, 3488, "udp" },
- { "dtp-dia", { NULL }, 3489, "tcp" },
- { "dtp-dia", { NULL }, 3489, "udp" },
- { "colubris", { NULL }, 3490, "tcp" },
- { "colubris", { NULL }, 3490, "udp" },
- { "swr-port", { NULL }, 3491, "tcp" },
- { "swr-port", { NULL }, 3491, "udp" },
- { "tvdumtray-port", { NULL }, 3492, "tcp" },
- { "tvdumtray-port", { NULL }, 3492, "udp" },
- { "nut", { NULL }, 3493, "tcp" },
- { "nut", { NULL }, 3493, "udp" },
- { "ibm3494", { NULL }, 3494, "tcp" },
- { "ibm3494", { NULL }, 3494, "udp" },
- { "seclayer-tcp", { NULL }, 3495, "tcp" },
- { "seclayer-tcp", { NULL }, 3495, "udp" },
- { "seclayer-tls", { NULL }, 3496, "tcp" },
- { "seclayer-tls", { NULL }, 3496, "udp" },
- { "ipether232port", { NULL }, 3497, "tcp" },
- { "ipether232port", { NULL }, 3497, "udp" },
- { "dashpas-port", { NULL }, 3498, "tcp" },
- { "dashpas-port", { NULL }, 3498, "udp" },
- { "sccip-media", { NULL }, 3499, "tcp" },
- { "sccip-media", { NULL }, 3499, "udp" },
- { "rtmp-port", { NULL }, 3500, "tcp" },
- { "rtmp-port", { NULL }, 3500, "udp" },
- { "isoft-p2p", { NULL }, 3501, "tcp" },
- { "isoft-p2p", { NULL }, 3501, "udp" },
- { "avinstalldisc", { NULL }, 3502, "tcp" },
- { "avinstalldisc", { NULL }, 3502, "udp" },
- { "lsp-ping", { NULL }, 3503, "tcp" },
- { "lsp-ping", { NULL }, 3503, "udp" },
- { "ironstorm", { NULL }, 3504, "tcp" },
- { "ironstorm", { NULL }, 3504, "udp" },
- { "ccmcomm", { NULL }, 3505, "tcp" },
- { "ccmcomm", { NULL }, 3505, "udp" },
- { "apc-3506", { NULL }, 3506, "tcp" },
- { "apc-3506", { NULL }, 3506, "udp" },
- { "nesh-broker", { NULL }, 3507, "tcp" },
- { "nesh-broker", { NULL }, 3507, "udp" },
- { "interactionweb", { NULL }, 3508, "tcp" },
- { "interactionweb", { NULL }, 3508, "udp" },
- { "vt-ssl", { NULL }, 3509, "tcp" },
- { "vt-ssl", { NULL }, 3509, "udp" },
- { "xss-port", { NULL }, 3510, "tcp" },
- { "xss-port", { NULL }, 3510, "udp" },
- { "webmail-2", { NULL }, 3511, "tcp" },
- { "webmail-2", { NULL }, 3511, "udp" },
- { "aztec", { NULL }, 3512, "tcp" },
- { "aztec", { NULL }, 3512, "udp" },
- { "arcpd", { NULL }, 3513, "tcp" },
- { "arcpd", { NULL }, 3513, "udp" },
- { "must-p2p", { NULL }, 3514, "tcp" },
- { "must-p2p", { NULL }, 3514, "udp" },
- { "must-backplane", { NULL }, 3515, "tcp" },
- { "must-backplane", { NULL }, 3515, "udp" },
- { "smartcard-port", { NULL }, 3516, "tcp" },
- { "smartcard-port", { NULL }, 3516, "udp" },
- { "802-11-iapp", { NULL }, 3517, "tcp" },
- { "802-11-iapp", { NULL }, 3517, "udp" },
- { "artifact-msg", { NULL }, 3518, "tcp" },
- { "artifact-msg", { NULL }, 3518, "udp" },
- { "nvmsgd", { NULL }, 3519, "tcp" },
- { "galileo", { NULL }, 3519, "udp" },
- { "galileolog", { NULL }, 3520, "tcp" },
- { "galileolog", { NULL }, 3520, "udp" },
- { "mc3ss", { NULL }, 3521, "tcp" },
- { "mc3ss", { NULL }, 3521, "udp" },
- { "nssocketport", { NULL }, 3522, "tcp" },
- { "nssocketport", { NULL }, 3522, "udp" },
- { "odeumservlink", { NULL }, 3523, "tcp" },
- { "odeumservlink", { NULL }, 3523, "udp" },
- { "ecmport", { NULL }, 3524, "tcp" },
- { "ecmport", { NULL }, 3524, "udp" },
- { "eisport", { NULL }, 3525, "tcp" },
- { "eisport", { NULL }, 3525, "udp" },
- { "starquiz-port", { NULL }, 3526, "tcp" },
- { "starquiz-port", { NULL }, 3526, "udp" },
- { "beserver-msg-q", { NULL }, 3527, "tcp" },
- { "beserver-msg-q", { NULL }, 3527, "udp" },
- { "jboss-iiop", { NULL }, 3528, "tcp" },
- { "jboss-iiop", { NULL }, 3528, "udp" },
- { "jboss-iiop-ssl", { NULL }, 3529, "tcp" },
- { "jboss-iiop-ssl", { NULL }, 3529, "udp" },
- { "gf", { NULL }, 3530, "tcp" },
- { "gf", { NULL }, 3530, "udp" },
- { "joltid", { NULL }, 3531, "tcp" },
- { "joltid", { NULL }, 3531, "udp" },
- { "raven-rmp", { NULL }, 3532, "tcp" },
- { "raven-rmp", { NULL }, 3532, "udp" },
- { "raven-rdp", { NULL }, 3533, "tcp" },
- { "raven-rdp", { NULL }, 3533, "udp" },
- { "urld-port", { NULL }, 3534, "tcp" },
- { "urld-port", { NULL }, 3534, "udp" },
- { "ms-la", { NULL }, 3535, "tcp" },
- { "ms-la", { NULL }, 3535, "udp" },
- { "snac", { NULL }, 3536, "tcp" },
- { "snac", { NULL }, 3536, "udp" },
- { "ni-visa-remote", { NULL }, 3537, "tcp" },
- { "ni-visa-remote", { NULL }, 3537, "udp" },
- { "ibm-diradm", { NULL }, 3538, "tcp" },
- { "ibm-diradm", { NULL }, 3538, "udp" },
- { "ibm-diradm-ssl", { NULL }, 3539, "tcp" },
- { "ibm-diradm-ssl", { NULL }, 3539, "udp" },
- { "pnrp-port", { NULL }, 3540, "tcp" },
- { "pnrp-port", { NULL }, 3540, "udp" },
- { "voispeed-port", { NULL }, 3541, "tcp" },
- { "voispeed-port", { NULL }, 3541, "udp" },
- { "hacl-monitor", { NULL }, 3542, "tcp" },
- { "hacl-monitor", { NULL }, 3542, "udp" },
- { "qftest-lookup", { NULL }, 3543, "tcp" },
- { "qftest-lookup", { NULL }, 3543, "udp" },
- { "teredo", { NULL }, 3544, "tcp" },
- { "teredo", { NULL }, 3544, "udp" },
- { "camac", { NULL }, 3545, "tcp" },
- { "camac", { NULL }, 3545, "udp" },
- { "symantec-sim", { NULL }, 3547, "tcp" },
- { "symantec-sim", { NULL }, 3547, "udp" },
- { "interworld", { NULL }, 3548, "tcp" },
- { "interworld", { NULL }, 3548, "udp" },
- { "tellumat-nms", { NULL }, 3549, "tcp" },
- { "tellumat-nms", { NULL }, 3549, "udp" },
- { "ssmpp", { NULL }, 3550, "tcp" },
- { "ssmpp", { NULL }, 3550, "udp" },
- { "apcupsd", { NULL }, 3551, "tcp" },
- { "apcupsd", { NULL }, 3551, "udp" },
- { "taserver", { NULL }, 3552, "tcp" },
- { "taserver", { NULL }, 3552, "udp" },
- { "rbr-discovery", { NULL }, 3553, "tcp" },
- { "rbr-discovery", { NULL }, 3553, "udp" },
- { "questnotify", { NULL }, 3554, "tcp" },
- { "questnotify", { NULL }, 3554, "udp" },
- { "razor", { NULL }, 3555, "tcp" },
- { "razor", { NULL }, 3555, "udp" },
- { "sky-transport", { NULL }, 3556, "tcp" },
- { "sky-transport", { NULL }, 3556, "udp" },
- { "personalos-001", { NULL }, 3557, "tcp" },
- { "personalos-001", { NULL }, 3557, "udp" },
- { "mcp-port", { NULL }, 3558, "tcp" },
- { "mcp-port", { NULL }, 3558, "udp" },
- { "cctv-port", { NULL }, 3559, "tcp" },
- { "cctv-port", { NULL }, 3559, "udp" },
- { "iniserve-port", { NULL }, 3560, "tcp" },
- { "iniserve-port", { NULL }, 3560, "udp" },
- { "bmc-onekey", { NULL }, 3561, "tcp" },
- { "bmc-onekey", { NULL }, 3561, "udp" },
- { "sdbproxy", { NULL }, 3562, "tcp" },
- { "sdbproxy", { NULL }, 3562, "udp" },
- { "watcomdebug", { NULL }, 3563, "tcp" },
- { "watcomdebug", { NULL }, 3563, "udp" },
- { "esimport", { NULL }, 3564, "tcp" },
- { "esimport", { NULL }, 3564, "udp" },
- { "m2pa", { NULL }, 3565, "tcp" },
- { "m2pa", { NULL }, 3565, "sctp" },
- { "quest-data-hub", { NULL }, 3566, "tcp" },
- { "oap", { NULL }, 3567, "tcp" },
- { "oap", { NULL }, 3567, "udp" },
- { "oap-s", { NULL }, 3568, "tcp" },
- { "oap-s", { NULL }, 3568, "udp" },
- { "mbg-ctrl", { NULL }, 3569, "tcp" },
- { "mbg-ctrl", { NULL }, 3569, "udp" },
- { "mccwebsvr-port", { NULL }, 3570, "tcp" },
- { "mccwebsvr-port", { NULL }, 3570, "udp" },
- { "megardsvr-port", { NULL }, 3571, "tcp" },
- { "megardsvr-port", { NULL }, 3571, "udp" },
- { "megaregsvrport", { NULL }, 3572, "tcp" },
- { "megaregsvrport", { NULL }, 3572, "udp" },
- { "tag-ups-1", { NULL }, 3573, "tcp" },
- { "tag-ups-1", { NULL }, 3573, "udp" },
- { "dmaf-server", { NULL }, 3574, "tcp" },
- { "dmaf-caster", { NULL }, 3574, "udp" },
- { "ccm-port", { NULL }, 3575, "tcp" },
- { "ccm-port", { NULL }, 3575, "udp" },
- { "cmc-port", { NULL }, 3576, "tcp" },
- { "cmc-port", { NULL }, 3576, "udp" },
- { "config-port", { NULL }, 3577, "tcp" },
- { "config-port", { NULL }, 3577, "udp" },
- { "data-port", { NULL }, 3578, "tcp" },
- { "data-port", { NULL }, 3578, "udp" },
- { "ttat3lb", { NULL }, 3579, "tcp" },
- { "ttat3lb", { NULL }, 3579, "udp" },
- { "nati-svrloc", { NULL }, 3580, "tcp" },
- { "nati-svrloc", { NULL }, 3580, "udp" },
- { "kfxaclicensing", { NULL }, 3581, "tcp" },
- { "kfxaclicensing", { NULL }, 3581, "udp" },
- { "press", { NULL }, 3582, "tcp" },
- { "press", { NULL }, 3582, "udp" },
- { "canex-watch", { NULL }, 3583, "tcp" },
- { "canex-watch", { NULL }, 3583, "udp" },
- { "u-dbap", { NULL }, 3584, "tcp" },
- { "u-dbap", { NULL }, 3584, "udp" },
- { "emprise-lls", { NULL }, 3585, "tcp" },
- { "emprise-lls", { NULL }, 3585, "udp" },
- { "emprise-lsc", { NULL }, 3586, "tcp" },
- { "emprise-lsc", { NULL }, 3586, "udp" },
- { "p2pgroup", { NULL }, 3587, "tcp" },
- { "p2pgroup", { NULL }, 3587, "udp" },
- { "sentinel", { NULL }, 3588, "tcp" },
- { "sentinel", { NULL }, 3588, "udp" },
- { "isomair", { NULL }, 3589, "tcp" },
- { "isomair", { NULL }, 3589, "udp" },
- { "wv-csp-sms", { NULL }, 3590, "tcp" },
- { "wv-csp-sms", { NULL }, 3590, "udp" },
- { "gtrack-server", { NULL }, 3591, "tcp" },
- { "gtrack-server", { NULL }, 3591, "udp" },
- { "gtrack-ne", { NULL }, 3592, "tcp" },
- { "gtrack-ne", { NULL }, 3592, "udp" },
- { "bpmd", { NULL }, 3593, "tcp" },
- { "bpmd", { NULL }, 3593, "udp" },
- { "mediaspace", { NULL }, 3594, "tcp" },
- { "mediaspace", { NULL }, 3594, "udp" },
- { "shareapp", { NULL }, 3595, "tcp" },
- { "shareapp", { NULL }, 3595, "udp" },
- { "iw-mmogame", { NULL }, 3596, "tcp" },
- { "iw-mmogame", { NULL }, 3596, "udp" },
- { "a14", { NULL }, 3597, "tcp" },
- { "a14", { NULL }, 3597, "udp" },
- { "a15", { NULL }, 3598, "tcp" },
- { "a15", { NULL }, 3598, "udp" },
- { "quasar-server", { NULL }, 3599, "tcp" },
- { "quasar-server", { NULL }, 3599, "udp" },
- { "trap-daemon", { NULL }, 3600, "tcp" },
- { "trap-daemon", { NULL }, 3600, "udp" },
- { "visinet-gui", { NULL }, 3601, "tcp" },
- { "visinet-gui", { NULL }, 3601, "udp" },
- { "infiniswitchcl", { NULL }, 3602, "tcp" },
- { "infiniswitchcl", { NULL }, 3602, "udp" },
- { "int-rcv-cntrl", { NULL }, 3603, "tcp" },
- { "int-rcv-cntrl", { NULL }, 3603, "udp" },
- { "bmc-jmx-port", { NULL }, 3604, "tcp" },
- { "bmc-jmx-port", { NULL }, 3604, "udp" },
- { "comcam-io", { NULL }, 3605, "tcp" },
- { "comcam-io", { NULL }, 3605, "udp" },
- { "splitlock", { NULL }, 3606, "tcp" },
- { "splitlock", { NULL }, 3606, "udp" },
- { "precise-i3", { NULL }, 3607, "tcp" },
- { "precise-i3", { NULL }, 3607, "udp" },
- { "trendchip-dcp", { NULL }, 3608, "tcp" },
- { "trendchip-dcp", { NULL }, 3608, "udp" },
- { "cpdi-pidas-cm", { NULL }, 3609, "tcp" },
- { "cpdi-pidas-cm", { NULL }, 3609, "udp" },
- { "echonet", { NULL }, 3610, "tcp" },
- { "echonet", { NULL }, 3610, "udp" },
- { "six-degrees", { NULL }, 3611, "tcp" },
- { "six-degrees", { NULL }, 3611, "udp" },
- { "hp-dataprotect", { NULL }, 3612, "tcp" },
- { "hp-dataprotect", { NULL }, 3612, "udp" },
- { "alaris-disc", { NULL }, 3613, "tcp" },
- { "alaris-disc", { NULL }, 3613, "udp" },
- { "sigma-port", { NULL }, 3614, "tcp" },
- { "sigma-port", { NULL }, 3614, "udp" },
- { "start-network", { NULL }, 3615, "tcp" },
- { "start-network", { NULL }, 3615, "udp" },
- { "cd3o-protocol", { NULL }, 3616, "tcp" },
- { "cd3o-protocol", { NULL }, 3616, "udp" },
- { "sharp-server", { NULL }, 3617, "tcp" },
- { "sharp-server", { NULL }, 3617, "udp" },
- { "aairnet-1", { NULL }, 3618, "tcp" },
- { "aairnet-1", { NULL }, 3618, "udp" },
- { "aairnet-2", { NULL }, 3619, "tcp" },
- { "aairnet-2", { NULL }, 3619, "udp" },
- { "ep-pcp", { NULL }, 3620, "tcp" },
- { "ep-pcp", { NULL }, 3620, "udp" },
- { "ep-nsp", { NULL }, 3621, "tcp" },
- { "ep-nsp", { NULL }, 3621, "udp" },
- { "ff-lr-port", { NULL }, 3622, "tcp" },
- { "ff-lr-port", { NULL }, 3622, "udp" },
- { "haipe-discover", { NULL }, 3623, "tcp" },
- { "haipe-discover", { NULL }, 3623, "udp" },
- { "dist-upgrade", { NULL }, 3624, "tcp" },
- { "dist-upgrade", { NULL }, 3624, "udp" },
- { "volley", { NULL }, 3625, "tcp" },
- { "volley", { NULL }, 3625, "udp" },
- { "bvcdaemon-port", { NULL }, 3626, "tcp" },
- { "bvcdaemon-port", { NULL }, 3626, "udp" },
- { "jamserverport", { NULL }, 3627, "tcp" },
- { "jamserverport", { NULL }, 3627, "udp" },
- { "ept-machine", { NULL }, 3628, "tcp" },
- { "ept-machine", { NULL }, 3628, "udp" },
- { "escvpnet", { NULL }, 3629, "tcp" },
- { "escvpnet", { NULL }, 3629, "udp" },
- { "cs-remote-db", { NULL }, 3630, "tcp" },
- { "cs-remote-db", { NULL }, 3630, "udp" },
- { "cs-services", { NULL }, 3631, "tcp" },
- { "cs-services", { NULL }, 3631, "udp" },
- { "distcc", { NULL }, 3632, "tcp" },
- { "distcc", { NULL }, 3632, "udp" },
- { "wacp", { NULL }, 3633, "tcp" },
- { "wacp", { NULL }, 3633, "udp" },
- { "hlibmgr", { NULL }, 3634, "tcp" },
- { "hlibmgr", { NULL }, 3634, "udp" },
- { "sdo", { NULL }, 3635, "tcp" },
- { "sdo", { NULL }, 3635, "udp" },
- { "servistaitsm", { NULL }, 3636, "tcp" },
- { "servistaitsm", { NULL }, 3636, "udp" },
- { "scservp", { NULL }, 3637, "tcp" },
- { "scservp", { NULL }, 3637, "udp" },
- { "ehp-backup", { NULL }, 3638, "tcp" },
- { "ehp-backup", { NULL }, 3638, "udp" },
- { "xap-ha", { NULL }, 3639, "tcp" },
- { "xap-ha", { NULL }, 3639, "udp" },
- { "netplay-port1", { NULL }, 3640, "tcp" },
- { "netplay-port1", { NULL }, 3640, "udp" },
- { "netplay-port2", { NULL }, 3641, "tcp" },
- { "netplay-port2", { NULL }, 3641, "udp" },
- { "juxml-port", { NULL }, 3642, "tcp" },
- { "juxml-port", { NULL }, 3642, "udp" },
- { "audiojuggler", { NULL }, 3643, "tcp" },
- { "audiojuggler", { NULL }, 3643, "udp" },
- { "ssowatch", { NULL }, 3644, "tcp" },
- { "ssowatch", { NULL }, 3644, "udp" },
- { "cyc", { NULL }, 3645, "tcp" },
- { "cyc", { NULL }, 3645, "udp" },
- { "xss-srv-port", { NULL }, 3646, "tcp" },
- { "xss-srv-port", { NULL }, 3646, "udp" },
- { "splitlock-gw", { NULL }, 3647, "tcp" },
- { "splitlock-gw", { NULL }, 3647, "udp" },
- { "fjcp", { NULL }, 3648, "tcp" },
- { "fjcp", { NULL }, 3648, "udp" },
- { "nmmp", { NULL }, 3649, "tcp" },
- { "nmmp", { NULL }, 3649, "udp" },
- { "prismiq-plugin", { NULL }, 3650, "tcp" },
- { "prismiq-plugin", { NULL }, 3650, "udp" },
- { "xrpc-registry", { NULL }, 3651, "tcp" },
- { "xrpc-registry", { NULL }, 3651, "udp" },
- { "vxcrnbuport", { NULL }, 3652, "tcp" },
- { "vxcrnbuport", { NULL }, 3652, "udp" },
- { "tsp", { NULL }, 3653, "tcp" },
- { "tsp", { NULL }, 3653, "udp" },
- { "vaprtm", { NULL }, 3654, "tcp" },
- { "vaprtm", { NULL }, 3654, "udp" },
- { "abatemgr", { NULL }, 3655, "tcp" },
- { "abatemgr", { NULL }, 3655, "udp" },
- { "abatjss", { NULL }, 3656, "tcp" },
- { "abatjss", { NULL }, 3656, "udp" },
- { "immedianet-bcn", { NULL }, 3657, "tcp" },
- { "immedianet-bcn", { NULL }, 3657, "udp" },
- { "ps-ams", { NULL }, 3658, "tcp" },
- { "ps-ams", { NULL }, 3658, "udp" },
- { "apple-sasl", { NULL }, 3659, "tcp" },
- { "apple-sasl", { NULL }, 3659, "udp" },
- { "can-nds-ssl", { NULL }, 3660, "tcp" },
- { "can-nds-ssl", { NULL }, 3660, "udp" },
- { "can-ferret-ssl", { NULL }, 3661, "tcp" },
- { "can-ferret-ssl", { NULL }, 3661, "udp" },
- { "pserver", { NULL }, 3662, "tcp" },
- { "pserver", { NULL }, 3662, "udp" },
- { "dtp", { NULL }, 3663, "tcp" },
- { "dtp", { NULL }, 3663, "udp" },
- { "ups-engine", { NULL }, 3664, "tcp" },
- { "ups-engine", { NULL }, 3664, "udp" },
- { "ent-engine", { NULL }, 3665, "tcp" },
- { "ent-engine", { NULL }, 3665, "udp" },
- { "eserver-pap", { NULL }, 3666, "tcp" },
- { "eserver-pap", { NULL }, 3666, "udp" },
- { "infoexch", { NULL }, 3667, "tcp" },
- { "infoexch", { NULL }, 3667, "udp" },
- { "dell-rm-port", { NULL }, 3668, "tcp" },
- { "dell-rm-port", { NULL }, 3668, "udp" },
- { "casanswmgmt", { NULL }, 3669, "tcp" },
- { "casanswmgmt", { NULL }, 3669, "udp" },
- { "smile", { NULL }, 3670, "tcp" },
- { "smile", { NULL }, 3670, "udp" },
- { "efcp", { NULL }, 3671, "tcp" },
- { "efcp", { NULL }, 3671, "udp" },
- { "lispworks-orb", { NULL }, 3672, "tcp" },
- { "lispworks-orb", { NULL }, 3672, "udp" },
- { "mediavault-gui", { NULL }, 3673, "tcp" },
- { "mediavault-gui", { NULL }, 3673, "udp" },
- { "wininstall-ipc", { NULL }, 3674, "tcp" },
- { "wininstall-ipc", { NULL }, 3674, "udp" },
- { "calltrax", { NULL }, 3675, "tcp" },
- { "calltrax", { NULL }, 3675, "udp" },
- { "va-pacbase", { NULL }, 3676, "tcp" },
- { "va-pacbase", { NULL }, 3676, "udp" },
- { "roverlog", { NULL }, 3677, "tcp" },
- { "roverlog", { NULL }, 3677, "udp" },
- { "ipr-dglt", { NULL }, 3678, "tcp" },
- { "ipr-dglt", { NULL }, 3678, "udp" },
- { "newton-dock", { NULL }, 3679, "tcp" },
- { "newton-dock", { NULL }, 3679, "udp" },
- { "npds-tracker", { NULL }, 3680, "tcp" },
- { "npds-tracker", { NULL }, 3680, "udp" },
- { "bts-x73", { NULL }, 3681, "tcp" },
- { "bts-x73", { NULL }, 3681, "udp" },
- { "cas-mapi", { NULL }, 3682, "tcp" },
- { "cas-mapi", { NULL }, 3682, "udp" },
- { "bmc-ea", { NULL }, 3683, "tcp" },
- { "bmc-ea", { NULL }, 3683, "udp" },
- { "faxstfx-port", { NULL }, 3684, "tcp" },
- { "faxstfx-port", { NULL }, 3684, "udp" },
- { "dsx-agent", { NULL }, 3685, "tcp" },
- { "dsx-agent", { NULL }, 3685, "udp" },
- { "tnmpv2", { NULL }, 3686, "tcp" },
- { "tnmpv2", { NULL }, 3686, "udp" },
- { "simple-push", { NULL }, 3687, "tcp" },
- { "simple-push", { NULL }, 3687, "udp" },
- { "simple-push-s", { NULL }, 3688, "tcp" },
- { "simple-push-s", { NULL }, 3688, "udp" },
- { "daap", { NULL }, 3689, "tcp" },
- { "daap", { NULL }, 3689, "udp" },
- { "svn", { NULL }, 3690, "tcp" },
- { "svn", { NULL }, 3690, "udp" },
- { "magaya-network", { NULL }, 3691, "tcp" },
- { "magaya-network", { NULL }, 3691, "udp" },
- { "intelsync", { NULL }, 3692, "tcp" },
- { "intelsync", { NULL }, 3692, "udp" },
- { "bmc-data-coll", { NULL }, 3695, "tcp" },
- { "bmc-data-coll", { NULL }, 3695, "udp" },
- { "telnetcpcd", { NULL }, 3696, "tcp" },
- { "telnetcpcd", { NULL }, 3696, "udp" },
- { "nw-license", { NULL }, 3697, "tcp" },
- { "nw-license", { NULL }, 3697, "udp" },
- { "sagectlpanel", { NULL }, 3698, "tcp" },
- { "sagectlpanel", { NULL }, 3698, "udp" },
- { "kpn-icw", { NULL }, 3699, "tcp" },
- { "kpn-icw", { NULL }, 3699, "udp" },
- { "lrs-paging", { NULL }, 3700, "tcp" },
- { "lrs-paging", { NULL }, 3700, "udp" },
- { "netcelera", { NULL }, 3701, "tcp" },
- { "netcelera", { NULL }, 3701, "udp" },
- { "ws-discovery", { NULL }, 3702, "tcp" },
- { "ws-discovery", { NULL }, 3702, "udp" },
- { "adobeserver-3", { NULL }, 3703, "tcp" },
- { "adobeserver-3", { NULL }, 3703, "udp" },
- { "adobeserver-4", { NULL }, 3704, "tcp" },
- { "adobeserver-4", { NULL }, 3704, "udp" },
- { "adobeserver-5", { NULL }, 3705, "tcp" },
- { "adobeserver-5", { NULL }, 3705, "udp" },
- { "rt-event", { NULL }, 3706, "tcp" },
- { "rt-event", { NULL }, 3706, "udp" },
- { "rt-event-s", { NULL }, 3707, "tcp" },
- { "rt-event-s", { NULL }, 3707, "udp" },
- { "sun-as-iiops", { NULL }, 3708, "tcp" },
- { "sun-as-iiops", { NULL }, 3708, "udp" },
- { "ca-idms", { NULL }, 3709, "tcp" },
- { "ca-idms", { NULL }, 3709, "udp" },
- { "portgate-auth", { NULL }, 3710, "tcp" },
- { "portgate-auth", { NULL }, 3710, "udp" },
- { "edb-server2", { NULL }, 3711, "tcp" },
- { "edb-server2", { NULL }, 3711, "udp" },
- { "sentinel-ent", { NULL }, 3712, "tcp" },
- { "sentinel-ent", { NULL }, 3712, "udp" },
- { "tftps", { NULL }, 3713, "tcp" },
- { "tftps", { NULL }, 3713, "udp" },
- { "delos-dms", { NULL }, 3714, "tcp" },
- { "delos-dms", { NULL }, 3714, "udp" },
- { "anoto-rendezv", { NULL }, 3715, "tcp" },
- { "anoto-rendezv", { NULL }, 3715, "udp" },
- { "wv-csp-sms-cir", { NULL }, 3716, "tcp" },
- { "wv-csp-sms-cir", { NULL }, 3716, "udp" },
- { "wv-csp-udp-cir", { NULL }, 3717, "tcp" },
- { "wv-csp-udp-cir", { NULL }, 3717, "udp" },
- { "opus-services", { NULL }, 3718, "tcp" },
- { "opus-services", { NULL }, 3718, "udp" },
- { "itelserverport", { NULL }, 3719, "tcp" },
- { "itelserverport", { NULL }, 3719, "udp" },
- { "ufastro-instr", { NULL }, 3720, "tcp" },
- { "ufastro-instr", { NULL }, 3720, "udp" },
- { "xsync", { NULL }, 3721, "tcp" },
- { "xsync", { NULL }, 3721, "udp" },
- { "xserveraid", { NULL }, 3722, "tcp" },
- { "xserveraid", { NULL }, 3722, "udp" },
- { "sychrond", { NULL }, 3723, "tcp" },
- { "sychrond", { NULL }, 3723, "udp" },
- { "blizwow", { NULL }, 3724, "tcp" },
- { "blizwow", { NULL }, 3724, "udp" },
- { "na-er-tip", { NULL }, 3725, "tcp" },
- { "na-er-tip", { NULL }, 3725, "udp" },
- { "array-manager", { NULL }, 3726, "tcp" },
- { "array-manager", { NULL }, 3726, "udp" },
- { "e-mdu", { NULL }, 3727, "tcp" },
- { "e-mdu", { NULL }, 3727, "udp" },
- { "e-woa", { NULL }, 3728, "tcp" },
- { "e-woa", { NULL }, 3728, "udp" },
- { "fksp-audit", { NULL }, 3729, "tcp" },
- { "fksp-audit", { NULL }, 3729, "udp" },
- { "client-ctrl", { NULL }, 3730, "tcp" },
- { "client-ctrl", { NULL }, 3730, "udp" },
- { "smap", { NULL }, 3731, "tcp" },
- { "smap", { NULL }, 3731, "udp" },
- { "m-wnn", { NULL }, 3732, "tcp" },
- { "m-wnn", { NULL }, 3732, "udp" },
- { "multip-msg", { NULL }, 3733, "tcp" },
- { "multip-msg", { NULL }, 3733, "udp" },
- { "synel-data", { NULL }, 3734, "tcp" },
- { "synel-data", { NULL }, 3734, "udp" },
- { "pwdis", { NULL }, 3735, "tcp" },
- { "pwdis", { NULL }, 3735, "udp" },
- { "rs-rmi", { NULL }, 3736, "tcp" },
- { "rs-rmi", { NULL }, 3736, "udp" },
- { "xpanel", { NULL }, 3737, "tcp" },
- { "versatalk", { NULL }, 3738, "tcp" },
- { "versatalk", { NULL }, 3738, "udp" },
- { "launchbird-lm", { NULL }, 3739, "tcp" },
- { "launchbird-lm", { NULL }, 3739, "udp" },
- { "heartbeat", { NULL }, 3740, "tcp" },
- { "heartbeat", { NULL }, 3740, "udp" },
- { "wysdma", { NULL }, 3741, "tcp" },
- { "wysdma", { NULL }, 3741, "udp" },
- { "cst-port", { NULL }, 3742, "tcp" },
- { "cst-port", { NULL }, 3742, "udp" },
- { "ipcs-command", { NULL }, 3743, "tcp" },
- { "ipcs-command", { NULL }, 3743, "udp" },
- { "sasg", { NULL }, 3744, "tcp" },
- { "sasg", { NULL }, 3744, "udp" },
- { "gw-call-port", { NULL }, 3745, "tcp" },
- { "gw-call-port", { NULL }, 3745, "udp" },
- { "linktest", { NULL }, 3746, "tcp" },
- { "linktest", { NULL }, 3746, "udp" },
- { "linktest-s", { NULL }, 3747, "tcp" },
- { "linktest-s", { NULL }, 3747, "udp" },
- { "webdata", { NULL }, 3748, "tcp" },
- { "webdata", { NULL }, 3748, "udp" },
- { "cimtrak", { NULL }, 3749, "tcp" },
- { "cimtrak", { NULL }, 3749, "udp" },
- { "cbos-ip-port", { NULL }, 3750, "tcp" },
- { "cbos-ip-port", { NULL }, 3750, "udp" },
- { "gprs-cube", { NULL }, 3751, "tcp" },
- { "gprs-cube", { NULL }, 3751, "udp" },
- { "vipremoteagent", { NULL }, 3752, "tcp" },
- { "vipremoteagent", { NULL }, 3752, "udp" },
- { "nattyserver", { NULL }, 3753, "tcp" },
- { "nattyserver", { NULL }, 3753, "udp" },
- { "timestenbroker", { NULL }, 3754, "tcp" },
- { "timestenbroker", { NULL }, 3754, "udp" },
- { "sas-remote-hlp", { NULL }, 3755, "tcp" },
- { "sas-remote-hlp", { NULL }, 3755, "udp" },
- { "canon-capt", { NULL }, 3756, "tcp" },
- { "canon-capt", { NULL }, 3756, "udp" },
- { "grf-port", { NULL }, 3757, "tcp" },
- { "grf-port", { NULL }, 3757, "udp" },
- { "apw-registry", { NULL }, 3758, "tcp" },
- { "apw-registry", { NULL }, 3758, "udp" },
- { "exapt-lmgr", { NULL }, 3759, "tcp" },
- { "exapt-lmgr", { NULL }, 3759, "udp" },
- { "adtempusclient", { NULL }, 3760, "tcp" },
- { "adtempusclient", { NULL }, 3760, "udp" },
- { "gsakmp", { NULL }, 3761, "tcp" },
- { "gsakmp", { NULL }, 3761, "udp" },
- { "gbs-smp", { NULL }, 3762, "tcp" },
- { "gbs-smp", { NULL }, 3762, "udp" },
- { "xo-wave", { NULL }, 3763, "tcp" },
- { "xo-wave", { NULL }, 3763, "udp" },
- { "mni-prot-rout", { NULL }, 3764, "tcp" },
- { "mni-prot-rout", { NULL }, 3764, "udp" },
- { "rtraceroute", { NULL }, 3765, "tcp" },
- { "rtraceroute", { NULL }, 3765, "udp" },
- { "listmgr-port", { NULL }, 3767, "tcp" },
- { "listmgr-port", { NULL }, 3767, "udp" },
- { "rblcheckd", { NULL }, 3768, "tcp" },
- { "rblcheckd", { NULL }, 3768, "udp" },
- { "haipe-otnk", { NULL }, 3769, "tcp" },
- { "haipe-otnk", { NULL }, 3769, "udp" },
- { "cindycollab", { NULL }, 3770, "tcp" },
- { "cindycollab", { NULL }, 3770, "udp" },
- { "paging-port", { NULL }, 3771, "tcp" },
- { "paging-port", { NULL }, 3771, "udp" },
- { "ctp", { NULL }, 3772, "tcp" },
- { "ctp", { NULL }, 3772, "udp" },
- { "ctdhercules", { NULL }, 3773, "tcp" },
- { "ctdhercules", { NULL }, 3773, "udp" },
- { "zicom", { NULL }, 3774, "tcp" },
- { "zicom", { NULL }, 3774, "udp" },
- { "ispmmgr", { NULL }, 3775, "tcp" },
- { "ispmmgr", { NULL }, 3775, "udp" },
- { "dvcprov-port", { NULL }, 3776, "tcp" },
- { "dvcprov-port", { NULL }, 3776, "udp" },
- { "jibe-eb", { NULL }, 3777, "tcp" },
- { "jibe-eb", { NULL }, 3777, "udp" },
- { "c-h-it-port", { NULL }, 3778, "tcp" },
- { "c-h-it-port", { NULL }, 3778, "udp" },
- { "cognima", { NULL }, 3779, "tcp" },
- { "cognima", { NULL }, 3779, "udp" },
- { "nnp", { NULL }, 3780, "tcp" },
- { "nnp", { NULL }, 3780, "udp" },
- { "abcvoice-port", { NULL }, 3781, "tcp" },
- { "abcvoice-port", { NULL }, 3781, "udp" },
- { "iso-tp0s", { NULL }, 3782, "tcp" },
- { "iso-tp0s", { NULL }, 3782, "udp" },
- { "bim-pem", { NULL }, 3783, "tcp" },
- { "bim-pem", { NULL }, 3783, "udp" },
- { "bfd-control", { NULL }, 3784, "tcp" },
- { "bfd-control", { NULL }, 3784, "udp" },
- { "bfd-echo", { NULL }, 3785, "tcp" },
- { "bfd-echo", { NULL }, 3785, "udp" },
- { "upstriggervsw", { NULL }, 3786, "tcp" },
- { "upstriggervsw", { NULL }, 3786, "udp" },
- { "fintrx", { NULL }, 3787, "tcp" },
- { "fintrx", { NULL }, 3787, "udp" },
- { "isrp-port", { NULL }, 3788, "tcp" },
- { "isrp-port", { NULL }, 3788, "udp" },
- { "remotedeploy", { NULL }, 3789, "tcp" },
- { "remotedeploy", { NULL }, 3789, "udp" },
- { "quickbooksrds", { NULL }, 3790, "tcp" },
- { "quickbooksrds", { NULL }, 3790, "udp" },
- { "tvnetworkvideo", { NULL }, 3791, "tcp" },
- { "tvnetworkvideo", { NULL }, 3791, "udp" },
- { "sitewatch", { NULL }, 3792, "tcp" },
- { "sitewatch", { NULL }, 3792, "udp" },
- { "dcsoftware", { NULL }, 3793, "tcp" },
- { "dcsoftware", { NULL }, 3793, "udp" },
- { "jaus", { NULL }, 3794, "tcp" },
- { "jaus", { NULL }, 3794, "udp" },
- { "myblast", { NULL }, 3795, "tcp" },
- { "myblast", { NULL }, 3795, "udp" },
- { "spw-dialer", { NULL }, 3796, "tcp" },
- { "spw-dialer", { NULL }, 3796, "udp" },
- { "idps", { NULL }, 3797, "tcp" },
- { "idps", { NULL }, 3797, "udp" },
- { "minilock", { NULL }, 3798, "tcp" },
- { "minilock", { NULL }, 3798, "udp" },
- { "radius-dynauth", { NULL }, 3799, "tcp" },
- { "radius-dynauth", { NULL }, 3799, "udp" },
- { "pwgpsi", { NULL }, 3800, "tcp" },
- { "pwgpsi", { NULL }, 3800, "udp" },
- { "ibm-mgr", { NULL }, 3801, "tcp" },
- { "ibm-mgr", { NULL }, 3801, "udp" },
- { "vhd", { NULL }, 3802, "tcp" },
- { "vhd", { NULL }, 3802, "udp" },
- { "soniqsync", { NULL }, 3803, "tcp" },
- { "soniqsync", { NULL }, 3803, "udp" },
- { "iqnet-port", { NULL }, 3804, "tcp" },
- { "iqnet-port", { NULL }, 3804, "udp" },
- { "tcpdataserver", { NULL }, 3805, "tcp" },
- { "tcpdataserver", { NULL }, 3805, "udp" },
- { "wsmlb", { NULL }, 3806, "tcp" },
- { "wsmlb", { NULL }, 3806, "udp" },
- { "spugna", { NULL }, 3807, "tcp" },
- { "spugna", { NULL }, 3807, "udp" },
- { "sun-as-iiops-ca", { NULL }, 3808, "tcp" },
- { "sun-as-iiops-ca", { NULL }, 3808, "udp" },
- { "apocd", { NULL }, 3809, "tcp" },
- { "apocd", { NULL }, 3809, "udp" },
- { "wlanauth", { NULL }, 3810, "tcp" },
- { "wlanauth", { NULL }, 3810, "udp" },
- { "amp", { NULL }, 3811, "tcp" },
- { "amp", { NULL }, 3811, "udp" },
- { "neto-wol-server", { NULL }, 3812, "tcp" },
- { "neto-wol-server", { NULL }, 3812, "udp" },
- { "rap-ip", { NULL }, 3813, "tcp" },
- { "rap-ip", { NULL }, 3813, "udp" },
- { "neto-dcs", { NULL }, 3814, "tcp" },
- { "neto-dcs", { NULL }, 3814, "udp" },
- { "lansurveyorxml", { NULL }, 3815, "tcp" },
- { "lansurveyorxml", { NULL }, 3815, "udp" },
- { "sunlps-http", { NULL }, 3816, "tcp" },
- { "sunlps-http", { NULL }, 3816, "udp" },
- { "tapeware", { NULL }, 3817, "tcp" },
- { "tapeware", { NULL }, 3817, "udp" },
- { "crinis-hb", { NULL }, 3818, "tcp" },
- { "crinis-hb", { NULL }, 3818, "udp" },
- { "epl-slp", { NULL }, 3819, "tcp" },
- { "epl-slp", { NULL }, 3819, "udp" },
- { "scp", { NULL }, 3820, "tcp" },
- { "scp", { NULL }, 3820, "udp" },
- { "pmcp", { NULL }, 3821, "tcp" },
- { "pmcp", { NULL }, 3821, "udp" },
- { "acp-discovery", { NULL }, 3822, "tcp" },
- { "acp-discovery", { NULL }, 3822, "udp" },
- { "acp-conduit", { NULL }, 3823, "tcp" },
- { "acp-conduit", { NULL }, 3823, "udp" },
- { "acp-policy", { NULL }, 3824, "tcp" },
- { "acp-policy", { NULL }, 3824, "udp" },
- { "ffserver", { NULL }, 3825, "tcp" },
- { "ffserver", { NULL }, 3825, "udp" },
- { "wormux", { NULL }, 3826, "tcp" },
- { "wormux", { NULL }, 3826, "udp" },
- { "netmpi", { NULL }, 3827, "tcp" },
- { "netmpi", { NULL }, 3827, "udp" },
- { "neteh", { NULL }, 3828, "tcp" },
- { "neteh", { NULL }, 3828, "udp" },
- { "neteh-ext", { NULL }, 3829, "tcp" },
- { "neteh-ext", { NULL }, 3829, "udp" },
- { "cernsysmgmtagt", { NULL }, 3830, "tcp" },
- { "cernsysmgmtagt", { NULL }, 3830, "udp" },
- { "dvapps", { NULL }, 3831, "tcp" },
- { "dvapps", { NULL }, 3831, "udp" },
- { "xxnetserver", { NULL }, 3832, "tcp" },
- { "xxnetserver", { NULL }, 3832, "udp" },
- { "aipn-auth", { NULL }, 3833, "tcp" },
- { "aipn-auth", { NULL }, 3833, "udp" },
- { "spectardata", { NULL }, 3834, "tcp" },
- { "spectardata", { NULL }, 3834, "udp" },
- { "spectardb", { NULL }, 3835, "tcp" },
- { "spectardb", { NULL }, 3835, "udp" },
- { "markem-dcp", { NULL }, 3836, "tcp" },
- { "markem-dcp", { NULL }, 3836, "udp" },
- { "mkm-discovery", { NULL }, 3837, "tcp" },
- { "mkm-discovery", { NULL }, 3837, "udp" },
- { "sos", { NULL }, 3838, "tcp" },
- { "sos", { NULL }, 3838, "udp" },
- { "amx-rms", { NULL }, 3839, "tcp" },
- { "amx-rms", { NULL }, 3839, "udp" },
- { "flirtmitmir", { NULL }, 3840, "tcp" },
- { "flirtmitmir", { NULL }, 3840, "udp" },
- { "zfirm-shiprush3", { NULL }, 3841, "tcp" },
- { "zfirm-shiprush3", { NULL }, 3841, "udp" },
- { "nhci", { NULL }, 3842, "tcp" },
- { "nhci", { NULL }, 3842, "udp" },
- { "quest-agent", { NULL }, 3843, "tcp" },
- { "quest-agent", { NULL }, 3843, "udp" },
- { "rnm", { NULL }, 3844, "tcp" },
- { "rnm", { NULL }, 3844, "udp" },
- { "v-one-spp", { NULL }, 3845, "tcp" },
- { "v-one-spp", { NULL }, 3845, "udp" },
- { "an-pcp", { NULL }, 3846, "tcp" },
- { "an-pcp", { NULL }, 3846, "udp" },
- { "msfw-control", { NULL }, 3847, "tcp" },
- { "msfw-control", { NULL }, 3847, "udp" },
- { "item", { NULL }, 3848, "tcp" },
- { "item", { NULL }, 3848, "udp" },
- { "spw-dnspreload", { NULL }, 3849, "tcp" },
- { "spw-dnspreload", { NULL }, 3849, "udp" },
- { "qtms-bootstrap", { NULL }, 3850, "tcp" },
- { "qtms-bootstrap", { NULL }, 3850, "udp" },
- { "spectraport", { NULL }, 3851, "tcp" },
- { "spectraport", { NULL }, 3851, "udp" },
- { "sse-app-config", { NULL }, 3852, "tcp" },
- { "sse-app-config", { NULL }, 3852, "udp" },
- { "sscan", { NULL }, 3853, "tcp" },
- { "sscan", { NULL }, 3853, "udp" },
- { "stryker-com", { NULL }, 3854, "tcp" },
- { "stryker-com", { NULL }, 3854, "udp" },
- { "opentrac", { NULL }, 3855, "tcp" },
- { "opentrac", { NULL }, 3855, "udp" },
- { "informer", { NULL }, 3856, "tcp" },
- { "informer", { NULL }, 3856, "udp" },
- { "trap-port", { NULL }, 3857, "tcp" },
- { "trap-port", { NULL }, 3857, "udp" },
- { "trap-port-mom", { NULL }, 3858, "tcp" },
- { "trap-port-mom", { NULL }, 3858, "udp" },
- { "nav-port", { NULL }, 3859, "tcp" },
- { "nav-port", { NULL }, 3859, "udp" },
- { "sasp", { NULL }, 3860, "tcp" },
- { "sasp", { NULL }, 3860, "udp" },
- { "winshadow-hd", { NULL }, 3861, "tcp" },
- { "winshadow-hd", { NULL }, 3861, "udp" },
- { "giga-pocket", { NULL }, 3862, "tcp" },
- { "giga-pocket", { NULL }, 3862, "udp" },
- { "asap-tcp", { NULL }, 3863, "tcp" },
- { "asap-udp", { NULL }, 3863, "udp" },
- { "asap-sctp", { NULL }, 3863, "sctp" },
- { "asap-tcp-tls", { NULL }, 3864, "tcp" },
- { "asap-sctp-tls", { NULL }, 3864, "sctp" },
- { "xpl", { NULL }, 3865, "tcp" },
- { "xpl", { NULL }, 3865, "udp" },
- { "dzdaemon", { NULL }, 3866, "tcp" },
- { "dzdaemon", { NULL }, 3866, "udp" },
- { "dzoglserver", { NULL }, 3867, "tcp" },
- { "dzoglserver", { NULL }, 3867, "udp" },
- { "diameter", { NULL }, 3868, "tcp" },
- { "diameter", { NULL }, 3868, "sctp" },
- { "ovsam-mgmt", { NULL }, 3869, "tcp" },
- { "ovsam-mgmt", { NULL }, 3869, "udp" },
- { "ovsam-d-agent", { NULL }, 3870, "tcp" },
- { "ovsam-d-agent", { NULL }, 3870, "udp" },
- { "avocent-adsap", { NULL }, 3871, "tcp" },
- { "avocent-adsap", { NULL }, 3871, "udp" },
- { "oem-agent", { NULL }, 3872, "tcp" },
- { "oem-agent", { NULL }, 3872, "udp" },
- { "fagordnc", { NULL }, 3873, "tcp" },
- { "fagordnc", { NULL }, 3873, "udp" },
- { "sixxsconfig", { NULL }, 3874, "tcp" },
- { "sixxsconfig", { NULL }, 3874, "udp" },
- { "pnbscada", { NULL }, 3875, "tcp" },
- { "pnbscada", { NULL }, 3875, "udp" },
- { "dl_agent", { NULL }, 3876, "tcp" },
- { "dl_agent", { NULL }, 3876, "udp" },
- { "xmpcr-interface", { NULL }, 3877, "tcp" },
- { "xmpcr-interface", { NULL }, 3877, "udp" },
- { "fotogcad", { NULL }, 3878, "tcp" },
- { "fotogcad", { NULL }, 3878, "udp" },
- { "appss-lm", { NULL }, 3879, "tcp" },
- { "appss-lm", { NULL }, 3879, "udp" },
- { "igrs", { NULL }, 3880, "tcp" },
- { "igrs", { NULL }, 3880, "udp" },
- { "idac", { NULL }, 3881, "tcp" },
- { "idac", { NULL }, 3881, "udp" },
- { "msdts1", { NULL }, 3882, "tcp" },
- { "msdts1", { NULL }, 3882, "udp" },
- { "vrpn", { NULL }, 3883, "tcp" },
- { "vrpn", { NULL }, 3883, "udp" },
- { "softrack-meter", { NULL }, 3884, "tcp" },
- { "softrack-meter", { NULL }, 3884, "udp" },
- { "topflow-ssl", { NULL }, 3885, "tcp" },
- { "topflow-ssl", { NULL }, 3885, "udp" },
- { "nei-management", { NULL }, 3886, "tcp" },
- { "nei-management", { NULL }, 3886, "udp" },
- { "ciphire-data", { NULL }, 3887, "tcp" },
- { "ciphire-data", { NULL }, 3887, "udp" },
- { "ciphire-serv", { NULL }, 3888, "tcp" },
- { "ciphire-serv", { NULL }, 3888, "udp" },
- { "dandv-tester", { NULL }, 3889, "tcp" },
- { "dandv-tester", { NULL }, 3889, "udp" },
- { "ndsconnect", { NULL }, 3890, "tcp" },
- { "ndsconnect", { NULL }, 3890, "udp" },
- { "rtc-pm-port", { NULL }, 3891, "tcp" },
- { "rtc-pm-port", { NULL }, 3891, "udp" },
- { "pcc-image-port", { NULL }, 3892, "tcp" },
- { "pcc-image-port", { NULL }, 3892, "udp" },
- { "cgi-starapi", { NULL }, 3893, "tcp" },
- { "cgi-starapi", { NULL }, 3893, "udp" },
- { "syam-agent", { NULL }, 3894, "tcp" },
- { "syam-agent", { NULL }, 3894, "udp" },
- { "syam-smc", { NULL }, 3895, "tcp" },
- { "syam-smc", { NULL }, 3895, "udp" },
- { "sdo-tls", { NULL }, 3896, "tcp" },
- { "sdo-tls", { NULL }, 3896, "udp" },
- { "sdo-ssh", { NULL }, 3897, "tcp" },
- { "sdo-ssh", { NULL }, 3897, "udp" },
- { "senip", { NULL }, 3898, "tcp" },
- { "senip", { NULL }, 3898, "udp" },
- { "itv-control", { NULL }, 3899, "tcp" },
- { "itv-control", { NULL }, 3899, "udp" },
- { "udt_os", { NULL }, 3900, "tcp" },
- { "udt_os", { NULL }, 3900, "udp" },
- { "nimsh", { NULL }, 3901, "tcp" },
- { "nimsh", { NULL }, 3901, "udp" },
- { "nimaux", { NULL }, 3902, "tcp" },
- { "nimaux", { NULL }, 3902, "udp" },
- { "charsetmgr", { NULL }, 3903, "tcp" },
- { "charsetmgr", { NULL }, 3903, "udp" },
- { "omnilink-port", { NULL }, 3904, "tcp" },
- { "omnilink-port", { NULL }, 3904, "udp" },
- { "mupdate", { NULL }, 3905, "tcp" },
- { "mupdate", { NULL }, 3905, "udp" },
- { "topovista-data", { NULL }, 3906, "tcp" },
- { "topovista-data", { NULL }, 3906, "udp" },
- { "imoguia-port", { NULL }, 3907, "tcp" },
- { "imoguia-port", { NULL }, 3907, "udp" },
- { "hppronetman", { NULL }, 3908, "tcp" },
- { "hppronetman", { NULL }, 3908, "udp" },
- { "surfcontrolcpa", { NULL }, 3909, "tcp" },
- { "surfcontrolcpa", { NULL }, 3909, "udp" },
- { "prnrequest", { NULL }, 3910, "tcp" },
- { "prnrequest", { NULL }, 3910, "udp" },
- { "prnstatus", { NULL }, 3911, "tcp" },
- { "prnstatus", { NULL }, 3911, "udp" },
- { "gbmt-stars", { NULL }, 3912, "tcp" },
- { "gbmt-stars", { NULL }, 3912, "udp" },
- { "listcrt-port", { NULL }, 3913, "tcp" },
- { "listcrt-port", { NULL }, 3913, "udp" },
- { "listcrt-port-2", { NULL }, 3914, "tcp" },
- { "listcrt-port-2", { NULL }, 3914, "udp" },
- { "agcat", { NULL }, 3915, "tcp" },
- { "agcat", { NULL }, 3915, "udp" },
- { "wysdmc", { NULL }, 3916, "tcp" },
- { "wysdmc", { NULL }, 3916, "udp" },
- { "aftmux", { NULL }, 3917, "tcp" },
- { "aftmux", { NULL }, 3917, "udp" },
- { "pktcablemmcops", { NULL }, 3918, "tcp" },
- { "pktcablemmcops", { NULL }, 3918, "udp" },
- { "hyperip", { NULL }, 3919, "tcp" },
- { "hyperip", { NULL }, 3919, "udp" },
- { "exasoftport1", { NULL }, 3920, "tcp" },
- { "exasoftport1", { NULL }, 3920, "udp" },
- { "herodotus-net", { NULL }, 3921, "tcp" },
- { "herodotus-net", { NULL }, 3921, "udp" },
- { "sor-update", { NULL }, 3922, "tcp" },
- { "sor-update", { NULL }, 3922, "udp" },
- { "symb-sb-port", { NULL }, 3923, "tcp" },
- { "symb-sb-port", { NULL }, 3923, "udp" },
- { "mpl-gprs-port", { NULL }, 3924, "tcp" },
- { "mpl-gprs-port", { NULL }, 3924, "udp" },
- { "zmp", { NULL }, 3925, "tcp" },
- { "zmp", { NULL }, 3925, "udp" },
- { "winport", { NULL }, 3926, "tcp" },
- { "winport", { NULL }, 3926, "udp" },
- { "natdataservice", { NULL }, 3927, "tcp" },
- { "natdataservice", { NULL }, 3927, "udp" },
- { "netboot-pxe", { NULL }, 3928, "tcp" },
- { "netboot-pxe", { NULL }, 3928, "udp" },
- { "smauth-port", { NULL }, 3929, "tcp" },
- { "smauth-port", { NULL }, 3929, "udp" },
- { "syam-webserver", { NULL }, 3930, "tcp" },
- { "syam-webserver", { NULL }, 3930, "udp" },
- { "msr-plugin-port", { NULL }, 3931, "tcp" },
- { "msr-plugin-port", { NULL }, 3931, "udp" },
- { "dyn-site", { NULL }, 3932, "tcp" },
- { "dyn-site", { NULL }, 3932, "udp" },
- { "plbserve-port", { NULL }, 3933, "tcp" },
- { "plbserve-port", { NULL }, 3933, "udp" },
- { "sunfm-port", { NULL }, 3934, "tcp" },
- { "sunfm-port", { NULL }, 3934, "udp" },
- { "sdp-portmapper", { NULL }, 3935, "tcp" },
- { "sdp-portmapper", { NULL }, 3935, "udp" },
- { "mailprox", { NULL }, 3936, "tcp" },
- { "mailprox", { NULL }, 3936, "udp" },
- { "dvbservdsc", { NULL }, 3937, "tcp" },
- { "dvbservdsc", { NULL }, 3937, "udp" },
- { "dbcontrol_agent", { NULL }, 3938, "tcp" },
- { "dbcontrol_agent", { NULL }, 3938, "udp" },
- { "aamp", { NULL }, 3939, "tcp" },
- { "aamp", { NULL }, 3939, "udp" },
- { "xecp-node", { NULL }, 3940, "tcp" },
- { "xecp-node", { NULL }, 3940, "udp" },
- { "homeportal-web", { NULL }, 3941, "tcp" },
- { "homeportal-web", { NULL }, 3941, "udp" },
- { "srdp", { NULL }, 3942, "tcp" },
- { "srdp", { NULL }, 3942, "udp" },
- { "tig", { NULL }, 3943, "tcp" },
- { "tig", { NULL }, 3943, "udp" },
- { "sops", { NULL }, 3944, "tcp" },
- { "sops", { NULL }, 3944, "udp" },
- { "emcads", { NULL }, 3945, "tcp" },
- { "emcads", { NULL }, 3945, "udp" },
- { "backupedge", { NULL }, 3946, "tcp" },
- { "backupedge", { NULL }, 3946, "udp" },
- { "ccp", { NULL }, 3947, "tcp" },
- { "ccp", { NULL }, 3947, "udp" },
- { "apdap", { NULL }, 3948, "tcp" },
- { "apdap", { NULL }, 3948, "udp" },
- { "drip", { NULL }, 3949, "tcp" },
- { "drip", { NULL }, 3949, "udp" },
- { "namemunge", { NULL }, 3950, "tcp" },
- { "namemunge", { NULL }, 3950, "udp" },
- { "pwgippfax", { NULL }, 3951, "tcp" },
- { "pwgippfax", { NULL }, 3951, "udp" },
- { "i3-sessionmgr", { NULL }, 3952, "tcp" },
- { "i3-sessionmgr", { NULL }, 3952, "udp" },
- { "xmlink-connect", { NULL }, 3953, "tcp" },
- { "xmlink-connect", { NULL }, 3953, "udp" },
- { "adrep", { NULL }, 3954, "tcp" },
- { "adrep", { NULL }, 3954, "udp" },
- { "p2pcommunity", { NULL }, 3955, "tcp" },
- { "p2pcommunity", { NULL }, 3955, "udp" },
- { "gvcp", { NULL }, 3956, "tcp" },
- { "gvcp", { NULL }, 3956, "udp" },
- { "mqe-broker", { NULL }, 3957, "tcp" },
- { "mqe-broker", { NULL }, 3957, "udp" },
- { "mqe-agent", { NULL }, 3958, "tcp" },
- { "mqe-agent", { NULL }, 3958, "udp" },
- { "treehopper", { NULL }, 3959, "tcp" },
- { "treehopper", { NULL }, 3959, "udp" },
- { "bess", { NULL }, 3960, "tcp" },
- { "bess", { NULL }, 3960, "udp" },
- { "proaxess", { NULL }, 3961, "tcp" },
- { "proaxess", { NULL }, 3961, "udp" },
- { "sbi-agent", { NULL }, 3962, "tcp" },
- { "sbi-agent", { NULL }, 3962, "udp" },
- { "thrp", { NULL }, 3963, "tcp" },
- { "thrp", { NULL }, 3963, "udp" },
- { "sasggprs", { NULL }, 3964, "tcp" },
- { "sasggprs", { NULL }, 3964, "udp" },
- { "ati-ip-to-ncpe", { NULL }, 3965, "tcp" },
- { "ati-ip-to-ncpe", { NULL }, 3965, "udp" },
- { "bflckmgr", { NULL }, 3966, "tcp" },
- { "bflckmgr", { NULL }, 3966, "udp" },
- { "ppsms", { NULL }, 3967, "tcp" },
- { "ppsms", { NULL }, 3967, "udp" },
- { "ianywhere-dbns", { NULL }, 3968, "tcp" },
- { "ianywhere-dbns", { NULL }, 3968, "udp" },
- { "landmarks", { NULL }, 3969, "tcp" },
- { "landmarks", { NULL }, 3969, "udp" },
- { "lanrevagent", { NULL }, 3970, "tcp" },
- { "lanrevagent", { NULL }, 3970, "udp" },
- { "lanrevserver", { NULL }, 3971, "tcp" },
- { "lanrevserver", { NULL }, 3971, "udp" },
- { "iconp", { NULL }, 3972, "tcp" },
- { "iconp", { NULL }, 3972, "udp" },
- { "progistics", { NULL }, 3973, "tcp" },
- { "progistics", { NULL }, 3973, "udp" },
- { "citysearch", { NULL }, 3974, "tcp" },
- { "citysearch", { NULL }, 3974, "udp" },
- { "airshot", { NULL }, 3975, "tcp" },
- { "airshot", { NULL }, 3975, "udp" },
- { "opswagent", { NULL }, 3976, "tcp" },
- { "opswagent", { NULL }, 3976, "udp" },
- { "opswmanager", { NULL }, 3977, "tcp" },
- { "opswmanager", { NULL }, 3977, "udp" },
- { "secure-cfg-svr", { NULL }, 3978, "tcp" },
- { "secure-cfg-svr", { NULL }, 3978, "udp" },
- { "smwan", { NULL }, 3979, "tcp" },
- { "smwan", { NULL }, 3979, "udp" },
- { "acms", { NULL }, 3980, "tcp" },
- { "acms", { NULL }, 3980, "udp" },
- { "starfish", { NULL }, 3981, "tcp" },
- { "starfish", { NULL }, 3981, "udp" },
- { "eis", { NULL }, 3982, "tcp" },
- { "eis", { NULL }, 3982, "udp" },
- { "eisp", { NULL }, 3983, "tcp" },
- { "eisp", { NULL }, 3983, "udp" },
- { "mapper-nodemgr", { NULL }, 3984, "tcp" },
- { "mapper-nodemgr", { NULL }, 3984, "udp" },
- { "mapper-mapethd", { NULL }, 3985, "tcp" },
- { "mapper-mapethd", { NULL }, 3985, "udp" },
- { "mapper-ws_ethd", { NULL }, 3986, "tcp" },
- { "mapper-ws_ethd", { NULL }, 3986, "udp" },
- { "centerline", { NULL }, 3987, "tcp" },
- { "centerline", { NULL }, 3987, "udp" },
- { "dcs-config", { NULL }, 3988, "tcp" },
- { "dcs-config", { NULL }, 3988, "udp" },
- { "bv-queryengine", { NULL }, 3989, "tcp" },
- { "bv-queryengine", { NULL }, 3989, "udp" },
- { "bv-is", { NULL }, 3990, "tcp" },
- { "bv-is", { NULL }, 3990, "udp" },
- { "bv-smcsrv", { NULL }, 3991, "tcp" },
- { "bv-smcsrv", { NULL }, 3991, "udp" },
- { "bv-ds", { NULL }, 3992, "tcp" },
- { "bv-ds", { NULL }, 3992, "udp" },
- { "bv-agent", { NULL }, 3993, "tcp" },
- { "bv-agent", { NULL }, 3993, "udp" },
- { "iss-mgmt-ssl", { NULL }, 3995, "tcp" },
- { "iss-mgmt-ssl", { NULL }, 3995, "udp" },
- { "abcsoftware", { NULL }, 3996, "tcp" },
- { "abcsoftware", { NULL }, 3996, "udp" },
- { "agentsease-db", { NULL }, 3997, "tcp" },
- { "agentsease-db", { NULL }, 3997, "udp" },
- { "dnx", { NULL }, 3998, "tcp" },
- { "dnx", { NULL }, 3998, "udp" },
- { "nvcnet", { NULL }, 3999, "tcp" },
- { "nvcnet", { NULL }, 3999, "udp" },
- { "terabase", { NULL }, 4000, "tcp" },
- { "terabase", { NULL }, 4000, "udp" },
- { "newoak", { NULL }, 4001, "tcp" },
- { "newoak", { NULL }, 4001, "udp" },
- { "pxc-spvr-ft", { NULL }, 4002, "tcp" },
- { "pxc-spvr-ft", { NULL }, 4002, "udp" },
- { "pxc-splr-ft", { NULL }, 4003, "tcp" },
- { "pxc-splr-ft", { NULL }, 4003, "udp" },
- { "pxc-roid", { NULL }, 4004, "tcp" },
- { "pxc-roid", { NULL }, 4004, "udp" },
- { "pxc-pin", { NULL }, 4005, "tcp" },
- { "pxc-pin", { NULL }, 4005, "udp" },
- { "pxc-spvr", { NULL }, 4006, "tcp" },
- { "pxc-spvr", { NULL }, 4006, "udp" },
- { "pxc-splr", { NULL }, 4007, "tcp" },
- { "pxc-splr", { NULL }, 4007, "udp" },
- { "netcheque", { NULL }, 4008, "tcp" },
- { "netcheque", { NULL }, 4008, "udp" },
- { "chimera-hwm", { NULL }, 4009, "tcp" },
- { "chimera-hwm", { NULL }, 4009, "udp" },
- { "samsung-unidex", { NULL }, 4010, "tcp" },
- { "samsung-unidex", { NULL }, 4010, "udp" },
- { "altserviceboot", { NULL }, 4011, "tcp" },
- { "altserviceboot", { NULL }, 4011, "udp" },
- { "pda-gate", { NULL }, 4012, "tcp" },
- { "pda-gate", { NULL }, 4012, "udp" },
- { "acl-manager", { NULL }, 4013, "tcp" },
- { "acl-manager", { NULL }, 4013, "udp" },
- { "taiclock", { NULL }, 4014, "tcp" },
- { "taiclock", { NULL }, 4014, "udp" },
- { "talarian-mcast1", { NULL }, 4015, "tcp" },
- { "talarian-mcast1", { NULL }, 4015, "udp" },
- { "talarian-mcast2", { NULL }, 4016, "tcp" },
- { "talarian-mcast2", { NULL }, 4016, "udp" },
- { "talarian-mcast3", { NULL }, 4017, "tcp" },
- { "talarian-mcast3", { NULL }, 4017, "udp" },
- { "talarian-mcast4", { NULL }, 4018, "tcp" },
- { "talarian-mcast4", { NULL }, 4018, "udp" },
- { "talarian-mcast5", { NULL }, 4019, "tcp" },
- { "talarian-mcast5", { NULL }, 4019, "udp" },
- { "trap", { NULL }, 4020, "tcp" },
- { "trap", { NULL }, 4020, "udp" },
- { "nexus-portal", { NULL }, 4021, "tcp" },
- { "nexus-portal", { NULL }, 4021, "udp" },
- { "dnox", { NULL }, 4022, "tcp" },
- { "dnox", { NULL }, 4022, "udp" },
- { "esnm-zoning", { NULL }, 4023, "tcp" },
- { "esnm-zoning", { NULL }, 4023, "udp" },
- { "tnp1-port", { NULL }, 4024, "tcp" },
- { "tnp1-port", { NULL }, 4024, "udp" },
- { "partimage", { NULL }, 4025, "tcp" },
- { "partimage", { NULL }, 4025, "udp" },
- { "as-debug", { NULL }, 4026, "tcp" },
- { "as-debug", { NULL }, 4026, "udp" },
- { "bxp", { NULL }, 4027, "tcp" },
- { "bxp", { NULL }, 4027, "udp" },
- { "dtserver-port", { NULL }, 4028, "tcp" },
- { "dtserver-port", { NULL }, 4028, "udp" },
- { "ip-qsig", { NULL }, 4029, "tcp" },
- { "ip-qsig", { NULL }, 4029, "udp" },
- { "jdmn-port", { NULL }, 4030, "tcp" },
- { "jdmn-port", { NULL }, 4030, "udp" },
- { "suucp", { NULL }, 4031, "tcp" },
- { "suucp", { NULL }, 4031, "udp" },
- { "vrts-auth-port", { NULL }, 4032, "tcp" },
- { "vrts-auth-port", { NULL }, 4032, "udp" },
- { "sanavigator", { NULL }, 4033, "tcp" },
- { "sanavigator", { NULL }, 4033, "udp" },
- { "ubxd", { NULL }, 4034, "tcp" },
- { "ubxd", { NULL }, 4034, "udp" },
- { "wap-push-http", { NULL }, 4035, "tcp" },
- { "wap-push-http", { NULL }, 4035, "udp" },
- { "wap-push-https", { NULL }, 4036, "tcp" },
- { "wap-push-https", { NULL }, 4036, "udp" },
- { "ravehd", { NULL }, 4037, "tcp" },
- { "ravehd", { NULL }, 4037, "udp" },
- { "fazzt-ptp", { NULL }, 4038, "tcp" },
- { "fazzt-ptp", { NULL }, 4038, "udp" },
- { "fazzt-admin", { NULL }, 4039, "tcp" },
- { "fazzt-admin", { NULL }, 4039, "udp" },
- { "yo-main", { NULL }, 4040, "tcp" },
- { "yo-main", { NULL }, 4040, "udp" },
- { "houston", { NULL }, 4041, "tcp" },
- { "houston", { NULL }, 4041, "udp" },
- { "ldxp", { NULL }, 4042, "tcp" },
- { "ldxp", { NULL }, 4042, "udp" },
- { "nirp", { NULL }, 4043, "tcp" },
- { "nirp", { NULL }, 4043, "udp" },
- { "ltp", { NULL }, 4044, "tcp" },
- { "ltp", { NULL }, 4044, "udp" },
- { "npp", { NULL }, 4045, "tcp" },
- { "npp", { NULL }, 4045, "udp" },
- { "acp-proto", { NULL }, 4046, "tcp" },
- { "acp-proto", { NULL }, 4046, "udp" },
- { "ctp-state", { NULL }, 4047, "tcp" },
- { "ctp-state", { NULL }, 4047, "udp" },
- { "wafs", { NULL }, 4049, "tcp" },
- { "wafs", { NULL }, 4049, "udp" },
- { "cisco-wafs", { NULL }, 4050, "tcp" },
- { "cisco-wafs", { NULL }, 4050, "udp" },
- { "cppdp", { NULL }, 4051, "tcp" },
- { "cppdp", { NULL }, 4051, "udp" },
- { "interact", { NULL }, 4052, "tcp" },
- { "interact", { NULL }, 4052, "udp" },
- { "ccu-comm-1", { NULL }, 4053, "tcp" },
- { "ccu-comm-1", { NULL }, 4053, "udp" },
- { "ccu-comm-2", { NULL }, 4054, "tcp" },
- { "ccu-comm-2", { NULL }, 4054, "udp" },
- { "ccu-comm-3", { NULL }, 4055, "tcp" },
- { "ccu-comm-3", { NULL }, 4055, "udp" },
- { "lms", { NULL }, 4056, "tcp" },
- { "lms", { NULL }, 4056, "udp" },
- { "wfm", { NULL }, 4057, "tcp" },
- { "wfm", { NULL }, 4057, "udp" },
- { "kingfisher", { NULL }, 4058, "tcp" },
- { "kingfisher", { NULL }, 4058, "udp" },
- { "dlms-cosem", { NULL }, 4059, "tcp" },
- { "dlms-cosem", { NULL }, 4059, "udp" },
- { "dsmeter_iatc", { NULL }, 4060, "tcp" },
- { "dsmeter_iatc", { NULL }, 4060, "udp" },
- { "ice-location", { NULL }, 4061, "tcp" },
- { "ice-location", { NULL }, 4061, "udp" },
- { "ice-slocation", { NULL }, 4062, "tcp" },
- { "ice-slocation", { NULL }, 4062, "udp" },
- { "ice-router", { NULL }, 4063, "tcp" },
- { "ice-router", { NULL }, 4063, "udp" },
- { "ice-srouter", { NULL }, 4064, "tcp" },
- { "ice-srouter", { NULL }, 4064, "udp" },
- { "avanti_cdp", { NULL }, 4065, "tcp" },
- { "avanti_cdp", { NULL }, 4065, "udp" },
- { "pmas", { NULL }, 4066, "tcp" },
- { "pmas", { NULL }, 4066, "udp" },
- { "idp", { NULL }, 4067, "tcp" },
- { "idp", { NULL }, 4067, "udp" },
- { "ipfltbcst", { NULL }, 4068, "tcp" },
- { "ipfltbcst", { NULL }, 4068, "udp" },
- { "minger", { NULL }, 4069, "tcp" },
- { "minger", { NULL }, 4069, "udp" },
- { "tripe", { NULL }, 4070, "tcp" },
- { "tripe", { NULL }, 4070, "udp" },
- { "aibkup", { NULL }, 4071, "tcp" },
- { "aibkup", { NULL }, 4071, "udp" },
- { "zieto-sock", { NULL }, 4072, "tcp" },
- { "zieto-sock", { NULL }, 4072, "udp" },
- { "iRAPP", { NULL }, 4073, "tcp" },
- { "iRAPP", { NULL }, 4073, "udp" },
- { "cequint-cityid", { NULL }, 4074, "tcp" },
- { "cequint-cityid", { NULL }, 4074, "udp" },
- { "perimlan", { NULL }, 4075, "tcp" },
- { "perimlan", { NULL }, 4075, "udp" },
- { "seraph", { NULL }, 4076, "tcp" },
- { "seraph", { NULL }, 4076, "udp" },
- { "ascomalarm", { NULL }, 4077, "udp" },
- { "cssp", { NULL }, 4078, "tcp" },
- { "santools", { NULL }, 4079, "tcp" },
- { "santools", { NULL }, 4079, "udp" },
- { "lorica-in", { NULL }, 4080, "tcp" },
- { "lorica-in", { NULL }, 4080, "udp" },
- { "lorica-in-sec", { NULL }, 4081, "tcp" },
- { "lorica-in-sec", { NULL }, 4081, "udp" },
- { "lorica-out", { NULL }, 4082, "tcp" },
- { "lorica-out", { NULL }, 4082, "udp" },
- { "lorica-out-sec", { NULL }, 4083, "tcp" },
- { "lorica-out-sec", { NULL }, 4083, "udp" },
- { "fortisphere-vm", { NULL }, 4084, "udp" },
- { "ezmessagesrv", { NULL }, 4085, "tcp" },
- { "ftsync", { NULL }, 4086, "udp" },
- { "applusservice", { NULL }, 4087, "tcp" },
- { "npsp", { NULL }, 4088, "tcp" },
- { "opencore", { NULL }, 4089, "tcp" },
- { "opencore", { NULL }, 4089, "udp" },
- { "omasgport", { NULL }, 4090, "tcp" },
- { "omasgport", { NULL }, 4090, "udp" },
- { "ewinstaller", { NULL }, 4091, "tcp" },
- { "ewinstaller", { NULL }, 4091, "udp" },
- { "ewdgs", { NULL }, 4092, "tcp" },
- { "ewdgs", { NULL }, 4092, "udp" },
- { "pvxpluscs", { NULL }, 4093, "tcp" },
- { "pvxpluscs", { NULL }, 4093, "udp" },
- { "sysrqd", { NULL }, 4094, "tcp" },
- { "sysrqd", { NULL }, 4094, "udp" },
- { "xtgui", { NULL }, 4095, "tcp" },
- { "xtgui", { NULL }, 4095, "udp" },
- { "bre", { NULL }, 4096, "tcp" },
- { "bre", { NULL }, 4096, "udp" },
- { "patrolview", { NULL }, 4097, "tcp" },
- { "patrolview", { NULL }, 4097, "udp" },
- { "drmsfsd", { NULL }, 4098, "tcp" },
- { "drmsfsd", { NULL }, 4098, "udp" },
- { "dpcp", { NULL }, 4099, "tcp" },
- { "dpcp", { NULL }, 4099, "udp" },
- { "igo-incognito", { NULL }, 4100, "tcp" },
- { "igo-incognito", { NULL }, 4100, "udp" },
- { "brlp-0", { NULL }, 4101, "tcp" },
- { "brlp-0", { NULL }, 4101, "udp" },
- { "brlp-1", { NULL }, 4102, "tcp" },
- { "brlp-1", { NULL }, 4102, "udp" },
- { "brlp-2", { NULL }, 4103, "tcp" },
- { "brlp-2", { NULL }, 4103, "udp" },
- { "brlp-3", { NULL }, 4104, "tcp" },
- { "brlp-3", { NULL }, 4104, "udp" },
- { "shofarplayer", { NULL }, 4105, "tcp" },
- { "shofarplayer", { NULL }, 4105, "udp" },
- { "synchronite", { NULL }, 4106, "tcp" },
- { "synchronite", { NULL }, 4106, "udp" },
- { "j-ac", { NULL }, 4107, "tcp" },
- { "j-ac", { NULL }, 4107, "udp" },
- { "accel", { NULL }, 4108, "tcp" },
- { "accel", { NULL }, 4108, "udp" },
- { "izm", { NULL }, 4109, "tcp" },
- { "izm", { NULL }, 4109, "udp" },
- { "g2tag", { NULL }, 4110, "tcp" },
- { "g2tag", { NULL }, 4110, "udp" },
- { "xgrid", { NULL }, 4111, "tcp" },
- { "xgrid", { NULL }, 4111, "udp" },
- { "apple-vpns-rp", { NULL }, 4112, "tcp" },
- { "apple-vpns-rp", { NULL }, 4112, "udp" },
- { "aipn-reg", { NULL }, 4113, "tcp" },
- { "aipn-reg", { NULL }, 4113, "udp" },
- { "jomamqmonitor", { NULL }, 4114, "tcp" },
- { "jomamqmonitor", { NULL }, 4114, "udp" },
- { "cds", { NULL }, 4115, "tcp" },
- { "cds", { NULL }, 4115, "udp" },
- { "smartcard-tls", { NULL }, 4116, "tcp" },
- { "smartcard-tls", { NULL }, 4116, "udp" },
- { "hillrserv", { NULL }, 4117, "tcp" },
- { "hillrserv", { NULL }, 4117, "udp" },
- { "netscript", { NULL }, 4118, "tcp" },
- { "netscript", { NULL }, 4118, "udp" },
- { "assuria-slm", { NULL }, 4119, "tcp" },
- { "assuria-slm", { NULL }, 4119, "udp" },
- { "e-builder", { NULL }, 4121, "tcp" },
- { "e-builder", { NULL }, 4121, "udp" },
- { "fprams", { NULL }, 4122, "tcp" },
- { "fprams", { NULL }, 4122, "udp" },
- { "z-wave", { NULL }, 4123, "tcp" },
- { "z-wave", { NULL }, 4123, "udp" },
- { "tigv2", { NULL }, 4124, "tcp" },
- { "tigv2", { NULL }, 4124, "udp" },
- { "opsview-envoy", { NULL }, 4125, "tcp" },
- { "opsview-envoy", { NULL }, 4125, "udp" },
- { "ddrepl", { NULL }, 4126, "tcp" },
- { "ddrepl", { NULL }, 4126, "udp" },
- { "unikeypro", { NULL }, 4127, "tcp" },
- { "unikeypro", { NULL }, 4127, "udp" },
- { "nufw", { NULL }, 4128, "tcp" },
- { "nufw", { NULL }, 4128, "udp" },
- { "nuauth", { NULL }, 4129, "tcp" },
- { "nuauth", { NULL }, 4129, "udp" },
- { "fronet", { NULL }, 4130, "tcp" },
- { "fronet", { NULL }, 4130, "udp" },
- { "stars", { NULL }, 4131, "tcp" },
- { "stars", { NULL }, 4131, "udp" },
- { "nuts_dem", { NULL }, 4132, "tcp" },
- { "nuts_dem", { NULL }, 4132, "udp" },
- { "nuts_bootp", { NULL }, 4133, "tcp" },
- { "nuts_bootp", { NULL }, 4133, "udp" },
- { "nifty-hmi", { NULL }, 4134, "tcp" },
- { "nifty-hmi", { NULL }, 4134, "udp" },
- { "cl-db-attach", { NULL }, 4135, "tcp" },
- { "cl-db-attach", { NULL }, 4135, "udp" },
- { "cl-db-request", { NULL }, 4136, "tcp" },
- { "cl-db-request", { NULL }, 4136, "udp" },
- { "cl-db-remote", { NULL }, 4137, "tcp" },
- { "cl-db-remote", { NULL }, 4137, "udp" },
- { "nettest", { NULL }, 4138, "tcp" },
- { "nettest", { NULL }, 4138, "udp" },
- { "thrtx", { NULL }, 4139, "tcp" },
- { "thrtx", { NULL }, 4139, "udp" },
- { "cedros_fds", { NULL }, 4140, "tcp" },
- { "cedros_fds", { NULL }, 4140, "udp" },
- { "oirtgsvc", { NULL }, 4141, "tcp" },
- { "oirtgsvc", { NULL }, 4141, "udp" },
- { "oidocsvc", { NULL }, 4142, "tcp" },
- { "oidocsvc", { NULL }, 4142, "udp" },
- { "oidsr", { NULL }, 4143, "tcp" },
- { "oidsr", { NULL }, 4143, "udp" },
- { "vvr-control", { NULL }, 4145, "tcp" },
- { "vvr-control", { NULL }, 4145, "udp" },
- { "tgcconnect", { NULL }, 4146, "tcp" },
- { "tgcconnect", { NULL }, 4146, "udp" },
- { "vrxpservman", { NULL }, 4147, "tcp" },
- { "vrxpservman", { NULL }, 4147, "udp" },
- { "hhb-handheld", { NULL }, 4148, "tcp" },
- { "hhb-handheld", { NULL }, 4148, "udp" },
- { "agslb", { NULL }, 4149, "tcp" },
- { "agslb", { NULL }, 4149, "udp" },
- { "PowerAlert-nsa", { NULL }, 4150, "tcp" },
- { "PowerAlert-nsa", { NULL }, 4150, "udp" },
- { "menandmice_noh", { NULL }, 4151, "tcp" },
- { "menandmice_noh", { NULL }, 4151, "udp" },
- { "idig_mux", { NULL }, 4152, "tcp" },
- { "idig_mux", { NULL }, 4152, "udp" },
- { "mbl-battd", { NULL }, 4153, "tcp" },
- { "mbl-battd", { NULL }, 4153, "udp" },
- { "atlinks", { NULL }, 4154, "tcp" },
- { "atlinks", { NULL }, 4154, "udp" },
- { "bzr", { NULL }, 4155, "tcp" },
- { "bzr", { NULL }, 4155, "udp" },
- { "stat-results", { NULL }, 4156, "tcp" },
- { "stat-results", { NULL }, 4156, "udp" },
- { "stat-scanner", { NULL }, 4157, "tcp" },
- { "stat-scanner", { NULL }, 4157, "udp" },
- { "stat-cc", { NULL }, 4158, "tcp" },
- { "stat-cc", { NULL }, 4158, "udp" },
- { "nss", { NULL }, 4159, "tcp" },
- { "nss", { NULL }, 4159, "udp" },
- { "jini-discovery", { NULL }, 4160, "tcp" },
- { "jini-discovery", { NULL }, 4160, "udp" },
- { "omscontact", { NULL }, 4161, "tcp" },
- { "omscontact", { NULL }, 4161, "udp" },
- { "omstopology", { NULL }, 4162, "tcp" },
- { "omstopology", { NULL }, 4162, "udp" },
- { "silverpeakpeer", { NULL }, 4163, "tcp" },
- { "silverpeakpeer", { NULL }, 4163, "udp" },
- { "silverpeakcomm", { NULL }, 4164, "tcp" },
- { "silverpeakcomm", { NULL }, 4164, "udp" },
- { "altcp", { NULL }, 4165, "tcp" },
- { "altcp", { NULL }, 4165, "udp" },
- { "joost", { NULL }, 4166, "tcp" },
- { "joost", { NULL }, 4166, "udp" },
- { "ddgn", { NULL }, 4167, "tcp" },
- { "ddgn", { NULL }, 4167, "udp" },
- { "pslicser", { NULL }, 4168, "tcp" },
- { "pslicser", { NULL }, 4168, "udp" },
- { "iadt", { NULL }, 4169, "tcp" },
- { "iadt-disc", { NULL }, 4169, "udp" },
- { "d-cinema-csp", { NULL }, 4170, "tcp" },
- { "ml-svnet", { NULL }, 4171, "tcp" },
- { "pcoip", { NULL }, 4172, "tcp" },
- { "pcoip", { NULL }, 4172, "udp" },
- { "smcluster", { NULL }, 4174, "tcp" },
- { "bccp", { NULL }, 4175, "tcp" },
- { "tl-ipcproxy", { NULL }, 4176, "tcp" },
- { "wello", { NULL }, 4177, "tcp" },
- { "wello", { NULL }, 4177, "udp" },
- { "storman", { NULL }, 4178, "tcp" },
- { "storman", { NULL }, 4178, "udp" },
- { "MaxumSP", { NULL }, 4179, "tcp" },
- { "MaxumSP", { NULL }, 4179, "udp" },
- { "httpx", { NULL }, 4180, "tcp" },
- { "httpx", { NULL }, 4180, "udp" },
- { "macbak", { NULL }, 4181, "tcp" },
- { "macbak", { NULL }, 4181, "udp" },
- { "pcptcpservice", { NULL }, 4182, "tcp" },
- { "pcptcpservice", { NULL }, 4182, "udp" },
- { "gmmp", { NULL }, 4183, "tcp" },
- { "gmmp", { NULL }, 4183, "udp" },
- { "universe_suite", { NULL }, 4184, "tcp" },
- { "universe_suite", { NULL }, 4184, "udp" },
- { "wcpp", { NULL }, 4185, "tcp" },
- { "wcpp", { NULL }, 4185, "udp" },
- { "boxbackupstore", { NULL }, 4186, "tcp" },
- { "csc_proxy", { NULL }, 4187, "tcp" },
- { "vatata", { NULL }, 4188, "tcp" },
- { "vatata", { NULL }, 4188, "udp" },
- { "pcep", { NULL }, 4189, "tcp" },
- { "sieve", { NULL }, 4190, "tcp" },
- { "dsmipv6", { NULL }, 4191, "udp" },
- { "azeti", { NULL }, 4192, "tcp" },
- { "azeti-bd", { NULL }, 4192, "udp" },
- { "pvxplusio", { NULL }, 4193, "tcp" },
- { "eims-admin", { NULL }, 4199, "tcp" },
- { "eims-admin", { NULL }, 4199, "udp" },
- { "corelccam", { NULL }, 4300, "tcp" },
- { "corelccam", { NULL }, 4300, "udp" },
- { "d-data", { NULL }, 4301, "tcp" },
- { "d-data", { NULL }, 4301, "udp" },
- { "d-data-control", { NULL }, 4302, "tcp" },
- { "d-data-control", { NULL }, 4302, "udp" },
- { "srcp", { NULL }, 4303, "tcp" },
- { "srcp", { NULL }, 4303, "udp" },
- { "owserver", { NULL }, 4304, "tcp" },
- { "owserver", { NULL }, 4304, "udp" },
- { "batman", { NULL }, 4305, "tcp" },
- { "batman", { NULL }, 4305, "udp" },
- { "pinghgl", { NULL }, 4306, "tcp" },
- { "pinghgl", { NULL }, 4306, "udp" },
- { "visicron-vs", { NULL }, 4307, "tcp" },
- { "visicron-vs", { NULL }, 4307, "udp" },
- { "compx-lockview", { NULL }, 4308, "tcp" },
- { "compx-lockview", { NULL }, 4308, "udp" },
- { "dserver", { NULL }, 4309, "tcp" },
- { "dserver", { NULL }, 4309, "udp" },
- { "mirrtex", { NULL }, 4310, "tcp" },
- { "mirrtex", { NULL }, 4310, "udp" },
- { "p6ssmc", { NULL }, 4311, "tcp" },
- { "pscl-mgt", { NULL }, 4312, "tcp" },
- { "perrla", { NULL }, 4313, "tcp" },
- { "fdt-rcatp", { NULL }, 4320, "tcp" },
- { "fdt-rcatp", { NULL }, 4320, "udp" },
- { "rwhois", { NULL }, 4321, "tcp" },
- { "rwhois", { NULL }, 4321, "udp" },
- { "trim-event", { NULL }, 4322, "tcp" },
- { "trim-event", { NULL }, 4322, "udp" },
- { "trim-ice", { NULL }, 4323, "tcp" },
- { "trim-ice", { NULL }, 4323, "udp" },
- { "balour", { NULL }, 4324, "tcp" },
- { "balour", { NULL }, 4324, "udp" },
- { "geognosisman", { NULL }, 4325, "tcp" },
- { "geognosisman", { NULL }, 4325, "udp" },
- { "geognosis", { NULL }, 4326, "tcp" },
- { "geognosis", { NULL }, 4326, "udp" },
- { "jaxer-web", { NULL }, 4327, "tcp" },
- { "jaxer-web", { NULL }, 4327, "udp" },
- { "jaxer-manager", { NULL }, 4328, "tcp" },
- { "jaxer-manager", { NULL }, 4328, "udp" },
- { "publiqare-sync", { NULL }, 4329, "tcp" },
- { "gaia", { NULL }, 4340, "tcp" },
- { "gaia", { NULL }, 4340, "udp" },
- { "lisp-data", { NULL }, 4341, "tcp" },
- { "lisp-data", { NULL }, 4341, "udp" },
- { "lisp-cons", { NULL }, 4342, "tcp" },
- { "lisp-control", { NULL }, 4342, "udp" },
- { "unicall", { NULL }, 4343, "tcp" },
- { "unicall", { NULL }, 4343, "udp" },
- { "vinainstall", { NULL }, 4344, "tcp" },
- { "vinainstall", { NULL }, 4344, "udp" },
- { "m4-network-as", { NULL }, 4345, "tcp" },
- { "m4-network-as", { NULL }, 4345, "udp" },
- { "elanlm", { NULL }, 4346, "tcp" },
- { "elanlm", { NULL }, 4346, "udp" },
- { "lansurveyor", { NULL }, 4347, "tcp" },
- { "lansurveyor", { NULL }, 4347, "udp" },
- { "itose", { NULL }, 4348, "tcp" },
- { "itose", { NULL }, 4348, "udp" },
- { "fsportmap", { NULL }, 4349, "tcp" },
- { "fsportmap", { NULL }, 4349, "udp" },
- { "net-device", { NULL }, 4350, "tcp" },
- { "net-device", { NULL }, 4350, "udp" },
- { "plcy-net-svcs", { NULL }, 4351, "tcp" },
- { "plcy-net-svcs", { NULL }, 4351, "udp" },
- { "pjlink", { NULL }, 4352, "tcp" },
- { "pjlink", { NULL }, 4352, "udp" },
- { "f5-iquery", { NULL }, 4353, "tcp" },
- { "f5-iquery", { NULL }, 4353, "udp" },
- { "qsnet-trans", { NULL }, 4354, "tcp" },
- { "qsnet-trans", { NULL }, 4354, "udp" },
- { "qsnet-workst", { NULL }, 4355, "tcp" },
- { "qsnet-workst", { NULL }, 4355, "udp" },
- { "qsnet-assist", { NULL }, 4356, "tcp" },
- { "qsnet-assist", { NULL }, 4356, "udp" },
- { "qsnet-cond", { NULL }, 4357, "tcp" },
- { "qsnet-cond", { NULL }, 4357, "udp" },
- { "qsnet-nucl", { NULL }, 4358, "tcp" },
- { "qsnet-nucl", { NULL }, 4358, "udp" },
- { "omabcastltkm", { NULL }, 4359, "tcp" },
- { "omabcastltkm", { NULL }, 4359, "udp" },
- { "matrix_vnet", { NULL }, 4360, "tcp" },
- { "nacnl", { NULL }, 4361, "udp" },
- { "afore-vdp-disc", { NULL }, 4362, "udp" },
- { "wxbrief", { NULL }, 4368, "tcp" },
- { "wxbrief", { NULL }, 4368, "udp" },
- { "epmd", { NULL }, 4369, "tcp" },
- { "epmd", { NULL }, 4369, "udp" },
- { "elpro_tunnel", { NULL }, 4370, "tcp" },
- { "elpro_tunnel", { NULL }, 4370, "udp" },
- { "l2c-control", { NULL }, 4371, "tcp" },
- { "l2c-disc", { NULL }, 4371, "udp" },
- { "l2c-data", { NULL }, 4372, "tcp" },
- { "l2c-data", { NULL }, 4372, "udp" },
- { "remctl", { NULL }, 4373, "tcp" },
- { "remctl", { NULL }, 4373, "udp" },
- { "psi-ptt", { NULL }, 4374, "tcp" },
- { "tolteces", { NULL }, 4375, "tcp" },
- { "tolteces", { NULL }, 4375, "udp" },
- { "bip", { NULL }, 4376, "tcp" },
- { "bip", { NULL }, 4376, "udp" },
- { "cp-spxsvr", { NULL }, 4377, "tcp" },
- { "cp-spxsvr", { NULL }, 4377, "udp" },
- { "cp-spxdpy", { NULL }, 4378, "tcp" },
- { "cp-spxdpy", { NULL }, 4378, "udp" },
- { "ctdb", { NULL }, 4379, "tcp" },
- { "ctdb", { NULL }, 4379, "udp" },
- { "xandros-cms", { NULL }, 4389, "tcp" },
- { "xandros-cms", { NULL }, 4389, "udp" },
- { "wiegand", { NULL }, 4390, "tcp" },
- { "wiegand", { NULL }, 4390, "udp" },
- { "apwi-imserver", { NULL }, 4391, "tcp" },
- { "apwi-rxserver", { NULL }, 4392, "tcp" },
- { "apwi-rxspooler", { NULL }, 4393, "tcp" },
- { "apwi-disc", { NULL }, 4394, "udp" },
- { "omnivisionesx", { NULL }, 4395, "tcp" },
- { "omnivisionesx", { NULL }, 4395, "udp" },
- { "fly", { NULL }, 4396, "tcp" },
- { "ds-srv", { NULL }, 4400, "tcp" },
- { "ds-srv", { NULL }, 4400, "udp" },
- { "ds-srvr", { NULL }, 4401, "tcp" },
- { "ds-srvr", { NULL }, 4401, "udp" },
- { "ds-clnt", { NULL }, 4402, "tcp" },
- { "ds-clnt", { NULL }, 4402, "udp" },
- { "ds-user", { NULL }, 4403, "tcp" },
- { "ds-user", { NULL }, 4403, "udp" },
- { "ds-admin", { NULL }, 4404, "tcp" },
- { "ds-admin", { NULL }, 4404, "udp" },
- { "ds-mail", { NULL }, 4405, "tcp" },
- { "ds-mail", { NULL }, 4405, "udp" },
- { "ds-slp", { NULL }, 4406, "tcp" },
- { "ds-slp", { NULL }, 4406, "udp" },
- { "nacagent", { NULL }, 4407, "tcp" },
- { "slscc", { NULL }, 4408, "tcp" },
- { "netcabinet-com", { NULL }, 4409, "tcp" },
- { "itwo-server", { NULL }, 4410, "tcp" },
- { "netrockey6", { NULL }, 4425, "tcp" },
- { "netrockey6", { NULL }, 4425, "udp" },
- { "beacon-port-2", { NULL }, 4426, "tcp" },
- { "beacon-port-2", { NULL }, 4426, "udp" },
- { "drizzle", { NULL }, 4427, "tcp" },
- { "omviserver", { NULL }, 4428, "tcp" },
- { "omviagent", { NULL }, 4429, "tcp" },
- { "rsqlserver", { NULL }, 4430, "tcp" },
- { "rsqlserver", { NULL }, 4430, "udp" },
- { "wspipe", { NULL }, 4431, "tcp" },
- { "netblox", { NULL }, 4441, "udp" },
- { "saris", { NULL }, 4442, "tcp" },
- { "saris", { NULL }, 4442, "udp" },
- { "pharos", { NULL }, 4443, "tcp" },
- { "pharos", { NULL }, 4443, "udp" },
- { "krb524", { NULL }, 4444, "tcp" },
- { "krb524", { NULL }, 4444, "udp" },
- { "nv-video", { NULL }, 4444, "tcp" },
- { "nv-video", { NULL }, 4444, "udp" },
- { "upnotifyp", { NULL }, 4445, "tcp" },
- { "upnotifyp", { NULL }, 4445, "udp" },
- { "n1-fwp", { NULL }, 4446, "tcp" },
- { "n1-fwp", { NULL }, 4446, "udp" },
- { "n1-rmgmt", { NULL }, 4447, "tcp" },
- { "n1-rmgmt", { NULL }, 4447, "udp" },
- { "asc-slmd", { NULL }, 4448, "tcp" },
- { "asc-slmd", { NULL }, 4448, "udp" },
- { "privatewire", { NULL }, 4449, "tcp" },
- { "privatewire", { NULL }, 4449, "udp" },
- { "camp", { NULL }, 4450, "tcp" },
- { "camp", { NULL }, 4450, "udp" },
- { "ctisystemmsg", { NULL }, 4451, "tcp" },
- { "ctisystemmsg", { NULL }, 4451, "udp" },
- { "ctiprogramload", { NULL }, 4452, "tcp" },
- { "ctiprogramload", { NULL }, 4452, "udp" },
- { "nssalertmgr", { NULL }, 4453, "tcp" },
- { "nssalertmgr", { NULL }, 4453, "udp" },
- { "nssagentmgr", { NULL }, 4454, "tcp" },
- { "nssagentmgr", { NULL }, 4454, "udp" },
- { "prchat-user", { NULL }, 4455, "tcp" },
- { "prchat-user", { NULL }, 4455, "udp" },
- { "prchat-server", { NULL }, 4456, "tcp" },
- { "prchat-server", { NULL }, 4456, "udp" },
- { "prRegister", { NULL }, 4457, "tcp" },
- { "prRegister", { NULL }, 4457, "udp" },
- { "mcp", { NULL }, 4458, "tcp" },
- { "mcp", { NULL }, 4458, "udp" },
- { "hpssmgmt", { NULL }, 4484, "tcp" },
- { "hpssmgmt", { NULL }, 4484, "udp" },
- { "assyst-dr", { NULL }, 4485, "tcp" },
- { "icms", { NULL }, 4486, "tcp" },
- { "icms", { NULL }, 4486, "udp" },
- { "prex-tcp", { NULL }, 4487, "tcp" },
- { "awacs-ice", { NULL }, 4488, "tcp" },
- { "awacs-ice", { NULL }, 4488, "udp" },
- { "ipsec-nat-t", { NULL }, 4500, "tcp" },
- { "ipsec-nat-t", { NULL }, 4500, "udp" },
- { "ehs", { NULL }, 4535, "tcp" },
- { "ehs", { NULL }, 4535, "udp" },
- { "ehs-ssl", { NULL }, 4536, "tcp" },
- { "ehs-ssl", { NULL }, 4536, "udp" },
- { "wssauthsvc", { NULL }, 4537, "tcp" },
- { "wssauthsvc", { NULL }, 4537, "udp" },
- { "swx-gate", { NULL }, 4538, "tcp" },
- { "swx-gate", { NULL }, 4538, "udp" },
- { "worldscores", { NULL }, 4545, "tcp" },
- { "worldscores", { NULL }, 4545, "udp" },
- { "sf-lm", { NULL }, 4546, "tcp" },
- { "sf-lm", { NULL }, 4546, "udp" },
- { "lanner-lm", { NULL }, 4547, "tcp" },
- { "lanner-lm", { NULL }, 4547, "udp" },
- { "synchromesh", { NULL }, 4548, "tcp" },
- { "synchromesh", { NULL }, 4548, "udp" },
- { "aegate", { NULL }, 4549, "tcp" },
- { "aegate", { NULL }, 4549, "udp" },
- { "gds-adppiw-db", { NULL }, 4550, "tcp" },
- { "gds-adppiw-db", { NULL }, 4550, "udp" },
- { "ieee-mih", { NULL }, 4551, "tcp" },
- { "ieee-mih", { NULL }, 4551, "udp" },
- { "menandmice-mon", { NULL }, 4552, "tcp" },
- { "menandmice-mon", { NULL }, 4552, "udp" },
- { "icshostsvc", { NULL }, 4553, "tcp" },
- { "msfrs", { NULL }, 4554, "tcp" },
- { "msfrs", { NULL }, 4554, "udp" },
- { "rsip", { NULL }, 4555, "tcp" },
- { "rsip", { NULL }, 4555, "udp" },
- { "dtn-bundle-tcp", { NULL }, 4556, "tcp" },
- { "dtn-bundle-udp", { NULL }, 4556, "udp" },
- { "mtcevrunqss", { NULL }, 4557, "udp" },
- { "mtcevrunqman", { NULL }, 4558, "udp" },
- { "hylafax", { NULL }, 4559, "tcp" },
- { "hylafax", { NULL }, 4559, "udp" },
- { "kwtc", { NULL }, 4566, "tcp" },
- { "kwtc", { NULL }, 4566, "udp" },
- { "tram", { NULL }, 4567, "tcp" },
- { "tram", { NULL }, 4567, "udp" },
- { "bmc-reporting", { NULL }, 4568, "tcp" },
- { "bmc-reporting", { NULL }, 4568, "udp" },
- { "iax", { NULL }, 4569, "tcp" },
- { "iax", { NULL }, 4569, "udp" },
- { "rid", { NULL }, 4590, "tcp" },
- { "l3t-at-an", { NULL }, 4591, "tcp" },
- { "l3t-at-an", { NULL }, 4591, "udp" },
- { "hrpd-ith-at-an", { NULL }, 4592, "udp" },
- { "ipt-anri-anri", { NULL }, 4593, "tcp" },
- { "ipt-anri-anri", { NULL }, 4593, "udp" },
- { "ias-session", { NULL }, 4594, "tcp" },
- { "ias-session", { NULL }, 4594, "udp" },
- { "ias-paging", { NULL }, 4595, "tcp" },
- { "ias-paging", { NULL }, 4595, "udp" },
- { "ias-neighbor", { NULL }, 4596, "tcp" },
- { "ias-neighbor", { NULL }, 4596, "udp" },
- { "a21-an-1xbs", { NULL }, 4597, "tcp" },
- { "a21-an-1xbs", { NULL }, 4597, "udp" },
- { "a16-an-an", { NULL }, 4598, "tcp" },
- { "a16-an-an", { NULL }, 4598, "udp" },
- { "a17-an-an", { NULL }, 4599, "tcp" },
- { "a17-an-an", { NULL }, 4599, "udp" },
- { "piranha1", { NULL }, 4600, "tcp" },
- { "piranha1", { NULL }, 4600, "udp" },
- { "piranha2", { NULL }, 4601, "tcp" },
- { "piranha2", { NULL }, 4601, "udp" },
- { "mtsserver", { NULL }, 4602, "tcp" },
- { "menandmice-upg", { NULL }, 4603, "tcp" },
- { "playsta2-app", { NULL }, 4658, "tcp" },
- { "playsta2-app", { NULL }, 4658, "udp" },
- { "playsta2-lob", { NULL }, 4659, "tcp" },
- { "playsta2-lob", { NULL }, 4659, "udp" },
- { "smaclmgr", { NULL }, 4660, "tcp" },
- { "smaclmgr", { NULL }, 4660, "udp" },
- { "kar2ouche", { NULL }, 4661, "tcp" },
- { "kar2ouche", { NULL }, 4661, "udp" },
- { "oms", { NULL }, 4662, "tcp" },
- { "oms", { NULL }, 4662, "udp" },
- { "noteit", { NULL }, 4663, "tcp" },
- { "noteit", { NULL }, 4663, "udp" },
- { "ems", { NULL }, 4664, "tcp" },
- { "ems", { NULL }, 4664, "udp" },
- { "contclientms", { NULL }, 4665, "tcp" },
- { "contclientms", { NULL }, 4665, "udp" },
- { "eportcomm", { NULL }, 4666, "tcp" },
- { "eportcomm", { NULL }, 4666, "udp" },
- { "mmacomm", { NULL }, 4667, "tcp" },
- { "mmacomm", { NULL }, 4667, "udp" },
- { "mmaeds", { NULL }, 4668, "tcp" },
- { "mmaeds", { NULL }, 4668, "udp" },
- { "eportcommdata", { NULL }, 4669, "tcp" },
- { "eportcommdata", { NULL }, 4669, "udp" },
- { "light", { NULL }, 4670, "tcp" },
- { "light", { NULL }, 4670, "udp" },
- { "acter", { NULL }, 4671, "tcp" },
- { "acter", { NULL }, 4671, "udp" },
- { "rfa", { NULL }, 4672, "tcp" },
- { "rfa", { NULL }, 4672, "udp" },
- { "cxws", { NULL }, 4673, "tcp" },
- { "cxws", { NULL }, 4673, "udp" },
- { "appiq-mgmt", { NULL }, 4674, "tcp" },
- { "appiq-mgmt", { NULL }, 4674, "udp" },
- { "dhct-status", { NULL }, 4675, "tcp" },
- { "dhct-status", { NULL }, 4675, "udp" },
- { "dhct-alerts", { NULL }, 4676, "tcp" },
- { "dhct-alerts", { NULL }, 4676, "udp" },
- { "bcs", { NULL }, 4677, "tcp" },
- { "bcs", { NULL }, 4677, "udp" },
- { "traversal", { NULL }, 4678, "tcp" },
- { "traversal", { NULL }, 4678, "udp" },
- { "mgesupervision", { NULL }, 4679, "tcp" },
- { "mgesupervision", { NULL }, 4679, "udp" },
- { "mgemanagement", { NULL }, 4680, "tcp" },
- { "mgemanagement", { NULL }, 4680, "udp" },
- { "parliant", { NULL }, 4681, "tcp" },
- { "parliant", { NULL }, 4681, "udp" },
- { "finisar", { NULL }, 4682, "tcp" },
- { "finisar", { NULL }, 4682, "udp" },
- { "spike", { NULL }, 4683, "tcp" },
- { "spike", { NULL }, 4683, "udp" },
- { "rfid-rp1", { NULL }, 4684, "tcp" },
- { "rfid-rp1", { NULL }, 4684, "udp" },
- { "autopac", { NULL }, 4685, "tcp" },
- { "autopac", { NULL }, 4685, "udp" },
- { "msp-os", { NULL }, 4686, "tcp" },
- { "msp-os", { NULL }, 4686, "udp" },
- { "nst", { NULL }, 4687, "tcp" },
- { "nst", { NULL }, 4687, "udp" },
- { "mobile-p2p", { NULL }, 4688, "tcp" },
- { "mobile-p2p", { NULL }, 4688, "udp" },
- { "altovacentral", { NULL }, 4689, "tcp" },
- { "altovacentral", { NULL }, 4689, "udp" },
- { "prelude", { NULL }, 4690, "tcp" },
- { "prelude", { NULL }, 4690, "udp" },
- { "mtn", { NULL }, 4691, "tcp" },
- { "mtn", { NULL }, 4691, "udp" },
- { "conspiracy", { NULL }, 4692, "tcp" },
- { "conspiracy", { NULL }, 4692, "udp" },
- { "netxms-agent", { NULL }, 4700, "tcp" },
- { "netxms-agent", { NULL }, 4700, "udp" },
- { "netxms-mgmt", { NULL }, 4701, "tcp" },
- { "netxms-mgmt", { NULL }, 4701, "udp" },
- { "netxms-sync", { NULL }, 4702, "tcp" },
- { "netxms-sync", { NULL }, 4702, "udp" },
- { "npqes-test", { NULL }, 4703, "tcp" },
- { "assuria-ins", { NULL }, 4704, "tcp" },
- { "truckstar", { NULL }, 4725, "tcp" },
- { "truckstar", { NULL }, 4725, "udp" },
- { "a26-fap-fgw", { NULL }, 4726, "udp" },
- { "fcis", { NULL }, 4727, "tcp" },
- { "fcis-disc", { NULL }, 4727, "udp" },
- { "capmux", { NULL }, 4728, "tcp" },
- { "capmux", { NULL }, 4728, "udp" },
- { "gsmtap", { NULL }, 4729, "udp" },
- { "gearman", { NULL }, 4730, "tcp" },
- { "gearman", { NULL }, 4730, "udp" },
- { "remcap", { NULL }, 4731, "tcp" },
- { "ohmtrigger", { NULL }, 4732, "udp" },
- { "resorcs", { NULL }, 4733, "tcp" },
- { "ipdr-sp", { NULL }, 4737, "tcp" },
- { "ipdr-sp", { NULL }, 4737, "udp" },
- { "solera-lpn", { NULL }, 4738, "tcp" },
- { "solera-lpn", { NULL }, 4738, "udp" },
- { "ipfix", { NULL }, 4739, "tcp" },
- { "ipfix", { NULL }, 4739, "udp" },
- { "ipfix", { NULL }, 4739, "sctp" },
- { "ipfixs", { NULL }, 4740, "tcp" },
- { "ipfixs", { NULL }, 4740, "sctp" },
- { "ipfixs", { NULL }, 4740, "udp" },
- { "lumimgrd", { NULL }, 4741, "tcp" },
- { "lumimgrd", { NULL }, 4741, "udp" },
- { "sicct", { NULL }, 4742, "tcp" },
- { "sicct-sdp", { NULL }, 4742, "udp" },
- { "openhpid", { NULL }, 4743, "tcp" },
- { "openhpid", { NULL }, 4743, "udp" },
- { "ifsp", { NULL }, 4744, "tcp" },
- { "ifsp", { NULL }, 4744, "udp" },
- { "fmp", { NULL }, 4745, "tcp" },
- { "fmp", { NULL }, 4745, "udp" },
- { "profilemac", { NULL }, 4749, "tcp" },
- { "profilemac", { NULL }, 4749, "udp" },
- { "ssad", { NULL }, 4750, "tcp" },
- { "ssad", { NULL }, 4750, "udp" },
- { "spocp", { NULL }, 4751, "tcp" },
- { "spocp", { NULL }, 4751, "udp" },
- { "snap", { NULL }, 4752, "tcp" },
- { "snap", { NULL }, 4752, "udp" },
- { "bfd-multi-ctl", { NULL }, 4784, "tcp" },
- { "bfd-multi-ctl", { NULL }, 4784, "udp" },
- { "cncp", { NULL }, 4785, "udp" },
- { "smart-install", { NULL }, 4786, "tcp" },
- { "sia-ctrl-plane", { NULL }, 4787, "tcp" },
- { "iims", { NULL }, 4800, "tcp" },
- { "iims", { NULL }, 4800, "udp" },
- { "iwec", { NULL }, 4801, "tcp" },
- { "iwec", { NULL }, 4801, "udp" },
- { "ilss", { NULL }, 4802, "tcp" },
- { "ilss", { NULL }, 4802, "udp" },
- { "notateit", { NULL }, 4803, "tcp" },
- { "notateit-disc", { NULL }, 4803, "udp" },
- { "aja-ntv4-disc", { NULL }, 4804, "udp" },
- { "htcp", { NULL }, 4827, "tcp" },
- { "htcp", { NULL }, 4827, "udp" },
- { "varadero-0", { NULL }, 4837, "tcp" },
- { "varadero-0", { NULL }, 4837, "udp" },
- { "varadero-1", { NULL }, 4838, "tcp" },
- { "varadero-1", { NULL }, 4838, "udp" },
- { "varadero-2", { NULL }, 4839, "tcp" },
- { "varadero-2", { NULL }, 4839, "udp" },
- { "opcua-tcp", { NULL }, 4840, "tcp" },
- { "opcua-udp", { NULL }, 4840, "udp" },
- { "quosa", { NULL }, 4841, "tcp" },
- { "quosa", { NULL }, 4841, "udp" },
- { "gw-asv", { NULL }, 4842, "tcp" },
- { "gw-asv", { NULL }, 4842, "udp" },
- { "opcua-tls", { NULL }, 4843, "tcp" },
- { "opcua-tls", { NULL }, 4843, "udp" },
- { "gw-log", { NULL }, 4844, "tcp" },
- { "gw-log", { NULL }, 4844, "udp" },
- { "wcr-remlib", { NULL }, 4845, "tcp" },
- { "wcr-remlib", { NULL }, 4845, "udp" },
- { "contamac_icm", { NULL }, 4846, "tcp" },
- { "contamac_icm", { NULL }, 4846, "udp" },
- { "wfc", { NULL }, 4847, "tcp" },
- { "wfc", { NULL }, 4847, "udp" },
- { "appserv-http", { NULL }, 4848, "tcp" },
- { "appserv-http", { NULL }, 4848, "udp" },
- { "appserv-https", { NULL }, 4849, "tcp" },
- { "appserv-https", { NULL }, 4849, "udp" },
- { "sun-as-nodeagt", { NULL }, 4850, "tcp" },
- { "sun-as-nodeagt", { NULL }, 4850, "udp" },
- { "derby-repli", { NULL }, 4851, "tcp" },
- { "derby-repli", { NULL }, 4851, "udp" },
- { "unify-debug", { NULL }, 4867, "tcp" },
- { "unify-debug", { NULL }, 4867, "udp" },
- { "phrelay", { NULL }, 4868, "tcp" },
- { "phrelay", { NULL }, 4868, "udp" },
- { "phrelaydbg", { NULL }, 4869, "tcp" },
- { "phrelaydbg", { NULL }, 4869, "udp" },
- { "cc-tracking", { NULL }, 4870, "tcp" },
- { "cc-tracking", { NULL }, 4870, "udp" },
- { "wired", { NULL }, 4871, "tcp" },
- { "wired", { NULL }, 4871, "udp" },
- { "tritium-can", { NULL }, 4876, "tcp" },
- { "tritium-can", { NULL }, 4876, "udp" },
- { "lmcs", { NULL }, 4877, "tcp" },
- { "lmcs", { NULL }, 4877, "udp" },
- { "inst-discovery", { NULL }, 4878, "udp" },
- { "wsdl-event", { NULL }, 4879, "tcp" },
- { "hislip", { NULL }, 4880, "tcp" },
- { "socp-t", { NULL }, 4881, "udp" },
- { "socp-c", { NULL }, 4882, "udp" },
- { "wmlserver", { NULL }, 4883, "tcp" },
- { "hivestor", { NULL }, 4884, "tcp" },
- { "hivestor", { NULL }, 4884, "udp" },
- { "abbs", { NULL }, 4885, "tcp" },
- { "abbs", { NULL }, 4885, "udp" },
- { "lyskom", { NULL }, 4894, "tcp" },
- { "lyskom", { NULL }, 4894, "udp" },
- { "radmin-port", { NULL }, 4899, "tcp" },
- { "radmin-port", { NULL }, 4899, "udp" },
- { "hfcs", { NULL }, 4900, "tcp" },
- { "hfcs", { NULL }, 4900, "udp" },
- { "flr_agent", { NULL }, 4901, "tcp" },
- { "magiccontrol", { NULL }, 4902, "tcp" },
- { "lutap", { NULL }, 4912, "tcp" },
- { "lutcp", { NULL }, 4913, "tcp" },
- { "bones", { NULL }, 4914, "tcp" },
- { "bones", { NULL }, 4914, "udp" },
- { "frcs", { NULL }, 4915, "tcp" },
- { "atsc-mh-ssc", { NULL }, 4937, "udp" },
- { "eq-office-4940", { NULL }, 4940, "tcp" },
- { "eq-office-4940", { NULL }, 4940, "udp" },
- { "eq-office-4941", { NULL }, 4941, "tcp" },
- { "eq-office-4941", { NULL }, 4941, "udp" },
- { "eq-office-4942", { NULL }, 4942, "tcp" },
- { "eq-office-4942", { NULL }, 4942, "udp" },
- { "munin", { NULL }, 4949, "tcp" },
- { "munin", { NULL }, 4949, "udp" },
- { "sybasesrvmon", { NULL }, 4950, "tcp" },
- { "sybasesrvmon", { NULL }, 4950, "udp" },
- { "pwgwims", { NULL }, 4951, "tcp" },
- { "pwgwims", { NULL }, 4951, "udp" },
- { "sagxtsds", { NULL }, 4952, "tcp" },
- { "sagxtsds", { NULL }, 4952, "udp" },
- { "dbsyncarbiter", { NULL }, 4953, "tcp" },
- { "ccss-qmm", { NULL }, 4969, "tcp" },
- { "ccss-qmm", { NULL }, 4969, "udp" },
- { "ccss-qsm", { NULL }, 4970, "tcp" },
- { "ccss-qsm", { NULL }, 4970, "udp" },
- { "webyast", { NULL }, 4984, "tcp" },
- { "gerhcs", { NULL }, 4985, "tcp" },
- { "mrip", { NULL }, 4986, "tcp" },
- { "mrip", { NULL }, 4986, "udp" },
- { "smar-se-port1", { NULL }, 4987, "tcp" },
- { "smar-se-port1", { NULL }, 4987, "udp" },
- { "smar-se-port2", { NULL }, 4988, "tcp" },
- { "smar-se-port2", { NULL }, 4988, "udp" },
- { "parallel", { NULL }, 4989, "tcp" },
- { "parallel", { NULL }, 4989, "udp" },
- { "busycal", { NULL }, 4990, "tcp" },
- { "busycal", { NULL }, 4990, "udp" },
- { "vrt", { NULL }, 4991, "tcp" },
- { "vrt", { NULL }, 4991, "udp" },
- { "hfcs-manager", { NULL }, 4999, "tcp" },
- { "hfcs-manager", { NULL }, 4999, "udp" },
- { "commplex-main", { NULL }, 5000, "tcp" },
- { "commplex-main", { NULL }, 5000, "udp" },
- { "commplex-link", { NULL }, 5001, "tcp" },
- { "commplex-link", { NULL }, 5001, "udp" },
- { "rfe", { NULL }, 5002, "tcp" },
- { "rfe", { NULL }, 5002, "udp" },
- { "fmpro-internal", { NULL }, 5003, "tcp" },
- { "fmpro-internal", { NULL }, 5003, "udp" },
- { "avt-profile-1", { NULL }, 5004, "tcp" },
- { "avt-profile-1", { NULL }, 5004, "udp" },
- { "avt-profile-1", { NULL }, 5004, "dccp" },
- { "avt-profile-2", { NULL }, 5005, "tcp" },
- { "avt-profile-2", { NULL }, 5005, "udp" },
- { "avt-profile-2", { NULL }, 5005, "dccp" },
- { "wsm-server", { NULL }, 5006, "tcp" },
- { "wsm-server", { NULL }, 5006, "udp" },
- { "wsm-server-ssl", { NULL }, 5007, "tcp" },
- { "wsm-server-ssl", { NULL }, 5007, "udp" },
- { "synapsis-edge", { NULL }, 5008, "tcp" },
- { "synapsis-edge", { NULL }, 5008, "udp" },
- { "winfs", { NULL }, 5009, "tcp" },
- { "winfs", { NULL }, 5009, "udp" },
- { "telelpathstart", { NULL }, 5010, "tcp" },
- { "telelpathstart", { NULL }, 5010, "udp" },
- { "telelpathattack", { NULL }, 5011, "tcp" },
- { "telelpathattack", { NULL }, 5011, "udp" },
- { "nsp", { NULL }, 5012, "tcp" },
- { "nsp", { NULL }, 5012, "udp" },
- { "fmpro-v6", { NULL }, 5013, "tcp" },
- { "fmpro-v6", { NULL }, 5013, "udp" },
- { "onpsocket", { NULL }, 5014, "udp" },
- { "fmwp", { NULL }, 5015, "tcp" },
- { "zenginkyo-1", { NULL }, 5020, "tcp" },
- { "zenginkyo-1", { NULL }, 5020, "udp" },
- { "zenginkyo-2", { NULL }, 5021, "tcp" },
- { "zenginkyo-2", { NULL }, 5021, "udp" },
- { "mice", { NULL }, 5022, "tcp" },
- { "mice", { NULL }, 5022, "udp" },
- { "htuilsrv", { NULL }, 5023, "tcp" },
- { "htuilsrv", { NULL }, 5023, "udp" },
- { "scpi-telnet", { NULL }, 5024, "tcp" },
- { "scpi-telnet", { NULL }, 5024, "udp" },
- { "scpi-raw", { NULL }, 5025, "tcp" },
- { "scpi-raw", { NULL }, 5025, "udp" },
- { "strexec-d", { NULL }, 5026, "tcp" },
- { "strexec-d", { NULL }, 5026, "udp" },
- { "strexec-s", { NULL }, 5027, "tcp" },
- { "strexec-s", { NULL }, 5027, "udp" },
- { "qvr", { NULL }, 5028, "tcp" },
- { "infobright", { NULL }, 5029, "tcp" },
- { "infobright", { NULL }, 5029, "udp" },
- { "surfpass", { NULL }, 5030, "tcp" },
- { "surfpass", { NULL }, 5030, "udp" },
- { "dmp", { NULL }, 5031, "udp" },
- { "asnaacceler8db", { NULL }, 5042, "tcp" },
- { "asnaacceler8db", { NULL }, 5042, "udp" },
- { "swxadmin", { NULL }, 5043, "tcp" },
- { "swxadmin", { NULL }, 5043, "udp" },
- { "lxi-evntsvc", { NULL }, 5044, "tcp" },
- { "lxi-evntsvc", { NULL }, 5044, "udp" },
- { "osp", { NULL }, 5045, "tcp" },
- { "vpm-udp", { NULL }, 5046, "udp" },
- { "iscape", { NULL }, 5047, "udp" },
- { "texai", { NULL }, 5048, "tcp" },
- { "ivocalize", { NULL }, 5049, "tcp" },
- { "ivocalize", { NULL }, 5049, "udp" },
- { "mmcc", { NULL }, 5050, "tcp" },
- { "mmcc", { NULL }, 5050, "udp" },
- { "ita-agent", { NULL }, 5051, "tcp" },
- { "ita-agent", { NULL }, 5051, "udp" },
- { "ita-manager", { NULL }, 5052, "tcp" },
- { "ita-manager", { NULL }, 5052, "udp" },
- { "rlm", { NULL }, 5053, "tcp" },
- { "rlm-admin", { NULL }, 5054, "tcp" },
- { "unot", { NULL }, 5055, "tcp" },
- { "unot", { NULL }, 5055, "udp" },
- { "intecom-ps1", { NULL }, 5056, "tcp" },
- { "intecom-ps1", { NULL }, 5056, "udp" },
- { "intecom-ps2", { NULL }, 5057, "tcp" },
- { "intecom-ps2", { NULL }, 5057, "udp" },
- { "locus-disc", { NULL }, 5058, "udp" },
- { "sds", { NULL }, 5059, "tcp" },
- { "sds", { NULL }, 5059, "udp" },
- { "sip", { NULL }, 5060, "tcp" },
- { "sip", { NULL }, 5060, "udp" },
- { "sip-tls", { NULL }, 5061, "tcp" },
- { "sip-tls", { NULL }, 5061, "udp" },
- { "na-localise", { NULL }, 5062, "tcp" },
- { "na-localise", { NULL }, 5062, "udp" },
- { "csrpc", { NULL }, 5063, "tcp" },
- { "ca-1", { NULL }, 5064, "tcp" },
- { "ca-1", { NULL }, 5064, "udp" },
- { "ca-2", { NULL }, 5065, "tcp" },
- { "ca-2", { NULL }, 5065, "udp" },
- { "stanag-5066", { NULL }, 5066, "tcp" },
- { "stanag-5066", { NULL }, 5066, "udp" },
- { "authentx", { NULL }, 5067, "tcp" },
- { "authentx", { NULL }, 5067, "udp" },
- { "bitforestsrv", { NULL }, 5068, "tcp" },
- { "i-net-2000-npr", { NULL }, 5069, "tcp" },
- { "i-net-2000-npr", { NULL }, 5069, "udp" },
- { "vtsas", { NULL }, 5070, "tcp" },
- { "vtsas", { NULL }, 5070, "udp" },
- { "powerschool", { NULL }, 5071, "tcp" },
- { "powerschool", { NULL }, 5071, "udp" },
- { "ayiya", { NULL }, 5072, "tcp" },
- { "ayiya", { NULL }, 5072, "udp" },
- { "tag-pm", { NULL }, 5073, "tcp" },
- { "tag-pm", { NULL }, 5073, "udp" },
- { "alesquery", { NULL }, 5074, "tcp" },
- { "alesquery", { NULL }, 5074, "udp" },
- { "cp-spxrpts", { NULL }, 5079, "udp" },
- { "onscreen", { NULL }, 5080, "tcp" },
- { "onscreen", { NULL }, 5080, "udp" },
- { "sdl-ets", { NULL }, 5081, "tcp" },
- { "sdl-ets", { NULL }, 5081, "udp" },
- { "qcp", { NULL }, 5082, "tcp" },
- { "qcp", { NULL }, 5082, "udp" },
- { "qfp", { NULL }, 5083, "tcp" },
- { "qfp", { NULL }, 5083, "udp" },
- { "llrp", { NULL }, 5084, "tcp" },
- { "llrp", { NULL }, 5084, "udp" },
- { "encrypted-llrp", { NULL }, 5085, "tcp" },
- { "encrypted-llrp", { NULL }, 5085, "udp" },
- { "aprigo-cs", { NULL }, 5086, "tcp" },
- { "car", { NULL }, 5090, "sctp" },
- { "cxtp", { NULL }, 5091, "sctp" },
- { "magpie", { NULL }, 5092, "udp" },
- { "sentinel-lm", { NULL }, 5093, "tcp" },
- { "sentinel-lm", { NULL }, 5093, "udp" },
- { "hart-ip", { NULL }, 5094, "tcp" },
- { "hart-ip", { NULL }, 5094, "udp" },
- { "sentlm-srv2srv", { NULL }, 5099, "tcp" },
- { "sentlm-srv2srv", { NULL }, 5099, "udp" },
- { "socalia", { NULL }, 5100, "tcp" },
- { "socalia", { NULL }, 5100, "udp" },
- { "talarian-tcp", { NULL }, 5101, "tcp" },
- { "talarian-udp", { NULL }, 5101, "udp" },
- { "oms-nonsecure", { NULL }, 5102, "tcp" },
- { "oms-nonsecure", { NULL }, 5102, "udp" },
- { "actifio-c2c", { NULL }, 5103, "tcp" },
- { "tinymessage", { NULL }, 5104, "udp" },
- { "hughes-ap", { NULL }, 5105, "udp" },
- { "taep-as-svc", { NULL }, 5111, "tcp" },
- { "taep-as-svc", { NULL }, 5111, "udp" },
- { "pm-cmdsvr", { NULL }, 5112, "tcp" },
- { "pm-cmdsvr", { NULL }, 5112, "udp" },
- { "ev-services", { NULL }, 5114, "tcp" },
- { "autobuild", { NULL }, 5115, "tcp" },
- { "emb-proj-cmd", { NULL }, 5116, "udp" },
- { "gradecam", { NULL }, 5117, "tcp" },
- { "nbt-pc", { NULL }, 5133, "tcp" },
- { "nbt-pc", { NULL }, 5133, "udp" },
- { "ppactivation", { NULL }, 5134, "tcp" },
- { "erp-scale", { NULL }, 5135, "tcp" },
- { "minotaur-sa", { NULL }, 5136, "udp" },
- { "ctsd", { NULL }, 5137, "tcp" },
- { "ctsd", { NULL }, 5137, "udp" },
- { "rmonitor_secure", { NULL }, 5145, "tcp" },
- { "rmonitor_secure", { NULL }, 5145, "udp" },
- { "social-alarm", { NULL }, 5146, "tcp" },
- { "atmp", { NULL }, 5150, "tcp" },
- { "atmp", { NULL }, 5150, "udp" },
- { "esri_sde", { NULL }, 5151, "tcp" },
- { "esri_sde", { NULL }, 5151, "udp" },
- { "sde-discovery", { NULL }, 5152, "tcp" },
- { "sde-discovery", { NULL }, 5152, "udp" },
- { "toruxserver", { NULL }, 5153, "tcp" },
- { "bzflag", { NULL }, 5154, "tcp" },
- { "bzflag", { NULL }, 5154, "udp" },
- { "asctrl-agent", { NULL }, 5155, "tcp" },
- { "asctrl-agent", { NULL }, 5155, "udp" },
- { "rugameonline", { NULL }, 5156, "tcp" },
- { "mediat", { NULL }, 5157, "tcp" },
- { "snmpssh", { NULL }, 5161, "tcp" },
- { "snmpssh-trap", { NULL }, 5162, "tcp" },
- { "sbackup", { NULL }, 5163, "tcp" },
- { "vpa", { NULL }, 5164, "tcp" },
- { "vpa-disc", { NULL }, 5164, "udp" },
- { "ife_icorp", { NULL }, 5165, "tcp" },
- { "ife_icorp", { NULL }, 5165, "udp" },
- { "winpcs", { NULL }, 5166, "tcp" },
- { "winpcs", { NULL }, 5166, "udp" },
- { "scte104", { NULL }, 5167, "tcp" },
- { "scte104", { NULL }, 5167, "udp" },
- { "scte30", { NULL }, 5168, "tcp" },
- { "scte30", { NULL }, 5168, "udp" },
- { "aol", { NULL }, 5190, "tcp" },
- { "aol", { NULL }, 5190, "udp" },
- { "aol-1", { NULL }, 5191, "tcp" },
- { "aol-1", { NULL }, 5191, "udp" },
- { "aol-2", { NULL }, 5192, "tcp" },
- { "aol-2", { NULL }, 5192, "udp" },
- { "aol-3", { NULL }, 5193, "tcp" },
- { "aol-3", { NULL }, 5193, "udp" },
- { "cpscomm", { NULL }, 5194, "tcp" },
- { "targus-getdata", { NULL }, 5200, "tcp" },
- { "targus-getdata", { NULL }, 5200, "udp" },
- { "targus-getdata1", { NULL }, 5201, "tcp" },
- { "targus-getdata1", { NULL }, 5201, "udp" },
- { "targus-getdata2", { NULL }, 5202, "tcp" },
- { "targus-getdata2", { NULL }, 5202, "udp" },
- { "targus-getdata3", { NULL }, 5203, "tcp" },
- { "targus-getdata3", { NULL }, 5203, "udp" },
- { "3exmp", { NULL }, 5221, "tcp" },
- { "xmpp-client", { NULL }, 5222, "tcp" },
- { "hpvirtgrp", { NULL }, 5223, "tcp" },
- { "hpvirtgrp", { NULL }, 5223, "udp" },
- { "hpvirtctrl", { NULL }, 5224, "tcp" },
- { "hpvirtctrl", { NULL }, 5224, "udp" },
- { "hp-server", { NULL }, 5225, "tcp" },
- { "hp-server", { NULL }, 5225, "udp" },
- { "hp-status", { NULL }, 5226, "tcp" },
- { "hp-status", { NULL }, 5226, "udp" },
- { "perfd", { NULL }, 5227, "tcp" },
- { "perfd", { NULL }, 5227, "udp" },
- { "hpvroom", { NULL }, 5228, "tcp" },
- { "csedaemon", { NULL }, 5232, "tcp" },
- { "enfs", { NULL }, 5233, "tcp" },
- { "eenet", { NULL }, 5234, "tcp" },
- { "eenet", { NULL }, 5234, "udp" },
- { "galaxy-network", { NULL }, 5235, "tcp" },
- { "galaxy-network", { NULL }, 5235, "udp" },
- { "padl2sim", { NULL }, 5236, "tcp" },
- { "padl2sim", { NULL }, 5236, "udp" },
- { "mnet-discovery", { NULL }, 5237, "tcp" },
- { "mnet-discovery", { NULL }, 5237, "udp" },
- { "downtools", { NULL }, 5245, "tcp" },
- { "downtools-disc", { NULL }, 5245, "udp" },
- { "capwap-control", { NULL }, 5246, "udp" },
- { "capwap-data", { NULL }, 5247, "udp" },
- { "caacws", { NULL }, 5248, "tcp" },
- { "caacws", { NULL }, 5248, "udp" },
- { "caaclang2", { NULL }, 5249, "tcp" },
- { "caaclang2", { NULL }, 5249, "udp" },
- { "soagateway", { NULL }, 5250, "tcp" },
- { "soagateway", { NULL }, 5250, "udp" },
- { "caevms", { NULL }, 5251, "tcp" },
- { "caevms", { NULL }, 5251, "udp" },
- { "movaz-ssc", { NULL }, 5252, "tcp" },
- { "movaz-ssc", { NULL }, 5252, "udp" },
- { "kpdp", { NULL }, 5253, "tcp" },
- { "3com-njack-1", { NULL }, 5264, "tcp" },
- { "3com-njack-1", { NULL }, 5264, "udp" },
- { "3com-njack-2", { NULL }, 5265, "tcp" },
- { "3com-njack-2", { NULL }, 5265, "udp" },
- { "xmpp-server", { NULL }, 5269, "tcp" },
- { "xmp", { NULL }, 5270, "tcp" },
- { "xmp", { NULL }, 5270, "udp" },
- { "cuelink", { NULL }, 5271, "tcp" },
- { "cuelink-disc", { NULL }, 5271, "udp" },
- { "pk", { NULL }, 5272, "tcp" },
- { "pk", { NULL }, 5272, "udp" },
- { "xmpp-bosh", { NULL }, 5280, "tcp" },
- { "undo-lm", { NULL }, 5281, "tcp" },
- { "transmit-port", { NULL }, 5282, "tcp" },
- { "transmit-port", { NULL }, 5282, "udp" },
- { "presence", { NULL }, 5298, "tcp" },
- { "presence", { NULL }, 5298, "udp" },
- { "nlg-data", { NULL }, 5299, "tcp" },
- { "nlg-data", { NULL }, 5299, "udp" },
- { "hacl-hb", { NULL }, 5300, "tcp" },
- { "hacl-hb", { NULL }, 5300, "udp" },
- { "hacl-gs", { NULL }, 5301, "tcp" },
- { "hacl-gs", { NULL }, 5301, "udp" },
- { "hacl-cfg", { NULL }, 5302, "tcp" },
- { "hacl-cfg", { NULL }, 5302, "udp" },
- { "hacl-probe", { NULL }, 5303, "tcp" },
- { "hacl-probe", { NULL }, 5303, "udp" },
- { "hacl-local", { NULL }, 5304, "tcp" },
- { "hacl-local", { NULL }, 5304, "udp" },
- { "hacl-test", { NULL }, 5305, "tcp" },
- { "hacl-test", { NULL }, 5305, "udp" },
- { "sun-mc-grp", { NULL }, 5306, "tcp" },
- { "sun-mc-grp", { NULL }, 5306, "udp" },
- { "sco-aip", { NULL }, 5307, "tcp" },
- { "sco-aip", { NULL }, 5307, "udp" },
- { "cfengine", { NULL }, 5308, "tcp" },
- { "cfengine", { NULL }, 5308, "udp" },
- { "jprinter", { NULL }, 5309, "tcp" },
- { "jprinter", { NULL }, 5309, "udp" },
- { "outlaws", { NULL }, 5310, "tcp" },
- { "outlaws", { NULL }, 5310, "udp" },
- { "permabit-cs", { NULL }, 5312, "tcp" },
- { "permabit-cs", { NULL }, 5312, "udp" },
- { "rrdp", { NULL }, 5313, "tcp" },
- { "rrdp", { NULL }, 5313, "udp" },
- { "opalis-rbt-ipc", { NULL }, 5314, "tcp" },
- { "opalis-rbt-ipc", { NULL }, 5314, "udp" },
- { "hacl-poll", { NULL }, 5315, "tcp" },
- { "hacl-poll", { NULL }, 5315, "udp" },
- { "hpdevms", { NULL }, 5316, "tcp" },
- { "hpdevms", { NULL }, 5316, "udp" },
- { "bsfserver-zn", { NULL }, 5320, "tcp" },
- { "bsfsvr-zn-ssl", { NULL }, 5321, "tcp" },
- { "kfserver", { NULL }, 5343, "tcp" },
- { "kfserver", { NULL }, 5343, "udp" },
- { "xkotodrcp", { NULL }, 5344, "tcp" },
- { "xkotodrcp", { NULL }, 5344, "udp" },
- { "stuns", { NULL }, 5349, "tcp" },
- { "stuns", { NULL }, 5349, "udp" },
- { "turns", { NULL }, 5349, "tcp" },
- { "turns", { NULL }, 5349, "udp" },
- { "stun-behaviors", { NULL }, 5349, "tcp" },
- { "stun-behaviors", { NULL }, 5349, "udp" },
- { "nat-pmp-status", { NULL }, 5350, "tcp" },
- { "nat-pmp-status", { NULL }, 5350, "udp" },
- { "nat-pmp", { NULL }, 5351, "tcp" },
- { "nat-pmp", { NULL }, 5351, "udp" },
- { "dns-llq", { NULL }, 5352, "tcp" },
- { "dns-llq", { NULL }, 5352, "udp" },
- { "mdns", { NULL }, 5353, "tcp" },
- { "mdns", { NULL }, 5353, "udp" },
- { "mdnsresponder", { NULL }, 5354, "tcp" },
- { "mdnsresponder", { NULL }, 5354, "udp" },
- { "llmnr", { NULL }, 5355, "tcp" },
- { "llmnr", { NULL }, 5355, "udp" },
- { "ms-smlbiz", { NULL }, 5356, "tcp" },
- { "ms-smlbiz", { NULL }, 5356, "udp" },
- { "wsdapi", { NULL }, 5357, "tcp" },
- { "wsdapi", { NULL }, 5357, "udp" },
- { "wsdapi-s", { NULL }, 5358, "tcp" },
- { "wsdapi-s", { NULL }, 5358, "udp" },
- { "ms-alerter", { NULL }, 5359, "tcp" },
- { "ms-alerter", { NULL }, 5359, "udp" },
- { "ms-sideshow", { NULL }, 5360, "tcp" },
- { "ms-sideshow", { NULL }, 5360, "udp" },
- { "ms-s-sideshow", { NULL }, 5361, "tcp" },
- { "ms-s-sideshow", { NULL }, 5361, "udp" },
- { "serverwsd2", { NULL }, 5362, "tcp" },
- { "serverwsd2", { NULL }, 5362, "udp" },
- { "net-projection", { NULL }, 5363, "tcp" },
- { "net-projection", { NULL }, 5363, "udp" },
- { "stresstester", { NULL }, 5397, "tcp" },
- { "stresstester", { NULL }, 5397, "udp" },
- { "elektron-admin", { NULL }, 5398, "tcp" },
- { "elektron-admin", { NULL }, 5398, "udp" },
- { "securitychase", { NULL }, 5399, "tcp" },
- { "securitychase", { NULL }, 5399, "udp" },
- { "excerpt", { NULL }, 5400, "tcp" },
- { "excerpt", { NULL }, 5400, "udp" },
- { "excerpts", { NULL }, 5401, "tcp" },
- { "excerpts", { NULL }, 5401, "udp" },
- { "mftp", { NULL }, 5402, "tcp" },
- { "mftp", { NULL }, 5402, "udp" },
- { "hpoms-ci-lstn", { NULL }, 5403, "tcp" },
- { "hpoms-ci-lstn", { NULL }, 5403, "udp" },
- { "hpoms-dps-lstn", { NULL }, 5404, "tcp" },
- { "hpoms-dps-lstn", { NULL }, 5404, "udp" },
- { "netsupport", { NULL }, 5405, "tcp" },
- { "netsupport", { NULL }, 5405, "udp" },
- { "systemics-sox", { NULL }, 5406, "tcp" },
- { "systemics-sox", { NULL }, 5406, "udp" },
- { "foresyte-clear", { NULL }, 5407, "tcp" },
- { "foresyte-clear", { NULL }, 5407, "udp" },
- { "foresyte-sec", { NULL }, 5408, "tcp" },
- { "foresyte-sec", { NULL }, 5408, "udp" },
- { "salient-dtasrv", { NULL }, 5409, "tcp" },
- { "salient-dtasrv", { NULL }, 5409, "udp" },
- { "salient-usrmgr", { NULL }, 5410, "tcp" },
- { "salient-usrmgr", { NULL }, 5410, "udp" },
- { "actnet", { NULL }, 5411, "tcp" },
- { "actnet", { NULL }, 5411, "udp" },
- { "continuus", { NULL }, 5412, "tcp" },
- { "continuus", { NULL }, 5412, "udp" },
- { "wwiotalk", { NULL }, 5413, "tcp" },
- { "wwiotalk", { NULL }, 5413, "udp" },
- { "statusd", { NULL }, 5414, "tcp" },
- { "statusd", { NULL }, 5414, "udp" },
- { "ns-server", { NULL }, 5415, "tcp" },
- { "ns-server", { NULL }, 5415, "udp" },
- { "sns-gateway", { NULL }, 5416, "tcp" },
- { "sns-gateway", { NULL }, 5416, "udp" },
- { "sns-agent", { NULL }, 5417, "tcp" },
- { "sns-agent", { NULL }, 5417, "udp" },
- { "mcntp", { NULL }, 5418, "tcp" },
- { "mcntp", { NULL }, 5418, "udp" },
- { "dj-ice", { NULL }, 5419, "tcp" },
- { "dj-ice", { NULL }, 5419, "udp" },
- { "cylink-c", { NULL }, 5420, "tcp" },
- { "cylink-c", { NULL }, 5420, "udp" },
- { "netsupport2", { NULL }, 5421, "tcp" },
- { "netsupport2", { NULL }, 5421, "udp" },
- { "salient-mux", { NULL }, 5422, "tcp" },
- { "salient-mux", { NULL }, 5422, "udp" },
- { "virtualuser", { NULL }, 5423, "tcp" },
- { "virtualuser", { NULL }, 5423, "udp" },
- { "beyond-remote", { NULL }, 5424, "tcp" },
- { "beyond-remote", { NULL }, 5424, "udp" },
- { "br-channel", { NULL }, 5425, "tcp" },
- { "br-channel", { NULL }, 5425, "udp" },
- { "devbasic", { NULL }, 5426, "tcp" },
- { "devbasic", { NULL }, 5426, "udp" },
- { "sco-peer-tta", { NULL }, 5427, "tcp" },
- { "sco-peer-tta", { NULL }, 5427, "udp" },
- { "telaconsole", { NULL }, 5428, "tcp" },
- { "telaconsole", { NULL }, 5428, "udp" },
- { "base", { NULL }, 5429, "tcp" },
- { "base", { NULL }, 5429, "udp" },
- { "radec-corp", { NULL }, 5430, "tcp" },
- { "radec-corp", { NULL }, 5430, "udp" },
- { "park-agent", { NULL }, 5431, "tcp" },
- { "park-agent", { NULL }, 5431, "udp" },
- { "postgresql", { NULL }, 5432, "tcp" },
- { "postgresql", { NULL }, 5432, "udp" },
- { "pyrrho", { NULL }, 5433, "tcp" },
- { "pyrrho", { NULL }, 5433, "udp" },
- { "sgi-arrayd", { NULL }, 5434, "tcp" },
- { "sgi-arrayd", { NULL }, 5434, "udp" },
- { "sceanics", { NULL }, 5435, "tcp" },
- { "sceanics", { NULL }, 5435, "udp" },
- { "pmip6-cntl", { NULL }, 5436, "udp" },
- { "pmip6-data", { NULL }, 5437, "udp" },
- { "spss", { NULL }, 5443, "tcp" },
- { "spss", { NULL }, 5443, "udp" },
- { "surebox", { NULL }, 5453, "tcp" },
- { "surebox", { NULL }, 5453, "udp" },
- { "apc-5454", { NULL }, 5454, "tcp" },
- { "apc-5454", { NULL }, 5454, "udp" },
- { "apc-5455", { NULL }, 5455, "tcp" },
- { "apc-5455", { NULL }, 5455, "udp" },
- { "apc-5456", { NULL }, 5456, "tcp" },
- { "apc-5456", { NULL }, 5456, "udp" },
- { "silkmeter", { NULL }, 5461, "tcp" },
- { "silkmeter", { NULL }, 5461, "udp" },
- { "ttl-publisher", { NULL }, 5462, "tcp" },
- { "ttl-publisher", { NULL }, 5462, "udp" },
- { "ttlpriceproxy", { NULL }, 5463, "tcp" },
- { "ttlpriceproxy", { NULL }, 5463, "udp" },
- { "quailnet", { NULL }, 5464, "tcp" },
- { "quailnet", { NULL }, 5464, "udp" },
- { "netops-broker", { NULL }, 5465, "tcp" },
- { "netops-broker", { NULL }, 5465, "udp" },
- { "fcp-addr-srvr1", { NULL }, 5500, "tcp" },
- { "fcp-addr-srvr1", { NULL }, 5500, "udp" },
- { "fcp-addr-srvr2", { NULL }, 5501, "tcp" },
- { "fcp-addr-srvr2", { NULL }, 5501, "udp" },
- { "fcp-srvr-inst1", { NULL }, 5502, "tcp" },
- { "fcp-srvr-inst1", { NULL }, 5502, "udp" },
- { "fcp-srvr-inst2", { NULL }, 5503, "tcp" },
- { "fcp-srvr-inst2", { NULL }, 5503, "udp" },
- { "fcp-cics-gw1", { NULL }, 5504, "tcp" },
- { "fcp-cics-gw1", { NULL }, 5504, "udp" },
- { "checkoutdb", { NULL }, 5505, "tcp" },
- { "checkoutdb", { NULL }, 5505, "udp" },
- { "amc", { NULL }, 5506, "tcp" },
- { "amc", { NULL }, 5506, "udp" },
- { "sgi-eventmond", { NULL }, 5553, "tcp" },
- { "sgi-eventmond", { NULL }, 5553, "udp" },
- { "sgi-esphttp", { NULL }, 5554, "tcp" },
- { "sgi-esphttp", { NULL }, 5554, "udp" },
- { "personal-agent", { NULL }, 5555, "tcp" },
- { "personal-agent", { NULL }, 5555, "udp" },
- { "freeciv", { NULL }, 5556, "tcp" },
- { "freeciv", { NULL }, 5556, "udp" },
- { "farenet", { NULL }, 5557, "tcp" },
- { "westec-connect", { NULL }, 5566, "tcp" },
- { "m-oap", { NULL }, 5567, "tcp" },
- { "m-oap", { NULL }, 5567, "udp" },
- { "sdt", { NULL }, 5568, "tcp" },
- { "sdt", { NULL }, 5568, "udp" },
- { "sdmmp", { NULL }, 5573, "tcp" },
- { "sdmmp", { NULL }, 5573, "udp" },
- { "lsi-bobcat", { NULL }, 5574, "tcp" },
- { "ora-oap", { NULL }, 5575, "tcp" },
- { "fdtracks", { NULL }, 5579, "tcp" },
- { "tmosms0", { NULL }, 5580, "tcp" },
- { "tmosms0", { NULL }, 5580, "udp" },
- { "tmosms1", { NULL }, 5581, "tcp" },
- { "tmosms1", { NULL }, 5581, "udp" },
- { "fac-restore", { NULL }, 5582, "tcp" },
- { "fac-restore", { NULL }, 5582, "udp" },
- { "tmo-icon-sync", { NULL }, 5583, "tcp" },
- { "tmo-icon-sync", { NULL }, 5583, "udp" },
- { "bis-web", { NULL }, 5584, "tcp" },
- { "bis-web", { NULL }, 5584, "udp" },
- { "bis-sync", { NULL }, 5585, "tcp" },
- { "bis-sync", { NULL }, 5585, "udp" },
- { "ininmessaging", { NULL }, 5597, "tcp" },
- { "ininmessaging", { NULL }, 5597, "udp" },
- { "mctfeed", { NULL }, 5598, "tcp" },
- { "mctfeed", { NULL }, 5598, "udp" },
- { "esinstall", { NULL }, 5599, "tcp" },
- { "esinstall", { NULL }, 5599, "udp" },
- { "esmmanager", { NULL }, 5600, "tcp" },
- { "esmmanager", { NULL }, 5600, "udp" },
- { "esmagent", { NULL }, 5601, "tcp" },
- { "esmagent", { NULL }, 5601, "udp" },
- { "a1-msc", { NULL }, 5602, "tcp" },
- { "a1-msc", { NULL }, 5602, "udp" },
- { "a1-bs", { NULL }, 5603, "tcp" },
- { "a1-bs", { NULL }, 5603, "udp" },
- { "a3-sdunode", { NULL }, 5604, "tcp" },
- { "a3-sdunode", { NULL }, 5604, "udp" },
- { "a4-sdunode", { NULL }, 5605, "tcp" },
- { "a4-sdunode", { NULL }, 5605, "udp" },
- { "ninaf", { NULL }, 5627, "tcp" },
- { "ninaf", { NULL }, 5627, "udp" },
- { "htrust", { NULL }, 5628, "tcp" },
- { "htrust", { NULL }, 5628, "udp" },
- { "symantec-sfdb", { NULL }, 5629, "tcp" },
- { "symantec-sfdb", { NULL }, 5629, "udp" },
- { "precise-comm", { NULL }, 5630, "tcp" },
- { "precise-comm", { NULL }, 5630, "udp" },
- { "pcanywheredata", { NULL }, 5631, "tcp" },
- { "pcanywheredata", { NULL }, 5631, "udp" },
- { "pcanywherestat", { NULL }, 5632, "tcp" },
- { "pcanywherestat", { NULL }, 5632, "udp" },
- { "beorl", { NULL }, 5633, "tcp" },
- { "beorl", { NULL }, 5633, "udp" },
- { "xprtld", { NULL }, 5634, "tcp" },
- { "xprtld", { NULL }, 5634, "udp" },
- { "sfmsso", { NULL }, 5635, "tcp" },
- { "sfm-db-server", { NULL }, 5636, "tcp" },
- { "cssc", { NULL }, 5637, "tcp" },
- { "amqps", { NULL }, 5671, "tcp" },
- { "amqps", { NULL }, 5671, "udp" },
- { "amqp", { NULL }, 5672, "tcp" },
- { "amqp", { NULL }, 5672, "udp" },
- { "amqp", { NULL }, 5672, "sctp" },
- { "jms", { NULL }, 5673, "tcp" },
- { "jms", { NULL }, 5673, "udp" },
- { "hyperscsi-port", { NULL }, 5674, "tcp" },
- { "hyperscsi-port", { NULL }, 5674, "udp" },
- { "v5ua", { NULL }, 5675, "tcp" },
- { "v5ua", { NULL }, 5675, "udp" },
- { "v5ua", { NULL }, 5675, "sctp" },
- { "raadmin", { NULL }, 5676, "tcp" },
- { "raadmin", { NULL }, 5676, "udp" },
- { "questdb2-lnchr", { NULL }, 5677, "tcp" },
- { "questdb2-lnchr", { NULL }, 5677, "udp" },
- { "rrac", { NULL }, 5678, "tcp" },
- { "rrac", { NULL }, 5678, "udp" },
- { "dccm", { NULL }, 5679, "tcp" },
- { "dccm", { NULL }, 5679, "udp" },
- { "auriga-router", { NULL }, 5680, "tcp" },
- { "auriga-router", { NULL }, 5680, "udp" },
- { "ncxcp", { NULL }, 5681, "tcp" },
- { "ncxcp", { NULL }, 5681, "udp" },
- { "brightcore", { NULL }, 5682, "udp" },
- { "ggz", { NULL }, 5688, "tcp" },
- { "ggz", { NULL }, 5688, "udp" },
- { "qmvideo", { NULL }, 5689, "tcp" },
- { "qmvideo", { NULL }, 5689, "udp" },
- { "proshareaudio", { NULL }, 5713, "tcp" },
- { "proshareaudio", { NULL }, 5713, "udp" },
- { "prosharevideo", { NULL }, 5714, "tcp" },
- { "prosharevideo", { NULL }, 5714, "udp" },
- { "prosharedata", { NULL }, 5715, "tcp" },
- { "prosharedata", { NULL }, 5715, "udp" },
- { "prosharerequest", { NULL }, 5716, "tcp" },
- { "prosharerequest", { NULL }, 5716, "udp" },
- { "prosharenotify", { NULL }, 5717, "tcp" },
- { "prosharenotify", { NULL }, 5717, "udp" },
- { "dpm", { NULL }, 5718, "tcp" },
- { "dpm", { NULL }, 5718, "udp" },
- { "dpm-agent", { NULL }, 5719, "tcp" },
- { "dpm-agent", { NULL }, 5719, "udp" },
- { "ms-licensing", { NULL }, 5720, "tcp" },
- { "ms-licensing", { NULL }, 5720, "udp" },
- { "dtpt", { NULL }, 5721, "tcp" },
- { "dtpt", { NULL }, 5721, "udp" },
- { "msdfsr", { NULL }, 5722, "tcp" },
- { "msdfsr", { NULL }, 5722, "udp" },
- { "omhs", { NULL }, 5723, "tcp" },
- { "omhs", { NULL }, 5723, "udp" },
- { "omsdk", { NULL }, 5724, "tcp" },
- { "omsdk", { NULL }, 5724, "udp" },
- { "ms-ilm", { NULL }, 5725, "tcp" },
- { "ms-ilm-sts", { NULL }, 5726, "tcp" },
- { "asgenf", { NULL }, 5727, "tcp" },
- { "io-dist-data", { NULL }, 5728, "tcp" },
- { "io-dist-group", { NULL }, 5728, "udp" },
- { "openmail", { NULL }, 5729, "tcp" },
- { "openmail", { NULL }, 5729, "udp" },
- { "unieng", { NULL }, 5730, "tcp" },
- { "unieng", { NULL }, 5730, "udp" },
- { "ida-discover1", { NULL }, 5741, "tcp" },
- { "ida-discover1", { NULL }, 5741, "udp" },
- { "ida-discover2", { NULL }, 5742, "tcp" },
- { "ida-discover2", { NULL }, 5742, "udp" },
- { "watchdoc-pod", { NULL }, 5743, "tcp" },
- { "watchdoc-pod", { NULL }, 5743, "udp" },
- { "watchdoc", { NULL }, 5744, "tcp" },
- { "watchdoc", { NULL }, 5744, "udp" },
- { "fcopy-server", { NULL }, 5745, "tcp" },
- { "fcopy-server", { NULL }, 5745, "udp" },
- { "fcopys-server", { NULL }, 5746, "tcp" },
- { "fcopys-server", { NULL }, 5746, "udp" },
- { "tunatic", { NULL }, 5747, "tcp" },
- { "tunatic", { NULL }, 5747, "udp" },
- { "tunalyzer", { NULL }, 5748, "tcp" },
- { "tunalyzer", { NULL }, 5748, "udp" },
- { "rscd", { NULL }, 5750, "tcp" },
- { "rscd", { NULL }, 5750, "udp" },
- { "openmailg", { NULL }, 5755, "tcp" },
- { "openmailg", { NULL }, 5755, "udp" },
- { "x500ms", { NULL }, 5757, "tcp" },
- { "x500ms", { NULL }, 5757, "udp" },
- { "openmailns", { NULL }, 5766, "tcp" },
- { "openmailns", { NULL }, 5766, "udp" },
- { "s-openmail", { NULL }, 5767, "tcp" },
- { "s-openmail", { NULL }, 5767, "udp" },
- { "openmailpxy", { NULL }, 5768, "tcp" },
- { "openmailpxy", { NULL }, 5768, "udp" },
- { "spramsca", { NULL }, 5769, "tcp" },
- { "spramsca", { NULL }, 5769, "udp" },
- { "spramsd", { NULL }, 5770, "tcp" },
- { "spramsd", { NULL }, 5770, "udp" },
- { "netagent", { NULL }, 5771, "tcp" },
- { "netagent", { NULL }, 5771, "udp" },
- { "dali-port", { NULL }, 5777, "tcp" },
- { "dali-port", { NULL }, 5777, "udp" },
- { "vts-rpc", { NULL }, 5780, "tcp" },
- { "3par-evts", { NULL }, 5781, "tcp" },
- { "3par-evts", { NULL }, 5781, "udp" },
- { "3par-mgmt", { NULL }, 5782, "tcp" },
- { "3par-mgmt", { NULL }, 5782, "udp" },
- { "3par-mgmt-ssl", { NULL }, 5783, "tcp" },
- { "3par-mgmt-ssl", { NULL }, 5783, "udp" },
- { "ibar", { NULL }, 5784, "udp" },
- { "3par-rcopy", { NULL }, 5785, "tcp" },
- { "3par-rcopy", { NULL }, 5785, "udp" },
- { "cisco-redu", { NULL }, 5786, "udp" },
- { "waascluster", { NULL }, 5787, "udp" },
- { "xtreamx", { NULL }, 5793, "tcp" },
- { "xtreamx", { NULL }, 5793, "udp" },
- { "spdp", { NULL }, 5794, "udp" },
- { "icmpd", { NULL }, 5813, "tcp" },
- { "icmpd", { NULL }, 5813, "udp" },
- { "spt-automation", { NULL }, 5814, "tcp" },
- { "spt-automation", { NULL }, 5814, "udp" },
- { "wherehoo", { NULL }, 5859, "tcp" },
- { "wherehoo", { NULL }, 5859, "udp" },
- { "ppsuitemsg", { NULL }, 5863, "tcp" },
- { "ppsuitemsg", { NULL }, 5863, "udp" },
- { "rfb", { NULL }, 5900, "tcp" },
- { "rfb", { NULL }, 5900, "udp" },
- { "cm", { NULL }, 5910, "tcp" },
- { "cm", { NULL }, 5910, "udp" },
- { "cpdlc", { NULL }, 5911, "tcp" },
- { "cpdlc", { NULL }, 5911, "udp" },
- { "fis", { NULL }, 5912, "tcp" },
- { "fis", { NULL }, 5912, "udp" },
- { "ads-c", { NULL }, 5913, "tcp" },
- { "ads-c", { NULL }, 5913, "udp" },
- { "indy", { NULL }, 5963, "tcp" },
- { "indy", { NULL }, 5963, "udp" },
- { "mppolicy-v5", { NULL }, 5968, "tcp" },
- { "mppolicy-v5", { NULL }, 5968, "udp" },
- { "mppolicy-mgr", { NULL }, 5969, "tcp" },
- { "mppolicy-mgr", { NULL }, 5969, "udp" },
- { "couchdb", { NULL }, 5984, "tcp" },
- { "couchdb", { NULL }, 5984, "udp" },
- { "wsman", { NULL }, 5985, "tcp" },
- { "wsman", { NULL }, 5985, "udp" },
- { "wsmans", { NULL }, 5986, "tcp" },
- { "wsmans", { NULL }, 5986, "udp" },
- { "wbem-rmi", { NULL }, 5987, "tcp" },
- { "wbem-rmi", { NULL }, 5987, "udp" },
- { "wbem-http", { NULL }, 5988, "tcp" },
- { "wbem-http", { NULL }, 5988, "udp" },
- { "wbem-https", { NULL }, 5989, "tcp" },
- { "wbem-https", { NULL }, 5989, "udp" },
- { "wbem-exp-https", { NULL }, 5990, "tcp" },
- { "wbem-exp-https", { NULL }, 5990, "udp" },
- { "nuxsl", { NULL }, 5991, "tcp" },
- { "nuxsl", { NULL }, 5991, "udp" },
- { "consul-insight", { NULL }, 5992, "tcp" },
- { "consul-insight", { NULL }, 5992, "udp" },
- { "cvsup", { NULL }, 5999, "tcp" },
- { "cvsup", { NULL }, 5999, "udp" },
- { "ndl-ahp-svc", { NULL }, 6064, "tcp" },
- { "ndl-ahp-svc", { NULL }, 6064, "udp" },
- { "winpharaoh", { NULL }, 6065, "tcp" },
- { "winpharaoh", { NULL }, 6065, "udp" },
- { "ewctsp", { NULL }, 6066, "tcp" },
- { "ewctsp", { NULL }, 6066, "udp" },
- { "gsmp", { NULL }, 6068, "tcp" },
- { "gsmp", { NULL }, 6068, "udp" },
- { "trip", { NULL }, 6069, "tcp" },
- { "trip", { NULL }, 6069, "udp" },
- { "messageasap", { NULL }, 6070, "tcp" },
- { "messageasap", { NULL }, 6070, "udp" },
- { "ssdtp", { NULL }, 6071, "tcp" },
- { "ssdtp", { NULL }, 6071, "udp" },
- { "diagnose-proc", { NULL }, 6072, "tcp" },
- { "diagnose-proc", { NULL }, 6072, "udp" },
- { "directplay8", { NULL }, 6073, "tcp" },
- { "directplay8", { NULL }, 6073, "udp" },
- { "max", { NULL }, 6074, "tcp" },
- { "max", { NULL }, 6074, "udp" },
- { "dpm-acm", { NULL }, 6075, "tcp" },
- { "miami-bcast", { NULL }, 6083, "udp" },
- { "p2p-sip", { NULL }, 6084, "tcp" },
- { "konspire2b", { NULL }, 6085, "tcp" },
- { "konspire2b", { NULL }, 6085, "udp" },
- { "pdtp", { NULL }, 6086, "tcp" },
- { "pdtp", { NULL }, 6086, "udp" },
- { "ldss", { NULL }, 6087, "tcp" },
- { "ldss", { NULL }, 6087, "udp" },
- { "raxa-mgmt", { NULL }, 6099, "tcp" },
- { "synchronet-db", { NULL }, 6100, "tcp" },
- { "synchronet-db", { NULL }, 6100, "udp" },
- { "synchronet-rtc", { NULL }, 6101, "tcp" },
- { "synchronet-rtc", { NULL }, 6101, "udp" },
- { "synchronet-upd", { NULL }, 6102, "tcp" },
- { "synchronet-upd", { NULL }, 6102, "udp" },
- { "rets", { NULL }, 6103, "tcp" },
- { "rets", { NULL }, 6103, "udp" },
- { "dbdb", { NULL }, 6104, "tcp" },
- { "dbdb", { NULL }, 6104, "udp" },
- { "primaserver", { NULL }, 6105, "tcp" },
- { "primaserver", { NULL }, 6105, "udp" },
- { "mpsserver", { NULL }, 6106, "tcp" },
- { "mpsserver", { NULL }, 6106, "udp" },
- { "etc-control", { NULL }, 6107, "tcp" },
- { "etc-control", { NULL }, 6107, "udp" },
- { "sercomm-scadmin", { NULL }, 6108, "tcp" },
- { "sercomm-scadmin", { NULL }, 6108, "udp" },
- { "globecast-id", { NULL }, 6109, "tcp" },
- { "globecast-id", { NULL }, 6109, "udp" },
- { "softcm", { NULL }, 6110, "tcp" },
- { "softcm", { NULL }, 6110, "udp" },
- { "spc", { NULL }, 6111, "tcp" },
- { "spc", { NULL }, 6111, "udp" },
- { "dtspcd", { NULL }, 6112, "tcp" },
- { "dtspcd", { NULL }, 6112, "udp" },
- { "dayliteserver", { NULL }, 6113, "tcp" },
- { "wrspice", { NULL }, 6114, "tcp" },
- { "xic", { NULL }, 6115, "tcp" },
- { "xtlserv", { NULL }, 6116, "tcp" },
- { "daylitetouch", { NULL }, 6117, "tcp" },
- { "spdy", { NULL }, 6121, "tcp" },
- { "bex-webadmin", { NULL }, 6122, "tcp" },
- { "bex-webadmin", { NULL }, 6122, "udp" },
- { "backup-express", { NULL }, 6123, "tcp" },
- { "backup-express", { NULL }, 6123, "udp" },
- { "pnbs", { NULL }, 6124, "tcp" },
- { "pnbs", { NULL }, 6124, "udp" },
- { "nbt-wol", { NULL }, 6133, "tcp" },
- { "nbt-wol", { NULL }, 6133, "udp" },
- { "pulsonixnls", { NULL }, 6140, "tcp" },
- { "pulsonixnls", { NULL }, 6140, "udp" },
- { "meta-corp", { NULL }, 6141, "tcp" },
- { "meta-corp", { NULL }, 6141, "udp" },
- { "aspentec-lm", { NULL }, 6142, "tcp" },
- { "aspentec-lm", { NULL }, 6142, "udp" },
- { "watershed-lm", { NULL }, 6143, "tcp" },
- { "watershed-lm", { NULL }, 6143, "udp" },
- { "statsci1-lm", { NULL }, 6144, "tcp" },
- { "statsci1-lm", { NULL }, 6144, "udp" },
- { "statsci2-lm", { NULL }, 6145, "tcp" },
- { "statsci2-lm", { NULL }, 6145, "udp" },
- { "lonewolf-lm", { NULL }, 6146, "tcp" },
- { "lonewolf-lm", { NULL }, 6146, "udp" },
- { "montage-lm", { NULL }, 6147, "tcp" },
- { "montage-lm", { NULL }, 6147, "udp" },
- { "ricardo-lm", { NULL }, 6148, "tcp" },
- { "ricardo-lm", { NULL }, 6148, "udp" },
- { "tal-pod", { NULL }, 6149, "tcp" },
- { "tal-pod", { NULL }, 6149, "udp" },
- { "efb-aci", { NULL }, 6159, "tcp" },
- { "patrol-ism", { NULL }, 6161, "tcp" },
- { "patrol-ism", { NULL }, 6161, "udp" },
- { "patrol-coll", { NULL }, 6162, "tcp" },
- { "patrol-coll", { NULL }, 6162, "udp" },
- { "pscribe", { NULL }, 6163, "tcp" },
- { "pscribe", { NULL }, 6163, "udp" },
- { "lm-x", { NULL }, 6200, "tcp" },
- { "lm-x", { NULL }, 6200, "udp" },
- { "radmind", { NULL }, 6222, "tcp" },
- { "radmind", { NULL }, 6222, "udp" },
- { "jeol-nsdtp-1", { NULL }, 6241, "tcp" },
- { "jeol-nsddp-1", { NULL }, 6241, "udp" },
- { "jeol-nsdtp-2", { NULL }, 6242, "tcp" },
- { "jeol-nsddp-2", { NULL }, 6242, "udp" },
- { "jeol-nsdtp-3", { NULL }, 6243, "tcp" },
- { "jeol-nsddp-3", { NULL }, 6243, "udp" },
- { "jeol-nsdtp-4", { NULL }, 6244, "tcp" },
- { "jeol-nsddp-4", { NULL }, 6244, "udp" },
- { "tl1-raw-ssl", { NULL }, 6251, "tcp" },
- { "tl1-raw-ssl", { NULL }, 6251, "udp" },
- { "tl1-ssh", { NULL }, 6252, "tcp" },
- { "tl1-ssh", { NULL }, 6252, "udp" },
- { "crip", { NULL }, 6253, "tcp" },
- { "crip", { NULL }, 6253, "udp" },
- { "gld", { NULL }, 6267, "tcp" },
- { "grid", { NULL }, 6268, "tcp" },
- { "grid", { NULL }, 6268, "udp" },
- { "grid-alt", { NULL }, 6269, "tcp" },
- { "grid-alt", { NULL }, 6269, "udp" },
- { "bmc-grx", { NULL }, 6300, "tcp" },
- { "bmc-grx", { NULL }, 6300, "udp" },
- { "bmc_ctd_ldap", { NULL }, 6301, "tcp" },
- { "bmc_ctd_ldap", { NULL }, 6301, "udp" },
- { "ufmp", { NULL }, 6306, "tcp" },
- { "ufmp", { NULL }, 6306, "udp" },
- { "scup", { NULL }, 6315, "tcp" },
- { "scup-disc", { NULL }, 6315, "udp" },
- { "abb-escp", { NULL }, 6316, "tcp" },
- { "abb-escp", { NULL }, 6316, "udp" },
- { "repsvc", { NULL }, 6320, "tcp" },
- { "repsvc", { NULL }, 6320, "udp" },
- { "emp-server1", { NULL }, 6321, "tcp" },
- { "emp-server1", { NULL }, 6321, "udp" },
- { "emp-server2", { NULL }, 6322, "tcp" },
- { "emp-server2", { NULL }, 6322, "udp" },
- { "sflow", { NULL }, 6343, "tcp" },
- { "sflow", { NULL }, 6343, "udp" },
- { "gnutella-svc", { NULL }, 6346, "tcp" },
- { "gnutella-svc", { NULL }, 6346, "udp" },
- { "gnutella-rtr", { NULL }, 6347, "tcp" },
- { "gnutella-rtr", { NULL }, 6347, "udp" },
- { "adap", { NULL }, 6350, "tcp" },
- { "adap", { NULL }, 6350, "udp" },
- { "pmcs", { NULL }, 6355, "tcp" },
- { "pmcs", { NULL }, 6355, "udp" },
- { "metaedit-mu", { NULL }, 6360, "tcp" },
- { "metaedit-mu", { NULL }, 6360, "udp" },
- { "metaedit-se", { NULL }, 6370, "tcp" },
- { "metaedit-se", { NULL }, 6370, "udp" },
- { "metatude-mds", { NULL }, 6382, "tcp" },
- { "metatude-mds", { NULL }, 6382, "udp" },
- { "clariion-evr01", { NULL }, 6389, "tcp" },
- { "clariion-evr01", { NULL }, 6389, "udp" },
- { "metaedit-ws", { NULL }, 6390, "tcp" },
- { "metaedit-ws", { NULL }, 6390, "udp" },
- { "faxcomservice", { NULL }, 6417, "tcp" },
- { "faxcomservice", { NULL }, 6417, "udp" },
- { "syserverremote", { NULL }, 6418, "tcp" },
- { "svdrp", { NULL }, 6419, "tcp" },
- { "nim-vdrshell", { NULL }, 6420, "tcp" },
- { "nim-vdrshell", { NULL }, 6420, "udp" },
- { "nim-wan", { NULL }, 6421, "tcp" },
- { "nim-wan", { NULL }, 6421, "udp" },
- { "pgbouncer", { NULL }, 6432, "tcp" },
- { "sun-sr-https", { NULL }, 6443, "tcp" },
- { "sun-sr-https", { NULL }, 6443, "udp" },
- { "sge_qmaster", { NULL }, 6444, "tcp" },
- { "sge_qmaster", { NULL }, 6444, "udp" },
- { "sge_execd", { NULL }, 6445, "tcp" },
- { "sge_execd", { NULL }, 6445, "udp" },
- { "mysql-proxy", { NULL }, 6446, "tcp" },
- { "mysql-proxy", { NULL }, 6446, "udp" },
- { "skip-cert-recv", { NULL }, 6455, "tcp" },
- { "skip-cert-send", { NULL }, 6456, "udp" },
- { "lvision-lm", { NULL }, 6471, "tcp" },
- { "lvision-lm", { NULL }, 6471, "udp" },
- { "sun-sr-http", { NULL }, 6480, "tcp" },
- { "sun-sr-http", { NULL }, 6480, "udp" },
- { "servicetags", { NULL }, 6481, "tcp" },
- { "servicetags", { NULL }, 6481, "udp" },
- { "ldoms-mgmt", { NULL }, 6482, "tcp" },
- { "ldoms-mgmt", { NULL }, 6482, "udp" },
- { "SunVTS-RMI", { NULL }, 6483, "tcp" },
- { "SunVTS-RMI", { NULL }, 6483, "udp" },
- { "sun-sr-jms", { NULL }, 6484, "tcp" },
- { "sun-sr-jms", { NULL }, 6484, "udp" },
- { "sun-sr-iiop", { NULL }, 6485, "tcp" },
- { "sun-sr-iiop", { NULL }, 6485, "udp" },
- { "sun-sr-iiops", { NULL }, 6486, "tcp" },
- { "sun-sr-iiops", { NULL }, 6486, "udp" },
- { "sun-sr-iiop-aut", { NULL }, 6487, "tcp" },
- { "sun-sr-iiop-aut", { NULL }, 6487, "udp" },
- { "sun-sr-jmx", { NULL }, 6488, "tcp" },
- { "sun-sr-jmx", { NULL }, 6488, "udp" },
- { "sun-sr-admin", { NULL }, 6489, "tcp" },
- { "sun-sr-admin", { NULL }, 6489, "udp" },
- { "boks", { NULL }, 6500, "tcp" },
- { "boks", { NULL }, 6500, "udp" },
- { "boks_servc", { NULL }, 6501, "tcp" },
- { "boks_servc", { NULL }, 6501, "udp" },
- { "boks_servm", { NULL }, 6502, "tcp" },
- { "boks_servm", { NULL }, 6502, "udp" },
- { "boks_clntd", { NULL }, 6503, "tcp" },
- { "boks_clntd", { NULL }, 6503, "udp" },
- { "badm_priv", { NULL }, 6505, "tcp" },
- { "badm_priv", { NULL }, 6505, "udp" },
- { "badm_pub", { NULL }, 6506, "tcp" },
- { "badm_pub", { NULL }, 6506, "udp" },
- { "bdir_priv", { NULL }, 6507, "tcp" },
- { "bdir_priv", { NULL }, 6507, "udp" },
- { "bdir_pub", { NULL }, 6508, "tcp" },
- { "bdir_pub", { NULL }, 6508, "udp" },
- { "mgcs-mfp-port", { NULL }, 6509, "tcp" },
- { "mgcs-mfp-port", { NULL }, 6509, "udp" },
- { "mcer-port", { NULL }, 6510, "tcp" },
- { "mcer-port", { NULL }, 6510, "udp" },
- { "netconf-tls", { NULL }, 6513, "tcp" },
- { "syslog-tls", { NULL }, 6514, "tcp" },
- { "syslog-tls", { NULL }, 6514, "udp" },
- { "syslog-tls", { NULL }, 6514, "dccp" },
- { "elipse-rec", { NULL }, 6515, "tcp" },
- { "elipse-rec", { NULL }, 6515, "udp" },
- { "lds-distrib", { NULL }, 6543, "tcp" },
- { "lds-distrib", { NULL }, 6543, "udp" },
- { "lds-dump", { NULL }, 6544, "tcp" },
- { "lds-dump", { NULL }, 6544, "udp" },
- { "apc-6547", { NULL }, 6547, "tcp" },
- { "apc-6547", { NULL }, 6547, "udp" },
- { "apc-6548", { NULL }, 6548, "tcp" },
- { "apc-6548", { NULL }, 6548, "udp" },
- { "apc-6549", { NULL }, 6549, "tcp" },
- { "apc-6549", { NULL }, 6549, "udp" },
- { "fg-sysupdate", { NULL }, 6550, "tcp" },
- { "fg-sysupdate", { NULL }, 6550, "udp" },
- { "sum", { NULL }, 6551, "tcp" },
- { "sum", { NULL }, 6551, "udp" },
- { "xdsxdm", { NULL }, 6558, "tcp" },
- { "xdsxdm", { NULL }, 6558, "udp" },
- { "sane-port", { NULL }, 6566, "tcp" },
- { "sane-port", { NULL }, 6566, "udp" },
- { "esp", { NULL }, 6567, "tcp" },
- { "esp", { NULL }, 6567, "udp" },
- { "canit_store", { NULL }, 6568, "tcp" },
- { "rp-reputation", { NULL }, 6568, "udp" },
- { "affiliate", { NULL }, 6579, "tcp" },
- { "affiliate", { NULL }, 6579, "udp" },
- { "parsec-master", { NULL }, 6580, "tcp" },
- { "parsec-master", { NULL }, 6580, "udp" },
- { "parsec-peer", { NULL }, 6581, "tcp" },
- { "parsec-peer", { NULL }, 6581, "udp" },
- { "parsec-game", { NULL }, 6582, "tcp" },
- { "parsec-game", { NULL }, 6582, "udp" },
- { "joaJewelSuite", { NULL }, 6583, "tcp" },
- { "joaJewelSuite", { NULL }, 6583, "udp" },
- { "mshvlm", { NULL }, 6600, "tcp" },
- { "mstmg-sstp", { NULL }, 6601, "tcp" },
- { "wsscomfrmwk", { NULL }, 6602, "tcp" },
- { "odette-ftps", { NULL }, 6619, "tcp" },
- { "odette-ftps", { NULL }, 6619, "udp" },
- { "kftp-data", { NULL }, 6620, "tcp" },
- { "kftp-data", { NULL }, 6620, "udp" },
- { "kftp", { NULL }, 6621, "tcp" },
- { "kftp", { NULL }, 6621, "udp" },
- { "mcftp", { NULL }, 6622, "tcp" },
- { "mcftp", { NULL }, 6622, "udp" },
- { "ktelnet", { NULL }, 6623, "tcp" },
- { "ktelnet", { NULL }, 6623, "udp" },
- { "datascaler-db", { NULL }, 6624, "tcp" },
- { "datascaler-ctl", { NULL }, 6625, "tcp" },
- { "wago-service", { NULL }, 6626, "tcp" },
- { "wago-service", { NULL }, 6626, "udp" },
- { "nexgen", { NULL }, 6627, "tcp" },
- { "nexgen", { NULL }, 6627, "udp" },
- { "afesc-mc", { NULL }, 6628, "tcp" },
- { "afesc-mc", { NULL }, 6628, "udp" },
- { "mxodbc-connect", { NULL }, 6632, "tcp" },
- { "pcs-sf-ui-man", { NULL }, 6655, "tcp" },
- { "emgmsg", { NULL }, 6656, "tcp" },
- { "palcom-disc", { NULL }, 6657, "udp" },
- { "vocaltec-gold", { NULL }, 6670, "tcp" },
- { "vocaltec-gold", { NULL }, 6670, "udp" },
- { "p4p-portal", { NULL }, 6671, "tcp" },
- { "p4p-portal", { NULL }, 6671, "udp" },
- { "vision_server", { NULL }, 6672, "tcp" },
- { "vision_server", { NULL }, 6672, "udp" },
- { "vision_elmd", { NULL }, 6673, "tcp" },
- { "vision_elmd", { NULL }, 6673, "udp" },
- { "vfbp", { NULL }, 6678, "tcp" },
- { "vfbp-disc", { NULL }, 6678, "udp" },
- { "osaut", { NULL }, 6679, "tcp" },
- { "osaut", { NULL }, 6679, "udp" },
- { "clever-ctrace", { NULL }, 6687, "tcp" },
- { "clever-tcpip", { NULL }, 6688, "tcp" },
- { "tsa", { NULL }, 6689, "tcp" },
- { "tsa", { NULL }, 6689, "udp" },
- { "babel", { NULL }, 6697, "udp" },
- { "kti-icad-srvr", { NULL }, 6701, "tcp" },
- { "kti-icad-srvr", { NULL }, 6701, "udp" },
- { "e-design-net", { NULL }, 6702, "tcp" },
- { "e-design-net", { NULL }, 6702, "udp" },
- { "e-design-web", { NULL }, 6703, "tcp" },
- { "e-design-web", { NULL }, 6703, "udp" },
- { "frc-hp", { NULL }, 6704, "sctp" },
- { "frc-mp", { NULL }, 6705, "sctp" },
- { "frc-lp", { NULL }, 6706, "sctp" },
- { "ibprotocol", { NULL }, 6714, "tcp" },
- { "ibprotocol", { NULL }, 6714, "udp" },
- { "fibotrader-com", { NULL }, 6715, "tcp" },
- { "fibotrader-com", { NULL }, 6715, "udp" },
- { "bmc-perf-agent", { NULL }, 6767, "tcp" },
- { "bmc-perf-agent", { NULL }, 6767, "udp" },
- { "bmc-perf-mgrd", { NULL }, 6768, "tcp" },
- { "bmc-perf-mgrd", { NULL }, 6768, "udp" },
- { "adi-gxp-srvprt", { NULL }, 6769, "tcp" },
- { "adi-gxp-srvprt", { NULL }, 6769, "udp" },
- { "plysrv-http", { NULL }, 6770, "tcp" },
- { "plysrv-http", { NULL }, 6770, "udp" },
- { "plysrv-https", { NULL }, 6771, "tcp" },
- { "plysrv-https", { NULL }, 6771, "udp" },
- { "dgpf-exchg", { NULL }, 6785, "tcp" },
- { "dgpf-exchg", { NULL }, 6785, "udp" },
- { "smc-jmx", { NULL }, 6786, "tcp" },
- { "smc-jmx", { NULL }, 6786, "udp" },
- { "smc-admin", { NULL }, 6787, "tcp" },
- { "smc-admin", { NULL }, 6787, "udp" },
- { "smc-http", { NULL }, 6788, "tcp" },
- { "smc-http", { NULL }, 6788, "udp" },
- { "smc-https", { NULL }, 6789, "tcp" },
- { "smc-https", { NULL }, 6789, "udp" },
- { "hnmp", { NULL }, 6790, "tcp" },
- { "hnmp", { NULL }, 6790, "udp" },
- { "hnm", { NULL }, 6791, "tcp" },
- { "hnm", { NULL }, 6791, "udp" },
- { "acnet", { NULL }, 6801, "tcp" },
- { "acnet", { NULL }, 6801, "udp" },
- { "pentbox-sim", { NULL }, 6817, "tcp" },
- { "ambit-lm", { NULL }, 6831, "tcp" },
- { "ambit-lm", { NULL }, 6831, "udp" },
- { "netmo-default", { NULL }, 6841, "tcp" },
- { "netmo-default", { NULL }, 6841, "udp" },
- { "netmo-http", { NULL }, 6842, "tcp" },
- { "netmo-http", { NULL }, 6842, "udp" },
- { "iccrushmore", { NULL }, 6850, "tcp" },
- { "iccrushmore", { NULL }, 6850, "udp" },
- { "acctopus-cc", { NULL }, 6868, "tcp" },
- { "acctopus-st", { NULL }, 6868, "udp" },
- { "muse", { NULL }, 6888, "tcp" },
- { "muse", { NULL }, 6888, "udp" },
- { "jetstream", { NULL }, 6901, "tcp" },
- { "xsmsvc", { NULL }, 6936, "tcp" },
- { "xsmsvc", { NULL }, 6936, "udp" },
- { "bioserver", { NULL }, 6946, "tcp" },
- { "bioserver", { NULL }, 6946, "udp" },
- { "otlp", { NULL }, 6951, "tcp" },
- { "otlp", { NULL }, 6951, "udp" },
- { "jmact3", { NULL }, 6961, "tcp" },
- { "jmact3", { NULL }, 6961, "udp" },
- { "jmevt2", { NULL }, 6962, "tcp" },
- { "jmevt2", { NULL }, 6962, "udp" },
- { "swismgr1", { NULL }, 6963, "tcp" },
- { "swismgr1", { NULL }, 6963, "udp" },
- { "swismgr2", { NULL }, 6964, "tcp" },
- { "swismgr2", { NULL }, 6964, "udp" },
- { "swistrap", { NULL }, 6965, "tcp" },
- { "swistrap", { NULL }, 6965, "udp" },
- { "swispol", { NULL }, 6966, "tcp" },
- { "swispol", { NULL }, 6966, "udp" },
- { "acmsoda", { NULL }, 6969, "tcp" },
- { "acmsoda", { NULL }, 6969, "udp" },
- { "MobilitySrv", { NULL }, 6997, "tcp" },
- { "MobilitySrv", { NULL }, 6997, "udp" },
- { "iatp-highpri", { NULL }, 6998, "tcp" },
- { "iatp-highpri", { NULL }, 6998, "udp" },
- { "iatp-normalpri", { NULL }, 6999, "tcp" },
- { "iatp-normalpri", { NULL }, 6999, "udp" },
- { "afs3-fileserver", { NULL }, 7000, "tcp" },
- { "afs3-fileserver", { NULL }, 7000, "udp" },
- { "afs3-callback", { NULL }, 7001, "tcp" },
- { "afs3-callback", { NULL }, 7001, "udp" },
- { "afs3-prserver", { NULL }, 7002, "tcp" },
- { "afs3-prserver", { NULL }, 7002, "udp" },
- { "afs3-vlserver", { NULL }, 7003, "tcp" },
- { "afs3-vlserver", { NULL }, 7003, "udp" },
- { "afs3-kaserver", { NULL }, 7004, "tcp" },
- { "afs3-kaserver", { NULL }, 7004, "udp" },
- { "afs3-volser", { NULL }, 7005, "tcp" },
- { "afs3-volser", { NULL }, 7005, "udp" },
- { "afs3-errors", { NULL }, 7006, "tcp" },
- { "afs3-errors", { NULL }, 7006, "udp" },
- { "afs3-bos", { NULL }, 7007, "tcp" },
- { "afs3-bos", { NULL }, 7007, "udp" },
- { "afs3-update", { NULL }, 7008, "tcp" },
- { "afs3-update", { NULL }, 7008, "udp" },
- { "afs3-rmtsys", { NULL }, 7009, "tcp" },
- { "afs3-rmtsys", { NULL }, 7009, "udp" },
- { "ups-onlinet", { NULL }, 7010, "tcp" },
- { "ups-onlinet", { NULL }, 7010, "udp" },
- { "talon-disc", { NULL }, 7011, "tcp" },
- { "talon-disc", { NULL }, 7011, "udp" },
- { "talon-engine", { NULL }, 7012, "tcp" },
- { "talon-engine", { NULL }, 7012, "udp" },
- { "microtalon-dis", { NULL }, 7013, "tcp" },
- { "microtalon-dis", { NULL }, 7013, "udp" },
- { "microtalon-com", { NULL }, 7014, "tcp" },
- { "microtalon-com", { NULL }, 7014, "udp" },
- { "talon-webserver", { NULL }, 7015, "tcp" },
- { "talon-webserver", { NULL }, 7015, "udp" },
- { "dpserve", { NULL }, 7020, "tcp" },
- { "dpserve", { NULL }, 7020, "udp" },
- { "dpserveadmin", { NULL }, 7021, "tcp" },
- { "dpserveadmin", { NULL }, 7021, "udp" },
- { "ctdp", { NULL }, 7022, "tcp" },
- { "ctdp", { NULL }, 7022, "udp" },
- { "ct2nmcs", { NULL }, 7023, "tcp" },
- { "ct2nmcs", { NULL }, 7023, "udp" },
- { "vmsvc", { NULL }, 7024, "tcp" },
- { "vmsvc", { NULL }, 7024, "udp" },
- { "vmsvc-2", { NULL }, 7025, "tcp" },
- { "vmsvc-2", { NULL }, 7025, "udp" },
- { "op-probe", { NULL }, 7030, "tcp" },
- { "op-probe", { NULL }, 7030, "udp" },
- { "arcp", { NULL }, 7070, "tcp" },
- { "arcp", { NULL }, 7070, "udp" },
- { "iwg1", { NULL }, 7071, "tcp" },
- { "iwg1", { NULL }, 7071, "udp" },
- { "empowerid", { NULL }, 7080, "tcp" },
- { "empowerid", { NULL }, 7080, "udp" },
- { "lazy-ptop", { NULL }, 7099, "tcp" },
- { "lazy-ptop", { NULL }, 7099, "udp" },
- { "font-service", { NULL }, 7100, "tcp" },
- { "font-service", { NULL }, 7100, "udp" },
- { "elcn", { NULL }, 7101, "tcp" },
- { "elcn", { NULL }, 7101, "udp" },
- { "aes-x170", { NULL }, 7107, "udp" },
- { "virprot-lm", { NULL }, 7121, "tcp" },
- { "virprot-lm", { NULL }, 7121, "udp" },
- { "scenidm", { NULL }, 7128, "tcp" },
- { "scenidm", { NULL }, 7128, "udp" },
- { "scenccs", { NULL }, 7129, "tcp" },
- { "scenccs", { NULL }, 7129, "udp" },
- { "cabsm-comm", { NULL }, 7161, "tcp" },
- { "cabsm-comm", { NULL }, 7161, "udp" },
- { "caistoragemgr", { NULL }, 7162, "tcp" },
- { "caistoragemgr", { NULL }, 7162, "udp" },
- { "cacsambroker", { NULL }, 7163, "tcp" },
- { "cacsambroker", { NULL }, 7163, "udp" },
- { "fsr", { NULL }, 7164, "tcp" },
- { "fsr", { NULL }, 7164, "udp" },
- { "doc-server", { NULL }, 7165, "tcp" },
- { "doc-server", { NULL }, 7165, "udp" },
- { "aruba-server", { NULL }, 7166, "tcp" },
- { "aruba-server", { NULL }, 7166, "udp" },
- { "casrmagent", { NULL }, 7167, "tcp" },
- { "cnckadserver", { NULL }, 7168, "tcp" },
- { "ccag-pib", { NULL }, 7169, "tcp" },
- { "ccag-pib", { NULL }, 7169, "udp" },
- { "nsrp", { NULL }, 7170, "tcp" },
- { "nsrp", { NULL }, 7170, "udp" },
- { "drm-production", { NULL }, 7171, "tcp" },
- { "drm-production", { NULL }, 7171, "udp" },
- { "zsecure", { NULL }, 7173, "tcp" },
- { "clutild", { NULL }, 7174, "tcp" },
- { "clutild", { NULL }, 7174, "udp" },
- { "fodms", { NULL }, 7200, "tcp" },
- { "fodms", { NULL }, 7200, "udp" },
- { "dlip", { NULL }, 7201, "tcp" },
- { "dlip", { NULL }, 7201, "udp" },
- { "ramp", { NULL }, 7227, "tcp" },
- { "ramp", { NULL }, 7227, "udp" },
- { "citrixupp", { NULL }, 7228, "tcp" },
- { "citrixuppg", { NULL }, 7229, "tcp" },
- { "pads", { NULL }, 7237, "tcp" },
- { "cnap", { NULL }, 7262, "tcp" },
- { "cnap", { NULL }, 7262, "udp" },
- { "watchme-7272", { NULL }, 7272, "tcp" },
- { "watchme-7272", { NULL }, 7272, "udp" },
- { "oma-rlp", { NULL }, 7273, "tcp" },
- { "oma-rlp", { NULL }, 7273, "udp" },
- { "oma-rlp-s", { NULL }, 7274, "tcp" },
- { "oma-rlp-s", { NULL }, 7274, "udp" },
- { "oma-ulp", { NULL }, 7275, "tcp" },
- { "oma-ulp", { NULL }, 7275, "udp" },
- { "oma-ilp", { NULL }, 7276, "tcp" },
- { "oma-ilp", { NULL }, 7276, "udp" },
- { "oma-ilp-s", { NULL }, 7277, "tcp" },
- { "oma-ilp-s", { NULL }, 7277, "udp" },
- { "oma-dcdocbs", { NULL }, 7278, "tcp" },
- { "oma-dcdocbs", { NULL }, 7278, "udp" },
- { "ctxlic", { NULL }, 7279, "tcp" },
- { "ctxlic", { NULL }, 7279, "udp" },
- { "itactionserver1", { NULL }, 7280, "tcp" },
- { "itactionserver1", { NULL }, 7280, "udp" },
- { "itactionserver2", { NULL }, 7281, "tcp" },
- { "itactionserver2", { NULL }, 7281, "udp" },
- { "mzca-action", { NULL }, 7282, "tcp" },
- { "mzca-alert", { NULL }, 7282, "udp" },
- { "lcm-server", { NULL }, 7365, "tcp" },
- { "lcm-server", { NULL }, 7365, "udp" },
- { "mindfilesys", { NULL }, 7391, "tcp" },
- { "mindfilesys", { NULL }, 7391, "udp" },
- { "mrssrendezvous", { NULL }, 7392, "tcp" },
- { "mrssrendezvous", { NULL }, 7392, "udp" },
- { "nfoldman", { NULL }, 7393, "tcp" },
- { "nfoldman", { NULL }, 7393, "udp" },
- { "fse", { NULL }, 7394, "tcp" },
- { "fse", { NULL }, 7394, "udp" },
- { "winqedit", { NULL }, 7395, "tcp" },
- { "winqedit", { NULL }, 7395, "udp" },
- { "hexarc", { NULL }, 7397, "tcp" },
- { "hexarc", { NULL }, 7397, "udp" },
- { "rtps-discovery", { NULL }, 7400, "tcp" },
- { "rtps-discovery", { NULL }, 7400, "udp" },
- { "rtps-dd-ut", { NULL }, 7401, "tcp" },
- { "rtps-dd-ut", { NULL }, 7401, "udp" },
- { "rtps-dd-mt", { NULL }, 7402, "tcp" },
- { "rtps-dd-mt", { NULL }, 7402, "udp" },
- { "ionixnetmon", { NULL }, 7410, "tcp" },
- { "ionixnetmon", { NULL }, 7410, "udp" },
- { "mtportmon", { NULL }, 7421, "tcp" },
- { "mtportmon", { NULL }, 7421, "udp" },
- { "pmdmgr", { NULL }, 7426, "tcp" },
- { "pmdmgr", { NULL }, 7426, "udp" },
- { "oveadmgr", { NULL }, 7427, "tcp" },
- { "oveadmgr", { NULL }, 7427, "udp" },
- { "ovladmgr", { NULL }, 7428, "tcp" },
- { "ovladmgr", { NULL }, 7428, "udp" },
- { "opi-sock", { NULL }, 7429, "tcp" },
- { "opi-sock", { NULL }, 7429, "udp" },
- { "xmpv7", { NULL }, 7430, "tcp" },
- { "xmpv7", { NULL }, 7430, "udp" },
- { "pmd", { NULL }, 7431, "tcp" },
- { "pmd", { NULL }, 7431, "udp" },
- { "faximum", { NULL }, 7437, "tcp" },
- { "faximum", { NULL }, 7437, "udp" },
- { "oracleas-https", { NULL }, 7443, "tcp" },
- { "oracleas-https", { NULL }, 7443, "udp" },
- { "rise", { NULL }, 7473, "tcp" },
- { "rise", { NULL }, 7473, "udp" },
- { "telops-lmd", { NULL }, 7491, "tcp" },
- { "telops-lmd", { NULL }, 7491, "udp" },
- { "silhouette", { NULL }, 7500, "tcp" },
- { "silhouette", { NULL }, 7500, "udp" },
- { "ovbus", { NULL }, 7501, "tcp" },
- { "ovbus", { NULL }, 7501, "udp" },
- { "acplt", { NULL }, 7509, "tcp" },
- { "ovhpas", { NULL }, 7510, "tcp" },
- { "ovhpas", { NULL }, 7510, "udp" },
- { "pafec-lm", { NULL }, 7511, "tcp" },
- { "pafec-lm", { NULL }, 7511, "udp" },
- { "saratoga", { NULL }, 7542, "tcp" },
- { "saratoga", { NULL }, 7542, "udp" },
- { "atul", { NULL }, 7543, "tcp" },
- { "atul", { NULL }, 7543, "udp" },
- { "nta-ds", { NULL }, 7544, "tcp" },
- { "nta-ds", { NULL }, 7544, "udp" },
- { "nta-us", { NULL }, 7545, "tcp" },
- { "nta-us", { NULL }, 7545, "udp" },
- { "cfs", { NULL }, 7546, "tcp" },
- { "cfs", { NULL }, 7546, "udp" },
- { "cwmp", { NULL }, 7547, "tcp" },
- { "cwmp", { NULL }, 7547, "udp" },
- { "tidp", { NULL }, 7548, "tcp" },
- { "tidp", { NULL }, 7548, "udp" },
- { "nls-tl", { NULL }, 7549, "tcp" },
- { "nls-tl", { NULL }, 7549, "udp" },
- { "sncp", { NULL }, 7560, "tcp" },
- { "sncp", { NULL }, 7560, "udp" },
- { "cfw", { NULL }, 7563, "tcp" },
- { "vsi-omega", { NULL }, 7566, "tcp" },
- { "vsi-omega", { NULL }, 7566, "udp" },
- { "dell-eql-asm", { NULL }, 7569, "tcp" },
- { "aries-kfinder", { NULL }, 7570, "tcp" },
- { "aries-kfinder", { NULL }, 7570, "udp" },
- { "sun-lm", { NULL }, 7588, "tcp" },
- { "sun-lm", { NULL }, 7588, "udp" },
- { "indi", { NULL }, 7624, "tcp" },
- { "indi", { NULL }, 7624, "udp" },
- { "simco", { NULL }, 7626, "tcp" },
- { "simco", { NULL }, 7626, "sctp" },
- { "soap-http", { NULL }, 7627, "tcp" },
- { "soap-http", { NULL }, 7627, "udp" },
- { "zen-pawn", { NULL }, 7628, "tcp" },
- { "zen-pawn", { NULL }, 7628, "udp" },
- { "xdas", { NULL }, 7629, "tcp" },
- { "xdas", { NULL }, 7629, "udp" },
- { "hawk", { NULL }, 7630, "tcp" },
- { "tesla-sys-msg", { NULL }, 7631, "tcp" },
- { "pmdfmgt", { NULL }, 7633, "tcp" },
- { "pmdfmgt", { NULL }, 7633, "udp" },
- { "cuseeme", { NULL }, 7648, "tcp" },
- { "cuseeme", { NULL }, 7648, "udp" },
- { "imqstomp", { NULL }, 7672, "tcp" },
- { "imqstomps", { NULL }, 7673, "tcp" },
- { "imqtunnels", { NULL }, 7674, "tcp" },
- { "imqtunnels", { NULL }, 7674, "udp" },
- { "imqtunnel", { NULL }, 7675, "tcp" },
- { "imqtunnel", { NULL }, 7675, "udp" },
- { "imqbrokerd", { NULL }, 7676, "tcp" },
- { "imqbrokerd", { NULL }, 7676, "udp" },
- { "sun-user-https", { NULL }, 7677, "tcp" },
- { "sun-user-https", { NULL }, 7677, "udp" },
- { "pando-pub", { NULL }, 7680, "tcp" },
- { "pando-pub", { NULL }, 7680, "udp" },
- { "collaber", { NULL }, 7689, "tcp" },
- { "collaber", { NULL }, 7689, "udp" },
- { "klio", { NULL }, 7697, "tcp" },
- { "klio", { NULL }, 7697, "udp" },
- { "em7-secom", { NULL }, 7700, "tcp" },
- { "sync-em7", { NULL }, 7707, "tcp" },
- { "sync-em7", { NULL }, 7707, "udp" },
- { "scinet", { NULL }, 7708, "tcp" },
- { "scinet", { NULL }, 7708, "udp" },
- { "medimageportal", { NULL }, 7720, "tcp" },
- { "medimageportal", { NULL }, 7720, "udp" },
- { "nsdeepfreezectl", { NULL }, 7724, "tcp" },
- { "nsdeepfreezectl", { NULL }, 7724, "udp" },
- { "nitrogen", { NULL }, 7725, "tcp" },
- { "nitrogen", { NULL }, 7725, "udp" },
- { "freezexservice", { NULL }, 7726, "tcp" },
- { "freezexservice", { NULL }, 7726, "udp" },
- { "trident-data", { NULL }, 7727, "tcp" },
- { "trident-data", { NULL }, 7727, "udp" },
- { "smip", { NULL }, 7734, "tcp" },
- { "smip", { NULL }, 7734, "udp" },
- { "aiagent", { NULL }, 7738, "tcp" },
- { "aiagent", { NULL }, 7738, "udp" },
- { "scriptview", { NULL }, 7741, "tcp" },
- { "scriptview", { NULL }, 7741, "udp" },
- { "msss", { NULL }, 7742, "tcp" },
- { "sstp-1", { NULL }, 7743, "tcp" },
- { "sstp-1", { NULL }, 7743, "udp" },
- { "raqmon-pdu", { NULL }, 7744, "tcp" },
- { "raqmon-pdu", { NULL }, 7744, "udp" },
- { "prgp", { NULL }, 7747, "tcp" },
- { "prgp", { NULL }, 7747, "udp" },
- { "cbt", { NULL }, 7777, "tcp" },
- { "cbt", { NULL }, 7777, "udp" },
- { "interwise", { NULL }, 7778, "tcp" },
- { "interwise", { NULL }, 7778, "udp" },
- { "vstat", { NULL }, 7779, "tcp" },
- { "vstat", { NULL }, 7779, "udp" },
- { "accu-lmgr", { NULL }, 7781, "tcp" },
- { "accu-lmgr", { NULL }, 7781, "udp" },
- { "minivend", { NULL }, 7786, "tcp" },
- { "minivend", { NULL }, 7786, "udp" },
- { "popup-reminders", { NULL }, 7787, "tcp" },
- { "popup-reminders", { NULL }, 7787, "udp" },
- { "office-tools", { NULL }, 7789, "tcp" },
- { "office-tools", { NULL }, 7789, "udp" },
- { "q3ade", { NULL }, 7794, "tcp" },
- { "q3ade", { NULL }, 7794, "udp" },
- { "pnet-conn", { NULL }, 7797, "tcp" },
- { "pnet-conn", { NULL }, 7797, "udp" },
- { "pnet-enc", { NULL }, 7798, "tcp" },
- { "pnet-enc", { NULL }, 7798, "udp" },
- { "altbsdp", { NULL }, 7799, "tcp" },
- { "altbsdp", { NULL }, 7799, "udp" },
- { "asr", { NULL }, 7800, "tcp" },
- { "asr", { NULL }, 7800, "udp" },
- { "ssp-client", { NULL }, 7801, "tcp" },
- { "ssp-client", { NULL }, 7801, "udp" },
- { "rbt-wanopt", { NULL }, 7810, "tcp" },
- { "rbt-wanopt", { NULL }, 7810, "udp" },
- { "apc-7845", { NULL }, 7845, "tcp" },
- { "apc-7845", { NULL }, 7845, "udp" },
- { "apc-7846", { NULL }, 7846, "tcp" },
- { "apc-7846", { NULL }, 7846, "udp" },
- { "mobileanalyzer", { NULL }, 7869, "tcp" },
- { "rbt-smc", { NULL }, 7870, "tcp" },
- { "pss", { NULL }, 7880, "tcp" },
- { "pss", { NULL }, 7880, "udp" },
- { "ubroker", { NULL }, 7887, "tcp" },
- { "ubroker", { NULL }, 7887, "udp" },
- { "mevent", { NULL }, 7900, "tcp" },
- { "mevent", { NULL }, 7900, "udp" },
- { "tnos-sp", { NULL }, 7901, "tcp" },
- { "tnos-sp", { NULL }, 7901, "udp" },
- { "tnos-dp", { NULL }, 7902, "tcp" },
- { "tnos-dp", { NULL }, 7902, "udp" },
- { "tnos-dps", { NULL }, 7903, "tcp" },
- { "tnos-dps", { NULL }, 7903, "udp" },
- { "qo-secure", { NULL }, 7913, "tcp" },
- { "qo-secure", { NULL }, 7913, "udp" },
- { "t2-drm", { NULL }, 7932, "tcp" },
- { "t2-drm", { NULL }, 7932, "udp" },
- { "t2-brm", { NULL }, 7933, "tcp" },
- { "t2-brm", { NULL }, 7933, "udp" },
- { "supercell", { NULL }, 7967, "tcp" },
- { "supercell", { NULL }, 7967, "udp" },
- { "micromuse-ncps", { NULL }, 7979, "tcp" },
- { "micromuse-ncps", { NULL }, 7979, "udp" },
- { "quest-vista", { NULL }, 7980, "tcp" },
- { "quest-vista", { NULL }, 7980, "udp" },
- { "sossd-collect", { NULL }, 7981, "tcp" },
- { "sossd-agent", { NULL }, 7982, "tcp" },
- { "sossd-disc", { NULL }, 7982, "udp" },
- { "pushns", { NULL }, 7997, "tcp" },
- { "usicontentpush", { NULL }, 7998, "udp" },
- { "irdmi2", { NULL }, 7999, "tcp" },
- { "irdmi2", { NULL }, 7999, "udp" },
- { "irdmi", { NULL }, 8000, "tcp" },
- { "irdmi", { NULL }, 8000, "udp" },
- { "vcom-tunnel", { NULL }, 8001, "tcp" },
- { "vcom-tunnel", { NULL }, 8001, "udp" },
- { "teradataordbms", { NULL }, 8002, "tcp" },
- { "teradataordbms", { NULL }, 8002, "udp" },
- { "mcreport", { NULL }, 8003, "tcp" },
- { "mcreport", { NULL }, 8003, "udp" },
- { "mxi", { NULL }, 8005, "tcp" },
- { "mxi", { NULL }, 8005, "udp" },
- { "http-alt", { NULL }, 8008, "tcp" },
- { "http-alt", { NULL }, 8008, "udp" },
- { "qbdb", { NULL }, 8019, "tcp" },
- { "qbdb", { NULL }, 8019, "udp" },
- { "intu-ec-svcdisc", { NULL }, 8020, "tcp" },
- { "intu-ec-svcdisc", { NULL }, 8020, "udp" },
- { "intu-ec-client", { NULL }, 8021, "tcp" },
- { "intu-ec-client", { NULL }, 8021, "udp" },
- { "oa-system", { NULL }, 8022, "tcp" },
- { "oa-system", { NULL }, 8022, "udp" },
- { "ca-audit-da", { NULL }, 8025, "tcp" },
- { "ca-audit-da", { NULL }, 8025, "udp" },
- { "ca-audit-ds", { NULL }, 8026, "tcp" },
- { "ca-audit-ds", { NULL }, 8026, "udp" },
- { "pro-ed", { NULL }, 8032, "tcp" },
- { "pro-ed", { NULL }, 8032, "udp" },
- { "mindprint", { NULL }, 8033, "tcp" },
- { "mindprint", { NULL }, 8033, "udp" },
- { "vantronix-mgmt", { NULL }, 8034, "tcp" },
- { "vantronix-mgmt", { NULL }, 8034, "udp" },
- { "ampify", { NULL }, 8040, "tcp" },
- { "ampify", { NULL }, 8040, "udp" },
- { "fs-agent", { NULL }, 8042, "tcp" },
- { "fs-server", { NULL }, 8043, "tcp" },
- { "fs-mgmt", { NULL }, 8044, "tcp" },
- { "senomix01", { NULL }, 8052, "tcp" },
- { "senomix01", { NULL }, 8052, "udp" },
- { "senomix02", { NULL }, 8053, "tcp" },
- { "senomix02", { NULL }, 8053, "udp" },
- { "senomix03", { NULL }, 8054, "tcp" },
- { "senomix03", { NULL }, 8054, "udp" },
- { "senomix04", { NULL }, 8055, "tcp" },
- { "senomix04", { NULL }, 8055, "udp" },
- { "senomix05", { NULL }, 8056, "tcp" },
- { "senomix05", { NULL }, 8056, "udp" },
- { "senomix06", { NULL }, 8057, "tcp" },
- { "senomix06", { NULL }, 8057, "udp" },
- { "senomix07", { NULL }, 8058, "tcp" },
- { "senomix07", { NULL }, 8058, "udp" },
- { "senomix08", { NULL }, 8059, "tcp" },
- { "senomix08", { NULL }, 8059, "udp" },
- { "gadugadu", { NULL }, 8074, "tcp" },
- { "gadugadu", { NULL }, 8074, "udp" },
- { "http-alt", { NULL }, 8080, "tcp" },
- { "http-alt", { NULL }, 8080, "udp" },
- { "sunproxyadmin", { NULL }, 8081, "tcp" },
- { "sunproxyadmin", { NULL }, 8081, "udp" },
- { "us-cli", { NULL }, 8082, "tcp" },
- { "us-cli", { NULL }, 8082, "udp" },
- { "us-srv", { NULL }, 8083, "tcp" },
- { "us-srv", { NULL }, 8083, "udp" },
- { "d-s-n", { NULL }, 8086, "tcp" },
- { "d-s-n", { NULL }, 8086, "udp" },
- { "simplifymedia", { NULL }, 8087, "tcp" },
- { "simplifymedia", { NULL }, 8087, "udp" },
- { "radan-http", { NULL }, 8088, "tcp" },
- { "radan-http", { NULL }, 8088, "udp" },
- { "jamlink", { NULL }, 8091, "tcp" },
- { "sac", { NULL }, 8097, "tcp" },
- { "sac", { NULL }, 8097, "udp" },
- { "xprint-server", { NULL }, 8100, "tcp" },
- { "xprint-server", { NULL }, 8100, "udp" },
- { "ldoms-migr", { NULL }, 8101, "tcp" },
- { "mtl8000-matrix", { NULL }, 8115, "tcp" },
- { "mtl8000-matrix", { NULL }, 8115, "udp" },
- { "cp-cluster", { NULL }, 8116, "tcp" },
- { "cp-cluster", { NULL }, 8116, "udp" },
- { "privoxy", { NULL }, 8118, "tcp" },
- { "privoxy", { NULL }, 8118, "udp" },
- { "apollo-data", { NULL }, 8121, "tcp" },
- { "apollo-data", { NULL }, 8121, "udp" },
- { "apollo-admin", { NULL }, 8122, "tcp" },
- { "apollo-admin", { NULL }, 8122, "udp" },
- { "paycash-online", { NULL }, 8128, "tcp" },
- { "paycash-online", { NULL }, 8128, "udp" },
- { "paycash-wbp", { NULL }, 8129, "tcp" },
- { "paycash-wbp", { NULL }, 8129, "udp" },
- { "indigo-vrmi", { NULL }, 8130, "tcp" },
- { "indigo-vrmi", { NULL }, 8130, "udp" },
- { "indigo-vbcp", { NULL }, 8131, "tcp" },
- { "indigo-vbcp", { NULL }, 8131, "udp" },
- { "dbabble", { NULL }, 8132, "tcp" },
- { "dbabble", { NULL }, 8132, "udp" },
- { "isdd", { NULL }, 8148, "tcp" },
- { "isdd", { NULL }, 8148, "udp" },
- { "patrol", { NULL }, 8160, "tcp" },
- { "patrol", { NULL }, 8160, "udp" },
- { "patrol-snmp", { NULL }, 8161, "tcp" },
- { "patrol-snmp", { NULL }, 8161, "udp" },
- { "vmware-fdm", { NULL }, 8182, "tcp" },
- { "vmware-fdm", { NULL }, 8182, "udp" },
- { "proremote", { NULL }, 8183, "tcp" },
- { "itach", { NULL }, 8184, "tcp" },
- { "itach", { NULL }, 8184, "udp" },
- { "spytechphone", { NULL }, 8192, "tcp" },
- { "spytechphone", { NULL }, 8192, "udp" },
- { "blp1", { NULL }, 8194, "tcp" },
- { "blp1", { NULL }, 8194, "udp" },
- { "blp2", { NULL }, 8195, "tcp" },
- { "blp2", { NULL }, 8195, "udp" },
- { "vvr-data", { NULL }, 8199, "tcp" },
- { "vvr-data", { NULL }, 8199, "udp" },
- { "trivnet1", { NULL }, 8200, "tcp" },
- { "trivnet1", { NULL }, 8200, "udp" },
- { "trivnet2", { NULL }, 8201, "tcp" },
- { "trivnet2", { NULL }, 8201, "udp" },
- { "lm-perfworks", { NULL }, 8204, "tcp" },
- { "lm-perfworks", { NULL }, 8204, "udp" },
- { "lm-instmgr", { NULL }, 8205, "tcp" },
- { "lm-instmgr", { NULL }, 8205, "udp" },
- { "lm-dta", { NULL }, 8206, "tcp" },
- { "lm-dta", { NULL }, 8206, "udp" },
- { "lm-sserver", { NULL }, 8207, "tcp" },
- { "lm-sserver", { NULL }, 8207, "udp" },
- { "lm-webwatcher", { NULL }, 8208, "tcp" },
- { "lm-webwatcher", { NULL }, 8208, "udp" },
- { "rexecj", { NULL }, 8230, "tcp" },
- { "rexecj", { NULL }, 8230, "udp" },
- { "synapse-nhttps", { NULL }, 8243, "tcp" },
- { "synapse-nhttps", { NULL }, 8243, "udp" },
- { "pando-sec", { NULL }, 8276, "tcp" },
- { "pando-sec", { NULL }, 8276, "udp" },
- { "synapse-nhttp", { NULL }, 8280, "tcp" },
- { "synapse-nhttp", { NULL }, 8280, "udp" },
- { "blp3", { NULL }, 8292, "tcp" },
- { "blp3", { NULL }, 8292, "udp" },
- { "hiperscan-id", { NULL }, 8293, "tcp" },
- { "blp4", { NULL }, 8294, "tcp" },
- { "blp4", { NULL }, 8294, "udp" },
- { "tmi", { NULL }, 8300, "tcp" },
- { "tmi", { NULL }, 8300, "udp" },
- { "amberon", { NULL }, 8301, "tcp" },
- { "amberon", { NULL }, 8301, "udp" },
- { "tnp-discover", { NULL }, 8320, "tcp" },
- { "tnp-discover", { NULL }, 8320, "udp" },
- { "tnp", { NULL }, 8321, "tcp" },
- { "tnp", { NULL }, 8321, "udp" },
- { "server-find", { NULL }, 8351, "tcp" },
- { "server-find", { NULL }, 8351, "udp" },
- { "cruise-enum", { NULL }, 8376, "tcp" },
- { "cruise-enum", { NULL }, 8376, "udp" },
- { "cruise-swroute", { NULL }, 8377, "tcp" },
- { "cruise-swroute", { NULL }, 8377, "udp" },
- { "cruise-config", { NULL }, 8378, "tcp" },
- { "cruise-config", { NULL }, 8378, "udp" },
- { "cruise-diags", { NULL }, 8379, "tcp" },
- { "cruise-diags", { NULL }, 8379, "udp" },
- { "cruise-update", { NULL }, 8380, "tcp" },
- { "cruise-update", { NULL }, 8380, "udp" },
- { "m2mservices", { NULL }, 8383, "tcp" },
- { "m2mservices", { NULL }, 8383, "udp" },
- { "cvd", { NULL }, 8400, "tcp" },
- { "cvd", { NULL }, 8400, "udp" },
- { "sabarsd", { NULL }, 8401, "tcp" },
- { "sabarsd", { NULL }, 8401, "udp" },
- { "abarsd", { NULL }, 8402, "tcp" },
- { "abarsd", { NULL }, 8402, "udp" },
- { "admind", { NULL }, 8403, "tcp" },
- { "admind", { NULL }, 8403, "udp" },
- { "svcloud", { NULL }, 8404, "tcp" },
- { "svbackup", { NULL }, 8405, "tcp" },
- { "espeech", { NULL }, 8416, "tcp" },
- { "espeech", { NULL }, 8416, "udp" },
- { "espeech-rtp", { NULL }, 8417, "tcp" },
- { "espeech-rtp", { NULL }, 8417, "udp" },
- { "cybro-a-bus", { NULL }, 8442, "tcp" },
- { "cybro-a-bus", { NULL }, 8442, "udp" },
- { "pcsync-https", { NULL }, 8443, "tcp" },
- { "pcsync-https", { NULL }, 8443, "udp" },
- { "pcsync-http", { NULL }, 8444, "tcp" },
- { "pcsync-http", { NULL }, 8444, "udp" },
- { "npmp", { NULL }, 8450, "tcp" },
- { "npmp", { NULL }, 8450, "udp" },
- { "cisco-avp", { NULL }, 8470, "tcp" },
- { "pim-port", { NULL }, 8471, "tcp" },
- { "pim-port", { NULL }, 8471, "sctp" },
- { "otv", { NULL }, 8472, "tcp" },
- { "otv", { NULL }, 8472, "udp" },
- { "vp2p", { NULL }, 8473, "tcp" },
- { "vp2p", { NULL }, 8473, "udp" },
- { "noteshare", { NULL }, 8474, "tcp" },
- { "noteshare", { NULL }, 8474, "udp" },
- { "fmtp", { NULL }, 8500, "tcp" },
- { "fmtp", { NULL }, 8500, "udp" },
- { "rtsp-alt", { NULL }, 8554, "tcp" },
- { "rtsp-alt", { NULL }, 8554, "udp" },
- { "d-fence", { NULL }, 8555, "tcp" },
- { "d-fence", { NULL }, 8555, "udp" },
- { "oap-admin", { NULL }, 8567, "tcp" },
- { "oap-admin", { NULL }, 8567, "udp" },
- { "asterix", { NULL }, 8600, "tcp" },
- { "asterix", { NULL }, 8600, "udp" },
- { "canon-mfnp", { NULL }, 8610, "tcp" },
- { "canon-mfnp", { NULL }, 8610, "udp" },
- { "canon-bjnp1", { NULL }, 8611, "tcp" },
- { "canon-bjnp1", { NULL }, 8611, "udp" },
- { "canon-bjnp2", { NULL }, 8612, "tcp" },
- { "canon-bjnp2", { NULL }, 8612, "udp" },
- { "canon-bjnp3", { NULL }, 8613, "tcp" },
- { "canon-bjnp3", { NULL }, 8613, "udp" },
- { "canon-bjnp4", { NULL }, 8614, "tcp" },
- { "canon-bjnp4", { NULL }, 8614, "udp" },
- { "sun-as-jmxrmi", { NULL }, 8686, "tcp" },
- { "sun-as-jmxrmi", { NULL }, 8686, "udp" },
- { "vnyx", { NULL }, 8699, "tcp" },
- { "vnyx", { NULL }, 8699, "udp" },
- { "dtp-net", { NULL }, 8732, "udp" },
- { "ibus", { NULL }, 8733, "tcp" },
- { "ibus", { NULL }, 8733, "udp" },
- { "mc-appserver", { NULL }, 8763, "tcp" },
- { "mc-appserver", { NULL }, 8763, "udp" },
- { "openqueue", { NULL }, 8764, "tcp" },
- { "openqueue", { NULL }, 8764, "udp" },
- { "ultraseek-http", { NULL }, 8765, "tcp" },
- { "ultraseek-http", { NULL }, 8765, "udp" },
- { "dpap", { NULL }, 8770, "tcp" },
- { "dpap", { NULL }, 8770, "udp" },
- { "msgclnt", { NULL }, 8786, "tcp" },
- { "msgclnt", { NULL }, 8786, "udp" },
- { "msgsrvr", { NULL }, 8787, "tcp" },
- { "msgsrvr", { NULL }, 8787, "udp" },
- { "sunwebadmin", { NULL }, 8800, "tcp" },
- { "sunwebadmin", { NULL }, 8800, "udp" },
- { "truecm", { NULL }, 8804, "tcp" },
- { "truecm", { NULL }, 8804, "udp" },
- { "dxspider", { NULL }, 8873, "tcp" },
- { "dxspider", { NULL }, 8873, "udp" },
- { "cddbp-alt", { NULL }, 8880, "tcp" },
- { "cddbp-alt", { NULL }, 8880, "udp" },
- { "secure-mqtt", { NULL }, 8883, "tcp" },
- { "secure-mqtt", { NULL }, 8883, "udp" },
- { "ddi-tcp-1", { NULL }, 8888, "tcp" },
- { "ddi-udp-1", { NULL }, 8888, "udp" },
- { "ddi-tcp-2", { NULL }, 8889, "tcp" },
- { "ddi-udp-2", { NULL }, 8889, "udp" },
- { "ddi-tcp-3", { NULL }, 8890, "tcp" },
- { "ddi-udp-3", { NULL }, 8890, "udp" },
- { "ddi-tcp-4", { NULL }, 8891, "tcp" },
- { "ddi-udp-4", { NULL }, 8891, "udp" },
- { "ddi-tcp-5", { NULL }, 8892, "tcp" },
- { "ddi-udp-5", { NULL }, 8892, "udp" },
- { "ddi-tcp-6", { NULL }, 8893, "tcp" },
- { "ddi-udp-6", { NULL }, 8893, "udp" },
- { "ddi-tcp-7", { NULL }, 8894, "tcp" },
- { "ddi-udp-7", { NULL }, 8894, "udp" },
- { "ospf-lite", { NULL }, 8899, "tcp" },
- { "ospf-lite", { NULL }, 8899, "udp" },
- { "jmb-cds1", { NULL }, 8900, "tcp" },
- { "jmb-cds1", { NULL }, 8900, "udp" },
- { "jmb-cds2", { NULL }, 8901, "tcp" },
- { "jmb-cds2", { NULL }, 8901, "udp" },
- { "manyone-http", { NULL }, 8910, "tcp" },
- { "manyone-http", { NULL }, 8910, "udp" },
- { "manyone-xml", { NULL }, 8911, "tcp" },
- { "manyone-xml", { NULL }, 8911, "udp" },
- { "wcbackup", { NULL }, 8912, "tcp" },
- { "wcbackup", { NULL }, 8912, "udp" },
- { "dragonfly", { NULL }, 8913, "tcp" },
- { "dragonfly", { NULL }, 8913, "udp" },
- { "twds", { NULL }, 8937, "tcp" },
- { "cumulus-admin", { NULL }, 8954, "tcp" },
- { "cumulus-admin", { NULL }, 8954, "udp" },
- { "sunwebadmins", { NULL }, 8989, "tcp" },
- { "sunwebadmins", { NULL }, 8989, "udp" },
- { "http-wmap", { NULL }, 8990, "tcp" },
- { "http-wmap", { NULL }, 8990, "udp" },
- { "https-wmap", { NULL }, 8991, "tcp" },
- { "https-wmap", { NULL }, 8991, "udp" },
- { "bctp", { NULL }, 8999, "tcp" },
- { "bctp", { NULL }, 8999, "udp" },
- { "cslistener", { NULL }, 9000, "tcp" },
- { "cslistener", { NULL }, 9000, "udp" },
- { "etlservicemgr", { NULL }, 9001, "tcp" },
- { "etlservicemgr", { NULL }, 9001, "udp" },
- { "dynamid", { NULL }, 9002, "tcp" },
- { "dynamid", { NULL }, 9002, "udp" },
- { "ogs-client", { NULL }, 9007, "udp" },
- { "ogs-server", { NULL }, 9008, "tcp" },
- { "pichat", { NULL }, 9009, "tcp" },
- { "pichat", { NULL }, 9009, "udp" },
- { "sdr", { NULL }, 9010, "tcp" },
- { "tambora", { NULL }, 9020, "tcp" },
- { "tambora", { NULL }, 9020, "udp" },
- { "panagolin-ident", { NULL }, 9021, "tcp" },
- { "panagolin-ident", { NULL }, 9021, "udp" },
- { "paragent", { NULL }, 9022, "tcp" },
- { "paragent", { NULL }, 9022, "udp" },
- { "swa-1", { NULL }, 9023, "tcp" },
- { "swa-1", { NULL }, 9023, "udp" },
- { "swa-2", { NULL }, 9024, "tcp" },
- { "swa-2", { NULL }, 9024, "udp" },
- { "swa-3", { NULL }, 9025, "tcp" },
- { "swa-3", { NULL }, 9025, "udp" },
- { "swa-4", { NULL }, 9026, "tcp" },
- { "swa-4", { NULL }, 9026, "udp" },
- { "versiera", { NULL }, 9050, "tcp" },
- { "fio-cmgmt", { NULL }, 9051, "tcp" },
- { "glrpc", { NULL }, 9080, "tcp" },
- { "glrpc", { NULL }, 9080, "udp" },
- { "lcs-ap", { NULL }, 9082, "sctp" },
- { "emc-pp-mgmtsvc", { NULL }, 9083, "tcp" },
- { "aurora", { NULL }, 9084, "tcp" },
- { "aurora", { NULL }, 9084, "udp" },
- { "aurora", { NULL }, 9084, "sctp" },
- { "ibm-rsyscon", { NULL }, 9085, "tcp" },
- { "ibm-rsyscon", { NULL }, 9085, "udp" },
- { "net2display", { NULL }, 9086, "tcp" },
- { "net2display", { NULL }, 9086, "udp" },
- { "classic", { NULL }, 9087, "tcp" },
- { "classic", { NULL }, 9087, "udp" },
- { "sqlexec", { NULL }, 9088, "tcp" },
- { "sqlexec", { NULL }, 9088, "udp" },
- { "sqlexec-ssl", { NULL }, 9089, "tcp" },
- { "sqlexec-ssl", { NULL }, 9089, "udp" },
- { "websm", { NULL }, 9090, "tcp" },
- { "websm", { NULL }, 9090, "udp" },
- { "xmltec-xmlmail", { NULL }, 9091, "tcp" },
- { "xmltec-xmlmail", { NULL }, 9091, "udp" },
- { "XmlIpcRegSvc", { NULL }, 9092, "tcp" },
- { "XmlIpcRegSvc", { NULL }, 9092, "udp" },
- { "hp-pdl-datastr", { NULL }, 9100, "tcp" },
- { "hp-pdl-datastr", { NULL }, 9100, "udp" },
- { "pdl-datastream", { NULL }, 9100, "tcp" },
- { "pdl-datastream", { NULL }, 9100, "udp" },
- { "bacula-dir", { NULL }, 9101, "tcp" },
- { "bacula-dir", { NULL }, 9101, "udp" },
- { "bacula-fd", { NULL }, 9102, "tcp" },
- { "bacula-fd", { NULL }, 9102, "udp" },
- { "bacula-sd", { NULL }, 9103, "tcp" },
- { "bacula-sd", { NULL }, 9103, "udp" },
- { "peerwire", { NULL }, 9104, "tcp" },
- { "peerwire", { NULL }, 9104, "udp" },
- { "xadmin", { NULL }, 9105, "tcp" },
- { "xadmin", { NULL }, 9105, "udp" },
- { "astergate", { NULL }, 9106, "tcp" },
- { "astergate-disc", { NULL }, 9106, "udp" },
- { "astergatefax", { NULL }, 9107, "tcp" },
- { "mxit", { NULL }, 9119, "tcp" },
- { "mxit", { NULL }, 9119, "udp" },
- { "dddp", { NULL }, 9131, "tcp" },
- { "dddp", { NULL }, 9131, "udp" },
- { "apani1", { NULL }, 9160, "tcp" },
- { "apani1", { NULL }, 9160, "udp" },
- { "apani2", { NULL }, 9161, "tcp" },
- { "apani2", { NULL }, 9161, "udp" },
- { "apani3", { NULL }, 9162, "tcp" },
- { "apani3", { NULL }, 9162, "udp" },
- { "apani4", { NULL }, 9163, "tcp" },
- { "apani4", { NULL }, 9163, "udp" },
- { "apani5", { NULL }, 9164, "tcp" },
- { "apani5", { NULL }, 9164, "udp" },
- { "sun-as-jpda", { NULL }, 9191, "tcp" },
- { "sun-as-jpda", { NULL }, 9191, "udp" },
- { "wap-wsp", { NULL }, 9200, "tcp" },
- { "wap-wsp", { NULL }, 9200, "udp" },
- { "wap-wsp-wtp", { NULL }, 9201, "tcp" },
- { "wap-wsp-wtp", { NULL }, 9201, "udp" },
- { "wap-wsp-s", { NULL }, 9202, "tcp" },
- { "wap-wsp-s", { NULL }, 9202, "udp" },
- { "wap-wsp-wtp-s", { NULL }, 9203, "tcp" },
- { "wap-wsp-wtp-s", { NULL }, 9203, "udp" },
- { "wap-vcard", { NULL }, 9204, "tcp" },
- { "wap-vcard", { NULL }, 9204, "udp" },
- { "wap-vcal", { NULL }, 9205, "tcp" },
- { "wap-vcal", { NULL }, 9205, "udp" },
- { "wap-vcard-s", { NULL }, 9206, "tcp" },
- { "wap-vcard-s", { NULL }, 9206, "udp" },
- { "wap-vcal-s", { NULL }, 9207, "tcp" },
- { "wap-vcal-s", { NULL }, 9207, "udp" },
- { "rjcdb-vcards", { NULL }, 9208, "tcp" },
- { "rjcdb-vcards", { NULL }, 9208, "udp" },
- { "almobile-system", { NULL }, 9209, "tcp" },
- { "almobile-system", { NULL }, 9209, "udp" },
- { "oma-mlp", { NULL }, 9210, "tcp" },
- { "oma-mlp", { NULL }, 9210, "udp" },
- { "oma-mlp-s", { NULL }, 9211, "tcp" },
- { "oma-mlp-s", { NULL }, 9211, "udp" },
- { "serverviewdbms", { NULL }, 9212, "tcp" },
- { "serverviewdbms", { NULL }, 9212, "udp" },
- { "serverstart", { NULL }, 9213, "tcp" },
- { "serverstart", { NULL }, 9213, "udp" },
- { "ipdcesgbs", { NULL }, 9214, "tcp" },
- { "ipdcesgbs", { NULL }, 9214, "udp" },
- { "insis", { NULL }, 9215, "tcp" },
- { "insis", { NULL }, 9215, "udp" },
- { "acme", { NULL }, 9216, "tcp" },
- { "acme", { NULL }, 9216, "udp" },
- { "fsc-port", { NULL }, 9217, "tcp" },
- { "fsc-port", { NULL }, 9217, "udp" },
- { "teamcoherence", { NULL }, 9222, "tcp" },
- { "teamcoherence", { NULL }, 9222, "udp" },
- { "mon", { NULL }, 9255, "tcp" },
- { "mon", { NULL }, 9255, "udp" },
- { "pegasus", { NULL }, 9278, "tcp" },
- { "pegasus", { NULL }, 9278, "udp" },
- { "pegasus-ctl", { NULL }, 9279, "tcp" },
- { "pegasus-ctl", { NULL }, 9279, "udp" },
- { "pgps", { NULL }, 9280, "tcp" },
- { "pgps", { NULL }, 9280, "udp" },
- { "swtp-port1", { NULL }, 9281, "tcp" },
- { "swtp-port1", { NULL }, 9281, "udp" },
- { "swtp-port2", { NULL }, 9282, "tcp" },
- { "swtp-port2", { NULL }, 9282, "udp" },
- { "callwaveiam", { NULL }, 9283, "tcp" },
- { "callwaveiam", { NULL }, 9283, "udp" },
- { "visd", { NULL }, 9284, "tcp" },
- { "visd", { NULL }, 9284, "udp" },
- { "n2h2server", { NULL }, 9285, "tcp" },
- { "n2h2server", { NULL }, 9285, "udp" },
- { "n2receive", { NULL }, 9286, "udp" },
- { "cumulus", { NULL }, 9287, "tcp" },
- { "cumulus", { NULL }, 9287, "udp" },
- { "armtechdaemon", { NULL }, 9292, "tcp" },
- { "armtechdaemon", { NULL }, 9292, "udp" },
- { "storview", { NULL }, 9293, "tcp" },
- { "storview", { NULL }, 9293, "udp" },
- { "armcenterhttp", { NULL }, 9294, "tcp" },
- { "armcenterhttp", { NULL }, 9294, "udp" },
- { "armcenterhttps", { NULL }, 9295, "tcp" },
- { "armcenterhttps", { NULL }, 9295, "udp" },
- { "vrace", { NULL }, 9300, "tcp" },
- { "vrace", { NULL }, 9300, "udp" },
- { "sphinxql", { NULL }, 9306, "tcp" },
- { "sphinxapi", { NULL }, 9312, "tcp" },
- { "secure-ts", { NULL }, 9318, "tcp" },
- { "secure-ts", { NULL }, 9318, "udp" },
- { "guibase", { NULL }, 9321, "tcp" },
- { "guibase", { NULL }, 9321, "udp" },
- { "mpidcmgr", { NULL }, 9343, "tcp" },
- { "mpidcmgr", { NULL }, 9343, "udp" },
- { "mphlpdmc", { NULL }, 9344, "tcp" },
- { "mphlpdmc", { NULL }, 9344, "udp" },
- { "ctechlicensing", { NULL }, 9346, "tcp" },
- { "ctechlicensing", { NULL }, 9346, "udp" },
- { "fjdmimgr", { NULL }, 9374, "tcp" },
- { "fjdmimgr", { NULL }, 9374, "udp" },
- { "boxp", { NULL }, 9380, "tcp" },
- { "boxp", { NULL }, 9380, "udp" },
- { "d2dconfig", { NULL }, 9387, "tcp" },
- { "d2ddatatrans", { NULL }, 9388, "tcp" },
- { "adws", { NULL }, 9389, "tcp" },
- { "otp", { NULL }, 9390, "tcp" },
- { "fjinvmgr", { NULL }, 9396, "tcp" },
- { "fjinvmgr", { NULL }, 9396, "udp" },
- { "mpidcagt", { NULL }, 9397, "tcp" },
- { "mpidcagt", { NULL }, 9397, "udp" },
- { "sec-t4net-srv", { NULL }, 9400, "tcp" },
- { "sec-t4net-srv", { NULL }, 9400, "udp" },
- { "sec-t4net-clt", { NULL }, 9401, "tcp" },
- { "sec-t4net-clt", { NULL }, 9401, "udp" },
- { "sec-pc2fax-srv", { NULL }, 9402, "tcp" },
- { "sec-pc2fax-srv", { NULL }, 9402, "udp" },
- { "git", { NULL }, 9418, "tcp" },
- { "git", { NULL }, 9418, "udp" },
- { "tungsten-https", { NULL }, 9443, "tcp" },
- { "tungsten-https", { NULL }, 9443, "udp" },
- { "wso2esb-console", { NULL }, 9444, "tcp" },
- { "wso2esb-console", { NULL }, 9444, "udp" },
- { "sntlkeyssrvr", { NULL }, 9450, "tcp" },
- { "sntlkeyssrvr", { NULL }, 9450, "udp" },
- { "ismserver", { NULL }, 9500, "tcp" },
- { "ismserver", { NULL }, 9500, "udp" },
- { "sma-spw", { NULL }, 9522, "udp" },
- { "mngsuite", { NULL }, 9535, "tcp" },
- { "mngsuite", { NULL }, 9535, "udp" },
- { "laes-bf", { NULL }, 9536, "tcp" },
- { "laes-bf", { NULL }, 9536, "udp" },
- { "trispen-sra", { NULL }, 9555, "tcp" },
- { "trispen-sra", { NULL }, 9555, "udp" },
- { "ldgateway", { NULL }, 9592, "tcp" },
- { "ldgateway", { NULL }, 9592, "udp" },
- { "cba8", { NULL }, 9593, "tcp" },
- { "cba8", { NULL }, 9593, "udp" },
- { "msgsys", { NULL }, 9594, "tcp" },
- { "msgsys", { NULL }, 9594, "udp" },
- { "pds", { NULL }, 9595, "tcp" },
- { "pds", { NULL }, 9595, "udp" },
- { "mercury-disc", { NULL }, 9596, "tcp" },
- { "mercury-disc", { NULL }, 9596, "udp" },
- { "pd-admin", { NULL }, 9597, "tcp" },
- { "pd-admin", { NULL }, 9597, "udp" },
- { "vscp", { NULL }, 9598, "tcp" },
- { "vscp", { NULL }, 9598, "udp" },
- { "robix", { NULL }, 9599, "tcp" },
- { "robix", { NULL }, 9599, "udp" },
- { "micromuse-ncpw", { NULL }, 9600, "tcp" },
- { "micromuse-ncpw", { NULL }, 9600, "udp" },
- { "streamcomm-ds", { NULL }, 9612, "tcp" },
- { "streamcomm-ds", { NULL }, 9612, "udp" },
- { "iadt-tls", { NULL }, 9614, "tcp" },
- { "erunbook_agent", { NULL }, 9616, "tcp" },
- { "erunbook_server", { NULL }, 9617, "tcp" },
- { "condor", { NULL }, 9618, "tcp" },
- { "condor", { NULL }, 9618, "udp" },
- { "odbcpathway", { NULL }, 9628, "tcp" },
- { "odbcpathway", { NULL }, 9628, "udp" },
- { "uniport", { NULL }, 9629, "tcp" },
- { "uniport", { NULL }, 9629, "udp" },
- { "peoctlr", { NULL }, 9630, "tcp" },
- { "peocoll", { NULL }, 9631, "tcp" },
- { "mc-comm", { NULL }, 9632, "udp" },
- { "pqsflows", { NULL }, 9640, "tcp" },
- { "xmms2", { NULL }, 9667, "tcp" },
- { "xmms2", { NULL }, 9667, "udp" },
- { "tec5-sdctp", { NULL }, 9668, "tcp" },
- { "tec5-sdctp", { NULL }, 9668, "udp" },
- { "client-wakeup", { NULL }, 9694, "tcp" },
- { "client-wakeup", { NULL }, 9694, "udp" },
- { "ccnx", { NULL }, 9695, "tcp" },
- { "ccnx", { NULL }, 9695, "udp" },
- { "board-roar", { NULL }, 9700, "tcp" },
- { "board-roar", { NULL }, 9700, "udp" },
- { "l5nas-parchan", { NULL }, 9747, "tcp" },
- { "l5nas-parchan", { NULL }, 9747, "udp" },
- { "board-voip", { NULL }, 9750, "tcp" },
- { "board-voip", { NULL }, 9750, "udp" },
- { "rasadv", { NULL }, 9753, "tcp" },
- { "rasadv", { NULL }, 9753, "udp" },
- { "tungsten-http", { NULL }, 9762, "tcp" },
- { "tungsten-http", { NULL }, 9762, "udp" },
- { "davsrc", { NULL }, 9800, "tcp" },
- { "davsrc", { NULL }, 9800, "udp" },
- { "sstp-2", { NULL }, 9801, "tcp" },
- { "sstp-2", { NULL }, 9801, "udp" },
- { "davsrcs", { NULL }, 9802, "tcp" },
- { "davsrcs", { NULL }, 9802, "udp" },
- { "sapv1", { NULL }, 9875, "tcp" },
- { "sapv1", { NULL }, 9875, "udp" },
- { "sd", { NULL }, 9876, "tcp" },
- { "sd", { NULL }, 9876, "udp" },
- { "cyborg-systems", { NULL }, 9888, "tcp" },
- { "cyborg-systems", { NULL }, 9888, "udp" },
- { "gt-proxy", { NULL }, 9889, "tcp" },
- { "gt-proxy", { NULL }, 9889, "udp" },
- { "monkeycom", { NULL }, 9898, "tcp" },
- { "monkeycom", { NULL }, 9898, "udp" },
- { "sctp-tunneling", { NULL }, 9899, "tcp" },
- { "sctp-tunneling", { NULL }, 9899, "udp" },
- { "iua", { NULL }, 9900, "tcp" },
- { "iua", { NULL }, 9900, "udp" },
- { "iua", { NULL }, 9900, "sctp" },
- { "enrp", { NULL }, 9901, "udp" },
- { "enrp-sctp", { NULL }, 9901, "sctp" },
- { "enrp-sctp-tls", { NULL }, 9902, "sctp" },
- { "domaintime", { NULL }, 9909, "tcp" },
- { "domaintime", { NULL }, 9909, "udp" },
- { "sype-transport", { NULL }, 9911, "tcp" },
- { "sype-transport", { NULL }, 9911, "udp" },
- { "apc-9950", { NULL }, 9950, "tcp" },
- { "apc-9950", { NULL }, 9950, "udp" },
- { "apc-9951", { NULL }, 9951, "tcp" },
- { "apc-9951", { NULL }, 9951, "udp" },
- { "apc-9952", { NULL }, 9952, "tcp" },
- { "apc-9952", { NULL }, 9952, "udp" },
- { "acis", { NULL }, 9953, "tcp" },
- { "acis", { NULL }, 9953, "udp" },
- { "odnsp", { NULL }, 9966, "tcp" },
- { "odnsp", { NULL }, 9966, "udp" },
- { "dsm-scm-target", { NULL }, 9987, "tcp" },
- { "dsm-scm-target", { NULL }, 9987, "udp" },
- { "nsesrvr", { NULL }, 9988, "tcp" },
- { "osm-appsrvr", { NULL }, 9990, "tcp" },
- { "osm-appsrvr", { NULL }, 9990, "udp" },
- { "osm-oev", { NULL }, 9991, "tcp" },
- { "osm-oev", { NULL }, 9991, "udp" },
- { "palace-1", { NULL }, 9992, "tcp" },
- { "palace-1", { NULL }, 9992, "udp" },
- { "palace-2", { NULL }, 9993, "tcp" },
- { "palace-2", { NULL }, 9993, "udp" },
- { "palace-3", { NULL }, 9994, "tcp" },
- { "palace-3", { NULL }, 9994, "udp" },
- { "palace-4", { NULL }, 9995, "tcp" },
- { "palace-4", { NULL }, 9995, "udp" },
- { "palace-5", { NULL }, 9996, "tcp" },
- { "palace-5", { NULL }, 9996, "udp" },
- { "palace-6", { NULL }, 9997, "tcp" },
- { "palace-6", { NULL }, 9997, "udp" },
- { "distinct32", { NULL }, 9998, "tcp" },
- { "distinct32", { NULL }, 9998, "udp" },
- { "distinct", { NULL }, 9999, "tcp" },
- { "distinct", { NULL }, 9999, "udp" },
- { "ndmp", { NULL }, 10000, "tcp" },
- { "ndmp", { NULL }, 10000, "udp" },
- { "scp-config", { NULL }, 10001, "tcp" },
- { "scp-config", { NULL }, 10001, "udp" },
- { "documentum", { NULL }, 10002, "tcp" },
- { "documentum", { NULL }, 10002, "udp" },
- { "documentum_s", { NULL }, 10003, "tcp" },
- { "documentum_s", { NULL }, 10003, "udp" },
- { "emcrmirccd", { NULL }, 10004, "tcp" },
- { "emcrmird", { NULL }, 10005, "tcp" },
- { "mvs-capacity", { NULL }, 10007, "tcp" },
- { "mvs-capacity", { NULL }, 10007, "udp" },
- { "octopus", { NULL }, 10008, "tcp" },
- { "octopus", { NULL }, 10008, "udp" },
- { "swdtp-sv", { NULL }, 10009, "tcp" },
- { "swdtp-sv", { NULL }, 10009, "udp" },
- { "rxapi", { NULL }, 10010, "tcp" },
- { "zabbix-agent", { NULL }, 10050, "tcp" },
- { "zabbix-agent", { NULL }, 10050, "udp" },
- { "zabbix-trapper", { NULL }, 10051, "tcp" },
- { "zabbix-trapper", { NULL }, 10051, "udp" },
- { "qptlmd", { NULL }, 10055, "tcp" },
- { "amanda", { NULL }, 10080, "tcp" },
- { "amanda", { NULL }, 10080, "udp" },
- { "famdc", { NULL }, 10081, "tcp" },
- { "famdc", { NULL }, 10081, "udp" },
- { "itap-ddtp", { NULL }, 10100, "tcp" },
- { "itap-ddtp", { NULL }, 10100, "udp" },
- { "ezmeeting-2", { NULL }, 10101, "tcp" },
- { "ezmeeting-2", { NULL }, 10101, "udp" },
- { "ezproxy-2", { NULL }, 10102, "tcp" },
- { "ezproxy-2", { NULL }, 10102, "udp" },
- { "ezrelay", { NULL }, 10103, "tcp" },
- { "ezrelay", { NULL }, 10103, "udp" },
- { "swdtp", { NULL }, 10104, "tcp" },
- { "swdtp", { NULL }, 10104, "udp" },
- { "bctp-server", { NULL }, 10107, "tcp" },
- { "bctp-server", { NULL }, 10107, "udp" },
- { "nmea-0183", { NULL }, 10110, "tcp" },
- { "nmea-0183", { NULL }, 10110, "udp" },
- { "netiq-endpoint", { NULL }, 10113, "tcp" },
- { "netiq-endpoint", { NULL }, 10113, "udp" },
- { "netiq-qcheck", { NULL }, 10114, "tcp" },
- { "netiq-qcheck", { NULL }, 10114, "udp" },
- { "netiq-endpt", { NULL }, 10115, "tcp" },
- { "netiq-endpt", { NULL }, 10115, "udp" },
- { "netiq-voipa", { NULL }, 10116, "tcp" },
- { "netiq-voipa", { NULL }, 10116, "udp" },
- { "iqrm", { NULL }, 10117, "tcp" },
- { "iqrm", { NULL }, 10117, "udp" },
- { "bmc-perf-sd", { NULL }, 10128, "tcp" },
- { "bmc-perf-sd", { NULL }, 10128, "udp" },
- { "bmc-gms", { NULL }, 10129, "tcp" },
- { "qb-db-server", { NULL }, 10160, "tcp" },
- { "qb-db-server", { NULL }, 10160, "udp" },
- { "snmptls", { NULL }, 10161, "tcp" },
- { "snmpdtls", { NULL }, 10161, "udp" },
- { "snmptls-trap", { NULL }, 10162, "tcp" },
- { "snmpdtls-trap", { NULL }, 10162, "udp" },
- { "trisoap", { NULL }, 10200, "tcp" },
- { "trisoap", { NULL }, 10200, "udp" },
- { "rsms", { NULL }, 10201, "tcp" },
- { "rscs", { NULL }, 10201, "udp" },
- { "apollo-relay", { NULL }, 10252, "tcp" },
- { "apollo-relay", { NULL }, 10252, "udp" },
- { "axis-wimp-port", { NULL }, 10260, "tcp" },
- { "axis-wimp-port", { NULL }, 10260, "udp" },
- { "blocks", { NULL }, 10288, "tcp" },
- { "blocks", { NULL }, 10288, "udp" },
- { "cosir", { NULL }, 10321, "tcp" },
- { "hip-nat-t", { NULL }, 10500, "udp" },
- { "MOS-lower", { NULL }, 10540, "tcp" },
- { "MOS-lower", { NULL }, 10540, "udp" },
- { "MOS-upper", { NULL }, 10541, "tcp" },
- { "MOS-upper", { NULL }, 10541, "udp" },
- { "MOS-aux", { NULL }, 10542, "tcp" },
- { "MOS-aux", { NULL }, 10542, "udp" },
- { "MOS-soap", { NULL }, 10543, "tcp" },
- { "MOS-soap", { NULL }, 10543, "udp" },
- { "MOS-soap-opt", { NULL }, 10544, "tcp" },
- { "MOS-soap-opt", { NULL }, 10544, "udp" },
- { "gap", { NULL }, 10800, "tcp" },
- { "gap", { NULL }, 10800, "udp" },
- { "lpdg", { NULL }, 10805, "tcp" },
- { "lpdg", { NULL }, 10805, "udp" },
- { "nbd", { NULL }, 10809, "tcp" },
- { "nmc-disc", { NULL }, 10810, "udp" },
- { "helix", { NULL }, 10860, "tcp" },
- { "helix", { NULL }, 10860, "udp" },
- { "rmiaux", { NULL }, 10990, "tcp" },
- { "rmiaux", { NULL }, 10990, "udp" },
- { "irisa", { NULL }, 11000, "tcp" },
- { "irisa", { NULL }, 11000, "udp" },
- { "metasys", { NULL }, 11001, "tcp" },
- { "metasys", { NULL }, 11001, "udp" },
- { "netapp-icmgmt", { NULL }, 11104, "tcp" },
- { "netapp-icdata", { NULL }, 11105, "tcp" },
- { "sgi-lk", { NULL }, 11106, "tcp" },
- { "sgi-lk", { NULL }, 11106, "udp" },
- { "vce", { NULL }, 11111, "tcp" },
- { "vce", { NULL }, 11111, "udp" },
- { "dicom", { NULL }, 11112, "tcp" },
- { "dicom", { NULL }, 11112, "udp" },
- { "suncacao-snmp", { NULL }, 11161, "tcp" },
- { "suncacao-snmp", { NULL }, 11161, "udp" },
- { "suncacao-jmxmp", { NULL }, 11162, "tcp" },
- { "suncacao-jmxmp", { NULL }, 11162, "udp" },
- { "suncacao-rmi", { NULL }, 11163, "tcp" },
- { "suncacao-rmi", { NULL }, 11163, "udp" },
- { "suncacao-csa", { NULL }, 11164, "tcp" },
- { "suncacao-csa", { NULL }, 11164, "udp" },
- { "suncacao-websvc", { NULL }, 11165, "tcp" },
- { "suncacao-websvc", { NULL }, 11165, "udp" },
- { "snss", { NULL }, 11171, "udp" },
- { "oemcacao-jmxmp", { NULL }, 11172, "tcp" },
- { "oemcacao-rmi", { NULL }, 11174, "tcp" },
- { "oemcacao-websvc", { NULL }, 11175, "tcp" },
- { "smsqp", { NULL }, 11201, "tcp" },
- { "smsqp", { NULL }, 11201, "udp" },
- { "wifree", { NULL }, 11208, "tcp" },
- { "wifree", { NULL }, 11208, "udp" },
- { "memcache", { NULL }, 11211, "tcp" },
- { "memcache", { NULL }, 11211, "udp" },
- { "imip", { NULL }, 11319, "tcp" },
- { "imip", { NULL }, 11319, "udp" },
- { "imip-channels", { NULL }, 11320, "tcp" },
- { "imip-channels", { NULL }, 11320, "udp" },
- { "arena-server", { NULL }, 11321, "tcp" },
- { "arena-server", { NULL }, 11321, "udp" },
- { "atm-uhas", { NULL }, 11367, "tcp" },
- { "atm-uhas", { NULL }, 11367, "udp" },
- { "hkp", { NULL }, 11371, "tcp" },
- { "hkp", { NULL }, 11371, "udp" },
- { "asgcypresstcps", { NULL }, 11489, "tcp" },
- { "tempest-port", { NULL }, 11600, "tcp" },
- { "tempest-port", { NULL }, 11600, "udp" },
- { "h323callsigalt", { NULL }, 11720, "tcp" },
- { "h323callsigalt", { NULL }, 11720, "udp" },
- { "intrepid-ssl", { NULL }, 11751, "tcp" },
- { "intrepid-ssl", { NULL }, 11751, "udp" },
- { "xoraya", { NULL }, 11876, "tcp" },
- { "xoraya", { NULL }, 11876, "udp" },
- { "x2e-disc", { NULL }, 11877, "udp" },
- { "sysinfo-sp", { NULL }, 11967, "tcp" },
- { "sysinfo-sp", { NULL }, 11967, "udp" },
- { "wmereceiving", { NULL }, 11997, "sctp" },
- { "wmedistribution", { NULL }, 11998, "sctp" },
- { "wmereporting", { NULL }, 11999, "sctp" },
- { "entextxid", { NULL }, 12000, "tcp" },
- { "entextxid", { NULL }, 12000, "udp" },
- { "entextnetwk", { NULL }, 12001, "tcp" },
- { "entextnetwk", { NULL }, 12001, "udp" },
- { "entexthigh", { NULL }, 12002, "tcp" },
- { "entexthigh", { NULL }, 12002, "udp" },
- { "entextmed", { NULL }, 12003, "tcp" },
- { "entextmed", { NULL }, 12003, "udp" },
- { "entextlow", { NULL }, 12004, "tcp" },
- { "entextlow", { NULL }, 12004, "udp" },
- { "dbisamserver1", { NULL }, 12005, "tcp" },
- { "dbisamserver1", { NULL }, 12005, "udp" },
- { "dbisamserver2", { NULL }, 12006, "tcp" },
- { "dbisamserver2", { NULL }, 12006, "udp" },
- { "accuracer", { NULL }, 12007, "tcp" },
- { "accuracer", { NULL }, 12007, "udp" },
- { "accuracer-dbms", { NULL }, 12008, "tcp" },
- { "accuracer-dbms", { NULL }, 12008, "udp" },
- { "edbsrvr", { NULL }, 12010, "tcp" },
- { "vipera", { NULL }, 12012, "tcp" },
- { "vipera", { NULL }, 12012, "udp" },
- { "vipera-ssl", { NULL }, 12013, "tcp" },
- { "vipera-ssl", { NULL }, 12013, "udp" },
- { "rets-ssl", { NULL }, 12109, "tcp" },
- { "rets-ssl", { NULL }, 12109, "udp" },
- { "nupaper-ss", { NULL }, 12121, "tcp" },
- { "nupaper-ss", { NULL }, 12121, "udp" },
- { "cawas", { NULL }, 12168, "tcp" },
- { "cawas", { NULL }, 12168, "udp" },
- { "hivep", { NULL }, 12172, "tcp" },
- { "hivep", { NULL }, 12172, "udp" },
- { "linogridengine", { NULL }, 12300, "tcp" },
- { "linogridengine", { NULL }, 12300, "udp" },
- { "warehouse-sss", { NULL }, 12321, "tcp" },
- { "warehouse-sss", { NULL }, 12321, "udp" },
- { "warehouse", { NULL }, 12322, "tcp" },
- { "warehouse", { NULL }, 12322, "udp" },
- { "italk", { NULL }, 12345, "tcp" },
- { "italk", { NULL }, 12345, "udp" },
- { "tsaf", { NULL }, 12753, "tcp" },
- { "tsaf", { NULL }, 12753, "udp" },
- { "i-zipqd", { NULL }, 13160, "tcp" },
- { "i-zipqd", { NULL }, 13160, "udp" },
- { "bcslogc", { NULL }, 13216, "tcp" },
- { "bcslogc", { NULL }, 13216, "udp" },
- { "rs-pias", { NULL }, 13217, "tcp" },
- { "rs-pias", { NULL }, 13217, "udp" },
- { "emc-vcas-tcp", { NULL }, 13218, "tcp" },
- { "emc-vcas-udp", { NULL }, 13218, "udp" },
- { "powwow-client", { NULL }, 13223, "tcp" },
- { "powwow-client", { NULL }, 13223, "udp" },
- { "powwow-server", { NULL }, 13224, "tcp" },
- { "powwow-server", { NULL }, 13224, "udp" },
- { "doip-data", { NULL }, 13400, "tcp" },
- { "doip-disc", { NULL }, 13400, "udp" },
- { "bprd", { NULL }, 13720, "tcp" },
- { "bprd", { NULL }, 13720, "udp" },
- { "bpdbm", { NULL }, 13721, "tcp" },
- { "bpdbm", { NULL }, 13721, "udp" },
- { "bpjava-msvc", { NULL }, 13722, "tcp" },
- { "bpjava-msvc", { NULL }, 13722, "udp" },
- { "vnetd", { NULL }, 13724, "tcp" },
- { "vnetd", { NULL }, 13724, "udp" },
- { "bpcd", { NULL }, 13782, "tcp" },
- { "bpcd", { NULL }, 13782, "udp" },
- { "vopied", { NULL }, 13783, "tcp" },
- { "vopied", { NULL }, 13783, "udp" },
- { "nbdb", { NULL }, 13785, "tcp" },
- { "nbdb", { NULL }, 13785, "udp" },
- { "nomdb", { NULL }, 13786, "tcp" },
- { "nomdb", { NULL }, 13786, "udp" },
- { "dsmcc-config", { NULL }, 13818, "tcp" },
- { "dsmcc-config", { NULL }, 13818, "udp" },
- { "dsmcc-session", { NULL }, 13819, "tcp" },
- { "dsmcc-session", { NULL }, 13819, "udp" },
- { "dsmcc-passthru", { NULL }, 13820, "tcp" },
- { "dsmcc-passthru", { NULL }, 13820, "udp" },
- { "dsmcc-download", { NULL }, 13821, "tcp" },
- { "dsmcc-download", { NULL }, 13821, "udp" },
- { "dsmcc-ccp", { NULL }, 13822, "tcp" },
- { "dsmcc-ccp", { NULL }, 13822, "udp" },
- { "bmdss", { NULL }, 13823, "tcp" },
- { "dta-systems", { NULL }, 13929, "tcp" },
- { "dta-systems", { NULL }, 13929, "udp" },
- { "medevolve", { NULL }, 13930, "tcp" },
- { "scotty-ft", { NULL }, 14000, "tcp" },
- { "scotty-ft", { NULL }, 14000, "udp" },
- { "sua", { NULL }, 14001, "tcp" },
- { "sua", { NULL }, 14001, "udp" },
- { "sua", { NULL }, 14001, "sctp" },
- { "sage-best-com1", { NULL }, 14033, "tcp" },
- { "sage-best-com1", { NULL }, 14033, "udp" },
- { "sage-best-com2", { NULL }, 14034, "tcp" },
- { "sage-best-com2", { NULL }, 14034, "udp" },
- { "vcs-app", { NULL }, 14141, "tcp" },
- { "vcs-app", { NULL }, 14141, "udp" },
- { "icpp", { NULL }, 14142, "tcp" },
- { "icpp", { NULL }, 14142, "udp" },
- { "gcm-app", { NULL }, 14145, "tcp" },
- { "gcm-app", { NULL }, 14145, "udp" },
- { "vrts-tdd", { NULL }, 14149, "tcp" },
- { "vrts-tdd", { NULL }, 14149, "udp" },
- { "vcscmd", { NULL }, 14150, "tcp" },
- { "vad", { NULL }, 14154, "tcp" },
- { "vad", { NULL }, 14154, "udp" },
- { "cps", { NULL }, 14250, "tcp" },
- { "cps", { NULL }, 14250, "udp" },
- { "ca-web-update", { NULL }, 14414, "tcp" },
- { "ca-web-update", { NULL }, 14414, "udp" },
- { "hde-lcesrvr-1", { NULL }, 14936, "tcp" },
- { "hde-lcesrvr-1", { NULL }, 14936, "udp" },
- { "hde-lcesrvr-2", { NULL }, 14937, "tcp" },
- { "hde-lcesrvr-2", { NULL }, 14937, "udp" },
- { "hydap", { NULL }, 15000, "tcp" },
- { "hydap", { NULL }, 15000, "udp" },
- { "xpilot", { NULL }, 15345, "tcp" },
- { "xpilot", { NULL }, 15345, "udp" },
- { "3link", { NULL }, 15363, "tcp" },
- { "3link", { NULL }, 15363, "udp" },
- { "cisco-snat", { NULL }, 15555, "tcp" },
- { "cisco-snat", { NULL }, 15555, "udp" },
- { "bex-xr", { NULL }, 15660, "tcp" },
- { "bex-xr", { NULL }, 15660, "udp" },
- { "ptp", { NULL }, 15740, "tcp" },
- { "ptp", { NULL }, 15740, "udp" },
- { "2ping", { NULL }, 15998, "udp" },
- { "programmar", { NULL }, 15999, "tcp" },
- { "fmsas", { NULL }, 16000, "tcp" },
- { "fmsascon", { NULL }, 16001, "tcp" },
- { "gsms", { NULL }, 16002, "tcp" },
- { "alfin", { NULL }, 16003, "udp" },
- { "jwpc", { NULL }, 16020, "tcp" },
- { "jwpc-bin", { NULL }, 16021, "tcp" },
- { "sun-sea-port", { NULL }, 16161, "tcp" },
- { "sun-sea-port", { NULL }, 16161, "udp" },
- { "solaris-audit", { NULL }, 16162, "tcp" },
- { "etb4j", { NULL }, 16309, "tcp" },
- { "etb4j", { NULL }, 16309, "udp" },
- { "pduncs", { NULL }, 16310, "tcp" },
- { "pduncs", { NULL }, 16310, "udp" },
- { "pdefmns", { NULL }, 16311, "tcp" },
- { "pdefmns", { NULL }, 16311, "udp" },
- { "netserialext1", { NULL }, 16360, "tcp" },
- { "netserialext1", { NULL }, 16360, "udp" },
- { "netserialext2", { NULL }, 16361, "tcp" },
- { "netserialext2", { NULL }, 16361, "udp" },
- { "netserialext3", { NULL }, 16367, "tcp" },
- { "netserialext3", { NULL }, 16367, "udp" },
- { "netserialext4", { NULL }, 16368, "tcp" },
- { "netserialext4", { NULL }, 16368, "udp" },
- { "connected", { NULL }, 16384, "tcp" },
- { "connected", { NULL }, 16384, "udp" },
- { "xoms", { NULL }, 16619, "tcp" },
- { "newbay-snc-mc", { NULL }, 16900, "tcp" },
- { "newbay-snc-mc", { NULL }, 16900, "udp" },
- { "sgcip", { NULL }, 16950, "tcp" },
- { "sgcip", { NULL }, 16950, "udp" },
- { "intel-rci-mp", { NULL }, 16991, "tcp" },
- { "intel-rci-mp", { NULL }, 16991, "udp" },
- { "amt-soap-http", { NULL }, 16992, "tcp" },
- { "amt-soap-http", { NULL }, 16992, "udp" },
- { "amt-soap-https", { NULL }, 16993, "tcp" },
- { "amt-soap-https", { NULL }, 16993, "udp" },
- { "amt-redir-tcp", { NULL }, 16994, "tcp" },
- { "amt-redir-tcp", { NULL }, 16994, "udp" },
- { "amt-redir-tls", { NULL }, 16995, "tcp" },
- { "amt-redir-tls", { NULL }, 16995, "udp" },
- { "isode-dua", { NULL }, 17007, "tcp" },
- { "isode-dua", { NULL }, 17007, "udp" },
- { "soundsvirtual", { NULL }, 17185, "tcp" },
- { "soundsvirtual", { NULL }, 17185, "udp" },
- { "chipper", { NULL }, 17219, "tcp" },
- { "chipper", { NULL }, 17219, "udp" },
- { "integrius-stp", { NULL }, 17234, "tcp" },
- { "integrius-stp", { NULL }, 17234, "udp" },
- { "ssh-mgmt", { NULL }, 17235, "tcp" },
- { "ssh-mgmt", { NULL }, 17235, "udp" },
- { "db-lsp", { NULL }, 17500, "tcp" },
- { "db-lsp-disc", { NULL }, 17500, "udp" },
- { "ea", { NULL }, 17729, "tcp" },
- { "ea", { NULL }, 17729, "udp" },
- { "zep", { NULL }, 17754, "tcp" },
- { "zep", { NULL }, 17754, "udp" },
- { "zigbee-ip", { NULL }, 17755, "tcp" },
- { "zigbee-ip", { NULL }, 17755, "udp" },
- { "zigbee-ips", { NULL }, 17756, "tcp" },
- { "zigbee-ips", { NULL }, 17756, "udp" },
- { "sw-orion", { NULL }, 17777, "tcp" },
- { "biimenu", { NULL }, 18000, "tcp" },
- { "biimenu", { NULL }, 18000, "udp" },
- { "radpdf", { NULL }, 18104, "tcp" },
- { "racf", { NULL }, 18136, "tcp" },
- { "opsec-cvp", { NULL }, 18181, "tcp" },
- { "opsec-cvp", { NULL }, 18181, "udp" },
- { "opsec-ufp", { NULL }, 18182, "tcp" },
- { "opsec-ufp", { NULL }, 18182, "udp" },
- { "opsec-sam", { NULL }, 18183, "tcp" },
- { "opsec-sam", { NULL }, 18183, "udp" },
- { "opsec-lea", { NULL }, 18184, "tcp" },
- { "opsec-lea", { NULL }, 18184, "udp" },
- { "opsec-omi", { NULL }, 18185, "tcp" },
- { "opsec-omi", { NULL }, 18185, "udp" },
- { "ohsc", { NULL }, 18186, "tcp" },
- { "ohsc", { NULL }, 18186, "udp" },
- { "opsec-ela", { NULL }, 18187, "tcp" },
- { "opsec-ela", { NULL }, 18187, "udp" },
- { "checkpoint-rtm", { NULL }, 18241, "tcp" },
- { "checkpoint-rtm", { NULL }, 18241, "udp" },
- { "gv-pf", { NULL }, 18262, "tcp" },
- { "gv-pf", { NULL }, 18262, "udp" },
- { "ac-cluster", { NULL }, 18463, "tcp" },
- { "ac-cluster", { NULL }, 18463, "udp" },
- { "rds-ib", { NULL }, 18634, "tcp" },
- { "rds-ib", { NULL }, 18634, "udp" },
- { "rds-ip", { NULL }, 18635, "tcp" },
- { "rds-ip", { NULL }, 18635, "udp" },
- { "ique", { NULL }, 18769, "tcp" },
- { "ique", { NULL }, 18769, "udp" },
- { "infotos", { NULL }, 18881, "tcp" },
- { "infotos", { NULL }, 18881, "udp" },
- { "apc-necmp", { NULL }, 18888, "tcp" },
- { "apc-necmp", { NULL }, 18888, "udp" },
- { "igrid", { NULL }, 19000, "tcp" },
- { "igrid", { NULL }, 19000, "udp" },
- { "j-link", { NULL }, 19020, "tcp" },
- { "opsec-uaa", { NULL }, 19191, "tcp" },
- { "opsec-uaa", { NULL }, 19191, "udp" },
- { "ua-secureagent", { NULL }, 19194, "tcp" },
- { "ua-secureagent", { NULL }, 19194, "udp" },
- { "keysrvr", { NULL }, 19283, "tcp" },
- { "keysrvr", { NULL }, 19283, "udp" },
- { "keyshadow", { NULL }, 19315, "tcp" },
- { "keyshadow", { NULL }, 19315, "udp" },
- { "mtrgtrans", { NULL }, 19398, "tcp" },
- { "mtrgtrans", { NULL }, 19398, "udp" },
- { "hp-sco", { NULL }, 19410, "tcp" },
- { "hp-sco", { NULL }, 19410, "udp" },
- { "hp-sca", { NULL }, 19411, "tcp" },
- { "hp-sca", { NULL }, 19411, "udp" },
- { "hp-sessmon", { NULL }, 19412, "tcp" },
- { "hp-sessmon", { NULL }, 19412, "udp" },
- { "fxuptp", { NULL }, 19539, "tcp" },
- { "fxuptp", { NULL }, 19539, "udp" },
- { "sxuptp", { NULL }, 19540, "tcp" },
- { "sxuptp", { NULL }, 19540, "udp" },
- { "jcp", { NULL }, 19541, "tcp" },
- { "jcp", { NULL }, 19541, "udp" },
- { "iec-104-sec", { NULL }, 19998, "tcp" },
- { "dnp-sec", { NULL }, 19999, "tcp" },
- { "dnp-sec", { NULL }, 19999, "udp" },
- { "dnp", { NULL }, 20000, "tcp" },
- { "dnp", { NULL }, 20000, "udp" },
- { "microsan", { NULL }, 20001, "tcp" },
- { "microsan", { NULL }, 20001, "udp" },
- { "commtact-http", { NULL }, 20002, "tcp" },
- { "commtact-http", { NULL }, 20002, "udp" },
- { "commtact-https", { NULL }, 20003, "tcp" },
- { "commtact-https", { NULL }, 20003, "udp" },
- { "openwebnet", { NULL }, 20005, "tcp" },
- { "openwebnet", { NULL }, 20005, "udp" },
- { "ss-idi-disc", { NULL }, 20012, "udp" },
- { "ss-idi", { NULL }, 20013, "tcp" },
- { "opendeploy", { NULL }, 20014, "tcp" },
- { "opendeploy", { NULL }, 20014, "udp" },
- { "nburn_id", { NULL }, 20034, "tcp" },
- { "nburn_id", { NULL }, 20034, "udp" },
- { "tmophl7mts", { NULL }, 20046, "tcp" },
- { "tmophl7mts", { NULL }, 20046, "udp" },
- { "mountd", { NULL }, 20048, "tcp" },
- { "mountd", { NULL }, 20048, "udp" },
- { "nfsrdma", { NULL }, 20049, "tcp" },
- { "nfsrdma", { NULL }, 20049, "udp" },
- { "nfsrdma", { NULL }, 20049, "sctp" },
- { "tolfab", { NULL }, 20167, "tcp" },
- { "tolfab", { NULL }, 20167, "udp" },
- { "ipdtp-port", { NULL }, 20202, "tcp" },
- { "ipdtp-port", { NULL }, 20202, "udp" },
- { "ipulse-ics", { NULL }, 20222, "tcp" },
- { "ipulse-ics", { NULL }, 20222, "udp" },
- { "emwavemsg", { NULL }, 20480, "tcp" },
- { "emwavemsg", { NULL }, 20480, "udp" },
- { "track", { NULL }, 20670, "tcp" },
- { "track", { NULL }, 20670, "udp" },
- { "athand-mmp", { NULL }, 20999, "tcp" },
- { "athand-mmp", { NULL }, 20999, "udp" },
- { "irtrans", { NULL }, 21000, "tcp" },
- { "irtrans", { NULL }, 21000, "udp" },
- { "dfserver", { NULL }, 21554, "tcp" },
- { "dfserver", { NULL }, 21554, "udp" },
- { "vofr-gateway", { NULL }, 21590, "tcp" },
- { "vofr-gateway", { NULL }, 21590, "udp" },
- { "tvpm", { NULL }, 21800, "tcp" },
- { "tvpm", { NULL }, 21800, "udp" },
- { "webphone", { NULL }, 21845, "tcp" },
- { "webphone", { NULL }, 21845, "udp" },
- { "netspeak-is", { NULL }, 21846, "tcp" },
- { "netspeak-is", { NULL }, 21846, "udp" },
- { "netspeak-cs", { NULL }, 21847, "tcp" },
- { "netspeak-cs", { NULL }, 21847, "udp" },
- { "netspeak-acd", { NULL }, 21848, "tcp" },
- { "netspeak-acd", { NULL }, 21848, "udp" },
- { "netspeak-cps", { NULL }, 21849, "tcp" },
- { "netspeak-cps", { NULL }, 21849, "udp" },
- { "snapenetio", { NULL }, 22000, "tcp" },
- { "snapenetio", { NULL }, 22000, "udp" },
- { "optocontrol", { NULL }, 22001, "tcp" },
- { "optocontrol", { NULL }, 22001, "udp" },
- { "optohost002", { NULL }, 22002, "tcp" },
- { "optohost002", { NULL }, 22002, "udp" },
- { "optohost003", { NULL }, 22003, "tcp" },
- { "optohost003", { NULL }, 22003, "udp" },
- { "optohost004", { NULL }, 22004, "tcp" },
- { "optohost004", { NULL }, 22004, "udp" },
- { "optohost004", { NULL }, 22005, "tcp" },
- { "optohost004", { NULL }, 22005, "udp" },
- { "dcap", { NULL }, 22125, "tcp" },
- { "gsidcap", { NULL }, 22128, "tcp" },
- { "wnn6", { NULL }, 22273, "tcp" },
- { "wnn6", { NULL }, 22273, "udp" },
- { "cis", { NULL }, 22305, "tcp" },
- { "cis", { NULL }, 22305, "udp" },
- { "cis-secure", { NULL }, 22343, "tcp" },
- { "cis-secure", { NULL }, 22343, "udp" },
- { "WibuKey", { NULL }, 22347, "tcp" },
- { "WibuKey", { NULL }, 22347, "udp" },
- { "CodeMeter", { NULL }, 22350, "tcp" },
- { "CodeMeter", { NULL }, 22350, "udp" },
- { "vocaltec-wconf", { NULL }, 22555, "tcp" },
- { "vocaltec-phone", { NULL }, 22555, "udp" },
- { "talikaserver", { NULL }, 22763, "tcp" },
- { "talikaserver", { NULL }, 22763, "udp" },
- { "aws-brf", { NULL }, 22800, "tcp" },
- { "aws-brf", { NULL }, 22800, "udp" },
- { "brf-gw", { NULL }, 22951, "tcp" },
- { "brf-gw", { NULL }, 22951, "udp" },
- { "inovaport1", { NULL }, 23000, "tcp" },
- { "inovaport1", { NULL }, 23000, "udp" },
- { "inovaport2", { NULL }, 23001, "tcp" },
- { "inovaport2", { NULL }, 23001, "udp" },
- { "inovaport3", { NULL }, 23002, "tcp" },
- { "inovaport3", { NULL }, 23002, "udp" },
- { "inovaport4", { NULL }, 23003, "tcp" },
- { "inovaport4", { NULL }, 23003, "udp" },
- { "inovaport5", { NULL }, 23004, "tcp" },
- { "inovaport5", { NULL }, 23004, "udp" },
- { "inovaport6", { NULL }, 23005, "tcp" },
- { "inovaport6", { NULL }, 23005, "udp" },
- { "s102", { NULL }, 23272, "udp" },
- { "elxmgmt", { NULL }, 23333, "tcp" },
- { "elxmgmt", { NULL }, 23333, "udp" },
- { "novar-dbase", { NULL }, 23400, "tcp" },
- { "novar-dbase", { NULL }, 23400, "udp" },
- { "novar-alarm", { NULL }, 23401, "tcp" },
- { "novar-alarm", { NULL }, 23401, "udp" },
- { "novar-global", { NULL }, 23402, "tcp" },
- { "novar-global", { NULL }, 23402, "udp" },
- { "aequus", { NULL }, 23456, "tcp" },
- { "aequus-alt", { NULL }, 23457, "tcp" },
- { "med-ltp", { NULL }, 24000, "tcp" },
- { "med-ltp", { NULL }, 24000, "udp" },
- { "med-fsp-rx", { NULL }, 24001, "tcp" },
- { "med-fsp-rx", { NULL }, 24001, "udp" },
- { "med-fsp-tx", { NULL }, 24002, "tcp" },
- { "med-fsp-tx", { NULL }, 24002, "udp" },
- { "med-supp", { NULL }, 24003, "tcp" },
- { "med-supp", { NULL }, 24003, "udp" },
- { "med-ovw", { NULL }, 24004, "tcp" },
- { "med-ovw", { NULL }, 24004, "udp" },
- { "med-ci", { NULL }, 24005, "tcp" },
- { "med-ci", { NULL }, 24005, "udp" },
- { "med-net-svc", { NULL }, 24006, "tcp" },
- { "med-net-svc", { NULL }, 24006, "udp" },
- { "filesphere", { NULL }, 24242, "tcp" },
- { "filesphere", { NULL }, 24242, "udp" },
- { "vista-4gl", { NULL }, 24249, "tcp" },
- { "vista-4gl", { NULL }, 24249, "udp" },
- { "ild", { NULL }, 24321, "tcp" },
- { "ild", { NULL }, 24321, "udp" },
- { "intel_rci", { NULL }, 24386, "tcp" },
- { "intel_rci", { NULL }, 24386, "udp" },
- { "tonidods", { NULL }, 24465, "tcp" },
- { "tonidods", { NULL }, 24465, "udp" },
- { "binkp", { NULL }, 24554, "tcp" },
- { "binkp", { NULL }, 24554, "udp" },
- { "canditv", { NULL }, 24676, "tcp" },
- { "canditv", { NULL }, 24676, "udp" },
- { "flashfiler", { NULL }, 24677, "tcp" },
- { "flashfiler", { NULL }, 24677, "udp" },
- { "proactivate", { NULL }, 24678, "tcp" },
- { "proactivate", { NULL }, 24678, "udp" },
- { "tcc-http", { NULL }, 24680, "tcp" },
- { "tcc-http", { NULL }, 24680, "udp" },
- { "cslg", { NULL }, 24754, "tcp" },
- { "find", { NULL }, 24922, "tcp" },
- { "find", { NULL }, 24922, "udp" },
- { "icl-twobase1", { NULL }, 25000, "tcp" },
- { "icl-twobase1", { NULL }, 25000, "udp" },
- { "icl-twobase2", { NULL }, 25001, "tcp" },
- { "icl-twobase2", { NULL }, 25001, "udp" },
- { "icl-twobase3", { NULL }, 25002, "tcp" },
- { "icl-twobase3", { NULL }, 25002, "udp" },
- { "icl-twobase4", { NULL }, 25003, "tcp" },
- { "icl-twobase4", { NULL }, 25003, "udp" },
- { "icl-twobase5", { NULL }, 25004, "tcp" },
- { "icl-twobase5", { NULL }, 25004, "udp" },
- { "icl-twobase6", { NULL }, 25005, "tcp" },
- { "icl-twobase6", { NULL }, 25005, "udp" },
- { "icl-twobase7", { NULL }, 25006, "tcp" },
- { "icl-twobase7", { NULL }, 25006, "udp" },
- { "icl-twobase8", { NULL }, 25007, "tcp" },
- { "icl-twobase8", { NULL }, 25007, "udp" },
- { "icl-twobase9", { NULL }, 25008, "tcp" },
- { "icl-twobase9", { NULL }, 25008, "udp" },
- { "icl-twobase10", { NULL }, 25009, "tcp" },
- { "icl-twobase10", { NULL }, 25009, "udp" },
- { "rna", { NULL }, 25471, "sctp" },
- { "sauterdongle", { NULL }, 25576, "tcp" },
- { "vocaltec-hos", { NULL }, 25793, "tcp" },
- { "vocaltec-hos", { NULL }, 25793, "udp" },
- { "tasp-net", { NULL }, 25900, "tcp" },
- { "tasp-net", { NULL }, 25900, "udp" },
- { "niobserver", { NULL }, 25901, "tcp" },
- { "niobserver", { NULL }, 25901, "udp" },
- { "nilinkanalyst", { NULL }, 25902, "tcp" },
- { "nilinkanalyst", { NULL }, 25902, "udp" },
- { "niprobe", { NULL }, 25903, "tcp" },
- { "niprobe", { NULL }, 25903, "udp" },
- { "quake", { NULL }, 26000, "tcp" },
- { "quake", { NULL }, 26000, "udp" },
- { "scscp", { NULL }, 26133, "tcp" },
- { "scscp", { NULL }, 26133, "udp" },
- { "wnn6-ds", { NULL }, 26208, "tcp" },
- { "wnn6-ds", { NULL }, 26208, "udp" },
- { "ezproxy", { NULL }, 26260, "tcp" },
- { "ezproxy", { NULL }, 26260, "udp" },
- { "ezmeeting", { NULL }, 26261, "tcp" },
- { "ezmeeting", { NULL }, 26261, "udp" },
- { "k3software-svr", { NULL }, 26262, "tcp" },
- { "k3software-svr", { NULL }, 26262, "udp" },
- { "k3software-cli", { NULL }, 26263, "tcp" },
- { "k3software-cli", { NULL }, 26263, "udp" },
- { "exoline-tcp", { NULL }, 26486, "tcp" },
- { "exoline-udp", { NULL }, 26486, "udp" },
- { "exoconfig", { NULL }, 26487, "tcp" },
- { "exoconfig", { NULL }, 26487, "udp" },
- { "exonet", { NULL }, 26489, "tcp" },
- { "exonet", { NULL }, 26489, "udp" },
- { "imagepump", { NULL }, 27345, "tcp" },
- { "imagepump", { NULL }, 27345, "udp" },
- { "jesmsjc", { NULL }, 27442, "tcp" },
- { "jesmsjc", { NULL }, 27442, "udp" },
- { "kopek-httphead", { NULL }, 27504, "tcp" },
- { "kopek-httphead", { NULL }, 27504, "udp" },
- { "ars-vista", { NULL }, 27782, "tcp" },
- { "ars-vista", { NULL }, 27782, "udp" },
- { "tw-auth-key", { NULL }, 27999, "tcp" },
- { "tw-auth-key", { NULL }, 27999, "udp" },
- { "nxlmd", { NULL }, 28000, "tcp" },
- { "nxlmd", { NULL }, 28000, "udp" },
- { "pqsp", { NULL }, 28001, "tcp" },
- { "siemensgsm", { NULL }, 28240, "tcp" },
- { "siemensgsm", { NULL }, 28240, "udp" },
- { "sgsap", { NULL }, 29118, "sctp" },
- { "otmp", { NULL }, 29167, "tcp" },
- { "otmp", { NULL }, 29167, "udp" },
- { "sbcap", { NULL }, 29168, "sctp" },
- { "iuhsctpassoc", { NULL }, 29169, "sctp" },
- { "pago-services1", { NULL }, 30001, "tcp" },
- { "pago-services1", { NULL }, 30001, "udp" },
- { "pago-services2", { NULL }, 30002, "tcp" },
- { "pago-services2", { NULL }, 30002, "udp" },
- { "kingdomsonline", { NULL }, 30260, "tcp" },
- { "kingdomsonline", { NULL }, 30260, "udp" },
- { "ovobs", { NULL }, 30999, "tcp" },
- { "ovobs", { NULL }, 30999, "udp" },
- { "autotrac-acp", { NULL }, 31020, "tcp" },
- { "yawn", { NULL }, 31029, "udp" },
- { "xqosd", { NULL }, 31416, "tcp" },
- { "xqosd", { NULL }, 31416, "udp" },
- { "tetrinet", { NULL }, 31457, "tcp" },
- { "tetrinet", { NULL }, 31457, "udp" },
- { "lm-mon", { NULL }, 31620, "tcp" },
- { "lm-mon", { NULL }, 31620, "udp" },
- { "dsx_monitor", { NULL }, 31685, "tcp" },
- { "gamesmith-port", { NULL }, 31765, "tcp" },
- { "gamesmith-port", { NULL }, 31765, "udp" },
- { "iceedcp_tx", { NULL }, 31948, "tcp" },
- { "iceedcp_tx", { NULL }, 31948, "udp" },
- { "iceedcp_rx", { NULL }, 31949, "tcp" },
- { "iceedcp_rx", { NULL }, 31949, "udp" },
- { "iracinghelper", { NULL }, 32034, "tcp" },
- { "iracinghelper", { NULL }, 32034, "udp" },
- { "t1distproc60", { NULL }, 32249, "tcp" },
- { "t1distproc60", { NULL }, 32249, "udp" },
- { "apm-link", { NULL }, 32483, "tcp" },
- { "apm-link", { NULL }, 32483, "udp" },
- { "sec-ntb-clnt", { NULL }, 32635, "tcp" },
- { "sec-ntb-clnt", { NULL }, 32635, "udp" },
- { "DMExpress", { NULL }, 32636, "tcp" },
- { "DMExpress", { NULL }, 32636, "udp" },
- { "filenet-powsrm", { NULL }, 32767, "tcp" },
- { "filenet-powsrm", { NULL }, 32767, "udp" },
- { "filenet-tms", { NULL }, 32768, "tcp" },
- { "filenet-tms", { NULL }, 32768, "udp" },
- { "filenet-rpc", { NULL }, 32769, "tcp" },
- { "filenet-rpc", { NULL }, 32769, "udp" },
- { "filenet-nch", { NULL }, 32770, "tcp" },
- { "filenet-nch", { NULL }, 32770, "udp" },
- { "filenet-rmi", { NULL }, 32771, "tcp" },
- { "filenet-rmi", { NULL }, 32771, "udp" },
- { "filenet-pa", { NULL }, 32772, "tcp" },
- { "filenet-pa", { NULL }, 32772, "udp" },
- { "filenet-cm", { NULL }, 32773, "tcp" },
- { "filenet-cm", { NULL }, 32773, "udp" },
- { "filenet-re", { NULL }, 32774, "tcp" },
- { "filenet-re", { NULL }, 32774, "udp" },
- { "filenet-pch", { NULL }, 32775, "tcp" },
- { "filenet-pch", { NULL }, 32775, "udp" },
- { "filenet-peior", { NULL }, 32776, "tcp" },
- { "filenet-peior", { NULL }, 32776, "udp" },
- { "filenet-obrok", { NULL }, 32777, "tcp" },
- { "filenet-obrok", { NULL }, 32777, "udp" },
- { "mlsn", { NULL }, 32801, "tcp" },
- { "mlsn", { NULL }, 32801, "udp" },
- { "retp", { NULL }, 32811, "tcp" },
- { "idmgratm", { NULL }, 32896, "tcp" },
- { "idmgratm", { NULL }, 32896, "udp" },
- { "aurora-balaena", { NULL }, 33123, "tcp" },
- { "aurora-balaena", { NULL }, 33123, "udp" },
- { "diamondport", { NULL }, 33331, "tcp" },
- { "diamondport", { NULL }, 33331, "udp" },
- { "dgi-serv", { NULL }, 33333, "tcp" },
- { "traceroute", { NULL }, 33434, "tcp" },
- { "traceroute", { NULL }, 33434, "udp" },
- { "snip-slave", { NULL }, 33656, "tcp" },
- { "snip-slave", { NULL }, 33656, "udp" },
- { "turbonote-2", { NULL }, 34249, "tcp" },
- { "turbonote-2", { NULL }, 34249, "udp" },
- { "p-net-local", { NULL }, 34378, "tcp" },
- { "p-net-local", { NULL }, 34378, "udp" },
- { "p-net-remote", { NULL }, 34379, "tcp" },
- { "p-net-remote", { NULL }, 34379, "udp" },
- { "dhanalakshmi", { NULL }, 34567, "tcp" },
- { "profinet-rt", { NULL }, 34962, "tcp" },
- { "profinet-rt", { NULL }, 34962, "udp" },
- { "profinet-rtm", { NULL }, 34963, "tcp" },
- { "profinet-rtm", { NULL }, 34963, "udp" },
- { "profinet-cm", { NULL }, 34964, "tcp" },
- { "profinet-cm", { NULL }, 34964, "udp" },
- { "ethercat", { NULL }, 34980, "tcp" },
- { "ethercat", { NULL }, 34980, "udp" },
- { "allpeers", { NULL }, 36001, "tcp" },
- { "allpeers", { NULL }, 36001, "udp" },
- { "s1-control", { NULL }, 36412, "sctp" },
- { "x2-control", { NULL }, 36422, "sctp" },
- { "m2ap", { NULL }, 36443, "sctp" },
- { "m3ap", { NULL }, 36444, "sctp" },
- { "kastenxpipe", { NULL }, 36865, "tcp" },
- { "kastenxpipe", { NULL }, 36865, "udp" },
- { "neckar", { NULL }, 37475, "tcp" },
- { "neckar", { NULL }, 37475, "udp" },
- { "unisys-eportal", { NULL }, 37654, "tcp" },
- { "unisys-eportal", { NULL }, 37654, "udp" },
- { "galaxy7-data", { NULL }, 38201, "tcp" },
- { "galaxy7-data", { NULL }, 38201, "udp" },
- { "fairview", { NULL }, 38202, "tcp" },
- { "fairview", { NULL }, 38202, "udp" },
- { "agpolicy", { NULL }, 38203, "tcp" },
- { "agpolicy", { NULL }, 38203, "udp" },
- { "turbonote-1", { NULL }, 39681, "tcp" },
- { "turbonote-1", { NULL }, 39681, "udp" },
- { "safetynetp", { NULL }, 40000, "tcp" },
- { "safetynetp", { NULL }, 40000, "udp" },
- { "cscp", { NULL }, 40841, "tcp" },
- { "cscp", { NULL }, 40841, "udp" },
- { "csccredir", { NULL }, 40842, "tcp" },
- { "csccredir", { NULL }, 40842, "udp" },
- { "csccfirewall", { NULL }, 40843, "tcp" },
- { "csccfirewall", { NULL }, 40843, "udp" },
- { "ortec-disc", { NULL }, 40853, "udp" },
- { "fs-qos", { NULL }, 41111, "tcp" },
- { "fs-qos", { NULL }, 41111, "udp" },
- { "tentacle", { NULL }, 41121, "tcp" },
- { "crestron-cip", { NULL }, 41794, "tcp" },
- { "crestron-cip", { NULL }, 41794, "udp" },
- { "crestron-ctp", { NULL }, 41795, "tcp" },
- { "crestron-ctp", { NULL }, 41795, "udp" },
- { "candp", { NULL }, 42508, "tcp" },
- { "candp", { NULL }, 42508, "udp" },
- { "candrp", { NULL }, 42509, "tcp" },
- { "candrp", { NULL }, 42509, "udp" },
- { "caerpc", { NULL }, 42510, "tcp" },
- { "caerpc", { NULL }, 42510, "udp" },
- { "reachout", { NULL }, 43188, "tcp" },
- { "reachout", { NULL }, 43188, "udp" },
- { "ndm-agent-port", { NULL }, 43189, "tcp" },
- { "ndm-agent-port", { NULL }, 43189, "udp" },
- { "ip-provision", { NULL }, 43190, "tcp" },
- { "ip-provision", { NULL }, 43190, "udp" },
- { "noit-transport", { NULL }, 43191, "tcp" },
- { "ew-mgmt", { NULL }, 43440, "tcp" },
- { "ew-disc-cmd", { NULL }, 43440, "udp" },
- { "ciscocsdb", { NULL }, 43441, "tcp" },
- { "ciscocsdb", { NULL }, 43441, "udp" },
- { "pmcd", { NULL }, 44321, "tcp" },
- { "pmcd", { NULL }, 44321, "udp" },
- { "pmcdproxy", { NULL }, 44322, "tcp" },
- { "pmcdproxy", { NULL }, 44322, "udp" },
- { "pcp", { NULL }, 44323, "udp" },
- { "rbr-debug", { NULL }, 44553, "tcp" },
- { "rbr-debug", { NULL }, 44553, "udp" },
- { "EtherNet/IP-2", { NULL }, 44818, "tcp" },
- { "EtherNet/IP-2", { NULL }, 44818, "udp" },
- { "invision-ag", { NULL }, 45054, "tcp" },
- { "invision-ag", { NULL }, 45054, "udp" },
- { "eba", { NULL }, 45678, "tcp" },
- { "eba", { NULL }, 45678, "udp" },
- { "qdb2service", { NULL }, 45825, "tcp" },
- { "qdb2service", { NULL }, 45825, "udp" },
- { "ssr-servermgr", { NULL }, 45966, "tcp" },
- { "ssr-servermgr", { NULL }, 45966, "udp" },
- { "mediabox", { NULL }, 46999, "tcp" },
- { "mediabox", { NULL }, 46999, "udp" },
- { "mbus", { NULL }, 47000, "tcp" },
- { "mbus", { NULL }, 47000, "udp" },
- { "winrm", { NULL }, 47001, "tcp" },
- { "dbbrowse", { NULL }, 47557, "tcp" },
- { "dbbrowse", { NULL }, 47557, "udp" },
- { "directplaysrvr", { NULL }, 47624, "tcp" },
- { "directplaysrvr", { NULL }, 47624, "udp" },
- { "ap", { NULL }, 47806, "tcp" },
- { "ap", { NULL }, 47806, "udp" },
- { "bacnet", { NULL }, 47808, "tcp" },
- { "bacnet", { NULL }, 47808, "udp" },
- { "nimcontroller", { NULL }, 48000, "tcp" },
- { "nimcontroller", { NULL }, 48000, "udp" },
- { "nimspooler", { NULL }, 48001, "tcp" },
- { "nimspooler", { NULL }, 48001, "udp" },
- { "nimhub", { NULL }, 48002, "tcp" },
- { "nimhub", { NULL }, 48002, "udp" },
- { "nimgtw", { NULL }, 48003, "tcp" },
- { "nimgtw", { NULL }, 48003, "udp" },
- { "nimbusdb", { NULL }, 48004, "tcp" },
- { "nimbusdbctrl", { NULL }, 48005, "tcp" },
- { "3gpp-cbsp", { NULL }, 48049, "tcp" },
- { "isnetserv", { NULL }, 48128, "tcp" },
- { "isnetserv", { NULL }, 48128, "udp" },
- { "blp5", { NULL }, 48129, "tcp" },
- { "blp5", { NULL }, 48129, "udp" },
- { "com-bardac-dw", { NULL }, 48556, "tcp" },
- { "com-bardac-dw", { NULL }, 48556, "udp" },
- { "iqobject", { NULL }, 48619, "tcp" },
- { "iqobject", { NULL }, 48619, "udp" },
-# endif /* USE_IANA_REGISTERED_PORTS */
- { NULL, { NULL }, 0, NULL }
-};
-
-struct servent *getservbyport(int port, const char *proto)
-{
- unsigned short u_port;
- const char *protocol = NULL;
- int error = 0;
- size_t i;
-
- u_port = ntohs((unsigned short)port);
-
- if (proto) {
- switch (ares_strlen(proto)) {
- case 3:
- if (!strncasecmp(proto, "tcp", 3)) {
- protocol = "tcp";
- } else if (!strncasecmp(proto, "udp", 3)) {
- protocol = "udp";
- } else {
- error = WSAEFAULT;
- }
- break;
- case 4:
- if (!strncasecmp(proto, "sctp", 4)) {
- protocol = "sctp";
- } else if (!strncasecmp(proto, "dccp", 4)) {
- protocol = "dccp";
- } else {
- error = WSAEFAULT;
- }
- break;
- default:
- error = WSAEFAULT;
- }
- }
-
- if (!error) {
- for (i = 0; i < (sizeof(IANAports) / sizeof(IANAports[0])) - 1; i++) {
- if (u_port == IANAports[i].s_port) {
- if (!protocol || !strcasecmp(protocol, IANAports[i].s_proto)) {
- return (struct servent *)&IANAports[i];
- }
- }
- }
- error = WSANO_DATA;
- }
-
- SET_SOCKERRNO(error);
- return NULL;
-}
-
-#endif /* _WIN32_WCE */
diff --git a/contrib/libs/c-ares/src/lib/ares_private.h b/contrib/libs/c-ares/src/lib/ares_private.h
index 263c2a606d..ce8c3f2ddc 100644
--- a/contrib/libs/c-ares/src/lib/ares_private.h
+++ b/contrib/libs/c-ares/src/lib/ares_private.h
@@ -40,6 +40,36 @@
# include <netinet/in.h>
#endif
+#include "ares_mem.h"
+#include "ares_ipv6.h"
+#include "util/ares_math.h"
+#include "util/ares_time.h"
+#include "util/ares_rand.h"
+#include "ares_array.h"
+#include "ares_llist.h"
+#include "dsa/ares_slist.h"
+#include "ares_htable_strvp.h"
+#include "ares_htable_szvp.h"
+#include "ares_htable_asvp.h"
+#include "ares_htable_dict.h"
+#include "ares_htable_vpvp.h"
+#include "ares_htable_vpstr.h"
+#include "record/ares_dns_multistring.h"
+#include "ares_buf.h"
+#include "record/ares_dns_private.h"
+#include "util/ares_iface_ips.h"
+#include "util/ares_threads.h"
+#include "ares_socket.h"
+#include "ares_conn.h"
+#include "ares_str.h"
+#include "str/ares_strsplit.h"
+#include "util/ares_uri.h"
+
+#ifndef HAVE_GETENV
+# include "ares_getenv.h"
+# define getenv(ptr) ares_getenv(ptr)
+#endif
+
#define DEFAULT_TIMEOUT 2000 /* milliseconds */
#define DEFAULT_TRIES 3
#ifndef INADDR_NONE
@@ -100,42 +130,6 @@ W32_FUNC const char *_w32_GetHostsFile(void);
#endif
-#include "ares_ipv6.h"
-
-struct ares_rand_state;
-typedef struct ares_rand_state ares_rand_state;
-
-#include "dsa/ares__array.h"
-#include "dsa/ares__llist.h"
-#include "dsa/ares__slist.h"
-#include "dsa/ares__htable_strvp.h"
-#include "dsa/ares__htable_szvp.h"
-#include "dsa/ares__htable_asvp.h"
-#include "dsa/ares__htable_vpvp.h"
-#include "record/ares_dns_multistring.h"
-#include "str/ares__buf.h"
-#include "record/ares_dns_private.h"
-#include "util/ares__iface_ips.h"
-#include "util/ares__threads.h"
-
-#ifndef HAVE_GETENV
-# include "ares_getenv.h"
-# define getenv(ptr) ares_getenv(ptr)
-#endif
-
-#include "str/ares_str.h"
-#include "str/ares_strsplit.h"
-
-#ifndef HAVE_STRCASECMP
-# include "str/ares_strcasecmp.h"
-# define strcasecmp(p1, p2) ares_strcasecmp(p1, p2)
-#endif
-
-#ifndef HAVE_STRNCASECMP
-# include "str/ares_strcasecmp.h"
-# define strncasecmp(p1, p2, n) ares_strncasecmp(p1, p2, n)
-#endif
-
/********* EDNS defines section ******/
#define EDNSPACKETSZ \
1232 /* Reasonable UDP payload size, as agreed by operators \
@@ -154,140 +148,6 @@ typedef struct ares_rand_state ares_rand_state;
struct ares_query;
typedef struct ares_query ares_query_t;
-struct ares_server;
-typedef struct ares_server ares_server_t;
-
-struct ares_conn;
-typedef struct ares_conn ares_conn_t;
-
-typedef enum {
- /*! No flags */
- ARES_CONN_FLAG_NONE = 0,
- /*! TCP connection, not UDP */
- ARES_CONN_FLAG_TCP = 1 << 0,
- /*! TCP Fast Open is enabled and being used if supported by the OS */
- ARES_CONN_FLAG_TFO = 1 << 1,
- /*! TCP Fast Open has not yet sent its first packet. Gets unset on first
- * write to a connection */
- ARES_CONN_FLAG_TFO_INITIAL = 1 << 2
-} ares_conn_flags_t;
-
-struct ares_conn {
- ares_server_t *server;
- ares_socket_t fd;
- struct ares_addr self_ip;
- ares_conn_flags_t flags;
- /* total number of queries run on this connection since it was established */
- size_t total_queries;
- /* list of outstanding queries to this connection */
- ares__llist_t *queries_to_conn;
-};
-
-#ifdef _MSC_VER
-typedef __int64 ares_int64_t;
-typedef unsigned __int64 ares_uint64_t;
-#else
-typedef long long ares_int64_t;
-typedef unsigned long long ares_uint64_t;
-#endif
-
-/*! struct timeval on some systems like Windows doesn't support 64bit time so
- * therefore can't be used due to Y2K38 issues. Make our own that does have
- * 64bit time. */
-typedef struct {
- ares_int64_t sec; /*!< Seconds */
- unsigned int usec; /*!< Microseconds. Can't be negative. */
-} ares_timeval_t;
-
-/*! Various buckets for grouping history */
-typedef enum {
- ARES_METRIC_1MINUTE = 0, /*!< Bucket for tracking over the last minute */
- ARES_METRIC_15MINUTES, /*!< Bucket for tracking over the last 15 minutes */
- ARES_METRIC_1HOUR, /*!< Bucket for tracking over the last hour */
- ARES_METRIC_1DAY, /*!< Bucket for tracking over the last day */
- ARES_METRIC_INCEPTION, /*!< Bucket for tracking since inception */
- ARES_METRIC_COUNT /*!< Count of buckets, not a real bucket */
-} ares_server_bucket_t;
-
-/*! Data metrics collected for each bucket */
-typedef struct {
- time_t ts; /*!< Timestamp divided by bucket divisor */
- unsigned int latency_min_ms; /*!< Minimum latency for queries */
- unsigned int latency_max_ms; /*!< Maximum latency for queries */
- ares_uint64_t total_ms; /*!< Cumulative query time for bucket */
- ares_uint64_t total_count; /*!< Number of queries for bucket */
-
- time_t prev_ts; /*!< Previous period bucket timestamp */
- ares_uint64_t
- prev_total_ms; /*!< Previous period bucket cumulative query time */
- ares_uint64_t prev_total_count; /*!< Previous period bucket query count */
-} ares_server_metrics_t;
-
-typedef enum {
- ARES_COOKIE_INITIAL = 0,
- ARES_COOKIE_GENERATED = 1,
- ARES_COOKIE_SUPPORTED = 2,
- ARES_COOKIE_UNSUPPORTED = 3
-} ares_cookie_state_t;
-
-/*! Structure holding tracking data for RFC 7873/9018 DNS cookies.
- * Implementation plan for this feature is here:
- * https://github.com/c-ares/c-ares/issues/620
- */
-typedef struct {
- /*! starts at INITIAL, transitions as needed. */
- ares_cookie_state_t state;
- /*! randomly-generate client cookie */
- unsigned char client[8];
- /*! timestamp client cookie was generated, used for rotation purposes */
- ares_timeval_t client_ts;
- /*! IP address last used for client to connect to server. If this changes
- * The client cookie gets invalidated */
- struct ares_addr client_ip;
- /*! Server Cookie last received, 8-32 bytes in length */
- unsigned char server[32];
- /*! Length of server cookie on file. */
- size_t server_len;
- /*! Timestamp of last attempt to use cookies, but it was determined that the
- * server didn't support them */
- ares_timeval_t unsupported_ts;
-} ares_cookie_t;
-
-struct ares_server {
- /* Configuration */
- size_t idx; /* index for server in system configuration */
- struct ares_addr addr;
- unsigned short udp_port; /* host byte order */
- unsigned short tcp_port; /* host byte order */
- char ll_iface[64]; /* IPv6 Link Local Interface */
- unsigned int ll_scope; /* IPv6 Link Local Scope */
-
- size_t consec_failures; /* Consecutive query failure count
- * can be hard errors or timeouts
- */
- ares__llist_t *connections;
- ares_conn_t *tcp_conn;
-
- /* The next time when we will retry this server if it has hit failures */
- ares_timeval_t next_retry_time;
-
- /* TCP buffer since multiple responses can come back in one read, or partial
- * in a read */
- ares__buf_t *tcp_parser;
-
- /* TCP output queue */
- ares__buf_t *tcp_send;
-
- /*! Buckets for collecting metrics about the server */
- ares_server_metrics_t metrics[ARES_METRIC_COUNT];
-
- /*! RFC 7873/9018 DNS Cookies */
- ares_cookie_t cookie;
-
- /* Link back to owning channel */
- ares_channel_t *channel;
-};
-
/* State to represent a DNS query */
struct ares_query {
/* Query ID from qbuf, for faster lookup, and current timeout */
@@ -300,9 +160,9 @@ struct ares_query {
* 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 query is associated with */
ares_conn_t *conn;
@@ -328,71 +188,71 @@ struct apattern {
unsigned char mask;
};
-struct ares__qcache;
-typedef struct ares__qcache ares__qcache_t;
+struct ares_qcache;
+typedef struct ares_qcache ares_qcache_t;
struct ares_hosts_file;
typedef struct ares_hosts_file ares_hosts_file_t;
struct ares_channeldata {
/* Configuration data */
- unsigned int flags;
- size_t timeout; /* in milliseconds */
- size_t tries;
- size_t ndots;
- size_t maxtimeout; /* in milliseconds */
- 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 qcache_max_ttl;
- ares_evsys_t evsys;
- unsigned int optmask;
+ unsigned int flags;
+ size_t timeout; /* in milliseconds */
+ size_t tries;
+ size_t ndots;
+ size_t maxtimeout; /* in milliseconds */
+ 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 qcache_max_ttl;
+ ares_evsys_t evsys;
+ 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];
+ char local_dev_name[32];
+ unsigned int local_ip4;
+ unsigned char local_ip6[16];
/* Thread safety lock */
- ares__thread_mutex_t *lock;
+ ares_thread_mutex_t *lock;
/* Conditional to wake waiters when queue is empty */
- ares__thread_cond_t *cond_empty;
+ ares_thread_cond_t *cond_empty;
/* Server addresses and communications state. Sorted by least consecutive
* failures, followed by the configuration order if failures are equal. */
- ares__slist_t *servers;
+ ares_slist_t *servers;
/* random state to use when generating new ids and generating retry penalties
*/
- ares_rand_state *rand_state;
+ ares_rand_state *rand_state;
/* 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_szvp_t *queries_by_qid;
+ ares_htable_szvp_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
* up a connection and remove it if necessary (as otherwise we'd have to
* scan all connections) */
- ares__htable_asvp_t *connnode_by_socket;
+ 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;
@@ -400,8 +260,14 @@ struct ares_channeldata {
ares_sock_config_callback sock_config_cb;
void *sock_config_cb_data;
- const struct ares_socket_functions *sock_funcs;
+ struct ares_socket_functions_ex sock_funcs;
void *sock_func_cb_data;
+ const struct ares_socket_functions *legacy_sock_funcs;
+ void *legacy_sock_funcs_cb_data;
+
+ ares_pending_write_cb notify_pending_write_cb;
+ void *notify_pending_write_cb_data;
+ ares_bool_t notify_pending_write;
/* Path for resolv.conf file, configurable via ares_options */
char *resolvconf_path;
@@ -416,7 +282,7 @@ struct ares_channeldata {
ares_hosts_file_t *hf;
/* Query Cache */
- ares__qcache_t *qcache;
+ ares_qcache_t *qcache;
/* Fields controlling server failover behavior.
* The retry chance is the probability (1/N) by which we will retry a failed
@@ -437,7 +303,7 @@ struct ares_channeldata {
* reading may block. The thread handle is provided for waiting on thread
* exit. */
ares_bool_t reinit_pending;
- ares__thread_t *reinit_thread;
+ ares_thread_t *reinit_thread;
/* Whether the system is up or not. This is mainly to prevent deadlocks
* and access violations during the cleanup process. Some things like
@@ -447,29 +313,18 @@ struct ares_channeldata {
};
/* Does the domain end in ".onion" or ".onion."? Case-insensitive. */
-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);
-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 */
-ares_bool_t ares__timedout(const ares_timeval_t *now,
- const ares_timeval_t *check);
+ares_bool_t ares_is_onion_domain(const char *name);
/* Returns one of the normal ares status codes like ARES_SUCCESS */
-ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now);
-ares_status_t ares__requeue_query(ares_query_t *query,
- const ares_timeval_t *now,
- ares_status_t status,
- ares_bool_t inc_try_count,
- const ares_dns_record_t *dnsrec);
+ares_status_t ares_send_query(ares_server_t *requested_server /* Optional */,
+ ares_query_t *query, const ares_timeval_t *now);
+ares_status_t ares_requeue_query(ares_query_t *query, const ares_timeval_t *now,
+ ares_status_t status,
+ ares_bool_t inc_try_count,
+ const ares_dns_record_t *dnsrec);
/*! Count the number of labels (dots+1) in a domain */
-size_t ares__name_label_cnt(const char *name);
+size_t ares_name_label_cnt(const char *name);
/*! Retrieve a list of names to use for searching. The first successful
* query in the list wins. This function also uses the HOSTSALIASES file
@@ -477,57 +332,45 @@ size_t ares__name_label_cnt(const char *name);
*
* \param[in] channel initialized ares channel
* \param[in] name initial name being searched
- * \param[out] names array of names to attempt, use ares__strsplit_free()
+ * \param[out] names array of names to attempt, use ares_strsplit_free()
* when no longer needed.
* \param[out] names_len number of names in array
* \return ARES_SUCCESS on success, otherwise one of the other error codes.
*/
-ares_status_t ares__search_name_list(const ares_channel_t *channel,
- const char *name, char ***names,
- size_t *names_len);
+ares_status_t ares_search_name_list(const ares_channel_t *channel,
+ const char *name, char ***names,
+ size_t *names_len);
/*! Function to create callback arg for converting from ares_callback_dnsrec
* to ares_calback */
-void *ares__dnsrec_convert_arg(ares_callback callback, void *arg);
+void *ares_dnsrec_convert_arg(ares_callback callback, void *arg);
/*! Callback function used to convert from the ares_callback_dnsrec prototype to
* the ares_callback prototype, by writing the result and passing that to
* the inner callback.
*/
-void ares__dnsrec_convert_cb(void *arg, ares_status_t status, size_t timeouts,
- const ares_dns_record_t *dnsrec);
-
-void ares__close_connection(ares_conn_t *conn, ares_status_t requeue_status);
-void ares__close_sockets(ares_server_t *server);
-void ares__check_cleanup_conns(const ares_channel_t *channel);
-void ares__free_query(ares_query_t *query);
-
-ares_rand_state *ares__init_rand_state(void);
-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);
-void ares__tvnow(ares_timeval_t *now);
-void ares__timeval_remaining(ares_timeval_t *remaining,
- const ares_timeval_t *now,
- const ares_timeval_t *tout);
-void ares__timeval_diff(ares_timeval_t *tvdiff, const ares_timeval_t *tvstart,
- const ares_timeval_t *tvstop);
-ares_status_t ares__expand_name_validated(const unsigned char *encoded,
- const unsigned char *abuf,
- size_t alen, char **s, size_t *enclen,
+void ares_dnsrec_convert_cb(void *arg, ares_status_t status, size_t timeouts,
+ const ares_dns_record_t *dnsrec);
+
+void ares_free_query(ares_query_t *query);
+
+unsigned short ares_generate_new_id(ares_rand_state *state);
+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_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_t *channel);
-ares_status_t ares__init_by_options(ares_channel_t *channel,
+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_t *channel);
+ares_status_t ares_init_by_options(ares_channel_t *channel,
const struct ares_options *options,
int optmask);
-ares_status_t ares__init_by_sysconfig(ares_channel_t *channel);
+ares_status_t ares_init_by_sysconfig(ares_channel_t *channel);
+void ares_set_socket_functions_def(ares_channel_t *channel);
typedef struct {
- ares__llist_t *sconfig;
+ ares_llist_t *sconfig;
struct apattern *sortlist;
size_t nsortlist;
char **domains;
@@ -540,131 +383,108 @@ typedef struct {
ares_bool_t usevc;
} ares_sysconfig_t;
-ares_status_t ares__sysconfig_set_options(ares_sysconfig_t *sysconfig,
- const char *str);
+ares_status_t ares_sysconfig_set_options(ares_sysconfig_t *sysconfig,
+ const char *str);
-ares_status_t ares__init_by_environment(ares_sysconfig_t *sysconfig);
+ares_status_t ares_init_by_environment(ares_sysconfig_t *sysconfig);
-ares_status_t ares__init_sysconfig_files(const ares_channel_t *channel,
- ares_sysconfig_t *sysconfig);
+ares_status_t ares_init_sysconfig_files(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig);
#ifdef __APPLE__
-ares_status_t ares__init_sysconfig_macos(ares_sysconfig_t *sysconfig);
+ares_status_t ares_init_sysconfig_macos(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig);
#endif
#ifdef USE_WINSOCK
-ares_status_t ares__init_sysconfig_windows(ares_sysconfig_t *sysconfig);
+ares_status_t ares_init_sysconfig_windows(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig);
#endif
-ares_status_t ares__parse_sortlist(struct apattern **sortlist, size_t *nsort,
- const char *str);
-
-void ares__destroy_servers_state(ares_channel_t *channel);
+ares_status_t ares_parse_sortlist(struct apattern **sortlist, size_t *nsort,
+ const char *str);
/* Returns ARES_SUCCESS if alias found, alias is set. Returns ARES_ENOTFOUND
* if not alias found. Returns other errors on critical failure like
* ARES_ENOMEM */
-ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
- const char *name, char **alias);
+ares_status_t ares_lookup_hostaliases(const ares_channel_t *channel,
+ const char *name, char **alias);
-ares_status_t ares__cat_domain(const char *name, const char *domain, char **s);
-ares_status_t ares__sortaddrinfo(ares_channel_t *channel,
- struct ares_addrinfo_node *ai_node);
+ares_status_t ares_cat_domain(const char *name, const char *domain, char **s);
+ares_status_t ares_sortaddrinfo(ares_channel_t *channel,
+ struct ares_addrinfo_node *ai_node);
-void ares__freeaddrinfo_nodes(struct ares_addrinfo_node *ai_node);
-ares_bool_t ares__is_localhost(const char *name);
+void ares_freeaddrinfo_nodes(struct ares_addrinfo_node *ai_node);
+ares_bool_t ares_is_localhost(const char *name);
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);
+ 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);
-void ares__freeaddrinfo_cnames(struct ares_addrinfo_cname *ai_cname);
+void ares_freeaddrinfo_cnames(struct ares_addrinfo_cname *ai_cname);
-struct ares_addrinfo_cname *
- ares__append_addrinfo_cname(struct ares_addrinfo_cname **ai_cname);
+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);
+void ares_addrinfo_cat_cnames(struct ares_addrinfo_cname **head,
+ struct ares_addrinfo_cname *tail);
-ares_status_t ares__parse_into_addrinfo(const ares_dns_record_t *dnsrec,
- ares_bool_t cname_only_is_enodata,
- unsigned short port,
- struct ares_addrinfo *ai);
+ares_status_t ares_parse_into_addrinfo(const ares_dns_record_t *dnsrec,
+ ares_bool_t cname_only_is_enodata,
+ unsigned short port,
+ struct ares_addrinfo *ai);
ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec,
const void *addr, int addrlen,
int family, struct hostent **host);
-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_status_t ares__open_connection(ares_conn_t **conn_out,
- ares_channel_t *channel,
- ares_server_t *server, ares_bool_t is_tcp);
-ares_bool_t ares_sockaddr_to_ares_addr(struct ares_addr *ares_addr,
- unsigned short *port,
- const struct sockaddr *sockaddr);
-ares_socket_t ares__open_socket(ares_channel_t *channel, int af, int type,
- int protocol);
-ares_bool_t ares__socket_try_again(int errnum);
-ares_ssize_t ares__conn_write(ares_conn_t *conn, const void *data, size_t len);
-ares_ssize_t ares__socket_recvfrom(ares_channel_t *channel, ares_socket_t s,
- void *data, size_t data_len, int flags,
- struct sockaddr *from,
- ares_socklen_t *from_len);
-ares_ssize_t ares__socket_recv(ares_channel_t *channel, ares_socket_t s,
- void *data, size_t data_len);
-void ares__close_socket(ares_channel_t *channel, ares_socket_t s);
-ares_status_t ares__connect_socket(ares_channel_t *channel,
- ares_socket_t sockfd,
- const struct sockaddr *addr,
- ares_socklen_t addrlen);
-void ares__destroy_server(ares_server_t *server);
-
-ares_status_t ares__servers_update(ares_channel_t *channel,
- ares__llist_t *server_list,
- ares_bool_t user_specified);
-ares_status_t ares__sconfig_append(ares__llist_t **sconfig,
- const struct ares_addr *addr,
- unsigned short udp_port,
- unsigned short tcp_port,
- const char *ll_iface);
-ares_status_t ares__sconfig_append_fromstr(ares__llist_t **sconfig,
- const char *str,
- ares_bool_t ignore_invalid);
-ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
- size_t nservers,
- ares__llist_t **llist);
+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_status_t ares_servers_update(ares_channel_t *channel,
+ ares_llist_t *server_list,
+ ares_bool_t user_specified);
+ares_status_t
+ ares_sconfig_append(const ares_channel_t *channel, ares_llist_t **sconfig,
+ const struct ares_addr *addr, unsigned short udp_port,
+ unsigned short tcp_port, const char *ll_iface);
+ares_status_t ares_sconfig_append_fromstr(const ares_channel_t *channel,
+ ares_llist_t **sconfig,
+ const char *str,
+ ares_bool_t ignore_invalid);
+ares_status_t ares_in_addr_to_sconfig_llist(const struct in_addr *servers,
+ size_t nservers,
+ ares_llist_t **llist);
ares_status_t ares_get_server_addr(const ares_server_t *server,
- ares__buf_t *buf);
+ ares_buf_t *buf);
struct ares_hosts_entry;
typedef struct ares_hosts_entry ares_hosts_entry_t;
-void ares__hosts_file_destroy(ares_hosts_file_t *hf);
-ares_status_t ares__hosts_search_ipaddr(ares_channel_t *channel,
- ares_bool_t use_env, const char *ipaddr,
- const ares_hosts_entry_t **entry);
-ares_status_t ares__hosts_search_host(ares_channel_t *channel,
- ares_bool_t use_env, const char *host,
- const ares_hosts_entry_t **entry);
-ares_status_t ares__hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
- int family,
- struct hostent **hostent);
-ares_status_t ares__hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
- const char *name, int family,
- unsigned short port,
- ares_bool_t want_cnames,
- struct ares_addrinfo *ai);
+void ares_hosts_file_destroy(ares_hosts_file_t *hf);
+ares_status_t ares_hosts_search_ipaddr(ares_channel_t *channel,
+ ares_bool_t use_env, const char *ipaddr,
+ const ares_hosts_entry_t **entry);
+ares_status_t ares_hosts_search_host(ares_channel_t *channel,
+ ares_bool_t use_env, const char *host,
+ const ares_hosts_entry_t **entry);
+ares_status_t ares_hosts_entry_to_hostent(const ares_hosts_entry_t *entry,
+ int family, struct hostent **hostent);
+ares_status_t ares_hosts_entry_to_addrinfo(const ares_hosts_entry_t *entry,
+ const char *name, int family,
+ unsigned short port,
+ ares_bool_t want_cnames,
+ struct ares_addrinfo *ai);
/* Same as ares_query_dnsrec() except does not take a channel lock. Use this
* if a channel lock is already held */
@@ -674,9 +494,17 @@ ares_status_t ares_query_nolock(ares_channel_t *channel, const char *name,
ares_callback_dnsrec callback, void *arg,
unsigned short *qid);
-/* Same as ares_send_dnsrec() except does not take a channel lock. Use this
- * if a channel lock is already held */
-ares_status_t ares_send_nolock(ares_channel_t *channel,
+/*! Flags controlling behavior for ares_send_nolock() */
+typedef enum {
+ ARES_SEND_FLAG_NOCACHE = 1 << 0, /*!< Do not query the cache */
+ ARES_SEND_FLAG_NORETRY = 1 << 1 /*!< Do not retry this query on error */
+} ares_send_flags_t;
+
+/* Similar to ares_send_dnsrec() except does not take a channel lock, allows
+ * specifying a particular server to use, and also flags controlling behavior.
+ */
+ares_status_t ares_send_nolock(ares_channel_t *channel, ares_server_t *server,
+ ares_send_flags_t flags,
const ares_dns_record_t *dnsrec,
ares_callback_dnsrec callback, void *arg,
unsigned short *qid);
@@ -691,7 +519,7 @@ void ares_gethostbyaddr_nolock(ares_channel_t *channel, const void *addr,
* 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.
+ * 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
@@ -701,8 +529,8 @@ void ares_gethostbyaddr_nolock(ares_channel_t *channel, const void *addr,
* a valid hostname or will return error.
* \return ARES_SUCCESS on success
*/
-ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
- ares_bool_t is_hostname);
+ares_status_t ares_dns_name_parse(ares_buf_t *buf, char **name,
+ ares_bool_t is_hostname);
/*! Write the DNS name to the buffer in the DNS domain-name syntax as a
* series of labels. The maximum domain name length is 255 characters with
@@ -721,9 +549,9 @@ ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
* \return ARES_SUCCESS on success, most likely ARES_EBADNAME if the name is
* bad.
*/
-ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
- ares_bool_t validate_hostname,
- const char *name);
+ares_status_t ares_dns_name_write(ares_buf_t *buf, ares_llist_t **list,
+ ares_bool_t validate_hostname,
+ const char *name);
/*! Check if the queue is empty, if so, wake any waiters. This is only
* effective if built with threading support.
@@ -734,35 +562,20 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
*/
void ares_queue_notify_empty(ares_channel_t *channel);
-
-#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)
-
-#define ARES_CONFIG_CHECK(x) \
- (x && x->lookups && ares__slist_len(x->servers) > 0 && x->timeout > 0 && \
+#define ARES_CONFIG_CHECK(x) \
+ (x && x->lookups && ares_slist_len(x->servers) > 0 && x->timeout > 0 && \
x->tries > 0)
-ares_bool_t ares__subnet_match(const struct ares_addr *addr,
- const struct ares_addr *subnet,
- unsigned char netmask);
-ares_bool_t ares__addr_is_linklocal(const struct ares_addr *addr);
-
-ares_bool_t ares__is_64bit(void);
-size_t ares__round_up_pow2(size_t n);
-size_t ares__log2(size_t n);
-size_t ares__pow(size_t x, size_t y);
-size_t ares__count_digits(size_t n);
-size_t ares__count_hexdigits(size_t n);
-unsigned char ares__count_bits_u8(unsigned char x);
-void ares__qcache_destroy(ares__qcache_t *cache);
-ares_status_t ares__qcache_create(ares_rand_state *rand_state,
- unsigned int max_ttl,
- ares__qcache_t **cache_out);
-void ares__qcache_flush(ares__qcache_t *cache);
+ares_bool_t ares_subnet_match(const struct ares_addr *addr,
+ const struct ares_addr *subnet,
+ unsigned char netmask);
+ares_bool_t ares_addr_is_linklocal(const struct ares_addr *addr);
+
+void ares_qcache_destroy(ares_qcache_t *cache);
+ares_status_t ares_qcache_create(ares_rand_state *rand_state,
+ unsigned int max_ttl,
+ ares_qcache_t **cache_out);
+void ares_qcache_flush(ares_qcache_t *cache);
ares_status_t ares_qcache_insert(ares_channel_t *channel,
const ares_timeval_t *now,
const ares_query_t *query,
@@ -784,10 +597,10 @@ ares_status_t ares_cookie_validate(ares_query_t *query,
ares_conn_t *conn,
const ares_timeval_t *now);
-ares_status_t ares__channel_threading_init(ares_channel_t *channel);
-void ares__channel_threading_destroy(ares_channel_t *channel);
-void ares__channel_lock(const ares_channel_t *channel);
-void ares__channel_unlock(const ares_channel_t *channel);
+ares_status_t ares_channel_threading_init(ares_channel_t *channel);
+void ares_channel_threading_destroy(ares_channel_t *channel);
+void ares_channel_lock(const ares_channel_t *channel);
+void ares_channel_unlock(const ares_channel_t *channel);
struct ares_event_thread;
typedef struct ares_event_thread ares_event_thread_t;
diff --git a/contrib/libs/c-ares/src/lib/ares_process.c b/contrib/libs/c-ares/src/lib/ares_process.c
index f05f67d8f2..62a6ae1dda 100644
--- a/contrib/libs/c-ares/src/lib/ares_process.c
+++ b/contrib/libs/c-ares/src/lib/ares_process.c
@@ -46,32 +46,30 @@
static void timeadd(ares_timeval_t *now, size_t millisecs);
-static void write_tcp_data(ares_channel_t *channel, fd_set *write_fds,
- ares_socket_t write_fd);
-static void read_packets(ares_channel_t *channel, fd_set *read_fds,
- ares_socket_t read_fd, const ares_timeval_t *now);
-static void process_timeouts(ares_channel_t *channel,
+static ares_status_t process_write(ares_channel_t *channel,
+ ares_socket_t write_fd);
+static ares_status_t process_read(ares_channel_t *channel,
+ ares_socket_t read_fd,
+ const ares_timeval_t *now);
+static ares_status_t process_timeouts(ares_channel_t *channel,
const ares_timeval_t *now);
static ares_status_t process_answer(ares_channel_t *channel,
const unsigned char *abuf, size_t alen,
- ares_conn_t *conn, ares_bool_t tcp,
+ ares_conn_t *conn,
const ares_timeval_t *now);
static void handle_conn_error(ares_conn_t *conn, ares_bool_t critical_failure,
ares_status_t failure_status);
-
static ares_bool_t same_questions(const ares_query_t *query,
const ares_dns_record_t *arec);
-static ares_bool_t same_address(const struct sockaddr *sa,
- const struct ares_addr *aa);
static void end_query(ares_channel_t *channel, ares_server_t *server,
ares_query_t *query, ares_status_t status,
const ares_dns_record_t *dnsrec);
-static void ares__query_disassociate_from_conn(ares_query_t *query)
+static void ares_query_remove_from_conn(ares_query_t *query)
{
/* If its not part of a connection, it can't be tracked for timeouts either */
- ares__slist_node_destroy(query->node_queries_by_timeout);
- ares__llist_node_destroy(query->node_queries_to_conn);
+ ares_slist_node_destroy(query->node_queries_by_timeout);
+ ares_llist_node_destroy(query->node_queries_to_conn);
query->node_queries_by_timeout = NULL;
query->node_queries_to_conn = NULL;
query->conn = NULL;
@@ -82,7 +80,7 @@ static void invoke_server_state_cb(const ares_server_t *server,
ares_bool_t success, int flags)
{
const ares_channel_t *channel = server->channel;
- ares__buf_t *buf;
+ ares_buf_t *buf;
ares_status_t status;
char *server_string;
@@ -90,18 +88,18 @@ static void invoke_server_state_cb(const ares_server_t *server,
return;
}
- buf = ares__buf_create();
+ buf = ares_buf_create();
if (buf == NULL) {
return; /* LCOV_EXCL_LINE: OutOfMemory */
}
status = ares_get_server_addr(server, buf);
if (status != ARES_SUCCESS) {
- ares__buf_destroy(buf); /* LCOV_EXCL_LINE: OutOfMemory */
- return; /* LCOV_EXCL_LINE: OutOfMemory */
+ ares_buf_destroy(buf); /* LCOV_EXCL_LINE: OutOfMemory */
+ return; /* LCOV_EXCL_LINE: OutOfMemory */
}
- server_string = ares__buf_finish_str(buf, NULL);
+ server_string = ares_buf_finish_str(buf, NULL);
buf = NULL;
if (server_string == NULL) {
return; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -115,19 +113,19 @@ static void invoke_server_state_cb(const ares_server_t *server,
static void server_increment_failures(ares_server_t *server,
ares_bool_t used_tcp)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
const ares_channel_t *channel = server->channel;
ares_timeval_t next_retry_time;
- node = ares__slist_node_find(channel->servers, server);
+ node = ares_slist_node_find(channel->servers, server);
if (node == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
server->consec_failures++;
- ares__slist_node_reinsert(node);
+ ares_slist_node_reinsert(node);
- ares__tvnow(&next_retry_time);
+ ares_tvnow(&next_retry_time);
timeadd(&next_retry_time, channel->server_retry_delay);
server->next_retry_time = next_retry_time;
@@ -138,17 +136,17 @@ static void server_increment_failures(ares_server_t *server,
static void server_set_good(ares_server_t *server, ares_bool_t used_tcp)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
const ares_channel_t *channel = server->channel;
- node = ares__slist_node_find(channel->servers, server);
+ node = ares_slist_node_find(channel->servers, server);
if (node == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
if (server->consec_failures > 0) {
server->consec_failures = 0;
- ares__slist_node_reinsert(node);
+ ares_slist_node_reinsert(node);
}
server->next_retry_time.sec = 0;
@@ -160,8 +158,8 @@ static void server_set_good(ares_server_t *server, ares_bool_t used_tcp)
}
/* return true if now is exactly check time or later */
-ares_bool_t ares__timedout(const ares_timeval_t *now,
- const ares_timeval_t *check)
+ares_bool_t ares_timedout(const ares_timeval_t *now,
+ const ares_timeval_t *check)
{
ares_int64_t secs = (now->sec - check->sec);
@@ -190,380 +188,422 @@ static void timeadd(ares_timeval_t *now, size_t millisecs)
}
}
-/*
- * generic process function
- */
-static void processfds(ares_channel_t *channel, fd_set *read_fds,
- ares_socket_t read_fd, fd_set *write_fds,
- ares_socket_t write_fd)
+static ares_status_t ares_process_fds_nolock(ares_channel_t *channel,
+ const ares_fd_events_t *events,
+ size_t nevents, unsigned int flags)
{
ares_timeval_t now;
+ size_t i;
+ ares_status_t status = ARES_SUCCESS;
- if (channel == NULL) {
- return; /* LCOV_EXCL_LINE: DefensiveCoding */
+ if (channel == NULL || (events == NULL && nevents != 0)) {
+ return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__channel_lock(channel);
+ ares_tvnow(&now);
+
+ /* Process write events */
+ for (i = 0; i < nevents; i++) {
+ if (events[i].fd == ARES_SOCKET_BAD ||
+ !(events[i].events & ARES_FD_EVENT_WRITE)) {
+ continue;
+ }
+ status = process_write(channel, events[i].fd);
+ /* We only care about ENOMEM, anything else is handled via connection
+ * retries, etc */
+ if (status == ARES_ENOMEM) {
+ goto done;
+ }
+ }
- ares__tvnow(&now);
- read_packets(channel, read_fds, read_fd, &now);
- process_timeouts(channel, &now);
- /* Write last as the other 2 operations might have triggered writes */
- write_tcp_data(channel, write_fds, write_fd);
+ /* Process read events */
+ for (i = 0; i < nevents; i++) {
+ if (events[i].fd == ARES_SOCKET_BAD ||
+ !(events[i].events & ARES_FD_EVENT_READ)) {
+ continue;
+ }
+ status = process_read(channel, events[i].fd, &now);
+ if (status == ARES_ENOMEM) {
+ goto done;
+ }
+ }
+
+ if (!(flags & ARES_PROCESS_FLAG_SKIP_NON_FD)) {
+ ares_check_cleanup_conns(channel);
+ status = process_timeouts(channel, &now);
+ if (status == ARES_ENOMEM) {
+ goto done;
+ }
+ }
- /* See if any connections should be cleaned up */
- ares__check_cleanup_conns(channel);
- ares__channel_unlock(channel);
+done:
+ if (status == ARES_ENOMEM) {
+ return ARES_ENOMEM;
+ }
+ return ARES_SUCCESS;
}
-/* Something interesting happened on the wire, or there was a timeout.
- * See what's up and respond accordingly.
- */
-void ares_process(ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds)
+ares_status_t ares_process_fds(ares_channel_t *channel,
+ const ares_fd_events_t *events, size_t nevents,
+ unsigned int flags)
{
- processfds(channel, read_fds, ARES_SOCKET_BAD, write_fds, ARES_SOCKET_BAD);
+ ares_status_t status;
+
+ if (channel == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ ares_channel_lock(channel);
+ status = ares_process_fds_nolock(channel, events, nevents, flags);
+ ares_channel_unlock(channel);
+ return status;
}
-/* Something interesting happened on the wire, or there was a timeout.
- * See what's up and respond accordingly.
- */
-void ares_process_fd(ares_channel_t *channel,
- ares_socket_t read_fd, /* use ARES_SOCKET_BAD or valid
- file descriptors */
- ares_socket_t write_fd)
+void ares_process_fd(ares_channel_t *channel, ares_socket_t read_fd,
+ ares_socket_t write_fd)
{
- processfds(channel, NULL, read_fd, NULL, write_fd);
+ ares_fd_events_t events[2];
+ size_t nevents = 0;
+
+ memset(events, 0, sizeof(events));
+
+ if (read_fd != ARES_SOCKET_BAD) {
+ nevents++;
+ events[nevents - 1].fd = read_fd;
+ events[nevents - 1].events |= ARES_FD_EVENT_READ;
+ }
+
+ if (write_fd != ARES_SOCKET_BAD) {
+ if (write_fd != read_fd) {
+ nevents++;
+ }
+ events[nevents - 1].fd = write_fd;
+ events[nevents - 1].events |= ARES_FD_EVENT_WRITE;
+ }
+
+ ares_process_fds(channel, events, nevents, ARES_PROCESS_FLAG_NONE);
}
-/* If any TCP sockets select true for writing, write out queued data
- * we have for them.
- */
-static void write_tcp_data(ares_channel_t *channel, fd_set *write_fds,
- ares_socket_t write_fd)
+static ares_socket_t *channel_socket_list(const ares_channel_t *channel,
+ size_t *num)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *snode;
+ ares_array_t *arr = ares_array_create(sizeof(ares_socket_t), NULL);
- if (!write_fds && (write_fd == ARES_SOCKET_BAD)) {
- /* no possible action */
- return;
+ *num = 0;
+
+ if (arr == NULL) {
+ return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
}
- for (node = ares__slist_node_first(channel->servers); node != NULL;
- node = ares__slist_node_next(node)) {
- ares_server_t *server = ares__slist_node_val(node);
- const unsigned char *data;
- size_t data_len;
- ares_ssize_t count;
+ for (snode = ares_slist_node_first(channel->servers); snode != NULL;
+ snode = ares_slist_node_next(snode)) {
+ ares_server_t *server = ares_slist_node_val(snode);
+ ares_llist_node_t *node;
- /* Make sure server has data to send and is selected in write_fds or
- write_fd. */
- if (ares__buf_len(server->tcp_send) == 0 || server->tcp_conn == NULL) {
- continue;
- }
+ for (node = ares_llist_node_first(server->connections); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const ares_conn_t *conn = ares_llist_node_val(node);
+ ares_socket_t *sptr;
+ ares_status_t status;
- if (write_fds) {
- if (!FD_ISSET(server->tcp_conn->fd, write_fds)) {
- continue;
- }
- } else {
- if (server->tcp_conn->fd != write_fd) {
+ if (conn->fd == ARES_SOCKET_BAD) {
continue;
}
- }
- if (write_fds) {
- /* If there's an error and we close this socket, then open
- * another with the same fd to talk to another server, then we
- * don't want to think that it was the new socket that was
- * ready. This is not disastrous, but is likely to result in
- * extra system calls and confusion. */
- FD_CLR(server->tcp_conn->fd, write_fds);
- }
-
- data = ares__buf_peek(server->tcp_send, &data_len);
- count = ares__conn_write(server->tcp_conn, data, data_len);
- if (count <= 0) {
- if (!ares__socket_try_again(SOCKERRNO)) {
- handle_conn_error(server->tcp_conn, ARES_TRUE, ARES_ECONNREFUSED);
+ status = ares_array_insert_last((void **)&sptr, arr);
+ if (status != ARES_SUCCESS) {
+ ares_array_destroy(arr); /* LCOV_EXCL_LINE: OutOfMemory */
+ return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
}
- continue;
- }
-
- /* Strip data written from the buffer */
- ares__buf_consume(server->tcp_send, (size_t)count);
-
- /* Notify state callback all data is written */
- if (ares__buf_len(server->tcp_send) == 0) {
- SOCK_STATE_CALLBACK(channel, server->tcp_conn->fd, 1, 0);
+ *sptr = conn->fd;
}
}
+
+ return ares_array_finish(arr, num);
}
-/* 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.
+/* Something interesting happened on the wire, or there was a timeout.
+ * See what's up and respond accordingly.
*/
-static void read_tcp_data(ares_channel_t *channel, ares_conn_t *conn,
- const ares_timeval_t *now)
+void ares_process(ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds)
{
- ares_ssize_t count;
- ares_server_t *server = conn->server;
-
- /* Fetch buffer to store data we are reading */
- size_t ptr_len = 65535;
- unsigned char *ptr;
-
- ptr = ares__buf_append_start(server->tcp_parser, &ptr_len);
-
- if (ptr == NULL) {
- handle_conn_error(conn, ARES_FALSE /* not critical to connection */,
- ARES_SUCCESS);
- return; /* bail out on malloc failure. TODO: make this
- function return error codes */
- }
+ size_t i;
+ size_t num_sockets;
+ ares_socket_t *socketlist;
+ ares_fd_events_t *events = NULL;
+ size_t nevents = 0;
- /* Read from socket */
- count = ares__socket_recv(channel, conn->fd, ptr, ptr_len);
- if (count <= 0) {
- ares__buf_append_finish(server->tcp_parser, 0);
- if (!(count == -1 && ares__socket_try_again(SOCKERRNO))) {
- handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED);
- }
+ if (channel == NULL) {
return;
}
- /* Record amount of data read */
- 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;
- ares_status_t status;
+ ares_channel_lock(channel);
- /* Tag so we can roll back */
- ares__buf_tag(server->tcp_parser);
+ /* 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);
- /* Read length indicator */
- if (ares__buf_fetch_be16(server->tcp_parser, &dns_len) != ARES_SUCCESS) {
- ares__buf_tag_rollback(server->tcp_parser);
- break;
+ /* Lets create an events array, maximum number is the number of sockets in
+ * the list, so we'll use that and just track entries with nevents */
+ if (num_sockets) {
+ events = ares_malloc_zero(sizeof(*events) * num_sockets);
+ if (events == NULL) {
+ goto done;
}
+ }
- /* Not enough data for a full response yet */
- if (ares__buf_consume(server->tcp_parser, dns_len) != ARES_SUCCESS) {
- ares__buf_tag_rollback(server->tcp_parser);
- break;
+ for (i = 0; i < num_sockets; i++) {
+ ares_bool_t had_read = ARES_FALSE;
+ if (read_fds && FD_ISSET(socketlist[i], read_fds)) {
+ nevents++;
+ events[nevents - 1].fd = socketlist[i];
+ events[nevents - 1].events |= ARES_FD_EVENT_READ;
+ had_read = ARES_TRUE;
}
-
- /* Can't fail except for misuse */
- data = ares__buf_tag_fetch(server->tcp_parser, &data_len);
- if (data == NULL || data_len < 2) {
- ares__buf_tag_clear(server->tcp_parser);
- break;
+ if (write_fds && FD_ISSET(socketlist[i], write_fds)) {
+ if (!had_read) {
+ nevents++;
+ }
+ events[nevents - 1].fd = socketlist[i];
+ events[nevents - 1].events |= ARES_FD_EVENT_WRITE;
}
+ }
- /* Strip off 2 bytes length */
- data += 2;
- data_len -= 2;
+done:
+ ares_process_fds_nolock(channel, events, nevents, ARES_PROCESS_FLAG_NONE);
+ ares_free(events);
+ ares_free(socketlist);
+ ares_channel_unlock(channel);
+}
- /* We finished reading this answer; process it */
- status = process_answer(channel, data, data_len, conn, ARES_TRUE, now);
- if (status != ARES_SUCCESS) {
- handle_conn_error(conn, ARES_TRUE, status);
- return;
- }
+static ares_status_t process_write(ares_channel_t *channel,
+ ares_socket_t write_fd)
+{
+ ares_conn_t *conn = ares_conn_from_fd(channel, write_fd);
+ ares_status_t status;
- /* Since we processed the answer, clear the tag so space can be reclaimed */
- ares__buf_tag_clear(server->tcp_parser);
+ if (conn == NULL) {
+ return ARES_SUCCESS;
+ }
+
+ /* Mark as connected if we got here and TFO Initial not set */
+ if (!(conn->flags & ARES_CONN_FLAG_TFO_INITIAL)) {
+ conn->state_flags |= ARES_CONN_STATE_CONNECTED;
+ }
+
+ status = ares_conn_flush(conn);
+ if (status != ARES_SUCCESS) {
+ handle_conn_error(conn, ARES_TRUE, status);
}
+ return status;
}
-static ares_socket_t *channel_socket_list(const ares_channel_t *channel,
- size_t *num)
+void ares_process_pending_write(ares_channel_t *channel)
{
- ares__slist_node_t *snode;
- ares__array_t *arr = ares__array_create(sizeof(ares_socket_t), NULL);
+ ares_slist_node_t *node;
- *num = 0;
+ if (channel == NULL) {
+ return;
+ }
- if (arr == NULL) {
- return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
+ ares_channel_lock(channel);
+ if (!channel->notify_pending_write) {
+ ares_channel_unlock(channel);
+ return;
}
- for (snode = ares__slist_node_first(channel->servers); snode != NULL;
- snode = ares__slist_node_next(snode)) {
- ares_server_t *server = ares__slist_node_val(snode);
- ares__llist_node_t *node;
+ /* Set as untriggerd before calling into ares_conn_flush(), this is
+ * because its possible ares_conn_flush() might cause additional data to
+ * be enqueued if there is some form of exception so it will need to recurse.
+ */
+ channel->notify_pending_write = ARES_FALSE;
- for (node = ares__llist_node_first(server->connections); node != NULL;
- node = ares__llist_node_next(node)) {
- const ares_conn_t *conn = ares__llist_node_val(node);
- ares_socket_t *sptr;
- ares_status_t status;
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
+ ares_server_t *server = ares_slist_node_val(node);
+ ares_conn_t *conn = server->tcp_conn;
+ ares_status_t status;
- if (conn->fd == ARES_SOCKET_BAD) {
- continue;
- }
+ if (conn == NULL) {
+ continue;
+ }
- status = ares__array_insert_last((void **)&sptr, arr);
- if (status != ARES_SUCCESS) {
- ares__array_destroy(arr); /* LCOV_EXCL_LINE: OutOfMemory */
- return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
- }
- *sptr = conn->fd;
+ /* Enqueue any pending data if there is any */
+ status = ares_conn_flush(conn);
+ if (status != ARES_SUCCESS) {
+ handle_conn_error(conn, ARES_TRUE, status);
}
}
- return ares__array_finish(arr, num);
+ ares_channel_unlock(channel);
}
-/* If any UDP sockets select true for reading, process them. */
-static void read_udp_packets_fd(ares_channel_t *channel, ares_conn_t *conn,
- const ares_timeval_t *now)
+static ares_status_t read_conn_packets(ares_conn_t *conn)
{
- ares_ssize_t read_len;
- unsigned char buf[MAXENDSSZ + 1];
+ ares_bool_t read_again;
+ ares_conn_err_t err;
+ const ares_channel_t *channel = conn->server->channel;
-#ifdef HAVE_RECVFROM
- ares_socklen_t fromlen;
+ do {
+ size_t count;
+ size_t len = 65535;
+ unsigned char *ptr;
+ size_t start_len = ares_buf_len(conn->in_buf);
+
+ /* If UDP, lets write out a placeholder for the length indicator */
+ if (!(conn->flags & ARES_CONN_FLAG_TCP) &&
+ ares_buf_append_be16(conn->in_buf, 0) != ARES_SUCCESS) {
+ handle_conn_error(conn, ARES_FALSE /* not critical to connection */,
+ ARES_SUCCESS);
+ return ARES_ENOMEM;
+ }
- union {
- struct sockaddr sa;
- struct sockaddr_in sa4;
- struct sockaddr_in6 sa6;
- } from;
+ /* Get a buffer of sufficient size */
+ ptr = ares_buf_append_start(conn->in_buf, &len);
- memset(&from, 0, sizeof(from));
-#endif
-
- /* To reduce event loop overhead, read and process as many
- * packets as we can. */
- do {
- if (conn->fd == ARES_SOCKET_BAD) {
- read_len = -1;
- } else {
- if (conn->server->addr.family == AF_INET) {
- fromlen = sizeof(from.sa4);
- } else {
- fromlen = sizeof(from.sa6);
- }
- read_len = ares__socket_recvfrom(channel, conn->fd, (void *)buf,
- sizeof(buf), 0, &from.sa, &fromlen);
+ if (ptr == NULL) {
+ handle_conn_error(conn, ARES_FALSE /* not critical to connection */,
+ ARES_SUCCESS);
+ return ARES_ENOMEM;
}
- if (read_len == 0) {
- /* UDP is connectionless, so result code of 0 is a 0-length UDP
- * packet, and not an indication the connection is closed like on
- * tcp */
- continue;
- } else if (read_len < 0) {
- if (ares__socket_try_again(SOCKERRNO)) {
- break;
+ /* Read from socket */
+ err = ares_conn_read(conn, ptr, len, &count);
+
+ if (err != ARES_CONN_ERR_SUCCESS) {
+ ares_buf_append_finish(conn->in_buf, 0);
+ if (!(conn->flags & ARES_CONN_FLAG_TCP)) {
+ ares_buf_set_length(conn->in_buf, start_len);
}
+ break;
+ }
- handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED);
- return;
-#ifdef HAVE_RECVFROM
- } else if (!same_address(&from.sa, &conn->server->addr)) {
- /* The address the response comes from does not match the address we
- * sent the request to. Someone may be attempting to perform a cache
- * poisoning attack. */
- continue;
-#endif
+ /* Record amount of data read */
+ ares_buf_append_finish(conn->in_buf, count);
- } else {
- process_answer(channel, buf, (size_t)read_len, conn, ARES_FALSE, now);
+ /* Only loop if sockets support non-blocking operation, and are using UDP
+ * or are using TCP and read the maximum buffer size */
+ read_again = ARES_FALSE;
+ if (channel->sock_funcs.flags & ARES_SOCKFUNC_FLAG_NONBLOCKING &&
+ (!(conn->flags & ARES_CONN_FLAG_TCP) || count == len)) {
+ read_again = ARES_TRUE;
}
+ /* If UDP, overwrite length */
+ if (!(conn->flags & ARES_CONN_FLAG_TCP)) {
+ len = ares_buf_len(conn->in_buf);
+ ares_buf_set_length(conn->in_buf, start_len);
+ ares_buf_append_be16(conn->in_buf, (unsigned short)count);
+ ares_buf_set_length(conn->in_buf, len);
+ }
/* Try to read again only if *we* set up the socket, otherwise it may be
* a blocking socket and would cause recvfrom to hang. */
- } while (read_len >= 0 && channel->sock_funcs == NULL);
-}
+ } while (read_again);
-static void read_packets(ares_channel_t *channel, fd_set *read_fds,
- ares_socket_t read_fd, const ares_timeval_t *now)
-{
- size_t i;
- ares_socket_t *socketlist = NULL;
- size_t num_sockets = 0;
- ares_conn_t *conn = NULL;
- ares__llist_node_t *node = NULL;
-
- if (!read_fds && (read_fd == ARES_SOCKET_BAD)) {
- /* no possible action */
- return;
+ if (err != ARES_CONN_ERR_SUCCESS && err != ARES_CONN_ERR_WOULDBLOCK) {
+ handle_conn_error(conn, ARES_TRUE, ARES_ECONNREFUSED);
+ return ARES_ECONNREFUSED;
}
- /* Single socket specified */
- if (!read_fds) {
- node = ares__htable_asvp_get_direct(channel->connnode_by_socket, read_fd);
- if (node == NULL) {
- return;
- }
+ return ARES_SUCCESS;
+}
- conn = ares__llist_node_val(node);
+static ares_status_t read_answers(ares_conn_t *conn, const ares_timeval_t *now)
+{
+ ares_status_t status;
+ ares_channel_t *channel = conn->server->channel;
- if (conn->flags & ARES_CONN_FLAG_TCP) {
- read_tcp_data(channel, conn, now);
- } else {
- read_udp_packets_fd(channel, conn, now);
- }
+ /* Process all queued answers */
+ while (1) {
+ unsigned short dns_len = 0;
+ const unsigned char *data = NULL;
+ size_t data_len = 0;
- return;
- }
+ /* Tag so we can roll back */
+ ares_buf_tag(conn->in_buf);
- /* 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);
+ /* Read length indicator */
+ status = ares_buf_fetch_be16(conn->in_buf, &dns_len);
+ if (status != ARES_SUCCESS) {
+ ares_buf_tag_rollback(conn->in_buf);
+ break;
+ }
- for (i = 0; i < num_sockets; i++) {
- if (!FD_ISSET(socketlist[i], read_fds)) {
- continue;
+ /* Not enough data for a full response yet */
+ status = ares_buf_consume(conn->in_buf, dns_len);
+ if (status != ARES_SUCCESS) {
+ ares_buf_tag_rollback(conn->in_buf);
+ break;
}
- /* If there's an error and we close this socket, then open
- * another with the same fd to talk to another server, then we
- * don't want to think that it was the new socket that was
- * ready. This is not disastrous, but is likely to result in
- * extra system calls and confusion. */
- FD_CLR(socketlist[i], read_fds);
-
- node =
- ares__htable_asvp_get_direct(channel->connnode_by_socket, socketlist[i]);
- if (node == NULL) {
- return;
+ /* Can't fail except for misuse */
+ data = ares_buf_tag_fetch(conn->in_buf, &data_len);
+ if (data == NULL || data_len < 2) {
+ ares_buf_tag_clear(conn->in_buf);
+ break;
}
- conn = ares__llist_node_val(node);
+ /* Strip off 2 bytes length */
+ data += 2;
+ data_len -= 2;
- if (conn->flags & ARES_CONN_FLAG_TCP) {
- read_tcp_data(channel, conn, now);
- } else {
- read_udp_packets_fd(channel, conn, now);
+ /* We finished reading this answer; process it */
+ status = process_answer(channel, data, data_len, conn, now);
+ if (status != ARES_SUCCESS) {
+ handle_conn_error(conn, ARES_TRUE, status);
+ return status;
}
+
+ /* Since we processed the answer, clear the tag so space can be reclaimed */
+ ares_buf_tag_clear(conn->in_buf);
}
+ return status;
+}
- ares_free(socketlist);
+static ares_status_t process_read(ares_channel_t *channel,
+ ares_socket_t read_fd,
+ const ares_timeval_t *now)
+{
+ ares_conn_t *conn = ares_conn_from_fd(channel, read_fd);
+ ares_status_t status;
+
+ if (conn == NULL) {
+ return ARES_SUCCESS;
+ }
+
+ /* TODO: There might be a potential issue here where there was a read that
+ * read some data, then looped and read again and got a disconnect.
+ * Right now, that would cause a resend instead of processing the data
+ * we have. This is fairly unlikely to occur due to only looping if
+ * a full buffer of 65535 bytes was read. */
+ status = read_conn_packets(conn);
+
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ return read_answers(conn, now);
}
/* If any queries have timed out, note the timeout and move them on. */
-static void process_timeouts(ares_channel_t *channel, const ares_timeval_t *now)
+static ares_status_t process_timeouts(ares_channel_t *channel,
+ const ares_timeval_t *now)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
+ ares_status_t status = ARES_SUCCESS;
/* Just keep popping off the first as this list will re-sort as things come
* and go. We don't want to try to rely on 'next' as some operation might
* cause a cleanup of that pointer and would become invalid */
- while ((node = ares__slist_node_first(channel->queries_by_timeout)) != NULL) {
- ares_query_t *query = ares__slist_node_val(node);
+ while ((node = ares_slist_node_first(channel->queries_by_timeout)) != NULL) {
+ ares_query_t *query = ares_slist_node_val(node);
ares_conn_t *conn;
/* Since this is sorted, as soon as we hit a query that isn't timed out,
* break */
- if (!ares__timedout(now, &query->timeout)) {
+ if (!ares_timedout(now, &query->timeout)) {
break;
}
@@ -571,8 +611,16 @@ static void process_timeouts(ares_channel_t *channel, const ares_timeval_t *now)
conn = query->conn;
server_increment_failures(conn->server, query->using_tcp);
- ares__requeue_query(query, now, ARES_ETIMEOUT, ARES_TRUE, NULL);
+ status = ares_requeue_query(query, now, ARES_ETIMEOUT, ARES_TRUE, NULL);
+ if (status == ARES_ENOMEM) {
+ goto done;
+ }
}
+done:
+ if (status == ARES_ENOMEM) {
+ return ARES_ENOMEM;
+ }
+ return ARES_SUCCESS;
}
static ares_status_t rewrite_without_edns(ares_query_t *query)
@@ -607,17 +655,22 @@ done:
* the connection to be terminated after this call. */
static ares_status_t process_answer(ares_channel_t *channel,
const unsigned char *abuf, size_t alen,
- ares_conn_t *conn, ares_bool_t tcp,
+ ares_conn_t *conn,
const ares_timeval_t *now)
{
ares_query_t *query;
- /* Cache these as once ares__send_query() gets called, it may end up
+ /* Cache these as once ares_send_query() gets called, it may end up
* invalidating the connection all-together */
ares_server_t *server = conn->server;
ares_dns_record_t *rdnsrec = NULL;
ares_status_t status;
ares_bool_t is_cached = ARES_FALSE;
+ /* UDP can have 0-byte messages, drop them to the ground */
+ if (alen == 0) {
+ return ARES_SUCCESS;
+ }
+
/* Parse the response */
status = ares_dns_parse(abuf, alen, 0, &rdnsrec);
if (status != ARES_SUCCESS) {
@@ -629,8 +682,8 @@ static ares_status_t process_answer(ares_channel_t *channel,
/* Find the query corresponding to this packet. The queries are
* hashed/bucketed by query id, so this lookup should be quick.
*/
- query = ares__htable_szvp_get_direct(channel->queries_by_qid,
- ares_dns_record_get_id(rdnsrec));
+ query = ares_htable_szvp_get_direct(channel->queries_by_qid,
+ ares_dns_record_get_id(rdnsrec));
if (!query) {
/* We may have stopped listening for this query, that's ok */
status = ARES_SUCCESS;
@@ -657,7 +710,7 @@ static ares_status_t process_answer(ares_channel_t *channel,
* remove it from the connection's queue so we can possibly invalidate the
* connection. Delay cleaning up the connection though as we may enqueue
* something new. */
- ares__llist_node_destroy(query->node_queries_to_conn);
+ ares_llist_node_destroy(query->node_queries_to_conn);
query->node_queries_to_conn = NULL;
/* If we use EDNS and server answers with FORMERR without an OPT RR, the
@@ -672,7 +725,8 @@ static ares_status_t process_answer(ares_channel_t *channel,
goto cleanup;
}
- ares__send_query(query, now);
+ /* Send to same server */
+ ares_send_query(server, query, now);
status = ARES_SUCCESS;
goto cleanup;
}
@@ -681,10 +735,11 @@ static ares_status_t process_answer(ares_channel_t *channel,
* don't accept the packet, and switch the query to TCP if we hadn't
* done so already.
*/
- if (ares_dns_record_get_flags(rdnsrec) & ARES_FLAG_TC && !tcp &&
+ if (ares_dns_record_get_flags(rdnsrec) & ARES_FLAG_TC &&
+ !(conn->flags & ARES_CONN_FLAG_TCP) &&
!(channel->flags & ARES_FLAG_IGNTC)) {
query->using_tcp = ARES_TRUE;
- ares__send_query(query, now);
+ ares_send_query(NULL, query, now);
status = ARES_SUCCESS; /* Switched to TCP is ok */
goto cleanup;
}
@@ -711,7 +766,7 @@ static ares_status_t process_answer(ares_channel_t *channel,
}
server_increment_failures(server, query->using_tcp);
- ares__requeue_query(query, now, status, ARES_TRUE, rdnsrec);
+ ares_requeue_query(query, now, status, ARES_TRUE, rdnsrec);
/* Should any of these cause a connection termination?
* Maybe SERVER_FAILURE? */
@@ -753,19 +808,18 @@ static void handle_conn_error(ares_conn_t *conn, ares_bool_t critical_failure,
}
/* This will requeue any connections automatically */
- ares__close_connection(conn, failure_status);
+ ares_close_connection(conn, failure_status);
}
-ares_status_t ares__requeue_query(ares_query_t *query,
- const ares_timeval_t *now,
- ares_status_t status,
- ares_bool_t inc_try_count,
- const ares_dns_record_t *dnsrec)
+ares_status_t ares_requeue_query(ares_query_t *query, const ares_timeval_t *now,
+ ares_status_t status,
+ ares_bool_t inc_try_count,
+ const ares_dns_record_t *dnsrec)
{
- ares_channel_t *channel = query->channel;
- size_t max_tries = ares__slist_len(channel->servers) * channel->tries;
+ ares_channel_t *channel = query->channel;
+ size_t max_tries = ares_slist_len(channel->servers) * channel->tries;
- ares__query_disassociate_from_conn(query);
+ ares_query_remove_from_conn(query);
if (status != ARES_SUCCESS) {
query->error_status = status;
@@ -776,7 +830,7 @@ ares_status_t ares__requeue_query(ares_query_t *query,
}
if (query->try_count < max_tries && !query->no_retries) {
- return ares__send_query(query, now);
+ return ares_send_query(NULL, query, now);
}
/* If we are here, all attempts to perform query failed. */
@@ -788,32 +842,58 @@ ares_status_t ares__requeue_query(ares_query_t *query,
return ARES_ETIMEOUT;
}
-/* Pick a random server from the list, we first get a random number in the
- * range of the number of servers, then scan until we find that server in
- * the list */
-static ares_server_t *ares__random_server(ares_channel_t *channel)
+/*! Count the number of servers that share the same highest priority (lowest
+ * consecutive failures). Since they are sorted in priority order, we just
+ * stop when the consecutive failure count changes. Used for random selection
+ * of good servers. */
+static size_t count_highest_prio_servers(const ares_channel_t *channel)
{
- unsigned char c;
- size_t cnt;
- size_t idx;
- ares__slist_node_t *node;
- size_t num_servers = ares__slist_len(channel->servers);
+ ares_slist_node_t *node;
+ size_t cnt = 0;
+ size_t last_consec_failures = SIZE_MAX;
+
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
+ const ares_server_t *server = ares_slist_node_val(node);
+
+ if (last_consec_failures != SIZE_MAX &&
+ last_consec_failures < server->consec_failures) {
+ break;
+ }
+
+ last_consec_failures = server->consec_failures;
+ cnt++;
+ }
+
+ return cnt;
+}
+
+/* Pick a random *best* server from the list, we first get a random number in
+ * the range of the number of *best* servers, then scan until we find that
+ * server in the list */
+static ares_server_t *ares_random_server(ares_channel_t *channel)
+{
+ unsigned char c;
+ size_t cnt;
+ size_t idx;
+ ares_slist_node_t *node;
+ size_t num_servers = count_highest_prio_servers(channel);
/* Silence coverity, not possible */
if (num_servers == 0) {
return NULL;
}
- ares__rand_bytes(channel->rand_state, &c, 1);
+ ares_rand_bytes(channel->rand_state, &c, 1);
cnt = c;
idx = cnt % num_servers;
cnt = 0;
- for (node = ares__slist_node_first(channel->servers); node != NULL;
- node = ares__slist_node_next(node)) {
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
if (cnt == idx) {
- return ares__slist_node_val(node);
+ return ares_slist_node_val(node);
}
cnt++;
@@ -822,40 +902,32 @@ static ares_server_t *ares__random_server(ares_channel_t *channel)
return NULL;
}
-/* Pick a server from the list with failover behavior.
- *
- * We default to using the first server in the sorted list of servers. That is
- * the server with the lowest number of consecutive failures and then the
- * highest priority server (by idx) if there is a draw.
- *
- * However, if a server temporarily goes down and hits some failures, then that
- * server will never be retried until all other servers hit the same number of
- * failures. This may prevent the server from being retried for a long time.
- *
- * To resolve this, with some probability we select a failed server to retry
- * instead.
- */
-static ares_server_t *ares__failover_server(ares_channel_t *channel)
+static void server_probe_cb(void *arg, ares_status_t status, size_t timeouts,
+ const ares_dns_record_t *dnsrec)
{
- ares_server_t *first_server = ares__slist_first_val(channel->servers);
- const ares_server_t *last_server = ares__slist_last_val(channel->servers);
- unsigned short r;
-
- /* Defensive code against no servers being available on the channel. */
- if (first_server == NULL) {
- return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */
- }
-
- /* If no servers have failures, then prefer the first server in the list. */
- if (last_server != NULL && last_server->consec_failures == 0) {
- return first_server;
- }
+ (void)arg;
+ (void)status;
+ (void)timeouts;
+ (void)dnsrec;
+ /* Nothing to do, the logic internally will handle success/fail of this */
+}
- /* If we are not configured with a server retry chance then return the first
- * server.
- */
- if (channel->server_retry_chance == 0) {
- return first_server;
+/* Determine if we should probe a downed server */
+static void ares_probe_failed_server(ares_channel_t *channel,
+ const ares_server_t *server,
+ const ares_query_t *query)
+{
+ const ares_server_t *last_server = ares_slist_last_val(channel->servers);
+ unsigned short r;
+ ares_timeval_t now;
+ ares_slist_node_t *node;
+ ares_server_t *probe_server = NULL;
+
+ /* If no servers have failures, or we're not configured with a server retry
+ * chance, then nothing to probe */
+ if ((last_server != NULL && last_server->consec_failures == 0) ||
+ channel->server_retry_chance == 0) {
+ return;
}
/* Generate a random value to decide whether to retry a failed server. The
@@ -863,36 +935,49 @@ static ares_server_t *ares__failover_server(ares_channel_t *channel)
* precision of 1/2^B where B is the number of bits in the random value.
* We use an unsigned short for the random value for increased precision.
*/
- ares__rand_bytes(channel->rand_state, (unsigned char *)&r, sizeof(r));
- if (r % channel->server_retry_chance == 0) {
- /* Select a suitable failed server to retry. */
- ares_timeval_t now;
- ares__slist_node_t *node;
-
- ares__tvnow(&now);
- for (node = ares__slist_node_first(channel->servers); node != NULL;
- node = ares__slist_node_next(node)) {
- ares_server_t *node_val = ares__slist_node_val(node);
- if (node_val != NULL && node_val->consec_failures > 0 &&
- ares__timedout(&now, &node_val->next_retry_time)) {
- return node_val;
- }
+ ares_rand_bytes(channel->rand_state, (unsigned char *)&r, sizeof(r));
+ if (r % channel->server_retry_chance != 0) {
+ return;
+ }
+
+ /* Select the first server with failures to retry that has passed the retry
+ * timeout and doesn't already have a pending probe */
+ ares_tvnow(&now);
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
+ ares_server_t *node_val = ares_slist_node_val(node);
+ if (node_val != NULL && node_val->consec_failures > 0 &&
+ !node_val->probe_pending &&
+ ares_timedout(&now, &node_val->next_retry_time)) {
+ probe_server = node_val;
+ break;
}
}
- /* If we have not returned yet, then return the first server. */
- return first_server;
+ /* Either nothing to probe or the query was enqueud to the same server
+ * we were going to probe. Do nothing. */
+ if (probe_server == NULL || server == probe_server) {
+ return;
+ }
+
+ /* Enqueue an identical query onto the specified server without honoring
+ * the cache or allowing retries. We want to make sure it only attempts to
+ * use the server in question */
+ probe_server->probe_pending = ARES_TRUE;
+ ares_send_nolock(channel, probe_server,
+ ARES_SEND_FLAG_NOCACHE | ARES_SEND_FLAG_NORETRY,
+ query->query, server_probe_cb, NULL, NULL);
}
-static size_t ares__calc_query_timeout(const ares_query_t *query,
- const ares_server_t *server,
- const ares_timeval_t *now)
+static size_t ares_calc_query_timeout(const ares_query_t *query,
+ const ares_server_t *server,
+ const ares_timeval_t *now)
{
const ares_channel_t *channel = query->channel;
size_t timeout = ares_metrics_server_timeout(server, now);
size_t timeplus = timeout;
size_t rounds;
- size_t num_servers = ares__slist_len(channel->servers);
+ size_t num_servers = ares_slist_len(channel->servers);
if (num_servers == 0) {
return 0; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -922,7 +1007,7 @@ static size_t ares__calc_query_timeout(const ares_query_t *query,
unsigned short r;
float delta_multiplier;
- ares__rand_bytes(channel->rand_state, (unsigned char *)&r, sizeof(r));
+ ares_rand_bytes(channel->rand_state, (unsigned char *)&r, sizeof(r));
delta_multiplier = ((float)r / USHRT_MAX) * 0.5f;
timeplus -= (size_t)((float)timeplus * delta_multiplier);
}
@@ -936,24 +1021,24 @@ static size_t ares__calc_query_timeout(const ares_query_t *query,
return timeplus;
}
-static ares_conn_t *ares__fetch_connection(const ares_channel_t *channel,
- ares_server_t *server,
- const ares_query_t *query)
+static ares_conn_t *ares_fetch_connection(const ares_channel_t *channel,
+ ares_server_t *server,
+ const ares_query_t *query)
{
- ares__llist_node_t *node;
- ares_conn_t *conn;
+ ares_llist_node_t *node;
+ ares_conn_t *conn;
if (query->using_tcp) {
return server->tcp_conn;
}
/* Fetch existing UDP connection */
- node = ares__llist_node_first(server->connections);
+ node = ares_llist_node_first(server->connections);
if (node == NULL) {
return NULL;
}
- conn = ares__llist_node_val(node);
+ conn = ares_llist_node_val(node);
/* Not UDP, skip */
if (conn->flags & ARES_CONN_FLAG_TCP) {
return NULL;
@@ -968,13 +1053,10 @@ static ares_conn_t *ares__fetch_connection(const ares_channel_t *channel,
return conn;
}
-static ares_status_t ares__conn_query_write(ares_conn_t *conn,
- ares_query_t *query,
- const ares_timeval_t *now)
+static ares_status_t ares_conn_query_write(ares_conn_t *conn,
+ ares_query_t *query,
+ const ares_timeval_t *now)
{
- unsigned char *qbuf = NULL;
- size_t qbuf_len = 0;
- ares_ssize_t len;
ares_server_t *server = conn->server;
ares_channel_t *channel = server->channel;
ares_status_t status;
@@ -984,81 +1066,57 @@ static ares_status_t ares__conn_query_write(ares_conn_t *conn,
return status;
}
- if (conn->flags & ARES_CONN_FLAG_TCP) {
- size_t prior_len = ares__buf_len(server->tcp_send);
-
- status = ares_dns_write_buf_tcp(query->query, server->tcp_send);
- if (status != ARES_SUCCESS) {
- return status;
- }
-
- if (conn->flags & ARES_CONN_FLAG_TFO_INITIAL) {
- /* When using TFO, we need to put it on the wire immediately. */
- size_t data_len;
- const unsigned char *data = NULL;
-
- data = ares__buf_peek(server->tcp_send, &data_len);
- len = ares__conn_write(conn, data, data_len);
- if (len <= 0) {
- if (ares__socket_try_again(SOCKERRNO)) {
- /* This means we must not have qualified for TFO, keep the data
- * buffered, wait on write signal. */
- return ARES_SUCCESS;
- }
-
- /* TCP TFO might delay failure. Reflect that here */
- return ARES_ECONNREFUSED;
- }
-
- /* Consume what was written */
- ares__buf_consume(server->tcp_send, (size_t)len);
- return ARES_SUCCESS;
- }
-
- if (prior_len == 0) {
- SOCK_STATE_CALLBACK(channel, conn->fd, 1, 1);
- }
-
- return ARES_SUCCESS;
- }
-
- /* UDP Here */
- status = ares_dns_write(query->query, &qbuf, &qbuf_len);
+ /* We write using the TCP format even for UDP, we just strip the length
+ * before putting on the wire */
+ status = ares_dns_write_buf_tcp(query->query, conn->out_buf);
if (status != ARES_SUCCESS) {
return status;
}
- len = ares__conn_write(conn, qbuf, qbuf_len);
- ares_free(qbuf);
+ /* Not pending a TFO write and not connected, so we can't even try to
+ * write until we get a signal */
+ if (conn->flags & ARES_CONN_FLAG_TCP &&
+ !(conn->state_flags & ARES_CONN_STATE_CONNECTED) &&
+ !(conn->flags & ARES_CONN_FLAG_TFO_INITIAL)) {
+ return ARES_SUCCESS;
+ }
- if (len == -1) {
- if (ares__socket_try_again(SOCKERRNO)) {
- return ARES_ESERVFAIL;
- }
- /* UDP is connection-less, but we might receive an ICMP unreachable which
- * means we can't talk to the remote host at all and that will be
- * reflected here */
- return ARES_ECONNREFUSED;
+ /* Delay actual write if possible (TCP only, and only if callback
+ * configured) */
+ if (channel->notify_pending_write_cb && !channel->notify_pending_write &&
+ conn->flags & ARES_CONN_FLAG_TCP) {
+ channel->notify_pending_write = ARES_TRUE;
+ channel->notify_pending_write_cb(channel->notify_pending_write_cb_data);
+ return ARES_SUCCESS;
}
- return ARES_SUCCESS;
+ /* Unfortunately we need to write right away and can't aggregate multiple
+ * queries into a single write. */
+ return ares_conn_flush(conn);
}
-ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now)
+ares_status_t ares_send_query(ares_server_t *requested_server,
+ ares_query_t *query, const ares_timeval_t *now)
{
ares_channel_t *channel = query->channel;
ares_server_t *server;
ares_conn_t *conn;
size_t timeplus;
ares_status_t status;
+ ares_bool_t probe_downed_server = ARES_TRUE;
+
/* Choose the server to send the query to */
- if (channel->rotate) {
- /* Pull random server */
- server = ares__random_server(channel);
+ if (requested_server != NULL) {
+ server = requested_server;
} else {
- /* Pull server with failover behavior */
- server = ares__failover_server(channel);
+ /* If rotate is turned on, do a random selection */
+ if (channel->rotate) {
+ server = ares_random_server(channel);
+ } else {
+ /* First server in list */
+ server = ares_slist_first_val(channel->servers);
+ }
}
if (server == NULL) {
@@ -1066,9 +1124,16 @@ ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now)
return ARES_ENOSERVER;
}
- conn = ares__fetch_connection(channel, server, query);
+ /* If a query is directed to a specific query, or the server chosen has
+ * failures, or the query is being retried, don't probe for downed servers */
+ if (requested_server != NULL || server->consec_failures > 0 ||
+ query->try_count != 0) {
+ probe_downed_server = ARES_FALSE;
+ }
+
+ conn = ares_fetch_connection(channel, server, query);
if (conn == NULL) {
- status = ares__open_connection(&conn, channel, server, query->using_tcp);
+ status = ares_open_connection(&conn, channel, server, query->using_tcp);
switch (status) {
/* Good result, continue on */
case ARES_SUCCESS:
@@ -1079,7 +1144,7 @@ ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now)
case ARES_ECONNREFUSED:
case ARES_EBADFAMILY:
server_increment_failures(server, query->using_tcp);
- return ares__requeue_query(query, now, status, ARES_TRUE, NULL);
+ return ares_requeue_query(query, now, status, ARES_TRUE, NULL);
/* Anything else is not retryable, likely ENOMEM */
default:
@@ -1089,7 +1154,7 @@ ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now)
}
/* Write the query */
- status = ares__conn_query_write(conn, query, now);
+ status = ares_conn_query_write(conn, query, now);
switch (status) {
/* Good result, continue on */
case ARES_SUCCESS:
@@ -1105,30 +1170,28 @@ ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now)
case ARES_ECONNREFUSED:
case ARES_EBADFAMILY:
handle_conn_error(conn, ARES_TRUE, status);
- status = ares__requeue_query(query, now, status, ARES_TRUE, NULL);
+ status = ares_requeue_query(query, now, status, ARES_TRUE, NULL);
if (status == ARES_ETIMEOUT) {
status = ARES_ECONNREFUSED;
}
return status;
- /* FIXME: Handle EAGAIN here since it likely can happen. Right now we
- * just requeue to a different server/connection. */
default:
server_increment_failures(server, query->using_tcp);
- status = ares__requeue_query(query, now, status, ARES_TRUE, NULL);
+ status = ares_requeue_query(query, now, status, ARES_TRUE, NULL);
return status;
}
- timeplus = ares__calc_query_timeout(query, server, now);
+ timeplus = ares_calc_query_timeout(query, server, now);
/* Keep track of queries bucketed by timeout, so we can process
* timeout events quickly.
*/
- ares__slist_node_destroy(query->node_queries_by_timeout);
+ ares_slist_node_destroy(query->node_queries_by_timeout);
query->ts = *now;
query->timeout = *now;
timeadd(&query->timeout, timeplus);
query->node_queries_by_timeout =
- ares__slist_insert(channel->queries_by_timeout, query);
+ ares_slist_insert(channel->queries_by_timeout, query);
if (!query->node_queries_by_timeout) {
/* LCOV_EXCL_START: OutOfMemory */
end_query(channel, server, query, ARES_ENOMEM, NULL);
@@ -1138,9 +1201,9 @@ ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now)
/* Keep track of queries bucketed by connection, so we can process errors
* quickly. */
- ares__llist_node_destroy(query->node_queries_to_conn);
+ ares_llist_node_destroy(query->node_queries_to_conn);
query->node_queries_to_conn =
- ares__llist_insert_last(conn->queries_to_conn, query);
+ ares_llist_insert_last(conn->queries_to_conn, query);
if (query->node_queries_to_conn == NULL) {
/* LCOV_EXCL_START: OutOfMemory */
@@ -1151,6 +1214,13 @@ ares_status_t ares__send_query(ares_query_t *query, const ares_timeval_t *now)
query->conn = conn;
conn->total_queries++;
+
+ /* We just successfully enqueud a query, see if we should probe downed
+ * servers. */
+ if (probe_downed_server) {
+ ares_probe_failed_server(channel, server, query);
+ }
+
return ARES_SUCCESS;
}
@@ -1197,12 +1267,12 @@ static ares_bool_t same_questions(const ares_query_t *query,
* server to preserve the case of the name in the response packet.
* https://datatracker.ietf.org/doc/html/draft-vixie-dnsext-dns0x20-00
*/
- if (strcmp(qname, aname) != 0) {
+ if (!ares_streq(qname, aname)) {
goto done;
}
} else {
/* without DNS0x20 use case-insensitive matching */
- if (strcasecmp(qname, aname) != 0) {
+ if (!ares_strcaseeq(qname, aname)) {
goto done;
}
}
@@ -1214,42 +1284,12 @@ done:
return rv;
}
-static ares_bool_t same_address(const struct sockaddr *sa,
- const struct ares_addr *aa)
-{
- const void *addr1;
- const void *addr2;
-
- if (sa->sa_family == aa->family) {
- switch (aa->family) {
- case AF_INET:
- addr1 = &aa->addr.addr4;
- addr2 = &(CARES_INADDR_CAST(const struct sockaddr_in *, sa))->sin_addr;
- if (memcmp(addr1, addr2, sizeof(aa->addr.addr4)) == 0) {
- return ARES_TRUE; /* match */
- }
- break;
- case AF_INET6:
- addr1 = &aa->addr.addr6;
- addr2 =
- &(CARES_INADDR_CAST(const struct sockaddr_in6 *, sa))->sin6_addr;
- if (memcmp(addr1, addr2, sizeof(aa->addr.addr6)) == 0) {
- return ARES_TRUE; /* match */
- }
- break;
- default:
- break; /* LCOV_EXCL_LINE */
- }
- }
- return ARES_FALSE; /* different */
-}
-
static void ares_detach_query(ares_query_t *query)
{
/* Remove the query from all the lists in which it is linked */
- ares__query_disassociate_from_conn(query);
- ares__htable_szvp_remove(query->channel->queries_by_qid, query->qid);
- ares__llist_node_destroy(query->node_all_queries);
+ ares_query_remove_from_conn(query);
+ ares_htable_szvp_remove(query->channel->queries_by_qid, query->qid);
+ ares_llist_node_destroy(query->node_all_queries);
query->node_all_queries = NULL;
}
@@ -1257,11 +1297,17 @@ static void end_query(ares_channel_t *channel, ares_server_t *server,
ares_query_t *query, ares_status_t status,
const ares_dns_record_t *dnsrec)
{
+ /* If we were probing for the server to come back online, lets mark it as
+ * no longer being probed */
+ if (server != NULL) {
+ server->probe_pending = ARES_FALSE;
+ }
+
ares_metrics_record(query, server, status, dnsrec);
/* Invoke the callback. */
query->callback(query->arg, status, query->timeouts, dnsrec);
- ares__free_query(query);
+ ares_free_query(query);
/* Check and notify if no other queries are enqueued on the channel. This
* must come after the callback and freeing the query for 2 reasons.
@@ -1271,7 +1317,7 @@ static void end_query(ares_channel_t *channel, ares_server_t *server,
ares_queue_notify_empty(channel);
}
-void ares__free_query(ares_query_t *query)
+void ares_free_query(ares_query_t *query)
{
ares_detach_query(query);
/* Zero out some important stuff, to help catch bugs */
diff --git a/contrib/libs/c-ares/src/lib/ares_qcache.c b/contrib/libs/c-ares/src/lib/ares_qcache.c
index 9725212fde..97c0a9137d 100644
--- a/contrib/libs/c-ares/src/lib/ares_qcache.c
+++ b/contrib/libs/c-ares/src/lib/ares_qcache.c
@@ -25,10 +25,10 @@
*/
#include "ares_private.h"
-struct ares__qcache {
- ares__htable_strvp_t *cache;
- ares__slist_t *expire;
- unsigned int max_ttl;
+struct ares_qcache {
+ ares_htable_strvp_t *cache;
+ ares_slist_t *expire;
+ unsigned int max_ttl;
};
typedef struct {
@@ -36,11 +36,11 @@ typedef struct {
ares_dns_record_t *dnsrec;
time_t expire_ts;
time_t insert_ts;
-} ares__qcache_entry_t;
+} ares_qcache_entry_t;
-static char *ares__qcache_calc_key(const ares_dns_record_t *dnsrec)
+static char *ares_qcache_calc_key(const ares_dns_record_t *dnsrec)
{
- ares__buf_t *buf = ares__buf_create();
+ ares_buf_t *buf = ares_buf_create();
size_t i;
ares_status_t status;
ares_dns_flags_t flags;
@@ -51,13 +51,13 @@ static char *ares__qcache_calc_key(const ares_dns_record_t *dnsrec)
/* Format is OPCODE|FLAGS[|QTYPE1|QCLASS1|QNAME1]... */
- status = ares__buf_append_str(
+ status = ares_buf_append_str(
buf, ares_dns_opcode_tostr(ares_dns_record_get_opcode(dnsrec)));
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, '|');
+ status = ares_buf_append_byte(buf, '|');
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -65,13 +65,13 @@ static char *ares__qcache_calc_key(const ares_dns_record_t *dnsrec)
flags = ares_dns_record_get_flags(dnsrec);
/* Only care about RD and CD */
if (flags & ARES_FLAG_RD) {
- status = ares__buf_append_str(buf, "rd");
+ status = ares_buf_append_str(buf, "rd");
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
if (flags & ARES_FLAG_CD) {
- status = ares__buf_append_str(buf, "cd");
+ status = ares_buf_append_str(buf, "cd");
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -88,27 +88,27 @@ static char *ares__qcache_calc_key(const ares_dns_record_t *dnsrec)
goto fail; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- status = ares__buf_append_byte(buf, '|');
+ status = ares_buf_append_byte(buf, '|');
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_str(buf, ares_dns_rec_type_tostr(qtype));
+ status = ares_buf_append_str(buf, ares_dns_rec_type_tostr(qtype));
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, '|');
+ status = ares_buf_append_byte(buf, '|');
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_str(buf, ares_dns_class_tostr(qclass));
+ status = ares_buf_append_str(buf, ares_dns_class_tostr(qclass));
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, '|');
+ status = ares_buf_append_byte(buf, '|');
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -122,64 +122,63 @@ static char *ares__qcache_calc_key(const ares_dns_record_t *dnsrec)
}
if (name_len > 0) {
- status = ares__buf_append(buf, (const unsigned char *)name, name_len);
+ status = ares_buf_append(buf, (const unsigned char *)name, name_len);
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
}
- return ares__buf_finish_str(buf, NULL);
+ return ares_buf_finish_str(buf, NULL);
/* LCOV_EXCL_START: OutOfMemory */
fail:
- ares__buf_destroy(buf);
+ ares_buf_destroy(buf);
return NULL;
/* LCOV_EXCL_STOP */
}
-static void ares__qcache_expire(ares__qcache_t *cache,
- const ares_timeval_t *now)
+static void ares_qcache_expire(ares_qcache_t *cache, const ares_timeval_t *now)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
if (cache == NULL) {
return;
}
- while ((node = ares__slist_node_first(cache->expire)) != NULL) {
- const ares__qcache_entry_t *entry = ares__slist_node_val(node);
+ while ((node = ares_slist_node_first(cache->expire)) != NULL) {
+ const ares_qcache_entry_t *entry = ares_slist_node_val(node);
/* If now is NULL, we're flushing everything, so don't break */
if (now != NULL && entry->expire_ts > now->sec) {
break;
}
- ares__htable_strvp_remove(cache->cache, entry->key);
- ares__slist_node_destroy(node);
+ ares_htable_strvp_remove(cache->cache, entry->key);
+ ares_slist_node_destroy(node);
}
}
-void ares__qcache_flush(ares__qcache_t *cache)
+void ares_qcache_flush(ares_qcache_t *cache)
{
- ares__qcache_expire(cache, NULL /* flush all */);
+ ares_qcache_expire(cache, NULL /* flush all */);
}
-void ares__qcache_destroy(ares__qcache_t *cache)
+void ares_qcache_destroy(ares_qcache_t *cache)
{
if (cache == NULL) {
return;
}
- ares__htable_strvp_destroy(cache->cache);
- ares__slist_destroy(cache->expire);
+ ares_htable_strvp_destroy(cache->cache);
+ ares_slist_destroy(cache->expire);
ares_free(cache);
}
-static int ares__qcache_entry_sort_cb(const void *arg1, const void *arg2)
+static int ares_qcache_entry_sort_cb(const void *arg1, const void *arg2)
{
- const ares__qcache_entry_t *entry1 = arg1;
- const ares__qcache_entry_t *entry2 = arg2;
+ const ares_qcache_entry_t *entry1 = arg1;
+ const ares_qcache_entry_t *entry2 = arg2;
if (entry1->expire_ts > entry2->expire_ts) {
return 1;
@@ -192,9 +191,9 @@ static int ares__qcache_entry_sort_cb(const void *arg1, const void *arg2)
return 0;
}
-static void ares__qcache_entry_destroy_cb(void *arg)
+static void ares_qcache_entry_destroy_cb(void *arg)
{
- ares__qcache_entry_t *entry = arg;
+ ares_qcache_entry_t *entry = arg;
if (entry == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
@@ -204,12 +203,12 @@ static void ares__qcache_entry_destroy_cb(void *arg)
ares_free(entry);
}
-ares_status_t ares__qcache_create(ares_rand_state *rand_state,
- unsigned int max_ttl,
- ares__qcache_t **cache_out)
+ares_status_t ares_qcache_create(ares_rand_state *rand_state,
+ unsigned int max_ttl,
+ ares_qcache_t **cache_out)
{
- ares_status_t status = ARES_SUCCESS;
- ares__qcache_t *cache;
+ ares_status_t status = ARES_SUCCESS;
+ ares_qcache_t *cache;
cache = ares_malloc_zero(sizeof(*cache));
if (cache == NULL) {
@@ -217,14 +216,14 @@ ares_status_t ares__qcache_create(ares_rand_state *rand_state,
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- cache->cache = ares__htable_strvp_create(NULL);
+ cache->cache = ares_htable_strvp_create(NULL);
if (cache->cache == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- cache->expire = ares__slist_create(rand_state, ares__qcache_entry_sort_cb,
- ares__qcache_entry_destroy_cb);
+ cache->expire = ares_slist_create(rand_state, ares_qcache_entry_sort_cb,
+ ares_qcache_entry_destroy_cb);
if (cache->expire == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -235,7 +234,7 @@ ares_status_t ares__qcache_create(ares_rand_state *rand_state,
done:
if (status != ARES_SUCCESS) {
*cache_out = NULL;
- ares__qcache_destroy(cache);
+ ares_qcache_destroy(cache);
return status;
}
@@ -243,7 +242,7 @@ done:
return status;
}
-static unsigned int ares__qcache_calc_minttl(ares_dns_record_t *dnsrec)
+static unsigned int ares_qcache_calc_minttl(ares_dns_record_t *dnsrec)
{
unsigned int minttl = 0xFFFFFFFF;
size_t sect;
@@ -272,7 +271,7 @@ static unsigned int ares__qcache_calc_minttl(ares_dns_record_t *dnsrec)
return minttl;
}
-static unsigned int ares__qcache_soa_minimum(ares_dns_record_t *dnsrec)
+static unsigned int ares_qcache_soa_minimum(ares_dns_record_t *dnsrec)
{
size_t i;
@@ -302,15 +301,15 @@ static unsigned int ares__qcache_soa_minimum(ares_dns_record_t *dnsrec)
}
/* On success, takes ownership of dnsrec */
-static ares_status_t ares__qcache_insert(ares__qcache_t *qcache,
- ares_dns_record_t *qresp,
- const ares_dns_record_t *qreq,
- const ares_timeval_t *now)
+static ares_status_t ares_qcache_insert_int(ares_qcache_t *qcache,
+ ares_dns_record_t *qresp,
+ const ares_dns_record_t *qreq,
+ const ares_timeval_t *now)
{
- ares__qcache_entry_t *entry;
- unsigned int ttl;
- ares_dns_rcode_t rcode = ares_dns_record_get_rcode(qresp);
- ares_dns_flags_t flags = ares_dns_record_get_flags(qresp);
+ ares_qcache_entry_t *entry;
+ unsigned int ttl;
+ ares_dns_rcode_t rcode = ares_dns_record_get_rcode(qresp);
+ ares_dns_flags_t flags = ares_dns_record_get_flags(qresp);
if (qcache == NULL || qresp == NULL) {
return ARES_EFORMERR;
@@ -328,9 +327,9 @@ static ares_status_t ares__qcache_insert(ares__qcache_t *qcache,
/* Look at SOA for NXDOMAIN for minimum */
if (rcode == ARES_RCODE_NXDOMAIN) {
- ttl = ares__qcache_soa_minimum(qresp);
+ ttl = ares_qcache_soa_minimum(qresp);
} else {
- ttl = ares__qcache_calc_minttl(qresp);
+ ttl = ares_qcache_calc_minttl(qresp);
}
if (ttl > qcache->max_ttl) {
@@ -355,16 +354,16 @@ static ares_status_t ares__qcache_insert(ares__qcache_t *qcache,
* request had, so we have to re-parse the request in order to generate the
* key for caching, but we'll only do this once we know for sure we really
* want to cache it */
- entry->key = ares__qcache_calc_key(qreq);
+ entry->key = ares_qcache_calc_key(qreq);
if (entry->key == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- if (!ares__htable_strvp_insert(qcache->cache, entry->key, entry)) {
+ if (!ares_htable_strvp_insert(qcache->cache, entry->key, entry)) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- if (ares__slist_insert(qcache->expire, entry) == NULL) {
+ if (ares_slist_insert(qcache->expire, entry) == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -373,7 +372,7 @@ static ares_status_t ares__qcache_insert(ares__qcache_t *qcache,
/* LCOV_EXCL_START: OutOfMemory */
fail:
if (entry != NULL && entry->key != NULL) {
- ares__htable_strvp_remove(qcache->cache, entry->key);
+ ares_htable_strvp_remove(qcache->cache, entry->key);
ares_free(entry->key);
ares_free(entry);
}
@@ -386,9 +385,9 @@ ares_status_t ares_qcache_fetch(ares_channel_t *channel,
const ares_dns_record_t *dnsrec,
const ares_dns_record_t **dnsrec_resp)
{
- char *key = NULL;
- ares__qcache_entry_t *entry;
- ares_status_t status = ARES_SUCCESS;
+ char *key = NULL;
+ ares_qcache_entry_t *entry;
+ ares_status_t status = ARES_SUCCESS;
if (channel == NULL || dnsrec == NULL || dnsrec_resp == NULL) {
return ARES_EFORMERR;
@@ -398,22 +397,22 @@ ares_status_t ares_qcache_fetch(ares_channel_t *channel,
return ARES_ENOTFOUND;
}
- ares__qcache_expire(channel->qcache, now);
+ ares_qcache_expire(channel->qcache, now);
- key = ares__qcache_calc_key(dnsrec);
+ key = ares_qcache_calc_key(dnsrec);
if (key == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- entry = ares__htable_strvp_get_direct(channel->qcache->cache, key);
+ entry = ares_htable_strvp_get_direct(channel->qcache->cache, key);
if (entry == NULL) {
status = ARES_ENOTFOUND;
goto done;
}
- ares_dns_record_write_ttl_decrement(
- entry->dnsrec, (unsigned int)(now->sec - entry->insert_ts));
+ ares_dns_record_ttl_decrement(entry->dnsrec,
+ (unsigned int)(now->sec - entry->insert_ts));
*dnsrec_resp = entry->dnsrec;
@@ -427,5 +426,5 @@ ares_status_t ares_qcache_insert(ares_channel_t *channel,
const ares_query_t *query,
ares_dns_record_t *dnsrec)
{
- return ares__qcache_insert(channel->qcache, dnsrec, query->query, now);
+ return ares_qcache_insert_int(channel->qcache, dnsrec, query->query, now);
}
diff --git a/contrib/libs/c-ares/src/lib/ares_query.c b/contrib/libs/c-ares/src/lib/ares_query.c
index 4d0861a5f5..ca3b6a9b73 100644
--- a/contrib/libs/c-ares/src/lib/ares_query.c
+++ b/contrib/libs/c-ares/src/lib/ares_query.c
@@ -105,7 +105,8 @@ ares_status_t ares_query_nolock(ares_channel_t *channel, const char *name,
qquery->arg = arg;
/* Send it off. qcallback will be called when we get an answer. */
- status = ares_send_nolock(channel, dnsrec, ares_query_dnsrec_cb, qquery, qid);
+ status = ares_send_nolock(channel, NULL, 0, dnsrec, ares_query_dnsrec_cb,
+ qquery, qid);
ares_dns_record_destroy(dnsrec);
return status;
@@ -123,9 +124,9 @@ ares_status_t ares_query_dnsrec(ares_channel_t *channel, const char *name,
return ARES_EFORMERR;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
status = ares_query_nolock(channel, name, dnsclass, type, callback, arg, qid);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return status;
}
@@ -138,13 +139,13 @@ void ares_query(ares_channel_t *channel, const char *name, int dnsclass,
return;
}
- carg = ares__dnsrec_convert_arg(callback, arg);
+ carg = ares_dnsrec_convert_arg(callback, arg);
if (carg == NULL) {
callback(arg, ARES_ENOMEM, 0, NULL, 0); /* LCOV_EXCL_LINE: OutOfMemory */
return; /* LCOV_EXCL_LINE: OutOfMemory */
}
ares_query_dnsrec(channel, name, (ares_dns_class_t)dnsclass,
- (ares_dns_rec_type_t)type, ares__dnsrec_convert_cb, carg,
+ (ares_dns_rec_type_t)type, ares_dnsrec_convert_cb, carg,
NULL);
}
diff --git a/contrib/libs/c-ares/src/lib/ares_search.c b/contrib/libs/c-ares/src/lib/ares_search.c
index 2d3c0fc514..c605caf42c 100644
--- a/contrib/libs/c-ares/src/lib/ares_search.c
+++ b/contrib/libs/c-ares/src/lib/ares_search.c
@@ -55,7 +55,7 @@ static void squery_free(struct search_query *squery)
if (squery == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__strsplit_free(squery->names, squery->names_cnt);
+ ares_strsplit_free(squery->names, squery->names_cnt);
ares_dns_record_destroy(squery->dnsrec);
ares_free(squery);
}
@@ -92,8 +92,8 @@ static ares_status_t ares_search_next(ares_channel_t *channel,
return status;
}
- status =
- ares_send_nolock(channel, squery->dnsrec, search_callback, squery, NULL);
+ status = ares_send_nolock(channel, NULL, 0, squery->dnsrec, search_callback,
+ squery, NULL);
if (status != ARES_EFORMERR) {
*skip_cleanup = ARES_TRUE;
@@ -114,10 +114,9 @@ static void search_callback(void *arg, ares_status_t status, size_t timeouts,
squery->timeouts += timeouts;
if (dnsrec) {
- ares_dns_rcode_t rcode = ares_dns_record_get_rcode(dnsrec);
- size_t ancount = ares_dns_record_rr_cnt(dnsrec,
- ARES_SECTION_ANSWER);
- mystatus = ares_dns_query_reply_tostatus(rcode, ancount);
+ ares_dns_rcode_t rcode = ares_dns_record_get_rcode(dnsrec);
+ size_t ancount = ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER);
+ mystatus = ares_dns_query_reply_tostatus(rcode, ancount);
} else {
mystatus = status;
}
@@ -128,9 +127,9 @@ static void search_callback(void *arg, ares_status_t status, size_t timeouts,
break;
case ARES_ESERVFAIL:
case ARES_EREFUSED:
- /* Issue #852, systemd-resolved may return SERVFAIL or REFUSED on a
+ /* Issue #852, systemd-resolved may return SERVFAIL or REFUSED on a
* single label domain name. */
- if (ares__name_label_cnt(squery->names[squery->next_name_idx-1]) != 1) {
+ if (ares_name_label_cnt(squery->names[squery->next_name_idx - 1]) != 1) {
end_squery(squery, mystatus, dnsrec);
return;
}
@@ -169,8 +168,8 @@ static void search_callback(void *arg, ares_status_t status, size_t timeouts,
/* Determine if the domain should be looked up as-is, or if it is eligible
* for search by appending domains */
-static ares_bool_t ares__search_eligible(const ares_channel_t *channel,
- const char *name)
+static ares_bool_t ares_search_eligible(const ares_channel_t *channel,
+ const char *name)
{
size_t len = ares_strlen(name);
@@ -186,10 +185,10 @@ static ares_bool_t ares__search_eligible(const ares_channel_t *channel,
return ARES_TRUE;
}
-size_t ares__name_label_cnt(const char *name)
+size_t ares_name_label_cnt(const char *name)
{
- const char *p;
- size_t ndots = 0;
+ const char *p;
+ size_t ndots = 0;
if (name == NULL) {
return 0;
@@ -202,12 +201,12 @@ size_t ares__name_label_cnt(const char *name)
}
/* Label count is 1 greater than ndots */
- return ndots+1;
+ return ndots + 1;
}
-ares_status_t ares__search_name_list(const ares_channel_t *channel,
- const char *name, char ***names,
- size_t *names_len)
+ares_status_t ares_search_name_list(const ares_channel_t *channel,
+ const char *name, char ***names,
+ size_t *names_len)
{
ares_status_t status;
char **list = NULL;
@@ -218,7 +217,7 @@ ares_status_t ares__search_name_list(const ares_channel_t *channel,
size_t i;
/* Perform HOSTALIASES resolution */
- status = ares__lookup_hostaliases(channel, name, &alias);
+ status = ares_lookup_hostaliases(channel, name, &alias);
if (status == ARES_SUCCESS) {
/* If hostalias succeeds, there is no searching, it is used as-is */
list_len = 1;
@@ -235,7 +234,7 @@ ares_status_t ares__search_name_list(const ares_channel_t *channel,
}
/* See if searching is eligible at all, if not, look up as-is only */
- if (!ares__search_eligible(channel, name)) {
+ if (!ares_search_eligible(channel, name)) {
list_len = 1;
list = ares_malloc_zero(sizeof(*list) * list_len);
if (list == NULL) {
@@ -252,7 +251,7 @@ ares_status_t ares__search_name_list(const ares_channel_t *channel,
}
/* Count the number of dots in name, 1 less than label count */
- ndots = ares__name_label_cnt(name);
+ ndots = ares_name_label_cnt(name);
if (ndots > 0) {
ndots--;
}
@@ -266,7 +265,7 @@ ares_status_t ares__search_name_list(const ares_channel_t *channel,
}
/* Set status here, its possible there are no search domains at all, so
- * status may be ARES_ENOTFOUND from ares__lookup_hostaliases(). */
+ * status may be ARES_ENOTFOUND from ares_lookup_hostaliases(). */
status = ARES_SUCCESS;
/* Try as-is first */
@@ -281,7 +280,7 @@ ares_status_t ares__search_name_list(const ares_channel_t *channel,
/* Append each search suffix to the name */
for (i = 0; i < channel->ndomains; i++) {
- status = ares__cat_domain(name, channel->domains[i], &list[idx]);
+ status = ares_cat_domain(name, channel->domains[i], &list[idx]);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -304,7 +303,7 @@ done:
*names = list;
*names_len = list_len;
} else {
- ares__strsplit_free(list, list_len);
+ ares_strsplit_free(list, list_len);
}
ares_free(alias);
@@ -334,7 +333,7 @@ static ares_status_t ares_search_int(ares_channel_t *channel,
}
/* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN. */
- if (ares__is_onion_domain(name)) {
+ if (ares_is_onion_domain(name)) {
status = ARES_ENOTFOUND;
goto fail;
}
@@ -363,7 +362,7 @@ static ares_status_t ares_search_int(ares_channel_t *channel,
squery->ever_got_nodata = ARES_FALSE;
status =
- ares__search_name_list(channel, name, &squery->names, &squery->names_cnt);
+ ares_search_name_list(channel, name, &squery->names, &squery->names_cnt);
if (status != ARES_SUCCESS) {
goto fail;
}
@@ -383,7 +382,7 @@ fail:
return status;
}
-/* Callback argument structure passed to ares__dnsrec_convert_cb(). */
+/* Callback argument structure passed to ares_dnsrec_convert_cb(). */
typedef struct {
ares_callback callback;
void *arg;
@@ -391,7 +390,7 @@ typedef struct {
/*! Function to create callback arg for converting from ares_callback_dnsrec
* to ares_calback */
-void *ares__dnsrec_convert_arg(ares_callback callback, void *arg)
+void *ares_dnsrec_convert_arg(ares_callback callback, void *arg)
{
dnsrec_convert_arg_t *carg = ares_malloc_zero(sizeof(*carg));
if (carg == NULL) {
@@ -406,8 +405,8 @@ void *ares__dnsrec_convert_arg(ares_callback callback, void *arg)
* the ares_callback prototype, by writing the result and passing that to
* the inner callback.
*/
-void ares__dnsrec_convert_cb(void *arg, ares_status_t status, size_t timeouts,
- const ares_dns_record_t *dnsrec)
+void ares_dnsrec_convert_cb(void *arg, ares_status_t status, size_t timeouts,
+ const ares_dns_record_t *dnsrec)
{
dnsrec_convert_arg_t *carg = arg;
unsigned char *abuf = NULL;
@@ -442,11 +441,11 @@ void ares_search(ares_channel_t *channel, const char *name, int dnsclass,
}
/* For now, ares_search_int() uses the ares_callback prototype. We need to
- * wrap the callback passed to this function in ares__dnsrec_convert_cb, to
+ * wrap the callback passed to this function in ares_dnsrec_convert_cb, to
* convert from ares_callback_dnsrec to ares_callback. Allocate the convert
* arg structure here.
*/
- carg = ares__dnsrec_convert_arg(callback, arg);
+ carg = ares_dnsrec_convert_arg(callback, arg);
if (carg == NULL) {
callback(arg, ARES_ENOMEM, 0, NULL, 0);
return;
@@ -463,9 +462,9 @@ void ares_search(ares_channel_t *channel, const char *name, int dnsclass,
return;
}
- ares__channel_lock(channel);
- ares_search_int(channel, dnsrec, ares__dnsrec_convert_cb, carg);
- ares__channel_unlock(channel);
+ ares_channel_lock(channel);
+ ares_search_int(channel, dnsrec, ares_dnsrec_convert_cb, carg);
+ ares_channel_unlock(channel);
ares_dns_record_destroy(dnsrec);
}
@@ -481,15 +480,15 @@ ares_status_t ares_search_dnsrec(ares_channel_t *channel,
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
status = ares_search_int(channel, dnsrec, callback, arg);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return status;
}
/* Concatenate two domains. */
-ares_status_t 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 = ares_strlen(name);
size_t dlen = ares_strlen(domain);
@@ -500,7 +499,7 @@ ares_status_t ares__cat_domain(const char *name, const char *domain, char **s)
}
memcpy(*s, name, nlen);
(*s)[nlen] = '.';
- if (strcmp(domain, ".") == 0) {
+ if (ares_streq(domain, ".")) {
/* Avoid appending the root domain to the separator, which would set *s to
an ill-formed value (ending in two consecutive dots). */
dlen = 0;
@@ -510,14 +509,15 @@ ares_status_t ares__cat_domain(const char *name, const char *domain, char **s)
return ARES_SUCCESS;
}
-ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
- const char *name, char **alias)
+ares_status_t ares_lookup_hostaliases(const ares_channel_t *channel,
+ const char *name, char **alias)
{
- ares_status_t status = ARES_SUCCESS;
- const char *hostaliases = NULL;
- ares__buf_t *buf = NULL;
- ares__llist_t *lines = NULL;
- ares__llist_node_t *node;
+ ares_status_t status = ARES_SUCCESS;
+ const char *hostaliases = NULL;
+ ares_buf_t *buf = NULL;
+ ares_array_t *lines = NULL;
+ size_t num;
+ size_t i;
if (channel == NULL || name == NULL || alias == NULL) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -541,13 +541,13 @@ ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
goto done;
}
- buf = ares__buf_create();
+ buf = ares_buf_create();
if (buf == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_load_file(hostaliases, buf);
+ status = ares_buf_load_file(hostaliases, buf);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -560,44 +560,45 @@ ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
* curl www.curl.se
*/
- status = ares__buf_split(buf, (const unsigned char *)"\n", 1,
- ARES_BUF_SPLIT_TRIM, 0, &lines);
+ status = ares_buf_split(buf, (const unsigned char *)"\n", 1,
+ ARES_BUF_SPLIT_TRIM, 0, &lines);
if (status != ARES_SUCCESS) {
goto done;
}
- for (node = ares__llist_node_first(lines); node != NULL;
- node = ares__llist_node_next(node)) {
- ares__buf_t *line = ares__llist_node_val(node);
+ num = ares_array_len(lines);
+ for (i = 0; i < num; i++) {
+ ares_buf_t **bufptr = ares_array_at(lines, i);
+ ares_buf_t *line = *bufptr;
char hostname[64] = "";
char fqdn[256] = "";
/* Pull off hostname */
- ares__buf_tag(line);
- ares__buf_consume_nonwhitespace(line);
- if (ares__buf_tag_fetch_string(line, hostname, sizeof(hostname)) !=
+ ares_buf_tag(line);
+ ares_buf_consume_nonwhitespace(line);
+ if (ares_buf_tag_fetch_string(line, hostname, sizeof(hostname)) !=
ARES_SUCCESS) {
continue;
}
/* Match hostname */
- if (strcasecmp(hostname, name) != 0) {
+ if (!ares_strcaseeq(hostname, name)) {
continue;
}
/* consume whitespace */
- ares__buf_consume_whitespace(line, ARES_TRUE);
+ ares_buf_consume_whitespace(line, ARES_TRUE);
/* pull off fqdn */
- ares__buf_tag(line);
- ares__buf_consume_nonwhitespace(line);
- if (ares__buf_tag_fetch_string(line, fqdn, sizeof(fqdn)) != ARES_SUCCESS ||
+ ares_buf_tag(line);
+ ares_buf_consume_nonwhitespace(line);
+ if (ares_buf_tag_fetch_string(line, fqdn, sizeof(fqdn)) != ARES_SUCCESS ||
ares_strlen(fqdn) == 0) {
continue;
}
/* Validate characterset */
- if (!ares__is_hostname(fqdn)) {
+ if (!ares_is_hostname(fqdn)) {
continue;
}
@@ -615,8 +616,8 @@ ares_status_t ares__lookup_hostaliases(const ares_channel_t *channel,
status = ARES_ENOTFOUND;
done:
- ares__buf_destroy(buf);
- ares__llist_destroy(lines);
+ ares_buf_destroy(buf);
+ ares_array_destroy(lines);
return status;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_send.c b/contrib/libs/c-ares/src/lib/ares_send.c
index 64ff7edd3a..ca178a1741 100644
--- a/contrib/libs/c-ares/src/lib/ares_send.c
+++ b/contrib/libs/c-ares/src/lib/ares_send.c
@@ -37,8 +37,8 @@ static unsigned short generate_unique_qid(ares_channel_t *channel)
unsigned short id;
do {
- id = ares__generate_new_id(channel->rand_state);
- } while (ares__htable_szvp_get(channel->queries_by_qid, id, NULL));
+ id = ares_generate_new_id(channel->rand_state);
+ } while (ares_htable_szvp_get(channel->queries_by_qid, id, NULL));
return id;
}
@@ -77,14 +77,14 @@ static ares_status_t ares_apply_dns0x20(ares_channel_t *channel,
* is 1 bit per byte */
total_bits = ((len + 7) / 8) * 8;
remaining_bits = total_bits;
- ares__rand_bytes(channel->rand_state, randdata, total_bits / 8);
+ ares_rand_bytes(channel->rand_state, randdata, total_bits / 8);
/* Randomly apply 0x20 to name */
for (i = 0; i < len; i++) {
size_t bit;
/* Only apply 0x20 to alpha characters */
- if (!ares__isalpha(name[i])) {
+ if (!ares_isalpha(name[i])) {
dns0x20name[i] = name[i];
continue;
}
@@ -105,7 +105,8 @@ done:
return status;
}
-ares_status_t ares_send_nolock(ares_channel_t *channel,
+ares_status_t ares_send_nolock(ares_channel_t *channel, ares_server_t *server,
+ ares_send_flags_t flags,
const ares_dns_record_t *dnsrec,
ares_callback_dnsrec callback, void *arg,
unsigned short *qid)
@@ -116,20 +117,22 @@ ares_status_t ares_send_nolock(ares_channel_t *channel,
unsigned short id = generate_unique_qid(channel);
const ares_dns_record_t *dnsrec_resp = NULL;
- ares__tvnow(&now);
+ ares_tvnow(&now);
- if (ares__slist_len(channel->servers) == 0) {
+ if (ares_slist_len(channel->servers) == 0) {
callback(arg, ARES_ENOSERVER, 0, NULL);
return ARES_ENOSERVER;
}
- /* Check query cache */
- status = ares_qcache_fetch(channel, &now, dnsrec, &dnsrec_resp);
- if (status != ARES_ENOTFOUND) {
- /* ARES_SUCCESS means we retrieved the cache, anything else is a critical
- * failure, all result in termination */
- callback(arg, status, 0, dnsrec_resp);
- return status;
+ if (!(flags & ARES_SEND_FLAG_NOCACHE)) {
+ /* Check query cache */
+ status = ares_qcache_fetch(channel, &now, dnsrec, &dnsrec_resp);
+ if (status != ARES_ENOTFOUND) {
+ /* ARES_SUCCESS means we retrieved the cache, anything else is a critical
+ * failure, all result in termination */
+ callback(arg, status, 0, dnsrec_resp);
+ return status;
+ }
}
/* Allocate space for query and allocated fields. */
@@ -162,7 +165,7 @@ ares_status_t ares_send_nolock(ares_channel_t *channel,
if (status != ARES_SUCCESS) {
/* LCOV_EXCL_START: OutOfMemory */
callback(arg, status, 0, NULL);
- ares__free_query(query);
+ ares_free_query(query);
return status;
/* LCOV_EXCL_STOP */
}
@@ -175,6 +178,9 @@ ares_status_t ares_send_nolock(ares_channel_t *channel,
/* Initialize query status. */
query->try_count = 0;
+ if (flags & ARES_SEND_FLAG_NORETRY) {
+ query->no_retries = ARES_TRUE;
+ }
query->error_status = ARES_SUCCESS;
query->timeouts = 0;
@@ -184,12 +190,11 @@ ares_status_t ares_send_nolock(ares_channel_t *channel,
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) {
/* LCOV_EXCL_START: OutOfMemory */
callback(arg, ARES_ENOMEM, 0, NULL);
- ares__free_query(query);
+ ares_free_query(query);
return ARES_ENOMEM;
/* LCOV_EXCL_STOP */
}
@@ -197,17 +202,17 @@ ares_status_t ares_send_nolock(ares_channel_t *channel,
/* Keep track of queries bucketed by qid, so we can process DNS
* responses quickly.
*/
- if (!ares__htable_szvp_insert(channel->queries_by_qid, query->qid, query)) {
+ if (!ares_htable_szvp_insert(channel->queries_by_qid, query->qid, query)) {
/* LCOV_EXCL_START: OutOfMemory */
callback(arg, ARES_ENOMEM, 0, NULL);
- ares__free_query(query);
+ ares_free_query(query);
return ARES_ENOMEM;
/* LCOV_EXCL_STOP */
}
/* Perform the first query action. */
- status = ares__send_query(query, &now);
+ status = ares_send_query(server, query, &now);
if (status == ARES_SUCCESS && qid) {
*qid = id;
}
@@ -225,11 +230,11 @@ ares_status_t ares_send_dnsrec(ares_channel_t *channel,
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- status = ares_send_nolock(channel, dnsrec, callback, arg, qid);
+ status = ares_send_nolock(channel, NULL, 0, dnsrec, callback, arg, qid);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return status;
}
@@ -257,7 +262,7 @@ void ares_send(ares_channel_t *channel, const unsigned char *qbuf, int qlen,
return;
}
- carg = ares__dnsrec_convert_arg(callback, arg);
+ carg = ares_dnsrec_convert_arg(callback, arg);
if (carg == NULL) {
/* LCOV_EXCL_START: OutOfMemory */
status = ARES_ENOMEM;
@@ -267,7 +272,7 @@ void ares_send(ares_channel_t *channel, const unsigned char *qbuf, int qlen,
/* LCOV_EXCL_STOP */
}
- ares_send_dnsrec(channel, dnsrec, ares__dnsrec_convert_cb, carg, NULL);
+ ares_send_dnsrec(channel, dnsrec, ares_dnsrec_convert_cb, carg, NULL);
ares_dns_record_destroy(dnsrec);
}
@@ -280,11 +285,11 @@ size_t ares_queue_active_queries(const ares_channel_t *channel)
return 0;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- len = ares__llist_len(channel->all_queries);
+ len = ares_llist_len(channel->all_queries);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return len;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_set_socket_functions.c b/contrib/libs/c-ares/src/lib/ares_set_socket_functions.c
new file mode 100644
index 0000000000..143c491174
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/ares_set_socket_functions.c
@@ -0,0 +1,586 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_private.h"
+#ifdef HAVE_SYS_UIO_H
+# include <sys/uio.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+# include <netinet/tcp.h>
+#endif
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+# include <arpa/inet.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+#endif
+#ifdef NETWARE
+# include <sys/filio.h>
+#endif
+
+#include <assert.h>
+#include <fcntl.h>
+#include <limits.h>
+
+
+#if defined(__linux__) && defined(TCP_FASTOPEN_CONNECT)
+# define TFO_SUPPORTED 1
+# define TFO_SKIP_CONNECT 0
+# define TFO_USE_SENDTO 0
+# define TFO_USE_CONNECTX 0
+# define TFO_CLIENT_SOCKOPT TCP_FASTOPEN_CONNECT
+#elif defined(__FreeBSD__) && defined(TCP_FASTOPEN)
+# define TFO_SUPPORTED 1
+# define TFO_SKIP_CONNECT 1
+# define TFO_USE_SENDTO 1
+# define TFO_USE_CONNECTX 0
+# define TFO_CLIENT_SOCKOPT TCP_FASTOPEN
+#elif defined(__APPLE__) && defined(HAVE_CONNECTX)
+# define TFO_SUPPORTED 1
+# define TFO_SKIP_CONNECT 0
+# define TFO_USE_SENDTO 0
+# define TFO_USE_CONNECTX 1
+# undef TFO_CLIENT_SOCKOPT
+#else
+# define TFO_SUPPORTED 0
+#endif
+
+#ifndef HAVE_WRITEV
+/* Structure for scatter/gather I/O. */
+struct iovec {
+ void *iov_base; /* Pointer to data. */
+ size_t iov_len; /* Length of data. */
+};
+#endif
+
+ares_status_t
+ ares_set_socket_functions_ex(ares_channel_t *channel,
+ const struct ares_socket_functions_ex *funcs,
+ void *user_data)
+{
+ unsigned int known_versions[] = { 1 };
+ size_t i;
+
+ if (channel == NULL || funcs == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ /* Check to see if we know the version referenced */
+ for (i = 0; i < sizeof(known_versions) / sizeof(*known_versions); i++) {
+ if (funcs->version == known_versions[i]) {
+ break;
+ }
+ }
+ if (i == sizeof(known_versions) / sizeof(*known_versions)) {
+ return ARES_EFORMERR;
+ }
+
+ memset(&channel->sock_funcs, 0, sizeof(channel->sock_funcs));
+
+ /* Copy individually for ABI compliance. memcpy() with a sizeof would do
+ * invalid reads */
+ if (funcs->version >= 1) {
+ if (funcs->asocket == NULL || funcs->aclose == NULL ||
+ funcs->asetsockopt == NULL || funcs->aconnect == NULL ||
+ funcs->arecvfrom == NULL || funcs->asendto == NULL) {
+ return ARES_EFORMERR;
+ }
+ channel->sock_funcs.version = funcs->version;
+ channel->sock_funcs.flags = funcs->flags;
+ channel->sock_funcs.asocket = funcs->asocket;
+ channel->sock_funcs.aclose = funcs->aclose;
+ channel->sock_funcs.asetsockopt = funcs->asetsockopt;
+ channel->sock_funcs.aconnect = funcs->aconnect;
+ channel->sock_funcs.arecvfrom = funcs->arecvfrom;
+ channel->sock_funcs.asendto = funcs->asendto;
+ channel->sock_funcs.agetsockname = funcs->agetsockname;
+ channel->sock_funcs.abind = funcs->abind;
+ }
+
+ /* Implement newer versions here ...*/
+
+
+ channel->sock_func_cb_data = user_data;
+
+ return ARES_SUCCESS;
+}
+
+static int setsocknonblock(ares_socket_t sockfd, /* operate on this */
+ int nonblock /* TRUE or FALSE */)
+{
+#if defined(HAVE_FCNTL_O_NONBLOCK)
+
+ /* most recent unix versions */
+ int flags;
+ flags = fcntl(sockfd, F_GETFL, 0);
+ if (nonblock) {
+ return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
+ } else {
+ return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK)); /* LCOV_EXCL_LINE */
+ }
+
+#elif defined(HAVE_IOCTL_FIONBIO)
+
+ /* older unix versions */
+ int flags = nonblock ? 1 : 0;
+ return ioctl(sockfd, FIONBIO, &flags);
+
+#elif defined(HAVE_IOCTLSOCKET_FIONBIO)
+
+# ifdef WATT32
+ char flags = nonblock ? 1 : 0;
+# else
+ /* Windows */
+ unsigned long flags = nonblock ? 1UL : 0UL;
+# endif
+ return ioctlsocket(sockfd, (long)FIONBIO, &flags);
+
+#elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO)
+
+ /* Amiga */
+ long flags = nonblock ? 1L : 0L;
+ return IoctlSocket(sockfd, FIONBIO, flags);
+
+#elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK)
+
+ /* BeOS */
+ long b = nonblock ? 1L : 0L;
+ return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
+
+#else
+# error "no non-blocking method was found/used/set"
+#endif
+}
+
+static int default_aclose(ares_socket_t sock, void *user_data)
+{
+ (void)user_data;
+
+#if defined(HAVE_CLOSESOCKET)
+ return closesocket(sock);
+#elif defined(HAVE_CLOSESOCKET_CAMEL)
+ return CloseSocket(sock);
+#elif defined(HAVE_CLOSE_S)
+ return close_s(sock);
+#else
+ return close(sock);
+#endif
+}
+
+static ares_socket_t default_asocket(int domain, int type, int protocol,
+ void *user_data)
+{
+ ares_socket_t s;
+ (void)user_data;
+
+ s = socket(domain, type, protocol);
+ if (s == ARES_SOCKET_BAD) {
+ return s;
+ }
+
+ if (setsocknonblock(s, 1) != 0) {
+ goto fail; /* LCOV_EXCL_LINE */
+ }
+
+#if defined(FD_CLOEXEC) && !defined(MSDOS)
+ /* Configure the socket fd as close-on-exec. */
+ if (fcntl(s, F_SETFD, FD_CLOEXEC) != 0) {
+ goto fail; /* LCOV_EXCL_LINE */
+ }
+#endif
+
+ /* No need to emit SIGPIPE on socket errors */
+#if defined(SO_NOSIGPIPE)
+ {
+ int opt = 1;
+ (void)setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, (void *)&opt, sizeof(opt));
+ }
+#endif
+
+
+ if (type == SOCK_STREAM) {
+ int opt = 1;
+
+#ifdef TCP_NODELAY
+ /*
+ * Disable the Nagle algorithm (only relevant for TCP sockets, and thus not
+ * in configure_socket). In general, in DNS lookups we're pretty much
+ * interested in firing off a single request and then waiting for a reply,
+ * so batching isn't very interesting.
+ */
+ if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void *)&opt, sizeof(opt)) !=
+ 0) {
+ goto fail;
+ }
+#endif
+ }
+
+#if defined(IPV6_V6ONLY) && defined(USE_WINSOCK)
+ /* Support for IPv4-mapped IPv6 addresses.
+ * Linux kernel, NetBSD, FreeBSD and Darwin: default is off;
+ * Windows Vista and later: default is on;
+ * DragonFly BSD: acts like off, and dummy setting;
+ * OpenBSD and earlier Windows: unsupported.
+ * Linux: controlled by /proc/sys/net/ipv6/bindv6only.
+ */
+ if (domain == PF_INET6) {
+ int on = 0;
+ (void)setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&on, sizeof(on));
+ }
+#endif
+
+ return s;
+
+fail:
+ default_aclose(s, user_data);
+ return ARES_SOCKET_BAD;
+}
+
+static int default_asetsockopt(ares_socket_t sock, ares_socket_opt_t opt,
+ const void *val, ares_socklen_t val_size,
+ void *user_data)
+{
+ switch (opt) {
+ case ARES_SOCKET_OPT_SENDBUF_SIZE:
+ if (val_size != sizeof(int)) {
+ SET_SOCKERRNO(EINVAL);
+ return -1;
+ }
+ return setsockopt(sock, SOL_SOCKET, SO_SNDBUF, val, val_size);
+
+ case ARES_SOCKET_OPT_RECVBUF_SIZE:
+ if (val_size != sizeof(int)) {
+ SET_SOCKERRNO(EINVAL);
+ return -1;
+ }
+ return setsockopt(sock, SOL_SOCKET, SO_RCVBUF, val, val_size);
+
+ case ARES_SOCKET_OPT_BIND_DEVICE:
+ if (!ares_str_isprint(val, (size_t)val_size)) {
+ SET_SOCKERRNO(EINVAL);
+ return -1;
+ }
+#ifdef SO_BINDTODEVICE
+ return setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, val, val_size);
+#else
+ SET_SOCKERRNO(ENOSYS);
+ return -1;
+#endif
+
+ case ARES_SOCKET_OPT_TCP_FASTOPEN:
+ if (val_size != sizeof(ares_bool_t)) {
+ SET_SOCKERRNO(EINVAL);
+ return -1;
+ }
+#if defined(TFO_CLIENT_SOCKOPT)
+ {
+ int oval;
+ const ares_bool_t *pval = val;
+ oval = (int)*pval;
+ return setsockopt(sock, IPPROTO_TCP, TFO_CLIENT_SOCKOPT, (void *)&oval,
+ sizeof(oval));
+ }
+#elif TFO_SUPPORTED
+ return 0;
+#else
+ SET_SOCKERRNO(ENOSYS);
+ return -1;
+#endif
+ }
+
+ (void)user_data;
+ SET_SOCKERRNO(ENOSYS);
+ return -1;
+}
+
+static int default_aconnect(ares_socket_t sock, const struct sockaddr *address,
+ ares_socklen_t address_len, unsigned int flags,
+ void *user_data)
+{
+ (void)user_data;
+
+#if defined(TFO_SKIP_CONNECT) && TFO_SKIP_CONNECT
+ if (flags & ARES_SOCKET_CONN_TCP_FASTOPEN) {
+ return 0;
+ }
+ return connect(sock, address, address_len);
+#elif defined(TFO_USE_CONNECTX) && TFO_USE_CONNECTX
+ if (flags & ARES_SOCKET_CONN_TCP_FASTOPEN) {
+ sa_endpoints_t endpoints;
+
+ memset(&endpoints, 0, sizeof(endpoints));
+ endpoints.sae_dstaddr = address;
+ endpoints.sae_dstaddrlen = address_len;
+
+ return connectx(sock, &endpoints, SAE_ASSOCID_ANY,
+ CONNECT_DATA_IDEMPOTENT | CONNECT_RESUME_ON_READ_WRITE,
+ NULL, 0, NULL, NULL);
+ } else {
+ return connect(sock, address, address_len);
+ }
+#else
+ (void)flags;
+ return connect(sock, address, address_len);
+#endif
+}
+
+static ares_ssize_t default_arecvfrom(ares_socket_t sock, void *buffer,
+ size_t length, int flags,
+ struct sockaddr *address,
+ ares_socklen_t *address_len,
+ void *user_data)
+{
+ (void)user_data;
+
+#ifdef HAVE_RECVFROM
+ return (ares_ssize_t)recvfrom(sock, buffer, (RECVFROM_TYPE_ARG3)length, flags,
+ address, address_len);
+#else
+ if (address != NULL && address_len != NULL) {
+ memset(address, 0, (size_t)*address_len);
+ address->sa_family = AF_UNSPEC;
+ }
+ return (ares_ssize_t)recv(sock, buffer, (RECVFROM_TYPE_ARG3)length, flags);
+#endif
+}
+
+static ares_ssize_t default_asendto(ares_socket_t sock, const void *buffer,
+ size_t length, int flags,
+ const struct sockaddr *address,
+ ares_socklen_t address_len, void *user_data)
+{
+ (void)user_data;
+
+ if (address != NULL) {
+#ifdef HAVE_SENDTO
+ return (ares_ssize_t)sendto((SEND_TYPE_ARG1)sock, (SEND_TYPE_ARG2)buffer,
+ (SEND_TYPE_ARG3)length, (SEND_TYPE_ARG4)flags,
+ address, address_len);
+#else
+ (void)address_len;
+#endif
+ }
+
+ return (ares_ssize_t)send((SEND_TYPE_ARG1)sock, (SEND_TYPE_ARG2)buffer,
+ (SEND_TYPE_ARG3)length, (SEND_TYPE_ARG4)flags);
+}
+
+static int default_agetsockname(ares_socket_t sock, struct sockaddr *address,
+ ares_socklen_t *address_len, void *user_data)
+{
+ (void)user_data;
+ return getsockname(sock, address, address_len);
+}
+
+static int default_abind(ares_socket_t sock, unsigned int flags,
+ const struct sockaddr *address, socklen_t address_len,
+ void *user_data)
+{
+ (void)user_data;
+
+#ifdef IP_BIND_ADDRESS_NO_PORT
+ if (flags & ARES_SOCKET_BIND_TCP && flags & ARES_SOCKET_BIND_CLIENT) {
+ int opt = 1;
+ (void)setsockopt(sock, SOL_IP, IP_BIND_ADDRESS_NO_PORT, &opt, sizeof(opt));
+ }
+#else
+ (void)flags;
+#endif
+
+ return bind(sock, address, address_len);
+}
+
+static unsigned int default_aif_nametoindex(const char *ifname, void *user_data)
+{
+ (void)user_data;
+ return ares_os_if_nametoindex(ifname);
+}
+
+static const char *default_aif_indextoname(unsigned int ifindex,
+ char *ifname_buf,
+ size_t ifname_buf_len,
+ void *user_data)
+{
+ (void)user_data;
+ return ares_os_if_indextoname(ifindex, ifname_buf, ifname_buf_len);
+}
+
+static const struct ares_socket_functions_ex default_socket_functions = {
+ 1,
+ ARES_SOCKFUNC_FLAG_NONBLOCKING,
+ default_asocket,
+ default_aclose,
+ default_asetsockopt,
+ default_aconnect,
+ default_arecvfrom,
+ default_asendto,
+ default_agetsockname,
+ default_abind,
+ default_aif_nametoindex,
+ default_aif_indextoname
+};
+
+void ares_set_socket_functions_def(ares_channel_t *channel)
+{
+ ares_set_socket_functions_ex(channel, &default_socket_functions, NULL);
+}
+
+static int legacycb_aclose(ares_socket_t sock, void *user_data)
+{
+ ares_channel_t *channel = user_data;
+
+ if (channel->legacy_sock_funcs != NULL &&
+ channel->legacy_sock_funcs->aclose != NULL) {
+ return channel->legacy_sock_funcs->aclose(
+ sock, channel->legacy_sock_funcs_cb_data);
+ }
+
+ return default_aclose(sock, NULL);
+}
+
+static ares_socket_t legacycb_asocket(int domain, int type, int protocol,
+ void *user_data)
+{
+ ares_channel_t *channel = user_data;
+
+ if (channel->legacy_sock_funcs != NULL &&
+ channel->legacy_sock_funcs->asocket != NULL) {
+ return channel->legacy_sock_funcs->asocket(
+ domain, type, protocol, channel->legacy_sock_funcs_cb_data);
+ }
+
+ return default_asocket(domain, type, protocol, NULL);
+}
+
+static int legacycb_asetsockopt(ares_socket_t sock, ares_socket_opt_t opt,
+ const void *val, ares_socklen_t val_size,
+ void *user_data)
+{
+ (void)sock;
+ (void)opt;
+ (void)val;
+ (void)val_size;
+ (void)user_data;
+ SET_SOCKERRNO(ENOSYS);
+ return -1;
+}
+
+static int legacycb_aconnect(ares_socket_t sock, const struct sockaddr *address,
+ ares_socklen_t address_len, unsigned int flags,
+ void *user_data)
+{
+ ares_channel_t *channel = user_data;
+
+ if (channel->legacy_sock_funcs != NULL &&
+ channel->legacy_sock_funcs->aconnect != NULL) {
+ return channel->legacy_sock_funcs->aconnect(
+ sock, address, address_len, channel->legacy_sock_funcs_cb_data);
+ }
+
+ return default_aconnect(sock, address, address_len, flags, NULL);
+}
+
+static ares_ssize_t legacycb_arecvfrom(ares_socket_t sock, void *buffer,
+ size_t length, int flags,
+ struct sockaddr *address,
+ ares_socklen_t *address_len,
+ void *user_data)
+{
+ ares_channel_t *channel = user_data;
+
+ if (channel->legacy_sock_funcs != NULL &&
+ channel->legacy_sock_funcs->arecvfrom != NULL) {
+ if (address != NULL && address_len != NULL) {
+ memset(address, 0, (size_t)*address_len);
+ address->sa_family = AF_UNSPEC;
+ }
+ return channel->legacy_sock_funcs->arecvfrom(
+ sock, buffer, length, flags, address, address_len,
+ channel->legacy_sock_funcs_cb_data);
+ }
+
+ return default_arecvfrom(sock, buffer, length, flags, address, address_len,
+ NULL);
+}
+
+static ares_ssize_t legacycb_asendto(ares_socket_t sock, const void *buffer,
+ size_t length, int flags,
+ const struct sockaddr *address,
+ ares_socklen_t address_len,
+ void *user_data)
+{
+ ares_channel_t *channel = user_data;
+
+ if (channel->legacy_sock_funcs != NULL &&
+ channel->legacy_sock_funcs->asendv != NULL) {
+ struct iovec vec;
+ vec.iov_base = (void *)((size_t)buffer); /* Cast off const */
+ vec.iov_len = length;
+ return channel->legacy_sock_funcs->asendv(
+ sock, &vec, 1, channel->legacy_sock_funcs_cb_data);
+ }
+
+ return default_asendto(sock, buffer, length, flags, address, address_len,
+ NULL);
+}
+
+
+static const struct ares_socket_functions_ex legacy_socket_functions = {
+ 1,
+ 0,
+ legacycb_asocket,
+ legacycb_aclose,
+ legacycb_asetsockopt,
+ legacycb_aconnect,
+ legacycb_arecvfrom,
+ legacycb_asendto,
+ NULL, /* agetsockname */
+ NULL, /* abind */
+ NULL, /* aif_nametoindex */
+ NULL /* aif_indextoname */
+};
+
+void ares_set_socket_functions(ares_channel_t *channel,
+ const struct ares_socket_functions *funcs,
+ void *data)
+{
+ if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
+ return;
+ }
+
+ channel->legacy_sock_funcs = funcs;
+ channel->legacy_sock_funcs_cb_data = data;
+ ares_set_socket_functions_ex(channel, &legacy_socket_functions, channel);
+}
diff --git a/contrib/libs/c-ares/src/lib/ares_setup.h b/contrib/libs/c-ares/src/lib/ares_setup.h
index d771e4e141..604851b318 100644
--- a/contrib/libs/c-ares/src/lib/ares_setup.h
+++ b/contrib/libs/c-ares/src/lib/ares_setup.h
@@ -199,51 +199,15 @@
#endif
-#ifdef __hpux
-# if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL)
-# ifdef _APP32_64BIT_OFF_T
-# define OLD_APP32_64BIT_OFF_T _APP32_64BIT_OFF_T
-# undef _APP32_64BIT_OFF_T
-# else
-# undef OLD_APP32_64BIT_OFF_T
-# endif
-# endif
-#endif
-
-#ifdef __hpux
-# if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL)
-# ifdef OLD_APP32_64BIT_OFF_T
-# define _APP32_64BIT_OFF_T OLD_APP32_64BIT_OFF_T
-# undef OLD_APP32_64BIT_OFF_T
-# endif
-# endif
-#endif
-
-
-/*
- * Definition of timeval struct for platforms that don't have it.
- */
+/* Definition of timeval struct for platforms that don't have it. */
#ifndef HAVE_STRUCT_TIMEVAL
struct timeval {
- long tv_sec;
- long tv_usec;
+ ares_int64_t tv_sec;
+ long tv_usec;
};
#endif
-/*
- * Function-like macro definition used to close a socket.
- */
-
-#if defined(HAVE_CLOSESOCKET)
-# define sclose(x) closesocket((x))
-#elif defined(HAVE_CLOSESOCKET_CAMEL)
-# define sclose(x) CloseSocket((x))
-#elif defined(HAVE_CLOSE_S)
-# define sclose(x) close_s((x))
-#else
-# define sclose(x) close((x))
-#endif
/*
* Macro used to include code only in debug builds.
@@ -257,111 +221,4 @@ struct timeval {
} while (0)
#endif
-/*
- * Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
- * (or equivalent) on this platform to hide platform details to code using it.
- */
-
-#ifdef USE_WINSOCK
-# define SOCKERRNO ((int)WSAGetLastError())
-# define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
-#else
-# define SOCKERRNO (errno)
-# define SET_SOCKERRNO(x) (errno = (x))
-#endif
-
-
-/*
- * Macro ERRNO / SET_ERRNO() returns / sets the NOT *socket-related* errno
- * (or equivalent) on this platform to hide platform details to code using it.
- */
-
-#if defined(WIN32) && !defined(WATT32)
-# define ERRNO ((int)GetLastError())
-# define SET_ERRNO(x) (SetLastError((DWORD)(x)))
-#else
-# define ERRNO (errno)
-# define SET_ERRNO(x) (errno = (x))
-#endif
-
-
-/*
- * Portable error number symbolic names defined to Winsock error codes.
- */
-
-#ifdef USE_WINSOCK
-# undef EBADF /* override definition in errno.h */
-# define EBADF WSAEBADF
-# undef EINTR /* override definition in errno.h */
-# define EINTR WSAEINTR
-# undef EINVAL /* override definition in errno.h */
-# define EINVAL WSAEINVAL
-# undef EWOULDBLOCK /* override definition in errno.h */
-# define EWOULDBLOCK WSAEWOULDBLOCK
-# undef EINPROGRESS /* override definition in errno.h */
-# define EINPROGRESS WSAEINPROGRESS
-# undef EALREADY /* override definition in errno.h */
-# define EALREADY WSAEALREADY
-# undef ENOTSOCK /* override definition in errno.h */
-# define ENOTSOCK WSAENOTSOCK
-# undef EDESTADDRREQ /* override definition in errno.h */
-# define EDESTADDRREQ WSAEDESTADDRREQ
-# undef EMSGSIZE /* override definition in errno.h */
-# define EMSGSIZE WSAEMSGSIZE
-# undef EPROTOTYPE /* override definition in errno.h */
-# define EPROTOTYPE WSAEPROTOTYPE
-# undef ENOPROTOOPT /* override definition in errno.h */
-# define ENOPROTOOPT WSAENOPROTOOPT
-# undef EPROTONOSUPPORT /* override definition in errno.h */
-# define EPROTONOSUPPORT WSAEPROTONOSUPPORT
-# define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
-# undef EOPNOTSUPP /* override definition in errno.h */
-# define EOPNOTSUPP WSAEOPNOTSUPP
-# define EPFNOSUPPORT WSAEPFNOSUPPORT
-# undef EAFNOSUPPORT /* override definition in errno.h */
-# define EAFNOSUPPORT WSAEAFNOSUPPORT
-# undef EADDRINUSE /* override definition in errno.h */
-# define EADDRINUSE WSAEADDRINUSE
-# undef EADDRNOTAVAIL /* override definition in errno.h */
-# define EADDRNOTAVAIL WSAEADDRNOTAVAIL
-# undef ENETDOWN /* override definition in errno.h */
-# define ENETDOWN WSAENETDOWN
-# undef ENETUNREACH /* override definition in errno.h */
-# define ENETUNREACH WSAENETUNREACH
-# undef ENETRESET /* override definition in errno.h */
-# define ENETRESET WSAENETRESET
-# undef ECONNABORTED /* override definition in errno.h */
-# define ECONNABORTED WSAECONNABORTED
-# undef ECONNRESET /* override definition in errno.h */
-# define ECONNRESET WSAECONNRESET
-# undef ENOBUFS /* override definition in errno.h */
-# define ENOBUFS WSAENOBUFS
-# undef EISCONN /* override definition in errno.h */
-# define EISCONN WSAEISCONN
-# undef ENOTCONN /* override definition in errno.h */
-# define ENOTCONN WSAENOTCONN
-# define ESHUTDOWN WSAESHUTDOWN
-# define ETOOMANYREFS WSAETOOMANYREFS
-# undef ETIMEDOUT /* override definition in errno.h */
-# define ETIMEDOUT WSAETIMEDOUT
-# undef ECONNREFUSED /* override definition in errno.h */
-# define ECONNREFUSED WSAECONNREFUSED
-# undef ELOOP /* override definition in errno.h */
-# define ELOOP WSAELOOP
-# ifndef ENAMETOOLONG /* possible previous definition in errno.h */
-# define ENAMETOOLONG WSAENAMETOOLONG
-# endif
-# define EHOSTDOWN WSAEHOSTDOWN
-# undef EHOSTUNREACH /* override definition in errno.h */
-# define EHOSTUNREACH WSAEHOSTUNREACH
-# ifndef ENOTEMPTY /* possible previous definition in errno.h */
-# define ENOTEMPTY WSAENOTEMPTY
-# endif
-# define EPROCLIM WSAEPROCLIM
-# define EUSERS WSAEUSERS
-# define EDQUOT WSAEDQUOT
-# define ESTALE WSAESTALE
-# define EREMOTE WSAEREMOTE
-#endif
-
#endif /* __ARES_SETUP_H */
diff --git a/contrib/libs/c-ares/src/lib/ares_socket.c b/contrib/libs/c-ares/src/lib/ares_socket.c
new file mode 100644
index 0000000000..df02fd61b6
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/ares_socket.c
@@ -0,0 +1,424 @@
+/* MIT License
+ *
+ * Copyright (c) Massachusetts Institute of Technology
+ * Copyright (c) The c-ares project and its contributors
+ *
+ * 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_private.h"
+#ifdef HAVE_SYS_UIO_H
+# include <sys/uio.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+# include <netinet/tcp.h>
+#endif
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+#endif
+#ifdef HAVE_ARPA_INET_H
+# include <arpa/inet.h>
+#endif
+
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+#endif
+#ifdef NETWARE
+# include <sys/filio.h>
+#endif
+
+#include <assert.h>
+#include <fcntl.h>
+#include <limits.h>
+
+static ares_conn_err_t ares_socket_deref_error(int err)
+{
+ switch (err) {
+#if defined(EWOULDBLOCK)
+ case EWOULDBLOCK:
+ return ARES_CONN_ERR_WOULDBLOCK;
+#endif
+#if defined(EAGAIN) && (!defined(EWOULDBLOCK) || EAGAIN != EWOULDBLOCK)
+ case EAGAIN:
+ return ARES_CONN_ERR_WOULDBLOCK;
+#endif
+ case EINPROGRESS:
+ return ARES_CONN_ERR_WOULDBLOCK;
+ case ENETDOWN:
+ return ARES_CONN_ERR_NETDOWN;
+ case ENETUNREACH:
+ return ARES_CONN_ERR_NETUNREACH;
+ case ECONNABORTED:
+ return ARES_CONN_ERR_CONNABORTED;
+ case ECONNRESET:
+ return ARES_CONN_ERR_CONNRESET;
+ case ECONNREFUSED:
+ return ARES_CONN_ERR_CONNREFUSED;
+ case ETIMEDOUT:
+ return ARES_CONN_ERR_CONNTIMEDOUT;
+ case EHOSTDOWN:
+ return ARES_CONN_ERR_HOSTDOWN;
+ case EHOSTUNREACH:
+ return ARES_CONN_ERR_HOSTUNREACH;
+ case EINTR:
+ return ARES_CONN_ERR_INTERRUPT;
+ case EAFNOSUPPORT:
+ return ARES_CONN_ERR_AFNOSUPPORT;
+ case EADDRNOTAVAIL:
+ return ARES_CONN_ERR_BADADDR;
+ default:
+ break;
+ }
+
+ return ARES_CONN_ERR_FAILURE;
+}
+
+ares_bool_t ares_sockaddr_addr_eq(const struct sockaddr *sa,
+ const struct ares_addr *aa)
+{
+ const void *addr1;
+ const void *addr2;
+
+ if (sa->sa_family == aa->family) {
+ switch (aa->family) {
+ case AF_INET:
+ addr1 = &aa->addr.addr4;
+ addr2 = &(CARES_INADDR_CAST(const struct sockaddr_in *, sa))->sin_addr;
+ if (memcmp(addr1, addr2, sizeof(aa->addr.addr4)) == 0) {
+ return ARES_TRUE; /* match */
+ }
+ break;
+ case AF_INET6:
+ addr1 = &aa->addr.addr6;
+ addr2 =
+ &(CARES_INADDR_CAST(const struct sockaddr_in6 *, sa))->sin6_addr;
+ if (memcmp(addr1, addr2, sizeof(aa->addr.addr6)) == 0) {
+ return ARES_TRUE; /* match */
+ }
+ break;
+ default:
+ break; /* LCOV_EXCL_LINE */
+ }
+ }
+ return ARES_FALSE; /* different */
+}
+
+ares_conn_err_t ares_socket_write(ares_channel_t *channel, ares_socket_t fd,
+ const void *data, size_t len, size_t *written,
+ const struct sockaddr *sa,
+ ares_socklen_t salen)
+{
+ int flags = 0;
+ ares_ssize_t rv;
+ ares_conn_err_t err = ARES_CONN_ERR_SUCCESS;
+
+#ifdef HAVE_MSG_NOSIGNAL
+ flags |= MSG_NOSIGNAL;
+#endif
+
+ rv = channel->sock_funcs.asendto(fd, data, len, flags, sa, salen,
+ channel->sock_func_cb_data);
+ if (rv <= 0) {
+ err = ares_socket_deref_error(SOCKERRNO);
+ } else {
+ *written = (size_t)rv;
+ }
+ return err;
+}
+
+ares_conn_err_t ares_socket_recv(ares_channel_t *channel, ares_socket_t s,
+ ares_bool_t is_tcp, void *data,
+ size_t data_len, size_t *read_bytes)
+{
+ ares_ssize_t rv;
+
+ *read_bytes = 0;
+
+ rv = channel->sock_funcs.arecvfrom(s, data, data_len, 0, NULL, 0,
+ channel->sock_func_cb_data);
+
+ if (rv > 0) {
+ *read_bytes = (size_t)rv;
+ return ARES_CONN_ERR_SUCCESS;
+ }
+
+ if (rv == 0) {
+ /* UDP allows 0-byte packets and is connectionless, so this is success */
+ if (!is_tcp) {
+ return ARES_CONN_ERR_SUCCESS;
+ } else {
+ return ARES_CONN_ERR_CONNCLOSED;
+ }
+ }
+
+ /* If we're here, rv<0 */
+ return ares_socket_deref_error(SOCKERRNO);
+}
+
+ares_conn_err_t ares_socket_recvfrom(ares_channel_t *channel, ares_socket_t s,
+ ares_bool_t is_tcp, void *data,
+ size_t data_len, int flags,
+ struct sockaddr *from,
+ ares_socklen_t *from_len,
+ size_t *read_bytes)
+{
+ ares_ssize_t rv;
+
+ rv = channel->sock_funcs.arecvfrom(s, data, data_len, flags, from, from_len,
+ channel->sock_func_cb_data);
+
+ if (rv > 0) {
+ *read_bytes = (size_t)rv;
+ return ARES_CONN_ERR_SUCCESS;
+ }
+
+ if (rv == 0) {
+ /* UDP allows 0-byte packets and is connectionless, so this is success */
+ if (!is_tcp) {
+ return ARES_CONN_ERR_SUCCESS;
+ } else {
+ return ARES_CONN_ERR_CONNCLOSED;
+ }
+ }
+
+ /* If we're here, rv<0 */
+ return ares_socket_deref_error(SOCKERRNO);
+}
+
+ares_conn_err_t ares_socket_enable_tfo(const ares_channel_t *channel,
+ ares_socket_t fd)
+{
+ ares_bool_t opt = ARES_TRUE;
+
+ if (channel->sock_funcs.asetsockopt(fd, ARES_SOCKET_OPT_TCP_FASTOPEN,
+ (void *)&opt, sizeof(opt),
+ channel->sock_func_cb_data) != 0) {
+ return ARES_CONN_ERR_NOTIMP;
+ }
+
+ return ARES_CONN_ERR_SUCCESS;
+}
+
+ares_status_t ares_socket_configure(ares_channel_t *channel, int family,
+ ares_bool_t is_tcp, ares_socket_t fd)
+{
+ union {
+ struct sockaddr sa;
+ struct sockaddr_in sa4;
+ struct sockaddr_in6 sa6;
+ } local;
+
+ ares_socklen_t bindlen = 0;
+ int rv;
+ unsigned int bind_flags = 0;
+
+ /* Set the socket's send and receive buffer sizes. */
+ if (channel->socket_send_buffer_size > 0) {
+ rv = channel->sock_funcs.asetsockopt(
+ fd, ARES_SOCKET_OPT_SENDBUF_SIZE,
+ (void *)&channel->socket_send_buffer_size,
+ sizeof(channel->socket_send_buffer_size), channel->sock_func_cb_data);
+ if (rv != 0 && SOCKERRNO != ENOSYS) {
+ return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */
+ }
+ }
+
+ if (channel->socket_receive_buffer_size > 0) {
+ rv = channel->sock_funcs.asetsockopt(
+ fd, ARES_SOCKET_OPT_RECVBUF_SIZE,
+ (void *)&channel->socket_receive_buffer_size,
+ sizeof(channel->socket_receive_buffer_size), channel->sock_func_cb_data);
+ if (rv != 0 && SOCKERRNO != ENOSYS) {
+ return ARES_ECONNREFUSED; /* LCOV_EXCL_LINE: UntestablePath */
+ }
+ }
+
+ /* Bind to network interface if configured */
+ if (ares_strlen(channel->local_dev_name)) {
+ /* Prior versions silently ignored failure, so we need to maintain that
+ * compatibility */
+ (void)channel->sock_funcs.asetsockopt(
+ fd, ARES_SOCKET_OPT_BIND_DEVICE, channel->local_dev_name,
+ sizeof(channel->local_dev_name), channel->sock_func_cb_data);
+ }
+
+ /* Bind to ip address if configured */
+ if (family == AF_INET && channel->local_ip4) {
+ memset(&local.sa4, 0, sizeof(local.sa4));
+ local.sa4.sin_family = AF_INET;
+ local.sa4.sin_addr.s_addr = htonl(channel->local_ip4);
+ bindlen = sizeof(local.sa4);
+ } else if (family == AF_INET6 &&
+ memcmp(channel->local_ip6, ares_in6addr_any._S6_un._S6_u8,
+ sizeof(channel->local_ip6)) != 0) {
+ /* Only if not link-local and an ip other than "::" is specified */
+ 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));
+ bindlen = sizeof(local.sa6);
+ }
+
+
+ if (bindlen && channel->sock_funcs.abind != NULL) {
+ bind_flags |= ARES_SOCKET_BIND_CLIENT;
+ if (is_tcp) {
+ bind_flags |= ARES_SOCKET_BIND_TCP;
+ }
+ if (channel->sock_funcs.abind(fd, bind_flags, &local.sa, bindlen,
+ channel->sock_func_cb_data) != 0) {
+ return ARES_ECONNREFUSED;
+ }
+ }
+
+ return ARES_SUCCESS;
+}
+
+ares_bool_t ares_sockaddr_to_ares_addr(struct ares_addr *ares_addr,
+ unsigned short *port,
+ const struct sockaddr *sockaddr)
+{
+ if (sockaddr->sa_family == AF_INET) {
+ /* NOTE: memcpy sockaddr_in due to alignment issues found by UBSAN due to
+ * dnsinfo packing on MacOS */
+ struct sockaddr_in sockaddr_in;
+ memcpy(&sockaddr_in, sockaddr, sizeof(sockaddr_in));
+
+ ares_addr->family = AF_INET;
+ memcpy(&ares_addr->addr.addr4, &(sockaddr_in.sin_addr),
+ sizeof(ares_addr->addr.addr4));
+
+ if (port) {
+ *port = ntohs(sockaddr_in.sin_port);
+ }
+ return ARES_TRUE;
+ }
+
+ if (sockaddr->sa_family == AF_INET6) {
+ /* NOTE: memcpy sockaddr_in6 due to alignment issues found by UBSAN due to
+ * dnsinfo packing on MacOS */
+ struct sockaddr_in6 sockaddr_in6;
+ memcpy(&sockaddr_in6, sockaddr, sizeof(sockaddr_in6));
+
+ ares_addr->family = AF_INET6;
+ memcpy(&ares_addr->addr.addr6, &(sockaddr_in6.sin6_addr),
+ sizeof(ares_addr->addr.addr6));
+ if (port) {
+ *port = ntohs(sockaddr_in6.sin6_port);
+ }
+ return ARES_TRUE;
+ }
+
+ return ARES_FALSE;
+}
+
+ares_conn_err_t ares_socket_open(ares_socket_t *sock, ares_channel_t *channel,
+ int af, int type, int protocol)
+{
+ ares_socket_t s;
+
+ *sock = ARES_SOCKET_BAD;
+
+ s =
+ channel->sock_funcs.asocket(af, type, protocol, channel->sock_func_cb_data);
+
+ if (s == ARES_SOCKET_BAD) {
+ return ares_socket_deref_error(SOCKERRNO);
+ }
+
+ *sock = s;
+
+ return ARES_CONN_ERR_SUCCESS;
+}
+
+ares_conn_err_t ares_socket_connect(ares_channel_t *channel,
+ ares_socket_t sockfd, ares_bool_t is_tfo,
+ const struct sockaddr *addr,
+ ares_socklen_t addrlen)
+{
+ ares_conn_err_t err = ARES_CONN_ERR_SUCCESS;
+ unsigned int flags = 0;
+
+ if (is_tfo) {
+ flags |= ARES_SOCKET_CONN_TCP_FASTOPEN;
+ }
+
+ do {
+ int rv;
+
+ rv = channel->sock_funcs.aconnect(sockfd, addr, addrlen, flags,
+ channel->sock_func_cb_data);
+
+ if (rv < 0) {
+ err = ares_socket_deref_error(SOCKERRNO);
+ } else {
+ err = ARES_CONN_ERR_SUCCESS;
+ }
+ } while (err == ARES_CONN_ERR_INTERRUPT);
+
+ return err;
+}
+
+void ares_socket_close(ares_channel_t *channel, ares_socket_t s)
+{
+ if (channel == NULL || s == ARES_SOCKET_BAD) {
+ return;
+ }
+
+ channel->sock_funcs.aclose(s, channel->sock_func_cb_data);
+}
+
+void ares_set_socket_callback(ares_channel_t *channel,
+ ares_sock_create_callback cb, void *data)
+{
+ if (channel == NULL) {
+ return;
+ }
+ channel->sock_create_cb = cb;
+ channel->sock_create_cb_data = data;
+}
+
+void ares_set_socket_configure_callback(ares_channel_t *channel,
+ ares_sock_config_callback cb,
+ void *data)
+{
+ if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
+ return;
+ }
+ channel->sock_config_cb = cb;
+ channel->sock_config_cb_data = data;
+}
+
+void ares_set_pending_write_cb(ares_channel_t *channel,
+ ares_pending_write_cb callback, void *user_data)
+{
+ if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
+ return;
+ }
+ channel->notify_pending_write_cb = callback;
+ channel->notify_pending_write_cb_data = user_data;
+}
diff --git a/contrib/libs/c-ares/src/lib/ares_socket.h b/contrib/libs/c-ares/src/lib/ares_socket.h
new file mode 100644
index 0000000000..24a99ab331
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/ares_socket.h
@@ -0,0 +1,163 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_SOCKET_H
+#define __ARES_SOCKET_H
+
+/* Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
+ * (or equivalent) on this platform to hide platform details to code using it.
+ */
+#ifdef USE_WINSOCK
+# define SOCKERRNO ((int)WSAGetLastError())
+# define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
+#else
+# define SOCKERRNO (errno)
+# define SET_SOCKERRNO(x) (errno = (x))
+#endif
+
+/* Portable error number symbolic names defined to Winsock error codes. */
+#ifdef USE_WINSOCK
+# undef EBADF /* override definition in errno.h */
+# define EBADF WSAEBADF
+# undef EINTR /* override definition in errno.h */
+# define EINTR WSAEINTR
+# undef EINVAL /* override definition in errno.h */
+# define EINVAL WSAEINVAL
+# undef EWOULDBLOCK /* override definition in errno.h */
+# define EWOULDBLOCK WSAEWOULDBLOCK
+# undef EINPROGRESS /* override definition in errno.h */
+# define EINPROGRESS WSAEINPROGRESS
+# undef EALREADY /* override definition in errno.h */
+# define EALREADY WSAEALREADY
+# undef ENOTSOCK /* override definition in errno.h */
+# define ENOTSOCK WSAENOTSOCK
+# undef EDESTADDRREQ /* override definition in errno.h */
+# define EDESTADDRREQ WSAEDESTADDRREQ
+# undef EMSGSIZE /* override definition in errno.h */
+# define EMSGSIZE WSAEMSGSIZE
+# undef EPROTOTYPE /* override definition in errno.h */
+# define EPROTOTYPE WSAEPROTOTYPE
+# undef ENOPROTOOPT /* override definition in errno.h */
+# define ENOPROTOOPT WSAENOPROTOOPT
+# undef EPROTONOSUPPORT /* override definition in errno.h */
+# define EPROTONOSUPPORT WSAEPROTONOSUPPORT
+# define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
+# undef EOPNOTSUPP /* override definition in errno.h */
+# define EOPNOTSUPP WSAEOPNOTSUPP
+# undef ENOSYS /* override definition in errno.h */
+# define ENOSYS 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
+
+/*! Socket errors */
+typedef enum {
+ ARES_CONN_ERR_SUCCESS = 0, /*!< Success */
+ ARES_CONN_ERR_WOULDBLOCK = 1, /*!< Operation would block */
+ ARES_CONN_ERR_CONNCLOSED = 2, /*!< Connection closed (gracefully) */
+ ARES_CONN_ERR_CONNABORTED = 3, /*!< Connection Aborted */
+ ARES_CONN_ERR_CONNRESET = 4, /*!< Connection Reset */
+ ARES_CONN_ERR_CONNREFUSED = 5, /*!< Connection Refused */
+ ARES_CONN_ERR_CONNTIMEDOUT = 6, /*!< Connection Timed Out */
+ ARES_CONN_ERR_HOSTDOWN = 7, /*!< Host Down */
+ ARES_CONN_ERR_HOSTUNREACH = 8, /*!< Host Unreachable */
+ ARES_CONN_ERR_NETDOWN = 9, /*!< Network Down */
+ ARES_CONN_ERR_NETUNREACH = 10, /*!< Network Unreachable */
+ ARES_CONN_ERR_INTERRUPT = 11, /*!< Call interrupted by signal, repeat */
+ ARES_CONN_ERR_AFNOSUPPORT = 12, /*!< Address family not supported */
+ ARES_CONN_ERR_BADADDR = 13, /*!< Bad Address / Unavailable */
+ ARES_CONN_ERR_NOMEM = 14, /*!< Out of memory */
+ ARES_CONN_ERR_INVALID = 15, /*!< Invalid Usage */
+ ARES_CONN_ERR_TOOLARGE = 16, /*!< Request size too large */
+ ARES_CONN_ERR_NOTIMP = 17, /*!< Not implemented */
+ ARES_CONN_ERR_FAILURE = 99 /*!< Generic failure */
+} ares_conn_err_t;
+
+ares_bool_t ares_sockaddr_addr_eq(const struct sockaddr *sa,
+ const struct ares_addr *aa);
+ares_status_t ares_socket_configure(ares_channel_t *channel, int family,
+ ares_bool_t is_tcp, ares_socket_t fd);
+ares_conn_err_t ares_socket_enable_tfo(const ares_channel_t *channel,
+ ares_socket_t fd);
+ares_conn_err_t ares_socket_open(ares_socket_t *sock, ares_channel_t *channel,
+ int af, int type, int protocol);
+ares_bool_t ares_socket_try_again(int errnum);
+void ares_socket_close(ares_channel_t *channel, ares_socket_t s);
+ares_conn_err_t ares_socket_connect(ares_channel_t *channel,
+ ares_socket_t sockfd, ares_bool_t is_tfo,
+ const struct sockaddr *addr,
+ ares_socklen_t addrlen);
+ares_bool_t ares_sockaddr_to_ares_addr(struct ares_addr *ares_addr,
+ unsigned short *port,
+ const struct sockaddr *sockaddr);
+ares_conn_err_t ares_socket_write(ares_channel_t *channel, ares_socket_t fd,
+ const void *data, size_t len, size_t *written,
+ const struct sockaddr *sa,
+ ares_socklen_t salen);
+#endif
diff --git a/contrib/libs/c-ares/src/lib/ares__sortaddrinfo.c b/contrib/libs/c-ares/src/lib/ares_sortaddrinfo.c
index 1aab81ecf8..e6c21ea0ad 100644
--- a/contrib/libs/c-ares/src/lib/ares__sortaddrinfo.c
+++ b/contrib/libs/c-ares/src/lib/ares_sortaddrinfo.c
@@ -345,8 +345,9 @@ static int rfc6724_compare(const void *ptr1, const void *ptr2)
static int find_src_addr(ares_channel_t *channel, const struct sockaddr *addr,
struct sockaddr *src_addr)
{
- ares_socket_t sock;
- ares_socklen_t len;
+ ares_socket_t sock;
+ ares_socklen_t len;
+ ares_conn_err_t err;
switch (addr->sa_family) {
case AF_INET:
@@ -360,25 +361,27 @@ static int find_src_addr(ares_channel_t *channel, const struct sockaddr *addr,
return 0;
}
- sock = ares__open_socket(channel, addr->sa_family, SOCK_DGRAM, IPPROTO_UDP);
- if (sock == ARES_SOCKET_BAD) {
- if (SOCKERRNO == EAFNOSUPPORT) {
- return 0;
- } else {
- return -1;
- }
+ err =
+ ares_socket_open(&sock, channel, addr->sa_family, SOCK_DGRAM, IPPROTO_UDP);
+ if (err == ARES_CONN_ERR_AFNOSUPPORT) {
+ return 0;
+ } else if (err != ARES_CONN_ERR_SUCCESS) {
+ return -1;
}
- if (ares__connect_socket(channel, sock, addr, len) != ARES_SUCCESS) {
- ares__close_socket(channel, sock);
+ err = ares_socket_connect(channel, sock, ARES_FALSE, addr, len);
+ if (err != ARES_CONN_ERR_SUCCESS && err != ARES_CONN_ERR_WOULDBLOCK) {
+ ares_socket_close(channel, sock);
return 0;
}
- if (getsockname(sock, src_addr, &len) != 0) {
- ares__close_socket(channel, sock);
+ if (channel->sock_funcs.agetsockname == NULL ||
+ channel->sock_funcs.agetsockname(sock, src_addr, &len,
+ channel->sock_func_cb_data) != 0) {
+ ares_socket_close(channel, sock);
return -1;
}
- ares__close_socket(channel, sock);
+ ares_socket_close(channel, sock);
return 1;
}
@@ -386,8 +389,8 @@ static int find_src_addr(ares_channel_t *channel, const struct sockaddr *addr,
* Sort the linked list starting at sentinel->ai_next in RFC6724 order.
* Will leave the list unchanged if an error occurs.
*/
-ares_status_t ares__sortaddrinfo(ares_channel_t *channel,
- struct ares_addrinfo_node *list_sentinel)
+ares_status_t ares_sortaddrinfo(ares_channel_t *channel,
+ struct ares_addrinfo_node *list_sentinel)
{
struct ares_addrinfo_node *cur;
size_t nelem = 0;
diff --git a/contrib/libs/c-ares/src/lib/ares_sysconfig.c b/contrib/libs/c-ares/src/lib/ares_sysconfig.c
index 61e6a423a7..9f0d7e5061 100644
--- a/contrib/libs/c-ares/src/lib/ares_sysconfig.c
+++ b/contrib/libs/c-ares/src/lib/ares_sysconfig.c
@@ -56,11 +56,11 @@
#endif
#include "ares_inet_net_pton.h"
-#include "ares_platform.h"
#if defined(__MVS__)
-static ares_status_t ares__init_sysconfig_mvs(ares_sysconfig_t *sysconfig)
+static ares_status_t ares_init_sysconfig_mvs(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
struct __res_state *res = 0;
size_t count4;
@@ -99,9 +99,9 @@ static ares_status_t ares__init_sysconfig_mvs(ares_sysconfig_t *sysconfig)
addr.addr.addr4.s_addr = addr_in->sin_addr.s_addr;
addr.family = AF_INET;
- status =
- ares__sconfig_append(&sysconfig->sconfig, &addr, htons(addr_in->sin_port),
- htons(addr_in->sin_port), NULL);
+ status = ares_sconfig_append(channel, &sysconfig->sconfig, &addr,
+ htons(addr_in->sin_port),
+ htons(addr_in->sin_port), NULL);
if (status != ARES_SUCCESS) {
return status;
@@ -116,9 +116,9 @@ static ares_status_t ares__init_sysconfig_mvs(ares_sysconfig_t *sysconfig)
memcpy(&(addr.addr.addr6), &(addr_in->sin6_addr),
sizeof(addr_in->sin6_addr));
- status =
- ares__sconfig_append(&sysconfig->sconfig, &addr, htons(addr_in->sin_port),
- htons(addr_in->sin_port), NULL);
+ status = ares_sconfig_append(channel, &sysconfig->sconfig, &addr,
+ htons(addr_in->sin_port),
+ htons(addr_in->sin_port), NULL);
if (status != ARES_SUCCESS) {
return status;
@@ -130,7 +130,8 @@ static ares_status_t ares__init_sysconfig_mvs(ares_sysconfig_t *sysconfig)
#endif
#if defined(__riscos__)
-static ares_status_t ares__init_sysconfig_riscos(ares_sysconfig_t *sysconfig)
+static ares_status_t ares_init_sysconfig_riscos(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
char *line;
ares_status_t status = ARES_SUCCESS;
@@ -153,8 +154,8 @@ static ares_status_t ares__init_sysconfig_riscos(ares_sysconfig_t *sysconfig)
if (space) {
*space = '\0';
}
- status =
- ares__sconfig_append_fromstr(&sysconfig->sconfig, pos, ARES_TRUE);
+ status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig, pos,
+ ARES_TRUE);
if (status != ARES_SUCCESS) {
break;
}
@@ -169,7 +170,8 @@ static ares_status_t ares__init_sysconfig_riscos(ares_sysconfig_t *sysconfig)
#endif
#if defined(WATT32)
-static ares_status_t ares__init_sysconfig_watt32(ares_sysconfig_t *sysconfig)
+static ares_status_t ares_init_sysconfig_watt32(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
size_t i;
ares_status_t status;
@@ -182,7 +184,8 @@ static ares_status_t ares__init_sysconfig_watt32(ares_sysconfig_t *sysconfig)
addr.family = AF_INET;
addr.addr.addr4.s_addr = htonl(def_nameservers[i]);
- status = ares__sconfig_append(&sysconfig->sconfig, &addr, 0, 0, NULL);
+ status =
+ ares_sconfig_append(channel, &sysconfig->sconfig, &addr, 0, 0, NULL);
if (status != ARES_SUCCESS) {
return status;
@@ -194,7 +197,8 @@ static ares_status_t ares__init_sysconfig_watt32(ares_sysconfig_t *sysconfig)
#endif
#if defined(ANDROID) || defined(__ANDROID__)
-static ares_status_t ares__init_sysconfig_android(ares_sysconfig_t *sysconfig)
+static ares_status_t ares_init_sysconfig_android(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
size_t i;
char **dns_servers;
@@ -211,8 +215,8 @@ static ares_status_t ares__init_sysconfig_android(ares_sysconfig_t *sysconfig)
dns_servers = ares_get_android_server_list(MAX_DNS_PROPERTIES, &num_servers);
if (dns_servers != NULL) {
for (i = 0; i < num_servers; i++) {
- status = ares__sconfig_append_fromstr(&sysconfig->sconfig, dns_servers[i],
- ARES_TRUE);
+ status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig,
+ dns_servers[i], ARES_TRUE);
if (status != ARES_SUCCESS) {
return status;
}
@@ -224,7 +228,7 @@ static ares_status_t ares__init_sysconfig_android(ares_sysconfig_t *sysconfig)
}
domains = ares_get_android_search_domains_list();
- sysconfig->domains = ares__strsplit(domains, ", ", &sysconfig->ndomains);
+ sysconfig->domains = ares_strsplit(domains, ", ", &sysconfig->ndomains);
ares_free(domains);
# ifdef HAVE___SYSTEM_PROPERTY_GET
@@ -243,8 +247,8 @@ static ares_status_t ares__init_sysconfig_android(ares_sysconfig_t *sysconfig)
if (__system_property_get(propname, propvalue) < 1) {
break;
}
- status =
- ares__sconfig_append_fromstr(&sysconfig->sconfig, propvalue, ARES_TRUE);
+ status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig,
+ propvalue, ARES_TRUE);
if (status != ARES_SUCCESS) {
return status;
}
@@ -257,7 +261,9 @@ static ares_status_t ares__init_sysconfig_android(ares_sysconfig_t *sysconfig)
#endif
#if defined(CARES_USE_LIBRESOLV)
-static ares_status_t ares__init_sysconfig_libresolv(ares_sysconfig_t *sysconfig)
+static ares_status_t
+ ares_init_sysconfig_libresolv(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
struct __res_state res;
ares_status_t status = ARES_SUCCESS;
@@ -265,7 +271,7 @@ static ares_status_t ares__init_sysconfig_libresolv(ares_sysconfig_t *sysconfig)
int nscount;
size_t i;
size_t entries = 0;
- ares__buf_t *ipbuf = NULL;
+ ares_buf_t *ipbuf = NULL;
memset(&res, 0, sizeof(res));
@@ -295,58 +301,58 @@ static ares_status_t ares__init_sysconfig_libresolv(ares_sysconfig_t *sysconfig)
/* [ip]:port%iface */
- ipbuf = ares__buf_create();
+ ipbuf = ares_buf_create();
if (ipbuf == NULL) {
status = ARES_ENOMEM;
goto done;
}
- status = ares__buf_append_str(ipbuf, "[");
+ status = ares_buf_append_str(ipbuf, "[");
if (status != ARES_SUCCESS) {
goto done;
}
- status = ares__buf_append_str(ipbuf, ipaddr);
+ status = ares_buf_append_str(ipbuf, ipaddr);
if (status != ARES_SUCCESS) {
goto done;
}
- status = ares__buf_append_str(ipbuf, "]");
+ status = ares_buf_append_str(ipbuf, "]");
if (status != ARES_SUCCESS) {
goto done;
}
if (port) {
- status = ares__buf_append_str(ipbuf, ":");
+ status = ares_buf_append_str(ipbuf, ":");
if (status != ARES_SUCCESS) {
goto done;
}
- status = ares__buf_append_num_dec(ipbuf, port, 0);
+ status = ares_buf_append_num_dec(ipbuf, port, 0);
if (status != ARES_SUCCESS) {
goto done;
}
}
if (ll_scope) {
- status = ares__buf_append_str(ipbuf, "%");
+ status = ares_buf_append_str(ipbuf, "%");
if (status != ARES_SUCCESS) {
goto done;
}
- status = ares__buf_append_num_dec(ipbuf, ll_scope, 0);
+ status = ares_buf_append_num_dec(ipbuf, ll_scope, 0);
if (status != ARES_SUCCESS) {
goto done;
}
}
- ipstr = ares__buf_finish_str(ipbuf, NULL);
+ ipstr = ares_buf_finish_str(ipbuf, NULL);
ipbuf = NULL;
if (ipstr == NULL) {
status = ARES_ENOMEM;
goto done;
}
- status =
- ares__sconfig_append_fromstr(&sysconfig->sconfig, ipstr, ARES_TRUE);
+ status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig, ipstr,
+ ARES_TRUE);
ares_free(ipstr);
if (status != ARES_SUCCESS) {
@@ -400,7 +406,7 @@ static ares_status_t ares__init_sysconfig_libresolv(ares_sysconfig_t *sysconfig)
}
done:
- ares__buf_destroy(ipbuf);
+ ares_buf_destroy(ipbuf);
res_ndestroy(&res);
return status;
}
@@ -408,8 +414,8 @@ done:
static void ares_sysconfig_free(ares_sysconfig_t *sysconfig)
{
- ares__llist_destroy(sysconfig->sconfig);
- ares__strsplit_free(sysconfig->domains, sysconfig->ndomains);
+ ares_llist_destroy(sysconfig->sconfig);
+ ares_strsplit_free(sysconfig->domains, sysconfig->ndomains);
ares_free(sysconfig->sortlist);
ares_free(sysconfig->lookups);
memset(sysconfig, 0, sizeof(*sysconfig));
@@ -421,7 +427,7 @@ static ares_status_t ares_sysconfig_apply(ares_channel_t *channel,
ares_status_t status;
if (sysconfig->sconfig && !(channel->optmask & ARES_OPT_SERVERS)) {
- status = ares__servers_update(channel, sysconfig->sconfig, ARES_FALSE);
+ status = ares_servers_update(channel, sysconfig->sconfig, ARES_FALSE);
if (status != ARES_SUCCESS) {
return status;
}
@@ -431,12 +437,12 @@ static ares_status_t ares_sysconfig_apply(ares_channel_t *channel,
/* Make sure we duplicate first then replace so even if there is
* ARES_ENOMEM, the channel stays in a good state */
char **temp =
- ares__strsplit_duplicate(sysconfig->domains, sysconfig->ndomains);
+ ares_strsplit_duplicate(sysconfig->domains, sysconfig->ndomains);
if (temp == NULL) {
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
- ares__strsplit_free(channel->domains, channel->ndomains);
+ ares_strsplit_free(channel->domains, channel->ndomains);
channel->domains = temp;
channel->ndomains = sysconfig->ndomains;
}
@@ -488,7 +494,7 @@ static ares_status_t ares_sysconfig_apply(ares_channel_t *channel,
return ARES_SUCCESS;
}
-ares_status_t ares__init_by_sysconfig(ares_channel_t *channel)
+ares_status_t ares_init_by_sysconfig(ares_channel_t *channel)
{
ares_status_t status;
ares_sysconfig_t sysconfig;
@@ -497,21 +503,21 @@ ares_status_t ares__init_by_sysconfig(ares_channel_t *channel)
sysconfig.ndots = 1; /* Default value if not otherwise set */
#if defined(USE_WINSOCK)
- status = ares__init_sysconfig_windows(&sysconfig);
+ status = ares_init_sysconfig_windows(channel, &sysconfig);
#elif defined(__MVS__)
- status = ares__init_sysconfig_mvs(&sysconfig);
+ status = ares_init_sysconfig_mvs(channel, &sysconfig);
#elif defined(__riscos__)
- status = ares__init_sysconfig_riscos(&sysconfig);
+ status = ares_init_sysconfig_riscos(channel, &sysconfig);
#elif defined(WATT32)
- status = ares__init_sysconfig_watt32(&sysconfig);
+ status = ares_init_sysconfig_watt32(channel, &sysconfig);
#elif defined(ANDROID) || defined(__ANDROID__)
- status = ares__init_sysconfig_android(&sysconfig);
+ status = ares_init_sysconfig_android(channel, &sysconfig);
#elif defined(__APPLE__)
- status = ares__init_sysconfig_macos(&sysconfig);
+ status = ares_init_sysconfig_macos(channel, &sysconfig);
#elif defined(CARES_USE_LIBRESOLV)
- status = ares__init_sysconfig_libresolv(&sysconfig);
+ status = ares_init_sysconfig_libresolv(channel, &sysconfig);
#else
- status = ares__init_sysconfig_files(channel, &sysconfig);
+ status = ares_init_sysconfig_files(channel, &sysconfig);
#endif
if (status != ARES_SUCCESS) {
@@ -519,7 +525,7 @@ ares_status_t ares__init_by_sysconfig(ares_channel_t *channel)
}
/* Environment is supposed to override sysconfig */
- status = ares__init_by_environment(&sysconfig);
+ status = ares_init_by_environment(&sysconfig);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -527,10 +533,10 @@ ares_status_t ares__init_by_sysconfig(ares_channel_t *channel)
/* Lock when applying the configuration to the channel. Don't need to
* lock prior to this. */
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
status = ares_sysconfig_apply(channel, &sysconfig);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
if (status != ARES_SUCCESS) {
goto done;
diff --git a/contrib/libs/c-ares/src/lib/ares_sysconfig_files.c b/contrib/libs/c-ares/src/lib/ares_sysconfig_files.c
index 7b8bdbe418..49bc330d9d 100644
--- a/contrib/libs/c-ares/src/lib/ares_sysconfig_files.c
+++ b/contrib/libs/c-ares/src/lib/ares_sysconfig_files.c
@@ -60,7 +60,6 @@
#endif
#include "ares_inet_net_pton.h"
-#include "ares_platform.h"
static unsigned char ip_natural_mask(const struct ares_addr *addr)
{
@@ -110,7 +109,7 @@ static ares_bool_t sortlist_append(struct apattern **sortlist, size_t *nsort,
return ARES_TRUE;
}
-static ares_status_t parse_sort(ares__buf_t *buf, struct apattern *pat)
+static ares_status_t parse_sort(ares_buf_t *buf, struct apattern *pat)
{
ares_status_t status;
const unsigned char ip_charset[] = "ABCDEFabcdef0123456789.:";
@@ -120,22 +119,22 @@ static ares_status_t parse_sort(ares__buf_t *buf, struct apattern *pat)
memset(pat, 0, sizeof(*pat));
/* Consume any leading whitespace */
- ares__buf_consume_whitespace(buf, ARES_TRUE);
+ ares_buf_consume_whitespace(buf, ARES_TRUE);
/* If no length, just ignore, return ENOTFOUND as an indicator */
- if (ares__buf_len(buf) == 0) {
+ if (ares_buf_len(buf) == 0) {
return ARES_ENOTFOUND;
}
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
/* Consume ip address */
- if (ares__buf_consume_charset(buf, ip_charset, sizeof(ip_charset) - 1) == 0) {
+ if (ares_buf_consume_charset(buf, ip_charset, sizeof(ip_charset) - 1) == 0) {
return ARES_EBADSTR;
}
/* Fetch ip address */
- status = ares__buf_tag_fetch_string(buf, ipaddr, sizeof(ipaddr));
+ status = ares_buf_tag_fetch_string(buf, ipaddr, sizeof(ipaddr));
if (status != ARES_SUCCESS) {
return status;
}
@@ -147,24 +146,24 @@ static ares_status_t parse_sort(ares__buf_t *buf, struct apattern *pat)
}
/* See if there is a subnet mask */
- if (ares__buf_begins_with(buf, (const unsigned char *)"/", 1)) {
+ if (ares_buf_begins_with(buf, (const unsigned char *)"/", 1)) {
char maskstr[16];
const unsigned char ipv4_charset[] = "0123456789.";
/* Consume / */
- ares__buf_consume(buf, 1);
+ ares_buf_consume(buf, 1);
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
/* Consume mask */
- if (ares__buf_consume_charset(buf, ipv4_charset,
- sizeof(ipv4_charset) - 1) == 0) {
+ if (ares_buf_consume_charset(buf, ipv4_charset, sizeof(ipv4_charset) - 1) ==
+ 0) {
return ARES_EBADSTR;
}
/* Fetch mask */
- status = ares__buf_tag_fetch_string(buf, maskstr, sizeof(maskstr));
+ status = ares_buf_tag_fetch_string(buf, maskstr, sizeof(maskstr));
if (status != ARES_SUCCESS) {
return status;
}
@@ -190,33 +189,34 @@ static ares_status_t parse_sort(ares__buf_t *buf, struct apattern *pat)
return ARES_EBADSTR;
}
ptr = (const unsigned char *)&maskaddr.addr.addr4;
- pat->mask = (unsigned char)(ares__count_bits_u8(ptr[0]) +
- ares__count_bits_u8(ptr[1]) +
- ares__count_bits_u8(ptr[2]) +
- ares__count_bits_u8(ptr[3]));
+ pat->mask = (unsigned char)(ares_count_bits_u8(ptr[0]) +
+ ares_count_bits_u8(ptr[1]) +
+ ares_count_bits_u8(ptr[2]) +
+ ares_count_bits_u8(ptr[3]));
}
} else {
pat->mask = ip_natural_mask(&pat->addr);
}
/* Consume any trailing whitespace */
- ares__buf_consume_whitespace(buf, ARES_TRUE);
+ ares_buf_consume_whitespace(buf, ARES_TRUE);
/* If we have any trailing bytes other than whitespace, its a parse failure */
- if (ares__buf_len(buf) != 0) {
+ if (ares_buf_len(buf) != 0) {
return ARES_EBADSTR;
}
return ARES_SUCCESS;
}
-ares_status_t ares__parse_sortlist(struct apattern **sortlist, size_t *nsort,
- const char *str)
+ares_status_t ares_parse_sortlist(struct apattern **sortlist, size_t *nsort,
+ const char *str)
{
- ares__buf_t *buf = NULL;
- ares__llist_t *list = NULL;
- ares_status_t status = ARES_SUCCESS;
- ares__llist_node_t *node = NULL;
+ ares_buf_t *buf = NULL;
+ ares_status_t status = ARES_SUCCESS;
+ ares_array_t *arr = NULL;
+ size_t num = 0;
+ size_t i;
if (sortlist == NULL || nsort == NULL || str == NULL) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -229,22 +229,23 @@ ares_status_t ares__parse_sortlist(struct apattern **sortlist, size_t *nsort,
*sortlist = NULL;
*nsort = 0;
- buf = ares__buf_create_const((const unsigned char *)str, ares_strlen(str));
+ buf = ares_buf_create_const((const unsigned char *)str, ares_strlen(str));
if (buf == NULL) {
status = ARES_ENOMEM;
goto done;
}
/* Split on space or semicolon */
- status = ares__buf_split(buf, (const unsigned char *)" ;", 2,
- ARES_BUF_SPLIT_NONE, 0, &list);
+ status = ares_buf_split(buf, (const unsigned char *)" ;", 2,
+ ARES_BUF_SPLIT_NONE, 0, &arr);
if (status != ARES_SUCCESS) {
goto done;
}
- for (node = ares__llist_node_first(list); node != NULL;
- node = ares__llist_node_next(node)) {
- ares__buf_t *entry = ares__llist_node_val(node);
+ num = ares_array_len(arr);
+ for (i = 0; i < num; i++) {
+ ares_buf_t **bufptr = ares_array_at(arr, i);
+ ares_buf_t *entry = *bufptr;
struct apattern pat;
@@ -266,8 +267,8 @@ ares_status_t ares__parse_sortlist(struct apattern **sortlist, size_t *nsort,
status = ARES_SUCCESS;
done:
- ares__buf_destroy(buf);
- ares__llist_destroy(list);
+ ares_buf_destroy(buf);
+ ares_array_destroy(arr);
if (status != ARES_SUCCESS) {
ares_free(*sortlist);
@@ -283,12 +284,12 @@ static ares_status_t config_search(ares_sysconfig_t *sysconfig, const char *str,
{
if (sysconfig->domains && sysconfig->ndomains > 0) {
/* if we already have some domains present, free them first */
- ares__strsplit_free(sysconfig->domains, sysconfig->ndomains);
+ ares_strsplit_free(sysconfig->domains, sysconfig->ndomains);
sysconfig->domains = NULL;
sysconfig->ndomains = 0;
}
- sysconfig->domains = ares__strsplit(str, ", ", &sysconfig->ndomains);
+ sysconfig->domains = ares_strsplit(str, ", ", &sysconfig->ndomains);
if (sysconfig->domains == NULL) {
return ARES_ENOMEM;
}
@@ -306,52 +307,45 @@ static ares_status_t config_search(ares_sysconfig_t *sysconfig, const char *str,
return ARES_SUCCESS;
}
-static ares_status_t buf_fetch_string(ares__buf_t *buf, char *str,
+static ares_status_t buf_fetch_string(ares_buf_t *buf, char *str,
size_t str_len)
{
ares_status_t status;
- ares__buf_tag(buf);
- ares__buf_consume(buf, ares__buf_len(buf));
+ ares_buf_tag(buf);
+ ares_buf_consume(buf, ares_buf_len(buf));
- status = ares__buf_tag_fetch_string(buf, str, str_len);
+ status = ares_buf_tag_fetch_string(buf, str, str_len);
return status;
}
-static ares_status_t config_lookup(ares_sysconfig_t *sysconfig,
- ares__buf_t *buf, const char *separators)
+static ares_status_t config_lookup(ares_sysconfig_t *sysconfig, ares_buf_t *buf,
+ const char *separators)
{
- ares_status_t status;
- char lookupstr[32];
- size_t lookupstr_cnt = 0;
- ares__llist_t *lookups = NULL;
- ares__llist_node_t *node;
- size_t separators_len = ares_strlen(separators);
-
- status = ares__buf_split(buf, (const unsigned char *)separators,
- separators_len, ARES_BUF_SPLIT_TRIM, 0, &lookups);
+ ares_status_t status;
+ char lookupstr[32];
+ size_t lookupstr_cnt = 0;
+ char **lookups = NULL;
+ size_t num = 0;
+ size_t i;
+ size_t separators_len = ares_strlen(separators);
+
+ status =
+ ares_buf_split_str(buf, (const unsigned char *)separators, separators_len,
+ ARES_BUF_SPLIT_TRIM, 0, &lookups, &num);
if (status != ARES_SUCCESS) {
goto done;
}
- memset(lookupstr, 0, sizeof(lookupstr));
-
- for (node = ares__llist_node_first(lookups); node != NULL;
- node = ares__llist_node_next(node)) {
- char value[128];
- char ch;
- ares__buf_t *valbuf = ares__llist_node_val(node);
-
- status = buf_fetch_string(valbuf, value, sizeof(value));
- if (status != ARES_SUCCESS) {
- continue;
- }
+ for (i = 0; i < num; i++) {
+ const char *value = lookups[i];
+ char ch;
- if (strcasecmp(value, "dns") == 0 || strcasecmp(value, "bind") == 0 ||
- strcasecmp(value, "resolv") == 0 || strcasecmp(value, "resolve") == 0) {
+ if (ares_strcaseeq(value, "dns") || ares_strcaseeq(value, "bind") ||
+ ares_strcaseeq(value, "resolv") || ares_strcaseeq(value, "resolve")) {
ch = 'b';
- } else if (strcasecmp(value, "files") == 0 ||
- strcasecmp(value, "file") == 0 ||
- strcasecmp(value, "local") == 0) {
+ } else if (ares_strcaseeq(value, "files") ||
+ ares_strcaseeq(value, "file") ||
+ ares_strcaseeq(value, "local")) {
ch = 'f';
} else {
continue;
@@ -364,10 +358,12 @@ static ares_status_t config_lookup(ares_sysconfig_t *sysconfig,
}
if (lookupstr_cnt) {
+ lookupstr[lookupstr_cnt] = 0;
ares_free(sysconfig->lookups);
sysconfig->lookups = ares_strdup(lookupstr);
if (sysconfig->lookups == NULL) {
- return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
+ status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
+ goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
@@ -377,83 +373,85 @@ done:
if (status != ARES_ENOMEM) {
status = ARES_SUCCESS;
}
- ares__llist_destroy(lookups);
+ ares_free_array(lookups, num, ares_free);
return status;
}
static ares_status_t process_option(ares_sysconfig_t *sysconfig,
- ares__buf_t *option)
+ ares_buf_t *option)
{
- ares__llist_t *kv = NULL;
- char key[32] = "";
- char val[32] = "";
- unsigned int valint = 0;
- ares_status_t status;
+ char **kv = NULL;
+ size_t num = 0;
+ const char *key;
+ const char *val;
+ unsigned int valint = 0;
+ ares_status_t status;
/* Split on : */
- status = ares__buf_split(option, (const unsigned char *)":", 1,
- ARES_BUF_SPLIT_TRIM, 2, &kv);
+ status = ares_buf_split_str(option, (const unsigned char *)":", 1,
+ ARES_BUF_SPLIT_TRIM, 2, &kv, &num);
if (status != ARES_SUCCESS) {
goto done;
}
- status = buf_fetch_string(ares__llist_first_val(kv), key, sizeof(key));
- if (status != ARES_SUCCESS) {
+ if (num < 1) {
+ status = ARES_EBADSTR;
goto done;
}
- if (ares__llist_len(kv) == 2) {
- status = buf_fetch_string(ares__llist_last_val(kv), val, sizeof(val));
- if (status != ARES_SUCCESS) {
- goto done;
- }
+
+ key = kv[0];
+ if (num == 2) {
+ val = kv[1];
valint = (unsigned int)strtoul(val, NULL, 10);
}
- if (strcmp(key, "ndots") == 0) {
+ if (ares_streq(key, "ndots")) {
sysconfig->ndots = valint;
- } else if (strcmp(key, "retrans") == 0 || strcmp(key, "timeout") == 0) {
+ } else if (ares_streq(key, "retrans") || ares_streq(key, "timeout")) {
if (valint == 0) {
return ARES_EFORMERR;
}
sysconfig->timeout_ms = valint * 1000;
- } else if (strcmp(key, "retry") == 0 || strcmp(key, "attempts") == 0) {
+ } else if (ares_streq(key, "retry") || ares_streq(key, "attempts")) {
if (valint == 0) {
return ARES_EFORMERR;
}
sysconfig->tries = valint;
- } else if (strcmp(key, "rotate") == 0) {
+ } else if (ares_streq(key, "rotate")) {
sysconfig->rotate = ARES_TRUE;
- } else if (strcmp(key, "use-vc") == 0 || strcmp(key, "usevc") == 0) {
+ } else if (ares_streq(key, "use-vc") || ares_streq(key, "usevc")) {
sysconfig->usevc = ARES_TRUE;
}
done:
- ares__llist_destroy(kv);
+ ares_free_array(kv, num, ares_free);
return status;
}
-ares_status_t ares__sysconfig_set_options(ares_sysconfig_t *sysconfig,
- const char *str)
+ares_status_t ares_sysconfig_set_options(ares_sysconfig_t *sysconfig,
+ const char *str)
{
- ares__buf_t *buf = NULL;
- ares__llist_t *options = NULL;
- ares_status_t status;
- ares__llist_node_t *node;
+ ares_buf_t *buf = NULL;
+ ares_array_t *options = NULL;
+ size_t num;
+ size_t i;
+ ares_status_t status;
- buf = ares__buf_create_const((const unsigned char *)str, ares_strlen(str));
+ buf = ares_buf_create_const((const unsigned char *)str, ares_strlen(str));
if (buf == NULL) {
return ARES_ENOMEM;
}
- status = ares__buf_split(buf, (const unsigned char *)" \t", 2,
- ARES_BUF_SPLIT_TRIM, 0, &options);
+ status = ares_buf_split(buf, (const unsigned char *)" \t", 2,
+ ARES_BUF_SPLIT_TRIM, 0, &options);
if (status != ARES_SUCCESS) {
goto done;
}
- for (node = ares__llist_node_first(options); node != NULL;
- node = ares__llist_node_next(node)) {
- ares__buf_t *valbuf = ares__llist_node_val(node);
+ num = ares_array_len(options);
+ for (i = 0; i < num; i++) {
+ ares_buf_t **bufptr = ares_array_at(options, i);
+ ares_buf_t *valbuf = *bufptr;
status = process_option(sysconfig, valbuf);
/* Out of memory is the only fatal condition */
@@ -465,12 +463,12 @@ ares_status_t ares__sysconfig_set_options(ares_sysconfig_t *sysconfig,
status = ARES_SUCCESS;
done:
- ares__llist_destroy(options);
- ares__buf_destroy(buf);
+ ares_array_destroy(options);
+ ares_buf_destroy(buf);
return status;
}
-ares_status_t ares__init_by_environment(ares_sysconfig_t *sysconfig)
+ares_status_t ares_init_by_environment(ares_sysconfig_t *sysconfig)
{
const char *localdomain;
const char *res_options;
@@ -491,7 +489,7 @@ ares_status_t ares__init_by_environment(ares_sysconfig_t *sysconfig)
res_options = getenv("RES_OPTIONS");
if (res_options) {
- status = ares__sysconfig_set_options(sysconfig, res_options);
+ status = ares_sysconfig_set_options(sysconfig, res_options);
if (status != ARES_SUCCESS) {
return status;
}
@@ -551,70 +549,71 @@ ares_status_t ares__init_by_environment(ares_sysconfig_t *sysconfig)
/* This function will only return ARES_SUCCESS or ARES_ENOMEM. Any other
* conditions are ignored. Users may mess up config files, but we want to
* process anything we can. */
-static ares_status_t parse_resolvconf_line(ares_sysconfig_t *sysconfig,
- ares__buf_t *line)
+static ares_status_t parse_resolvconf_line(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig,
+ ares_buf_t *line)
{
char option[32];
char value[512];
ares_status_t status = ARES_SUCCESS;
/* Ignore lines beginning with a comment */
- if (ares__buf_begins_with(line, (const unsigned char *)"#", 1) ||
- ares__buf_begins_with(line, (const unsigned char *)";", 1)) {
+ if (ares_buf_begins_with(line, (const unsigned char *)"#", 1) ||
+ ares_buf_begins_with(line, (const unsigned char *)";", 1)) {
return ARES_SUCCESS;
}
- ares__buf_tag(line);
+ ares_buf_tag(line);
/* Shouldn't be possible, but if it happens, ignore the line. */
- if (ares__buf_consume_nonwhitespace(line) == 0) {
+ if (ares_buf_consume_nonwhitespace(line) == 0) {
return ARES_SUCCESS;
}
- status = ares__buf_tag_fetch_string(line, option, sizeof(option));
+ status = ares_buf_tag_fetch_string(line, option, sizeof(option));
if (status != ARES_SUCCESS) {
return ARES_SUCCESS;
}
- ares__buf_consume_whitespace(line, ARES_TRUE);
+ ares_buf_consume_whitespace(line, ARES_TRUE);
status = buf_fetch_string(line, value, sizeof(value));
if (status != ARES_SUCCESS) {
return ARES_SUCCESS;
}
- ares__str_trim(value);
+ ares_str_trim(value);
if (*value == 0) {
return ARES_SUCCESS;
}
/* At this point we have a string option and a string value, both trimmed
* of leading and trailing whitespace. Lets try to evaluate them */
- if (strcmp(option, "domain") == 0) {
+ if (ares_streq(option, "domain")) {
/* Domain is legacy, don't overwrite an existing config set by search */
if (sysconfig->domains == NULL) {
status = config_search(sysconfig, value, 1);
}
- } else if (strcmp(option, "lookup") == 0 ||
- strcmp(option, "hostresorder") == 0) {
- ares__buf_tag_rollback(line);
+ } else if (ares_streq(option, "lookup") ||
+ ares_streq(option, "hostresorder")) {
+ ares_buf_tag_rollback(line);
status = config_lookup(sysconfig, line, " \t");
- } else if (strcmp(option, "search") == 0) {
+ } else if (ares_streq(option, "search")) {
status = config_search(sysconfig, value, 0);
- } else if (strcmp(option, "nameserver") == 0) {
- status =
- ares__sconfig_append_fromstr(&sysconfig->sconfig, value, ARES_TRUE);
- } else if (strcmp(option, "sortlist") == 0) {
+ } else if (ares_streq(option, "nameserver")) {
+ status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig, value,
+ ARES_TRUE);
+ } else if (ares_streq(option, "sortlist")) {
/* Ignore all failures except ENOMEM. If the sysadmin set a bad
* sortlist, just ignore the sortlist, don't cause an inoperable
* channel */
status =
- ares__parse_sortlist(&sysconfig->sortlist, &sysconfig->nsortlist, value);
+ ares_parse_sortlist(&sysconfig->sortlist, &sysconfig->nsortlist, value);
if (status != ARES_ENOMEM) {
status = ARES_SUCCESS;
}
- } else if (strcmp(option, "options") == 0) {
- status = ares__sysconfig_set_options(sysconfig, value);
+ } else if (ares_streq(option, "options")) {
+ status = ares_sysconfig_set_options(sysconfig, value);
}
return status;
@@ -623,44 +622,51 @@ static ares_status_t parse_resolvconf_line(ares_sysconfig_t *sysconfig,
/* This function will only return ARES_SUCCESS or ARES_ENOMEM. Any other
* conditions are ignored. Users may mess up config files, but we want to
* process anything we can. */
-static ares_status_t parse_nsswitch_line(ares_sysconfig_t *sysconfig,
- ares__buf_t *line)
+static ares_status_t parse_nsswitch_line(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig,
+ ares_buf_t *line)
{
- char option[32];
- ares__buf_t *buf;
- ares_status_t status = ARES_SUCCESS;
- ares__llist_t *sects = NULL;
+ char option[32];
+ ares_status_t status = ARES_SUCCESS;
+ ares_array_t *sects = NULL;
+ ares_buf_t **bufptr;
+ ares_buf_t *buf;
+
+ (void)channel;
/* Ignore lines beginning with a comment */
- if (ares__buf_begins_with(line, (const unsigned char *)"#", 1)) {
+ if (ares_buf_begins_with(line, (const unsigned char *)"#", 1)) {
return ARES_SUCCESS;
}
/* database : values (space delimited) */
- status = ares__buf_split(line, (const unsigned char *)":", 1,
- ARES_BUF_SPLIT_TRIM, 2, &sects);
+ status = ares_buf_split(line, (const unsigned char *)":", 1,
+ ARES_BUF_SPLIT_TRIM, 2, &sects);
- if (status != ARES_SUCCESS || ares__llist_len(sects) != 2) {
+ if (status != ARES_SUCCESS || ares_array_len(sects) != 2) {
goto done;
}
- buf = ares__llist_first_val(sects);
+ bufptr = ares_array_at(sects, 0);
+ buf = *bufptr;
+
status = buf_fetch_string(buf, option, sizeof(option));
if (status != ARES_SUCCESS) {
goto done;
}
/* Only support "hosts:" */
- if (strcmp(option, "hosts") != 0) {
+ if (!ares_streq(option, "hosts")) {
goto done;
}
/* Values are space separated */
- buf = ares__llist_last_val(sects);
+ bufptr = ares_array_at(sects, 1);
+ buf = *bufptr;
status = config_lookup(sysconfig, buf, " \t");
done:
- ares__llist_destroy(sects);
+ ares_array_destroy(sects);
if (status != ARES_ENOMEM) {
status = ARES_SUCCESS;
}
@@ -670,52 +676,59 @@ done:
/* This function will only return ARES_SUCCESS or ARES_ENOMEM. Any other
* conditions are ignored. Users may mess up config files, but we want to
* process anything we can. */
-static ares_status_t parse_svcconf_line(ares_sysconfig_t *sysconfig,
- ares__buf_t *line)
+static ares_status_t parse_svcconf_line(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig,
+ ares_buf_t *line)
{
- char option[32];
- ares__buf_t *buf;
- ares_status_t status = ARES_SUCCESS;
- ares__llist_t *sects = NULL;
+ char option[32];
+ ares_buf_t **bufptr;
+ ares_buf_t *buf;
+ ares_status_t status = ARES_SUCCESS;
+ ares_array_t *sects = NULL;
+
+ (void)channel;
/* Ignore lines beginning with a comment */
- if (ares__buf_begins_with(line, (const unsigned char *)"#", 1)) {
+ if (ares_buf_begins_with(line, (const unsigned char *)"#", 1)) {
return ARES_SUCCESS;
}
/* database = values (comma delimited)*/
- status = ares__buf_split(line, (const unsigned char *)"=", 1,
- ARES_BUF_SPLIT_TRIM, 2, &sects);
+ status = ares_buf_split(line, (const unsigned char *)"=", 1,
+ ARES_BUF_SPLIT_TRIM, 2, &sects);
- if (status != ARES_SUCCESS || ares__llist_len(sects) != 2) {
+ if (status != ARES_SUCCESS || ares_array_len(sects) != 2) {
goto done;
}
- buf = ares__llist_first_val(sects);
+ bufptr = ares_array_at(sects, 0);
+ buf = *bufptr;
status = buf_fetch_string(buf, option, sizeof(option));
if (status != ARES_SUCCESS) {
goto done;
}
/* Only support "hosts=" */
- if (strcmp(option, "hosts") != 0) {
+ if (!ares_streq(option, "hosts")) {
goto done;
}
/* Values are comma separated */
- buf = ares__llist_last_val(sects);
+ bufptr = ares_array_at(sects, 1);
+ buf = *bufptr;
status = config_lookup(sysconfig, buf, ",");
done:
- ares__llist_destroy(sects);
+ ares_array_destroy(sects);
if (status != ARES_ENOMEM) {
status = ARES_SUCCESS;
}
return status;
}
-typedef ares_status_t (*line_callback_t)(ares_sysconfig_t *sysconfig,
- ares__buf_t *line);
+typedef ares_status_t (*line_callback_t)(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig,
+ ares_buf_t *line);
/* Should only return:
* ARES_ENOTFOUND - file not found
@@ -724,56 +737,60 @@ typedef ares_status_t (*line_callback_t)(ares_sysconfig_t *sysconfig,
* ARES_SUCCESS - file processed, doesn't necessarily mean it was a good
* file, but we're not erroring out if we can't parse
* something (or anything at all) */
-static ares_status_t process_config_lines(const char *filename,
- ares_sysconfig_t *sysconfig,
- line_callback_t cb)
+static ares_status_t process_config_lines(const ares_channel_t *channel,
+ const char *filename,
+ ares_sysconfig_t *sysconfig,
+ line_callback_t cb)
{
- ares_status_t status = ARES_SUCCESS;
- ares__llist_node_t *node;
- ares__llist_t *lines = NULL;
- ares__buf_t *buf = NULL;
+ ares_status_t status = ARES_SUCCESS;
+ ares_array_t *lines = NULL;
+ ares_buf_t *buf = NULL;
+ size_t num;
+ size_t i;
- buf = ares__buf_create();
+ buf = ares_buf_create();
if (buf == NULL) {
status = ARES_ENOMEM;
goto done;
}
- status = ares__buf_load_file(filename, buf);
+ status = ares_buf_load_file(filename, buf);
if (status != ARES_SUCCESS) {
goto done;
}
- status = ares__buf_split(buf, (const unsigned char *)"\n", 1,
- ARES_BUF_SPLIT_TRIM, 0, &lines);
+ status = ares_buf_split(buf, (const unsigned char *)"\n", 1,
+ ARES_BUF_SPLIT_TRIM, 0, &lines);
if (status != ARES_SUCCESS) {
goto done;
}
- for (node = ares__llist_node_first(lines); node != NULL;
- node = ares__llist_node_next(node)) {
- ares__buf_t *line = ares__llist_node_val(node);
+ num = ares_array_len(lines);
+ for (i = 0; i < num; i++) {
+ ares_buf_t **bufptr = ares_array_at(lines, i);
+ ares_buf_t *line = *bufptr;
- status = cb(sysconfig, line);
+ status = cb(channel, sysconfig, line);
if (status != ARES_SUCCESS) {
goto done;
}
}
done:
- ares__buf_destroy(buf);
- ares__llist_destroy(lines);
+ ares_buf_destroy(buf);
+ ares_array_destroy(lines);
return status;
}
-ares_status_t ares__init_sysconfig_files(const ares_channel_t *channel,
- ares_sysconfig_t *sysconfig)
+ares_status_t ares_init_sysconfig_files(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
ares_status_t status = ARES_SUCCESS;
/* Resolv.conf */
- status = process_config_lines((channel->resolvconf_path != NULL)
+ status = process_config_lines(channel,
+ (channel->resolvconf_path != NULL)
? channel->resolvconf_path
: PATH_RESOLV_CONF,
sysconfig, parse_resolvconf_line);
@@ -782,21 +799,22 @@ ares_status_t ares__init_sysconfig_files(const ares_channel_t *channel,
}
/* Nsswitch.conf */
- status =
- process_config_lines("/etc/nsswitch.conf", sysconfig, parse_nsswitch_line);
+ status = process_config_lines(channel, "/etc/nsswitch.conf", sysconfig,
+ parse_nsswitch_line);
if (status != ARES_SUCCESS && status != ARES_ENOTFOUND) {
goto done;
}
/* netsvc.conf */
- status =
- process_config_lines("/etc/netsvc.conf", sysconfig, parse_svcconf_line);
+ status = process_config_lines(channel, "/etc/netsvc.conf", sysconfig,
+ parse_svcconf_line);
if (status != ARES_SUCCESS && status != ARES_ENOTFOUND) {
goto done;
}
/* svc.conf */
- status = process_config_lines("/etc/svc.conf", sysconfig, parse_svcconf_line);
+ status = process_config_lines(channel, "/etc/svc.conf", sysconfig,
+ parse_svcconf_line);
if (status != ARES_SUCCESS && status != ARES_ENOTFOUND) {
goto done;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_sysconfig_mac.c b/contrib/libs/c-ares/src/lib/ares_sysconfig_mac.c
index 38ac451ca5..4d46ffd58d 100644
--- a/contrib/libs/c-ares/src/lib/ares_sysconfig_mac.c
+++ b/contrib/libs/c-ares/src/lib/ares_sysconfig_mac.c
@@ -154,14 +154,15 @@ static ares_bool_t search_is_duplicate(const ares_sysconfig_t *sysconfig,
{
size_t i;
for (i = 0; i < sysconfig->ndomains; i++) {
- if (strcasecmp(sysconfig->domains[i], name) == 0) {
+ if (ares_strcaseeq(sysconfig->domains[i], name)) {
return ARES_TRUE;
}
}
return ARES_FALSE;
}
-static ares_status_t read_resolver(const dns_resolver_t *resolver,
+static ares_status_t read_resolver(const ares_channel_t *channel,
+ const dns_resolver_t *resolver,
ares_sysconfig_t *sysconfig)
{
int i;
@@ -243,7 +244,7 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
# endif
if (resolver->options != NULL) {
- status = ares__sysconfig_set_options(sysconfig, resolver->options);
+ status = ares_sysconfig_set_options(sysconfig, resolver->options);
if (status != ARES_SUCCESS) {
return status;
}
@@ -269,7 +270,7 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
unsigned short addrport;
const struct sockaddr *sockaddr;
char if_name_str[256] = "";
- const char *if_name;
+ const char *if_name = NULL;
/* UBSAN alignment workaround to fetch memory address */
memcpy(&sockaddr, resolver->nameserver + i, sizeof(sockaddr));
@@ -282,10 +283,14 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
addrport = port;
}
- if_name = ares__if_indextoname(resolver->if_index, if_name_str,
- sizeof(if_name_str));
- status = ares__sconfig_append(&sysconfig->sconfig, &addr, addrport,
- addrport, if_name);
+ if (channel->sock_funcs.aif_indextoname != NULL) {
+ if_name = channel->sock_funcs.aif_indextoname(
+ resolver->if_index, if_name_str, sizeof(if_name_str),
+ channel->sock_func_cb_data);
+ }
+
+ status = ares_sconfig_append(channel, &sysconfig->sconfig, &addr, addrport,
+ addrport, if_name);
if (status != ARES_SUCCESS) {
return status;
}
@@ -294,7 +299,8 @@ static ares_status_t read_resolver(const dns_resolver_t *resolver,
return status;
}
-static ares_status_t read_resolvers(dns_resolver_t **resolvers, int nresolvers,
+static ares_status_t read_resolvers(const ares_channel_t *channel,
+ dns_resolver_t **resolvers, int nresolvers,
ares_sysconfig_t *sysconfig)
{
ares_status_t status = ARES_SUCCESS;
@@ -309,13 +315,14 @@ static ares_status_t read_resolvers(dns_resolver_t **resolvers, int nresolvers,
*/
memcpy(&resolver_ptr, resolvers + i, sizeof(resolver_ptr));
- status = read_resolver(resolver_ptr, sysconfig);
+ status = read_resolver(channel, resolver_ptr, sysconfig);
}
return status;
}
-ares_status_t ares__init_sysconfig_macos(ares_sysconfig_t *sysconfig)
+ares_status_t ares_init_sysconfig_macos(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
dnsinfo_t *dnsinfo = NULL;
dns_config_t *sc_dns = NULL;
@@ -343,7 +350,8 @@ ares_status_t ares__init_sysconfig_macos(ares_sysconfig_t *sysconfig)
* Likely this wasn't available via `/etc/resolv.conf` nor `libresolv` anyhow
* so its not worse to prior configuration methods, worst case. */
- status = read_resolvers(sc_dns->resolver, sc_dns->n_resolver, sysconfig);
+ status =
+ read_resolvers(channel, sc_dns->resolver, sc_dns->n_resolver, sysconfig);
done:
if (dnsinfo) {
diff --git a/contrib/libs/c-ares/src/lib/ares_sysconfig_win.c b/contrib/libs/c-ares/src/lib/ares_sysconfig_win.c
index ce2a261cec..f6e07f92e4 100644
--- a/contrib/libs/c-ares/src/lib/ares_sysconfig_win.c
+++ b/contrib/libs/c-ares/src/lib/ares_sysconfig_win.c
@@ -53,7 +53,6 @@
#endif
#include "ares_inet_net_pton.h"
-#include "ares_platform.h"
#if defined(USE_WINSOCK)
/*
@@ -420,7 +419,7 @@ static ares_bool_t get_DNS_Windows(char **outptr)
memset(&addr, 0, sizeof(addr));
addr.family = AF_INET6;
memcpy(&addr.addr.addr6, &namesrvr.sa6->sin6_addr, 16);
- if (ares__addr_is_linklocal(&addr)) {
+ if (ares_addr_is_linklocal(&addr)) {
ll_scope = ipaaEntry->Ipv6IfIndex;
}
@@ -514,10 +513,6 @@ static ares_bool_t get_SuffixList_Windows(char **outptr)
*outptr = NULL;
- 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) {
@@ -589,13 +584,15 @@ static ares_bool_t get_SuffixList_Windows(char **outptr)
return *outptr != NULL ? ARES_TRUE : ARES_FALSE;
}
-ares_status_t ares__init_sysconfig_windows(ares_sysconfig_t *sysconfig)
+ares_status_t ares_init_sysconfig_windows(const ares_channel_t *channel,
+ ares_sysconfig_t *sysconfig)
{
char *line = NULL;
ares_status_t status = ARES_SUCCESS;
if (get_DNS_Windows(&line)) {
- status = ares__sconfig_append_fromstr(&sysconfig->sconfig, line, ARES_TRUE);
+ status = ares_sconfig_append_fromstr(channel, &sysconfig->sconfig, line,
+ ARES_TRUE);
ares_free(line);
if (status != ARES_SUCCESS) {
goto done;
@@ -603,7 +600,7 @@ ares_status_t ares__init_sysconfig_windows(ares_sysconfig_t *sysconfig)
}
if (get_SuffixList_Windows(&line)) {
- sysconfig->domains = ares__strsplit(line, ", ", &sysconfig->ndomains);
+ sysconfig->domains = ares_strsplit(line, ", ", &sysconfig->ndomains);
ares_free(line);
if (sysconfig->domains == NULL) {
status = ARES_EFILE;
diff --git a/contrib/libs/c-ares/src/lib/ares_timeout.c b/contrib/libs/c-ares/src/lib/ares_timeout.c
index 5ed8b553a3..0d2fdcff21 100644
--- a/contrib/libs/c-ares/src/lib/ares_timeout.c
+++ b/contrib/libs/c-ares/src/lib/ares_timeout.c
@@ -32,9 +32,9 @@
#endif
-void ares__timeval_remaining(ares_timeval_t *remaining,
- const ares_timeval_t *now,
- const ares_timeval_t *tout)
+void ares_timeval_remaining(ares_timeval_t *remaining,
+ const ares_timeval_t *now,
+ const ares_timeval_t *tout)
{
memset(remaining, 0, sizeof(*remaining));
@@ -53,8 +53,8 @@ void ares__timeval_remaining(ares_timeval_t *remaining,
}
}
-void ares__timeval_diff(ares_timeval_t *tvdiff, const ares_timeval_t *tvstart,
- const ares_timeval_t *tvstop)
+void ares_timeval_diff(ares_timeval_t *tvdiff, const ares_timeval_t *tvstart,
+ const ares_timeval_t *tvstop)
{
tvdiff->sec = tvstop->sec - tvstart->sec;
if (tvstop->usec > tvstart->usec) {
@@ -89,24 +89,24 @@ static struct timeval *ares_timeout_int(const ares_channel_t *channel,
struct timeval *tvbuf)
{
const ares_query_t *query;
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
ares_timeval_t now;
ares_timeval_t atvbuf;
ares_timeval_t amaxtv;
/* The minimum timeout of all queries is always the first entry in
* channel->queries_by_timeout */
- node = ares__slist_node_first(channel->queries_by_timeout);
+ node = ares_slist_node_first(channel->queries_by_timeout);
/* no queries/timeout */
if (node == NULL) {
return maxtv;
}
- query = ares__slist_node_val(node);
+ query = ares_slist_node_val(node);
- ares__tvnow(&now);
+ ares_tvnow(&now);
- ares__timeval_remaining(&atvbuf, &now, &query->timeout);
+ ares_timeval_remaining(&atvbuf, &now, &query->timeout);
ares_timeval_to_struct_timeval(tvbuf, &atvbuf);
@@ -141,11 +141,11 @@ struct timeval *ares_timeout(const ares_channel_t *channel,
return NULL;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
rv = ares_timeout_int(channel, maxtv, tvbuf);
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return rv;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_update_servers.c b/contrib/libs/c-ares/src/lib/ares_update_servers.c
index 639f79d815..70a9381499 100644
--- a/contrib/libs/c-ares/src/lib/ares_update_servers.c
+++ b/contrib/libs/c-ares/src/lib/ares_update_servers.c
@@ -39,6 +39,9 @@
#ifdef HAVE_NET_IF_H
# include <net/if.h>
#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
#if defined(USE_WINSOCK)
# if defined(HAVE_IPHLPAPI_H)
@@ -61,8 +64,8 @@ typedef struct {
unsigned int ll_scope;
} ares_sconfig_t;
-static ares_bool_t ares__addr_match(const struct ares_addr *addr1,
- const struct ares_addr *addr2)
+static ares_bool_t ares_addr_match(const struct ares_addr *addr1,
+ const struct ares_addr *addr2)
{
if (addr1 == NULL && addr2 == NULL) {
return ARES_TRUE; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -90,9 +93,9 @@ static ares_bool_t ares__addr_match(const struct ares_addr *addr1,
return ARES_FALSE;
}
-ares_bool_t ares__subnet_match(const struct ares_addr *addr,
- const struct ares_addr *subnet,
- unsigned char netmask)
+ares_bool_t ares_subnet_match(const struct ares_addr *addr,
+ const struct ares_addr *subnet,
+ unsigned char netmask)
{
const unsigned char *addr_ptr;
const unsigned char *subnet_ptr;
@@ -144,7 +147,7 @@ ares_bool_t ares__subnet_match(const struct ares_addr *addr,
return ARES_TRUE;
}
-ares_bool_t ares__addr_is_linklocal(const struct ares_addr *addr)
+ares_bool_t ares_addr_is_linklocal(const struct ares_addr *addr)
{
struct ares_addr subnet;
const unsigned char subnetaddr[16] = { 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00,
@@ -155,7 +158,7 @@ ares_bool_t ares__addr_is_linklocal(const struct ares_addr *addr)
subnet.family = AF_INET6;
memcpy(&subnet.addr.addr6, subnetaddr, 16);
- return ares__subnet_match(addr, &subnet, 10);
+ return ares_subnet_match(addr, &subnet, 10);
}
static ares_bool_t ares_server_blacklisted(const struct ares_addr *addr)
@@ -185,13 +188,60 @@ static ares_bool_t ares_server_blacklisted(const struct ares_addr *addr)
struct ares_addr subnet;
subnet.family = AF_INET6;
memcpy(&subnet.addr.addr6, blacklist_v6[i].netbase, 16);
- if (ares__subnet_match(addr, &subnet, blacklist_v6[i].netmask)) {
+ if (ares_subnet_match(addr, &subnet, blacklist_v6[i].netmask)) {
return ARES_TRUE;
}
}
return ARES_FALSE;
}
+static ares_status_t parse_nameserver_uri(ares_buf_t *buf,
+ ares_sconfig_t *sconfig)
+{
+ ares_uri_t *uri = NULL;
+ ares_status_t status = ARES_SUCCESS;
+ const char *port;
+ char *ll_scope;
+ char hoststr[256];
+ size_t addrlen;
+
+ status = ares_uri_parse_buf(&uri, buf);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ if (!ares_streq("dns", ares_uri_get_scheme(uri))) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ ares_strcpy(hoststr, ares_uri_get_host(uri), sizeof(hoststr));
+ ll_scope = strchr(hoststr, '%');
+ if (ll_scope != NULL) {
+ *ll_scope = 0;
+ ll_scope++;
+ ares_strcpy(sconfig->ll_iface, ll_scope, sizeof(sconfig->ll_iface));
+ }
+
+ /* Convert ip address from string to network byte order */
+ sconfig->addr.family = AF_UNSPEC;
+ if (ares_dns_pton(hoststr, &sconfig->addr, &addrlen) == NULL) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ sconfig->udp_port = ares_uri_get_port(uri);
+ sconfig->tcp_port = sconfig->udp_port;
+ port = ares_uri_get_query_key(uri, "tcpport");
+ if (port != NULL) {
+ sconfig->tcp_port = (unsigned short)atoi(port);
+ }
+
+done:
+ ares_uri_destroy(uri);
+ return status;
+}
+
/* Parse address and port in these formats, either ipv4 or ipv6 addresses
* are allowed:
* ipaddr
@@ -211,7 +261,7 @@ static ares_bool_t ares_server_blacklisted(const struct ares_addr *addr)
* Returns an error code on failure, else ARES_SUCCESS
*/
-static ares_status_t parse_nameserver(ares__buf_t *buf, ares_sconfig_t *sconfig)
+static ares_status_t parse_nameserver(ares_buf_t *buf, ares_sconfig_t *sconfig)
{
ares_status_t status;
char ipaddr[INET6_ADDRSTRLEN] = "";
@@ -220,57 +270,57 @@ static ares_status_t parse_nameserver(ares__buf_t *buf, ares_sconfig_t *sconfig)
memset(sconfig, 0, sizeof(*sconfig));
/* Consume any leading whitespace */
- ares__buf_consume_whitespace(buf, ARES_TRUE);
+ ares_buf_consume_whitespace(buf, ARES_TRUE);
/* pop off IP address. If it is in [ ] then it can be ipv4 or ipv6. If
* not, ipv4 only */
- if (ares__buf_begins_with(buf, (const unsigned char *)"[", 1)) {
+ if (ares_buf_begins_with(buf, (const unsigned char *)"[", 1)) {
/* Consume [ */
- ares__buf_consume(buf, 1);
+ ares_buf_consume(buf, 1);
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
/* Consume until ] */
- if (ares__buf_consume_until_charset(buf, (const unsigned char *)"]", 1,
- ARES_TRUE) == 0) {
+ if (ares_buf_consume_until_charset(buf, (const unsigned char *)"]", 1,
+ ARES_TRUE) == SIZE_MAX) {
return ARES_EBADSTR;
}
- status = ares__buf_tag_fetch_string(buf, ipaddr, sizeof(ipaddr));
+ status = ares_buf_tag_fetch_string(buf, ipaddr, sizeof(ipaddr));
if (status != ARES_SUCCESS) {
return status;
}
/* Skip over ] */
- ares__buf_consume(buf, 1);
+ ares_buf_consume(buf, 1);
} else {
size_t offset;
/* Not in [ ], see if '.' is in first 4 characters, if it is, then its ipv4,
* otherwise treat as ipv6 */
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
- offset = ares__buf_consume_until_charset(buf, (const unsigned char *)".", 1,
- ARES_TRUE);
- ares__buf_tag_rollback(buf);
- ares__buf_tag(buf);
+ offset = ares_buf_consume_until_charset(buf, (const unsigned char *)".", 1,
+ ARES_TRUE);
+ ares_buf_tag_rollback(buf);
+ ares_buf_tag(buf);
if (offset > 0 && offset < 4) {
/* IPv4 */
- if (ares__buf_consume_charset(buf, (const unsigned char *)"0123456789.",
- 11) == 0) {
+ if (ares_buf_consume_charset(buf, (const unsigned char *)"0123456789.",
+ 11) == 0) {
return ARES_EBADSTR;
}
} else {
/* IPv6 */
const unsigned char ipv6_charset[] = "ABCDEFabcdef0123456789.:";
- if (ares__buf_consume_charset(buf, ipv6_charset,
- sizeof(ipv6_charset) - 1) == 0) {
+ if (ares_buf_consume_charset(buf, ipv6_charset,
+ sizeof(ipv6_charset) - 1) == 0) {
return ARES_EBADSTR;
}
}
- status = ares__buf_tag_fetch_string(buf, ipaddr, sizeof(ipaddr));
+ status = ares_buf_tag_fetch_string(buf, ipaddr, sizeof(ipaddr));
if (status != ARES_SUCCESS) {
return status;
}
@@ -283,21 +333,21 @@ static ares_status_t parse_nameserver(ares__buf_t *buf, ares_sconfig_t *sconfig)
}
/* Pull off port */
- if (ares__buf_begins_with(buf, (const unsigned char *)":", 1)) {
+ if (ares_buf_begins_with(buf, (const unsigned char *)":", 1)) {
char portstr[6];
/* Consume : */
- ares__buf_consume(buf, 1);
+ ares_buf_consume(buf, 1);
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
/* Read numbers */
- if (ares__buf_consume_charset(buf, (const unsigned char *)"0123456789",
- 10) == 0) {
+ if (ares_buf_consume_charset(buf, (const unsigned char *)"0123456789",
+ 10) == 0) {
return ARES_EBADSTR;
}
- status = ares__buf_tag_fetch_string(buf, portstr, sizeof(portstr));
+ status = ares_buf_tag_fetch_string(buf, portstr, sizeof(portstr));
if (status != ARES_SUCCESS) {
return status;
}
@@ -307,22 +357,22 @@ static ares_status_t parse_nameserver(ares__buf_t *buf, ares_sconfig_t *sconfig)
}
/* Pull off interface modifier */
- if (ares__buf_begins_with(buf, (const unsigned char *)"%", 1)) {
+ if (ares_buf_begins_with(buf, (const unsigned char *)"%", 1)) {
const unsigned char iface_charset[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789.-_\\:{}";
/* Consume % */
- ares__buf_consume(buf, 1);
+ ares_buf_consume(buf, 1);
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
- if (ares__buf_consume_charset(buf, iface_charset,
- sizeof(iface_charset) - 1) == 0) {
+ if (ares_buf_consume_charset(buf, iface_charset,
+ sizeof(iface_charset) - 1) == 0) {
return ARES_EBADSTR;
}
- status = ares__buf_tag_fetch_string(buf, sconfig->ll_iface,
- sizeof(sconfig->ll_iface));
+ status = ares_buf_tag_fetch_string(buf, sconfig->ll_iface,
+ sizeof(sconfig->ll_iface));
if (status != ARES_SUCCESS) {
return status;
}
@@ -330,24 +380,29 @@ static ares_status_t parse_nameserver(ares__buf_t *buf, ares_sconfig_t *sconfig)
/* Consume any trailing whitespace so we can bail out if there is something
* after we didn't read */
- ares__buf_consume_whitespace(buf, ARES_TRUE);
+ ares_buf_consume_whitespace(buf, ARES_TRUE);
- if (ares__buf_len(buf) != 0) {
+ if (ares_buf_len(buf) != 0) {
return ARES_EBADSTR;
}
return ARES_SUCCESS;
}
-static ares_status_t ares__sconfig_linklocal(ares_sconfig_t *s,
- const char *ll_iface)
+static ares_status_t ares_sconfig_linklocal(const ares_channel_t *channel,
+ ares_sconfig_t *s,
+ const char *ll_iface)
{
unsigned int ll_scope = 0;
+
if (ares_str_isnum(ll_iface)) {
char ifname[IF_NAMESIZE] = "";
ll_scope = (unsigned int)atoi(ll_iface);
- if (ares__if_indextoname(ll_scope, ifname, sizeof(ifname)) == NULL) {
+ if (channel->sock_funcs.aif_indextoname == NULL ||
+ channel->sock_funcs.aif_indextoname(ll_scope, ifname, sizeof(ifname),
+ channel->sock_func_cb_data) ==
+ NULL) {
DEBUGF(fprintf(stderr, "Interface %s for ipv6 Link Local not found\n",
ll_iface));
return ARES_ENOTFOUND;
@@ -357,7 +412,10 @@ static ares_status_t ares__sconfig_linklocal(ares_sconfig_t *s,
return ARES_SUCCESS;
}
- ll_scope = ares__if_nametoindex(ll_iface);
+ if (channel->sock_funcs.aif_nametoindex != NULL) {
+ ll_scope =
+ channel->sock_funcs.aif_nametoindex(ll_iface, channel->sock_func_cb_data);
+ }
if (ll_scope == 0) {
DEBUGF(fprintf(stderr, "Interface %s for ipv6 Link Local not found\n",
ll_iface));
@@ -368,11 +426,11 @@ static ares_status_t ares__sconfig_linklocal(ares_sconfig_t *s,
return ARES_SUCCESS;
}
-ares_status_t ares__sconfig_append(ares__llist_t **sconfig,
- const struct ares_addr *addr,
- unsigned short udp_port,
- unsigned short tcp_port,
- const char *ll_iface)
+ares_status_t ares_sconfig_append(const ares_channel_t *channel,
+ ares_llist_t **sconfig,
+ const struct ares_addr *addr,
+ unsigned short udp_port,
+ unsigned short tcp_port, const char *ll_iface)
{
ares_sconfig_t *s;
ares_status_t status;
@@ -392,7 +450,7 @@ ares_status_t ares__sconfig_append(ares__llist_t **sconfig,
}
if (*sconfig == NULL) {
- *sconfig = ares__llist_create(ares_free);
+ *sconfig = ares_llist_create(ares_free);
if (*sconfig == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -405,13 +463,13 @@ ares_status_t ares__sconfig_append(ares__llist_t **sconfig,
/* Handle link-local enumeration. If an interface is specified on a
* non-link-local address, we'll simply end up ignoring that */
- if (ares__addr_is_linklocal(&s->addr)) {
+ if (ares_addr_is_linklocal(&s->addr)) {
if (ares_strlen(ll_iface) == 0) {
/* Silently ignore this entry, we require an interface */
status = ARES_SUCCESS;
goto fail;
}
- status = ares__sconfig_linklocal(s, ll_iface);
+ status = ares_sconfig_linklocal(channel, s, ll_iface);
/* Silently ignore this entry, we can't validate the interface */
if (status != ARES_SUCCESS) {
status = ARES_SUCCESS;
@@ -419,7 +477,7 @@ ares_status_t ares__sconfig_append(ares__llist_t **sconfig,
}
}
- if (ares__llist_insert_last(*sconfig, s) == NULL) {
+ if (ares_llist_insert_last(*sconfig, s) == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -448,36 +506,43 @@ fail:
*
* Returns an error code on failure, else ARES_SUCCESS.
*/
-ares_status_t ares__sconfig_append_fromstr(ares__llist_t **sconfig,
- const char *str,
- ares_bool_t ignore_invalid)
+ares_status_t ares_sconfig_append_fromstr(const ares_channel_t *channel,
+ ares_llist_t **sconfig,
+ const char *str,
+ ares_bool_t ignore_invalid)
{
- ares_status_t status = ARES_SUCCESS;
- ares__buf_t *buf = NULL;
- ares__llist_t *list = NULL;
- ares__llist_node_t *node;
+ ares_status_t status = ARES_SUCCESS;
+ ares_buf_t *buf = NULL;
+ ares_array_t *list = NULL;
+ size_t num;
+ size_t i;
/* On Windows, there may be more than one nameserver specified in the same
* registry key, so we parse input as a space or comma separated list.
*/
- buf = ares__buf_create_const((const unsigned char *)str, ares_strlen(str));
+ buf = ares_buf_create_const((const unsigned char *)str, ares_strlen(str));
if (buf == NULL) {
status = ARES_ENOMEM;
goto done;
}
- status = ares__buf_split(buf, (const unsigned char *)" ,", 2,
- ARES_BUF_SPLIT_NONE, 0, &list);
+ status = ares_buf_split(buf, (const unsigned char *)" ,", 2,
+ ARES_BUF_SPLIT_NONE, 0, &list);
if (status != ARES_SUCCESS) {
goto done;
}
- for (node = ares__llist_node_first(list); node != NULL;
- node = ares__llist_node_next(node)) {
- ares__buf_t *entry = ares__llist_node_val(node);
+ num = ares_array_len(list);
+ for (i = 0; i < num; i++) {
+ ares_buf_t **bufptr = ares_array_at(list, i);
+ ares_buf_t *entry = *bufptr;
ares_sconfig_t s;
- status = parse_nameserver(entry, &s);
+ status = parse_nameserver_uri(entry, &s);
+ if (status != ARES_SUCCESS) {
+ status = parse_nameserver(entry, &s);
+ }
+
if (status != ARES_SUCCESS) {
if (ignore_invalid) {
continue;
@@ -486,8 +551,8 @@ ares_status_t ares__sconfig_append_fromstr(ares__llist_t **sconfig,
}
}
- status = ares__sconfig_append(sconfig, &s.addr, s.udp_port, s.tcp_port,
- s.ll_iface);
+ status = ares_sconfig_append(channel, sconfig, &s.addr, s.udp_port,
+ s.tcp_port, s.ll_iface);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -496,14 +561,14 @@ ares_status_t ares__sconfig_append_fromstr(ares__llist_t **sconfig,
status = ARES_SUCCESS;
done:
- ares__llist_destroy(list);
- ares__buf_destroy(buf);
+ ares_array_destroy(list);
+ ares_buf_destroy(buf);
return status;
}
-static unsigned short ares__sconfig_get_port(const ares_channel_t *channel,
- const ares_sconfig_t *s,
- ares_bool_t is_tcp)
+static unsigned short ares_sconfig_get_port(const ares_channel_t *channel,
+ const ares_sconfig_t *s,
+ ares_bool_t is_tcp)
{
unsigned short port = is_tcp ? s->tcp_port : s->udp_port;
@@ -518,24 +583,24 @@ static unsigned short ares__sconfig_get_port(const ares_channel_t *channel,
return port;
}
-static ares__slist_node_t *ares__server_find(ares_channel_t *channel,
- const ares_sconfig_t *s)
+static ares_slist_node_t *ares_server_find(const ares_channel_t *channel,
+ const ares_sconfig_t *s)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
- for (node = ares__slist_node_first(channel->servers); node != NULL;
- node = ares__slist_node_next(node)) {
- const ares_server_t *server = ares__slist_node_val(node);
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
+ const ares_server_t *server = ares_slist_node_val(node);
- if (!ares__addr_match(&server->addr, &s->addr)) {
+ if (!ares_addr_match(&server->addr, &s->addr)) {
continue;
}
- if (server->tcp_port != ares__sconfig_get_port(channel, s, ARES_TRUE)) {
+ if (server->tcp_port != ares_sconfig_get_port(channel, s, ARES_TRUE)) {
continue;
}
- if (server->udp_port != ares__sconfig_get_port(channel, s, ARES_FALSE)) {
+ if (server->udp_port != ares_sconfig_get_port(channel, s, ARES_FALSE)) {
continue;
}
@@ -544,28 +609,28 @@ static ares__slist_node_t *ares__server_find(ares_channel_t *channel,
return NULL;
}
-static ares_bool_t ares__server_isdup(const ares_channel_t *channel,
- ares__llist_node_t *s)
+static ares_bool_t ares_server_isdup(const ares_channel_t *channel,
+ ares_llist_node_t *s)
{
/* Scan backwards to see if this is a duplicate */
- ares__llist_node_t *prev;
- const ares_sconfig_t *server = ares__llist_node_val(s);
+ ares_llist_node_t *prev;
+ const ares_sconfig_t *server = ares_llist_node_val(s);
- for (prev = ares__llist_node_prev(s); prev != NULL;
- prev = ares__llist_node_prev(prev)) {
- const ares_sconfig_t *p = ares__llist_node_val(prev);
+ for (prev = ares_llist_node_prev(s); prev != NULL;
+ prev = ares_llist_node_prev(prev)) {
+ const ares_sconfig_t *p = ares_llist_node_val(prev);
- if (!ares__addr_match(&server->addr, &p->addr)) {
+ if (!ares_addr_match(&server->addr, &p->addr)) {
continue;
}
- if (ares__sconfig_get_port(channel, server, ARES_TRUE) !=
- ares__sconfig_get_port(channel, p, ARES_TRUE)) {
+ if (ares_sconfig_get_port(channel, server, ARES_TRUE) !=
+ ares_sconfig_get_port(channel, p, ARES_TRUE)) {
continue;
}
- if (ares__sconfig_get_port(channel, server, ARES_FALSE) !=
- ares__sconfig_get_port(channel, p, ARES_FALSE)) {
+ if (ares_sconfig_get_port(channel, server, ARES_FALSE) !=
+ ares_sconfig_get_port(channel, p, ARES_FALSE)) {
continue;
}
@@ -575,9 +640,9 @@ static ares_bool_t ares__server_isdup(const ares_channel_t *channel,
return ARES_FALSE;
}
-static ares_status_t ares__server_create(ares_channel_t *channel,
- const ares_sconfig_t *sconfig,
- size_t idx)
+static ares_status_t ares_server_create(ares_channel_t *channel,
+ const ares_sconfig_t *sconfig,
+ size_t idx)
{
ares_status_t status;
ares_server_t *server = ares_malloc_zero(sizeof(*server));
@@ -588,8 +653,8 @@ static ares_status_t ares__server_create(ares_channel_t *channel,
server->idx = idx;
server->channel = channel;
- server->udp_port = ares__sconfig_get_port(channel, sconfig, ARES_FALSE);
- server->tcp_port = ares__sconfig_get_port(channel, sconfig, ARES_TRUE);
+ server->udp_port = ares_sconfig_get_port(channel, sconfig, ARES_FALSE);
+ server->tcp_port = ares_sconfig_get_port(channel, sconfig, ARES_TRUE);
server->addr.family = sconfig->addr.family;
server->next_retry_time.sec = 0;
server->next_retry_time.usec = 0;
@@ -608,25 +673,13 @@ static ares_status_t ares__server_create(ares_channel_t *channel,
server->ll_scope = sconfig->ll_scope;
}
- server->tcp_parser = ares__buf_create();
- if (server->tcp_parser == NULL) {
- status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
- goto done; /* LCOV_EXCL_LINE: OutOfMemory */
- }
-
- server->tcp_send = ares__buf_create();
- if (server->tcp_send == NULL) {
- status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
- goto done; /* LCOV_EXCL_LINE: OutOfMemory */
- }
-
- server->connections = ares__llist_create(NULL);
+ server->connections = ares_llist_create(NULL);
if (server->connections == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- if (ares__slist_insert(channel->servers, server) == NULL) {
+ if (ares_slist_insert(channel->servers, server) == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -635,31 +688,31 @@ static ares_status_t ares__server_create(ares_channel_t *channel,
done:
if (status != ARES_SUCCESS) {
- ares__destroy_server(server); /* LCOV_EXCL_LINE: OutOfMemory */
+ ares_destroy_server(server); /* LCOV_EXCL_LINE: OutOfMemory */
}
return status;
}
-static ares_bool_t ares__server_in_newconfig(const ares_server_t *server,
- ares__llist_t *srvlist)
+static ares_bool_t ares_server_in_newconfig(const ares_server_t *server,
+ ares_llist_t *srvlist)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
const ares_channel_t *channel = server->channel;
- for (node = ares__llist_node_first(srvlist); node != NULL;
- node = ares__llist_node_next(node)) {
- const ares_sconfig_t *s = ares__llist_node_val(node);
+ for (node = ares_llist_node_first(srvlist); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const ares_sconfig_t *s = ares_llist_node_val(node);
- if (!ares__addr_match(&server->addr, &s->addr)) {
+ if (!ares_addr_match(&server->addr, &s->addr)) {
continue;
}
- if (server->tcp_port != ares__sconfig_get_port(channel, s, ARES_TRUE)) {
+ if (server->tcp_port != ares_sconfig_get_port(channel, s, ARES_TRUE)) {
continue;
}
- if (server->udp_port != ares__sconfig_get_port(channel, s, ARES_FALSE)) {
+ if (server->udp_port != ares_sconfig_get_port(channel, s, ARES_FALSE)) {
continue;
}
@@ -669,19 +722,19 @@ static ares_bool_t ares__server_in_newconfig(const ares_server_t *server,
return ARES_FALSE;
}
-static ares_bool_t ares__servers_remove_stale(ares_channel_t *channel,
- ares__llist_t *srvlist)
+static ares_bool_t ares_servers_remove_stale(ares_channel_t *channel,
+ ares_llist_t *srvlist)
{
- ares_bool_t stale_removed = ARES_FALSE;
- ares__slist_node_t *snode = ares__slist_node_first(channel->servers);
+ ares_bool_t stale_removed = ARES_FALSE;
+ ares_slist_node_t *snode = ares_slist_node_first(channel->servers);
while (snode != NULL) {
- ares__slist_node_t *snext = ares__slist_node_next(snode);
- const ares_server_t *server = ares__slist_node_val(snode);
- if (!ares__server_in_newconfig(server, srvlist)) {
+ ares_slist_node_t *snext = ares_slist_node_next(snode);
+ const ares_server_t *server = ares_slist_node_val(snode);
+ if (!ares_server_in_newconfig(server, srvlist)) {
/* This will clean up all server state via the destruction callback and
* move any queries to new servers */
- ares__slist_node_destroy(snode);
+ ares_slist_node_destroy(snode);
stale_removed = ARES_TRUE;
}
snode = snext;
@@ -689,21 +742,21 @@ static ares_bool_t ares__servers_remove_stale(ares_channel_t *channel,
return stale_removed;
}
-static void ares__servers_trim_single(ares_channel_t *channel)
+static void ares_servers_trim_single(ares_channel_t *channel)
{
- while (ares__slist_len(channel->servers) > 1) {
- ares__slist_node_destroy(ares__slist_node_last(channel->servers));
+ while (ares_slist_len(channel->servers) > 1) {
+ ares_slist_node_destroy(ares_slist_node_last(channel->servers));
}
}
-ares_status_t ares__servers_update(ares_channel_t *channel,
- ares__llist_t *server_list,
- ares_bool_t user_specified)
+ares_status_t ares_servers_update(ares_channel_t *channel,
+ ares_llist_t *server_list,
+ ares_bool_t user_specified)
{
- ares__llist_node_t *node;
- size_t idx = 0;
- ares_status_t status;
- ares_bool_t list_changed = ARES_FALSE;
+ ares_llist_node_t *node;
+ size_t idx = 0;
+ ares_status_t status;
+ ares_bool_t list_changed = ARES_FALSE;
if (channel == NULL) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -714,19 +767,19 @@ ares_status_t ares__servers_update(ares_channel_t *channel,
*/
/* Add new entries */
- for (node = ares__llist_node_first(server_list); node != NULL;
- node = ares__llist_node_next(node)) {
- const ares_sconfig_t *sconfig = ares__llist_node_val(node);
- ares__slist_node_t *snode;
+ for (node = ares_llist_node_first(server_list); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const ares_sconfig_t *sconfig = ares_llist_node_val(node);
+ ares_slist_node_t *snode;
/* If a server has already appeared in the list of new servers, skip it. */
- if (ares__server_isdup(channel, node)) {
+ if (ares_server_isdup(channel, node)) {
continue;
}
- snode = ares__server_find(channel, sconfig);
+ snode = ares_server_find(channel, sconfig);
if (snode != NULL) {
- ares_server_t *server = ares__slist_node_val(snode);
+ ares_server_t *server = ares_slist_node_val(snode);
/* Copy over link-local settings. Its possible some of this data has
* changed, maybe ... */
@@ -740,10 +793,10 @@ ares_status_t ares__servers_update(ares_channel_t *channel,
server->idx = idx;
/* Index changed, reinsert node, doesn't require any memory
* allocations so can't fail. */
- ares__slist_node_reinsert(snode);
+ ares_slist_node_reinsert(snode);
}
} else {
- status = ares__server_create(channel, sconfig, idx);
+ status = ares_server_create(channel, sconfig, idx);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -755,13 +808,13 @@ ares_status_t ares__servers_update(ares_channel_t *channel,
}
/* Remove any servers that don't exist in the current configuration */
- if (ares__servers_remove_stale(channel, server_list)) {
+ if (ares_servers_remove_stale(channel, server_list)) {
list_changed = ARES_TRUE;
}
/* Trim to one server if ARES_FLAG_PRIMARY is set. */
if (channel->flags & ARES_FLAG_PRIMARY) {
- ares__servers_trim_single(channel);
+ ares_servers_trim_single(channel);
}
if (user_specified) {
@@ -771,7 +824,7 @@ ares_status_t ares__servers_update(ares_channel_t *channel,
/* Clear any cached query results only if the server list changed */
if (list_changed) {
- ares__qcache_flush(channel->qcache);
+ ares_qcache_flush(channel->qcache);
}
status = ARES_SUCCESS;
@@ -781,15 +834,15 @@ done:
}
static ares_status_t
- ares_addr_node_to_server_config_llist(const struct ares_addr_node *servers,
- ares__llist_t **llist)
+ ares_addr_node_to_sconfig_llist(const struct ares_addr_node *servers,
+ ares_llist_t **llist)
{
const struct ares_addr_node *node;
- ares__llist_t *s;
+ ares_llist_t *s;
*llist = NULL;
- s = ares__llist_create(ares_free);
+ s = ares_llist_create(ares_free);
if (s == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -816,7 +869,7 @@ static ares_status_t
sizeof(sconfig->addr.addr.addr6));
}
- if (ares__llist_insert_last(s, sconfig) == NULL) {
+ if (ares_llist_insert_last(s, sconfig) == NULL) {
ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -827,20 +880,21 @@ static ares_status_t
/* LCOV_EXCL_START: OutOfMemory */
fail:
- ares__llist_destroy(s);
+ ares_llist_destroy(s);
return ARES_ENOMEM;
/* LCOV_EXCL_STOP */
}
-static ares_status_t ares_addr_port_node_to_server_config_llist(
- const struct ares_addr_port_node *servers, ares__llist_t **llist)
+static ares_status_t
+ ares_addrpnode_to_sconfig_llist(const struct ares_addr_port_node *servers,
+ ares_llist_t **llist)
{
const struct ares_addr_port_node *node;
- ares__llist_t *s;
+ ares_llist_t *s;
*llist = NULL;
- s = ares__llist_create(ares_free);
+ s = ares_llist_create(ares_free);
if (s == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -870,7 +924,7 @@ static ares_status_t ares_addr_port_node_to_server_config_llist(
sconfig->tcp_port = (unsigned short)node->tcp_port;
sconfig->udp_port = (unsigned short)node->udp_port;
- if (ares__llist_insert_last(s, sconfig) == NULL) {
+ if (ares_llist_insert_last(s, sconfig) == NULL) {
ares_free(sconfig); /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -881,21 +935,21 @@ static ares_status_t ares_addr_port_node_to_server_config_llist(
/* LCOV_EXCL_START: OutOfMemory */
fail:
- ares__llist_destroy(s);
+ ares_llist_destroy(s);
return ARES_ENOMEM;
/* LCOV_EXCL_STOP */
}
-ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
- size_t nservers,
- ares__llist_t **llist)
+ares_status_t ares_in_addr_to_sconfig_llist(const struct in_addr *servers,
+ size_t nservers,
+ ares_llist_t **llist)
{
- size_t i;
- ares__llist_t *s;
+ size_t i;
+ ares_llist_t *s;
*llist = NULL;
- s = ares__llist_create(ares_free);
+ s = ares_llist_create(ares_free);
if (s == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -912,7 +966,7 @@ ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
memcpy(&sconfig->addr.addr.addr4, &servers[i],
sizeof(sconfig->addr.addr.addr4));
- if (ares__llist_insert_last(s, sconfig) == NULL) {
+ if (ares_llist_insert_last(s, sconfig) == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
@@ -922,21 +976,90 @@ ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
/* LCOV_EXCL_START: OutOfMemory */
fail:
- ares__llist_destroy(s);
+ ares_llist_destroy(s);
return ARES_ENOMEM;
/* LCOV_EXCL_STOP */
}
+static ares_bool_t ares_server_use_uri(const ares_server_t *server)
+{
+ /* Currently only reason to use new format is if the ports for udp and tcp
+ * are different */
+ if (server->tcp_port != server->udp_port) {
+ return ARES_TRUE;
+ }
+ return ARES_FALSE;
+}
+
+static ares_status_t ares_get_server_addr_uri(const ares_server_t *server,
+ ares_buf_t *buf)
+{
+ ares_uri_t *uri = NULL;
+ ares_status_t status;
+ char addr[INET6_ADDRSTRLEN];
+
+ uri = ares_uri_create();
+ if (uri == NULL) {
+ return ARES_ENOMEM;
+ }
+
+ status = ares_uri_set_scheme(uri, "dns");
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ ares_inet_ntop(server->addr.family, &server->addr.addr, addr, sizeof(addr));
+
+ if (ares_strlen(server->ll_iface)) {
+ char addr_iface[256];
+
+ snprintf(addr_iface, sizeof(addr_iface), "%s%%%s", addr, server->ll_iface);
+ status = ares_uri_set_host(uri, addr_iface);
+ } else {
+ status = ares_uri_set_host(uri, addr);
+ }
+
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_set_port(uri, server->udp_port);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ if (server->udp_port != server->tcp_port) {
+ char port[6];
+ snprintf(port, sizeof(port), "%d", server->tcp_port);
+ status = ares_uri_set_query_key(uri, "tcpport", port);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ }
+
+ status = ares_uri_write_buf(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+done:
+ ares_uri_destroy(uri);
+ return status;
+}
+
/* Write out the details of a server to a buffer */
-ares_status_t ares_get_server_addr(const ares_server_t *server,
- ares__buf_t *buf)
+ares_status_t ares_get_server_addr(const ares_server_t *server, ares_buf_t *buf)
{
ares_status_t status;
char addr[INET6_ADDRSTRLEN];
+ if (ares_server_use_uri(server)) {
+ return ares_get_server_addr_uri(server, buf);
+ }
+
/* ipv4addr or [ipv6addr] */
if (server->addr.family == AF_INET6) {
- status = ares__buf_append_byte(buf, '[');
+ status = ares_buf_append_byte(buf, '[');
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -944,37 +1067,37 @@ ares_status_t ares_get_server_addr(const ares_server_t *server,
ares_inet_ntop(server->addr.family, &server->addr.addr, addr, sizeof(addr));
- status = ares__buf_append_str(buf, addr);
+ status = ares_buf_append_str(buf, addr);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
if (server->addr.family == AF_INET6) {
- status = ares__buf_append_byte(buf, ']');
+ status = ares_buf_append_byte(buf, ']');
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
/* :port */
- status = ares__buf_append_byte(buf, ':');
+ status = ares_buf_append_byte(buf, ':');
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_num_dec(buf, server->udp_port, 0);
+ status = ares_buf_append_num_dec(buf, server->udp_port, 0);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* %iface */
if (ares_strlen(server->ll_iface)) {
- status = ares__buf_append_byte(buf, '%');
+ status = ares_buf_append_byte(buf, '%');
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_str(buf, server->ll_iface);
+ status = ares_buf_append_str(buf, server->ll_iface);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -990,17 +1113,17 @@ int ares_get_servers(const ares_channel_t *channel,
struct ares_addr_node *srvr_last = NULL;
struct ares_addr_node *srvr_curr;
ares_status_t status = ARES_SUCCESS;
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
if (channel == NULL) {
return ARES_ENODATA;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- for (node = ares__slist_node_first(channel->servers); node != NULL;
- node = ares__slist_node_next(node)) {
- const ares_server_t *server = ares__slist_node_val(node);
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
+ const ares_server_t *server = ares_slist_node_val(node);
/* Allocate storage for this server node appending it to the list */
srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_NODE);
@@ -1033,7 +1156,7 @@ int ares_get_servers(const ares_channel_t *channel,
*servers = srvr_head;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return (int)status;
}
@@ -1045,17 +1168,17 @@ int ares_get_servers_ports(const ares_channel_t *channel,
struct ares_addr_port_node *srvr_last = NULL;
struct ares_addr_port_node *srvr_curr;
ares_status_t status = ARES_SUCCESS;
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
if (channel == NULL) {
return ARES_ENODATA;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- for (node = ares__slist_node_first(channel->servers); node != NULL;
- node = ares__slist_node_next(node)) {
- const ares_server_t *server = ares__slist_node_val(node);
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
+ const ares_server_t *server = ares_slist_node_val(node);
/* Allocate storage for this server node appending it to the list */
srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_PORT_NODE);
@@ -1091,30 +1214,30 @@ int ares_get_servers_ports(const ares_channel_t *channel,
*servers = srvr_head;
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return (int)status;
}
int ares_set_servers(ares_channel_t *channel,
const struct ares_addr_node *servers)
{
- ares__llist_t *slist;
- ares_status_t status;
+ ares_llist_t *slist;
+ ares_status_t status;
if (channel == NULL) {
return ARES_ENODATA;
}
- status = ares_addr_node_to_server_config_llist(servers, &slist);
+ status = ares_addr_node_to_sconfig_llist(servers, &slist);
if (status != ARES_SUCCESS) {
return (int)status;
}
- ares__channel_lock(channel);
- status = ares__servers_update(channel, slist, ARES_TRUE);
- ares__channel_unlock(channel);
+ ares_channel_lock(channel);
+ status = ares_servers_update(channel, slist, ARES_TRUE);
+ ares_channel_unlock(channel);
- ares__llist_destroy(slist);
+ ares_llist_destroy(slist);
return (int)status;
}
@@ -1122,23 +1245,23 @@ int ares_set_servers(ares_channel_t *channel,
int ares_set_servers_ports(ares_channel_t *channel,
const struct ares_addr_port_node *servers)
{
- ares__llist_t *slist;
- ares_status_t status;
+ ares_llist_t *slist;
+ ares_status_t status;
if (channel == NULL) {
return ARES_ENODATA;
}
- status = ares_addr_port_node_to_server_config_llist(servers, &slist);
+ status = ares_addrpnode_to_sconfig_llist(servers, &slist);
if (status != ARES_SUCCESS) {
return (int)status;
}
- ares__channel_lock(channel);
- status = ares__servers_update(channel, slist, ARES_TRUE);
- ares__channel_unlock(channel);
+ ares_channel_lock(channel);
+ status = ares_servers_update(channel, slist, ARES_TRUE);
+ ares_channel_unlock(channel);
- ares__llist_destroy(slist);
+ ares_llist_destroy(slist);
return (int)status;
}
@@ -1147,8 +1270,8 @@ int ares_set_servers_ports(ares_channel_t *channel,
/* IPv6 addresses with ports require square brackets [fe80::1]:53 */
static ares_status_t set_servers_csv(ares_channel_t *channel, const char *_csv)
{
- ares_status_t status;
- ares__llist_t *slist = NULL;
+ ares_status_t status;
+ ares_llist_t *slist = NULL;
if (channel == NULL) {
return ARES_ENODATA;
@@ -1156,23 +1279,23 @@ static ares_status_t set_servers_csv(ares_channel_t *channel, const char *_csv)
if (ares_strlen(_csv) == 0) {
/* blank all servers */
- ares__channel_lock(channel);
- status = ares__servers_update(channel, NULL, ARES_TRUE);
- ares__channel_unlock(channel);
+ ares_channel_lock(channel);
+ status = ares_servers_update(channel, NULL, ARES_TRUE);
+ ares_channel_unlock(channel);
return status;
}
- status = ares__sconfig_append_fromstr(&slist, _csv, ARES_FALSE);
+ status = ares_sconfig_append_fromstr(channel, &slist, _csv, ARES_FALSE);
if (status != ARES_SUCCESS) {
- ares__llist_destroy(slist);
+ ares_llist_destroy(slist);
return status;
}
- ares__channel_lock(channel);
- status = ares__servers_update(channel, slist, ARES_TRUE);
- ares__channel_unlock(channel);
+ ares_channel_lock(channel);
+ status = ares_servers_update(channel, slist, ARES_TRUE);
+ ares_channel_unlock(channel);
- ares__llist_destroy(slist);
+ ares_llist_destroy(slist);
return status;
}
@@ -1190,24 +1313,24 @@ int ares_set_servers_ports_csv(ares_channel_t *channel, const char *_csv)
char *ares_get_servers_csv(const ares_channel_t *channel)
{
- ares__buf_t *buf = NULL;
- char *out = NULL;
- ares__slist_node_t *node;
+ ares_buf_t *buf = NULL;
+ char *out = NULL;
+ ares_slist_node_t *node;
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- buf = ares__buf_create();
+ buf = ares_buf_create();
if (buf == NULL) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- for (node = ares__slist_node_first(channel->servers); node != NULL;
- node = ares__slist_node_next(node)) {
+ for (node = ares_slist_node_first(channel->servers); node != NULL;
+ node = ares_slist_node_next(node)) {
ares_status_t status;
- const ares_server_t *server = ares__slist_node_val(node);
+ const ares_server_t *server = ares_slist_node_val(node);
- if (ares__buf_len(buf)) {
- status = ares__buf_append_byte(buf, ',');
+ if (ares_buf_len(buf)) {
+ status = ares_buf_append_byte(buf, ',');
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1219,12 +1342,12 @@ char *ares_get_servers_csv(const ares_channel_t *channel)
}
}
- out = ares__buf_finish_str(buf, NULL);
+ out = ares_buf_finish_str(buf, NULL);
buf = NULL;
done:
- ares__channel_unlock(channel);
- ares__buf_destroy(buf);
+ ares_channel_unlock(channel);
+ ares_buf_destroy(buf);
return out;
}
diff --git a/contrib/libs/c-ares/src/lib/config-win32.h b/contrib/libs/c-ares/src/lib/config-win32.h
index 003f3937e5..62f8f6f267 100644
--- a/contrib/libs/c-ares/src/lib/config-win32.h
+++ b/contrib/libs/c-ares/src/lib/config-win32.h
@@ -193,6 +193,9 @@
/* Define if you have the send function. */
#define HAVE_SEND 1
+/* Define if you have the sendto function. */
+#define HAVE_SENDTO 1
+
/* Define to the type of arg 1 for send. */
#define SEND_TYPE_ARG1 SOCKET
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__array.c b/contrib/libs/c-ares/src/lib/dsa/ares_array.c
index 0c724248bf..c421d5c5f6 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__array.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_array.c
@@ -24,23 +24,23 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__array.h"
+#include "ares_array.h"
#define ARES__ARRAY_MIN 4
-struct ares__array {
- ares__array_destructor_t destruct;
- void *arr;
- size_t member_size;
- size_t cnt;
- size_t offset;
- size_t alloc_cnt;
+struct ares_array {
+ ares_array_destructor_t destruct;
+ void *arr;
+ size_t member_size;
+ size_t cnt;
+ size_t offset;
+ size_t alloc_cnt;
};
-ares__array_t *ares__array_create(size_t member_size,
- ares__array_destructor_t destruct)
+ares_array_t *ares_array_create(size_t member_size,
+ ares_array_destructor_t destruct)
{
- ares__array_t *arr;
+ ares_array_t *arr;
if (member_size == 0) {
return NULL;
@@ -56,7 +56,7 @@ ares__array_t *ares__array_create(size_t member_size,
return arr;
}
-size_t ares__array_len(const ares__array_t *arr)
+size_t ares_array_len(const ares_array_t *arr)
{
if (arr == NULL) {
return 0;
@@ -64,7 +64,7 @@ size_t ares__array_len(const ares__array_t *arr)
return arr->cnt;
}
-void *ares__array_at(ares__array_t *arr, size_t idx)
+void *ares_array_at(ares_array_t *arr, size_t idx)
{
if (arr == NULL || idx >= arr->cnt) {
return NULL;
@@ -72,7 +72,7 @@ void *ares__array_at(ares__array_t *arr, size_t idx)
return (unsigned char *)arr->arr + ((idx + arr->offset) * arr->member_size);
}
-const void *ares__array_at_const(const ares__array_t *arr, size_t idx)
+const void *ares_array_at_const(const ares_array_t *arr, size_t idx)
{
if (arr == NULL || idx >= arr->cnt) {
return NULL;
@@ -80,7 +80,7 @@ const void *ares__array_at_const(const ares__array_t *arr, size_t idx)
return (unsigned char *)arr->arr + ((idx + arr->offset) * arr->member_size);
}
-ares_status_t ares__array_sort(ares__array_t *arr, ares__array_cmp_t cmp)
+ares_status_t ares_array_sort(ares_array_t *arr, ares_array_cmp_t cmp)
{
if (arr == NULL || cmp == NULL) {
return ARES_EFORMERR;
@@ -96,7 +96,7 @@ ares_status_t ares__array_sort(ares__array_t *arr, ares__array_cmp_t cmp)
return ARES_SUCCESS;
}
-void ares__array_destroy(ares__array_t *arr)
+void ares_array_destroy(ares_array_t *arr)
{
size_t i;
@@ -106,7 +106,7 @@ void ares__array_destroy(ares__array_t *arr)
if (arr->destruct != NULL) {
for (i = 0; i < arr->cnt; i++) {
- arr->destruct(ares__array_at(arr, i));
+ arr->destruct(ares_array_at(arr, i));
}
}
@@ -116,8 +116,8 @@ void ares__array_destroy(ares__array_t *arr)
/* NOTE: this function operates on actual indexes, NOT indexes using the
* arr->offset */
-static ares_status_t ares__array_move(ares__array_t *arr, size_t dest_idx,
- size_t src_idx)
+static ares_status_t ares_array_move(ares_array_t *arr, size_t dest_idx,
+ size_t src_idx)
{
void *dest_ptr;
const void *src_ptr;
@@ -140,18 +140,14 @@ static ares_status_t ares__array_move(ares__array_t *arr, size_t dest_idx,
if (dest_idx > src_idx && arr->cnt + (dest_idx - src_idx) > arr->alloc_cnt) {
return ARES_EFORMERR;
}
- if (dest_idx < src_idx) {
- nmembers = arr->cnt - dest_idx;
- } else {
- nmembers = arr->cnt - src_idx;
- }
+ nmembers = arr->cnt - (src_idx - arr->offset);
memmove(dest_ptr, src_ptr, nmembers * arr->member_size);
return ARES_SUCCESS;
}
-void *ares__array_finish(ares__array_t *arr, size_t *num_members)
+void *ares_array_finish(ares_array_t *arr, size_t *num_members)
{
void *ptr;
@@ -161,7 +157,7 @@ void *ares__array_finish(ares__array_t *arr, size_t *num_members)
/* Make sure we move data to beginning of allocation */
if (arr->offset != 0) {
- if (ares__array_move(arr, 0, arr->offset) != ARES_SUCCESS) {
+ if (ares_array_move(arr, 0, arr->offset) != ARES_SUCCESS) {
return NULL;
}
arr->offset = 0;
@@ -173,7 +169,7 @@ void *ares__array_finish(ares__array_t *arr, size_t *num_members)
return ptr;
}
-ares_status_t ares__array_set_size(ares__array_t *arr, size_t size)
+ares_status_t ares_array_set_size(ares_array_t *arr, size_t size)
{
void *temp;
@@ -182,7 +178,7 @@ ares_status_t ares__array_set_size(ares__array_t *arr, size_t size)
}
/* Always operate on powers of 2 */
- size = ares__round_up_pow2(size);
+ size = ares_round_up_pow2(size);
if (size < ARES__ARRAY_MIN) {
size = ARES__ARRAY_MIN;
@@ -203,8 +199,8 @@ ares_status_t ares__array_set_size(ares__array_t *arr, size_t size)
return ARES_SUCCESS;
}
-ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr,
- size_t idx)
+ares_status_t ares_array_insert_at(void **elem_ptr, ares_array_t *arr,
+ size_t idx)
{
void *ptr;
ares_status_t status;
@@ -219,14 +215,14 @@ ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr,
}
/* Allocate more if needed */
- status = ares__array_set_size(arr, arr->cnt + 1);
+ status = ares_array_set_size(arr, arr->cnt + 1);
if (status != ARES_SUCCESS) {
return status;
}
/* Shift if we have memory but not enough room at the end */
if (arr->cnt + 1 + arr->offset > arr->alloc_cnt) {
- status = ares__array_move(arr, 0, arr->offset);
+ status = ares_array_move(arr, 0, arr->offset);
if (status != ARES_SUCCESS) {
return status;
}
@@ -236,7 +232,7 @@ ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr,
/* If we're inserting anywhere other than the end, we need to move some
* elements out of the way */
if (idx != arr->cnt) {
- status = ares__array_move(arr, idx + arr->offset + 1, idx + arr->offset);
+ status = ares_array_move(arr, idx + arr->offset + 1, idx + arr->offset);
if (status != ARES_SUCCESS) {
return status;
}
@@ -255,46 +251,88 @@ ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr,
return ARES_SUCCESS;
}
-ares_status_t ares__array_insert_last(void **elem_ptr, ares__array_t *arr)
+ares_status_t ares_array_insert_last(void **elem_ptr, ares_array_t *arr)
+{
+ return ares_array_insert_at(elem_ptr, arr, ares_array_len(arr));
+}
+
+ares_status_t ares_array_insert_first(void **elem_ptr, ares_array_t *arr)
+{
+ return ares_array_insert_at(elem_ptr, arr, 0);
+}
+
+ares_status_t ares_array_insertdata_at(ares_array_t *arr, size_t idx,
+ const void *data_ptr)
+{
+ ares_status_t status;
+ void *ptr = NULL;
+
+ status = ares_array_insert_at(&ptr, arr, idx);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ memcpy(ptr, data_ptr, arr->member_size);
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_array_insertdata_last(ares_array_t *arr,
+ const void *data_ptr)
{
- return ares__array_insert_at(elem_ptr, arr, ares__array_len(arr));
+ ares_status_t status;
+ void *ptr = NULL;
+
+ status = ares_array_insert_last(&ptr, arr);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ memcpy(ptr, data_ptr, arr->member_size);
+ return ARES_SUCCESS;
}
-ares_status_t ares__array_insert_first(void **elem_ptr, ares__array_t *arr)
+ares_status_t ares_array_insertdata_first(ares_array_t *arr,
+ const void *data_ptr)
{
- return ares__array_insert_at(elem_ptr, arr, 0);
+ ares_status_t status;
+ void *ptr = NULL;
+
+ status = ares_array_insert_last(&ptr, arr);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ memcpy(ptr, data_ptr, arr->member_size);
+ return ARES_SUCCESS;
}
-void *ares__array_first(ares__array_t *arr)
+void *ares_array_first(ares_array_t *arr)
{
- return ares__array_at(arr, 0);
+ return ares_array_at(arr, 0);
}
-void *ares__array_last(ares__array_t *arr)
+void *ares_array_last(ares_array_t *arr)
{
- size_t cnt = ares__array_len(arr);
+ size_t cnt = ares_array_len(arr);
if (cnt == 0) {
return NULL;
}
- return ares__array_at(arr, cnt - 1);
+ return ares_array_at(arr, cnt - 1);
}
-const void *ares__array_first_const(const ares__array_t *arr)
+const void *ares_array_first_const(const ares_array_t *arr)
{
- return ares__array_at_const(arr, 0);
+ return ares_array_at_const(arr, 0);
}
-const void *ares__array_last_const(const ares__array_t *arr)
+const void *ares_array_last_const(const ares_array_t *arr)
{
- size_t cnt = ares__array_len(arr);
+ size_t cnt = ares_array_len(arr);
if (cnt == 0) {
return NULL;
}
- return ares__array_at_const(arr, cnt - 1);
+ return ares_array_at_const(arr, cnt - 1);
}
-ares_status_t ares__array_claim_at(void *dest, size_t dest_size,
- ares__array_t *arr, size_t idx)
+ares_status_t ares_array_claim_at(void *dest, size_t dest_size,
+ ares_array_t *arr, size_t idx)
{
ares_status_t status;
@@ -307,7 +345,7 @@ ares_status_t ares__array_claim_at(void *dest, size_t dest_size,
}
if (dest) {
- memcpy(dest, ares__array_at(arr, idx), arr->member_size);
+ memcpy(dest, ares_array_at(arr, idx), arr->member_size);
}
if (idx == 0) {
@@ -317,7 +355,7 @@ ares_status_t ares__array_claim_at(void *dest, size_t dest_size,
} else if (idx != arr->cnt - 1) {
/* Must shift entire array if removing an element from the middle. Does
* nothing if removing last element other than decrement count. */
- status = ares__array_move(arr, idx + arr->offset, idx + arr->offset + 1);
+ status = ares_array_move(arr, idx + arr->offset, idx + arr->offset + 1);
if (status != ARES_SUCCESS) {
return status;
}
@@ -327,9 +365,9 @@ ares_status_t ares__array_claim_at(void *dest, size_t dest_size,
return ARES_SUCCESS;
}
-ares_status_t ares__array_remove_at(ares__array_t *arr, size_t idx)
+ares_status_t ares_array_remove_at(ares_array_t *arr, size_t idx)
{
- void *ptr = ares__array_at(arr, idx);
+ void *ptr = ares_array_at(arr, idx);
if (arr == NULL || ptr == NULL) {
return ARES_EFORMERR;
}
@@ -338,19 +376,19 @@ ares_status_t ares__array_remove_at(ares__array_t *arr, size_t idx)
arr->destruct(ptr);
}
- return ares__array_claim_at(NULL, 0, arr, idx);
+ return ares_array_claim_at(NULL, 0, arr, idx);
}
-ares_status_t ares__array_remove_first(ares__array_t *arr)
+ares_status_t ares_array_remove_first(ares_array_t *arr)
{
- return ares__array_remove_at(arr, 0);
+ return ares_array_remove_at(arr, 0);
}
-ares_status_t ares__array_remove_last(ares__array_t *arr)
+ares_status_t ares_array_remove_last(ares_array_t *arr)
{
- size_t cnt = ares__array_len(arr);
+ size_t cnt = ares_array_len(arr);
if (cnt == 0) {
return ARES_EFORMERR;
}
- return ares__array_remove_at(arr, cnt - 1);
+ return ares_array_remove_at(arr, cnt - 1);
}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable.c b/contrib/libs/c-ares/src/lib/dsa/ares_htable.c
index 9049b3246b..f76b67cae9 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable.c
@@ -24,33 +24,37 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__llist.h"
-#include "ares__htable.h"
+#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_EXPAND_PERCENT 75
-struct ares__htable {
- ares__htable_hashfunc_t hash;
- ares__htable_bucket_key_t bucket_key;
- ares__htable_bucket_free_t bucket_free;
- ares__htable_key_eq_t key_eq;
- unsigned int seed;
- unsigned int size;
- size_t num_keys;
- size_t num_collisions;
- /* NOTE: if we converted buckets into ares__slist_t we could guarantee on
+struct ares_htable {
+ ares_htable_hashfunc_t hash;
+ ares_htable_bucket_key_t bucket_key;
+ ares_htable_bucket_free_t bucket_free;
+ ares_htable_key_eq_t key_eq;
+ unsigned int seed;
+ unsigned int size;
+ size_t num_keys;
+ size_t num_collisions;
+ /* NOTE: if we converted buckets into ares_slist_t we could guarantee on
* hash collisions we would have O(log n) worst case insert and search
* performance. (We'd also need to make key_eq into a key_cmp to
* support sort). That said, risk with a random hash seed is near zero,
- * and ares__slist_t is heavier weight, so I think using ares__llist_t
+ * and ares_slist_t is heavier weight, so I think using ares_llist_t
* is an overall win. */
- ares__llist_t **buckets;
+ ares_llist_t **buckets;
};
-static unsigned int ares__htable_generate_seed(ares__htable_t *htable)
+static unsigned int ares_htable_generate_seed(ares_htable_t *htable)
{
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ /* Seed needs to be static for fuzzing */
+ return 0;
+#else
unsigned int seed = 0;
time_t t = time(NULL);
@@ -61,11 +65,12 @@ static unsigned int ares__htable_generate_seed(ares__htable_t *htable)
seed |= (unsigned int)((size_t)&seed & 0xFFFFFFFF);
seed |= (unsigned int)(((ares_uint64_t)t) & 0xFFFFFFFF);
return seed;
+#endif
}
-static void ares__htable_buckets_destroy(ares__llist_t **buckets,
- unsigned int size,
- ares_bool_t destroy_vals)
+static void ares_htable_buckets_destroy(ares_llist_t **buckets,
+ unsigned int size,
+ ares_bool_t destroy_vals)
{
unsigned int i;
@@ -79,30 +84,30 @@ static void ares__htable_buckets_destroy(ares__llist_t **buckets,
}
if (!destroy_vals) {
- ares__llist_replace_destructor(buckets[i], NULL);
+ ares_llist_replace_destructor(buckets[i], NULL);
}
- ares__llist_destroy(buckets[i]);
+ ares_llist_destroy(buckets[i]);
}
ares_free(buckets);
}
-void ares__htable_destroy(ares__htable_t *htable)
+void ares_htable_destroy(ares_htable_t *htable)
{
if (htable == NULL) {
return;
}
- ares__htable_buckets_destroy(htable->buckets, htable->size, ARES_TRUE);
+ ares_htable_buckets_destroy(htable->buckets, htable->size, ARES_TRUE);
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,
- ares__htable_key_eq_t key_eq)
+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,
+ ares_htable_key_eq_t key_eq)
{
- ares__htable_t *htable = NULL;
+ ares_htable_t *htable = NULL;
if (hash_func == NULL || bucket_key == NULL || bucket_free == NULL ||
key_eq == NULL) {
@@ -118,7 +123,7 @@ ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func,
htable->bucket_key = bucket_key;
htable->bucket_free = bucket_free;
htable->key_eq = key_eq;
- htable->seed = ares__htable_generate_seed(htable);
+ htable->seed = ares_htable_generate_seed(htable);
htable->size = ARES__HTABLE_MIN_BUCKETS;
htable->buckets = ares_malloc_zero(sizeof(*htable->buckets) * htable->size);
@@ -129,11 +134,11 @@ ares__htable_t *ares__htable_create(ares__htable_hashfunc_t hash_func,
return htable;
fail:
- ares__htable_destroy(htable);
+ ares_htable_destroy(htable);
return NULL;
}
-const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num)
+const void **ares_htable_all_buckets(const ares_htable_t *htable, size_t *num)
{
const void **out = NULL;
size_t cnt = 0;
@@ -151,10 +156,10 @@ const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num)
}
for (i = 0; i < htable->size; i++) {
- ares__llist_node_t *node;
- for (node = ares__llist_node_first(htable->buckets[i]); node != NULL;
- node = ares__llist_node_next(node)) {
- out[cnt++] = ares__llist_node_val(node);
+ ares_llist_node_t *node;
+ for (node = ares_llist_node_first(htable->buckets[i]); node != NULL;
+ node = ares_llist_node_next(node)) {
+ out[cnt++] = ares_llist_node_val(node);
}
}
@@ -169,14 +174,14 @@ const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num)
* efficient */
#define HASH_IDX(h, key) h->hash(key, h->seed) & (h->size - 1)
-static ares__llist_node_t *ares__htable_find(const 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;
+ ares_llist_node_t *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)))) {
+ 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)))) {
break;
}
}
@@ -184,14 +189,14 @@ static ares__llist_node_t *ares__htable_find(const ares__htable_t *htable,
return node;
}
-static ares_bool_t 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;
- ares__llist_t **prealloc_llist = NULL;
- size_t prealloc_llist_len = 0;
- ares_bool_t rv = ARES_FALSE;
+ ares_llist_t **buckets = NULL;
+ unsigned int old_size = htable->size;
+ size_t i;
+ ares_llist_t **prealloc_llist = NULL;
+ size_t prealloc_llist_len = 0;
+ ares_bool_t rv = ARES_FALSE;
/* Not a failure, just won't expand */
if (old_size == ARES__HTABLE_MAX_BUCKETS) {
@@ -219,7 +224,7 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
}
}
for (i = 0; i < prealloc_llist_len; i++) {
- prealloc_llist[i] = ares__llist_create(htable->bucket_free);
+ prealloc_llist[i] = ares_llist_create(htable->bucket_free);
if (prealloc_llist[i] == NULL) {
goto done;
}
@@ -228,7 +233,7 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
/* Iterate across all buckets and move the entries to the new buckets */
htable->num_collisions = 0;
for (i = 0; i < old_size; i++) {
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
/* Nothing in this bucket */
if (htable->buckets[i] == NULL) {
@@ -238,8 +243,8 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
/* Fast path optimization (most likely case), there is likely only a single
* entry in both the source and destination, check for this to confirm and
* if so, just move the bucket over */
- if (ares__llist_len(htable->buckets[i]) == 1) {
- const void *val = ares__llist_first_val(htable->buckets[i]);
+ if (ares_llist_len(htable->buckets[i]) == 1) {
+ const void *val = ares_llist_first_val(htable->buckets[i]);
size_t idx = HASH_IDX(htable, htable->bucket_key(val));
if (buckets[idx] == NULL) {
@@ -251,13 +256,13 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
}
/* Slow path, collisions */
- while ((node = ares__llist_node_first(htable->buckets[i])) != NULL) {
- const void *val = ares__llist_node_val(node);
+ while ((node = ares_llist_node_first(htable->buckets[i])) != NULL) {
+ const void *val = ares_llist_node_val(node);
size_t idx = HASH_IDX(htable, htable->bucket_key(val));
/* Try fast path again as maybe we popped one collision off and the
* next we can reuse the llist parent */
- if (buckets[idx] == NULL && ares__llist_len(htable->buckets[i]) == 1) {
+ if (buckets[idx] == NULL && ares_llist_len(htable->buckets[i]) == 1) {
/* Swap! */
buckets[idx] = htable->buckets[i];
htable->buckets[i] = NULL;
@@ -277,12 +282,12 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
htable->num_collisions++;
}
- ares__llist_node_move_parent_first(node, buckets[idx]);
+ ares_llist_node_mvparent_first(node, buckets[idx]);
}
/* Abandoned bucket, destroy */
if (htable->buckets[i] != NULL) {
- ares__llist_destroy(htable->buckets[i]);
+ ares_llist_destroy(htable->buckets[i]);
htable->buckets[i] = NULL;
}
}
@@ -297,8 +302,8 @@ static ares_bool_t ares__htable_expand(ares__htable_t *htable)
done:
ares_free(buckets);
/* destroy any unused preallocated buckets */
- ares__htable_buckets_destroy(prealloc_llist, (unsigned int)prealloc_llist_len,
- ARES_FALSE);
+ ares_htable_buckets_destroy(prealloc_llist, (unsigned int)prealloc_llist_len,
+ ARES_FALSE);
/* On failure, we need to restore the htable size */
if (rv != ARES_TRUE) {
@@ -308,11 +313,11 @@ done:
return rv;
}
-ares_bool_t 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;
+ unsigned int idx = 0;
+ ares_llist_node_t *node = NULL;
+ const void *key = NULL;
if (htable == NULL || bucket == NULL) {
return ARES_FALSE;
@@ -323,9 +328,9 @@ ares_bool_t ares__htable_insert(ares__htable_t *htable, void *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);
+ node = ares_htable_find(htable, idx, key);
if (node != NULL) {
- ares__llist_node_replace(node, bucket);
+ ares_llist_node_replace(node, bucket);
return ARES_TRUE;
}
@@ -333,7 +338,7 @@ ares_bool_t ares__htable_insert(ares__htable_t *htable, void *bucket)
* increased beyond our threshold */
if (htable->num_keys + 1 >
(htable->size * ARES__HTABLE_EXPAND_PERCENT) / 100) {
- if (!ares__htable_expand(htable)) {
+ if (!ares_htable_expand(htable)) {
return ARES_FALSE; /* LCOV_EXCL_LINE */
}
/* If we expanded, need to calculate a new index */
@@ -342,19 +347,19 @@ ares_bool_t 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);
+ htable->buckets[idx] = ares_llist_create(htable->bucket_free);
if (htable->buckets[idx] == NULL) {
return ARES_FALSE;
}
}
- node = ares__llist_insert_first(htable->buckets[idx], bucket);
+ node = ares_llist_insert_first(htable->buckets[idx], bucket);
if (node == NULL) {
return ARES_FALSE;
}
/* Track collisions for rehash stability */
- if (ares__llist_len(htable->buckets[idx]) > 1) {
+ if (ares_llist_len(htable->buckets[idx]) > 1) {
htable->num_collisions++;
}
@@ -363,7 +368,7 @@ ares_bool_t ares__htable_insert(ares__htable_t *htable, void *bucket)
return ARES_TRUE;
}
-void *ares__htable_get(const ares__htable_t *htable, const void *key)
+void *ares_htable_get(const ares_htable_t *htable, const void *key)
{
unsigned int idx;
@@ -373,20 +378,20 @@ void *ares__htable_get(const ares__htable_t *htable, const void *key)
idx = HASH_IDX(htable, key);
- return ares__llist_node_val(ares__htable_find(htable, idx, key));
+ return ares_llist_node_val(ares_htable_find(htable, idx, key));
}
-ares_bool_t 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;
+ ares_llist_node_t *node;
+ unsigned int idx;
if (htable == NULL || key == NULL) {
return ARES_FALSE;
}
idx = HASH_IDX(htable, key);
- node = ares__htable_find(htable, idx, key);
+ node = ares_htable_find(htable, idx, key);
if (node == NULL) {
return ARES_FALSE;
}
@@ -394,15 +399,15 @@ ares_bool_t ares__htable_remove(ares__htable_t *htable, const void *key)
htable->num_keys--;
/* Reduce collisions */
- if (ares__llist_len(ares__llist_node_parent(node)) > 1) {
+ if (ares_llist_len(ares_llist_node_parent(node)) > 1) {
htable->num_collisions--;
}
- ares__llist_node_destroy(node);
+ ares_llist_node_destroy(node);
return ARES_TRUE;
}
-size_t ares__htable_num_keys(const ares__htable_t *htable)
+size_t ares_htable_num_keys(const ares_htable_t *htable)
{
if (htable == NULL) {
return 0;
@@ -410,16 +415,15 @@ size_t ares__htable_num_keys(const ares__htable_t *htable)
return htable->num_keys;
}
-unsigned int ares__htable_hash_FNV1a(const unsigned char *key, size_t key_len,
- unsigned int seed)
+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;
+ unsigned int hv = seed ^ 2166136261U;
size_t i;
for (i = 0; i < key_len; i++) {
hv ^= (unsigned int)key[i];
- /* hv *= 0x01000193 */
+ /* hv *= 16777619 (0x01000193) */
hv += (hv << 1) + (hv << 4) + (hv << 7) + (hv << 8) + (hv << 24);
}
@@ -427,16 +431,15 @@ unsigned int ares__htable_hash_FNV1a(const unsigned char *key, size_t key_len,
}
/* 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;
+ unsigned int hv = seed ^ 2166136261U;
size_t i;
for (i = 0; i < key_len; i++) {
- hv ^= (unsigned int)ares__tolower(key[i]);
- /* hv *= 0x01000193 */
+ hv ^= (unsigned int)ares_tolower(key[i]);
+ /* hv *= 16777619 (0x01000193) */
hv += (hv << 1) + (hv << 4) + (hv << 7) + (hv << 8) + (hv << 24);
}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable.h b/contrib/libs/c-ares/src/lib/dsa/ares_htable.h
index d09c865977..5700286eb0 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable.h
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable.h
@@ -27,7 +27,7 @@
#define __ARES__HTABLE_H
-/*! \addtogroup ares__htable Base HashTable Data Structure
+/*! \addtogroup ares_htable Base HashTable Data Structure
*
* This is a basic hashtable data structure that is meant to be wrapped
* by a higher level implementation. This data structure is designed to
@@ -45,10 +45,10 @@
* @{
*/
-struct ares__htable;
+struct ares_htable;
/*! Opaque data type for generic hash table implementation */
-typedef struct ares__htable ares__htable_t;
+typedef struct ares_htable ares_htable_t;
/*! Callback for generating a hash of the key.
*
@@ -58,21 +58,21 @@ typedef struct ares__htable ares__htable_t;
* but otherwise will not change between calls.
* \return hash
*/
-typedef unsigned int (*ares__htable_hashfunc_t)(const void *key,
- unsigned int seed);
+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
*
@@ -80,15 +80,14 @@ typedef const void *(*ares__htable_bucket_key_t)(const void *bucket);
* \param[in] key2 second key
* \return ARES_TRUE if equal, ARES_FALSE if not
*/
-typedef ares_bool_t (*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
*
* \param[in] htable initialized hashtable
*/
-void ares__htable_destroy(ares__htable_t *htable);
+void ares_htable_destroy(ares_htable_t *htable);
/*! Create a new hashtable
*
@@ -98,17 +97,17 @@ void ares__htable_destroy(ares__htable_t *htable);
* \param[in] key_eq Required. Callback to check for key equality.
* \return initialized hashtable. NULL if out of memory or misuse.
*/
-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,
- ares__htable_key_eq_t key_eq);
+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,
+ 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(const ares__htable_t *htable);
+size_t ares_htable_num_keys(const ares_htable_t *htable);
/*! Retrieve an array of buckets from the hashtable. This is mainly used as
* a helper for retrieving an array of keys.
@@ -120,8 +119,7 @@ size_t ares__htable_num_keys(const ares__htable_t *htable);
* will be a dangling pointer. It is expected wrappers will make
* such values safe by duplicating them.
*/
-const void **ares__htable_all_buckets(const ares__htable_t *htable,
- size_t *num);
+const void **ares_htable_all_buckets(const ares_htable_t *htable, size_t *num);
/*! Insert bucket into hashtable
*
@@ -130,7 +128,7 @@ const void **ares__htable_all_buckets(const ares__htable_t *htable,
* allowed to be NULL.
* \return ARES_TRUE on success, ARES_FALSE if out of memory
*/
-ares_bool_t 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.
*
@@ -138,7 +136,7 @@ ares_bool_t ares__htable_insert(ares__htable_t *htable, void *bucket);
* \param[in] key Pointer to key to use for comparison.
* \return matching bucket, or NULL if not found.
*/
-void *ares__htable_get(const 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
*
@@ -146,7 +144,7 @@ void *ares__htable_get(const ares__htable_t *htable, const void *key);
* \param[in] key Pointer to key to use for comparison
* \return ARES_TRUE if found, ARES_FALSE if not found
*/
-ares_bool_t 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.
@@ -156,8 +154,8 @@ ares_bool_t ares__htable_remove(ares__htable_t *htable, const void *key);
* \param[in] seed Seed for generating hash
* \return hash value
*/
-unsigned int ares__htable_hash_FNV1a(const unsigned char *key, size_t key_len,
- unsigned int seed);
+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
* hashing to make the hash case-insensitive. Can be used as underlying
@@ -168,8 +166,8 @@ unsigned int ares__htable_hash_FNV1a(const unsigned char *key, size_t key_len,
* \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);
+unsigned int ares_htable_hash_FNV1a_casecmp(const unsigned char *key,
+ size_t key_len, unsigned int seed);
/*! @} */
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_asvp.c b/contrib/libs/c-ares/src/lib/dsa/ares_htable_asvp.c
index 4b9267ff6c..32f4d2c994 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_asvp.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable_asvp.c
@@ -24,46 +24,45 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__htable.h"
-#include "ares__htable_asvp.h"
+#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;
+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;
+ 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)
+void ares_htable_asvp_destroy(ares_htable_asvp_t *htable)
{
if (htable == NULL) {
return;
}
- ares__htable_destroy(htable->hash);
+ 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;
- return ares__htable_hash_FNV1a((const unsigned char *)arg, sizeof(*arg),
- seed);
+ return ares_htable_hash_FNV1a((const unsigned char *)arg, sizeof(*arg), seed);
}
static const void *bucket_key(const void *bucket)
{
- const ares__htable_asvp_bucket_t *arg = 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;
+ ares_htable_asvp_bucket_t *arg = bucket;
if (arg->parent->free_val) {
arg->parent->free_val(arg->val);
@@ -84,16 +83,15 @@ static ares_bool_t key_eq(const void *key1, const void *key2)
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));
+ ares_htable_asvp_t *htable = ares_malloc(sizeof(*htable));
if (htable == NULL) {
goto fail;
}
- htable->hash =
- ares__htable_create(hash_func, bucket_key, bucket_free, key_eq);
+ htable->hash = ares_htable_create(hash_func, bucket_key, bucket_free, key_eq);
if (htable->hash == NULL) {
goto fail;
}
@@ -104,14 +102,14 @@ ares__htable_asvp_t *
fail:
if (htable) {
- ares__htable_destroy(htable->hash);
+ ares_htable_destroy(htable->hash);
ares_free(htable);
}
return NULL;
}
-ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
- size_t *num)
+ares_socket_t *ares_htable_asvp_keys(const ares_htable_asvp_t *htable,
+ size_t *num)
{
const void **buckets = NULL;
size_t cnt = 0;
@@ -124,7 +122,7 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
*num = 0;
- buckets = ares__htable_all_buckets(htable->hash, &cnt);
+ buckets = ares_htable_all_buckets(htable->hash, &cnt);
if (buckets == NULL || cnt == 0) {
return NULL;
}
@@ -136,7 +134,7 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
}
for (i = 0; i < cnt; i++) {
- out[i] = ((const ares__htable_asvp_bucket_t *)buckets[i])->key;
+ out[i] = ((const ares_htable_asvp_bucket_t *)buckets[i])->key;
}
ares_free(buckets);
@@ -144,10 +142,10 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
return out;
}
-ares_bool_t 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;
+ ares_htable_asvp_bucket_t *bucket = NULL;
if (htable == NULL) {
goto fail;
@@ -162,7 +160,7 @@ ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
bucket->key = key;
bucket->val = val;
- if (!ares__htable_insert(htable->hash, bucket)) {
+ if (!ares_htable_insert(htable->hash, bucket)) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -175,10 +173,10 @@ fail:
return ARES_FALSE;
}
-ares_bool_t ares__htable_asvp_get(const 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;
+ ares_htable_asvp_bucket_t *bucket = NULL;
if (val) {
*val = NULL;
@@ -188,7 +186,7 @@ ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable,
return ARES_FALSE;
}
- bucket = ares__htable_get(htable->hash, &key);
+ bucket = ares_htable_get(htable->hash, &key);
if (bucket == NULL) {
return ARES_FALSE;
}
@@ -199,28 +197,28 @@ ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable,
return ARES_TRUE;
}
-void *ares__htable_asvp_get_direct(const 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);
+ ares_htable_asvp_get(htable, key, &val);
return val;
}
-ares_bool_t 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 ARES_FALSE;
}
- return ares__htable_remove(htable->hash, &key);
+ return ares_htable_remove(htable->hash, &key);
}
-size_t ares__htable_asvp_num_keys(const ares__htable_asvp_t *htable)
+size_t ares_htable_asvp_num_keys(const ares_htable_asvp_t *htable)
{
if (htable == NULL) {
return 0;
}
- return ares__htable_num_keys(htable->hash);
+ return ares_htable_num_keys(htable->hash);
}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares_htable_dict.c b/contrib/libs/c-ares/src/lib/dsa/ares_htable_dict.c
new file mode 100644
index 0000000000..93d7a20137
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable_dict.c
@@ -0,0 +1,228 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_private.h"
+#include "ares_htable.h"
+#include "ares_htable_dict.h"
+
+struct ares_htable_dict {
+ ares_htable_t *hash;
+};
+
+typedef struct {
+ char *key;
+ char *val;
+ ares_htable_dict_t *parent;
+} ares_htable_dict_bucket_t;
+
+void ares_htable_dict_destroy(ares_htable_dict_t *htable)
+{
+ if (htable == NULL) {
+ return; /* LCOV_EXCL_LINE: DefensiveCoding */
+ }
+
+ ares_htable_destroy(htable->hash);
+ ares_free(htable);
+}
+
+static unsigned int hash_func(const void *key, unsigned int seed)
+{
+ return ares_htable_hash_FNV1a_casecmp(key, ares_strlen(key), seed);
+}
+
+static const void *bucket_key(const void *bucket)
+{
+ const ares_htable_dict_bucket_t *arg = bucket;
+ return arg->key;
+}
+
+static void bucket_free(void *bucket)
+{
+ ares_htable_dict_bucket_t *arg = bucket;
+
+ ares_free(arg->key);
+ ares_free(arg->val);
+
+ ares_free(arg);
+}
+
+static ares_bool_t key_eq(const void *key1, const void *key2)
+{
+ return ares_strcaseeq(key1, key2);
+}
+
+ares_htable_dict_t *ares_htable_dict_create(void)
+{
+ ares_htable_dict_t *htable = ares_malloc(sizeof(*htable));
+ if (htable == NULL) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+
+ htable->hash = ares_htable_create(hash_func, bucket_key, bucket_free, key_eq);
+ if (htable->hash == NULL) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+
+ return htable;
+
+/* LCOV_EXCL_START: OutOfMemory */
+fail:
+ if (htable) {
+ ares_htable_destroy(htable->hash);
+ ares_free(htable);
+ }
+ return NULL;
+ /* LCOV_EXCL_STOP */
+}
+
+ares_bool_t ares_htable_dict_insert(ares_htable_dict_t *htable, const char *key,
+ const char *val)
+{
+ ares_htable_dict_bucket_t *bucket = NULL;
+
+ if (htable == NULL || ares_strlen(key) == 0) {
+ goto fail;
+ }
+
+ bucket = ares_malloc_zero(sizeof(*bucket));
+ if (bucket == NULL) {
+ goto fail;
+ }
+
+ bucket->parent = htable;
+ bucket->key = ares_strdup(key);
+ if (bucket->key == NULL) {
+ goto fail;
+ }
+
+ if (val != NULL) {
+ bucket->val = ares_strdup(val);
+ if (bucket->val == NULL) {
+ goto fail;
+ }
+ }
+
+ if (!ares_htable_insert(htable->hash, bucket)) {
+ goto fail;
+ }
+
+ return ARES_TRUE;
+
+fail:
+ if (bucket) {
+ ares_free(bucket->val);
+ ares_free(bucket);
+ }
+ return ARES_FALSE;
+}
+
+ares_bool_t ares_htable_dict_get(const ares_htable_dict_t *htable,
+ const char *key, const char **val)
+{
+ const ares_htable_dict_bucket_t *bucket = NULL;
+
+ if (val) {
+ *val = NULL;
+ }
+
+ if (htable == NULL) {
+ return ARES_FALSE;
+ }
+
+ bucket = ares_htable_get(htable->hash, key);
+ if (bucket == NULL) {
+ return ARES_FALSE;
+ }
+
+ if (val) {
+ *val = bucket->val;
+ }
+ return ARES_TRUE;
+}
+
+const char *ares_htable_dict_get_direct(const ares_htable_dict_t *htable,
+ const char *key)
+{
+ const char *val = NULL;
+ ares_htable_dict_get(htable, key, &val);
+ return val;
+}
+
+ares_bool_t ares_htable_dict_remove(ares_htable_dict_t *htable, const char *key)
+{
+ if (htable == NULL) {
+ return ARES_FALSE;
+ }
+
+ return ares_htable_remove(htable->hash, key);
+}
+
+size_t ares_htable_dict_num_keys(const ares_htable_dict_t *htable)
+{
+ if (htable == NULL) {
+ return 0;
+ }
+ return ares_htable_num_keys(htable->hash);
+}
+
+char **ares_htable_dict_keys(const ares_htable_dict_t *htable, size_t *num)
+{
+ const void **buckets = NULL;
+ size_t cnt = 0;
+ char **out = NULL;
+ size_t i;
+
+ if (htable == NULL || num == NULL) {
+ return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */
+ }
+
+ *num = 0;
+
+ buckets = ares_htable_all_buckets(htable->hash, &cnt);
+ if (buckets == NULL || cnt == 0) {
+ return NULL;
+ }
+
+ out = ares_malloc_zero(sizeof(*out) * cnt);
+ if (out == NULL) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+
+ for (i = 0; i < cnt; i++) {
+ out[i] = ares_strdup(((const ares_htable_dict_bucket_t *)buckets[i])->key);
+ if (out[i] == NULL) {
+ goto fail;
+ }
+ }
+
+ ares_free(buckets);
+ *num = cnt;
+ return out;
+
+fail:
+ *num = 0;
+ ares_free_array(out, cnt, ares_free);
+ return NULL;
+}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_strvp.c b/contrib/libs/c-ares/src/lib/dsa/ares_htable_strvp.c
index d73a1928a7..daca117e80 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_strvp.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable_strvp.c
@@ -24,46 +24,46 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__htable.h"
-#include "ares__htable_strvp.h"
+#include "ares_htable.h"
+#include "ares_htable_strvp.h"
-struct ares__htable_strvp {
- ares__htable_strvp_val_free_t free_val;
- ares__htable_t *hash;
+struct ares_htable_strvp {
+ ares_htable_strvp_val_free_t free_val;
+ ares_htable_t *hash;
};
typedef struct {
- char *key;
- void *val;
- ares__htable_strvp_t *parent;
-} ares__htable_strvp_bucket_t;
+ char *key;
+ void *val;
+ ares_htable_strvp_t *parent;
+} ares_htable_strvp_bucket_t;
-void ares__htable_strvp_destroy(ares__htable_strvp_t *htable)
+void ares_htable_strvp_destroy(ares_htable_strvp_t *htable)
{
if (htable == NULL) {
return;
}
- ares__htable_destroy(htable->hash);
+ ares_htable_destroy(htable->hash);
ares_free(htable);
}
static unsigned int hash_func(const void *key, unsigned int seed)
{
const char *arg = key;
- return ares__htable_hash_FNV1a_casecmp((const unsigned char *)arg,
- ares_strlen(arg), seed);
+ return ares_htable_hash_FNV1a_casecmp((const unsigned char *)arg,
+ ares_strlen(arg), seed);
}
static const void *bucket_key(const void *bucket)
{
- const ares__htable_strvp_bucket_t *arg = bucket;
+ const ares_htable_strvp_bucket_t *arg = bucket;
return arg->key;
}
static void bucket_free(void *bucket)
{
- ares__htable_strvp_bucket_t *arg = bucket;
+ ares_htable_strvp_bucket_t *arg = bucket;
if (arg->parent->free_val) {
arg->parent->free_val(arg->val);
@@ -74,26 +74,18 @@ static void bucket_free(void *bucket)
static ares_bool_t key_eq(const void *key1, const void *key2)
{
- const char *k1 = key1;
- const char *k2 = key2;
-
- if (strcasecmp(k1, k2) == 0) {
- return ARES_TRUE;
- }
-
- return ARES_FALSE;
+ return ares_strcaseeq(key1, key2);
}
-ares__htable_strvp_t *
- ares__htable_strvp_create(ares__htable_strvp_val_free_t val_free)
+ares_htable_strvp_t *
+ ares_htable_strvp_create(ares_htable_strvp_val_free_t val_free)
{
- ares__htable_strvp_t *htable = ares_malloc(sizeof(*htable));
+ ares_htable_strvp_t *htable = ares_malloc(sizeof(*htable));
if (htable == NULL) {
goto fail;
}
- htable->hash =
- ares__htable_create(hash_func, bucket_key, bucket_free, key_eq);
+ htable->hash = ares_htable_create(hash_func, bucket_key, bucket_free, key_eq);
if (htable->hash == NULL) {
goto fail;
}
@@ -104,16 +96,16 @@ ares__htable_strvp_t *
fail:
if (htable) {
- ares__htable_destroy(htable->hash);
+ ares_htable_destroy(htable->hash);
ares_free(htable);
}
return NULL;
}
-ares_bool_t ares__htable_strvp_insert(ares__htable_strvp_t *htable,
- const char *key, void *val)
+ares_bool_t ares_htable_strvp_insert(ares_htable_strvp_t *htable,
+ const char *key, void *val)
{
- ares__htable_strvp_bucket_t *bucket = NULL;
+ ares_htable_strvp_bucket_t *bucket = NULL;
if (htable == NULL || key == NULL) {
goto fail;
@@ -131,7 +123,7 @@ ares_bool_t ares__htable_strvp_insert(ares__htable_strvp_t *htable,
}
bucket->val = val;
- if (!ares__htable_insert(htable->hash, bucket)) {
+ if (!ares_htable_insert(htable->hash, bucket)) {
goto fail;
}
@@ -145,10 +137,10 @@ fail:
return ARES_FALSE;
}
-ares_bool_t ares__htable_strvp_get(const ares__htable_strvp_t *htable,
- const char *key, void **val)
+ares_bool_t ares_htable_strvp_get(const ares_htable_strvp_t *htable,
+ const char *key, void **val)
{
- ares__htable_strvp_bucket_t *bucket = NULL;
+ ares_htable_strvp_bucket_t *bucket = NULL;
if (val) {
*val = NULL;
@@ -158,7 +150,7 @@ ares_bool_t ares__htable_strvp_get(const ares__htable_strvp_t *htable,
return ARES_FALSE;
}
- bucket = ares__htable_get(htable->hash, key);
+ bucket = ares_htable_get(htable->hash, key);
if (bucket == NULL) {
return ARES_FALSE;
}
@@ -169,28 +161,50 @@ ares_bool_t ares__htable_strvp_get(const ares__htable_strvp_t *htable,
return ARES_TRUE;
}
-void *ares__htable_strvp_get_direct(const ares__htable_strvp_t *htable,
- const char *key)
+void *ares_htable_strvp_get_direct(const ares_htable_strvp_t *htable,
+ const char *key)
{
void *val = NULL;
- ares__htable_strvp_get(htable, key, &val);
+ ares_htable_strvp_get(htable, key, &val);
return val;
}
-ares_bool_t ares__htable_strvp_remove(ares__htable_strvp_t *htable,
- const char *key)
+ares_bool_t ares_htable_strvp_remove(ares_htable_strvp_t *htable,
+ const char *key)
{
if (htable == NULL) {
return ARES_FALSE;
}
- return ares__htable_remove(htable->hash, key);
+ return ares_htable_remove(htable->hash, key);
+}
+
+void *ares_htable_strvp_claim(ares_htable_strvp_t *htable, const char *key)
+{
+ ares_htable_strvp_bucket_t *bucket = NULL;
+ void *val;
+
+ if (htable == NULL || key == NULL) {
+ return NULL;
+ }
+
+ bucket = ares_htable_get(htable->hash, key);
+ if (bucket == NULL) {
+ return NULL;
+ }
+
+ /* Unassociate value from bucket */
+ val = bucket->val;
+ bucket->val = NULL;
+
+ ares_htable_strvp_remove(htable, key);
+ return val;
}
-size_t ares__htable_strvp_num_keys(const ares__htable_strvp_t *htable)
+size_t ares_htable_strvp_num_keys(const ares_htable_strvp_t *htable)
{
if (htable == NULL) {
return 0;
}
- return ares__htable_num_keys(htable->hash);
+ return ares_htable_num_keys(htable->hash);
}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_szvp.c b/contrib/libs/c-ares/src/lib/dsa/ares_htable_szvp.c
index b3e88d8b9a..fdaae0a571 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_szvp.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable_szvp.c
@@ -24,46 +24,45 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__htable.h"
-#include "ares__htable_szvp.h"
+#include "ares_htable.h"
+#include "ares_htable_szvp.h"
-struct ares__htable_szvp {
- ares__htable_szvp_val_free_t free_val;
- ares__htable_t *hash;
+struct ares_htable_szvp {
+ ares_htable_szvp_val_free_t free_val;
+ ares_htable_t *hash;
};
typedef struct {
- size_t key;
- void *val;
- ares__htable_szvp_t *parent;
-} ares__htable_szvp_bucket_t;
+ size_t key;
+ void *val;
+ ares_htable_szvp_t *parent;
+} ares_htable_szvp_bucket_t;
-void ares__htable_szvp_destroy(ares__htable_szvp_t *htable)
+void ares_htable_szvp_destroy(ares_htable_szvp_t *htable)
{
if (htable == NULL) {
return;
}
- ares__htable_destroy(htable->hash);
+ ares_htable_destroy(htable->hash);
ares_free(htable);
}
static unsigned int hash_func(const void *key, unsigned int seed)
{
const size_t *arg = key;
- return ares__htable_hash_FNV1a((const unsigned char *)arg, sizeof(*arg),
- seed);
+ return ares_htable_hash_FNV1a((const unsigned char *)arg, sizeof(*arg), seed);
}
static const void *bucket_key(const void *bucket)
{
- const ares__htable_szvp_bucket_t *arg = bucket;
+ const ares_htable_szvp_bucket_t *arg = bucket;
return &arg->key;
}
static void bucket_free(void *bucket)
{
- ares__htable_szvp_bucket_t *arg = bucket;
+ ares_htable_szvp_bucket_t *arg = bucket;
if (arg->parent->free_val) {
arg->parent->free_val(arg->val);
@@ -84,16 +83,15 @@ static ares_bool_t key_eq(const void *key1, const void *key2)
return ARES_FALSE;
}
-ares__htable_szvp_t *
- ares__htable_szvp_create(ares__htable_szvp_val_free_t val_free)
+ares_htable_szvp_t *
+ ares_htable_szvp_create(ares_htable_szvp_val_free_t val_free)
{
- ares__htable_szvp_t *htable = ares_malloc(sizeof(*htable));
+ ares_htable_szvp_t *htable = ares_malloc(sizeof(*htable));
if (htable == NULL) {
goto fail;
}
- htable->hash =
- ares__htable_create(hash_func, bucket_key, bucket_free, key_eq);
+ htable->hash = ares_htable_create(hash_func, bucket_key, bucket_free, key_eq);
if (htable->hash == NULL) {
goto fail;
}
@@ -104,16 +102,16 @@ ares__htable_szvp_t *
fail:
if (htable) {
- ares__htable_destroy(htable->hash);
+ ares_htable_destroy(htable->hash);
ares_free(htable);
}
return NULL;
}
-ares_bool_t ares__htable_szvp_insert(ares__htable_szvp_t *htable, size_t key,
- void *val)
+ares_bool_t ares_htable_szvp_insert(ares_htable_szvp_t *htable, size_t key,
+ void *val)
{
- ares__htable_szvp_bucket_t *bucket = NULL;
+ ares_htable_szvp_bucket_t *bucket = NULL;
if (htable == NULL) {
goto fail;
@@ -128,7 +126,7 @@ ares_bool_t ares__htable_szvp_insert(ares__htable_szvp_t *htable, size_t key,
bucket->key = key;
bucket->val = val;
- if (!ares__htable_insert(htable->hash, bucket)) {
+ if (!ares_htable_insert(htable->hash, bucket)) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -141,10 +139,10 @@ fail:
return ARES_FALSE;
}
-ares_bool_t ares__htable_szvp_get(const ares__htable_szvp_t *htable, size_t key,
- void **val)
+ares_bool_t ares_htable_szvp_get(const ares_htable_szvp_t *htable, size_t key,
+ void **val)
{
- ares__htable_szvp_bucket_t *bucket = NULL;
+ ares_htable_szvp_bucket_t *bucket = NULL;
if (val) {
*val = NULL;
@@ -154,7 +152,7 @@ ares_bool_t ares__htable_szvp_get(const ares__htable_szvp_t *htable, size_t key,
return ARES_FALSE;
}
- bucket = ares__htable_get(htable->hash, &key);
+ bucket = ares_htable_get(htable->hash, &key);
if (bucket == NULL) {
return ARES_FALSE;
}
@@ -165,27 +163,26 @@ ares_bool_t ares__htable_szvp_get(const ares__htable_szvp_t *htable, size_t key,
return ARES_TRUE;
}
-void *ares__htable_szvp_get_direct(const ares__htable_szvp_t *htable,
- size_t key)
+void *ares_htable_szvp_get_direct(const ares_htable_szvp_t *htable, size_t key)
{
void *val = NULL;
- ares__htable_szvp_get(htable, key, &val);
+ ares_htable_szvp_get(htable, key, &val);
return val;
}
-ares_bool_t ares__htable_szvp_remove(ares__htable_szvp_t *htable, size_t key)
+ares_bool_t ares_htable_szvp_remove(ares_htable_szvp_t *htable, size_t key)
{
if (htable == NULL) {
return ARES_FALSE;
}
- return ares__htable_remove(htable->hash, &key);
+ return ares_htable_remove(htable->hash, &key);
}
-size_t ares__htable_szvp_num_keys(const ares__htable_szvp_t *htable)
+size_t ares_htable_szvp_num_keys(const ares_htable_szvp_t *htable)
{
if (htable == NULL) {
return 0;
}
- return ares__htable_num_keys(htable->hash);
+ return ares_htable_num_keys(htable->hash);
}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares_htable_vpstr.c b/contrib/libs/c-ares/src/lib/dsa/ares_htable_vpstr.c
new file mode 100644
index 0000000000..86c881f768
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable_vpstr.c
@@ -0,0 +1,186 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_private.h"
+#include "ares_htable.h"
+#include "ares_htable_vpstr.h"
+
+struct ares_htable_vpstr {
+ ares_htable_t *hash;
+};
+
+typedef struct {
+ void *key;
+ char *val;
+ ares_htable_vpstr_t *parent;
+} ares_htable_vpstr_bucket_t;
+
+void ares_htable_vpstr_destroy(ares_htable_vpstr_t *htable)
+{
+ if (htable == NULL) {
+ return; /* LCOV_EXCL_LINE: DefensiveCoding */
+ }
+
+ ares_htable_destroy(htable->hash);
+ ares_free(htable);
+}
+
+static unsigned int hash_func(const void *key, unsigned int seed)
+{
+ return ares_htable_hash_FNV1a((const unsigned char *)&key, sizeof(key), seed);
+}
+
+static const void *bucket_key(const void *bucket)
+{
+ const ares_htable_vpstr_bucket_t *arg = bucket;
+ return arg->key;
+}
+
+static void bucket_free(void *bucket)
+{
+ ares_htable_vpstr_bucket_t *arg = bucket;
+
+ ares_free(arg->val);
+
+ ares_free(arg);
+}
+
+static ares_bool_t key_eq(const void *key1, const void *key2)
+{
+ if (key1 == key2) {
+ return ARES_TRUE;
+ }
+
+ return ARES_FALSE;
+}
+
+ares_htable_vpstr_t *ares_htable_vpstr_create(void)
+{
+ ares_htable_vpstr_t *htable = ares_malloc(sizeof(*htable));
+ if (htable == NULL) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+
+ htable->hash = ares_htable_create(hash_func, bucket_key, bucket_free, key_eq);
+ if (htable->hash == NULL) {
+ goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
+ }
+
+ return htable;
+
+/* LCOV_EXCL_START: OutOfMemory */
+fail:
+ if (htable) {
+ ares_htable_destroy(htable->hash);
+ ares_free(htable);
+ }
+ return NULL;
+ /* LCOV_EXCL_STOP */
+}
+
+ares_bool_t ares_htable_vpstr_insert(ares_htable_vpstr_t *htable, void *key,
+ const char *val)
+{
+ ares_htable_vpstr_bucket_t *bucket = NULL;
+
+ if (htable == NULL) {
+ goto fail;
+ }
+
+ bucket = ares_malloc(sizeof(*bucket));
+ if (bucket == NULL) {
+ goto fail;
+ }
+
+ bucket->parent = htable;
+ bucket->key = key;
+ bucket->val = ares_strdup(val);
+ if (bucket->val == NULL) {
+ goto fail;
+ }
+
+ if (!ares_htable_insert(htable->hash, bucket)) {
+ goto fail;
+ }
+
+ return ARES_TRUE;
+
+fail:
+ if (bucket) {
+ ares_free(bucket->val);
+ ares_free(bucket);
+ }
+ return ARES_FALSE;
+}
+
+ares_bool_t ares_htable_vpstr_get(const ares_htable_vpstr_t *htable,
+ const void *key, const char **val)
+{
+ const ares_htable_vpstr_bucket_t *bucket = NULL;
+
+ if (val) {
+ *val = NULL;
+ }
+
+ if (htable == NULL) {
+ return ARES_FALSE;
+ }
+
+ bucket = ares_htable_get(htable->hash, key);
+ if (bucket == NULL) {
+ return ARES_FALSE;
+ }
+
+ if (val) {
+ *val = bucket->val;
+ }
+ return ARES_TRUE;
+}
+
+const char *ares_htable_vpstr_get_direct(const ares_htable_vpstr_t *htable,
+ const void *key)
+{
+ const char *val = NULL;
+ ares_htable_vpstr_get(htable, key, &val);
+ return val;
+}
+
+ares_bool_t ares_htable_vpstr_remove(ares_htable_vpstr_t *htable,
+ const void *key)
+{
+ if (htable == NULL) {
+ return ARES_FALSE;
+ }
+
+ return ares_htable_remove(htable->hash, key);
+}
+
+size_t ares_htable_vpstr_num_keys(const ares_htable_vpstr_t *htable)
+{
+ if (htable == NULL) {
+ return 0;
+ }
+ return ares_htable_num_keys(htable->hash);
+}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_vpvp.c b/contrib/libs/c-ares/src/lib/dsa/ares_htable_vpvp.c
index 9042c48dd7..14fd6e9da0 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_vpvp.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_htable_vpvp.c
@@ -24,46 +24,45 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__htable.h"
-#include "ares__htable_vpvp.h"
+#include "ares_htable.h"
+#include "ares_htable_vpvp.h"
-struct ares__htable_vpvp {
- ares__htable_vpvp_key_free_t free_key;
- ares__htable_vpvp_val_free_t free_val;
- ares__htable_t *hash;
+struct ares_htable_vpvp {
+ ares_htable_vpvp_key_free_t free_key;
+ ares_htable_vpvp_val_free_t free_val;
+ ares_htable_t *hash;
};
typedef struct {
- void *key;
- void *val;
- ares__htable_vpvp_t *parent;
-} ares__htable_vpvp_bucket_t;
+ void *key;
+ void *val;
+ ares_htable_vpvp_t *parent;
+} ares_htable_vpvp_bucket_t;
-void ares__htable_vpvp_destroy(ares__htable_vpvp_t *htable)
+void ares_htable_vpvp_destroy(ares_htable_vpvp_t *htable)
{
if (htable == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__htable_destroy(htable->hash);
+ ares_htable_destroy(htable->hash);
ares_free(htable);
}
static unsigned int hash_func(const void *key, unsigned int seed)
{
- return ares__htable_hash_FNV1a((const unsigned char *)&key, sizeof(key),
- seed);
+ return ares_htable_hash_FNV1a((const unsigned char *)&key, sizeof(key), seed);
}
static const void *bucket_key(const void *bucket)
{
- const ares__htable_vpvp_bucket_t *arg = bucket;
+ const ares_htable_vpvp_bucket_t *arg = bucket;
return arg->key;
}
static void bucket_free(void *bucket)
{
- ares__htable_vpvp_bucket_t *arg = bucket;
+ ares_htable_vpvp_bucket_t *arg = bucket;
if (arg->parent->free_key) {
arg->parent->free_key(arg->key);
@@ -85,17 +84,16 @@ static ares_bool_t key_eq(const void *key1, const void *key2)
return ARES_FALSE;
}
-ares__htable_vpvp_t *
- ares__htable_vpvp_create(ares__htable_vpvp_key_free_t key_free,
- ares__htable_vpvp_val_free_t val_free)
+ares_htable_vpvp_t *
+ ares_htable_vpvp_create(ares_htable_vpvp_key_free_t key_free,
+ ares_htable_vpvp_val_free_t val_free)
{
- ares__htable_vpvp_t *htable = ares_malloc(sizeof(*htable));
+ ares_htable_vpvp_t *htable = ares_malloc(sizeof(*htable));
if (htable == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
- htable->hash =
- ares__htable_create(hash_func, bucket_key, bucket_free, key_eq);
+ htable->hash = ares_htable_create(hash_func, bucket_key, bucket_free, key_eq);
if (htable->hash == NULL) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -108,17 +106,17 @@ ares__htable_vpvp_t *
/* LCOV_EXCL_START: OutOfMemory */
fail:
if (htable) {
- ares__htable_destroy(htable->hash);
+ ares_htable_destroy(htable->hash);
ares_free(htable);
}
return NULL;
/* LCOV_EXCL_STOP */
}
-ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key,
- void *val)
+ares_bool_t ares_htable_vpvp_insert(ares_htable_vpvp_t *htable, void *key,
+ void *val)
{
- ares__htable_vpvp_bucket_t *bucket = NULL;
+ ares_htable_vpvp_bucket_t *bucket = NULL;
if (htable == NULL) {
goto fail;
@@ -133,7 +131,7 @@ ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key,
bucket->key = key;
bucket->val = val;
- if (!ares__htable_insert(htable->hash, bucket)) {
+ if (!ares_htable_insert(htable->hash, bucket)) {
goto fail;
}
@@ -146,10 +144,10 @@ fail:
return ARES_FALSE;
}
-ares_bool_t ares__htable_vpvp_get(const ares__htable_vpvp_t *htable,
- const void *key, void **val)
+ares_bool_t ares_htable_vpvp_get(const ares_htable_vpvp_t *htable,
+ const void *key, void **val)
{
- ares__htable_vpvp_bucket_t *bucket = NULL;
+ ares_htable_vpvp_bucket_t *bucket = NULL;
if (val) {
*val = NULL;
@@ -159,7 +157,7 @@ ares_bool_t ares__htable_vpvp_get(const ares__htable_vpvp_t *htable,
return ARES_FALSE;
}
- bucket = ares__htable_get(htable->hash, key);
+ bucket = ares_htable_get(htable->hash, key);
if (bucket == NULL) {
return ARES_FALSE;
}
@@ -170,28 +168,27 @@ ares_bool_t ares__htable_vpvp_get(const ares__htable_vpvp_t *htable,
return ARES_TRUE;
}
-void *ares__htable_vpvp_get_direct(const ares__htable_vpvp_t *htable,
- const void *key)
+void *ares_htable_vpvp_get_direct(const ares_htable_vpvp_t *htable,
+ const void *key)
{
void *val = NULL;
- ares__htable_vpvp_get(htable, key, &val);
+ ares_htable_vpvp_get(htable, key, &val);
return val;
}
-ares_bool_t ares__htable_vpvp_remove(ares__htable_vpvp_t *htable,
- const void *key)
+ares_bool_t ares_htable_vpvp_remove(ares_htable_vpvp_t *htable, const void *key)
{
if (htable == NULL) {
return ARES_FALSE;
}
- return ares__htable_remove(htable->hash, key);
+ return ares_htable_remove(htable->hash, key);
}
-size_t ares__htable_vpvp_num_keys(const ares__htable_vpvp_t *htable)
+size_t ares_htable_vpvp_num_keys(const ares_htable_vpvp_t *htable)
{
if (htable == NULL) {
return 0;
}
- return ares__htable_num_keys(htable->hash);
+ return ares_htable_num_keys(htable->hash);
}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__llist.c b/contrib/libs/c-ares/src/lib/dsa/ares_llist.c
index 96936c1abe..6bd7de269a 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__llist.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_llist.c
@@ -24,25 +24,25 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__llist.h"
+#include "ares_llist.h"
-struct ares__llist {
- ares__llist_node_t *head;
- ares__llist_node_t *tail;
- ares__llist_destructor_t destruct;
- size_t cnt;
+struct ares_llist {
+ ares_llist_node_t *head;
+ ares_llist_node_t *tail;
+ ares_llist_destructor_t destruct;
+ size_t cnt;
};
-struct ares__llist_node {
- void *data;
- ares__llist_node_t *prev;
- ares__llist_node_t *next;
- ares__llist_t *parent;
+struct ares_llist_node {
+ void *data;
+ ares_llist_node_t *prev;
+ ares_llist_node_t *next;
+ ares_llist_t *parent;
};
-ares__llist_t *ares__llist_create(ares__llist_destructor_t destruct)
+ares_llist_t *ares_llist_create(ares_llist_destructor_t destruct)
{
- ares__llist_t *list = ares_malloc_zero(sizeof(*list));
+ ares_llist_t *list = ares_malloc_zero(sizeof(*list));
if (list == NULL) {
return NULL;
@@ -53,8 +53,8 @@ ares__llist_t *ares__llist_create(ares__llist_destructor_t destruct)
return list;
}
-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)
{
if (list == NULL) {
return;
@@ -67,12 +67,11 @@ typedef enum {
ARES__LLIST_INSERT_HEAD,
ARES__LLIST_INSERT_TAIL,
ARES__LLIST_INSERT_BEFORE
-} ares__llist_insert_type_t;
+} ares_llist_insert_type_t;
-static void ares__llist_attach_at(ares__llist_t *list,
- ares__llist_insert_type_t type,
- ares__llist_node_t *at,
- ares__llist_node_t *node)
+static void ares_llist_attach_at(ares_llist_t *list,
+ ares_llist_insert_type_t type,
+ ares_llist_node_t *at, ares_llist_node_t *node)
{
if (list == NULL || node == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -117,12 +116,11 @@ static void ares__llist_attach_at(ares__llist_t *list,
list->cnt++;
}
-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)
+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 *node = NULL;
+ ares_llist_node_t *node = NULL;
if (list == NULL || val == NULL) {
return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -135,48 +133,46 @@ static ares__llist_node_t *ares__llist_insert_at(ares__llist_t *list,
}
node->data = val;
- ares__llist_attach_at(list, type, at, node);
+ ares_llist_attach_at(list, type, at, node);
return node;
}
-ares__llist_node_t *ares__llist_insert_first(ares__llist_t *list, void *val)
+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);
+ 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)
+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);
+ 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)
+ares_llist_node_t *ares_llist_insert_before(ares_llist_node_t *node, void *val)
{
if (node == NULL) {
return NULL;
}
- return ares__llist_insert_at(node->parent, ARES__LLIST_INSERT_BEFORE, node,
- val);
+ 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)
+ares_llist_node_t *ares_llist_insert_after(ares_llist_node_t *node, void *val)
{
if (node == NULL) {
return NULL;
}
if (node->next == NULL) {
- return ares__llist_insert_last(node->parent, val);
+ return ares_llist_insert_last(node->parent, val);
}
- return ares__llist_insert_at(node->parent, ARES__LLIST_INSERT_BEFORE,
- node->next, 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)
+ares_llist_node_t *ares_llist_node_first(ares_llist_t *list)
{
if (list == NULL) {
return NULL;
@@ -184,10 +180,10 @@ ares__llist_node_t *ares__llist_node_first(ares__llist_t *list)
return list->head;
}
-ares__llist_node_t *ares__llist_node_idx(ares__llist_t *list, size_t idx)
+ares_llist_node_t *ares_llist_node_idx(ares_llist_t *list, size_t idx)
{
- ares__llist_node_t *node;
- size_t cnt;
+ ares_llist_node_t *node;
+ size_t cnt;
if (list == NULL) {
return NULL;
@@ -204,7 +200,7 @@ ares__llist_node_t *ares__llist_node_idx(ares__llist_t *list, size_t idx)
return node;
}
-ares__llist_node_t *ares__llist_node_last(ares__llist_t *list)
+ares_llist_node_t *ares_llist_node_last(ares_llist_t *list)
{
if (list == NULL) {
return NULL;
@@ -212,7 +208,7 @@ ares__llist_node_t *ares__llist_node_last(ares__llist_t *list)
return list->tail;
}
-ares__llist_node_t *ares__llist_node_next(ares__llist_node_t *node)
+ares_llist_node_t *ares_llist_node_next(ares_llist_node_t *node)
{
if (node == NULL) {
return NULL;
@@ -220,7 +216,7 @@ ares__llist_node_t *ares__llist_node_next(ares__llist_node_t *node)
return node->next;
}
-ares__llist_node_t *ares__llist_node_prev(ares__llist_node_t *node)
+ares_llist_node_t *ares_llist_node_prev(ares_llist_node_t *node)
{
if (node == NULL) {
return NULL;
@@ -228,7 +224,7 @@ ares__llist_node_t *ares__llist_node_prev(ares__llist_node_t *node)
return node->prev;
}
-void *ares__llist_node_val(ares__llist_node_t *node)
+void *ares_llist_node_val(ares_llist_node_t *node)
{
if (node == NULL) {
return NULL;
@@ -237,7 +233,7 @@ void *ares__llist_node_val(ares__llist_node_t *node)
return node->data;
}
-size_t ares__llist_len(const ares__llist_t *list)
+size_t ares_llist_len(const ares_llist_t *list)
{
if (list == NULL) {
return 0;
@@ -245,7 +241,7 @@ size_t ares__llist_len(const ares__llist_t *list)
return list->cnt;
}
-ares__llist_t *ares__llist_node_parent(ares__llist_node_t *node)
+ares_llist_t *ares_llist_node_parent(ares_llist_node_t *node)
{
if (node == NULL) {
return NULL;
@@ -253,19 +249,19 @@ ares__llist_t *ares__llist_node_parent(ares__llist_node_t *node)
return node->parent;
}
-void *ares__llist_first_val(ares__llist_t *list)
+void *ares_llist_first_val(ares_llist_t *list)
{
- return ares__llist_node_val(ares__llist_node_first(list));
+ return ares_llist_node_val(ares_llist_node_first(list));
}
-void *ares__llist_last_val(ares__llist_t *list)
+void *ares_llist_last_val(ares_llist_t *list)
{
- return ares__llist_node_val(ares__llist_node_last(list));
+ return ares_llist_node_val(ares_llist_node_last(list));
}
-static void ares__llist_node_detach(ares__llist_node_t *node)
+static void ares_llist_node_detach(ares_llist_node_t *node)
{
- ares__llist_t *list;
+ ares_llist_t *list;
if (node == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -293,7 +289,7 @@ static void ares__llist_node_detach(ares__llist_node_t *node)
list->cnt--;
}
-void *ares__llist_node_claim(ares__llist_node_t *node)
+void *ares_llist_node_claim(ares_llist_node_t *node)
{
void *val;
@@ -302,16 +298,16 @@ void *ares__llist_node_claim(ares__llist_node_t *node)
}
val = node->data;
- ares__llist_node_detach(node);
+ ares_llist_node_detach(node);
ares_free(node);
return val;
}
-void ares__llist_node_destroy(ares__llist_node_t *node)
+void ares_llist_node_destroy(ares_llist_node_t *node)
{
- ares__llist_destructor_t destruct;
- void *val;
+ ares_llist_destructor_t destruct;
+ void *val;
if (node == NULL) {
return;
@@ -319,15 +315,15 @@ void ares__llist_node_destroy(ares__llist_node_t *node)
destruct = node->parent->destruct;
- val = ares__llist_node_claim(node);
+ val = ares_llist_node_claim(node);
if (val != NULL && destruct != NULL) {
destruct(val);
}
}
-void ares__llist_node_replace(ares__llist_node_t *node, void *val)
+void ares_llist_node_replace(ares_llist_node_t *node, void *val)
{
- ares__llist_destructor_t destruct;
+ ares_llist_destructor_t destruct;
if (node == NULL) {
return;
@@ -341,46 +337,46 @@ void ares__llist_node_replace(ares__llist_node_t *node, void *val)
node->data = val;
}
-void ares__llist_clear(ares__llist_t *list)
+void ares_llist_clear(ares_llist_t *list)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
if (list == NULL) {
return;
}
- while ((node = ares__llist_node_first(list)) != NULL) {
- ares__llist_node_destroy(node);
+ while ((node = ares_llist_node_first(list)) != NULL) {
+ ares_llist_node_destroy(node);
}
}
-void ares__llist_destroy(ares__llist_t *list)
+void ares_llist_destroy(ares_llist_t *list)
{
if (list == NULL) {
return;
}
- ares__llist_clear(list);
+ ares_llist_clear(list);
ares_free(list);
}
-void ares__llist_node_move_parent_last(ares__llist_node_t *node,
- ares__llist_t *new_parent)
+void ares_llist_node_mvparent_last(ares_llist_node_t *node,
+ ares_llist_t *new_parent)
{
if (node == NULL || new_parent == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__llist_node_detach(node);
- ares__llist_attach_at(new_parent, ARES__LLIST_INSERT_TAIL, NULL, node);
+ ares_llist_node_detach(node);
+ ares_llist_attach_at(new_parent, ARES__LLIST_INSERT_TAIL, NULL, node);
}
-void ares__llist_node_move_parent_first(ares__llist_node_t *node,
- ares__llist_t *new_parent)
+void ares_llist_node_mvparent_first(ares_llist_node_t *node,
+ ares_llist_t *new_parent)
{
if (node == NULL || new_parent == NULL) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__llist_node_detach(node);
- ares__llist_attach_at(new_parent, ARES__LLIST_INSERT_HEAD, NULL, node);
+ ares_llist_node_detach(node);
+ ares_llist_attach_at(new_parent, ARES__LLIST_INSERT_HEAD, NULL, node);
}
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__slist.c b/contrib/libs/c-ares/src/lib/dsa/ares_slist.c
index f0e3f8b14a..7e68347994 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__slist.c
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_slist.c
@@ -24,39 +24,39 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__slist.h"
+#include "ares_slist.h"
/* SkipList implementation */
#define ARES__SLIST_START_LEVELS 4
-struct ares__slist {
- ares_rand_state *rand_state;
- unsigned char rand_data[8];
- size_t rand_bits;
+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;
- ares__slist_node_t *tail;
+ ares_slist_node_t **head;
+ size_t levels;
+ ares_slist_node_t *tail;
- ares__slist_cmp_t cmp;
- ares__slist_destructor_t destruct;
- size_t cnt;
+ ares_slist_cmp_t cmp;
+ ares_slist_destructor_t destruct;
+ size_t cnt;
};
-struct ares__slist_node {
- void *data;
- ares__slist_node_t **prev;
- ares__slist_node_t **next;
- size_t levels;
- ares__slist_t *parent;
+struct ares_slist_node {
+ void *data;
+ ares_slist_node_t **prev;
+ ares_slist_node_t **next;
+ size_t levels;
+ ares_slist_t *parent;
};
-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)
{
- ares__slist_t *list;
+ ares_slist_t *list;
if (rand_state == NULL || cmp == NULL) {
return NULL;
@@ -82,18 +82,17 @@ ares__slist_t *ares__slist_create(ares_rand_state *rand_state,
return list;
}
-static ares_bool_t 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;
/* Refill random data used for coin flips. We pull this in 8 byte chunks.
- * ares__rand_bytes() has some built-in caching of its own so we don't need
+ * ares_rand_bytes() has some built-in caching of its own so we don't need
* to be excessive in caching ourselves. Prefer to require less memory per
* skiplist */
if (list->rand_bits == 0) {
- ares__rand_bytes(list->rand_state, list->rand_data,
- sizeof(list->rand_data));
+ ares_rand_bytes(list->rand_state, list->rand_data, sizeof(list->rand_data));
list->rand_bits = total_bits;
}
@@ -103,8 +102,8 @@ static ares_bool_t ares__slist_coin_flip(ares__slist_t *list)
return (list->rand_data[bit / 8] & (1 << (bit % 8))) ? ARES_TRUE : ARES_FALSE;
}
-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)
{
if (list == NULL) {
return;
@@ -113,14 +112,14 @@ void ares__slist_replace_destructor(ares__slist_t *list,
list->destruct = destruct;
}
-static size_t ares__slist_max_level(const 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)) {
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) {
@@ -130,21 +129,21 @@ static size_t ares__slist_max_level(const ares__slist_t *list)
return max_level;
}
-static size_t ares__slist_calc_level(ares__slist_t *list)
+static size_t ares_slist_calc_level(ares_slist_t *list)
{
- size_t max_level = ares__slist_max_level(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;
}
-static void ares__slist_node_push(ares__slist_t *list, ares__slist_node_t *node)
+static void ares_slist_node_push(ares_slist_t *list, ares_slist_node_t *node)
{
- size_t i;
- ares__slist_node_t *left = NULL;
+ size_t i;
+ ares_slist_node_t *left = NULL;
/* 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) */
@@ -193,9 +192,9 @@ static void ares__slist_node_push(ares__slist_t *list, ares__slist_node_t *node)
}
}
-ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val)
+ares_slist_node_t *ares_slist_insert(ares_slist_t *list, void *val)
{
- ares__slist_node_t *node = NULL;
+ ares_slist_node_t *node = NULL;
if (list == NULL || val == NULL) {
return NULL;
@@ -211,7 +210,7 @@ ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val)
node->parent = list;
/* Randomly determine the number of levels we want to use */
- node->levels = ares__slist_calc_level(list);
+ node->levels = ares_slist_calc_level(list);
/* Allocate array of next and prev nodes for linking each level */
node->next = ares_malloc_zero(sizeof(*node->next) * node->levels);
@@ -238,7 +237,7 @@ ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val)
list->levels = node->levels;
}
- ares__slist_node_push(list, node);
+ ares_slist_node_push(list, node);
list->cnt++;
@@ -255,10 +254,10 @@ fail:
/* LCOV_EXCL_STOP */
}
-static void ares__slist_node_pop(ares__slist_node_t *node)
+static void ares_slist_node_pop(ares_slist_node_t *node)
{
- ares__slist_t *list = node->parent;
- size_t i;
+ ares_slist_t *list = node->parent;
+ size_t i;
/* relink each node at each level */
for (i = node->levels; i-- > 0;) {
@@ -281,10 +280,10 @@ static void ares__slist_node_pop(ares__slist_node_t *node)
memset(node->prev, 0, sizeof(*node->prev) * node->levels);
}
-void *ares__slist_node_claim(ares__slist_node_t *node)
+void *ares_slist_node_claim(ares_slist_node_t *node)
{
- ares__slist_t *list;
- void *val;
+ ares_slist_t *list;
+ void *val;
if (node == NULL) {
return NULL;
@@ -293,7 +292,7 @@ void *ares__slist_node_claim(ares__slist_node_t *node)
list = node->parent;
val = node->data;
- ares__slist_node_pop(node);
+ ares_slist_node_pop(node);
ares_free(node->next);
ares_free(node->prev);
@@ -304,9 +303,9 @@ void *ares__slist_node_claim(ares__slist_node_t *node)
return val;
}
-void ares__slist_node_reinsert(ares__slist_node_t *node)
+void ares_slist_node_reinsert(ares_slist_node_t *node)
{
- ares__slist_t *list;
+ ares_slist_t *list;
if (node == NULL) {
return;
@@ -314,15 +313,16 @@ void ares__slist_node_reinsert(ares__slist_node_t *node)
list = node->parent;
- ares__slist_node_pop(node);
- ares__slist_node_push(list, node);
+ ares_slist_node_pop(node);
+ ares_slist_node_push(list, node);
}
-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;
+ size_t i;
+ ares_slist_node_t *node = NULL;
+ int rv = -1;
if (list == NULL || val == NULL) {
return NULL;
@@ -377,7 +377,7 @@ 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) {
return NULL;
@@ -386,7 +386,7 @@ ares__slist_node_t *ares__slist_node_first(ares__slist_t *list)
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) {
return NULL;
@@ -394,7 +394,7 @@ ares__slist_node_t *ares__slist_node_last(ares__slist_t *list)
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) {
return NULL;
@@ -402,7 +402,7 @@ ares__slist_node_t *ares__slist_node_next(ares__slist_node_t *node)
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) {
return NULL;
@@ -410,7 +410,7 @@ ares__slist_node_t *ares__slist_node_prev(ares__slist_node_t *node)
return node->prev[0];
}
-void *ares__slist_node_val(ares__slist_node_t *node)
+void *ares_slist_node_val(ares_slist_node_t *node)
{
if (node == NULL) {
return NULL;
@@ -419,7 +419,7 @@ void *ares__slist_node_val(ares__slist_node_t *node)
return node->data;
}
-size_t ares__slist_len(const ares__slist_t *list)
+size_t ares_slist_len(const ares_slist_t *list)
{
if (list == NULL) {
return 0;
@@ -427,7 +427,7 @@ size_t ares__slist_len(const ares__slist_t *list)
return list->cnt;
}
-ares__slist_t *ares__slist_node_parent(ares__slist_node_t *node)
+ares_slist_t *ares_slist_node_parent(ares_slist_node_t *node)
{
if (node == NULL) {
return NULL;
@@ -435,43 +435,43 @@ ares__slist_t *ares__slist_node_parent(ares__slist_node_t *node)
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));
+ 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));
+ return ares_slist_node_val(ares_slist_node_last(list));
}
-void ares__slist_node_destroy(ares__slist_node_t *node)
+void ares_slist_node_destroy(ares_slist_node_t *node)
{
- ares__slist_destructor_t destruct;
- void *val;
+ ares_slist_destructor_t destruct;
+ void *val;
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) {
destruct(val);
}
}
-void ares__slist_destroy(ares__slist_t *list)
+void ares_slist_destroy(ares_slist_t *list)
{
- ares__slist_node_t *node;
+ ares_slist_node_t *node;
if (list == NULL) {
return;
}
- while ((node = ares__slist_node_first(list)) != NULL) {
- ares__slist_node_destroy(node);
+ while ((node = ares_slist_node_first(list)) != NULL) {
+ ares_slist_node_destroy(node);
}
ares_free(list->head);
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__slist.h b/contrib/libs/c-ares/src/lib/dsa/ares_slist.h
index 26af88fa78..a89c2652f2 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__slist.h
+++ b/contrib/libs/c-ares/src/lib/dsa/ares_slist.h
@@ -27,7 +27,7 @@
#define __ARES__SLIST_H
-/*! \addtogroup ares__slist SkipList Data Structure
+/*! \addtogroup ares_slist SkipList Data Structure
*
* This data structure is known as a Skip List, which in essence is a sorted
* linked list with multiple levels of linkage to gain some algorithmic
@@ -49,21 +49,21 @@
*
* @{
*/
-struct ares__slist;
+struct ares_slist;
/*! SkipList Object, opaque */
-typedef struct ares__slist ares__slist_t;
+typedef struct ares_slist ares_slist_t;
-struct ares__slist_node;
+struct ares_slist_node;
/*! SkipList Node Object, opaque */
-typedef struct ares__slist_node ares__slist_node_t;
+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
*
@@ -71,7 +71,7 @@ typedef void (*ares__slist_destructor_t)(void *data);
* \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
*
@@ -80,17 +80,17 @@ typedef int (*ares__slist_cmp_t)(const void *data1, const void *data2);
* \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
*
@@ -99,35 +99,35 @@ void ares__slist_replace_destructor(ares__slist_t *list
* and will have destructor called.
* \return SkipList Node Object or NULL on misuse or ENOMEM
*/
-ares__slist_node_t *ares__slist_insert(ares__slist_t *list, void *val);
+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
*
@@ -135,7 +135,8 @@ ares__slist_node_t *ares__slist_node_prev(ares__slist_node_t *node);
* \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
@@ -143,42 +144,42 @@ ares__slist_node_t *ares__slist_node_find(ares__slist_t *list, const void *val);
* \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(const ares__slist_t *list);
+size_t ares_slist_len(const ares_slist_t *list);
/*! 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);
/*! The internals of the node have changed, thus its position in the sorted
* list is no longer valid. This function will remove it and re-add it to
@@ -187,19 +188,19 @@ void *ares__slist_node_claim(ares__slist_node_t *node);
*
* \param[in] node SkipList Node Object
*/
-void ares__slist_node_reinsert(ares__slist_node_t *node);
+void ares_slist_node_reinsert(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/contrib/libs/c-ares/src/lib/event/ares_event.h b/contrib/libs/c-ares/src/lib/event/ares_event.h
index 317731fc42..36cd10dcf8 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event.h
+++ b/contrib/libs/c-ares/src/lib/event/ares_event.h
@@ -90,21 +90,23 @@ struct ares_event_thread {
* event before sleeping. */
ares_bool_t isup;
/*! Handle to the thread for joining during shutdown */
- ares__thread_t *thread;
+ ares_thread_t *thread;
/*! Lock to protect the data contained within the event thread itself */
- ares__thread_mutex_t *mutex;
+ ares_thread_mutex_t *mutex;
/*! Reference to the ares channel, for being able to call things like
* ares_timeout() and ares_process_fd(). */
ares_channel_t *channel;
+ /*! Whether or not on the next loop we should process a pending write */
+ ares_bool_t process_pending_write;
/*! Not-yet-processed event handle updates. These will get enqueued by a
* thread other than the event thread itself. The event thread will then
* be woken then process these updates itself */
- ares__llist_t *ev_updates;
+ ares_llist_t *ev_updates;
/*! Registered socket event handles */
- ares__htable_asvp_t *ev_sock_handles;
+ ares_htable_asvp_t *ev_sock_handles;
/*! Registered custom event handles. Typically used for external triggering.
*/
- ares__htable_vpvp_t *ev_cust_handles;
+ ares_htable_vpvp_t *ev_cust_handles;
/*! Pointer to the event handle which is used to signal and wake the event
* thread itself. This is needed to be able to do things like update the
* file descriptors being waited on and to wake the event subsystem during
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_configchg.c b/contrib/libs/c-ares/src/lib/event/ares_event_configchg.c
index 10f0e21dde..e3e665bd16 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_configchg.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_configchg.c
@@ -116,8 +116,8 @@ static void ares_event_configchg_cb(ares_event_thread_t *e, ares_socket_t fd,
continue;
}
- if (strcasecmp(event->name, "resolv.conf") == 0 ||
- strcasecmp(event->name, "nsswitch.conf") == 0) {
+ if (ares_strcaseeq(event->name, "resolv.conf") ||
+ ares_strcaseeq(event->name, "nsswitch.conf")) {
triggered = ARES_TRUE;
}
}
@@ -545,17 +545,17 @@ typedef struct {
} fileinfo_t;
struct ares_event_configchg {
- ares_bool_t isup;
- ares__thread_t *thread;
- ares__htable_strvp_t *filestat;
- ares__thread_mutex_t *lock;
- ares__thread_cond_t *wake;
- const char *resolvconf_path;
- ares_event_thread_t *e;
+ ares_bool_t isup;
+ ares_thread_t *thread;
+ ares_htable_strvp_t *filestat;
+ ares_thread_mutex_t *lock;
+ ares_thread_cond_t *wake;
+ const char *resolvconf_path;
+ ares_event_thread_t *e;
};
-static ares_status_t config_change_check(ares__htable_strvp_t *filestat,
- const char *resolvconf_path)
+static ares_status_t config_change_check(ares_htable_strvp_t *filestat,
+ const char *resolvconf_path)
{
size_t i;
const char *configfiles[5];
@@ -568,7 +568,7 @@ static ares_status_t config_change_check(ares__htable_strvp_t *filestat,
configfiles[4] = NULL;
for (i = 0; configfiles[i] != NULL; i++) {
- fileinfo_t *fi = ares__htable_strvp_get_direct(filestat, configfiles[i]);
+ fileinfo_t *fi = ares_htable_strvp_get_direct(filestat, configfiles[i]);
struct stat st;
if (stat(configfiles[i], &st) == 0) {
@@ -577,7 +577,7 @@ static ares_status_t config_change_check(ares__htable_strvp_t *filestat,
if (fi == NULL) {
return ARES_ENOMEM;
}
- if (!ares__htable_strvp_insert(filestat, configfiles[i], fi)) {
+ if (!ares_htable_strvp_insert(filestat, configfiles[i], fi)) {
ares_free(fi);
return ARES_ENOMEM;
}
@@ -589,7 +589,7 @@ static ares_status_t config_change_check(ares__htable_strvp_t *filestat,
fi->mtime = (time_t)st.st_mtime;
} else if (fi != NULL) {
/* File no longer exists, remove */
- ares__htable_strvp_remove(filestat, configfiles[i]);
+ ares_htable_strvp_remove(filestat, configfiles[i]);
changed = ARES_TRUE;
}
}
@@ -604,11 +604,11 @@ static void *ares_event_configchg_thread(void *arg)
{
ares_event_configchg_t *c = arg;
- ares__thread_mutex_lock(c->lock);
+ ares_thread_mutex_lock(c->lock);
while (c->isup) {
ares_status_t status;
- if (ares__thread_cond_timedwait(c->wake, c->lock, 30000) != ARES_ETIMEOUT) {
+ if (ares_thread_cond_timedwait(c->wake, c->lock, 30000) != ARES_ETIMEOUT) {
continue;
}
@@ -623,7 +623,7 @@ static void *ares_event_configchg_thread(void *arg)
}
}
- ares__thread_mutex_unlock(c->lock);
+ ares_thread_mutex_unlock(c->lock);
return NULL;
}
@@ -643,13 +643,13 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
c->e = e;
- c->filestat = ares__htable_strvp_create(ares_free);
+ c->filestat = ares_htable_strvp_create(ares_free);
if (c->filestat == NULL) {
status = ARES_ENOMEM;
goto done;
}
- c->wake = ares__thread_cond_create();
+ c->wake = ares_thread_cond_create();
if (c->wake == NULL) {
status = ARES_ENOMEM;
goto done;
@@ -666,7 +666,7 @@ ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
}
c->isup = ARES_TRUE;
- status = ares__thread_create(&c->thread, ares_event_configchg_thread, c);
+ status = ares_thread_create(&c->thread, ares_event_configchg_thread, c);
done:
if (status != ARES_SUCCESS) {
@@ -684,26 +684,26 @@ void ares_event_configchg_destroy(ares_event_configchg_t *configchg)
}
if (configchg->lock) {
- ares__thread_mutex_lock(configchg->lock);
+ ares_thread_mutex_lock(configchg->lock);
}
configchg->isup = ARES_FALSE;
if (configchg->wake) {
- ares__thread_cond_signal(configchg->wake);
+ ares_thread_cond_signal(configchg->wake);
}
if (configchg->lock) {
- ares__thread_mutex_unlock(configchg->lock);
+ ares_thread_mutex_unlock(configchg->lock);
}
if (configchg->thread) {
void *rv = NULL;
- ares__thread_join(configchg->thread, &rv);
+ ares_thread_join(configchg->thread, &rv);
}
- ares__thread_mutex_destroy(configchg->lock);
- ares__thread_cond_destroy(configchg->wake);
- ares__htable_strvp_destroy(configchg->filestat);
+ ares_thread_mutex_destroy(configchg->lock);
+ ares_thread_cond_destroy(configchg->wake);
+ ares_htable_strvp_destroy(configchg->filestat);
ares_free(configchg);
}
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_epoll.c b/contrib/libs/c-ares/src/lib/event/ares_event_epoll.c
index 5eb25cccc9..538c38b4f9 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_epoll.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_epoll.c
@@ -161,8 +161,8 @@ static size_t ares_evsys_epoll_wait(ares_event_thread_t *e,
ares_event_t *ev;
ares_event_flags_t flags = 0;
- ev = ares__htable_asvp_get_direct(e->ev_sock_handles,
- (ares_socket_t)events[i].data.fd);
+ ev = ares_htable_asvp_get_direct(e->ev_sock_handles,
+ (ares_socket_t)events[i].data.fd);
if (ev == NULL || ev->cb == NULL) {
continue; /* LCOV_EXCL_LINE: DefensiveCoding */
}
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_kqueue.c b/contrib/libs/c-ares/src/lib/event/ares_event_kqueue.c
index 1c35c14f16..dbbd0dbd9f 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_kqueue.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_kqueue.c
@@ -217,8 +217,8 @@ static size_t ares_evsys_kqueue_wait(ares_event_thread_t *e,
ares_event_t *ev;
ares_event_flags_t flags = 0;
- ev = ares__htable_asvp_get_direct(e->ev_sock_handles,
- (ares_socket_t)events[i].ident);
+ ev = ares_htable_asvp_get_direct(e->ev_sock_handles,
+ (ares_socket_t)events[i].ident);
if (ev == NULL || ev->cb == NULL) {
continue;
}
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_poll.c b/contrib/libs/c-ares/src/lib/event/ares_event_poll.c
index 42ffd912e9..c6ab4b6207 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_poll.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_poll.c
@@ -67,7 +67,7 @@ static size_t ares_evsys_poll_wait(ares_event_thread_t *e,
unsigned long timeout_ms)
{
size_t num_fds = 0;
- ares_socket_t *fdlist = ares__htable_asvp_keys(e->ev_sock_handles, &num_fds);
+ ares_socket_t *fdlist = ares_htable_asvp_keys(e->ev_sock_handles, &num_fds);
struct pollfd *pollfd = NULL;
int rv;
size_t cnt = 0;
@@ -80,7 +80,7 @@ static size_t ares_evsys_poll_wait(ares_event_thread_t *e,
}
for (i = 0; i < num_fds; i++) {
const ares_event_t *ev =
- ares__htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
+ ares_htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
pollfd[i].fd = ev->fd;
if (ev->flags & ARES_EVENT_FLAG_READ) {
pollfd[i].events |= POLLIN;
@@ -107,7 +107,7 @@ static size_t ares_evsys_poll_wait(ares_event_thread_t *e,
cnt++;
- ev = ares__htable_asvp_get_direct(e->ev_sock_handles, pollfd[i].fd);
+ ev = ares_htable_asvp_get_direct(e->ev_sock_handles, pollfd[i].fd);
if (ev == NULL || ev->cb == NULL) {
continue; /* LCOV_EXCL_LINE: DefensiveCoding */
}
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_select.c b/contrib/libs/c-ares/src/lib/event/ares_event_select.c
index e1266ea990..4d7c085d87 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_select.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_select.c
@@ -75,7 +75,7 @@ static size_t ares_evsys_select_wait(ares_event_thread_t *e,
unsigned long timeout_ms)
{
size_t num_fds = 0;
- ares_socket_t *fdlist = ares__htable_asvp_keys(e->ev_sock_handles, &num_fds);
+ ares_socket_t *fdlist = ares_htable_asvp_keys(e->ev_sock_handles, &num_fds);
int rv;
size_t cnt = 0;
size_t i;
@@ -92,7 +92,7 @@ static size_t ares_evsys_select_wait(ares_event_thread_t *e,
for (i = 0; i < num_fds; i++) {
const ares_event_t *ev =
- ares__htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
+ ares_htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
if (ev->flags & ARES_EVENT_FLAG_READ) {
FD_SET(ev->fd, &read_fds);
}
@@ -117,7 +117,7 @@ static size_t ares_evsys_select_wait(ares_event_thread_t *e,
ares_event_t *ev;
ares_event_flags_t flags = 0;
- ev = ares__htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
+ ev = ares_htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
if (ev == NULL || ev->cb == NULL) {
continue; /* LCOV_EXCL_LINE: DefensiveCoding */
}
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_thread.c b/contrib/libs/c-ares/src/lib/event/ares_event_thread.c
index 8b332e9b01..24b55d6945 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_thread.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_thread.c
@@ -77,11 +77,11 @@ static void ares_event_thread_wake(const ares_event_thread_t *e)
static ares_event_t *ares_event_update_find(ares_event_thread_t *e,
ares_socket_t fd, const void *data)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
- for (node = ares__llist_node_first(e->ev_updates); node != NULL;
- node = ares__llist_node_next(node)) {
- ares_event_t *ev = ares__llist_node_val(node);
+ for (node = ares_llist_node_first(e->ev_updates); node != NULL;
+ node = ares_llist_node_next(node)) {
+ ares_event_t *ev = ares_llist_node_val(node);
if (fd != ARES_SOCKET_BAD && fd == ev->fd && ev->flags != 0) {
return ev;
@@ -134,7 +134,7 @@ ares_status_t ares_event_update(ares_event_t **event, ares_event_thread_t *e,
/* That's all the validation we can really do */
- ares__thread_mutex_lock(e->mutex);
+ ares_thread_mutex_lock(e->mutex);
/* See if we have a queued update already */
ev = ares_event_update_find(e, fd, data);
@@ -146,7 +146,7 @@ ares_status_t ares_event_update(ares_event_t **event, ares_event_thread_t *e,
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- if (ares__llist_insert_last(e->ev_updates, ev) == NULL) {
+ if (ares_llist_insert_last(e->ev_updates, ev) == NULL) {
ares_free(ev); /* LCOV_EXCL_LINE: OutOfMemory */
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -180,7 +180,7 @@ done:
ares_event_thread_wake(e);
}
- ares__thread_mutex_unlock(e->mutex);
+ ares_thread_mutex_unlock(e->mutex);
return status;
}
@@ -189,11 +189,18 @@ static void ares_event_thread_process_fd(ares_event_thread_t *e,
ares_socket_t fd, void *data,
ares_event_flags_t flags)
{
+ ares_fd_events_t event;
(void)data;
- ares_process_fd(e->channel,
- (flags & ARES_EVENT_FLAG_READ) ? fd : ARES_SOCKET_BAD,
- (flags & ARES_EVENT_FLAG_WRITE) ? fd : ARES_SOCKET_BAD);
+ event.fd = fd;
+ event.events = 0;
+ if (flags & ARES_EVENT_FLAG_READ) {
+ event.events |= ARES_FD_EVENT_READ;
+ }
+ if (flags & ARES_EVENT_FLAG_WRITE) {
+ event.events |= ARES_FD_EVENT_WRITE;
+ }
+ ares_process_fds(e->channel, &event, 1, ARES_PROCESS_FLAG_SKIP_NON_FD);
}
static void ares_event_thread_sockstate_cb(void *data, ares_socket_t socket_fd,
@@ -216,20 +223,31 @@ static void ares_event_thread_sockstate_cb(void *data, ares_socket_t socket_fd,
NULL, NULL, NULL);
}
+static void notifywrite_cb(void *data)
+{
+ ares_event_thread_t *e = data;
+
+ ares_thread_mutex_lock(e->mutex);
+ e->process_pending_write = ARES_TRUE;
+ ares_thread_mutex_unlock(e->mutex);
+
+ ares_event_thread_wake(e);
+}
+
static void ares_event_process_updates(ares_event_thread_t *e)
{
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
/* Iterate across all updates and apply to internal list, removing from update
* list */
- while ((node = ares__llist_node_first(e->ev_updates)) != NULL) {
- ares_event_t *newev = ares__llist_node_claim(node);
+ while ((node = ares_llist_node_first(e->ev_updates)) != NULL) {
+ ares_event_t *newev = ares_llist_node_claim(node);
ares_event_t *oldev;
if (newev->fd == ARES_SOCKET_BAD) {
- oldev = ares__htable_vpvp_get_direct(e->ev_cust_handles, newev->data);
+ oldev = ares_htable_vpvp_get_direct(e->ev_cust_handles, newev->data);
} else {
- oldev = ares__htable_asvp_get_direct(e->ev_sock_handles, newev->fd);
+ oldev = ares_htable_asvp_get_direct(e->ev_sock_handles, newev->fd);
}
/* Adding new */
@@ -244,9 +262,9 @@ static void ares_event_process_updates(ares_event_thread_t *e)
ares_event_destroy_cb(newev);
} else {
if (newev->fd == ARES_SOCKET_BAD) {
- ares__htable_vpvp_insert(e->ev_cust_handles, newev->data, newev);
+ ares_htable_vpvp_insert(e->ev_cust_handles, newev->data, newev);
} else {
- ares__htable_asvp_insert(e->ev_sock_handles, newev->fd, newev);
+ ares_htable_asvp_insert(e->ev_sock_handles, newev->fd, newev);
}
}
continue;
@@ -257,9 +275,9 @@ static void ares_event_process_updates(ares_event_thread_t *e)
/* the callback for the removal will call e->ev_sys->event_del(e, event)
*/
if (newev->fd == ARES_SOCKET_BAD) {
- ares__htable_vpvp_remove(e->ev_cust_handles, newev->data);
+ ares_htable_vpvp_remove(e->ev_cust_handles, newev->data);
} else {
- ares__htable_asvp_remove(e->ev_sock_handles, newev->fd);
+ ares_htable_asvp_remove(e->ev_sock_handles, newev->fd);
}
ares_free(newev);
continue;
@@ -276,22 +294,22 @@ static void ares_event_thread_cleanup(ares_event_thread_t *e)
{
/* Manually free any updates that weren't processed */
if (e->ev_updates != NULL) {
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
- while ((node = ares__llist_node_first(e->ev_updates)) != NULL) {
- ares_event_destroy_cb(ares__llist_node_claim(node));
+ while ((node = ares_llist_node_first(e->ev_updates)) != NULL) {
+ ares_event_destroy_cb(ares_llist_node_claim(node));
}
- ares__llist_destroy(e->ev_updates);
+ ares_llist_destroy(e->ev_updates);
e->ev_updates = NULL;
}
if (e->ev_sock_handles != NULL) {
- ares__htable_asvp_destroy(e->ev_sock_handles);
+ ares_htable_asvp_destroy(e->ev_sock_handles);
e->ev_sock_handles = NULL;
}
if (e->ev_cust_handles != NULL) {
- ares__htable_vpvp_destroy(e->ev_cust_handles);
+ ares_htable_vpvp_destroy(e->ev_cust_handles);
e->ev_cust_handles = NULL;
}
@@ -304,19 +322,20 @@ static void ares_event_thread_cleanup(ares_event_thread_t *e)
static void *ares_event_thread(void *arg)
{
ares_event_thread_t *e = arg;
- ares__thread_mutex_lock(e->mutex);
+ ares_thread_mutex_lock(e->mutex);
while (e->isup) {
struct timeval tv;
const struct timeval *tvout;
unsigned long timeout_ms = 0; /* 0 = unlimited */
+ ares_bool_t process_pending_write;
ares_event_process_updates(e);
/* Don't hold a mutex while waiting on events or calling into anything
* that might require a c-ares channel lock since a callback could be
* triggered cross-thread */
- ares__thread_mutex_unlock(e->mutex);
+ ares_thread_mutex_unlock(e->mutex);
tvout = ares_timeout(e->channel, NULL, &tv);
if (tvout != NULL) {
@@ -326,19 +345,29 @@ static void *ares_event_thread(void *arg)
e->ev_sys->wait(e, timeout_ms);
- /* Each iteration should do timeout processing */
+ /* Process pending write operation */
+ ares_thread_mutex_lock(e->mutex);
+ process_pending_write = e->process_pending_write;
+ e->process_pending_write = ARES_FALSE;
+ ares_thread_mutex_unlock(e->mutex);
+ if (process_pending_write) {
+ ares_process_pending_write(e->channel);
+ }
+
+ /* Each iteration should do timeout processing and any other cleanup
+ * that may not have been performed */
if (e->isup) {
- ares_process_fd(e->channel, ARES_SOCKET_BAD, ARES_SOCKET_BAD);
+ ares_process_fds(e->channel, NULL, 0, ARES_PROCESS_FLAG_NONE);
}
/* Relock before we loop again */
- ares__thread_mutex_lock(e->mutex);
+ ares_thread_mutex_lock(e->mutex);
}
/* Lets cleanup while we're in the thread itself */
ares_event_thread_cleanup(e);
- ares__thread_mutex_unlock(e->mutex);
+ ares_thread_mutex_unlock(e->mutex);
return NULL;
}
@@ -346,17 +375,17 @@ static void *ares_event_thread(void *arg)
static void ares_event_thread_destroy_int(ares_event_thread_t *e)
{
/* Wake thread and tell it to shutdown if it exists */
- ares__thread_mutex_lock(e->mutex);
+ ares_thread_mutex_lock(e->mutex);
if (e->isup) {
e->isup = ARES_FALSE;
ares_event_thread_wake(e);
}
- ares__thread_mutex_unlock(e->mutex);
+ ares_thread_mutex_unlock(e->mutex);
/* Wait for thread to shutdown */
if (e->thread) {
void *rv = NULL;
- ares__thread_join(e->thread, &rv);
+ ares_thread_join(e->thread, &rv);
e->thread = NULL;
}
@@ -364,7 +393,7 @@ static void ares_event_thread_destroy_int(ares_event_thread_t *e)
* as it runs this same cleanup when it shuts down */
ares_event_thread_cleanup(e);
- ares__thread_mutex_destroy(e->mutex);
+ ares_thread_mutex_destroy(e->mutex);
e->mutex = NULL;
ares_free(e);
@@ -379,8 +408,10 @@ void ares_event_thread_destroy(ares_channel_t *channel)
}
ares_event_thread_destroy_int(e);
- channel->sock_state_cb_data = NULL;
- channel->sock_state_cb = NULL;
+ channel->sock_state_cb_data = NULL;
+ channel->sock_state_cb = NULL;
+ channel->notify_pending_write_cb = NULL;
+ channel->notify_pending_write_cb_data = NULL;
}
static const ares_event_sys_t *ares_event_fetch_sys(ares_evsys_t evsys)
@@ -451,25 +482,25 @@ ares_status_t ares_event_thread_init(ares_channel_t *channel)
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
- e->mutex = ares__thread_mutex_create();
+ e->mutex = ares_thread_mutex_create();
if (e->mutex == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
- e->ev_updates = ares__llist_create(NULL);
+ e->ev_updates = ares_llist_create(NULL);
if (e->ev_updates == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
- e->ev_sock_handles = ares__htable_asvp_create(ares_event_destroy_cb);
+ e->ev_sock_handles = ares_htable_asvp_create(ares_event_destroy_cb);
if (e->ev_sock_handles == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
- e->ev_cust_handles = ares__htable_vpvp_create(NULL, ares_event_destroy_cb);
+ e->ev_cust_handles = ares_htable_vpvp_create(NULL, ares_event_destroy_cb);
if (e->ev_cust_handles == NULL) {
ares_event_thread_destroy_int(e); /* LCOV_EXCL_LINE: OutOfMemory */
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -483,8 +514,10 @@ ares_status_t ares_event_thread_init(ares_channel_t *channel)
return ARES_ENOTIMP; /* LCOV_EXCL_LINE: UntestablePath */
}
- channel->sock_state_cb = ares_event_thread_sockstate_cb;
- channel->sock_state_cb_data = e;
+ channel->sock_state_cb = ares_event_thread_sockstate_cb;
+ channel->sock_state_cb_data = e;
+ channel->notify_pending_write_cb = notifywrite_cb;
+ channel->notify_pending_write_cb_data = e;
if (!e->ev_sys->init(e)) {
/* LCOV_EXCL_START: UntestablePath */
@@ -503,7 +536,7 @@ ares_status_t ares_event_thread_init(ares_channel_t *channel)
ares_event_process_updates(e);
/* Start thread */
- if (ares__thread_create(&e->thread, ares_event_thread, e) != ARES_SUCCESS) {
+ if (ares_thread_create(&e->thread, ares_event_thread, e) != ARES_SUCCESS) {
/* LCOV_EXCL_START: UntestablePath */
ares_event_thread_destroy_int(e);
channel->sock_state_cb = NULL;
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_wake_pipe.c b/contrib/libs/c-ares/src/lib/event/ares_event_wake_pipe.c
index 282d013dc6..d3b166a3d6 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_wake_pipe.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_wake_pipe.c
@@ -92,9 +92,9 @@ static ares_pipeevent_t *ares_pipeevent_init(void)
}
# endif
-# ifdef O_CLOEXEC
- fcntl(p->filedes[0], F_SETFD, O_CLOEXEC);
- fcntl(p->filedes[1], F_SETFD, O_CLOEXEC);
+# ifdef FD_CLOEXEC
+ fcntl(p->filedes[0], F_SETFD, FD_CLOEXEC);
+ fcntl(p->filedes[1], F_SETFD, FD_CLOEXEC);
# endif
# endif
diff --git a/contrib/libs/c-ares/src/lib/event/ares_event_win32.c b/contrib/libs/c-ares/src/lib/event/ares_event_win32.c
index 0b7e535bbb..1531b6d81d 100644
--- a/contrib/libs/c-ares/src/lib/event/ares_event_win32.c
+++ b/contrib/libs/c-ares/src/lib/event/ares_event_win32.c
@@ -204,14 +204,14 @@ typedef struct {
NtCancelIoFileEx_t NtCancelIoFileEx;
/* Implementation details */
- ares__slist_t *afd_handles;
+ ares_slist_t *afd_handles;
HANDLE iocp_handle;
/* IO_STATUS_BLOCK * -> ares_evsys_win32_eventdata_t * mapping. There is
* no completion key passed to IOCP with this method so we have to look
* up based on the lpOverlapped returned (which is mapped to IO_STATUS_BLOCK)
*/
- ares__htable_vpvp_t *sockets;
+ ares_htable_vpvp_t *sockets;
/* Flag about whether or not we are shutting down */
ares_bool_t is_shutdown;
@@ -226,24 +226,24 @@ typedef enum {
typedef struct {
/*! Pointer to parent event container */
- ares_event_t *event;
+ ares_event_t *event;
/*! Socket passed in to monitor */
- SOCKET socket;
+ SOCKET socket;
/*! Base socket derived from provided socket */
- SOCKET base_socket;
+ SOCKET base_socket;
/*! Structure for submitting AFD POLL requests (Internals!) */
- AFD_POLL_INFO afd_poll_info;
+ AFD_POLL_INFO afd_poll_info;
/*! Status of current polling operation */
- poll_status_t poll_status;
+ poll_status_t poll_status;
/*! IO Status Block structure submitted with AFD POLL requests and returned
* with IOCP results as lpOverlapped (even though its a different structure)
*/
- IO_STATUS_BLOCK iosb;
+ IO_STATUS_BLOCK iosb;
/*! AFD handle node an outstanding poll request is associated with */
- ares__slist_node_t *afd_handle_node;
+ ares_slist_node_t *afd_handle_node;
/* Lock is only for PostQueuedCompletionStatus() to prevent multiple
* signals. Tracking via POLL_STATUS_PENDING/POLL_STATUS_NONE */
- ares__thread_mutex_t *lock;
+ ares_thread_mutex_t *lock;
} ares_evsys_win32_eventdata_t;
static size_t ares_evsys_win32_wait(ares_event_thread_t *e,
@@ -256,12 +256,12 @@ static void ares_iocpevent_signal(const ares_event_t *event)
ares_evsys_win32_eventdata_t *ed = event->data;
ares_bool_t queue_event = ARES_FALSE;
- ares__thread_mutex_lock(ed->lock);
+ ares_thread_mutex_lock(ed->lock);
if (ed->poll_status != POLL_STATUS_PENDING) {
ed->poll_status = POLL_STATUS_PENDING;
queue_event = ARES_TRUE;
}
- ares__thread_mutex_unlock(ed->lock);
+ ares_thread_mutex_unlock(ed->lock);
if (!queue_event) {
return;
@@ -277,9 +277,9 @@ static void ares_iocpevent_cb(ares_event_thread_t *e, ares_socket_t fd,
(void)e;
(void)fd;
(void)flags;
- ares__thread_mutex_lock(ed->lock);
+ ares_thread_mutex_lock(ed->lock);
ed->poll_status = POLL_STATUS_NONE;
- ares__thread_mutex_unlock(ed->lock);
+ ares_thread_mutex_unlock(ed->lock);
}
static ares_event_t *ares_iocpevent_create(ares_event_thread_t *e)
@@ -314,8 +314,8 @@ static void ares_evsys_win32_destroy(ares_event_thread_t *e)
ew->is_shutdown = ARES_TRUE;
CARES_DEBUG_LOG(" ** waiting on %lu remaining sockets to be destroyed\n",
- (unsigned long)ares__htable_vpvp_num_keys(ew->sockets));
- while (ares__htable_vpvp_num_keys(ew->sockets)) {
+ (unsigned long)ares_htable_vpvp_num_keys(ew->sockets));
+ while (ares_htable_vpvp_num_keys(ew->sockets)) {
ares_evsys_win32_wait(e, 0);
}
CARES_DEBUG_LOG(" ** all sockets cleaned up\n");
@@ -325,9 +325,9 @@ static void ares_evsys_win32_destroy(ares_event_thread_t *e)
CloseHandle(ew->iocp_handle);
}
- ares__slist_destroy(ew->afd_handles);
+ ares_slist_destroy(ew->afd_handles);
- ares__htable_vpvp_destroy(ew->sockets);
+ ares_htable_vpvp_destroy(ew->sockets);
ares_free(ew);
e->ev_sys_data = NULL;
@@ -373,14 +373,14 @@ static void fill_object_attributes(OBJECT_ATTRIBUTES *attr,
# define UNICODE_STRING_CONSTANT(s) \
{ (sizeof(s) - 1) * sizeof(wchar_t), sizeof(s) * sizeof(wchar_t), L##s }
-static ares__slist_node_t *ares_afd_handle_create(ares_evsys_win32_t *ew)
+static ares_slist_node_t *ares_afd_handle_create(ares_evsys_win32_t *ew)
{
UNICODE_STRING afd_device_name = UNICODE_STRING_CONSTANT("\\Device\\Afd");
OBJECT_ATTRIBUTES afd_attributes;
NTSTATUS status;
IO_STATUS_BLOCK iosb;
- ares_afd_handle_t *afd = ares_malloc_zero(sizeof(*afd));
- ares__slist_node_t *node = NULL;
+ ares_afd_handle_t *afd = ares_malloc_zero(sizeof(*afd));
+ ares_slist_node_t *node = NULL;
if (afd == NULL) {
goto fail;
}
@@ -407,7 +407,7 @@ static ares__slist_node_t *ares_afd_handle_create(ares_evsys_win32_t *ew)
goto fail;
}
- node = ares__slist_insert(ew->afd_handles, afd);
+ node = ares_slist_insert(ew->afd_handles, afd);
if (node == NULL) {
goto fail;
}
@@ -422,10 +422,10 @@ fail:
/* Fetch the lowest poll count entry, but if it exceeds the limit, create a
* new one and return that */
-static ares__slist_node_t *ares_afd_handle_fetch(ares_evsys_win32_t *ew)
+static ares_slist_node_t *ares_afd_handle_fetch(ares_evsys_win32_t *ew)
{
- ares__slist_node_t *node = ares__slist_node_first(ew->afd_handles);
- ares_afd_handle_t *afd = ares__slist_node_val(node);
+ ares_slist_node_t *node = ares_slist_node_first(ew->afd_handles);
+ ares_afd_handle_t *afd = ares_slist_node_val(node);
if (afd != NULL && afd->poll_cnt < AFD_POLL_PER_HANDLE) {
return node;
@@ -488,7 +488,7 @@ static ares_bool_t ares_evsys_win32_init(ares_event_thread_t *e)
goto fail;
}
- ew->afd_handles = ares__slist_create(
+ ew->afd_handles = ares_slist_create(
e->channel->rand_state, ares_afd_handle_cmp, ares_afd_handle_destroy);
if (ew->afd_handles == NULL) {
goto fail;
@@ -505,7 +505,7 @@ static ares_bool_t ares_evsys_win32_init(ares_event_thread_t *e)
goto fail;
}
- ew->sockets = ares__htable_vpvp_create(NULL, NULL);
+ ew->sockets = ares_htable_vpvp_create(NULL, NULL);
if (ew->sockets == NULL) {
goto fail;
}
@@ -582,7 +582,7 @@ static ares_bool_t ares_evsys_win32_afd_enqueue(ares_event_t *event,
return ARES_FALSE;
}
- afd = ares__slist_node_val(ed->afd_handle_node);
+ afd = ares_slist_node_val(ed->afd_handle_node);
/* Enqueue AFD Poll */
ed->afd_poll_info.Exclusive = FALSE;
@@ -621,7 +621,7 @@ static ares_bool_t ares_evsys_win32_afd_enqueue(ares_event_t *event,
/* Record that we submitted a poll request to this handle and tell it to
* re-sort the node since we changed its sort value */
afd->poll_cnt++;
- ares__slist_node_reinsert(ed->afd_handle_node);
+ ares_slist_node_reinsert(ed->afd_handle_node);
ed->poll_status = POLL_STATUS_PENDING;
CARES_DEBUG_LOG("++ afd_enqueue ed=%p flags=%X\n", (void *)ed,
@@ -643,7 +643,7 @@ static ares_bool_t ares_evsys_win32_afd_cancel(ares_evsys_win32_eventdata_t *ed)
return ARES_FALSE;
}
- afd = ares__slist_node_val(ed->afd_handle_node);
+ afd = ares_slist_node_val(ed->afd_handle_node);
/* Misuse */
if (afd == NULL) {
@@ -685,10 +685,10 @@ static void ares_evsys_win32_eventdata_destroy(ares_evsys_win32_t *ew,
(ed->socket == ARES_SOCKET_BAD) ? "data" : "socket");
/* These type of handles are deferred destroy. Update tracking. */
if (ed->socket != ARES_SOCKET_BAD) {
- ares__htable_vpvp_remove(ew->sockets, &ed->iosb);
+ ares_htable_vpvp_remove(ew->sockets, &ed->iosb);
}
- ares__thread_mutex_destroy(ed->lock);
+ ares_thread_mutex_destroy(ed->lock);
if (ed->event != NULL) {
ed->event->data = NULL;
@@ -718,7 +718,7 @@ static ares_bool_t ares_evsys_win32_event_add(ares_event_t *event)
* the ares_evsys_win32_eventdata_t as the placeholder to use as the
* IOCP Completion Key */
if (ed->socket == ARES_SOCKET_BAD) {
- ed->lock = ares__thread_mutex_create();
+ ed->lock = ares_thread_mutex_create();
if (ed->lock == NULL) {
goto done;
}
@@ -731,7 +731,7 @@ static ares_bool_t ares_evsys_win32_event_add(ares_event_t *event)
goto done;
}
- if (!ares__htable_vpvp_insert(ew->sockets, &ed->iosb, ed)) {
+ if (!ares_htable_vpvp_insert(ew->sockets, &ed->iosb, ed)) {
goto done;
}
@@ -859,9 +859,9 @@ static ares_bool_t ares_evsys_win32_process_socket_event(
/* Decrement poll count for AFD handle then resort, also disassociate
* with socket */
- afd = ares__slist_node_val(ed->afd_handle_node);
+ afd = ares_slist_node_val(ed->afd_handle_node);
afd->poll_cnt--;
- ares__slist_node_reinsert(ed->afd_handle_node);
+ ares_slist_node_reinsert(ed->afd_handle_node);
ed->afd_handle_node = NULL;
/* Pending destroy, go ahead and kill it */
@@ -946,7 +946,7 @@ static size_t ares_evsys_win32_wait(ares_event_thread_t *e,
ed = (ares_evsys_win32_eventdata_t *)entries[i].lpCompletionKey;
rc = ares_evsys_win32_process_other_event(ew, ed, i);
} else {
- ed = ares__htable_vpvp_get_direct(ew->sockets, entries[i].lpOverlapped);
+ ed = ares_htable_vpvp_get_direct(ew->sockets, entries[i].lpOverlapped);
rc = ares_evsys_win32_process_socket_event(ew, ed, i);
}
diff --git a/contrib/libs/c-ares/src/lib/include/README.md b/contrib/libs/c-ares/src/lib/include/README.md
new file mode 100644
index 0000000000..f08021ba79
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/include/README.md
@@ -0,0 +1,8 @@
+# Semi-public headers
+The headers listed here all export symbols into the ares namespace as public
+symbols, but these headers are NOT included in the distribution. They are
+meant to be used by other tools such as `adig` and `ahost`.
+
+These are most likely going to be general purpose library functions such
+as data structures and algorithms.
+
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__array.h b/contrib/libs/c-ares/src/lib/include/ares_array.h
index 6fa1c0e15e..f1a2e155f3 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__array.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_array.h
@@ -26,7 +26,9 @@
#ifndef __ARES__ARRAY_H
#define __ARES__ARRAY_H
-/*! \addtogroup ares__array Array Data Structure
+#include "ares.h"
+
+/*! \addtogroup ares_array Array Data Structure
*
* This is an array with helpers. It is meant to have as little overhead
* as possible over direct array management by applications but to provide
@@ -36,17 +38,17 @@
* @{
*/
-struct ares__array;
+struct ares_array;
/*! Opaque data structure for array */
-typedef struct ares__array ares__array_t;
+typedef struct ares_array ares_array_t;
/*! Callback to free user-defined member data
*
* \param[in] data pointer to member of array to be destroyed. The pointer
* itself must not be destroyed, just the data it contains.
*/
-typedef void (*ares__array_destructor_t)(void *data);
+typedef void (*ares_array_destructor_t)(void *data);
/*! Callback to compare two array elements used for sorting
*
@@ -54,7 +56,7 @@ typedef void (*ares__array_destructor_t)(void *data);
* \param[in] data2 array member 2
* \return < 0 if data1 < data2, > 0 if data1 > data2, 0 if data1 == data2
*/
-typedef int (*ares__array_cmp_t)(const void *data1, const void *data2);
+typedef int (*ares_array_cmp_t)(const void *data1, const void *data2);
/*! Create an array object
*
@@ -72,8 +74,8 @@ typedef int (*ares__array_cmp_t)(const void *data1, const void *data2);
*
* \return array object or NULL on out of memory
*/
-ares__array_t *ares__array_create(size_t member_size,
- ares__array_destructor_t destruct);
+CARES_EXTERN ares_array_t *ares_array_create(size_t member_size,
+ ares_array_destructor_t destruct);
/*! Request the array be at least the requested size. Useful if the desired
@@ -83,7 +85,7 @@ ares__array_t *ares__array_create(size_t member_size,
* \param[in] size Minimum number of members
* \return ARES_SUCCESS on success, ARES_EFORMERR on misuse,
* ARES_ENOMEM on out of memory */
-ares_status_t ares__array_set_size(ares__array_t *arr, size_t size);
+CARES_EXTERN ares_status_t ares_array_set_size(ares_array_t *arr, size_t size);
/*! Sort the array using the given comparison function. This is not
* persistent, any future elements inserted will not maintain this sort.
@@ -92,14 +94,15 @@ ares_status_t ares__array_set_size(ares__array_t *arr, size_t size);
* \param[in] cb Sort callback
* \return ARES_SUCCESS on success
*/
-ares_status_t ares__array_sort(ares__array_t *arr, ares__array_cmp_t cmp);
+CARES_EXTERN ares_status_t ares_array_sort(ares_array_t *arr,
+ ares_array_cmp_t cmp);
/*! Destroy an array object. If a destructor is set, will be called on each
* member of the array.
*
* \param[in] arr Initialized array object.
*/
-void ares__array_destroy(ares__array_t *arr);
+CARES_EXTERN void ares_array_destroy(ares_array_t *arr);
/*! Retrieve the array in the native format. This will also destroy the
* container. It is the responsibility of the caller to free the returned
@@ -109,14 +112,14 @@ void ares__array_destroy(ares__array_t *arr);
* \param[out] num_members the number of members in the returned array
* \return pointer to native array on success, NULL on failure.
*/
-void *ares__array_finish(ares__array_t *arr, size_t *num_members);
+CARES_EXTERN void *ares_array_finish(ares_array_t *arr, size_t *num_members);
/*! Retrieve the number of members in the array
*
* \param[in] arr Initialized array object.
* \return numbrer of members
*/
-size_t ares__array_len(const ares__array_t *arr);
+CARES_EXTERN size_t ares_array_len(const ares_array_t *arr);
/*! Insert a new array member at the given index
*
@@ -127,8 +130,8 @@ size_t ares__array_len(const ares__array_t *arr);
* \return ARES_SUCCESS on success, ARES_EFORMERR on bad index,
* ARES_ENOMEM on out of memory.
*/
-ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr,
- size_t idx);
+CARES_EXTERN ares_status_t ares_array_insert_at(void **elem_ptr,
+ ares_array_t *arr, size_t idx);
/*! Insert a new array member at the end of the array
*
@@ -136,7 +139,8 @@ ares_status_t ares__array_insert_at(void **elem_ptr, ares__array_t *arr,
* \param[in] arr Initialized array object.
* \return ARES_SUCCESS on success, ARES_ENOMEM on out of memory.
*/
-ares_status_t ares__array_insert_last(void **elem_ptr, ares__array_t *arr);
+CARES_EXTERN ares_status_t ares_array_insert_last(void **elem_ptr,
+ ares_array_t *arr);
/*! Insert a new array member at the beginning of the array
*
@@ -144,39 +148,87 @@ ares_status_t ares__array_insert_last(void **elem_ptr, ares__array_t *arr);
* \param[in] arr Initialized array object.
* \return ARES_SUCCESS on success, ARES_ENOMEM on out of memory.
*/
-ares_status_t ares__array_insert_first(void **elem_ptr, ares__array_t *arr);
+CARES_EXTERN ares_status_t ares_array_insert_first(void **elem_ptr,
+ ares_array_t *arr);
+
+
+/*! Insert a new array member at the given index and copy the data pointed
+ * to by the data pointer into the array. This will copy member_size bytes
+ * from the provided pointer, this may not be safe for some data types
+ * that may have a smaller size than the provided member_size which includes
+ * padding as discussed in ares_array_create().
+ *
+ * \param[in] arr Initialized array object.
+ * \param[in] idx Index in array to place new element, will shift any
+ * elements down that exist after this point.
+ * \param[in] data_ptr Pointer to data to copy into array.
+ * \return ARES_SUCCESS on success, ARES_EFORMERR on bad index or null data
+ * ptr, ARES_ENOMEM on out of memory.
+ */
+CARES_EXTERN ares_status_t ares_array_insertdata_at(ares_array_t *arr,
+ size_t idx,
+ const void *data_ptr);
+
+/*! Insert a new array member at the end of the array and copy the data pointed
+ * to by the data pointer into the array. This will copy member_size bytes
+ * from the provided pointer, this may not be safe for some data types
+ * that may have a smaller size than the provided member_size which includes
+ * padding as discussed in ares_array_create().
+ *
+ * \param[in] arr Initialized array object.
+ * \param[in] data_ptr Pointer to data to copy into array.
+ * \return ARES_SUCCESS on success, ARES_EFORMERR on bad index or null data
+ * ptr, ARES_ENOMEM on out of memory.
+ */
+CARES_EXTERN ares_status_t ares_array_insertdata_last(ares_array_t *arr,
+ const void *data_ptr);
+
+/*! Insert a new array member at the beginning of the array and copy the data
+ * pointed to by the data pointer into the array. This will copy member_size
+ * bytes from the provided pointer, this may not be safe for some data types
+ * that may have a smaller size than the provided member_size which includes
+ * padding as discussed in ares_array_create().
+ *
+ * \param[in] arr Initialized array object.
+ * \param[in] data_ptr Pointer to data to copy into array.
+ * \return ARES_SUCCESS on success, ARES_EFORMERR on bad index or null data
+ * ptr, ARES_ENOMEM on out of memory.
+ */
+CARES_EXTERN ares_status_t ares_array_insertdata_first(ares_array_t *arr,
+ const void *data_ptr);
/*! Fetch a pointer to the given element in the array
* \param[in] array Initialized array object
* \param[in] idx Index to fetch
* \return pointer on success, NULL on failure */
-void *ares__array_at(ares__array_t *arr, size_t idx);
+CARES_EXTERN void *ares_array_at(ares_array_t *arr, size_t idx);
/*! Fetch a pointer to the first element in the array
* \param[in] array Initialized array object
* \return pointer on success, NULL on failure */
-void *ares__array_first(ares__array_t *arr);
+CARES_EXTERN void *ares_array_first(ares_array_t *arr);
/*! Fetch a pointer to the last element in the array
* \param[in] array Initialized array object
* \return pointer on success, NULL on failure */
-void *ares__array_last(ares__array_t *arr);
+CARES_EXTERN void *ares_array_last(ares_array_t *arr);
/*! Fetch a constant pointer to the given element in the array
* \param[in] array Initialized array object
* \param[in] idx Index to fetch
* \return pointer on success, NULL on failure */
-const void *ares__array_at_const(const ares__array_t *arr, size_t idx);
+CARES_EXTERN const void *ares_array_at_const(const ares_array_t *arr,
+ size_t idx);
/*! Fetch a constant pointer to the first element in the array
* \param[in] array Initialized array object
* \return pointer on success, NULL on failure */
-const void *ares__array_first_const(const ares__array_t *arr);
+CARES_EXTERN const void *ares_array_first_const(const ares_array_t *arr);
/*! Fetch a constant pointer to the last element in the array
* \param[in] array Initialized array object
* \return pointer on success, NULL on failure */
-const void *ares__array_last_const(const ares__array_t *arr);
+CARES_EXTERN const void *ares_array_last_const(const ares_array_t *arr);
/*! Claim the data from the specified array index, copying it to the buffer
* provided by the caller. The index specified in the array will then be
@@ -187,13 +239,13 @@ const void *ares__array_last_const(const ares__array_t *arr);
* member needs destructor if not provided.
* \param[in] dest_size Size of buffer provided, used as a sanity check.
* Must match member_size provided to
- * ares__array_create() if dest_size specified.
+ * ares_array_create() if dest_size specified.
* \param[in] arr Initialized array object
* \param[in] idx Index to claim
* \return ARES_SUCCESS on success, ARES_EFORMERR on usage failure.
*/
-ares_status_t ares__array_claim_at(void *dest, size_t dest_size,
- ares__array_t *arr, size_t idx);
+CARES_EXTERN ares_status_t ares_array_claim_at(void *dest, size_t dest_size,
+ ares_array_t *arr, size_t idx);
/*! Remove the member at the specified array index. The destructor will be
* called.
@@ -202,21 +254,22 @@ ares_status_t ares__array_claim_at(void *dest, size_t dest_size,
* \param[in] idx Index to remove
* \return ARES_SUCCESS if removed, ARES_EFORMERR on invalid use
*/
-ares_status_t ares__array_remove_at(ares__array_t *arr, size_t idx);
+CARES_EXTERN ares_status_t ares_array_remove_at(ares_array_t *arr, size_t idx);
/*! Remove the first member of the array.
*
* \param[in] arr Initialized array object
* \return ARES_SUCCESS if removed, ARES_EFORMERR on invalid use
*/
-ares_status_t ares__array_remove_first(ares__array_t *arr);
+CARES_EXTERN ares_status_t ares_array_remove_first(ares_array_t *arr);
/*! Remove the last member of the array.
*
* \param[in] arr Initialized array object
* \return ARES_SUCCESS if removed, ARES_EFORMERR on invalid use
*/
-ares_status_t ares__array_remove_last(ares__array_t *arr);
+CARES_EXTERN ares_status_t ares_array_remove_last(ares_array_t *arr);
+
/*! @} */
diff --git a/contrib/libs/c-ares/src/lib/str/ares__buf.h b/contrib/libs/c-ares/src/lib/include/ares_buf.h
index cb887aa27e..7836a313e0 100644
--- a/contrib/libs/c-ares/src/lib/str/ares__buf.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_buf.h
@@ -26,7 +26,10 @@
#ifndef __ARES__BUF_H
#define __ARES__BUF_H
-/*! \addtogroup ares__buf Safe Data Builder and buffer
+#include "ares.h"
+#include "ares_array.h"
+
+/*! \addtogroup ares_buf Safe Data Builder and buffer
*
* This is a buffer building and parsing framework with a focus on security over
* performance. All data to be read from the buffer will perform explicit length
@@ -42,16 +45,16 @@
*
* @{
*/
-struct ares__buf;
+struct ares_buf;
/*! Opaque data type for generic hash table implementation */
-typedef struct ares__buf ares__buf_t;
+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);
+CARES_EXTERN 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
@@ -62,14 +65,15 @@ ares__buf_t *ares__buf_create(void);
*
* \return initialized buffer object or NULL if out of memory or misuse.
*/
-ares__buf_t *ares__buf_create_const(const unsigned char *data, size_t data_len);
+CARES_EXTERN 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);
+CARES_EXTERN void ares_buf_destroy(ares_buf_t *buf);
/*! Append multiple bytes to a dynamic buffer object
@@ -79,8 +83,9 @@ void ares__buf_destroy(ares__buf_t *buf);
* \param[in] data_len Length of data to copy to buffer object.
* \return ARES_SUCCESS or one of the c-ares error codes
*/
-ares_status_t ares__buf_append(ares__buf_t *buf, const unsigned char *data,
- size_t data_len);
+CARES_EXTERN 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
*
@@ -88,7 +93,8 @@ ares_status_t ares__buf_append(ares__buf_t *buf, const unsigned char *data,
* \param[in] b 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 b);
+CARES_EXTERN ares_status_t ares_buf_append_byte(ares_buf_t *buf,
+ unsigned char b);
/*! Append a null-terminated string to the dynamic buffer object
*
@@ -96,7 +102,8 @@ ares_status_t ares__buf_append_byte(ares__buf_t *buf, unsigned char b);
* \param[in] str String to append to buffer object.
* \return ARES_SUCCESS or one of the c-ares error codes
*/
-ares_status_t ares__buf_append_str(ares__buf_t *buf, const char *str);
+CARES_EXTERN ares_status_t ares_buf_append_str(ares_buf_t *buf,
+ const char *str);
/*! Append a 16bit Big Endian number to the buffer.
*
@@ -104,7 +111,8 @@ ares_status_t ares__buf_append_str(ares__buf_t *buf, const char *str);
* \param[out] u16 16bit integer
* \return ARES_SUCCESS or one of the c-ares error codes
*/
-ares_status_t ares__buf_append_be16(ares__buf_t *buf, unsigned short u16);
+CARES_EXTERN ares_status_t ares_buf_append_be16(ares_buf_t *buf,
+ unsigned short u16);
/*! Append a 32bit Big Endian number to the buffer.
*
@@ -112,7 +120,8 @@ ares_status_t ares__buf_append_be16(ares__buf_t *buf, unsigned short u16);
* \param[out] u32 32bit integer
* \return ARES_SUCCESS or one of the c-ares error codes
*/
-ares_status_t ares__buf_append_be32(ares__buf_t *buf, unsigned int u32);
+CARES_EXTERN ares_status_t ares_buf_append_be32(ares_buf_t *buf,
+ unsigned int u32);
/*! Append a number in ASCII decimal form.
*
@@ -121,8 +130,8 @@ ares_status_t ares__buf_append_be32(ares__buf_t *buf, unsigned int u32);
* \param[in] len Length to output, use 0 for no padding
* \return ARES_SUCCESS on success
*/
-ares_status_t ares__buf_append_num_dec(ares__buf_t *buf, size_t num,
- size_t len);
+CARES_EXTERN ares_status_t ares_buf_append_num_dec(ares_buf_t *buf, size_t num,
+ size_t len);
/*! Append a number in ASCII hexadecimal form.
*
@@ -131,8 +140,8 @@ ares_status_t ares__buf_append_num_dec(ares__buf_t *buf, size_t num,
* \param[in] len Length to output, use 0 for no padding
* \return ARES_SUCCESS on success
*/
-ares_status_t ares__buf_append_num_hex(ares__buf_t *buf, size_t num,
- size_t len);
+CARES_EXTERN ares_status_t ares_buf_append_num_hex(ares_buf_t *buf, size_t num,
+ size_t len);
/*! Sets the current buffer length. This *may* be used if there is a need to
* override a prior position in the buffer, such as if there is a length
@@ -147,13 +156,13 @@ ares_status_t ares__buf_append_num_hex(ares__buf_t *buf, size_t num,
* \param[in] len Length to set
* \return ARES_SUCCESS or one of the c-ares error codes
*/
-ares_status_t ares__buf_set_length(ares__buf_t *buf, size_t len);
+CARES_EXTERN ares_status_t ares_buf_set_length(ares_buf_t *buf, size_t len);
/*! Start a dynamic append operation that returns a buffer suitable for
* writing. A desired minimum length is passed in, and the actual allocated
* buffer size is returned which may be greater than the requested size.
- * No operation other than ares__buf_append_finish() is allowed on the
+ * No operation other than ares_buf_append_finish() is allowed on the
* buffer after this request.
*
* \param[in] buf Initialized buffer object
@@ -161,17 +170,17 @@ ares_status_t ares__buf_set_length(ares__buf_t *buf, size_t len);
* returned.
* \return Pointer to writable buffer or NULL on failure (usage, out of mem)
*/
-unsigned char *ares__buf_append_start(ares__buf_t *buf, size_t *len);
+CARES_EXTERN unsigned char *ares_buf_append_start(ares_buf_t *buf, size_t *len);
/*! Finish a dynamic append operation. Called after
- * ares__buf_append_start() once desired data is written.
+ * ares_buf_append_start() once desired data is written.
*
* \param[in] buf Initialized buffer object.
* \param[in] len Length of data written. May be zero to terminate
* operation. Must not be greater than returned from
- * ares__buf_append_start().
+ * ares_buf_append_start().
*/
-void ares__buf_append_finish(ares__buf_t *buf, size_t len);
+CARES_EXTERN void ares_buf_append_finish(ares_buf_t *buf, size_t len);
/*! Write the data provided to the buffer in a hexdump format.
*
@@ -180,10 +189,11 @@ void ares__buf_append_finish(ares__buf_t *buf, size_t len);
* \param[in] len Length of data to hexdump
* \return ARES_SUCCESS on success.
*/
-ares_status_t ares__buf_hexdump(ares__buf_t *buf, const unsigned char *data,
- size_t len);
+CARES_EXTERN ares_status_t ares_buf_hexdump(ares_buf_t *buf,
+ const unsigned char *data,
+ size_t len);
-/*! Clean up ares__buf_t and return allocated pointer to unprocessed data. It
+/*! 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.
* The passed in buf parameter is invalidated by this call.
*
@@ -191,9 +201,9 @@ ares_status_t ares__buf_hexdump(ares__buf_t *buf, const unsigned char *data,
* \param[out] len Length of data returned
* \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);
+CARES_EXTERN unsigned char *ares_buf_finish_bin(ares_buf_t *buf, size_t *len);
-/*! Clean up ares__buf_t and return allocated pointer to unprocessed data and
+/*! Clean up ares_buf_t and return allocated pointer to unprocessed data and
* return it as a string (null terminated). It is the responsibility of the
* caller to ares_free() the returned buffer. The passed in buf parameter is
* invalidated by this call.
@@ -207,7 +217,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);
+CARES_EXTERN 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
@@ -216,14 +226,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);
+CARES_EXTERN 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
*/
-ares_status_t ares__buf_tag_rollback(ares__buf_t *buf);
+CARES_EXTERN 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
@@ -232,25 +242,26 @@ ares_status_t 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
*/
-ares_status_t ares__buf_tag_clear(ares__buf_t *buf);
+CARES_EXTERN 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
- * data may be invalidated by any future ares__buf_*() calls.
+ * data may be invalidated by any future ares_buf_*() calls.
*
* \param[in] buf Initialized buffer object
* \param[out] len Length between tag and current offset in buffer
* \return NULL on failure (such as no tag), otherwise pointer to start of
* buffer
*/
-const unsigned char *ares__buf_tag_fetch(const ares__buf_t *buf, size_t *len);
+CARES_EXTERN const unsigned char *ares_buf_tag_fetch(const ares_buf_t *buf,
+ size_t *len);
/*! Get the length of the current tag offset to the current position.
*
* \param[in] buf Initialized buffer object
* \return length
*/
-size_t ares__buf_tag_length(const ares__buf_t *buf);
+CARES_EXTERN size_t ares_buf_tag_length(const ares_buf_t *buf);
/*! Fetch the bytes starting from the tagged position up to the _current_
* position using the provided buffer. It will not unset the tagged position.
@@ -261,23 +272,50 @@ size_t ares__buf_tag_length(const ares__buf_t *buf);
* buffer.
* \return ARES_SUCCESS if fetched, ARES_EFORMERR if insufficient buffer size
*/
-ares_status_t ares__buf_tag_fetch_bytes(const ares__buf_t *buf,
- unsigned char *bytes, size_t *len);
+CARES_EXTERN ares_status_t ares_buf_tag_fetch_bytes(const ares_buf_t *buf,
+ unsigned char *bytes,
+ size_t *len);
/*! Fetch the bytes starting from the tagged position up to the _current_
* position as a NULL-terminated string using the provided buffer. The data
* is validated to be ASCII-printable data. It will not unset the tagged
- * poition.
+ * position.
*
* \param[in] buf Initialized buffer object
* \param[in,out] str Buffer to hold data
- * \param[in] len On input, buffer size, on output, bytes place in
- * buffer.
+ * \param[in] len buffer size
+ * \return ARES_SUCCESS if fetched, ARES_EFORMERR if insufficient buffer size,
+ * ARES_EBADSTR if not printable ASCII
+ */
+CARES_EXTERN ares_status_t ares_buf_tag_fetch_string(const ares_buf_t *buf,
+ char *str, size_t len);
+
+/*! Fetch the bytes starting from the tagged position up to the _current_
+ * position as a NULL-terminated string and placed into a newly allocated
+ * buffer. The data is validated to be ASCII-printable data. It will not
+ * unset the tagged position.
+ *
+ * \param[in] buf Initialized buffer object
+ * \param[out] str New buffer to hold output, free with ares_free()
+ *
* \return ARES_SUCCESS if fetched, ARES_EFORMERR if insufficient buffer size,
* ARES_EBADSTR if not printable ASCII
*/
-ares_status_t ares__buf_tag_fetch_string(const ares__buf_t *buf, char *str,
- size_t len);
+CARES_EXTERN ares_status_t ares_buf_tag_fetch_strdup(const ares_buf_t *buf,
+ char **str);
+
+/*! Fetch the bytes starting from the tagged position up to the _current_
+ * position as const buffer. Care must be taken to not append or destroy the
+ * passed in buffer until the newly fetched buffer is no longer needed since
+ * it points to memory inside the passed in buffer which could be invalidated.
+ *
+ * \param[in] buf Initialized buffer object
+ * \param[out] newbuf New const buffer object, must be destroyed when done.
+
+ * \return ARES_SUCCESS if fetched
+ */
+CARES_EXTERN ares_status_t ares_buf_tag_fetch_constbuf(const ares_buf_t *buf,
+ ares_buf_t **newbuf);
/*! Consume the given number of bytes without reading them.
*
@@ -285,7 +323,7 @@ ares_status_t ares__buf_tag_fetch_string(const ares__buf_t *buf, char *str,
* \param[in] len Length to consume
* \return ARES_SUCCESS or one of the c-ares error codes
*/
-ares_status_t ares__buf_consume(ares__buf_t *buf, size_t len);
+CARES_EXTERN ares_status_t ares_buf_consume(ares_buf_t *buf, size_t len);
/*! Fetch a 16bit Big Endian number from the buffer.
*
@@ -293,7 +331,8 @@ ares_status_t 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
*/
-ares_status_t ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16);
+CARES_EXTERN ares_status_t ares_buf_fetch_be16(ares_buf_t *buf,
+ unsigned short *u16);
/*! Fetch a 32bit Big Endian number from the buffer.
*
@@ -301,7 +340,8 @@ ares_status_t ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16);
* \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);
+CARES_EXTERN ares_status_t ares_buf_fetch_be32(ares_buf_t *buf,
+ unsigned int *u32);
/*! Fetch the requested number of bytes into the provided buffer
@@ -311,8 +351,9 @@ ares_status_t ares__buf_fetch_be32(ares__buf_t *buf, unsigned int *u32);
* \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(ares__buf_t *buf, unsigned char *bytes,
- size_t len);
+CARES_EXTERN 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
@@ -326,9 +367,9 @@ ares_status_t ares__buf_fetch_bytes(ares__buf_t *buf, unsigned char *bytes,
* \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,
- ares_bool_t null_term,
- unsigned char **bytes);
+CARES_EXTERN ares_status_t ares_buf_fetch_bytes_dup(ares_buf_t *buf, size_t len,
+ ares_bool_t null_term,
+ unsigned char **bytes);
/*! Fetch the requested number of bytes and place them into the provided
* dest buffer object.
@@ -338,19 +379,21 @@ ares_status_t ares__buf_fetch_bytes_dup(ares__buf_t *buf, size_t len,
* \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);
+CARES_EXTERN 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.
+ * string. The data is validated to be ASCII-printable.
*
* \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);
+CARES_EXTERN 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).
@@ -360,8 +403,8 @@ ares_status_t ares__buf_fetch_str_dup(ares__buf_t *buf, size_t len, char **str);
* ARES_FALSE otherwise.
* \return number of whitespace characters consumed
*/
-size_t ares__buf_consume_whitespace(ares__buf_t *buf,
- ares_bool_t include_linefeed);
+CARES_EXTERN size_t ares_buf_consume_whitespace(ares_buf_t *buf,
+ ares_bool_t include_linefeed);
/*! Consume any non-whitespace character (anything other than 0x09, 0x0B, 0x0C,
@@ -370,7 +413,7 @@ size_t ares__buf_consume_whitespace(ares__buf_t *buf,
* \param[in] buf Initialized buffer object
* \return number of characters consumed
*/
-size_t ares__buf_consume_nonwhitespace(ares__buf_t *buf);
+CARES_EXTERN size_t ares_buf_consume_nonwhitespace(ares_buf_t *buf);
/*! Consume until a character in the character set provided is reached. Does
@@ -382,13 +425,31 @@ size_t ares__buf_consume_nonwhitespace(ares__buf_t *buf);
* \param[in] require_charset require we find a character from the charset.
* if ARES_FALSE it will simply consume the
* rest of the buffer. If ARES_TRUE will return
- * 0 if not found.
+ * SIZE_MAX if not found.
* \return number of characters consumed
*/
-size_t ares__buf_consume_until_charset(ares__buf_t *buf,
- const unsigned char *charset, size_t len,
- ares_bool_t require_charset);
+CARES_EXTERN size_t ares_buf_consume_until_charset(ares_buf_t *buf,
+ const unsigned char *charset,
+ size_t len,
+ ares_bool_t require_charset);
+
+/*! Consume until a sequence of bytes is encountered. Does not include the
+ * sequence of characters itself.
+ *
+ * \param[in] buf Initialized buffer object
+ * \param[in] seq sequence of bytes
+ * \param[in] len length of sequence
+ * \param[in] require_charset require we find the sequence.
+ * if ARES_FALSE it will simply consume the
+ * rest of the buffer. If ARES_TRUE will return
+ * SIZE_MAX if not found.
+ * \return number of characters consumed
+ */
+CARES_EXTERN size_t ares_buf_consume_until_seq(ares_buf_t *buf,
+ const unsigned char *seq,
+ size_t len,
+ ares_bool_t require_seq);
/*! Consume while the characters match the characters in the provided set.
*
@@ -397,8 +458,9 @@ size_t ares__buf_consume_until_charset(ares__buf_t *buf,
* \param[in] len length of character set
* \return number of characters consumed
*/
-size_t ares__buf_consume_charset(ares__buf_t *buf, const unsigned char *charset,
- size_t len);
+CARES_EXTERN size_t ares_buf_consume_charset(ares_buf_t *buf,
+ const unsigned char *charset,
+ size_t len);
/*! Consume from the current position until the end of the line, and optionally
@@ -409,7 +471,8 @@ size_t ares__buf_consume_charset(ares__buf_t *buf, const unsigned char *charset,
* ARES_FALSE otherwise.
* \return number of characters consumed
*/
-size_t ares__buf_consume_line(ares__buf_t *buf, ares_bool_t include_linefeed);
+CARES_EXTERN size_t ares_buf_consume_line(ares_buf_t *buf,
+ ares_bool_t include_linefeed);
typedef enum {
/*! No flags */
@@ -419,9 +482,9 @@ typedef enum {
* incompatible with ARES_BUF_SPLIT_LTRIM since the delimiter is always
* the first character.
*/
- ARES_BUF_SPLIT_DONT_CONSUME_DELIMS = 1 << 0,
+ ARES_BUF_SPLIT_KEEP_DELIMS = 1 << 0,
/*! Allow blank sections, by default blank sections are not emitted. If using
- * ARES_BUF_SPLIT_DONT_CONSUME_DELIMS, the delimiter is not counted as part
+ * ARES_BUF_SPLIT_KEEP_DELIMS, the delimiter is not counted as part
* of the section */
ARES_BUF_SPLIT_ALLOW_BLANK = 1 << 1,
/*! Remove duplicate entries */
@@ -434,7 +497,7 @@ typedef enum {
ARES_BUF_SPLIT_RTRIM = 1 << 5,
/*! Trim leading and trailing whitespace from buffer */
ARES_BUF_SPLIT_TRIM = (ARES_BUF_SPLIT_LTRIM | ARES_BUF_SPLIT_RTRIM)
-} ares__buf_split_t;
+} ares_buf_split_t;
/*! Split the provided buffer into multiple sub-buffers stored in the variable
* pointed to by the linked list. The sub buffers are const buffers pointing
@@ -450,17 +513,60 @@ typedef enum {
* character in the value. A value of 1 would
* have little usefulness and would effectively
* ignore the delimiter itself.
- * \param[out] list Result. Depending on flags, this may be a
- * valid list with no elements. Use
- * ares__llist_destroy() to free the memory which
- * will also free the contained ares__buf_t
- * objects.
+ * \param[out] arr Result. Depending on flags, this may be a
+ * valid array with no elements. Use
+ * ares_array_destroy() to free the memory which
+ * will also free the contained ares_buf_t *
+ * objects. Each buf object returned by
+ * ares_array_at() or similar is a pointer to
+ * an ares_buf_t * object, meaning you need to
+ * accept it as "ares_buf_t **" then dereference.
+ * \return ARES_SUCCESS on success, or error like ARES_ENOMEM.
+ */
+CARES_EXTERN ares_status_t ares_buf_split(
+ ares_buf_t *buf, const unsigned char *delims, size_t delims_len,
+ ares_buf_split_t flags, size_t max_sections, ares_array_t **arr);
+
+/*! Split the provided buffer into an ares_array_t of C strings.
+ *
+ * \param[in] buf Initialized buffer object
+ * \param[in] delims Possible delimiters
+ * \param[in] delims_len Length of possible delimiters
+ * \param[in] flags One more more flags
+ * \param[in] max_sections Maximum number of sections. Use 0 for
+ * unlimited. Useful for splitting key/value
+ * pairs where the delimiter may be a valid
+ * character in the value. A value of 1 would
+ * have little usefulness and would effectively
+ * ignore the delimiter itself.
+ * \param[out] arr Array of strings. Free using
+ * ares_array_destroy().
* \return ARES_SUCCESS on success, or error like ARES_ENOMEM.
*/
-ares_status_t ares__buf_split(ares__buf_t *buf, const unsigned char *delims,
- size_t delims_len, ares__buf_split_t flags,
- size_t max_sections, ares__llist_t **list);
+CARES_EXTERN ares_status_t ares_buf_split_str_array(
+ ares_buf_t *buf, const unsigned char *delims, size_t delims_len,
+ ares_buf_split_t flags, size_t max_sections, ares_array_t **arr);
+/*! Split the provided buffer into a C array of C strings.
+ *
+ * \param[in] buf Initialized buffer object
+ * \param[in] delims Possible delimiters
+ * \param[in] delims_len Length of possible delimiters
+ * \param[in] flags One more more flags
+ * \param[in] max_sections Maximum number of sections. Use 0 for
+ * unlimited. Useful for splitting key/value
+ * pairs where the delimiter may be a valid
+ * character in the value. A value of 1 would
+ * have little usefulness and would effectively
+ * ignore the delimiter itself.
+ * \param[out] strs Array of strings. Free using
+ * ares_free_array(strs, nstrs, ares_free)
+ * \param[out] nstrs Number of elements in the array.
+ * \return ARES_SUCCESS on success, or error like ARES_ENOMEM.
+ */
+CARES_EXTERN ares_status_t ares_buf_split_str(
+ ares_buf_t *buf, const unsigned char *delims, size_t delims_len,
+ ares_buf_split_t flags, size_t max_sections, char ***strs, size_t *nstrs);
/*! Check the unprocessed buffer to see if it begins with the sequence of
* characters provided.
@@ -470,8 +576,9 @@ ares_status_t ares__buf_split(ares__buf_t *buf, const unsigned char *delims,
* \param[in] data_len Length of data to compare.
* \return ARES_TRUE on match, ARES_FALSE otherwise.
*/
-ares_bool_t ares__buf_begins_with(const ares__buf_t *buf,
- const unsigned char *data, size_t data_len);
+CARES_EXTERN ares_bool_t ares_buf_begins_with(const ares_buf_t *buf,
+ const unsigned char *data,
+ size_t data_len);
/*! Size of unprocessed remaining data length
@@ -479,18 +586,27 @@ ares_bool_t ares__buf_begins_with(const ares__buf_t *buf,
* \param[in] buf Initialized buffer object
* \return length remaining
*/
-size_t ares__buf_len(const ares__buf_t *buf);
+CARES_EXTERN 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
- * by any future ares__buf_*() calls.
+ * by any future ares_buf_*() calls.
*
* \param[in] buf Initialized buffer object
* \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);
+CARES_EXTERN const unsigned char *ares_buf_peek(const ares_buf_t *buf,
+ size_t *len);
+/*! Retrieve the next byte in the buffer without moving forward.
+ *
+ * \param[in] buf Initialized buffer object
+ * \param[out] b Single byte
+ * \return \return ARES_SUCCESS on success, or error
+ */
+CARES_EXTERN ares_status_t ares_buf_peek_byte(const ares_buf_t *buf,
+ unsigned char *b);
/*! Wipe any processed data from the beginning of the buffer. This will
* move any remaining data to the front of the internally allocated buffer.
@@ -503,46 +619,46 @@ const unsigned char *ares__buf_peek(const ares__buf_t *buf, size_t *len);
*
* 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
+ * 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().
+ * 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);
+CARES_EXTERN 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*()
+ * 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
+ * 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);
+CARES_EXTERN 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*()
+ * 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
+ * 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);
+CARES_EXTERN size_t ares_buf_get_position(const ares_buf_t *buf);
/*! Parse a character-string as defined in RFC1035, as a null-terminated
* string.
@@ -556,29 +672,9 @@ size_t ares__buf_get_position(const ares__buf_t *buf);
* ares_free()'d by the caller.
* \return ARES_SUCCESS on success
*/
-ares_status_t ares__buf_parse_dns_str(ares__buf_t *buf, size_t remaining_len,
- char **name);
-
-/*! Parse an array of character strings as defined in RFC1035, as binary,
- * however, for convenience this does guarantee a NULL terminator (that is
- * not included in the length for each value).
- *
- * \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] strs Pointer passed by reference to be filled in
- * with
- * the array of values.
- * \param[out] validate_printable Validate the strings contain only printable
- * data.
- * \return ARES_SUCCESS on success
- */
-ares_status_t ares__buf_parse_dns_abinstr(ares__buf_t *buf,
- size_t remaining_len,
- ares__dns_multistring_t **strs,
- ares_bool_t validate_printable);
+CARES_EXTERN ares_status_t ares_buf_parse_dns_str(ares_buf_t *buf,
+ size_t remaining_len,
+ char **name);
/*! Parse a character-string as defined in RFC1035, as binary, however for
* convenience this does guarantee a NULL terminator (that is not included
@@ -594,8 +690,10 @@ ares_status_t ares__buf_parse_dns_abinstr(ares__buf_t *buf,
* \param[out] bin_len Length of returned string.
* \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);
+CARES_EXTERN ares_status_t ares_buf_parse_dns_binstr(ares_buf_t *buf,
+ size_t remaining_len,
+ unsigned char **bin,
+ size_t *bin_len);
/*! Load data from specified file path into provided buffer. The entire file
* is loaded into memory.
@@ -606,7 +704,8 @@ ares_status_t ares__buf_parse_dns_binstr(ares__buf_t *buf, size_t remaining_len,
* \return ARES_ENOTFOUND if file not found, ARES_EFILE if issues reading
* file, ARES_ENOMEM if out of memory, ARES_SUCCESS on success.
*/
-ares_status_t ares__buf_load_file(const char *filename, ares__buf_t *buf);
+CARES_EXTERN ares_status_t ares_buf_load_file(const char *filename,
+ ares_buf_t *buf);
/*! @} */
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_asvp.h b/contrib/libs/c-ares/src/lib/include/ares_htable_asvp.h
index 49a766d023..89a99fc9ee 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_asvp.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_htable_asvp.h
@@ -26,10 +26,10 @@
#ifndef __ARES__HTABLE_ASVP_H
#define __ARES__HTABLE_ASVP_H
-/*! \addtogroup ares__htable_asvp HashTable with ares_socket_t Key and
+/*! \addtogroup ares_htable_asvp HashTable with ares_socket_t Key and
* void pointer Value
*
- * This data structure wraps the base ares__htable data structure in order to
+ * This data structure wraps the base ares_htable data structure in order to
* split the key and value data types as ares_socket_t and void pointer,
* respectively.
*
@@ -41,23 +41,23 @@
* @{
*/
-struct ares__htable_asvp;
+struct ares_htable_asvp;
/*! Opaque data type for ares_socket_t key, void pointer hash table
* implementation */
-typedef struct ares__htable_asvp ares__htable_asvp_t;
+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);
+CARES_EXTERN void ares_htable_asvp_destroy(ares_htable_asvp_t *htable);
/*! Create size_t key, void pointer value hash table
*
@@ -65,8 +65,8 @@ void ares__htable_asvp_destroy(ares__htable_asvp_t *htable);
* 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);
+CARES_EXTERN ares_htable_asvp_t *
+ ares_htable_asvp_create(ares_htable_asvp_val_free_t val_free);
/*! Retrieve an array of keys from the hashtable.
*
@@ -74,8 +74,8 @@ ares__htable_asvp_t *
* \param[out] num Count of returned keys
* \return Array of keys in the hashtable. Must be free'd with ares_free().
*/
-ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
- size_t *num);
+CARES_EXTERN ares_socket_t *
+ ares_htable_asvp_keys(const ares_htable_asvp_t *htable, size_t *num);
/*! Insert key/value into hash table
@@ -85,8 +85,8 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
* \param[in] val value to store (takes ownership). May be NULL.
* \return ARES_TRUE on success, ARES_FALSE on out of memory or misuse
*/
-ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
- ares_socket_t key, void *val);
+CARES_EXTERN 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
*
@@ -95,19 +95,19 @@ ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
* \param[out] val Optional. Pointer to store value.
* \return ARES_TRUE on success, ARES_FALSE on failure
*/
-ares_bool_t ares__htable_asvp_get(const ares__htable_asvp_t *htable,
- ares_socket_t key, void **val);
+CARES_EXTERN 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
+ * 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(const ares__htable_asvp_t *htable,
- ares_socket_t key);
+CARES_EXTERN void *ares_htable_asvp_get_direct(const ares_htable_asvp_t *htable,
+ ares_socket_t key);
/*! Remove a value from the hashtable by key
*
@@ -115,15 +115,15 @@ void *ares__htable_asvp_get_direct(const ares__htable_asvp_t *htable,
* \param[in] key key to use to search
* \return ARES_TRUE if found, ARES_FALSE if not found
*/
-ares_bool_t ares__htable_asvp_remove(ares__htable_asvp_t *htable,
- ares_socket_t key);
+CARES_EXTERN 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(const ares__htable_asvp_t *htable);
+CARES_EXTERN size_t ares_htable_asvp_num_keys(const ares_htable_asvp_t *htable);
/*! @} */
diff --git a/contrib/libs/c-ares/src/lib/include/ares_htable_dict.h b/contrib/libs/c-ares/src/lib/include/ares_htable_dict.h
new file mode 100644
index 0000000000..cb6f1f048c
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/include/ares_htable_dict.h
@@ -0,0 +1,123 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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__HTABLE_DICT_H
+#define __ARES__HTABLE_DICT_H
+
+/*! \addtogroup ares_htable_dict HashTable with case-insensitive string Key and
+ * string value
+ *
+ * This data structure wraps the base ares_htable data structure in order to
+ * split the key and value data types as string and string, respectively.
+ *
+ * Average time complexity:
+ * - Insert: O(1)
+ * - Search: O(1)
+ * - Delete: O(1)
+ *
+ * @{
+ */
+
+struct ares_htable_dict;
+
+/*! Opaque data type for string key, string value hash table
+ * implementation */
+typedef struct ares_htable_dict ares_htable_dict_t;
+
+/*! Destroy hashtable
+ *
+ * \param[in] htable Initialized hashtable
+ */
+CARES_EXTERN void ares_htable_dict_destroy(ares_htable_dict_t *htable);
+
+/*! Create void pointer key, string value hash table
+ *
+ */
+CARES_EXTERN ares_htable_dict_t *ares_htable_dict_create(void);
+
+/*! 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 (duplicates).
+ * \return ARES_TRUE on success, ARES_FALSE on failure or out of memory
+ */
+CARES_EXTERN ares_bool_t ares_htable_dict_insert(ares_htable_dict_t *htable,
+ const char *key,
+ const char *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 ARES_TRUE on success, ARES_FALSE on failure
+ */
+CARES_EXTERN ares_bool_t ares_htable_dict_get(const ares_htable_dict_t *htable,
+ const char *key,
+ const char **val);
+
+/*! Retrieve value from hashtable directly as return value. Caveat to this
+ * function over ares_htable_dict_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
+ */
+CARES_EXTERN const char *
+ ares_htable_dict_get_direct(const ares_htable_dict_t *htable,
+ const char *key);
+
+/*! Remove a value from the hashtable by key
+ *
+ * \param[in] htable Initialized hash table
+ * \param[in] key key to use to search
+ * \return ARES_TRUE if found, ARES_FALSE if not
+ */
+CARES_EXTERN ares_bool_t ares_htable_dict_remove(ares_htable_dict_t *htable,
+ const char *key);
+
+/*! Retrieve the number of keys stored in the hash table
+ *
+ * \param[in] htable Initialized hash table
+ * \return count
+ */
+CARES_EXTERN size_t ares_htable_dict_num_keys(const ares_htable_dict_t *htable);
+
+/*! Retrieve an array of keys from the hashtable.
+ *
+ * \param[in] htable Initialized hashtable
+ * \param[out] num Count of returned keys
+ * \return Array of keys in the hashtable. Must be free'd with
+ * ares_free_array(strs, num, ares_free);
+ */
+CARES_EXTERN char **ares_htable_dict_keys(const ares_htable_dict_t *htable,
+ size_t *num);
+
+
+/*! @} */
+
+#endif /* __ARES__HTABLE_DICT_H */
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_strvp.h b/contrib/libs/c-ares/src/lib/include/ares_htable_strvp.h
index 878c71869a..eaaf6d3be0 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_strvp.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_htable_strvp.h
@@ -26,10 +26,10 @@
#ifndef __ARES__HTABLE_STRVP_H
#define __ARES__HTABLE_STRVP_H
-/*! \addtogroup ares__htable_strvp HashTable with string Key and void pointer
+/*! \addtogroup ares_htable_strvp HashTable with string Key and void pointer
* Value
*
- * This data structure wraps the base ares__htable data structure in order to
+ * This data structure wraps the base ares_htable data structure in order to
* split the key and value data types as string and void pointer, respectively.
*
* Average time complexity:
@@ -40,22 +40,22 @@
* @{
*/
-struct ares__htable_strvp;
+struct ares_htable_strvp;
/*! Opaque data type for size_t key, void pointer hash table implementation */
-typedef struct ares__htable_strvp ares__htable_strvp_t;
+typedef struct ares_htable_strvp ares_htable_strvp_t;
/*! Callback to free value stored in hashtable
*
* \param[in] val user-supplied value
*/
-typedef void (*ares__htable_strvp_val_free_t)(void *val);
+typedef void (*ares_htable_strvp_val_free_t)(void *val);
/*! Destroy hashtable
*
* \param[in] htable Initialized hashtable
*/
-void ares__htable_strvp_destroy(ares__htable_strvp_t *htable);
+CARES_EXTERN void ares_htable_strvp_destroy(ares_htable_strvp_t *htable);
/*! Create string, void pointer value hash table
*
@@ -63,8 +63,8 @@ void ares__htable_strvp_destroy(ares__htable_strvp_t *htable);
* NULL it is expected the caller will clean up any user
* supplied values.
*/
-ares__htable_strvp_t *
- ares__htable_strvp_create(ares__htable_strvp_val_free_t val_free);
+CARES_EXTERN ares_htable_strvp_t *
+ ares_htable_strvp_create(ares_htable_strvp_val_free_t val_free);
/*! Insert key/value into hash table
*
@@ -73,8 +73,8 @@ ares__htable_strvp_t *
* \param[in] val value to store (takes ownership). May be NULL.
* \return ARES_TRUE on success, ARES_FALSE on failure or out of memory
*/
-ares_bool_t ares__htable_strvp_insert(ares__htable_strvp_t *htable,
- const char *key, void *val);
+CARES_EXTERN ares_bool_t ares_htable_strvp_insert(ares_htable_strvp_t *htable,
+ const char *key, void *val);
/*! Retrieve value from hashtable based on key
*
@@ -83,19 +83,20 @@ ares_bool_t ares__htable_strvp_insert(ares__htable_strvp_t *htable,
* \param[out] val Optional. Pointer to store value.
* \return ARES_TRUE on success, ARES_FALSE on failure
*/
-ares_bool_t ares__htable_strvp_get(const ares__htable_strvp_t *htable,
- const char *key, void **val);
+CARES_EXTERN ares_bool_t ares_htable_strvp_get(
+ const ares_htable_strvp_t *htable, const char *key, void **val);
/*! Retrieve value from hashtable directly as return value. Caveat to this
- * function over ares__htable_strvp_get() is that if a NULL value is stored
+ * function over ares_htable_strvp_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_strvp_get_direct(const ares__htable_strvp_t *htable,
- const char *key);
+CARES_EXTERN void *
+ ares_htable_strvp_get_direct(const ares_htable_strvp_t *htable,
+ const char *key);
/*! Remove a value from the hashtable by key
*
@@ -103,15 +104,26 @@ void *ares__htable_strvp_get_direct(const ares__htable_strvp_t *htable,
* \param[in] key key to use to search
* \return ARES_TRUE if found, ARES_FALSE if not
*/
-ares_bool_t ares__htable_strvp_remove(ares__htable_strvp_t *htable,
- const char *key);
+CARES_EXTERN ares_bool_t ares_htable_strvp_remove(ares_htable_strvp_t *htable,
+ const char *key);
+
+/*! Remove the value from the hashtable, and return the value instead of
+ * calling the val_free passed to ares_htable_strvp_create().
+ *
+ * \param[in] htable Initialized hash table
+ * \param[in] key key to use to search
+ * \return value in hashtable or NULL on error
+ */
+CARES_EXTERN void *ares_htable_strvp_claim(ares_htable_strvp_t *htable,
+ const char *key);
/*! Retrieve the number of keys stored in the hash table
*
* \param[in] htable Initialized hash table
* \return count
*/
-size_t ares__htable_strvp_num_keys(const ares__htable_strvp_t *htable);
+CARES_EXTERN size_t
+ ares_htable_strvp_num_keys(const ares_htable_strvp_t *htable);
/*! @} */
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_szvp.h b/contrib/libs/c-ares/src/lib/include/ares_htable_szvp.h
index 62b1776be9..927b9a5ec9 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_szvp.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_htable_szvp.h
@@ -26,10 +26,10 @@
#ifndef __ARES__HTABLE_STVP_H
#define __ARES__HTABLE_STVP_H
-/*! \addtogroup ares__htable_szvp HashTable with size_t Key and void pointer
+/*! \addtogroup ares_htable_szvp HashTable with size_t Key and void pointer
* Value
*
- * This data structure wraps the base ares__htable data structure in order to
+ * 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.
*
* Average time complexity:
@@ -40,22 +40,22 @@
* @{
*/
-struct ares__htable_szvp;
+struct ares_htable_szvp;
/*! Opaque data type for size_t key, void pointer hash table implementation */
-typedef struct ares__htable_szvp ares__htable_szvp_t;
+typedef struct ares_htable_szvp ares_htable_szvp_t;
/*! Callback to free value stored in hashtable
*
* \param[in] val user-supplied value
*/
-typedef void (*ares__htable_szvp_val_free_t)(void *val);
+typedef void (*ares_htable_szvp_val_free_t)(void *val);
/*! Destroy hashtable
*
* \param[in] htable Initialized hashtable
*/
-void ares__htable_szvp_destroy(ares__htable_szvp_t *htable);
+CARES_EXTERN void ares_htable_szvp_destroy(ares_htable_szvp_t *htable);
/*! Create size_t key, void pointer value hash table
*
@@ -63,8 +63,8 @@ void ares__htable_szvp_destroy(ares__htable_szvp_t *htable);
* NULL it is expected the caller will clean up any user
* supplied values.
*/
-ares__htable_szvp_t *
- ares__htable_szvp_create(ares__htable_szvp_val_free_t val_free);
+CARES_EXTERN ares_htable_szvp_t *
+ ares_htable_szvp_create(ares_htable_szvp_val_free_t val_free);
/*! Insert key/value into hash table
*
@@ -73,8 +73,8 @@ ares__htable_szvp_t *
* \param[in] val value to store (takes ownership). May be NULL.
* \return ARES_TRUE on success, ARES_FALSE on failure or out of memory
*/
-ares_bool_t ares__htable_szvp_insert(ares__htable_szvp_t *htable, size_t key,
- void *val);
+CARES_EXTERN ares_bool_t ares_htable_szvp_insert(ares_htable_szvp_t *htable,
+ size_t key, void *val);
/*! Retrieve value from hashtable based on key
*
@@ -83,19 +83,19 @@ ares_bool_t ares__htable_szvp_insert(ares__htable_szvp_t *htable, size_t key,
* \param[out] val Optional. Pointer to store value.
* \return ARES_TRUE on success, ARES_FALSE on failure
*/
-ares_bool_t ares__htable_szvp_get(const ares__htable_szvp_t *htable, size_t key,
- void **val);
+CARES_EXTERN ares_bool_t ares_htable_szvp_get(const ares_htable_szvp_t *htable,
+ size_t key, void **val);
/*! Retrieve value from hashtable directly as return value. Caveat to this
- * function over ares__htable_szvp_get() is that if a NULL value is stored
+ * function over ares_htable_szvp_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_szvp_get_direct(const ares__htable_szvp_t *htable,
- size_t key);
+CARES_EXTERN void *ares_htable_szvp_get_direct(const ares_htable_szvp_t *htable,
+ size_t key);
/*! Remove a value from the hashtable by key
*
@@ -103,14 +103,15 @@ void *ares__htable_szvp_get_direct(const ares__htable_szvp_t *htable,
* \param[in] key key to use to search
* \return ARES_TRUE if found, ARES_FALSE if not
*/
-ares_bool_t ares__htable_szvp_remove(ares__htable_szvp_t *htable, size_t key);
+CARES_EXTERN ares_bool_t ares_htable_szvp_remove(ares_htable_szvp_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_szvp_num_keys(const ares__htable_szvp_t *htable);
+CARES_EXTERN size_t ares_htable_szvp_num_keys(const ares_htable_szvp_t *htable);
/*! @} */
diff --git a/contrib/libs/c-ares/src/lib/include/ares_htable_vpstr.h b/contrib/libs/c-ares/src/lib/include/ares_htable_vpstr.h
new file mode 100644
index 0000000000..9f51b87745
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/include/ares_htable_vpstr.h
@@ -0,0 +1,111 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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__HTABLE_VPSTR_H
+#define __ARES__HTABLE_VPSTR_H
+
+/*! \addtogroup ares_htable_vpstr HashTable with void pointer Key and string
+ * value
+ *
+ * This data structure wraps the base ares_htable data structure in order to
+ * split the key and value data types as void pointer and string, respectively.
+ *
+ * Average time complexity:
+ * - Insert: O(1)
+ * - Search: O(1)
+ * - Delete: O(1)
+ *
+ * @{
+ */
+
+struct ares_htable_vpstr;
+
+/*! Opaque data type for void pointer key, string value hash table
+ * implementation */
+typedef struct ares_htable_vpstr ares_htable_vpstr_t;
+
+/*! Destroy hashtable
+ *
+ * \param[in] htable Initialized hashtable
+ */
+CARES_EXTERN void ares_htable_vpstr_destroy(ares_htable_vpstr_t *htable);
+
+/*! Create void pointer key, string value hash table
+ *
+ */
+CARES_EXTERN ares_htable_vpstr_t *ares_htable_vpstr_create(void);
+
+/*! 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 (duplicates).
+ * \return ARES_TRUE on success, ARES_FALSE on failure or out of memory
+ */
+CARES_EXTERN ares_bool_t ares_htable_vpstr_insert(ares_htable_vpstr_t *htable,
+ void *key, const char *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 ARES_TRUE on success, ARES_FALSE on failure
+ */
+CARES_EXTERN ares_bool_t ares_htable_vpstr_get(
+ const ares_htable_vpstr_t *htable, const void *key, const char **val);
+
+/*! Retrieve value from hashtable directly as return value. Caveat to this
+ * function over ares_htable_vpstr_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
+ */
+CARES_EXTERN const char *
+ ares_htable_vpstr_get_direct(const ares_htable_vpstr_t *htable,
+ const void *key);
+
+/*! Remove a value from the hashtable by key
+ *
+ * \param[in] htable Initialized hash table
+ * \param[in] key key to use to search
+ * \return ARES_TRUE if found, ARES_FALSE if not
+ */
+CARES_EXTERN ares_bool_t ares_htable_vpstr_remove(ares_htable_vpstr_t *htable,
+ const void *key);
+
+/*! Retrieve the number of keys stored in the hash table
+ *
+ * \param[in] htable Initialized hash table
+ * \return count
+ */
+CARES_EXTERN size_t
+ ares_htable_vpstr_num_keys(const ares_htable_vpstr_t *htable);
+
+/*! @} */
+
+#endif /* __ARES__HTABLE_VPSTR_H */
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__htable_vpvp.h b/contrib/libs/c-ares/src/lib/include/ares_htable_vpvp.h
index 1e0c750d86..1ebe614576 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__htable_vpvp.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_htable_vpvp.h
@@ -26,10 +26,10 @@
#ifndef __ARES__HTABLE_VPVP_H
#define __ARES__HTABLE_VPVP_H
-/*! \addtogroup ares__htable_vpvp HashTable with void pointer Key and void
+/*! \addtogroup ares_htable_vpvp HashTable with void pointer Key and void
* pointer Value
*
- * This data structure wraps the base ares__htable data structure in order to
+ * 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.
*
* Average time complexity:
@@ -40,28 +40,28 @@
* @{
*/
-struct ares__htable_vpvp;
+struct ares_htable_vpvp;
/*! Opaque data type for size_t key, void pointer hash table implementation */
-typedef struct ares__htable_vpvp ares__htable_vpvp_t;
+typedef struct ares_htable_vpvp ares_htable_vpvp_t;
/*! Callback to free key stored in hashtable
*
* \param[in] key user-supplied key
*/
-typedef void (*ares__htable_vpvp_key_free_t)(void *key);
+typedef void (*ares_htable_vpvp_key_free_t)(void *key);
/*! Callback to free value stored in hashtable
*
* \param[in] val user-supplied value
*/
-typedef void (*ares__htable_vpvp_val_free_t)(void *val);
+typedef void (*ares_htable_vpvp_val_free_t)(void *val);
/*! Destroy hashtable
*
* \param[in] htable Initialized hashtable
*/
-void ares__htable_vpvp_destroy(ares__htable_vpvp_t *htable);
+CARES_EXTERN void ares_htable_vpvp_destroy(ares_htable_vpvp_t *htable);
/*! Create size_t key, void pointer value hash table
*
@@ -72,9 +72,9 @@ void ares__htable_vpvp_destroy(ares__htable_vpvp_t *htable);
* NULL it is expected the caller will clean up any user
* supplied values.
*/
-ares__htable_vpvp_t *
- ares__htable_vpvp_create(ares__htable_vpvp_key_free_t key_free,
- ares__htable_vpvp_val_free_t val_free);
+CARES_EXTERN ares_htable_vpvp_t *
+ ares_htable_vpvp_create(ares_htable_vpvp_key_free_t key_free,
+ ares_htable_vpvp_val_free_t val_free);
/*! Insert key/value into hash table
*
@@ -83,8 +83,8 @@ ares__htable_vpvp_t *
* \param[in] val value to store (takes ownership). May be NULL.
* \return ARES_TRUE on success, ARES_FALSE on failure or out of memory
*/
-ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key,
- void *val);
+CARES_EXTERN ares_bool_t ares_htable_vpvp_insert(ares_htable_vpvp_t *htable,
+ void *key, void *val);
/*! Retrieve value from hashtable based on key
*
@@ -93,19 +93,19 @@ ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key,
* \param[out] val Optional. Pointer to store value.
* \return ARES_TRUE on success, ARES_FALSE on failure
*/
-ares_bool_t ares__htable_vpvp_get(const ares__htable_vpvp_t *htable,
- const void *key, void **val);
+CARES_EXTERN ares_bool_t ares_htable_vpvp_get(const ares_htable_vpvp_t *htable,
+ const void *key, void **val);
/*! Retrieve value from hashtable directly as return value. Caveat to this
- * function over ares__htable_vpvp_get() is that if a NULL value is stored
+ * function over ares_htable_vpvp_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_vpvp_get_direct(const ares__htable_vpvp_t *htable,
- const void *key);
+CARES_EXTERN void *ares_htable_vpvp_get_direct(const ares_htable_vpvp_t *htable,
+ const void *key);
/*! Remove a value from the hashtable by key
*
@@ -113,15 +113,15 @@ void *ares__htable_vpvp_get_direct(const ares__htable_vpvp_t *htable,
* \param[in] key key to use to search
* \return ARES_TRUE if found, ARES_FALSE if not
*/
-ares_bool_t ares__htable_vpvp_remove(ares__htable_vpvp_t *htable,
- const void *key);
+CARES_EXTERN ares_bool_t ares_htable_vpvp_remove(ares_htable_vpvp_t *htable,
+ const void *key);
/*! Retrieve the number of keys stored in the hash table
*
* \param[in] htable Initialized hash table
* \return count
*/
-size_t ares__htable_vpvp_num_keys(const ares__htable_vpvp_t *htable);
+CARES_EXTERN size_t ares_htable_vpvp_num_keys(const ares_htable_vpvp_t *htable);
/*! @} */
diff --git a/contrib/libs/c-ares/src/lib/dsa/ares__llist.h b/contrib/libs/c-ares/src/lib/include/ares_llist.h
index 213f54134b..6aa0c78370 100644
--- a/contrib/libs/c-ares/src/lib/dsa/ares__llist.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_llist.h
@@ -26,7 +26,7 @@
#ifndef __ARES__LLIST_H
#define __ARES__LLIST_H
-/*! \addtogroup ares__llist LinkedList Data Structure
+/*! \addtogroup ares_llist LinkedList Data Structure
*
* This is a doubly-linked list data structure.
*
@@ -38,28 +38,28 @@
* @{
*/
-struct ares__llist;
+struct ares_llist;
/*! Opaque data structure for linked list */
-typedef struct ares__llist ares__llist_t;
+typedef struct ares_llist ares_llist_t;
-struct ares__llist_node;
+struct ares_llist_node;
/*! Opaque data structure for a node in a linked list */
-typedef struct ares__llist_node ares__llist_node_t;
+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);
+CARES_EXTERN 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.
@@ -67,8 +67,9 @@ ares__llist_t *ares__llist_create(ares__llist_destructor_t destruct);
* \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);
+CARES_EXTERN void
+ ares_llist_replace_destructor(ares_llist_t *list,
+ ares_llist_destructor_t destruct);
/*! Insert value as the first node in the linked list
*
@@ -77,7 +78,8 @@ void ares__llist_replace_destructor(ares__llist_t *list
* \return node object referencing place in list, or null if out of memory or
* misuse
*/
-ares__llist_node_t *ares__llist_insert_first(ares__llist_t *list, void *val);
+CARES_EXTERN ares_llist_node_t *ares_llist_insert_first(ares_llist_t *list,
+ void *val);
/*! Insert value as the last node in the linked list
*
@@ -86,7 +88,8 @@ ares__llist_node_t *ares__llist_insert_first(ares__llist_t *list, void *val);
* \return node object referencing place in list, or null if out of memory or
* misuse
*/
-ares__llist_node_t *ares__llist_insert_last(ares__llist_t *list, void *val);
+CARES_EXTERN ares_llist_node_t *ares_llist_insert_last(ares_llist_t *list,
+ void *val);
/*! Insert value before specified node in the linked list
*
@@ -95,8 +98,8 @@ ares__llist_node_t *ares__llist_insert_last(ares__llist_t *list, void *val);
* \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);
+CARES_EXTERN ares_llist_node_t *
+ ares_llist_insert_before(ares_llist_node_t *node, void *val);
/*! Insert value after specified node in the linked list
*
@@ -105,22 +108,22 @@ ares__llist_node_t *ares__llist_insert_before(ares__llist_node_t *node,
* \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);
+CARES_EXTERN ares_llist_node_t *ares_llist_insert_after(ares_llist_node_t *node,
+ 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);
+CARES_EXTERN 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);
+CARES_EXTERN ares_llist_node_t *ares_llist_node_last(ares_llist_t *list);
/*! Obtain a node based on its index. This is an O(n) operation.
*
@@ -128,21 +131,22 @@ ares__llist_node_t *ares__llist_node_last(ares__llist_t *list);
* \param[in] idx Index of node to retrieve
* \return node at index or NULL if invalid index
*/
-ares__llist_node_t *ares__llist_node_idx(ares__llist_t *list, size_t idx);
+CARES_EXTERN ares_llist_node_t *ares_llist_node_idx(ares_llist_t *list,
+ size_t idx);
/*! 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);
+CARES_EXTERN 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);
+CARES_EXTERN ares_llist_node_t *ares_llist_node_prev(ares_llist_node_t *node);
/*! Obtain value from node
@@ -150,41 +154,41 @@ ares__llist_node_t *ares__llist_node_prev(ares__llist_node_t *node);
* \param[in] node Node referenced
* \return user provided value from node
*/
-void *ares__llist_node_val(ares__llist_node_t *node);
+CARES_EXTERN 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(const ares__llist_t *list);
+CARES_EXTERN size_t ares_llist_len(const ares_llist_t *list);
/*! Clear all entries in the list, but don't destroy the list object.
*
* \param[in] list Initialized list object
*/
-void ares__llist_clear(ares__llist_t *list);
+CARES_EXTERN void ares_llist_clear(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);
+CARES_EXTERN 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);
+CARES_EXTERN 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);
+CARES_EXTERN 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.
@@ -192,26 +196,26 @@ void *ares__llist_last_val(ares__llist_t *list);
* \param[in] node Node referenced
* \return user supplied value
*/
-void *ares__llist_node_claim(ares__llist_node_t *node);
+CARES_EXTERN 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);
+CARES_EXTERN 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);
+CARES_EXTERN 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);
+CARES_EXTERN void ares_llist_destroy(ares_llist_t *list);
/*! Detach node from the current list and re-attach it to the new list as the
* last entry.
@@ -219,8 +223,8 @@ void ares__llist_destroy(ares__llist_t *list);
* \param[in] node node to move
* \param[in] new_parent new list
*/
-void ares__llist_node_move_parent_last(ares__llist_node_t *node,
- ares__llist_t *new_parent);
+CARES_EXTERN void ares_llist_node_mvparent_last(ares_llist_node_t *node,
+ ares_llist_t *new_parent);
/*! Detach node from the current list and re-attach it to the new list as the
* first entry.
@@ -228,8 +232,8 @@ void ares__llist_node_move_parent_last(ares__llist_node_t *node,
* \param[in] node node to move
* \param[in] new_parent new list
*/
-void ares__llist_node_move_parent_first(ares__llist_node_t *node,
- ares__llist_t *new_parent);
+CARES_EXTERN void ares_llist_node_mvparent_first(ares_llist_node_t *node,
+ ares_llist_t *new_parent);
/*! @} */
#endif /* __ARES__LLIST_H */
diff --git a/contrib/libs/c-ares/src/lib/str/ares_strcasecmp.h b/contrib/libs/c-ares/src/lib/include/ares_mem.h
index a8097d2219..371cd4266d 100644
--- a/contrib/libs/c-ares/src/lib/str/ares_strcasecmp.h
+++ b/contrib/libs/c-ares/src/lib/include/ares_mem.h
@@ -1,6 +1,5 @@
/* MIT License
*
- * Copyright (c) 1998 Massachusetts Institute of Technology
* Copyright (c) The c-ares project and its contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -24,15 +23,16 @@
*
* SPDX-License-Identifier: MIT
*/
-#ifndef HEADER_CARES_STRCASECMP_H
-#define HEADER_CARES_STRCASECMP_H
-#ifndef HAVE_STRCASECMP
-extern int ares_strcasecmp(const char *a, const char *b);
-#endif
+#ifndef __ARES_MEM_H
+#define __ARES_MEM_H
-#ifndef HAVE_STRNCASECMP
-extern int ares_strncasecmp(const char *a, const char *b, size_t n);
-#endif
+/* Memory management functions */
+CARES_EXTERN void *ares_malloc(size_t size);
+CARES_EXTERN void *ares_realloc(void *ptr, size_t size);
+CARES_EXTERN void ares_free(void *ptr);
+CARES_EXTERN void *ares_malloc_zero(size_t size);
+CARES_EXTERN void *ares_realloc_zero(void *ptr, size_t orig_size,
+ size_t new_size);
-#endif /* HEADER_CARES_STRCASECMP_H */
+#endif
diff --git a/contrib/libs/c-ares/src/lib/include/ares_str.h b/contrib/libs/c-ares/src/lib/include/ares_str.h
new file mode 100644
index 0000000000..ea75b3b3e7
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/include/ares_str.h
@@ -0,0 +1,230 @@
+/* MIT License
+ *
+ * Copyright (c) 1998 Massachusetts Institute of Technology
+ * Copyright (c) The c-ares project and its contributors
+ *
+ * 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_STR_H
+#define __ARES_STR_H
+
+CARES_EXTERN char *ares_strdup(const char *s1);
+
+CARES_EXTERN 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
+ */
+CARES_EXTERN size_t ares_strcpy(char *dest, const char *src, size_t dest_size);
+
+CARES_EXTERN ares_bool_t ares_str_isnum(const char *str);
+CARES_EXTERN ares_bool_t ares_str_isalnum(const char *str);
+
+CARES_EXTERN void ares_str_ltrim(char *str);
+CARES_EXTERN void ares_str_rtrim(char *str);
+CARES_EXTERN void ares_str_trim(char *str);
+CARES_EXTERN void ares_str_lower(char *str);
+
+CARES_EXTERN unsigned char ares_tolower(unsigned char c);
+CARES_EXTERN unsigned char *ares_memmem(const unsigned char *big,
+ size_t big_len,
+ const unsigned char *little,
+ size_t little_len);
+CARES_EXTERN ares_bool_t ares_memeq(const unsigned char *ptr,
+ const unsigned char *val, size_t len);
+CARES_EXTERN ares_bool_t ares_memeq_ci(const unsigned char *ptr,
+ const unsigned char *val, size_t len);
+CARES_EXTERN ares_bool_t ares_is_hostname(const char *str);
+
+/*! Validate the string provided is printable. The length specified must be
+ * at least the size of the buffer provided. If a NULL-terminator is hit
+ * before the length provided is hit, this will not be considered a valid
+ * printable string. This does not validate that the string is actually
+ * NULL terminated.
+ *
+ * \param[in] str Buffer containing string to evaluate.
+ * \param[in] len Number of characters to evaluate within provided buffer.
+ * If 0, will return TRUE since it did not hit an exception.
+ * \return ARES_TRUE if the entire string is printable, ARES_FALSE if not.
+ */
+CARES_EXTERN ares_bool_t ares_str_isprint(const char *str, size_t len);
+
+/* We only care about ASCII rules */
+#define ares_isascii(x) (((unsigned char)x) <= 127)
+
+#define ares_isdigit(x) (((unsigned char)x) >= '0' && ((unsigned char)x) <= '9')
+
+#define ares_isxdigit(x) \
+ (ares_isdigit(x) || \
+ (((unsigned char)x) >= 'a' && ((unsigned char)x) <= 'f') || \
+ (((unsigned char)x) >= 'A' && ((unsigned char)x) <= 'F'))
+
+#define ares_isupper(x) (((unsigned char)x) >= 'A' && ((unsigned char)x) <= 'Z')
+
+#define ares_islower(x) (((unsigned char)x) >= 'a' && ((unsigned char)x) <= 'z')
+
+#define ares_isalpha(x) (ares_islower(x) || ares_isupper(x))
+
+#define ares_isspace(x) \
+ (((unsigned char)(x)) == '\r' || ((unsigned char)(x)) == '\t' || \
+ ((unsigned char)(x)) == ' ' || ((unsigned char)(x)) == '\v' || \
+ ((unsigned char)(x)) == '\f' || ((unsigned char)(x)) == '\n')
+
+#define ares_isprint(x) \
+ (((unsigned char)(x)) >= 0x20 && ((unsigned char)(x)) <= 0x7E)
+
+/* 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).
+ * [A-Za-z0-9-*._/]
+ */
+#define ares_is_hostnamech(x) \
+ (ares_isalpha(x) || ares_isdigit(x) || ((unsigned char)(x)) == '-' || \
+ ((unsigned char)(x)) == '.' || ((unsigned char)(x)) == '_' || \
+ ((unsigned char)(x)) == '/' || ((unsigned char)(x)) == '*')
+
+
+/*! Compare two strings (for sorting)
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \return < 0 if First String less than Second String,
+ * 0 if First String equal to Second String,
+ * > 0 if First String greater than Second String
+ */
+CARES_EXTERN int ares_strcmp(const char *a, const char *b);
+
+/*! Compare two strings up to specified length (for sorting)
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \param[in] n Length
+ * \return < 0 if First String less than Second String,
+ * 0 if First String equal to Second String,
+ * > 0 if First String greater than Second String
+ */
+CARES_EXTERN int ares_strncmp(const char *a, const char *b, size_t n);
+
+
+/*! Compare two strings in a case-insensitive manner (for sorting)
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \return < 0 if First String less than Second String,
+ * 0 if First String equal to Second String,
+ * > 0 if First String greater than Second String
+ */
+CARES_EXTERN int ares_strcasecmp(const char *a, const char *b);
+
+/*! Compare two strings in a case-insensitive manner up to specified length
+ * (for sorting)
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \param[in] n Length
+ * \return < 0 if First String less than Second String,
+ * 0 if First String equal to Second String,
+ * > 0 if First String greater than Second String
+ */
+CARES_EXTERN int ares_strncasecmp(const char *a, const char *b, size_t n);
+
+/*! Compare two strings for equality
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \return ARES_TRUE on match, or ARES_FALSE if no match
+ */
+CARES_EXTERN ares_bool_t ares_streq(const char *a, const char *b);
+
+/*! Compare two strings for equality up to specified length
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \param[in] n Length
+ * \return ARES_TRUE on match, or ARES_FALSE if no match
+ */
+CARES_EXTERN ares_bool_t ares_streq_max(const char *a, const char *b, size_t n);
+
+/*! Compare two strings for equality in a case insensitive manner
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \return ARES_TRUE on match, or ARES_FALSE if no match
+ */
+CARES_EXTERN ares_bool_t ares_strcaseeq(const char *a, const char *b);
+
+/*! Compare two strings for equality up to specified length in a case
+ * insensitive manner
+ *
+ * Treats NULL and "" strings as equivalent
+ *
+ * \param[in] a First String
+ * \param[in] b Second String
+ * \param[in] n Length
+ * \return ARES_TRUE on match, or ARES_FALSE if no match
+ */
+CARES_EXTERN ares_bool_t ares_strcaseeq_max(const char *a, const char *b,
+ size_t n);
+
+/*! Free a C array, each element in the array will be freed by the provided
+ * free function. Both NULL-terminated arrays and known length arrays are
+ * supported.
+ *
+ * \param[in] arr Array to be freed.
+ * \param[in] nmembers Number of members in the array, or SIZE_MAX for
+ * NULL-terminated arrays
+ * \param[in] freefunc Function to call on each array member (e.g. ares_free)
+ */
+CARES_EXTERN void ares_free_array(void *arr, size_t nmembers,
+ void (*freefunc)(void *));
+
+#endif /* __ARES_STR_H */
diff --git a/contrib/libs/c-ares/src/lib/inet_net_pton.c b/contrib/libs/c-ares/src/lib/inet_net_pton.c
index 5356778c47..e1f76ef834 100644
--- a/contrib/libs/c-ares/src/lib/inet_net_pton.c
+++ b/contrib/libs/c-ares/src/lib/inet_net_pton.c
@@ -32,6 +32,20 @@
#include "ares_ipv6.h"
#include "ares_inet_net_pton.h"
+#ifdef USE_WINSOCK
+# define SOCKERRNO ((int)WSAGetLastError())
+# define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
+# undef EMSGSIZE
+# define EMSGSIZE WSAEMSGSIZE
+# undef ENOENT
+# define ENOENT WSA_INVALID_PARAMETER
+# undef EAFNOSUPPORT
+# define EAFNOSUPPORT WSAEAFNOSUPPORT
+#else
+# define SOCKERRNO (errno)
+# define SET_SOCKERRNO(x) (errno = (x))
+#endif
+
const struct ares_in6_addr ares_in6addr_any = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0 } } };
@@ -69,17 +83,17 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
const unsigned char *odst = dst;
ch = *src++;
- if (ch == '0' && (src[0] == 'x' || src[0] == 'X') && ares__isascii(src[1]) &&
- ares__isxdigit(src[1])) {
+ if (ch == '0' && (src[0] == 'x' || src[0] == 'X') && ares_isascii(src[1]) &&
+ ares_isxdigit(src[1])) {
/* Hexadecimal: Eat nybble string. */
if (!size) {
goto emsgsize;
}
dirty = 0;
src++; /* skip x or X. */
- while ((ch = *src++) != '\0' && ares__isascii(ch) && ares__isxdigit(ch)) {
- if (ares__isupper(ch)) {
- ch = ares__tolower((unsigned char)ch);
+ while ((ch = *src++) != '\0' && ares_isascii(ch) && ares_isxdigit(ch)) {
+ if (ares_isupper(ch)) {
+ ch = ares_tolower((unsigned char)ch);
}
n = (int)(strchr(xdigits, ch) - xdigits);
if (dirty == 0) {
@@ -101,7 +115,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
}
*dst++ = (unsigned char)(tmp << 4);
}
- } else if (ares__isascii(ch) && ares__isdigit(ch)) {
+ } else if (ares_isascii(ch) && ares_isdigit(ch)) {
/* Decimal: eat dotted digit string. */
for (;;) {
tmp = 0;
@@ -112,7 +126,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
if (tmp > 255) {
goto enoent;
}
- } while ((ch = *src++) != '\0' && ares__isascii(ch) && ares__isdigit(ch));
+ } while ((ch = *src++) != '\0' && ares_isascii(ch) && ares_isdigit(ch));
if (!size--) {
goto emsgsize;
}
@@ -124,7 +138,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
goto enoent;
}
ch = *src++;
- if (!ares__isascii(ch) || !ares__isdigit(ch)) {
+ if (!ares_isascii(ch) || !ares_isdigit(ch)) {
goto enoent;
}
}
@@ -133,8 +147,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
}
bits = -1;
- if (ch == '/' && ares__isascii(src[0]) && ares__isdigit(src[0]) &&
- dst > odst) {
+ if (ch == '/' && ares_isascii(src[0]) && ares_isdigit(src[0]) && dst > odst) {
/* CIDR width specifier. Nothing can follow it. */
ch = *src++; /* Skip over the /. */
bits = 0;
@@ -145,7 +158,7 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
if (bits > 32) {
goto enoent;
}
- } while ((ch = *src++) != '\0' && ares__isascii(ch) && ares__isdigit(ch));
+ } while ((ch = *src++) != '\0' && ares_isascii(ch) && ares_isdigit(ch));
if (ch != '\0') {
goto enoent;
}
@@ -195,11 +208,11 @@ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
return bits;
enoent:
- SET_ERRNO(ENOENT);
+ SET_SOCKERRNO(ENOENT);
return -1;
emsgsize:
- SET_ERRNO(EMSGSIZE);
+ SET_SOCKERRNO(EMSGSIZE);
return -1;
}
@@ -343,7 +356,7 @@ static int ares_inet_pton6(const char *src, unsigned char *dst)
return 1;
enoent:
- SET_ERRNO(ENOENT);
+ SET_SOCKERRNO(ENOENT);
return -1;
}
@@ -358,7 +371,7 @@ static int ares_inet_net_pton_ipv6(const char *src, unsigned char *dst,
char *sep;
if (ares_strlen(src) >= sizeof buf) {
- SET_ERRNO(EMSGSIZE);
+ SET_SOCKERRNO(EMSGSIZE);
return -1;
}
ares_strcpy(buf, src, sizeof buf);
@@ -377,14 +390,14 @@ static int ares_inet_net_pton_ipv6(const char *src, unsigned char *dst,
bits = 128;
} else {
if (!getbits(sep, &bits)) {
- SET_ERRNO(ENOENT);
+ SET_SOCKERRNO(ENOENT);
return -1;
}
}
bytes = (bits + 7) / 8;
if (bytes > size) {
- SET_ERRNO(EMSGSIZE);
+ SET_SOCKERRNO(EMSGSIZE);
return -1;
}
memcpy(dst, &in6, bytes);
@@ -401,13 +414,9 @@ static int ares_inet_net_pton_ipv6(const char *src, unsigned char *dst,
* number of bits, either imputed classfully or specified with /CIDR,
* or -1 if some failure occurred (check errno). ENOENT means it was
* not a valid network specification.
- * note:
- * On Windows we store the error in the thread errno, not
- * in the winsock error code. This is to avoid losing the
- * actual last winsock error. So use macro ERRNO to fetch the
- * errno this function sets when returning (-1), not SOCKERRNO.
* author:
* Paul Vixie (ISC), June 1996
+ *
*/
int ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
{
@@ -417,7 +426,6 @@ int ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
case AF_INET6:
return ares_inet_net_pton_ipv6(src, dst, size);
default:
- SET_ERRNO(EAFNOSUPPORT);
return -1;
}
}
@@ -432,11 +440,11 @@ int ares_inet_pton(int af, const char *src, void *dst)
} else if (af == AF_INET6) {
size = sizeof(struct ares_in6_addr);
} else {
- SET_ERRNO(EAFNOSUPPORT);
+ SET_SOCKERRNO(EAFNOSUPPORT);
return -1;
}
result = ares_inet_net_pton(af, src, dst, size);
- if (result == -1 && ERRNO == ENOENT) {
+ if (result == -1 && SOCKERRNO == ENOENT) {
return 0;
}
return (result > -1) ? 1 : -1;
diff --git a/contrib/libs/c-ares/src/lib/inet_ntop.c b/contrib/libs/c-ares/src/lib/inet_ntop.c
index 6f96b92ccc..79b6c0fa93 100644
--- a/contrib/libs/c-ares/src/lib/inet_ntop.c
+++ b/contrib/libs/c-ares/src/lib/inet_ntop.c
@@ -29,6 +29,22 @@
#include "ares_nameser.h"
#include "ares_ipv6.h"
+#ifdef USE_WINSOCK
+# define SOCKERRNO ((int)WSAGetLastError())
+# define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
+# undef EMSGSIZE
+# define EMSGSIZE WSAEMSGSIZE
+# undef ENOENT
+# define ENOENT WSA_INVALID_PARAMETER
+# undef EAFNOSUPPORT
+# define EAFNOSUPPORT WSAEAFNOSUPPORT
+# undef ENOSPC
+# define ENOSPC WSA_INVALID_PARAMETER
+#else
+# define SOCKERRNO (errno)
+# define SET_SOCKERRNO(x) (errno = (x))
+#endif
+
/*
* WARNING: Don't even consider trying to compile this on a system where
* sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
@@ -42,11 +58,6 @@ static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size);
* convert a network format address to presentation format.
* return:
* pointer to presentation format address (`dst'), or NULL (see errno).
- * note:
- * On Windows we store the error in the thread errno, not
- * in the winsock error code. This is to avoid losing the
- * actual last winsock error. So use macro ERRNO to fetch the
- * errno this function sets when returning NULL, not SOCKERRNO.
* author:
* Paul Vixie, 1996.
*/
@@ -61,7 +72,7 @@ const char *ares_inet_ntop(int af, const void *src, char *dst,
default:
break;
}
- SET_ERRNO(EAFNOSUPPORT);
+ SET_SOCKERRNO(EAFNOSUPPORT);
return NULL;
}
@@ -82,13 +93,13 @@ static const char *inet_ntop4(const unsigned char *src, char *dst, size_t size)
char tmp[sizeof("255.255.255.255")];
if (size < sizeof(tmp)) {
- SET_ERRNO(ENOSPC);
+ SET_SOCKERRNO(ENOSPC);
return NULL;
}
if ((size_t)snprintf(tmp, sizeof(tmp), fmt, src[0], src[1], src[2], src[3]) >=
size) {
- SET_ERRNO(ENOSPC);
+ SET_SOCKERRNO(ENOSPC);
return NULL;
}
ares_strcpy(dst, tmp, size);
@@ -200,7 +211,7 @@ static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size)
* Check for overflow, copy, and we're done.
*/
if ((size_t)(tp - tmp) > size) {
- SET_ERRNO(ENOSPC);
+ SET_SOCKERRNO(ENOSPC);
return NULL;
}
ares_strcpy(dst, tmp, size);
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_expand_name.c b/contrib/libs/c-ares/src/lib/legacy/ares_expand_name.c
index 63bd645166..72668f4cb6 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_expand_name.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_expand_name.c
@@ -33,13 +33,13 @@
#include "ares_nameser.h"
-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_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 status;
- ares__buf_t *buf = NULL;
+ ares_buf_t *buf = NULL;
size_t start_len;
if (encoded == NULL || abuf == NULL || alen == 0 || enclen == NULL) {
@@ -57,27 +57,27 @@ ares_status_t ares__expand_name_validated(const unsigned char *encoded,
*s = NULL;
}
- buf = ares__buf_create_const(abuf, alen);
+ buf = ares_buf_create_const(abuf, alen);
if (buf == NULL) {
return ARES_ENOMEM;
}
- status = ares__buf_set_position(buf, (size_t)(encoded - abuf));
+ status = ares_buf_set_position(buf, (size_t)(encoded - abuf));
if (status != ARES_SUCCESS) {
goto done;
}
- start_len = ares__buf_len(buf);
- status = ares__dns_name_parse(buf, s, is_hostname);
+ start_len = ares_buf_len(buf);
+ status = ares_dns_name_parse(buf, s, is_hostname);
if (status != ARES_SUCCESS) {
goto done;
}
- *enclen = start_len - ares__buf_len(buf);
+ *enclen = start_len - ares_buf_len(buf);
done:
- ares__buf_destroy(buf);
+ ares_buf_destroy(buf);
return status;
}
@@ -92,8 +92,8 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
return ARES_EBADNAME;
}
- status = ares__expand_name_validated(encoded, abuf, (size_t)alen, s,
- &enclen_temp, ARES_FALSE);
+ status = ares_expand_name_validated(encoded, abuf, (size_t)alen, s,
+ &enclen_temp, ARES_FALSE);
*enclen = (long)enclen_temp;
return (int)status;
}
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_expand_string.c b/contrib/libs/c-ares/src/lib/legacy/ares_expand_string.c
index b3e99daa54..e1deb1932f 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_expand_string.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_expand_string.c
@@ -43,7 +43,7 @@ ares_status_t ares_expand_string_ex(const unsigned char *encoded,
unsigned char **s, size_t *enclen)
{
ares_status_t status;
- ares__buf_t *buf = NULL;
+ ares_buf_t *buf = NULL;
size_t start_len;
size_t len = 0;
@@ -62,28 +62,28 @@ ares_status_t ares_expand_string_ex(const unsigned char *encoded,
*s = NULL;
}
- buf = ares__buf_create_const(abuf, alen);
+ buf = ares_buf_create_const(abuf, alen);
if (buf == NULL) {
return ARES_ENOMEM;
}
- status = ares__buf_set_position(buf, (size_t)(encoded - abuf));
+ status = ares_buf_set_position(buf, (size_t)(encoded - abuf));
if (status != ARES_SUCCESS) {
goto done;
}
- start_len = ares__buf_len(buf);
- status = ares__buf_parse_dns_binstr(buf, ares__buf_len(buf), s, &len);
+ start_len = ares_buf_len(buf);
+ status = ares_buf_parse_dns_binstr(buf, ares_buf_len(buf), s, &len);
/* hrm, no way to pass back 'len' with the prototype */
if (status != ARES_SUCCESS) {
goto done;
}
- *enclen = start_len - ares__buf_len(buf);
+ *enclen = start_len - ares_buf_len(buf);
done:
- ares__buf_destroy(buf);
+ ares_buf_destroy(buf);
if (status == ARES_EBADNAME || status == ARES_EBADRESP) {
status = ARES_EBADSTR;
}
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_fds.c b/contrib/libs/c-ares/src/lib/legacy/ares_fds.c
index 3aedd2c90e..112ebac60a 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_fds.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_fds.c
@@ -29,28 +29,28 @@
int ares_fds(const ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds)
{
- ares_socket_t nfds;
- ares__slist_node_t *snode;
+ ares_socket_t nfds;
+ ares_slist_node_t *snode;
/* Are there any active queries? */
- size_t active_queries;
+ size_t active_queries;
if (channel == NULL || read_fds == NULL || write_fds == NULL) {
return 0;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- active_queries = ares__llist_len(channel->all_queries);
+ active_queries = ares_llist_len(channel->all_queries);
nfds = 0;
- for (snode = ares__slist_node_first(channel->servers); snode != NULL;
- snode = ares__slist_node_next(snode)) {
- ares_server_t *server = ares__slist_node_val(snode);
- ares__llist_node_t *node;
+ for (snode = ares_slist_node_first(channel->servers); snode != NULL;
+ snode = ares_slist_node_next(snode)) {
+ ares_server_t *server = ares_slist_node_val(snode);
+ ares_llist_node_t *node;
- for (node = ares__llist_node_first(server->connections); node != NULL;
- node = ares__llist_node_next(node)) {
- const ares_conn_t *conn = ares__llist_node_val(node);
+ for (node = ares_llist_node_first(server->connections); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const ares_conn_t *conn = ares_llist_node_val(node);
if (!active_queries && !(conn->flags & ARES_CONN_FLAG_TCP)) {
continue;
@@ -68,13 +68,13 @@ int ares_fds(const ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds)
nfds = conn->fd + 1;
}
- /* TCP only wait on write if we have buffered data */
- if (conn->flags & ARES_CONN_FLAG_TCP && ares__buf_len(server->tcp_send)) {
+ /* TCP only wait on write if we have the flag set */
+ if (conn->state_flags & ARES_CONN_STATE_WRITE) {
FD_SET(conn->fd, write_fds);
}
}
}
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return (int)nfds;
}
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_getsock.c b/contrib/libs/c-ares/src/lib/legacy/ares_getsock.c
index 8c8476fa95..cec9258abb 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_getsock.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_getsock.c
@@ -29,30 +29,30 @@
int ares_getsock(const ares_channel_t *channel, ares_socket_t *socks,
int numsocks) /* size of the 'socks' array */
{
- ares__slist_node_t *snode;
- size_t sockindex = 0;
- unsigned int bitmap = 0;
- unsigned int setbits = 0xffffffff;
+ ares_slist_node_t *snode;
+ size_t sockindex = 0;
+ unsigned int bitmap = 0;
+ unsigned int setbits = 0xffffffff;
/* Are there any active queries? */
- size_t active_queries;
+ size_t active_queries;
if (channel == NULL || numsocks <= 0) {
return 0;
}
- ares__channel_lock(channel);
+ ares_channel_lock(channel);
- active_queries = ares__llist_len(channel->all_queries);
+ active_queries = ares_llist_len(channel->all_queries);
- for (snode = ares__slist_node_first(channel->servers); snode != NULL;
- snode = ares__slist_node_next(snode)) {
- ares_server_t *server = ares__slist_node_val(snode);
- ares__llist_node_t *node;
+ for (snode = ares_slist_node_first(channel->servers); snode != NULL;
+ snode = ares_slist_node_next(snode)) {
+ ares_server_t *server = ares_slist_node_val(snode);
+ ares_llist_node_t *node;
- for (node = ares__llist_node_first(server->connections); node != NULL;
- node = ares__llist_node_next(node)) {
- const ares_conn_t *conn = ares__llist_node_val(node);
+ for (node = ares_llist_node_first(server->connections); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const ares_conn_t *conn = ares_llist_node_val(node);
if (sockindex >= (size_t)numsocks || sockindex >= ARES_GETSOCK_MAXNUM) {
break;
@@ -71,7 +71,7 @@ int ares_getsock(const ares_channel_t *channel, ares_socket_t *socks,
bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex);
}
- if (conn->flags & ARES_CONN_FLAG_TCP && ares__buf_len(server->tcp_send)) {
+ if (conn->state_flags & ARES_CONN_STATE_WRITE) {
/* then the tcp socket is also writable! */
bitmap |= ARES_GETSOCK_WRITABLE(setbits, sockindex);
}
@@ -80,6 +80,6 @@ int ares_getsock(const ares_channel_t *channel, ares_socket_t *socks,
}
}
- ares__channel_unlock(channel);
+ ares_channel_unlock(channel);
return (int)bitmap;
}
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_parse_a_reply.c b/contrib/libs/c-ares/src/lib/legacy/ares_parse_a_reply.c
index 0981b90eea..870aaccf76 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_parse_a_reply.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_parse_a_reply.c
@@ -71,13 +71,13 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
goto fail;
}
- status = ares__parse_into_addrinfo(dnsrec, 0, 0, &ai);
+ status = ares_parse_into_addrinfo(dnsrec, 0, 0, &ai);
if (status != ARES_SUCCESS && status != ARES_ENODATA) {
goto fail;
}
if (host != NULL) {
- status = ares__addrinfo2hostent(&ai, AF_INET, host);
+ status = ares_addrinfo2hostent(&ai, AF_INET, host);
if (status != ARES_SUCCESS && status != ARES_ENODATA) {
goto fail; /* LCOV_EXCL_LINE: DefensiveCoding */
}
@@ -85,15 +85,15 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
if (addrttls != NULL && req_naddrttls) {
size_t temp_naddrttls = 0;
- ares__addrinfo2addrttl(&ai, AF_INET, req_naddrttls, addrttls, NULL,
- &temp_naddrttls);
+ ares_addrinfo2addrttl(&ai, AF_INET, req_naddrttls, addrttls, NULL,
+ &temp_naddrttls);
*naddrttls = (int)temp_naddrttls;
}
fail:
- ares__freeaddrinfo_cnames(ai.cnames);
- ares__freeaddrinfo_nodes(ai.nodes);
+ ares_freeaddrinfo_cnames(ai.cnames);
+ ares_freeaddrinfo_nodes(ai.nodes);
ares_free(ai.name);
ares_free(question_hostname);
ares_dns_record_destroy(dnsrec);
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_parse_aaaa_reply.c b/contrib/libs/c-ares/src/lib/legacy/ares_parse_aaaa_reply.c
index 3f6932643b..278642f0b3 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_parse_aaaa_reply.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_parse_aaaa_reply.c
@@ -74,13 +74,13 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
goto fail;
}
- status = ares__parse_into_addrinfo(dnsrec, 0, 0, &ai);
+ status = ares_parse_into_addrinfo(dnsrec, 0, 0, &ai);
if (status != ARES_SUCCESS && status != ARES_ENODATA) {
goto fail;
}
if (host != NULL) {
- status = ares__addrinfo2hostent(&ai, AF_INET6, host);
+ status = ares_addrinfo2hostent(&ai, AF_INET6, host);
if (status != ARES_SUCCESS && status != ARES_ENODATA) {
goto fail; /* LCOV_EXCL_LINE: DefensiveCoding */
}
@@ -88,14 +88,14 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
if (addrttls != NULL && req_naddrttls) {
size_t temp_naddrttls = 0;
- ares__addrinfo2addrttl(&ai, AF_INET6, req_naddrttls, NULL, addrttls,
- &temp_naddrttls);
+ ares_addrinfo2addrttl(&ai, AF_INET6, req_naddrttls, NULL, addrttls,
+ &temp_naddrttls);
*naddrttls = (int)temp_naddrttls;
}
fail:
- ares__freeaddrinfo_cnames(ai.cnames);
- ares__freeaddrinfo_nodes(ai.nodes);
+ ares_freeaddrinfo_cnames(ai.cnames);
+ ares_freeaddrinfo_nodes(ai.nodes);
ares_free(question_hostname);
ares_free(ai.name);
ares_dns_record_destroy(dnsrec);
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_parse_ptr_reply.c b/contrib/libs/c-ares/src/lib/legacy/ares_parse_ptr_reply.c
index 56a7b5f94e..0e52f9db09 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_parse_ptr_reply.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_parse_ptr_reply.c
@@ -135,7 +135,7 @@ ares_status_t ares_parse_ptr_reply_dnsrec(const ares_dns_record_t *dnsrec,
* status = ARES_EBADRESP;
* goto done;
* }
- * if (strcasecmp(ptrname, rname) != 0) {
+ * if (!ares_strcaseeq(ptrname, rname)) {
* continue;
* }
*/
diff --git a/contrib/libs/c-ares/src/lib/legacy/ares_parse_txt_reply.c b/contrib/libs/c-ares/src/lib/legacy/ares_parse_txt_reply.c
index 71ee084111..d276f6ab39 100644
--- a/contrib/libs/c-ares/src/lib/legacy/ares_parse_txt_reply.c
+++ b/contrib/libs/c-ares/src/lib/legacy/ares_parse_txt_reply.c
@@ -27,8 +27,8 @@
#include "ares_private.h"
#include "ares_data.h"
-static int ares__parse_txt_reply(const unsigned char *abuf, size_t alen,
- ares_bool_t ex, void **txt_out)
+static int ares_parse_txt_reply_int(const unsigned char *abuf, size_t alen,
+ ares_bool_t ex, void **txt_out)
{
ares_status_t status;
struct ares_txt_ext *txt_head = NULL;
@@ -129,8 +129,8 @@ int ares_parse_txt_reply(const unsigned char *abuf, int alen,
if (alen < 0) {
return ARES_EBADRESP;
}
- return ares__parse_txt_reply(abuf, (size_t)alen, ARES_FALSE,
- (void **)txt_out);
+ return ares_parse_txt_reply_int(abuf, (size_t)alen, ARES_FALSE,
+ (void **)txt_out);
}
int ares_parse_txt_reply_ext(const unsigned char *abuf, int alen,
@@ -139,5 +139,6 @@ int ares_parse_txt_reply_ext(const unsigned char *abuf, int alen,
if (alen < 0) {
return ARES_EBADRESP;
}
- return ares__parse_txt_reply(abuf, (size_t)alen, ARES_TRUE, (void **)txt_out);
+ return ares_parse_txt_reply_int(abuf, (size_t)alen, ARES_TRUE,
+ (void **)txt_out);
}
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_mapping.c b/contrib/libs/c-ares/src/lib/record/ares_dns_mapping.c
index 738d2f3795..5a3ec28abf 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_mapping.c
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_mapping.c
@@ -111,7 +111,7 @@ ares_bool_t ares_dns_rec_type_isvalid(ares_dns_rec_type_t type,
return is_query ? ARES_TRUE : ARES_FALSE;
}
-ares_bool_t ares_dns_rec_type_allow_name_compression(ares_dns_rec_type_t type)
+ares_bool_t ares_dns_rec_allow_name_comp(ares_dns_rec_type_t type)
{
/* Only record types defined in RFC1035 allow name compression within the
* RDATA. Otherwise nameservers that don't understand an RR may not be
@@ -681,7 +681,7 @@ ares_bool_t ares_dns_class_fromstr(ares_dns_class_t *qclass, const char *str)
}
for (i = 0; list[i].name != NULL; i++) {
- if (strcasecmp(list[i].name, str) == 0) {
+ if (ares_strcaseeq(list[i].name, str)) {
*qclass = list[i].qclass;
return ARES_TRUE;
}
@@ -726,7 +726,7 @@ ares_bool_t ares_dns_rec_type_fromstr(ares_dns_rec_type_t *qtype,
}
for (i = 0; list[i].name != NULL; i++) {
- if (strcasecmp(list[i].name, str) == 0) {
+ if (ares_strcaseeq(list[i].name, str)) {
*qtype = list[i].type;
return ARES_TRUE;
}
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.c b/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.c
index bff5afb9f2..57c0d1c0a8 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.c
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.c
@@ -31,7 +31,7 @@ typedef struct {
size_t len;
} multistring_data_t;
-struct ares__dns_multistring {
+struct ares_dns_multistring {
/*! whether or not cached concatenated string is valid */
ares_bool_t cache_invalidated;
/*! combined/concatenated string cache */
@@ -39,10 +39,10 @@ struct ares__dns_multistring {
/*! length of combined/concatenated string */
size_t cache_str_len;
/*! Data making up strings */
- ares__array_t *strs; /*!< multistring_data_t type */
+ ares_array_t *strs; /*!< multistring_data_t type */
};
-static void ares__dns_multistring_free_cb(void *arg)
+static void ares_dns_multistring_free_cb(void *arg)
{
multistring_data_t *data = arg;
if (data == NULL) {
@@ -51,15 +51,15 @@ static void ares__dns_multistring_free_cb(void *arg)
ares_free(data->data);
}
-ares__dns_multistring_t *ares__dns_multistring_create(void)
+ares_dns_multistring_t *ares_dns_multistring_create(void)
{
- ares__dns_multistring_t *strs = ares_malloc_zero(sizeof(*strs));
+ ares_dns_multistring_t *strs = ares_malloc_zero(sizeof(*strs));
if (strs == NULL) {
return NULL;
}
- strs->strs = ares__array_create(sizeof(multistring_data_t),
- ares__dns_multistring_free_cb);
+ strs->strs =
+ ares_array_create(sizeof(multistring_data_t), ares_dns_multistring_free_cb);
if (strs->strs == NULL) {
ares_free(strs);
return NULL;
@@ -68,31 +68,31 @@ ares__dns_multistring_t *ares__dns_multistring_create(void)
return strs;
}
-void ares__dns_multistring_clear(ares__dns_multistring_t *strs)
+void ares_dns_multistring_clear(ares_dns_multistring_t *strs)
{
if (strs == NULL) {
return;
}
- while (ares__array_len(strs->strs)) {
- ares__array_remove_last(strs->strs);
+ while (ares_array_len(strs->strs)) {
+ ares_array_remove_last(strs->strs);
}
}
-void ares__dns_multistring_destroy(ares__dns_multistring_t *strs)
+void ares_dns_multistring_destroy(ares_dns_multistring_t *strs)
{
if (strs == NULL) {
return;
}
- ares__dns_multistring_clear(strs);
- ares__array_destroy(strs->strs);
+ ares_dns_multistring_clear(strs);
+ ares_array_destroy(strs->strs);
ares_free(strs->cache_str);
ares_free(strs);
}
-ares_status_t ares__dns_multistring_replace_own(ares__dns_multistring_t *strs,
- size_t idx, unsigned char *str,
- size_t len)
+ares_status_t ares_dns_multistring_swap_own(ares_dns_multistring_t *strs,
+ size_t idx, unsigned char *str,
+ size_t len)
{
multistring_data_t *data;
@@ -102,7 +102,7 @@ ares_status_t ares__dns_multistring_replace_own(ares__dns_multistring_t *strs,
strs->cache_invalidated = ARES_TRUE;
- data = ares__array_at(strs->strs, idx);
+ data = ares_array_at(strs->strs, idx);
if (data == NULL) {
return ARES_EFORMERR;
}
@@ -113,8 +113,7 @@ ares_status_t ares__dns_multistring_replace_own(ares__dns_multistring_t *strs,
return ARES_SUCCESS;
}
-ares_status_t ares__dns_multistring_del(ares__dns_multistring_t *strs,
- size_t idx)
+ares_status_t ares_dns_multistring_del(ares_dns_multistring_t *strs, size_t idx)
{
if (strs == NULL) {
return ARES_EFORMERR;
@@ -122,11 +121,11 @@ ares_status_t ares__dns_multistring_del(ares__dns_multistring_t *strs,
strs->cache_invalidated = ARES_TRUE;
- return ares__array_remove_at(strs->strs, idx);
+ return ares_array_remove_at(strs->strs, idx);
}
-ares_status_t ares__dns_multistring_add_own(ares__dns_multistring_t *strs,
- unsigned char *str, size_t len)
+ares_status_t ares_dns_multistring_add_own(ares_dns_multistring_t *strs,
+ unsigned char *str, size_t len)
{
multistring_data_t *data;
ares_status_t status;
@@ -142,7 +141,7 @@ ares_status_t ares__dns_multistring_add_own(ares__dns_multistring_t *strs,
return ARES_EFORMERR;
}
- status = ares__array_insert_last((void **)&data, strs->strs);
+ status = ares_array_insert_last((void **)&data, strs->strs);
if (status != ARES_SUCCESS) {
return status;
}
@@ -153,17 +152,17 @@ ares_status_t ares__dns_multistring_add_own(ares__dns_multistring_t *strs,
return ARES_SUCCESS;
}
-size_t ares__dns_multistring_cnt(const ares__dns_multistring_t *strs)
+size_t ares_dns_multistring_cnt(const ares_dns_multistring_t *strs)
{
if (strs == NULL) {
return 0;
}
- return ares__array_len(strs->strs);
+ return ares_array_len(strs->strs);
}
const unsigned char *
- ares__dns_multistring_get(const ares__dns_multistring_t *strs, size_t idx,
- size_t *len)
+ ares_dns_multistring_get(const ares_dns_multistring_t *strs, size_t idx,
+ size_t *len)
{
const multistring_data_t *data;
@@ -171,7 +170,7 @@ const unsigned char *
return NULL;
}
- data = ares__array_at_const(strs->strs, idx);
+ data = ares_array_at_const(strs->strs, idx);
if (data == NULL) {
return NULL;
}
@@ -180,11 +179,11 @@ const unsigned char *
return data->data;
}
-const unsigned char *
- ares__dns_multistring_get_combined(ares__dns_multistring_t *strs, size_t *len)
+const unsigned char *ares_dns_multistring_combined(ares_dns_multistring_t *strs,
+ size_t *len)
{
- ares__buf_t *buf = NULL;
- size_t i;
+ ares_buf_t *buf = NULL;
+ size_t i;
if (strs == NULL || len == NULL) {
return NULL;
@@ -203,22 +202,92 @@ const unsigned char *
strs->cache_str = NULL;
strs->cache_str_len = 0;
- buf = ares__buf_create();
+ buf = ares_buf_create();
- for (i = 0; i < ares__array_len(strs->strs); i++) {
- const multistring_data_t *data = ares__array_at_const(strs->strs, i);
+ for (i = 0; i < ares_array_len(strs->strs); i++) {
+ const multistring_data_t *data = ares_array_at_const(strs->strs, i);
if (data == NULL ||
- ares__buf_append(buf, data->data, data->len) != ARES_SUCCESS) {
- ares__buf_destroy(buf);
+ ares_buf_append(buf, data->data, data->len) != ARES_SUCCESS) {
+ ares_buf_destroy(buf);
return NULL;
}
}
strs->cache_str =
- (unsigned char *)ares__buf_finish_str(buf, &strs->cache_str_len);
+ (unsigned char *)ares_buf_finish_str(buf, &strs->cache_str_len);
if (strs->cache_str != NULL) {
strs->cache_invalidated = ARES_FALSE;
}
*len = strs->cache_str_len;
return strs->cache_str;
}
+
+ares_status_t ares_dns_multistring_parse_buf(ares_buf_t *buf,
+ size_t remaining_len,
+ ares_dns_multistring_t **strs,
+ ares_bool_t validate_printable)
+{
+ unsigned char len;
+ ares_status_t status = ARES_EBADRESP;
+ size_t orig_len = ares_buf_len(buf);
+
+ if (buf == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (remaining_len == 0) {
+ return ARES_EBADRESP;
+ }
+
+ if (strs != NULL) {
+ *strs = ares_dns_multistring_create();
+ if (*strs == 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; /* LCOV_EXCL_LINE: DefensiveCoding */
+ }
+
+ if (len) {
+ /* When used by the _str() parser, it really needs to be validated to
+ * be a valid printable ascii string. Do that here */
+ if (validate_printable && ares_buf_len(buf) >= len) {
+ size_t mylen;
+ const char *data = (const char *)ares_buf_peek(buf, &mylen);
+ if (!ares_str_isprint(data, len)) {
+ status = ARES_EBADSTR;
+ break;
+ }
+ }
+
+ if (strs != NULL) {
+ unsigned char *data = NULL;
+ status = ares_buf_fetch_bytes_dup(buf, len, ARES_TRUE, &data);
+ if (status != ARES_SUCCESS) {
+ break;
+ }
+ status = ares_dns_multistring_add_own(*strs, data, len);
+ if (status != ARES_SUCCESS) {
+ ares_free(data);
+ break;
+ }
+ } else {
+ status = ares_buf_consume(buf, len);
+ if (status != ARES_SUCCESS) {
+ break;
+ }
+ }
+ }
+ }
+
+ if (status != ARES_SUCCESS && strs != NULL) {
+ ares_dns_multistring_destroy(*strs);
+ *strs = NULL;
+ }
+
+ return status;
+}
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.h b/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.h
index d9aa7ae378..70834491b5 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.h
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_multistring.h
@@ -26,25 +26,47 @@
#ifndef __ARES_DNS_MULTISTRING_H
#define __ARES_DNS_MULTISTRING_H
-struct ares__dns_multistring;
-typedef struct ares__dns_multistring ares__dns_multistring_t;
+#include "ares_buf.h"
-ares__dns_multistring_t *ares__dns_multistring_create(void);
-void ares__dns_multistring_clear(ares__dns_multistring_t *strs);
-void ares__dns_multistring_destroy(ares__dns_multistring_t *strs);
-ares_status_t ares__dns_multistring_replace_own(ares__dns_multistring_t *strs,
- size_t idx, unsigned char *str,
- size_t len);
-ares_status_t ares__dns_multistring_del(ares__dns_multistring_t *strs,
- size_t idx);
-ares_status_t ares__dns_multistring_add_own(ares__dns_multistring_t *strs,
- unsigned char *str, size_t len);
-size_t ares__dns_multistring_cnt(const ares__dns_multistring_t *strs);
-const unsigned char *
- ares__dns_multistring_get(const ares__dns_multistring_t *strs, size_t idx,
- size_t *len);
+struct ares_dns_multistring;
+typedef struct ares_dns_multistring ares_dns_multistring_t;
+
+ares_dns_multistring_t *ares_dns_multistring_create(void);
+void ares_dns_multistring_clear(ares_dns_multistring_t *strs);
+void ares_dns_multistring_destroy(ares_dns_multistring_t *strs);
+ares_status_t ares_dns_multistring_swap_own(ares_dns_multistring_t *strs,
+ size_t idx, unsigned char *str,
+ size_t len);
+ares_status_t ares_dns_multistring_del(ares_dns_multistring_t *strs,
+ size_t idx);
+ares_status_t ares_dns_multistring_add_own(ares_dns_multistring_t *strs,
+ unsigned char *str, size_t len);
+size_t ares_dns_multistring_cnt(const ares_dns_multistring_t *strs);
const unsigned char *
- ares__dns_multistring_get_combined(ares__dns_multistring_t *strs,
- size_t *len);
+ ares_dns_multistring_get(const ares_dns_multistring_t *strs, size_t idx,
+ size_t *len);
+const unsigned char *ares_dns_multistring_combined(ares_dns_multistring_t *strs,
+ size_t *len);
+
+/*! Parse an array of character strings as defined in RFC1035, as binary,
+ * however, for convenience this does guarantee a NULL terminator (that is
+ * not included in the length for each value).
+ *
+ * \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] strs Pointer passed by reference to be filled in
+ * with
+ * the array of values.
+ * \param[out] validate_printable Validate the strings contain only printable
+ * data.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_dns_multistring_parse_buf(ares_buf_t *buf,
+ size_t remaining_len,
+ ares_dns_multistring_t **strs,
+ ares_bool_t validate_printable);
#endif
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_name.c b/contrib/libs/c-ares/src/lib/record/ares_dns_name.c
index a437553b0f..a9b92e03ca 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_name.c
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_name.c
@@ -31,7 +31,7 @@ typedef struct {
size_t idx;
} ares_nameoffset_t;
-static void ares__nameoffset_free(void *arg)
+static void ares_nameoffset_free(void *arg)
{
ares_nameoffset_t *off = arg;
if (off == NULL) {
@@ -41,8 +41,8 @@ static void ares__nameoffset_free(void *arg)
ares_free(off);
}
-static ares_status_t ares__nameoffset_create(ares__llist_t **list,
- const char *name, size_t idx)
+static ares_status_t ares_nameoffset_create(ares_llist_t **list,
+ const char *name, size_t idx)
{
ares_status_t status;
ares_nameoffset_t *off = NULL;
@@ -53,7 +53,7 @@ static ares_status_t ares__nameoffset_create(ares__llist_t **list,
}
if (*list == NULL) {
- *list = ares__llist_create(ares__nameoffset_free);
+ *list = ares_llist_create(ares_nameoffset_free);
}
if (*list == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -69,7 +69,7 @@ static ares_status_t ares__nameoffset_create(ares__llist_t **list,
off->name_len = ares_strlen(off->name);
off->idx = idx;
- if (ares__llist_insert_last(*list, off) == NULL) {
+ if (ares_llist_insert_last(*list, off) == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -78,25 +78,25 @@ static ares_status_t ares__nameoffset_create(ares__llist_t **list,
/* LCOV_EXCL_START: OutOfMemory */
fail:
- ares__nameoffset_free(off);
+ ares_nameoffset_free(off);
return status;
/* LCOV_EXCL_STOP */
}
-static const ares_nameoffset_t *ares__nameoffset_find(ares__llist_t *list,
- const char *name)
+static const ares_nameoffset_t *ares_nameoffset_find(ares_llist_t *list,
+ const char *name)
{
size_t name_len = ares_strlen(name);
- ares__llist_node_t *node;
+ ares_llist_node_t *node;
const ares_nameoffset_t *longest_match = NULL;
if (list == NULL || name == NULL || name_len == 0) {
return NULL;
}
- for (node = ares__llist_node_first(list); node != NULL;
- node = ares__llist_node_next(node)) {
- const ares_nameoffset_t *val = ares__llist_node_val(node);
+ for (node = ares_llist_node_first(list); node != NULL;
+ node = ares_llist_node_next(node)) {
+ const ares_nameoffset_t *val = ares_llist_node_val(node);
size_t prefix_len;
/* Can't be a match if the stored name is longer */
@@ -114,7 +114,7 @@ static const ares_nameoffset_t *ares__nameoffset_find(ares__llist_t *list,
/* Due to DNS 0x20, lets not inadvertently mangle things, use case-sensitive
* matching instead of case-insensitive. This may result in slightly
* larger DNS queries overall. */
- if (strcmp(val->name, name + prefix_len) != 0) {
+ if (!ares_streq(val->name, name + prefix_len)) {
continue;
}
@@ -133,38 +133,38 @@ static const ares_nameoffset_t *ares__nameoffset_find(ares__llist_t *list,
static void ares_dns_labels_free_cb(void *arg)
{
- ares__buf_t **buf = arg;
+ ares_buf_t **buf = arg;
if (buf == NULL) {
return;
}
- ares__buf_destroy(*buf);
+ ares_buf_destroy(*buf);
}
-static ares__buf_t *ares_dns_labels_add(ares__array_t *labels)
+static ares_buf_t *ares_dns_labels_add(ares_array_t *labels)
{
- ares__buf_t **buf;
+ ares_buf_t **buf;
if (labels == NULL) {
return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- if (ares__array_insert_last((void **)&buf, labels) != ARES_SUCCESS) {
+ if (ares_array_insert_last((void **)&buf, labels) != ARES_SUCCESS) {
return NULL;
}
- *buf = ares__buf_create();
+ *buf = ares_buf_create();
if (*buf == NULL) {
- ares__array_remove_last(labels);
+ ares_array_remove_last(labels);
return NULL;
}
return *buf;
}
-static ares__buf_t *ares_dns_labels_get_last(ares__array_t *labels)
+static ares_buf_t *ares_dns_labels_get_last(ares_array_t *labels)
{
- ares__buf_t **buf = ares__array_last(labels);
+ ares_buf_t **buf = ares_array_last(labels);
if (buf == NULL) {
return NULL;
@@ -173,9 +173,9 @@ static ares__buf_t *ares_dns_labels_get_last(ares__array_t *labels)
return *buf;
}
-static ares__buf_t *ares_dns_labels_get_at(ares__array_t *labels, size_t idx)
+static ares_buf_t *ares_dns_labels_get_at(ares_array_t *labels, size_t idx)
{
- ares__buf_t **buf = ares__array_at(labels, idx);
+ ares_buf_t **buf = ares_array_at(labels, idx);
if (buf == NULL) {
return NULL;
@@ -184,37 +184,37 @@ static ares__buf_t *ares_dns_labels_get_at(ares__array_t *labels, size_t idx)
return *buf;
}
-static void ares_dns_name_labels_del_last(ares__array_t *labels)
+static void ares_dns_name_labels_del_last(ares_array_t *labels)
{
- ares__array_remove_last(labels);
+ ares_array_remove_last(labels);
}
-static ares_status_t ares_parse_dns_name_escape(ares__buf_t *namebuf,
- ares__buf_t *label,
- ares_bool_t validate_hostname)
+static ares_status_t ares_parse_dns_name_escape(ares_buf_t *namebuf,
+ ares_buf_t *label,
+ ares_bool_t validate_hostname)
{
ares_status_t status;
unsigned char c;
- status = ares__buf_fetch_bytes(namebuf, &c, 1);
+ status = ares_buf_fetch_bytes(namebuf, &c, 1);
if (status != ARES_SUCCESS) {
return ARES_EBADNAME;
}
/* If next character is a digit, read 2 more digits */
- if (ares__isdigit(c)) {
+ if (ares_isdigit(c)) {
size_t i;
unsigned int val = 0;
val = c - '0';
for (i = 0; i < 2; i++) {
- status = ares__buf_fetch_bytes(namebuf, &c, 1);
+ status = ares_buf_fetch_bytes(namebuf, &c, 1);
if (status != ARES_SUCCESS) {
return ARES_EBADNAME;
}
- if (!ares__isdigit(c)) {
+ if (!ares_isdigit(c)) {
return ARES_EBADNAME;
}
val *= 10;
@@ -226,28 +226,28 @@ static ares_status_t ares_parse_dns_name_escape(ares__buf_t *namebuf,
return ARES_EBADNAME;
}
- if (validate_hostname && !ares__is_hostnamech((unsigned char)val)) {
+ if (validate_hostname && !ares_is_hostnamech((unsigned char)val)) {
return ARES_EBADNAME;
}
- return ares__buf_append_byte(label, (unsigned char)val);
+ return ares_buf_append_byte(label, (unsigned char)val);
}
/* We can just output the character */
- if (validate_hostname && !ares__is_hostnamech(c)) {
+ if (validate_hostname && !ares_is_hostnamech(c)) {
return ARES_EBADNAME;
}
- return ares__buf_append_byte(label, c);
+ return ares_buf_append_byte(label, c);
}
-static ares_status_t ares_split_dns_name(ares__array_t *labels,
- ares_bool_t validate_hostname,
- const char *name)
+static ares_status_t ares_split_dns_name(ares_array_t *labels,
+ ares_bool_t validate_hostname,
+ const char *name)
{
ares_status_t status;
- ares__buf_t *label = NULL;
- ares__buf_t *namebuf = NULL;
+ ares_buf_t *label = NULL;
+ ares_buf_t *namebuf = NULL;
size_t i;
size_t total_len = 0;
unsigned char c;
@@ -257,7 +257,7 @@ static ares_status_t ares_split_dns_name(ares__array_t *labels,
}
/* Put name into a buffer for parsing */
- namebuf = ares__buf_create();
+ namebuf = ares_buf_create();
if (namebuf == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -265,7 +265,7 @@ static ares_status_t ares_split_dns_name(ares__array_t *labels,
if (*name != '\0') {
status =
- ares__buf_append(namebuf, (const unsigned char *)name, ares_strlen(name));
+ ares_buf_append(namebuf, (const unsigned char *)name, ares_strlen(name));
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -278,7 +278,7 @@ static ares_status_t ares_split_dns_name(ares__array_t *labels,
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- while (ares__buf_fetch_bytes(namebuf, &c, 1) == ARES_SUCCESS) {
+ while (ares_buf_fetch_bytes(namebuf, &c, 1) == ARES_SUCCESS) {
/* New label */
if (c == '.') {
label = ares_dns_labels_add(labels);
@@ -299,33 +299,33 @@ static ares_status_t ares_split_dns_name(ares__array_t *labels,
}
/* Output direct character */
- if (validate_hostname && !ares__is_hostnamech(c)) {
+ if (validate_hostname && !ares_is_hostnamech(c)) {
status = ARES_EBADNAME;
goto done;
}
- status = ares__buf_append_byte(label, c);
+ status = ares_buf_append_byte(label, c);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
/* Remove trailing blank label */
- if (ares__buf_len(ares_dns_labels_get_last(labels)) == 0) {
+ if (ares_buf_len(ares_dns_labels_get_last(labels)) == 0) {
ares_dns_name_labels_del_last(labels);
}
/* If someone passed in "." there could have been 2 blank labels, check for
* that */
- if (ares__array_len(labels) == 1 &&
- ares__buf_len(ares_dns_labels_get_last(labels)) == 0) {
+ if (ares_array_len(labels) == 1 &&
+ ares_buf_len(ares_dns_labels_get_last(labels)) == 0) {
ares_dns_name_labels_del_last(labels);
}
/* Scan to make sure label lengths are valid */
- for (i = 0; i < ares__array_len(labels); i++) {
- const ares__buf_t *buf = ares_dns_labels_get_at(labels, i);
- size_t len = ares__buf_len(buf);
+ for (i = 0; i < ares_array_len(labels); i++) {
+ const ares_buf_t *buf = ares_dns_labels_get_at(labels, i);
+ size_t len = ares_buf_len(buf);
/* No 0-length labels, and no labels over 63 bytes */
if (len == 0 || len > 63) {
status = ARES_EBADNAME;
@@ -335,8 +335,7 @@ static ares_status_t ares_split_dns_name(ares__array_t *labels,
}
/* Can't exceed maximum (unescaped) length */
- if (ares__array_len(labels) &&
- total_len + ares__array_len(labels) - 1 > 255) {
+ if (ares_array_len(labels) && total_len + ares_array_len(labels) - 1 > 255) {
status = ARES_EBADNAME;
goto done;
}
@@ -344,19 +343,19 @@ static ares_status_t ares_split_dns_name(ares__array_t *labels,
status = ARES_SUCCESS;
done:
- ares__buf_destroy(namebuf);
+ ares_buf_destroy(namebuf);
return status;
}
-ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
- ares_bool_t validate_hostname,
- const char *name)
+ares_status_t ares_dns_name_write(ares_buf_t *buf, ares_llist_t **list,
+ ares_bool_t validate_hostname,
+ const char *name)
{
const ares_nameoffset_t *off = NULL;
size_t name_len;
size_t orig_name_len;
- size_t pos = ares__buf_len(buf);
- ares__array_t *labels = NULL;
+ size_t pos = ares_buf_len(buf);
+ ares_array_t *labels = NULL;
char name_copy[512];
ares_status_t status;
@@ -364,7 +363,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- labels = ares__array_create(sizeof(ares__buf_t *), ares_dns_labels_free_cb);
+ labels = ares_array_create(sizeof(ares_buf_t *), ares_dns_labels_free_cb);
if (labels == NULL) {
return ARES_ENOMEM;
}
@@ -376,7 +375,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
/* Find longest match */
if (list != NULL) {
- off = ares__nameoffset_find(*list, name_copy);
+ off = ares_nameoffset_find(*list, name_copy);
if (off != NULL && off->name_len != name_len) {
/* truncate */
name_len -= (off->name_len + 1);
@@ -393,17 +392,17 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
goto done;
}
- for (i = 0; i < ares__array_len(labels); i++) {
+ for (i = 0; i < ares_array_len(labels); i++) {
size_t len = 0;
- const ares__buf_t *lbuf = ares_dns_labels_get_at(labels, i);
- const unsigned char *ptr = ares__buf_peek(lbuf, &len);
+ const ares_buf_t *lbuf = ares_dns_labels_get_at(labels, i);
+ const unsigned char *ptr = ares_buf_peek(lbuf, &len);
- status = ares__buf_append_byte(buf, (unsigned char)(len & 0xFF));
+ status = ares_buf_append_byte(buf, (unsigned char)(len & 0xFF));
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append(buf, ptr, len);
+ status = ares_buf_append(buf, ptr, len);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -411,7 +410,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
/* If we are NOT jumping to another label, output terminator */
if (off == NULL) {
- status = ares__buf_append_byte(buf, 0);
+ status = ares_buf_append_byte(buf, 0);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -422,7 +421,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
if (off != NULL) {
unsigned short u16 =
(unsigned short)0xC000 | (unsigned short)(off->idx & 0x3FFF);
- status = ares__buf_append_be16(buf, u16);
+ status = ares_buf_append_be16(buf, u16);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -432,7 +431,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
* a prior entry */
if (list != NULL && (off == NULL || off->name_len != orig_name_len) &&
name_len > 0) {
- status = ares__nameoffset_create(list, name /* not truncated copy! */, pos);
+ status = ares_nameoffset_create(list, name /* not truncated copy! */, pos);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -441,7 +440,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
status = ARES_SUCCESS;
done:
- ares__array_destroy(labels);
+ ares_array_destroy(labels);
return status;
}
@@ -465,12 +464,12 @@ static ares_bool_t is_reservedch(int ch)
return ARES_FALSE;
}
-static ares_status_t ares__fetch_dnsname_into_buf(ares__buf_t *buf,
- ares__buf_t *dest, size_t len,
- ares_bool_t is_hostname)
+static ares_status_t ares_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_peek(buf, &remaining_len);
+ const unsigned char *ptr = ares_buf_peek(buf, &remaining_len);
ares_status_t status;
size_t i;
@@ -483,7 +482,7 @@ static ares_status_t ares__fetch_dnsname_into_buf(ares__buf_t *buf,
/* Hostnames have a very specific allowed character set. Anything outside
* of that (non-printable and reserved included) are disallowed */
- if (is_hostname && !ares__is_hostnamech(c)) {
+ if (is_hostname && !ares_is_hostnamech(c)) {
status = ARES_EBADRESP;
goto fail;
}
@@ -495,7 +494,7 @@ static ares_status_t ares__fetch_dnsname_into_buf(ares__buf_t *buf,
}
/* Non-printable characters need to be output as \DDD */
- if (!ares__isprint(c)) {
+ if (!ares_isprint(c)) {
unsigned char escape[4];
escape[0] = '\\';
@@ -503,7 +502,7 @@ static ares_status_t ares__fetch_dnsname_into_buf(ares__buf_t *buf,
escape[2] = '0' + ((c % 100) / 10);
escape[3] = '0' + (c % 10);
- status = ares__buf_append(dest, escape, sizeof(escape));
+ status = ares_buf_append(dest, escape, sizeof(escape));
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -513,39 +512,39 @@ static ares_status_t ares__fetch_dnsname_into_buf(ares__buf_t *buf,
/* Reserved characters need to be escaped, otherwise normal */
if (is_reservedch(c)) {
- status = ares__buf_append_byte(dest, '\\');
+ status = ares_buf_append_byte(dest, '\\');
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
- status = ares__buf_append_byte(dest, c);
+ status = ares_buf_append_byte(dest, c);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
- return ares__buf_consume(buf, len);
+ return ares_buf_consume(buf, len);
fail:
return status;
}
-ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
- ares_bool_t is_hostname)
+ares_status_t ares_dns_name_parse(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);
+ 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();
+ namebuf = ares_buf_create();
if (namebuf == NULL) {
status = ARES_ENOMEM;
goto fail;
@@ -562,11 +561,11 @@ ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
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);
+ if (label_start > ares_buf_get_position(buf)) {
+ label_start = ares_buf_get_position(buf);
}
- status = ares__buf_fetch_bytes(buf, &c, 1);
+ status = ares_buf_fetch_bytes(buf, &c, 1);
if (status != ARES_SUCCESS) {
goto fail;
}
@@ -590,7 +589,7 @@ ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
size_t offset = (size_t)((c & 0x3F) << 8);
/* Fetch second byte of the redirect length */
- status = ares__buf_fetch_bytes(buf, &c, 1);
+ status = ares_buf_fetch_bytes(buf, &c, 1);
if (status != ARES_SUCCESS) {
goto fail;
}
@@ -612,10 +611,10 @@ ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
/* First time we make a jump, save the current position */
if (save_offset == 0) {
- save_offset = ares__buf_get_position(buf);
+ save_offset = ares_buf_get_position(buf);
}
- status = ares__buf_set_position(buf, offset);
+ status = ares_buf_set_position(buf, offset);
if (status != ARES_SUCCESS) {
status = ARES_EBADNAME;
goto fail;
@@ -634,14 +633,14 @@ ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
/* New label */
/* Labels are separated by periods */
- if (ares__buf_len(namebuf) != 0 && name != NULL) {
- status = ares__buf_append_byte(namebuf, '.');
+ if (ares_buf_len(namebuf) != 0 && name != NULL) {
+ status = ares_buf_append_byte(namebuf, '.');
if (status != ARES_SUCCESS) {
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
- status = ares__fetch_dnsname_into_buf(buf, namebuf, c, is_hostname);
+ status = ares_fetch_dnsname_into_buf(buf, namebuf, c, is_hostname);
if (status != ARES_SUCCESS) {
goto fail;
}
@@ -650,11 +649,11 @@ ares_status_t ares__dns_name_parse(ares__buf_t *buf, char **name,
/* 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);
+ ares_buf_set_position(buf, save_offset);
}
if (name != NULL) {
- *name = ares__buf_finish_str(namebuf, NULL);
+ *name = ares_buf_finish_str(namebuf, NULL);
if (*name == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto fail; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -669,6 +668,6 @@ fail:
status = ARES_EBADNAME;
}
- ares__buf_destroy(namebuf);
+ ares_buf_destroy(namebuf);
return status;
}
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_parse.c b/contrib/libs/c-ares/src/lib/record/ares_dns_parse.c
index 57cb0f714e..0c545d7aa1 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_parse.c
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_parse.c
@@ -29,17 +29,17 @@
# include <stdint.h>
#endif
-static size_t ares_dns_rr_remaining_len(const ares__buf_t *buf, size_t orig_len,
+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);
+ 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,
+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)
@@ -47,7 +47,7 @@ static ares_status_t ares_dns_parse_and_set_dns_name(ares__buf_t *buf,
ares_status_t status;
char *name = NULL;
- status = ares__dns_name_parse(buf, &name, is_hostname);
+ status = ares_dns_name_parse(buf, &name, is_hostname);
if (status != ARES_SUCCESS) {
return status;
}
@@ -60,7 +60,7 @@ static ares_status_t ares_dns_parse_and_set_dns_name(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_and_set_dns_str(ares__buf_t *buf,
+static ares_status_t ares_dns_parse_and_set_dns_str(ares_buf_t *buf,
size_t max_len,
ares_dns_rr_t *rr,
ares_dns_rr_key_t key,
@@ -69,7 +69,7 @@ static ares_status_t ares_dns_parse_and_set_dns_str(ares__buf_t *buf,
ares_status_t status;
char *str = NULL;
- status = ares__buf_parse_dns_str(buf, max_len, &str);
+ status = ares_buf_parse_dns_str(buf, max_len, &str);
if (status != ARES_SUCCESS) {
return status;
}
@@ -88,34 +88,35 @@ static ares_status_t ares_dns_parse_and_set_dns_str(ares__buf_t *buf,
}
static ares_status_t
- ares_dns_parse_and_set_dns_abin(ares__buf_t *buf, size_t max_len,
+ ares_dns_parse_and_set_dns_abin(ares_buf_t *buf, size_t max_len,
ares_dns_rr_t *rr, ares_dns_rr_key_t key,
ares_bool_t validate_printable)
{
- ares_status_t status;
- ares__dns_multistring_t *strs = NULL;
+ ares_status_t status;
+ ares_dns_multistring_t *strs = NULL;
- status = ares__buf_parse_dns_abinstr(buf, max_len, &strs, validate_printable);
+ status =
+ ares_dns_multistring_parse_buf(buf, max_len, &strs, validate_printable);
if (status != ARES_SUCCESS) {
return status;
}
status = ares_dns_rr_set_abin_own(rr, key, strs);
if (status != ARES_SUCCESS) {
- ares__dns_multistring_destroy(strs);
+ ares_dns_multistring_destroy(strs);
return status;
}
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_and_set_be32(ares__buf_t *buf,
+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);
+ status = ares_buf_fetch_be32(buf, &u32);
if (status != ARES_SUCCESS) {
return status;
}
@@ -123,14 +124,14 @@ static ares_status_t ares_dns_parse_and_set_be32(ares__buf_t *buf,
return ares_dns_rr_set_u32(rr, key, u32);
}
-static ares_status_t ares_dns_parse_and_set_be16(ares__buf_t *buf,
+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);
+ status = ares_buf_fetch_be16(buf, &u16);
if (status != ARES_SUCCESS) {
return status;
}
@@ -138,14 +139,14 @@ static ares_status_t ares_dns_parse_and_set_be16(ares__buf_t *buf,
return ares_dns_rr_set_u16(rr, key, u16);
}
-static ares_status_t ares_dns_parse_and_set_u8(ares__buf_t *buf,
+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);
+ status = ares_buf_fetch_bytes(buf, &u8, 1);
if (status != ARES_SUCCESS) {
return status;
}
@@ -153,7 +154,7 @@ static ares_status_t ares_dns_parse_and_set_u8(ares__buf_t *buf,
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,
+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;
@@ -161,7 +162,7 @@ static ares_status_t ares_dns_parse_rr_a(ares__buf_t *buf, ares_dns_rr_t *rr,
(void)rdlength; /* Not needed */
- status = ares__buf_fetch_bytes(buf, (unsigned char *)&addr, sizeof(addr));
+ status = ares_buf_fetch_bytes(buf, (unsigned char *)&addr, sizeof(addr));
if (status != ARES_SUCCESS) {
return status;
}
@@ -169,7 +170,7 @@ static ares_status_t ares_dns_parse_rr_a(ares__buf_t *buf, ares_dns_rr_t *rr,
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,
+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 */
@@ -178,8 +179,8 @@ static ares_status_t ares_dns_parse_rr_ns(ares__buf_t *buf, ares_dns_rr_t *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)
+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 */
@@ -187,7 +188,7 @@ static ares_status_t ares_dns_parse_rr_cname(ares__buf_t *buf,
ARES_RR_CNAME_CNAME);
}
-static ares_status_t ares_dns_parse_rr_soa(ares__buf_t *buf, ares_dns_rr_t *rr,
+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;
@@ -236,7 +237,7 @@ static ares_status_t ares_dns_parse_rr_soa(ares__buf_t *buf, ares_dns_rr_t *rr,
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,
+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 */
@@ -245,11 +246,11 @@ static ares_status_t ares_dns_parse_rr_ptr(ares__buf_t *buf, ares_dns_rr_t *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)
+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);
+ size_t orig_len = ares_buf_len(buf);
(void)rdlength; /* Not needed */
@@ -269,7 +270,7 @@ static ares_status_t ares_dns_parse_rr_hinfo(ares__buf_t *buf,
return status;
}
-static ares_status_t ares_dns_parse_rr_mx(ares__buf_t *buf, ares_dns_rr_t *rr,
+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;
@@ -287,18 +288,18 @@ static ares_status_t ares_dns_parse_rr_mx(ares__buf_t *buf, ares_dns_rr_t *rr,
ARES_RR_MX_EXCHANGE);
}
-static ares_status_t ares_dns_parse_rr_txt(ares__buf_t *buf, ares_dns_rr_t *rr,
+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_abin(buf, rdlength, rr, ARES_RR_TXT_DATA,
ARES_FALSE);
}
-static ares_status_t ares_dns_parse_rr_sig(ares__buf_t *buf, ares_dns_rr_t *rr,
+static ares_status_t ares_dns_parse_rr_sig(ares_buf_t *buf, ares_dns_rr_t *rr,
size_t rdlength)
{
ares_status_t status;
- size_t orig_len = ares__buf_len(buf);
+ size_t orig_len = ares_buf_len(buf);
size_t len;
unsigned char *data;
@@ -348,7 +349,7 @@ static ares_status_t ares_dns_parse_rr_sig(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_EBADRESP;
}
- status = ares__buf_fetch_bytes_dup(buf, len, ARES_FALSE, &data);
+ status = ares_buf_fetch_bytes_dup(buf, len, ARES_FALSE, &data);
if (status != ARES_SUCCESS) {
return status;
}
@@ -362,7 +363,7 @@ static ares_status_t ares_dns_parse_rr_sig(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_rr_aaaa(ares__buf_t *buf, ares_dns_rr_t *rr,
+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;
@@ -370,7 +371,7 @@ static ares_status_t ares_dns_parse_rr_aaaa(ares__buf_t *buf, ares_dns_rr_t *rr,
(void)rdlength; /* Not needed */
- status = ares__buf_fetch_bytes(buf, (unsigned char *)&addr, sizeof(addr));
+ status = ares_buf_fetch_bytes(buf, (unsigned char *)&addr, sizeof(addr));
if (status != ARES_SUCCESS) {
return status;
}
@@ -378,7 +379,7 @@ static ares_status_t ares_dns_parse_rr_aaaa(ares__buf_t *buf, ares_dns_rr_t *rr,
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,
+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;
@@ -408,11 +409,11 @@ static ares_status_t ares_dns_parse_rr_srv(ares__buf_t *buf, ares_dns_rr_t *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)
+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);
+ size_t orig_len = ares_buf_len(buf);
/* ORDER */
status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_NAPTR_ORDER);
@@ -455,13 +456,13 @@ static ares_status_t ares_dns_parse_rr_naptr(ares__buf_t *buf,
ARES_RR_NAPTR_REPLACEMENT);
}
-static ares_status_t ares_dns_parse_rr_opt(ares__buf_t *buf, ares_dns_rr_t *rr,
+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;
- size_t orig_len = ares__buf_len(buf);
+ size_t orig_len = ares_buf_len(buf);
unsigned short rcode_high;
status = ares_dns_rr_set_u16(rr, ARES_RR_OPT_UDP_SIZE, raw_class);
@@ -493,19 +494,19 @@ static ares_status_t ares_dns_parse_rr_opt(ares__buf_t *buf, ares_dns_rr_t *rr,
unsigned char *val = NULL;
/* Fetch be16 option */
- status = ares__buf_fetch_be16(buf, &opt);
+ status = ares_buf_fetch_be16(buf, &opt);
if (status != ARES_SUCCESS) {
return status;
}
/* Fetch be16 length */
- status = ares__buf_fetch_be16(buf, &len);
+ status = ares_buf_fetch_be16(buf, &len);
if (status != ARES_SUCCESS) {
return status;
}
if (len) {
- status = ares__buf_fetch_bytes_dup(buf, len, ARES_TRUE, &val);
+ status = ares_buf_fetch_bytes_dup(buf, len, ARES_TRUE, &val);
if (status != ARES_SUCCESS) {
return status;
}
@@ -520,11 +521,11 @@ static ares_status_t ares_dns_parse_rr_opt(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_rr_tlsa(ares__buf_t *buf, ares_dns_rr_t *rr,
+static ares_status_t ares_dns_parse_rr_tlsa(ares_buf_t *buf, ares_dns_rr_t *rr,
size_t rdlength)
{
ares_status_t status;
- size_t orig_len = ares__buf_len(buf);
+ size_t orig_len = ares_buf_len(buf);
size_t len;
unsigned char *data;
@@ -548,7 +549,7 @@ static ares_status_t ares_dns_parse_rr_tlsa(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_EBADRESP;
}
- status = ares__buf_fetch_bytes_dup(buf, len, ARES_FALSE, &data);
+ status = ares_buf_fetch_bytes_dup(buf, len, ARES_FALSE, &data);
if (status != ARES_SUCCESS) {
return status;
}
@@ -562,11 +563,11 @@ static ares_status_t ares_dns_parse_rr_tlsa(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_rr_svcb(ares__buf_t *buf, ares_dns_rr_t *rr,
+static ares_status_t ares_dns_parse_rr_svcb(ares_buf_t *buf, ares_dns_rr_t *rr,
size_t rdlength)
{
ares_status_t status;
- size_t orig_len = ares__buf_len(buf);
+ size_t orig_len = ares_buf_len(buf);
status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_SVCB_PRIORITY);
if (status != ARES_SUCCESS) {
@@ -586,19 +587,19 @@ static ares_status_t ares_dns_parse_rr_svcb(ares__buf_t *buf, ares_dns_rr_t *rr,
unsigned char *val = NULL;
/* Fetch be16 option */
- status = ares__buf_fetch_be16(buf, &opt);
+ status = ares_buf_fetch_be16(buf, &opt);
if (status != ARES_SUCCESS) {
return status;
}
/* Fetch be16 length */
- status = ares__buf_fetch_be16(buf, &len);
+ status = ares_buf_fetch_be16(buf, &len);
if (status != ARES_SUCCESS) {
return status;
}
if (len) {
- status = ares__buf_fetch_bytes_dup(buf, len, ARES_TRUE, &val);
+ status = ares_buf_fetch_bytes_dup(buf, len, ARES_TRUE, &val);
if (status != ARES_SUCCESS) {
return status;
}
@@ -613,11 +614,11 @@ static ares_status_t ares_dns_parse_rr_svcb(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_rr_https(ares__buf_t *buf,
- ares_dns_rr_t *rr, size_t rdlength)
+static ares_status_t ares_dns_parse_rr_https(ares_buf_t *buf, ares_dns_rr_t *rr,
+ size_t rdlength)
{
ares_status_t status;
- size_t orig_len = ares__buf_len(buf);
+ size_t orig_len = ares_buf_len(buf);
status = ares_dns_parse_and_set_be16(buf, rr, ARES_RR_HTTPS_PRIORITY);
if (status != ARES_SUCCESS) {
@@ -637,19 +638,19 @@ static ares_status_t ares_dns_parse_rr_https(ares__buf_t *buf,
unsigned char *val = NULL;
/* Fetch be16 option */
- status = ares__buf_fetch_be16(buf, &opt);
+ status = ares_buf_fetch_be16(buf, &opt);
if (status != ARES_SUCCESS) {
return status;
}
/* Fetch be16 length */
- status = ares__buf_fetch_be16(buf, &len);
+ status = ares_buf_fetch_be16(buf, &len);
if (status != ARES_SUCCESS) {
return status;
}
if (len) {
- status = ares__buf_fetch_bytes_dup(buf, len, ARES_TRUE, &val);
+ status = ares_buf_fetch_bytes_dup(buf, len, ARES_TRUE, &val);
if (status != ARES_SUCCESS) {
return status;
}
@@ -664,12 +665,12 @@ static ares_status_t ares_dns_parse_rr_https(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_rr_uri(ares__buf_t *buf, ares_dns_rr_t *rr,
+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 orig_len = ares_buf_len(buf);
size_t remaining_len;
/* PRIORITY */
@@ -693,12 +694,12 @@ static ares_status_t ares_dns_parse_rr_uri(ares__buf_t *buf, ares_dns_rr_t *rr,
}
/* NOTE: Not in DNS string format */
- status = ares__buf_fetch_str_dup(buf, remaining_len, &name);
+ status = ares_buf_fetch_str_dup(buf, remaining_len, &name);
if (status != ARES_SUCCESS) {
return status;
}
- if (!ares__str_isprint(name, remaining_len)) {
+ if (!ares_str_isprint(name, remaining_len)) {
ares_free(name);
return ARES_EBADRESP;
}
@@ -713,13 +714,13 @@ static ares_status_t ares_dns_parse_rr_uri(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_rr_caa(ares__buf_t *buf, ares_dns_rr_t *rr,
+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);
+ size_t orig_len = ares_buf_len(buf);
/* CRITICAL */
status = ares_dns_parse_and_set_u8(buf, rr, ARES_RR_CAA_CRITICAL);
@@ -741,7 +742,7 @@ static ares_status_t ares_dns_parse_rr_caa(ares__buf_t *buf, ares_dns_rr_t *rr,
status = ARES_EBADRESP;
return status;
}
- status = ares__buf_fetch_bytes_dup(buf, data_len, ARES_TRUE, &data);
+ status = ares_buf_fetch_bytes_dup(buf, data_len, ARES_TRUE, &data);
if (status != ARES_SUCCESS) {
return status;
}
@@ -756,7 +757,7 @@ static ares_status_t ares_dns_parse_rr_caa(ares__buf_t *buf, ares_dns_rr_t *rr,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_rr_raw_rr(ares__buf_t *buf,
+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)
@@ -768,7 +769,7 @@ static ares_status_t ares_dns_parse_rr_raw_rr(ares__buf_t *buf,
return ARES_SUCCESS;
}
- status = ares__buf_fetch_bytes_dup(buf, rdlength, ARES_FALSE, &bytes);
+ status = ares_buf_fetch_bytes_dup(buf, rdlength, ARES_FALSE, &bytes);
if (status != ARES_SUCCESS) {
return status;
}
@@ -789,7 +790,7 @@ static ares_status_t ares_dns_parse_rr_raw_rr(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_parse_header(ares__buf_t *buf, unsigned int flags,
+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,
@@ -833,13 +834,13 @@ static ares_status_t ares_dns_parse_header(ares__buf_t *buf, unsigned int flags,
*/
/* ID */
- status = ares__buf_fetch_be16(buf, &id);
+ status = ares_buf_fetch_be16(buf, &id);
if (status != ARES_SUCCESS) {
goto fail;
}
/* Flags */
- status = ares__buf_fetch_be16(buf, &u16);
+ status = ares_buf_fetch_be16(buf, &u16);
if (status != ARES_SUCCESS) {
goto fail;
}
@@ -888,25 +889,25 @@ static ares_status_t ares_dns_parse_header(ares__buf_t *buf, unsigned int flags,
rcode = u16 & 0xf;
/* QDCOUNT */
- status = ares__buf_fetch_be16(buf, qdcount);
+ status = ares_buf_fetch_be16(buf, qdcount);
if (status != ARES_SUCCESS) {
goto fail;
}
/* ANCOUNT */
- status = ares__buf_fetch_be16(buf, ancount);
+ status = ares_buf_fetch_be16(buf, ancount);
if (status != ARES_SUCCESS) {
goto fail;
}
/* NSCOUNT */
- status = ares__buf_fetch_be16(buf, nscount);
+ status = ares_buf_fetch_be16(buf, nscount);
if (status != ARES_SUCCESS) {
goto fail;
}
/* ARCOUNT */
- status = ares__buf_fetch_be16(buf, arcount);
+ status = ares_buf_fetch_be16(buf, arcount);
if (status != ARES_SUCCESS) {
goto fail;
}
@@ -957,7 +958,7 @@ fail:
}
static ares_status_t
- ares_dns_parse_rr_data(ares__buf_t *buf, size_t rdlength, ares_dns_rr_t *rr,
+ 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)
{
@@ -1006,7 +1007,7 @@ static ares_status_t
return ARES_EFORMERR;
}
-static ares_status_t ares_dns_parse_qd(ares__buf_t *buf,
+static ares_status_t ares_dns_parse_qd(ares_buf_t *buf,
ares_dns_record_t *dnsrec)
{
char *name = NULL;
@@ -1031,20 +1032,20 @@ static ares_status_t ares_dns_parse_qd(ares__buf_t *buf,
*/
/* Name */
- status = ares__dns_name_parse(buf, &name, ARES_FALSE);
+ status = ares_dns_name_parse(buf, &name, ARES_FALSE);
if (status != ARES_SUCCESS) {
goto done;
}
/* Type */
- status = ares__buf_fetch_be16(buf, &u16);
+ status = ares_buf_fetch_be16(buf, &u16);
if (status != ARES_SUCCESS) {
goto done;
}
type = u16;
/* Class */
- status = ares__buf_fetch_be16(buf, &u16);
+ status = ares_buf_fetch_be16(buf, &u16);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -1061,7 +1062,7 @@ done:
return status;
}
-static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
+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)
{
@@ -1102,13 +1103,13 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
*/
/* Name */
- status = ares__dns_name_parse(buf, &name, ARES_FALSE);
+ status = ares_dns_name_parse(buf, &name, ARES_FALSE);
if (status != ARES_SUCCESS) {
goto done;
}
/* Type */
- status = ares__buf_fetch_be16(buf, &u16);
+ status = ares_buf_fetch_be16(buf, &u16);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -1116,20 +1117,20 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
raw_type = u16; /* Only used for raw rr data */
/* Class */
- status = ares__buf_fetch_be16(buf, &u16);
+ status = ares_buf_fetch_be16(buf, &u16);
if (status != ARES_SUCCESS) {
goto done;
}
qclass = u16;
/* TTL */
- status = ares__buf_fetch_be32(buf, &ttl);
+ status = ares_buf_fetch_be32(buf, &ttl);
if (status != ARES_SUCCESS) {
goto done;
}
/* Length */
- status = ares__buf_fetch_be16(buf, &u16);
+ status = ares_buf_fetch_be16(buf, &u16);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -1139,7 +1140,7 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
type = ARES_REC_TYPE_RAW_RR;
}
- namecomp = ares_dns_rec_type_allow_name_compression(type);
+ namecomp = ares_dns_rec_allow_name_comp(type);
if (sect == ARES_SECTION_ANSWER &&
(flags &
(namecomp ? ARES_DNS_PARSE_AN_BASE_RAW : ARES_DNS_PARSE_AN_EXT_RAW))) {
@@ -1157,7 +1158,7 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
}
/* Pull into another buffer for safety */
- if (rdlength > ares__buf_len(buf)) {
+ if (rdlength > ares_buf_len(buf)) {
status = ARES_EBADRESP;
goto done;
}
@@ -1173,7 +1174,7 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
/* Record the current remaining length in the buffer so we can tell how
* much was processed */
- remaining_len = ares__buf_len(buf);
+ 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,
@@ -1183,7 +1184,7 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
}
/* Determine how many bytes were processed */
- processed_len = remaining_len - ares__buf_len(buf);
+ processed_len = remaining_len - ares_buf_len(buf);
/* If too many bytes were processed, error! */
if (processed_len > rdlength) {
@@ -1194,7 +1195,7 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
/* 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);
+ ares_buf_consume(buf, rdlength - processed_len);
}
@@ -1203,7 +1204,7 @@ done:
return status;
}
-static ares_status_t ares_dns_parse_buf(ares__buf_t *buf, unsigned int flags,
+static ares_status_t ares_dns_parse_buf(ares_buf_t *buf, unsigned int flags,
ares_dns_record_t **dnsrec)
{
ares_status_t status;
@@ -1218,7 +1219,7 @@ static ares_status_t ares_dns_parse_buf(ares__buf_t *buf, unsigned int flags,
}
/* Maximum DNS packet size is 64k, even over TCP */
- if (ares__buf_len(buf) > 0xFFFF) {
+ if (ares_buf_len(buf) > 0xFFFF) {
return ARES_EFORMERR;
}
@@ -1309,20 +1310,20 @@ fail:
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_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);
+ 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);
+ ares_buf_destroy(parser);
return status;
}
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_private.h b/contrib/libs/c-ares/src/lib/record/ares_dns_private.h
index 5b86fed51f..e8fd600d1d 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_private.h
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_private.h
@@ -26,26 +26,26 @@
#ifndef __ARES_DNS_PRIVATE_H
#define __ARES_DNS_PRIVATE_H
-ares_status_t ares_dns_record_duplicate_ex(ares_dns_record_t **dest,
- const ares_dns_record_t *src);
-ares_bool_t ares_dns_rec_type_allow_name_compression(ares_dns_rec_type_t type);
-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_dns_rec_type_t type,
- ares_bool_t is_query);
-ares_bool_t ares_dns_section_isvalid(ares_dns_section_t sect);
+ares_status_t ares_dns_record_duplicate_ex(ares_dns_record_t **dest,
+ const ares_dns_record_t *src);
+ares_bool_t ares_dns_rec_allow_name_comp(ares_dns_rec_type_t type);
+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_dns_rec_type_t type,
+ 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_rr_set_abin_own(ares_dns_rr_t *dns_rr,
- ares_dns_rr_key_t key,
- ares__dns_multistring_t *strs);
+ares_status_t ares_dns_rr_set_abin_own(ares_dns_rr_t *dns_rr,
+ ares_dns_rr_key_t key,
+ ares_dns_multistring_t *strs);
ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key, unsigned short opt,
unsigned char *val, size_t val_len);
@@ -53,16 +53,16 @@ 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 *ares_dns_get_opt_rr(ares_dns_record_t *rec);
const ares_dns_rr_t *ares_dns_get_opt_rr_const(const ares_dns_record_t *rec);
-void ares_dns_record_write_ttl_decrement(ares_dns_record_t *dnsrec,
- unsigned int ttl_decrement);
+void ares_dns_record_ttl_decrement(ares_dns_record_t *dnsrec,
+ unsigned int ttl_decrement);
/* Same as ares_dns_write() but appends to an existing buffer object */
-ares_status_t ares_dns_write_buf(const ares_dns_record_t *dnsrec,
- ares__buf_t *buf);
+ares_status_t ares_dns_write_buf(const ares_dns_record_t *dnsrec,
+ ares_buf_t *buf);
/* Same as ares_dns_write_buf(), but prepends a 16bit length */
-ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec,
- ares__buf_t *buf);
+ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec,
+ ares_buf_t *buf);
/*! Create a DNS record object for a query. The arguments are the same as
* those for ares_create_query().
@@ -99,15 +99,15 @@ struct ares_dns_qd {
typedef struct {
struct in_addr addr;
-} ares__dns_a_t;
+} ares_dns_a_t;
typedef struct {
char *nsdname;
-} ares__dns_ns_t;
+} ares_dns_ns_t;
typedef struct {
char *cname;
-} ares__dns_cname_t;
+} ares_dns_cname_t;
typedef struct {
char *mname;
@@ -117,25 +117,25 @@ typedef struct {
unsigned int retry;
unsigned int expire;
unsigned int minimum;
-} ares__dns_soa_t;
+} ares_dns_soa_t;
typedef struct {
char *dname;
-} ares__dns_ptr_t;
+} ares_dns_ptr_t;
typedef struct {
char *cpu;
char *os;
-} ares__dns_hinfo_t;
+} ares_dns_hinfo_t;
typedef struct {
unsigned short preference;
char *exchange;
-} ares__dns_mx_t;
+} ares_dns_mx_t;
typedef struct {
- ares__dns_multistring_t *strs;
-} ares__dns_txt_t;
+ ares_dns_multistring_t *strs;
+} ares_dns_txt_t;
typedef struct {
unsigned short type_covered;
@@ -148,18 +148,18 @@ typedef struct {
char *signers_name;
unsigned char *signature;
size_t signature_len;
-} ares__dns_sig_t;
+} ares_dns_sig_t;
typedef struct {
struct ares_in6_addr addr;
-} ares__dns_aaaa_t;
+} ares_dns_aaaa_t;
typedef struct {
unsigned short priority;
unsigned short weight;
unsigned short port;
char *target;
-} ares__dns_srv_t;
+} ares_dns_srv_t;
typedef struct {
unsigned short order;
@@ -168,21 +168,21 @@ typedef struct {
char *services;
char *regexp;
char *replacement;
-} ares__dns_naptr_t;
+} ares_dns_naptr_t;
typedef struct {
unsigned short opt;
unsigned char *val;
size_t val_len;
-} ares__dns_optval_t;
+} ares_dns_optval_t;
typedef struct {
unsigned short udp_size; /*!< taken from class */
unsigned char version; /*!< taken from bits 8-16 of ttl */
unsigned short flags; /*!< Flags, remaining 16 bits, though only
* 1 currently defined */
- ares__array_t *options; /*!< Type is ares__dns_optval_t */
-} ares__dns_opt_t;
+ ares_array_t *options; /*!< Type is ares_dns_optval_t */
+} ares_dns_opt_t;
typedef struct {
unsigned char cert_usage;
@@ -190,26 +190,26 @@ typedef struct {
unsigned char match;
unsigned char *data;
size_t data_len;
-} ares__dns_tlsa_t;
+} ares_dns_tlsa_t;
typedef struct {
unsigned short priority;
char *target;
- ares__array_t *params; /*!< Type is ares__dns_optval_t */
-} ares__dns_svcb_t;
+ ares_array_t *params; /*!< Type is ares_dns_optval_t */
+} ares_dns_svcb_t;
typedef struct {
unsigned short priority;
unsigned short weight;
char *target;
-} ares__dns_uri_t;
+} ares_dns_uri_t;
typedef struct {
unsigned char critical;
char *tag;
unsigned char *value;
size_t value_len;
-} ares__dns_caa_t;
+} ares_dns_caa_t;
/*! Raw, unparsed RR data */
typedef struct {
@@ -217,7 +217,7 @@ typedef struct {
* 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;
+} ares_dns_raw_rr_t;
/*! DNS RR data structure */
struct ares_dns_rr {
@@ -228,25 +228,25 @@ struct ares_dns_rr {
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_sig_t sig;
- ares__dns_aaaa_t aaaa;
- ares__dns_srv_t srv;
- ares__dns_naptr_t naptr;
- ares__dns_opt_t opt;
- ares__dns_tlsa_t tlsa;
- ares__dns_svcb_t svcb;
- ares__dns_svcb_t https; /*!< https is a type of svcb, so this is right */
- ares__dns_uri_t uri;
- ares__dns_caa_t caa;
- ares__dns_raw_rr_t raw_rr;
+ 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_sig_t sig;
+ ares_dns_aaaa_t aaaa;
+ ares_dns_srv_t srv;
+ ares_dns_naptr_t naptr;
+ ares_dns_opt_t opt;
+ ares_dns_tlsa_t tlsa;
+ ares_dns_svcb_t svcb;
+ ares_dns_svcb_t https; /*!< https is a type of svcb, so this is right */
+ ares_dns_uri_t uri;
+ ares_dns_caa_t caa;
+ ares_dns_raw_rr_t raw_rr;
} r;
};
@@ -264,10 +264,10 @@ struct ares_dns_record {
* the ttl of any resource records by
* this amount. Used for cache */
- ares__array_t *qd; /*!< Type is ares_dns_qd_t */
- ares__array_t *an; /*!< Type is ares_dns_rr_t */
- ares__array_t *ns; /*!< Type is ares_dns_rr_t */
- ares__array_t *ar; /*!< Type is ares_dns_rr_t */
+ ares_array_t *qd; /*!< Type is ares_dns_qd_t */
+ ares_array_t *an; /*!< Type is ares_dns_rr_t */
+ ares_array_t *ns; /*!< Type is ares_dns_rr_t */
+ ares_array_t *ar; /*!< Type is ares_dns_rr_t */
};
#endif
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_record.c b/contrib/libs/c-ares/src/lib/record/ares_dns_record.c
index 1470494909..ec0dfbd13c 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_record.c
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_record.c
@@ -29,7 +29,7 @@
# include <stdint.h>
#endif
-static void ares__dns_rr_free(ares_dns_rr_t *rr);
+static void ares_dns_rr_free(ares_dns_rr_t *rr);
static void ares_dns_qd_free_cb(void *arg)
{
@@ -46,7 +46,7 @@ static void ares_dns_rr_free_cb(void *arg)
if (rr == NULL) {
return;
}
- ares__dns_rr_free(rr);
+ ares_dns_rr_free(rr);
}
ares_status_t ares_dns_record_create(ares_dns_record_t **dnsrec,
@@ -74,14 +74,10 @@ ares_status_t ares_dns_record_create(ares_dns_record_t **dnsrec,
(*dnsrec)->flags = flags;
(*dnsrec)->opcode = opcode;
(*dnsrec)->rcode = rcode;
- (*dnsrec)->qd =
- ares__array_create(sizeof(ares_dns_qd_t), ares_dns_qd_free_cb);
- (*dnsrec)->an =
- ares__array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb);
- (*dnsrec)->ns =
- ares__array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb);
- (*dnsrec)->ar =
- ares__array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb);
+ (*dnsrec)->qd = ares_array_create(sizeof(ares_dns_qd_t), ares_dns_qd_free_cb);
+ (*dnsrec)->an = ares_array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb);
+ (*dnsrec)->ns = ares_array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb);
+ (*dnsrec)->ar = ares_array_create(sizeof(ares_dns_rr_t), ares_dns_rr_free_cb);
if ((*dnsrec)->qd == NULL || (*dnsrec)->an == NULL || (*dnsrec)->ns == NULL ||
(*dnsrec)->ar == NULL) {
@@ -134,7 +130,7 @@ ares_dns_rcode_t ares_dns_record_get_rcode(const ares_dns_record_t *dnsrec)
return dnsrec->rcode;
}
-static void ares__dns_rr_free(ares_dns_rr_t *rr)
+static void ares_dns_rr_free(ares_dns_rr_t *rr)
{
ares_free(rr->name);
@@ -172,7 +168,7 @@ static void ares__dns_rr_free(ares_dns_rr_t *rr)
break;
case ARES_REC_TYPE_TXT:
- ares__dns_multistring_destroy(rr->r.txt.strs);
+ ares_dns_multistring_destroy(rr->r.txt.strs);
break;
case ARES_REC_TYPE_SIG:
@@ -192,7 +188,7 @@ static void ares__dns_rr_free(ares_dns_rr_t *rr)
break;
case ARES_REC_TYPE_OPT:
- ares__array_destroy(rr->r.opt.options);
+ ares_array_destroy(rr->r.opt.options);
break;
case ARES_REC_TYPE_TLSA:
@@ -201,12 +197,12 @@ static void ares__dns_rr_free(ares_dns_rr_t *rr)
case ARES_REC_TYPE_SVCB:
ares_free(rr->r.svcb.target);
- ares__array_destroy(rr->r.svcb.params);
+ ares_array_destroy(rr->r.svcb.params);
break;
case ARES_REC_TYPE_HTTPS:
ares_free(rr->r.https.target);
- ares__array_destroy(rr->r.https.params);
+ ares_array_destroy(rr->r.https.params);
break;
case ARES_REC_TYPE_URI:
@@ -231,16 +227,16 @@ void ares_dns_record_destroy(ares_dns_record_t *dnsrec)
}
/* Free questions */
- ares__array_destroy(dnsrec->qd);
+ ares_array_destroy(dnsrec->qd);
/* Free answers */
- ares__array_destroy(dnsrec->an);
+ ares_array_destroy(dnsrec->an);
/* Free authority */
- ares__array_destroy(dnsrec->ns);
+ ares_array_destroy(dnsrec->ns);
/* Free additional */
- ares__array_destroy(dnsrec->ar);
+ ares_array_destroy(dnsrec->ar);
ares_free(dnsrec);
}
@@ -250,7 +246,7 @@ size_t ares_dns_record_query_cnt(const ares_dns_record_t *dnsrec)
if (dnsrec == NULL) {
return 0;
}
- return ares__array_len(dnsrec->qd);
+ return ares_array_len(dnsrec->qd);
}
ares_status_t ares_dns_record_query_add(ares_dns_record_t *dnsrec,
@@ -268,15 +264,15 @@ ares_status_t ares_dns_record_query_add(ares_dns_record_t *dnsrec,
return ARES_EFORMERR;
}
- idx = ares__array_len(dnsrec->qd);
- status = ares__array_insert_last((void **)&qd, dnsrec->qd);
+ idx = ares_array_len(dnsrec->qd);
+ status = ares_array_insert_last((void **)&qd, dnsrec->qd);
if (status != ARES_SUCCESS) {
return status;
}
qd->name = ares_strdup(name);
if (qd->name == NULL) {
- ares__array_remove_at(dnsrec->qd, idx);
+ ares_array_remove_at(dnsrec->qd, idx);
return ARES_ENOMEM;
}
qd->qtype = qtype;
@@ -290,11 +286,11 @@ ares_status_t ares_dns_record_query_set_name(ares_dns_record_t *dnsrec,
char *orig_name = NULL;
ares_dns_qd_t *qd;
- if (dnsrec == NULL || idx >= ares__array_len(dnsrec->qd) || name == NULL) {
+ if (dnsrec == NULL || idx >= ares_array_len(dnsrec->qd) || name == NULL) {
return ARES_EFORMERR;
}
- qd = ares__array_at(dnsrec->qd, idx);
+ qd = ares_array_at(dnsrec->qd, idx);
orig_name = qd->name;
qd->name = ares_strdup(name);
@@ -313,12 +309,12 @@ ares_status_t ares_dns_record_query_set_type(ares_dns_record_t *dnsrec,
{
ares_dns_qd_t *qd;
- if (dnsrec == NULL || idx >= ares__array_len(dnsrec->qd) ||
+ if (dnsrec == NULL || idx >= ares_array_len(dnsrec->qd) ||
!ares_dns_rec_type_isvalid(qtype, ARES_TRUE)) {
return ARES_EFORMERR;
}
- qd = ares__array_at(dnsrec->qd, idx);
+ qd = ares_array_at(dnsrec->qd, idx);
qd->qtype = qtype;
return ARES_SUCCESS;
@@ -330,11 +326,11 @@ ares_status_t ares_dns_record_query_get(const ares_dns_record_t *dnsrec,
ares_dns_class_t *qclass)
{
const ares_dns_qd_t *qd;
- if (dnsrec == NULL || idx >= ares__array_len(dnsrec->qd)) {
+ if (dnsrec == NULL || idx >= ares_array_len(dnsrec->qd)) {
return ARES_EFORMERR;
}
- qd = ares__array_at(dnsrec->qd, idx);
+ qd = ares_array_at(dnsrec->qd, idx);
if (name != NULL) {
*name = qd->name;
}
@@ -359,11 +355,11 @@ size_t ares_dns_record_rr_cnt(const ares_dns_record_t *dnsrec,
switch (sect) {
case ARES_SECTION_ANSWER:
- return ares__array_len(dnsrec->an);
+ return ares_array_len(dnsrec->an);
case ARES_SECTION_AUTHORITY:
- return ares__array_len(dnsrec->ns);
+ return ares_array_len(dnsrec->ns);
case ARES_SECTION_ADDITIONAL:
- return ares__array_len(dnsrec->ar);
+ return ares_array_len(dnsrec->ar);
}
return 0; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -372,7 +368,7 @@ size_t ares_dns_record_rr_cnt(const ares_dns_record_t *dnsrec,
ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec,
ares_dns_section_t sect, size_t cnt)
{
- ares__array_t *arr = NULL;
+ ares_array_t *arr = NULL;
if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) {
return ARES_EFORMERR;
@@ -390,11 +386,11 @@ ares_status_t ares_dns_record_rr_prealloc(ares_dns_record_t *dnsrec,
break;
}
- if (cnt < ares__array_len(arr)) {
+ if (cnt < ares_array_len(arr)) {
return ARES_EFORMERR;
}
- return ares__array_set_size(arr, cnt);
+ return ares_array_set_size(arr, cnt);
}
ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out,
@@ -404,7 +400,7 @@ ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out,
ares_dns_class_t rclass, unsigned int ttl)
{
ares_dns_rr_t *rr = NULL;
- ares__array_t *arr = NULL;
+ ares_array_t *arr = NULL;
ares_status_t status;
size_t idx;
@@ -429,15 +425,15 @@ ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out,
break;
}
- idx = ares__array_len(arr);
- status = ares__array_insert_last((void **)&rr, arr);
+ idx = ares_array_len(arr);
+ status = ares_array_insert_last((void **)&rr, arr);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
rr->name = ares_strdup(name);
if (rr->name == NULL) {
- ares__array_remove_at(arr, idx);
+ ares_array_remove_at(arr, idx);
return ARES_ENOMEM;
}
@@ -454,7 +450,7 @@ ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out,
ares_status_t ares_dns_record_rr_del(ares_dns_record_t *dnsrec,
ares_dns_section_t sect, size_t idx)
{
- ares__array_t *arr = NULL;
+ ares_array_t *arr = NULL;
if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) {
return ARES_EFORMERR;
@@ -472,13 +468,13 @@ ares_status_t ares_dns_record_rr_del(ares_dns_record_t *dnsrec,
break;
}
- return ares__array_remove_at(arr, idx);
+ return ares_array_remove_at(arr, idx);
}
ares_dns_rr_t *ares_dns_record_rr_get(ares_dns_record_t *dnsrec,
ares_dns_section_t sect, size_t idx)
{
- ares__array_t *arr = NULL;
+ ares_array_t *arr = NULL;
if (dnsrec == NULL || !ares_dns_section_isvalid(sect)) {
return NULL;
@@ -496,7 +492,7 @@ ares_dns_rr_t *ares_dns_record_rr_get(ares_dns_record_t *dnsrec,
break;
}
- return ares__array_at(arr, idx);
+ return ares_array_at(arr, idx);
}
const ares_dns_rr_t *
@@ -849,14 +845,14 @@ const unsigned char *ares_dns_rr_get_bin(const ares_dns_rr_t *dns_rr,
/* Array of strings, return concatenated version */
if (ares_dns_rr_key_datatype(key) == ARES_DATATYPE_ABINP) {
- ares__dns_multistring_t * const *strs =
+ ares_dns_multistring_t * const *strs =
ares_dns_rr_data_ptr_const(dns_rr, key, NULL);
if (strs == NULL) {
return NULL;
}
- return ares__dns_multistring_get_combined(*strs, len);
+ return ares_dns_multistring_combined(*strs, len);
}
/* Not a multi-string, just straight binary data */
@@ -877,7 +873,7 @@ const unsigned char *ares_dns_rr_get_bin(const ares_dns_rr_t *dns_rr,
size_t ares_dns_rr_get_abin_cnt(const ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key)
{
- ares__dns_multistring_t * const *strs;
+ ares_dns_multistring_t * const *strs;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_ABINP) {
return 0;
@@ -888,14 +884,14 @@ size_t ares_dns_rr_get_abin_cnt(const ares_dns_rr_t *dns_rr,
return 0;
}
- return ares__dns_multistring_cnt(*strs);
+ return ares_dns_multistring_cnt(*strs);
}
const unsigned char *ares_dns_rr_get_abin(const ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key, size_t idx,
size_t *len)
{
- ares__dns_multistring_t * const *strs;
+ ares_dns_multistring_t * const *strs;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_ABINP) {
return NULL;
@@ -906,13 +902,13 @@ const unsigned char *ares_dns_rr_get_abin(const ares_dns_rr_t *dns_rr,
return NULL;
}
- return ares__dns_multistring_get(*strs, idx, len);
+ return ares_dns_multistring_get(*strs, idx, len);
}
ares_status_t ares_dns_rr_del_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
size_t idx)
{
- ares__dns_multistring_t **strs;
+ ares_dns_multistring_t **strs;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_ABINP) {
return ARES_EFORMERR;
@@ -923,7 +919,7 @@ ares_status_t ares_dns_rr_del_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
return ARES_EFORMERR;
}
- return ares__dns_multistring_del(*strs, idx);
+ return ares_dns_multistring_del(*strs, idx);
}
ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
@@ -933,9 +929,9 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
ares_dns_datatype_t datatype = ares_dns_rr_key_datatype(key);
ares_bool_t is_nullterm =
(datatype == ARES_DATATYPE_ABINP) ? ARES_TRUE : ARES_FALSE;
- size_t alloclen = is_nullterm ? len + 1 : len;
- unsigned char *temp;
- ares__dns_multistring_t **strs;
+ size_t alloclen = is_nullterm ? len + 1 : len;
+ unsigned char *temp;
+ ares_dns_multistring_t **strs;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_ABINP) {
return ARES_EFORMERR;
@@ -947,7 +943,7 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
}
if (*strs == NULL) {
- *strs = ares__dns_multistring_create();
+ *strs = ares_dns_multistring_create();
if (*strs == NULL) {
return ARES_ENOMEM;
}
@@ -965,7 +961,7 @@ ares_status_t ares_dns_rr_add_abin(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
temp[len] = 0;
}
- status = ares__dns_multistring_add_own(*strs, temp, len);
+ status = ares_dns_multistring_add_own(*strs, temp, len);
if (status != ARES_SUCCESS) {
ares_free(temp);
}
@@ -994,7 +990,7 @@ const char *ares_dns_rr_get_str(const ares_dns_rr_t *dns_rr,
size_t ares_dns_rr_get_opt_cnt(const ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key)
{
- ares__array_t * const *opts;
+ ares_array_t * const *opts;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_OPT) {
return 0;
@@ -1005,15 +1001,15 @@ size_t ares_dns_rr_get_opt_cnt(const ares_dns_rr_t *dns_rr,
return 0;
}
- return ares__array_len(*opts);
+ return ares_array_len(*opts);
}
unsigned short ares_dns_rr_get_opt(const ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key, size_t idx,
const unsigned char **val, size_t *val_len)
{
- ares__array_t * const *opts;
- const ares__dns_optval_t *opt;
+ ares_array_t * const *opts;
+ const ares_dns_optval_t *opt;
if (val) {
*val = NULL;
@@ -1031,7 +1027,7 @@ unsigned short ares_dns_rr_get_opt(const ares_dns_rr_t *dns_rr,
return 65535;
}
- opt = ares__array_at(*opts, idx);
+ opt = ares_array_at(*opts, idx);
if (opt == NULL) {
return 65535;
}
@@ -1050,10 +1046,10 @@ ares_bool_t ares_dns_rr_get_opt_byid(const ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key, unsigned short opt,
const unsigned char **val, size_t *val_len)
{
- ares__array_t * const *opts;
- size_t i;
- size_t cnt;
- const ares__dns_optval_t *optptr = NULL;
+ ares_array_t * const *opts;
+ size_t i;
+ size_t cnt;
+ const ares_dns_optval_t *optptr = NULL;
if (val) {
*val = NULL;
@@ -1071,9 +1067,9 @@ ares_bool_t ares_dns_rr_get_opt_byid(const ares_dns_rr_t *dns_rr,
return ARES_FALSE;
}
- cnt = ares__array_len(*opts);
+ cnt = ares_array_len(*opts);
for (i = 0; i < cnt; i++) {
- optptr = ares__array_at(*opts, i);
+ optptr = ares_array_at(*opts, i);
if (optptr == NULL) {
return ARES_FALSE;
}
@@ -1200,22 +1196,22 @@ ares_status_t ares_dns_rr_set_bin_own(ares_dns_rr_t *dns_rr,
}
if (ares_dns_rr_key_datatype(key) == ARES_DATATYPE_ABINP) {
- ares__dns_multistring_t **strs = ares_dns_rr_data_ptr(dns_rr, key, NULL);
+ ares_dns_multistring_t **strs = ares_dns_rr_data_ptr(dns_rr, key, NULL);
if (strs == NULL) {
return ARES_EFORMERR;
}
if (*strs == NULL) {
- *strs = ares__dns_multistring_create();
+ *strs = ares_dns_multistring_create();
if (*strs == NULL) {
return ARES_ENOMEM;
}
}
/* Clear all existing entries as this is an override */
- ares__dns_multistring_clear(*strs);
+ ares_dns_multistring_clear(*strs);
- return ares__dns_multistring_add_own(*strs, val, len);
+ return ares_dns_multistring_add_own(*strs, val, len);
}
bin = ares_dns_rr_data_ptr(dns_rr, key, &bin_len);
@@ -1307,11 +1303,11 @@ ares_status_t ares_dns_rr_set_str(ares_dns_rr_t *dns_rr, ares_dns_rr_key_t key,
return status;
}
-ares_status_t ares_dns_rr_set_abin_own(ares_dns_rr_t *dns_rr,
- ares_dns_rr_key_t key,
- ares__dns_multistring_t *strs)
+ares_status_t ares_dns_rr_set_abin_own(ares_dns_rr_t *dns_rr,
+ ares_dns_rr_key_t key,
+ ares_dns_multistring_t *strs)
{
- ares__dns_multistring_t **strs_ptr;
+ ares_dns_multistring_t **strs_ptr;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_ABINP) {
return ARES_EFORMERR;
@@ -1323,16 +1319,16 @@ ares_status_t ares_dns_rr_set_abin_own(ares_dns_rr_t *dns_rr,
}
if (*strs_ptr != NULL) {
- ares__dns_multistring_destroy(*strs_ptr);
+ ares_dns_multistring_destroy(*strs_ptr);
}
*strs_ptr = strs;
return ARES_SUCCESS;
}
-static void ares__dns_opt_free_cb(void *arg)
+static void ares_dns_opt_free_cb(void *arg)
{
- ares__dns_optval_t *opt = arg;
+ ares_dns_optval_t *opt = arg;
if (opt == NULL) {
return;
}
@@ -1343,11 +1339,11 @@ ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key, unsigned short opt,
unsigned char *val, size_t val_len)
{
- ares__array_t **options;
- ares__dns_optval_t *optptr = NULL;
- size_t idx;
- size_t cnt;
- ares_status_t status;
+ ares_array_t **options;
+ ares_dns_optval_t *optptr = NULL;
+ size_t idx;
+ size_t cnt;
+ ares_status_t status;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_OPT) {
return ARES_EFORMERR;
@@ -1360,15 +1356,15 @@ ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr,
if (*options == NULL) {
*options =
- ares__array_create(sizeof(ares__dns_optval_t), ares__dns_opt_free_cb);
+ ares_array_create(sizeof(ares_dns_optval_t), ares_dns_opt_free_cb);
}
if (*options == NULL) {
return ARES_ENOMEM;
}
- cnt = ares__array_len(*options);
+ cnt = ares_array_len(*options);
for (idx = 0; idx < cnt; idx++) {
- optptr = ares__array_at(*options, idx);
+ optptr = ares_array_at(*options, idx);
if (optptr == NULL) {
return ARES_EFORMERR;
}
@@ -1382,7 +1378,7 @@ ares_status_t ares_dns_rr_set_opt_own(ares_dns_rr_t *dns_rr,
goto done;
}
- status = ares__array_insert_last((void **)&optptr, *options);
+ status = ares_array_insert_last((void **)&optptr, *options);
if (status != ARES_SUCCESS) {
return status;
}
@@ -1424,10 +1420,10 @@ ares_status_t ares_dns_rr_del_opt_byid(ares_dns_rr_t *dns_rr,
ares_dns_rr_key_t key,
unsigned short opt)
{
- ares__array_t **options;
- const ares__dns_optval_t *optptr;
- size_t idx;
- size_t cnt;
+ ares_array_t **options;
+ const ares_dns_optval_t *optptr;
+ size_t idx;
+ size_t cnt;
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_OPT) {
return ARES_EFORMERR;
@@ -1443,14 +1439,14 @@ ares_status_t ares_dns_rr_del_opt_byid(ares_dns_rr_t *dns_rr,
return ARES_SUCCESS;
}
- cnt = ares__array_len(*options);
+ cnt = ares_array_len(*options);
for (idx = 0; idx < cnt; idx++) {
- optptr = ares__array_at_const(*options, idx);
+ optptr = ares_array_at_const(*options, idx);
if (optptr == NULL) {
return ARES_ENOTFOUND;
}
if (optptr->opt == opt) {
- return ares__array_remove_at(*options, idx);
+ return ares_array_remove_at(*options, idx);
}
}
@@ -1459,7 +1455,7 @@ ares_status_t ares_dns_rr_del_opt_byid(ares_dns_rr_t *dns_rr,
char *ares_dns_addr_to_ptr(const struct ares_addr *addr)
{
- ares__buf_t *buf = NULL;
+ ares_buf_t *buf = NULL;
const unsigned char *ptr = NULL;
size_t ptr_len = 0;
size_t i;
@@ -1470,7 +1466,7 @@ char *ares_dns_addr_to_ptr(const struct ares_addr *addr)
goto fail;
}
- buf = ares__buf_create();
+ buf = ares_buf_create();
if (buf == NULL) {
goto fail;
}
@@ -1485,47 +1481,47 @@ char *ares_dns_addr_to_ptr(const struct ares_addr *addr)
for (i = ptr_len; i > 0; i--) {
if (addr->family == AF_INET) {
- status = ares__buf_append_num_dec(buf, (size_t)ptr[i - 1], 0);
+ status = ares_buf_append_num_dec(buf, (size_t)ptr[i - 1], 0);
} else {
unsigned char c;
c = ptr[i - 1] & 0xF;
- status = ares__buf_append_byte(buf, hexbytes[c]);
+ status = ares_buf_append_byte(buf, hexbytes[c]);
if (status != ARES_SUCCESS) {
goto fail;
}
- status = ares__buf_append_byte(buf, '.');
+ status = ares_buf_append_byte(buf, '.');
if (status != ARES_SUCCESS) {
goto fail;
}
c = (ptr[i - 1] >> 4) & 0xF;
- status = ares__buf_append_byte(buf, hexbytes[c]);
+ status = ares_buf_append_byte(buf, hexbytes[c]);
}
if (status != ARES_SUCCESS) {
goto fail;
}
- status = ares__buf_append_byte(buf, '.');
+ status = ares_buf_append_byte(buf, '.');
if (status != ARES_SUCCESS) {
goto fail;
}
}
if (addr->family == AF_INET) {
- status = ares__buf_append(buf, (const unsigned char *)"in-addr.arpa", 12);
+ status = ares_buf_append(buf, (const unsigned char *)"in-addr.arpa", 12);
} else {
- status = ares__buf_append(buf, (const unsigned char *)"ip6.arpa", 8);
+ status = ares_buf_append(buf, (const unsigned char *)"ip6.arpa", 8);
}
if (status != ARES_SUCCESS) {
goto fail;
}
- return ares__buf_finish_str(buf, NULL);
+ return ares_buf_finish_str(buf, NULL);
fail:
- ares__buf_destroy(buf);
+ ares_buf_destroy(buf);
return NULL;
}
@@ -1575,7 +1571,7 @@ ares_status_t
*dnsrec = NULL;
/* Per RFC 7686, reject queries for ".onion" domain names with NXDOMAIN */
- if (ares__is_onion_domain(name)) {
+ if (ares_is_onion_domain(name)) {
status = ARES_ENOTFOUND;
goto done;
}
diff --git a/contrib/libs/c-ares/src/lib/record/ares_dns_write.c b/contrib/libs/c-ares/src/lib/record/ares_dns_write.c
index 8a3addd9f0..549017ffbc 100644
--- a/contrib/libs/c-ares/src/lib/record/ares_dns_write.c
+++ b/contrib/libs/c-ares/src/lib/record/ares_dns_write.c
@@ -31,7 +31,7 @@
static ares_status_t ares_dns_write_header(const ares_dns_record_t *dnsrec,
- ares__buf_t *buf)
+ ares_buf_t *buf)
{
unsigned short u16;
unsigned short opcode;
@@ -40,7 +40,7 @@ static ares_status_t ares_dns_write_header(const ares_dns_record_t *dnsrec,
ares_status_t status;
/* ID */
- status = ares__buf_append_be16(buf, dnsrec->id);
+ status = ares_buf_append_be16(buf, dnsrec->id);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -99,35 +99,35 @@ static ares_status_t ares_dns_write_header(const ares_dns_record_t *dnsrec,
}
u16 |= rcode;
- status = ares__buf_append_be16(buf, u16);
+ status = ares_buf_append_be16(buf, u16);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* QDCOUNT */
- status = ares__buf_append_be16(
+ status = ares_buf_append_be16(
buf, (unsigned short)ares_dns_record_query_cnt(dnsrec));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* ANCOUNT */
- status = ares__buf_append_be16(
+ status = ares_buf_append_be16(
buf, (unsigned short)ares_dns_record_rr_cnt(dnsrec, ARES_SECTION_ANSWER));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* NSCOUNT */
- status = ares__buf_append_be16(buf, (unsigned short)ares_dns_record_rr_cnt(
- dnsrec, ARES_SECTION_AUTHORITY));
+ status = ares_buf_append_be16(buf, (unsigned short)ares_dns_record_rr_cnt(
+ dnsrec, ARES_SECTION_AUTHORITY));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* ARCOUNT */
- status = ares__buf_append_be16(buf, (unsigned short)ares_dns_record_rr_cnt(
- dnsrec, ARES_SECTION_ADDITIONAL));
+ status = ares_buf_append_be16(buf, (unsigned short)ares_dns_record_rr_cnt(
+ dnsrec, ARES_SECTION_ADDITIONAL));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -136,8 +136,8 @@ static ares_status_t ares_dns_write_header(const ares_dns_record_t *dnsrec,
}
static ares_status_t ares_dns_write_questions(const ares_dns_record_t *dnsrec,
- ares__llist_t **namelist,
- ares__buf_t *buf)
+ ares_llist_t **namelist,
+ ares_buf_t *buf)
{
size_t i;
@@ -153,19 +153,19 @@ static ares_status_t ares_dns_write_questions(const ares_dns_record_t *dnsrec,
}
/* Name */
- status = ares__dns_name_write(buf, namelist, ARES_TRUE, name);
+ status = ares_dns_name_write(buf, namelist, ARES_TRUE, name);
if (status != ARES_SUCCESS) {
return status;
}
/* Type */
- status = ares__buf_append_be16(buf, (unsigned short)qtype);
+ status = ares_buf_append_be16(buf, (unsigned short)qtype);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* Class */
- status = ares__buf_append_be16(buf, (unsigned short)qclass);
+ status = ares_buf_append_be16(buf, (unsigned short)qclass);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -174,9 +174,9 @@ static ares_status_t ares_dns_write_questions(const ares_dns_record_t *dnsrec,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_write_rr_name(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_name(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist,
+ ares_llist_t **namelist,
ares_bool_t validate_hostname,
ares_dns_rr_key_t key)
{
@@ -187,10 +187,10 @@ static ares_status_t ares_dns_write_rr_name(ares__buf_t *buf,
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- return ares__dns_name_write(buf, namelist, validate_hostname, name);
+ return ares_dns_name_write(buf, namelist, validate_hostname, name);
}
-static ares_status_t ares_dns_write_rr_str(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_str(ares_buf_t *buf,
const ares_dns_rr_t *rr,
ares_dns_rr_key_t key)
{
@@ -209,7 +209,7 @@ static ares_status_t ares_dns_write_rr_str(ares__buf_t *buf,
}
/* Write 1 byte length */
- status = ares__buf_append_byte(buf, (unsigned char)(len & 0xFF));
+ status = ares_buf_append_byte(buf, (unsigned char)(len & 0xFF));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -219,10 +219,10 @@ static ares_status_t ares_dns_write_rr_str(ares__buf_t *buf,
}
/* Write string */
- return ares__buf_append(buf, (const unsigned char *)str, len);
+ return ares_buf_append(buf, (const unsigned char *)str, len);
}
-static ares_status_t ares_dns_write_binstr(ares__buf_t *buf,
+static ares_status_t ares_dns_write_binstr(ares_buf_t *buf,
const unsigned char *bin,
size_t bin_len)
{
@@ -240,14 +240,14 @@ static ares_status_t ares_dns_write_binstr(ares__buf_t *buf,
}
/* Length */
- status = ares__buf_append_byte(buf, (unsigned char)(len & 0xFF));
+ status = ares_buf_append_byte(buf, (unsigned char)(len & 0xFF));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* String */
if (len) {
- status = ares__buf_append(buf, ptr, len);
+ status = ares_buf_append(buf, ptr, len);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -260,7 +260,7 @@ static ares_status_t ares_dns_write_binstr(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_write_rr_abin(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_abin(ares_buf_t *buf,
const ares_dns_rr_t *rr,
ares_dns_rr_key_t key)
{
@@ -287,39 +287,39 @@ static ares_status_t ares_dns_write_rr_abin(ares__buf_t *buf,
return status;
}
-static ares_status_t ares_dns_write_rr_be32(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_be32(ares_buf_t *buf,
const ares_dns_rr_t *rr,
ares_dns_rr_key_t key)
{
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U32) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- return ares__buf_append_be32(buf, ares_dns_rr_get_u32(rr, key));
+ return ares_buf_append_be32(buf, ares_dns_rr_get_u32(rr, key));
}
-static ares_status_t ares_dns_write_rr_be16(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_be16(ares_buf_t *buf,
const ares_dns_rr_t *rr,
ares_dns_rr_key_t key)
{
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U16) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- return ares__buf_append_be16(buf, ares_dns_rr_get_u16(rr, key));
+ return ares_buf_append_be16(buf, ares_dns_rr_get_u16(rr, key));
}
-static ares_status_t ares_dns_write_rr_u8(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_u8(ares_buf_t *buf,
const ares_dns_rr_t *rr,
ares_dns_rr_key_t key)
{
if (ares_dns_rr_key_datatype(key) != ARES_DATATYPE_U8) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- return ares__buf_append_byte(buf, ares_dns_rr_get_u8(rr, key));
+ return ares_buf_append_byte(buf, ares_dns_rr_get_u8(rr, key));
}
-static ares_status_t ares_dns_write_rr_a(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_a(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
const struct in_addr *addr;
(void)namelist;
@@ -329,28 +329,28 @@ static ares_status_t ares_dns_write_rr_a(ares__buf_t *buf,
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- return ares__buf_append(buf, (const unsigned char *)addr, sizeof(*addr));
+ return ares_buf_append(buf, (const unsigned char *)addr, sizeof(*addr));
}
-static ares_status_t ares_dns_write_rr_ns(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_ns(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
return ares_dns_write_rr_name(buf, rr, namelist, ARES_FALSE,
ARES_RR_NS_NSDNAME);
}
-static ares_status_t ares_dns_write_rr_cname(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_cname(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
return ares_dns_write_rr_name(buf, rr, namelist, ARES_FALSE,
ARES_RR_CNAME_CNAME);
}
-static ares_status_t ares_dns_write_rr_soa(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_soa(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
@@ -396,17 +396,17 @@ static ares_status_t ares_dns_write_rr_soa(ares__buf_t *buf,
return ares_dns_write_rr_be32(buf, rr, ARES_RR_SOA_MINIMUM);
}
-static ares_status_t ares_dns_write_rr_ptr(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_ptr(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
return ares_dns_write_rr_name(buf, rr, namelist, ARES_FALSE,
ARES_RR_PTR_DNAME);
}
-static ares_status_t ares_dns_write_rr_hinfo(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_hinfo(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
@@ -422,9 +422,9 @@ static ares_status_t ares_dns_write_rr_hinfo(ares__buf_t *buf,
return ares_dns_write_rr_str(buf, rr, ARES_RR_HINFO_OS);
}
-static ares_status_t ares_dns_write_rr_mx(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_mx(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
@@ -439,17 +439,17 @@ static ares_status_t ares_dns_write_rr_mx(ares__buf_t *buf,
ARES_RR_MX_EXCHANGE);
}
-static ares_status_t ares_dns_write_rr_txt(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_txt(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
(void)namelist;
return ares_dns_write_rr_abin(buf, rr, ARES_RR_TXT_DATA);
}
-static ares_status_t ares_dns_write_rr_sig(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_sig(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
const unsigned char *data;
@@ -512,12 +512,12 @@ static ares_status_t ares_dns_write_rr_sig(ares__buf_t *buf,
return ARES_EFORMERR;
}
- return ares__buf_append(buf, data, len);
+ return ares_buf_append(buf, data, len);
}
-static ares_status_t ares_dns_write_rr_aaaa(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_aaaa(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
const struct ares_in6_addr *addr;
(void)namelist;
@@ -527,12 +527,12 @@ static ares_status_t ares_dns_write_rr_aaaa(ares__buf_t *buf,
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- return ares__buf_append(buf, (const unsigned char *)addr, sizeof(*addr));
+ return ares_buf_append(buf, (const unsigned char *)addr, sizeof(*addr));
}
-static ares_status_t ares_dns_write_rr_srv(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_srv(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
@@ -559,9 +559,9 @@ static ares_status_t ares_dns_write_rr_srv(ares__buf_t *buf,
ARES_RR_SRV_TARGET);
}
-static ares_status_t ares_dns_write_rr_naptr(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_naptr(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
@@ -600,11 +600,11 @@ static ares_status_t ares_dns_write_rr_naptr(ares__buf_t *buf,
ARES_RR_NAPTR_REPLACEMENT);
}
-static ares_status_t ares_dns_write_rr_opt(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_opt(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
- size_t len = ares__buf_len(buf);
+ size_t len = ares_buf_len(buf);
ares_status_t status;
unsigned int ttl = 0;
size_t i;
@@ -620,9 +620,9 @@ static ares_status_t ares_dns_write_rr_opt(ares__buf_t *buf,
/* We need to go back and overwrite the class and ttl that were emitted as
* the OPT record overloads them for its own use (yes, very strange!) */
- status = ares__buf_set_length(buf, len - 2 /* RDLENGTH */
- - 4 /* TTL */
- - 2 /* CLASS */);
+ status = ares_buf_set_length(buf, len - 2 /* RDLENGTH */
+ - 4 /* TTL */
+ - 2 /* CLASS */);
if (status != ARES_SUCCESS) {
return status;
}
@@ -638,13 +638,13 @@ static ares_status_t ares_dns_write_rr_opt(ares__buf_t *buf,
ttl |= (unsigned int)ares_dns_rr_get_u8(rr, ARES_RR_OPT_VERSION) << 16;
ttl |= (unsigned int)ares_dns_rr_get_u16(rr, ARES_RR_OPT_FLAGS);
- status = ares__buf_append_be32(buf, ttl);
+ status = ares_buf_append_be32(buf, ttl);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* Now go back to real end */
- status = ares__buf_set_length(buf, len);
+ status = ares_buf_set_length(buf, len);
if (status != ARES_SUCCESS) {
return status;
}
@@ -658,20 +658,20 @@ static ares_status_t ares_dns_write_rr_opt(ares__buf_t *buf,
opt = ares_dns_rr_get_opt(rr, ARES_RR_OPT_OPTIONS, i, &val, &val_len);
/* BE16 option */
- status = ares__buf_append_be16(buf, opt);
+ status = ares_buf_append_be16(buf, opt);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* BE16 length */
- status = ares__buf_append_be16(buf, (unsigned short)(val_len & 0xFFFF));
+ status = ares_buf_append_be16(buf, (unsigned short)(val_len & 0xFFFF));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* Value */
if (val && val_len) {
- status = ares__buf_append(buf, val, val_len);
+ status = ares_buf_append(buf, val, val_len);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -681,9 +681,9 @@ static ares_status_t ares_dns_write_rr_opt(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_write_rr_tlsa(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_tlsa(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
const unsigned char *data;
@@ -715,12 +715,12 @@ static ares_status_t ares_dns_write_rr_tlsa(ares__buf_t *buf,
return ARES_EFORMERR;
}
- return ares__buf_append(buf, data, len);
+ return ares_buf_append(buf, data, len);
}
-static ares_status_t ares_dns_write_rr_svcb(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_svcb(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
size_t i;
@@ -747,20 +747,20 @@ static ares_status_t ares_dns_write_rr_svcb(ares__buf_t *buf,
opt = ares_dns_rr_get_opt(rr, ARES_RR_SVCB_PARAMS, i, &val, &val_len);
/* BE16 option */
- status = ares__buf_append_be16(buf, opt);
+ status = ares_buf_append_be16(buf, opt);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* BE16 length */
- status = ares__buf_append_be16(buf, (unsigned short)(val_len & 0xFFFF));
+ status = ares_buf_append_be16(buf, (unsigned short)(val_len & 0xFFFF));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* Value */
if (val && val_len) {
- status = ares__buf_append(buf, val, val_len);
+ status = ares_buf_append(buf, val, val_len);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -769,9 +769,9 @@ static ares_status_t ares_dns_write_rr_svcb(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_write_rr_https(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_https(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
size_t i;
@@ -798,20 +798,20 @@ static ares_status_t ares_dns_write_rr_https(ares__buf_t *buf,
opt = ares_dns_rr_get_opt(rr, ARES_RR_HTTPS_PARAMS, i, &val, &val_len);
/* BE16 option */
- status = ares__buf_append_be16(buf, opt);
+ status = ares_buf_append_be16(buf, opt);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* BE16 length */
- status = ares__buf_append_be16(buf, (unsigned short)(val_len & 0xFFFF));
+ status = ares_buf_append_be16(buf, (unsigned short)(val_len & 0xFFFF));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* Value */
if (val && val_len) {
- status = ares__buf_append(buf, val, val_len);
+ status = ares_buf_append(buf, val, val_len);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -820,9 +820,9 @@ static ares_status_t ares_dns_write_rr_https(ares__buf_t *buf,
return ARES_SUCCESS;
}
-static ares_status_t ares_dns_write_rr_uri(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_uri(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
ares_status_t status;
const char *target;
@@ -848,13 +848,13 @@ static ares_status_t ares_dns_write_rr_uri(ares__buf_t *buf,
return ARES_EFORMERR;
}
- return ares__buf_append(buf, (const unsigned char *)target,
- ares_strlen(target));
+ return ares_buf_append(buf, (const unsigned char *)target,
+ ares_strlen(target));
}
-static ares_status_t ares_dns_write_rr_caa(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_caa(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
const unsigned char *data = NULL;
size_t data_len = 0;
@@ -880,14 +880,14 @@ static ares_status_t ares_dns_write_rr_caa(ares__buf_t *buf,
return ARES_EFORMERR;
}
- return ares__buf_append(buf, data, data_len);
+ return ares_buf_append(buf, data, data_len);
}
-static ares_status_t ares_dns_write_rr_raw_rr(ares__buf_t *buf,
+static ares_status_t ares_dns_write_rr_raw_rr(ares_buf_t *buf,
const ares_dns_rr_t *rr,
- ares__llist_t **namelist)
+ ares_llist_t **namelist)
{
- size_t len = ares__buf_len(buf);
+ size_t len = ares_buf_len(buf);
ares_status_t status;
const unsigned char *data = NULL;
size_t data_len = 0;
@@ -902,10 +902,10 @@ static ares_status_t ares_dns_write_rr_raw_rr(ares__buf_t *buf,
/* We need to go back and overwrite the type that was emitted by the parent
* function */
- status = ares__buf_set_length(buf, len - 2 /* RDLENGTH */
- - 4 /* TTL */
- - 2 /* CLASS */
- - 2 /* TYPE */);
+ status = ares_buf_set_length(buf, len - 2 /* RDLENGTH */
+ - 4 /* TTL */
+ - 2 /* CLASS */
+ - 2 /* TYPE */);
if (status != ARES_SUCCESS) {
return status;
}
@@ -916,7 +916,7 @@ static ares_status_t ares_dns_write_rr_raw_rr(ares__buf_t *buf,
}
/* Now go back to real end */
- status = ares__buf_set_length(buf, len);
+ status = ares_buf_set_length(buf, len);
if (status != ARES_SUCCESS) {
return status;
}
@@ -931,13 +931,13 @@ static ares_status_t ares_dns_write_rr_raw_rr(ares__buf_t *buf,
return ARES_SUCCESS;
}
- return ares__buf_append(buf, data, data_len);
+ return ares_buf_append(buf, data, data_len);
}
static ares_status_t ares_dns_write_rr(const ares_dns_record_t *dnsrec,
- ares__llist_t **namelist,
+ ares_llist_t **namelist,
ares_dns_section_t section,
- ares__buf_t *buf)
+ ares_buf_t *buf)
{
size_t i;
@@ -945,7 +945,7 @@ static ares_status_t ares_dns_write_rr(const ares_dns_record_t *dnsrec,
const ares_dns_rr_t *rr;
ares_dns_rec_type_t type;
ares_bool_t allow_compress;
- ares__llist_t **namelistptr = NULL;
+ ares_llist_t **namelistptr = NULL;
size_t pos_len;
ares_status_t status;
size_t rdlength;
@@ -958,27 +958,27 @@ static ares_status_t ares_dns_write_rr(const ares_dns_record_t *dnsrec,
}
type = ares_dns_rr_get_type(rr);
- allow_compress = ares_dns_rec_type_allow_name_compression(type);
+ allow_compress = ares_dns_rec_allow_name_comp(type);
if (allow_compress) {
namelistptr = namelist;
}
/* Name */
status =
- ares__dns_name_write(buf, namelist, ARES_TRUE, ares_dns_rr_get_name(rr));
+ ares_dns_name_write(buf, namelist, ARES_TRUE, ares_dns_rr_get_name(rr));
if (status != ARES_SUCCESS) {
return status;
}
/* Type */
- status = ares__buf_append_be16(buf, (unsigned short)type);
+ status = ares_buf_append_be16(buf, (unsigned short)type);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* Class */
status =
- ares__buf_append_be16(buf, (unsigned short)ares_dns_rr_get_class(rr));
+ ares_buf_append_be16(buf, (unsigned short)ares_dns_rr_get_class(rr));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -990,14 +990,14 @@ static ares_status_t ares_dns_write_rr(const ares_dns_record_t *dnsrec,
} else {
ttl -= rr->parent->ttl_decrement;
}
- status = ares__buf_append_be32(buf, ttl);
+ status = ares_buf_append_be32(buf, ttl);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* Length */
- pos_len = ares__buf_len(buf); /* Save to write real length later */
- status = ares__buf_append_be16(buf, 0);
+ pos_len = ares_buf_len(buf); /* Save to write real length later */
+ status = ares_buf_append_be16(buf, 0);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1072,20 +1072,20 @@ static ares_status_t ares_dns_write_rr(const ares_dns_record_t *dnsrec,
/* Back off write pointer, write real length, then go back to proper
* position */
- end_length = ares__buf_len(buf);
+ end_length = ares_buf_len(buf);
rdlength = end_length - pos_len - 2;
- status = ares__buf_set_length(buf, pos_len);
+ status = ares_buf_set_length(buf, pos_len);
if (status != ARES_SUCCESS) {
return status;
}
- status = ares__buf_append_be16(buf, (unsigned short)(rdlength & 0xFFFF));
+ status = ares_buf_append_be16(buf, (unsigned short)(rdlength & 0xFFFF));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_set_length(buf, end_length);
+ status = ares_buf_set_length(buf, end_length);
if (status != ARES_SUCCESS) {
return status;
}
@@ -1095,17 +1095,17 @@ static ares_status_t ares_dns_write_rr(const ares_dns_record_t *dnsrec,
}
ares_status_t ares_dns_write_buf(const ares_dns_record_t *dnsrec,
- ares__buf_t *buf)
+ ares_buf_t *buf)
{
- ares__llist_t *namelist = NULL;
- size_t orig_len;
- ares_status_t status;
+ ares_llist_t *namelist = NULL;
+ size_t orig_len;
+ ares_status_t status;
if (dnsrec == NULL || buf == NULL) {
return ARES_EFORMERR;
}
- orig_len = ares__buf_len(buf);
+ orig_len = ares_buf_len(buf);
status = ares_dns_write_header(dnsrec, buf);
if (status != ARES_SUCCESS) {
@@ -1133,16 +1133,16 @@ ares_status_t ares_dns_write_buf(const ares_dns_record_t *dnsrec,
}
done:
- ares__llist_destroy(namelist);
+ ares_llist_destroy(namelist);
if (status != ARES_SUCCESS) {
- ares__buf_set_length(buf, orig_len);
+ ares_buf_set_length(buf, orig_len);
}
return status;
}
ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec,
- ares__buf_t *buf)
+ ares_buf_t *buf)
{
ares_status_t status;
size_t orig_len;
@@ -1153,10 +1153,10 @@ ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec,
return ARES_EFORMERR;
}
- orig_len = ares__buf_len(buf);
+ orig_len = ares_buf_len(buf);
/* Write placeholder for length */
- status = ares__buf_append_be16(buf, 0);
+ status = ares_buf_append_be16(buf, 0);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1167,7 +1167,7 @@ ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec,
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
}
- len = ares__buf_len(buf);
+ len = ares_buf_len(buf);
msg_len = len - orig_len - 2;
if (msg_len > 65535) {
status = ARES_EBADQUERY;
@@ -1176,16 +1176,16 @@ ares_status_t ares_dns_write_buf_tcp(const ares_dns_record_t *dnsrec,
/* Now we need to overwrite the length, so we jump back to the original
* message length, overwrite the section and jump back */
- ares__buf_set_length(buf, orig_len);
- status = ares__buf_append_be16(buf, (unsigned short)(msg_len & 0xFFFF));
+ ares_buf_set_length(buf, orig_len);
+ status = ares_buf_append_be16(buf, (unsigned short)(msg_len & 0xFFFF));
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: UntestablePath */
}
- ares__buf_set_length(buf, len);
+ ares_buf_set_length(buf, len);
done:
if (status != ARES_SUCCESS) {
- ares__buf_set_length(buf, orig_len);
+ ares_buf_set_length(buf, orig_len);
}
return status;
}
@@ -1193,7 +1193,7 @@ done:
ares_status_t ares_dns_write(const ares_dns_record_t *dnsrec,
unsigned char **buf, size_t *buf_len)
{
- ares__buf_t *b = NULL;
+ ares_buf_t *b = NULL;
ares_status_t status;
if (buf == NULL || buf_len == NULL || dnsrec == NULL) {
@@ -1203,7 +1203,7 @@ ares_status_t ares_dns_write(const ares_dns_record_t *dnsrec,
*buf = NULL;
*buf_len = 0;
- b = ares__buf_create();
+ b = ares_buf_create();
if (b == NULL) {
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1211,16 +1211,16 @@ ares_status_t ares_dns_write(const ares_dns_record_t *dnsrec,
status = ares_dns_write_buf(dnsrec, b);
if (status != ARES_SUCCESS) {
- ares__buf_destroy(b);
+ ares_buf_destroy(b);
return status;
}
- *buf = ares__buf_finish_bin(b, buf_len);
+ *buf = ares_buf_finish_bin(b, buf_len);
return status;
}
-void ares_dns_record_write_ttl_decrement(ares_dns_record_t *dnsrec,
- unsigned int ttl_decrement)
+void ares_dns_record_ttl_decrement(ares_dns_record_t *dnsrec,
+ unsigned int ttl_decrement)
{
if (dnsrec == NULL) {
return;
diff --git a/contrib/libs/c-ares/src/lib/str/ares__buf.c b/contrib/libs/c-ares/src/lib/str/ares_buf.c
index bf6d4a0e1d..69e6b38aac 100644
--- a/contrib/libs/c-ares/src/lib/str/ares__buf.c
+++ b/contrib/libs/c-ares/src/lib/str/ares_buf.c
@@ -24,13 +24,13 @@
* SPDX-License-Identifier: MIT
*/
#include "ares_private.h"
-#include "ares__buf.h"
+#include "ares_buf.h"
#include <limits.h>
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
-struct ares__buf {
+struct ares_buf {
const unsigned char *data; /*!< pointer to start of data buffer */
size_t data_len; /*!< total size of data in buffer */
@@ -43,9 +43,9 @@ struct ares__buf {
* SIZE_MAX if not set. */
};
-ares__buf_t *ares__buf_create(void)
+ares_buf_t *ares_buf_create(void)
{
- ares__buf_t *buf = ares_malloc_zero(sizeof(*buf));
+ ares_buf_t *buf = ares_malloc_zero(sizeof(*buf));
if (buf == NULL) {
return NULL;
}
@@ -54,15 +54,15 @@ ares__buf_t *ares__buf_create(void)
return buf;
}
-ares__buf_t *ares__buf_create_const(const unsigned char *data, size_t data_len)
+ares_buf_t *ares_buf_create_const(const unsigned char *data, size_t data_len)
{
- ares__buf_t *buf;
+ ares_buf_t *buf;
if (data == NULL || data_len == 0) {
return NULL;
}
- buf = ares__buf_create();
+ buf = ares_buf_create();
if (buf == NULL) {
return NULL;
}
@@ -73,7 +73,7 @@ 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)
+void ares_buf_destroy(ares_buf_t *buf)
{
if (buf == NULL) {
return;
@@ -82,7 +82,7 @@ void ares__buf_destroy(ares__buf_t *buf)
ares_free(buf);
}
-static ares_bool_t 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 ARES_FALSE; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -95,7 +95,7 @@ static ares_bool_t ares__buf_is_const(const ares__buf_t *buf)
return ARES_FALSE;
}
-void ares__buf_reclaim(ares__buf_t *buf)
+void ares_buf_reclaim(ares_buf_t *buf)
{
size_t prefix_size;
size_t data_size;
@@ -104,7 +104,7 @@ void ares__buf_reclaim(ares__buf_t *buf)
return;
}
- if (ares__buf_is_const(buf)) {
+ if (ares_buf_is_const(buf)) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
@@ -135,8 +135,7 @@ void ares__buf_reclaim(ares__buf_t *buf)
}
}
-static ares_status_t 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;
@@ -146,11 +145,11 @@ static ares_status_t ares__buf_ensure_space(ares__buf_t *buf,
return ARES_EFORMERR;
}
- if (ares__buf_is_const(buf)) {
+ if (ares_buf_is_const(buf)) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- /* When calling ares__buf_finish_str() we end up adding a null terminator,
+ /* 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
* want an ARES_ENOMEM at that point */
needed_size++;
@@ -162,7 +161,7 @@ static ares_status_t ares__buf_ensure_space(ares__buf_t *buf,
}
/* See if just moving consumed data frees up enough space */
- ares__buf_reclaim(buf);
+ ares_buf_reclaim(buf);
remaining_size = buf->alloc_buf_len - buf->data_len;
if (remaining_size >= needed_size) {
@@ -194,9 +193,9 @@ static ares_status_t ares__buf_ensure_space(ares__buf_t *buf,
return ARES_SUCCESS;
}
-ares_status_t ares__buf_set_length(ares__buf_t *buf, size_t len)
+ares_status_t ares_buf_set_length(ares_buf_t *buf, size_t len)
{
- if (buf == NULL || ares__buf_is_const(buf)) {
+ if (buf == NULL || ares_buf_is_const(buf)) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
@@ -208,8 +207,8 @@ ares_status_t ares__buf_set_length(ares__buf_t *buf, size_t len)
return ARES_SUCCESS;
}
-ares_status_t 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)
{
ares_status_t status;
@@ -221,7 +220,7 @@ ares_status_t ares__buf_append(ares__buf_t *buf, const unsigned char *data,
return ARES_SUCCESS;
}
- status = ares__buf_ensure_space(buf, data_len);
+ status = ares_buf_ensure_space(buf, data_len);
if (status != ARES_SUCCESS) {
return status;
}
@@ -231,21 +230,21 @@ ares_status_t ares__buf_append(ares__buf_t *buf, const unsigned char *data,
return ARES_SUCCESS;
}
-ares_status_t ares__buf_append_byte(ares__buf_t *buf, unsigned char b)
+ares_status_t ares_buf_append_byte(ares_buf_t *buf, unsigned char b)
{
- return ares__buf_append(buf, &b, 1);
+ return ares_buf_append(buf, &b, 1);
}
-ares_status_t ares__buf_append_be16(ares__buf_t *buf, unsigned short u16)
+ares_status_t ares_buf_append_be16(ares_buf_t *buf, unsigned short u16)
{
ares_status_t status;
- status = ares__buf_append_byte(buf, (unsigned char)((u16 >> 8) & 0xff));
+ status = ares_buf_append_byte(buf, (unsigned char)((u16 >> 8) & 0xff));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, (unsigned char)(u16 & 0xff));
+ status = ares_buf_append_byte(buf, (unsigned char)(u16 & 0xff));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -253,26 +252,26 @@ ares_status_t ares__buf_append_be16(ares__buf_t *buf, unsigned short u16)
return ARES_SUCCESS;
}
-ares_status_t ares__buf_append_be32(ares__buf_t *buf, unsigned int u32)
+ares_status_t ares_buf_append_be32(ares_buf_t *buf, unsigned int u32)
{
ares_status_t status;
- status = ares__buf_append_byte(buf, ((unsigned char)(u32 >> 24) & 0xff));
+ status = ares_buf_append_byte(buf, ((unsigned char)(u32 >> 24) & 0xff));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, ((unsigned char)(u32 >> 16) & 0xff));
+ status = ares_buf_append_byte(buf, ((unsigned char)(u32 >> 16) & 0xff));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, ((unsigned char)(u32 >> 8) & 0xff));
+ status = ares_buf_append_byte(buf, ((unsigned char)(u32 >> 8) & 0xff));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, ((unsigned char)u32 & 0xff));
+ status = ares_buf_append_byte(buf, ((unsigned char)u32 & 0xff));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -280,7 +279,7 @@ ares_status_t ares__buf_append_be32(ares__buf_t *buf, unsigned int u32)
return ARES_SUCCESS;
}
-unsigned char *ares__buf_append_start(ares__buf_t *buf, size_t *len)
+unsigned char *ares_buf_append_start(ares_buf_t *buf, size_t *len)
{
ares_status_t status;
@@ -288,17 +287,17 @@ unsigned char *ares__buf_append_start(ares__buf_t *buf, size_t *len)
return NULL;
}
- status = ares__buf_ensure_space(buf, *len);
+ status = ares_buf_ensure_space(buf, *len);
if (status != ARES_SUCCESS) {
return NULL;
}
- /* -1 for possible null terminator for ares__buf_finish_str() */
+ /* -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)
+void ares_buf_append_finish(ares_buf_t *buf, size_t len)
{
if (buf == NULL) {
return;
@@ -307,18 +306,17 @@ void ares__buf_append_finish(ares__buf_t *buf, size_t len)
buf->data_len += len;
}
-unsigned char *ares__buf_finish_bin(ares__buf_t *buf, size_t *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);
+ 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) {
+ if (buf->alloc_buf == NULL && ares_buf_ensure_space(buf, 1) != ARES_SUCCESS) {
return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
}
ptr = buf->alloc_buf;
@@ -327,12 +325,12 @@ unsigned char *ares__buf_finish_bin(ares__buf_t *buf, size_t *len)
return ptr;
}
-char *ares__buf_finish_str(ares__buf_t *buf, size_t *len)
+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);
+ ptr = (char *)ares_buf_finish_bin(buf, &mylen);
if (ptr == NULL) {
return NULL;
}
@@ -341,14 +339,14 @@ char *ares__buf_finish_str(ares__buf_t *buf, size_t *len)
*len = mylen;
}
- /* NOTE: ensured via ares__buf_ensure_space() that there is always at least
+ /* NOTE: ensured via ares_buf_ensure_space() that there is always at least
* 1 extra byte available for this specific use-case */
ptr[mylen] = 0;
return ptr;
}
-void ares__buf_tag(ares__buf_t *buf)
+void ares_buf_tag(ares_buf_t *buf)
{
if (buf == NULL) {
return;
@@ -357,7 +355,7 @@ void ares__buf_tag(ares__buf_t *buf)
buf->tag_offset = buf->offset;
}
-ares_status_t 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) {
return ARES_EFORMERR;
@@ -368,7 +366,7 @@ ares_status_t ares__buf_tag_rollback(ares__buf_t *buf)
return ARES_SUCCESS;
}
-ares_status_t 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) {
return ARES_EFORMERR;
@@ -378,7 +376,7 @@ ares_status_t ares__buf_tag_clear(ares__buf_t *buf)
return ARES_SUCCESS;
}
-const unsigned char *ares__buf_tag_fetch(const ares__buf_t *buf, size_t *len)
+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) {
return NULL;
@@ -388,7 +386,7 @@ const unsigned char *ares__buf_tag_fetch(const ares__buf_t *buf, size_t *len)
return buf->data + buf->tag_offset;
}
-size_t ares__buf_tag_length(const ares__buf_t *buf)
+size_t ares_buf_tag_length(const ares_buf_t *buf)
{
if (buf == NULL || buf->tag_offset == SIZE_MAX) {
return 0;
@@ -396,11 +394,11 @@ size_t ares__buf_tag_length(const ares__buf_t *buf)
return buf->offset - buf->tag_offset;
}
-ares_status_t ares__buf_tag_fetch_bytes(const ares__buf_t *buf,
- unsigned char *bytes, size_t *len)
+ares_status_t ares_buf_tag_fetch_bytes(const ares_buf_t *buf,
+ unsigned char *bytes, size_t *len)
{
size_t ptr_len = 0;
- const unsigned char *ptr = ares__buf_tag_fetch(buf, &ptr_len);
+ const unsigned char *ptr = ares_buf_tag_fetch(buf, &ptr_len);
if (ptr == NULL || bytes == NULL || len == NULL) {
return ARES_EFORMERR;
@@ -418,8 +416,25 @@ ares_status_t ares__buf_tag_fetch_bytes(const ares__buf_t *buf,
return ARES_SUCCESS;
}
-ares_status_t ares__buf_tag_fetch_string(const ares__buf_t *buf, char *str,
- size_t len)
+ares_status_t ares_buf_tag_fetch_constbuf(const ares_buf_t *buf,
+ ares_buf_t **newbuf)
+{
+ size_t ptr_len = 0;
+ const unsigned char *ptr = ares_buf_tag_fetch(buf, &ptr_len);
+
+ if (ptr == NULL || newbuf == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ *newbuf = ares_buf_create_const(ptr, ptr_len);
+ if (*newbuf == NULL) {
+ return ARES_ENOMEM;
+ }
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_buf_tag_fetch_string(const ares_buf_t *buf, char *str,
+ size_t len)
{
size_t out_len;
ares_status_t status;
@@ -432,7 +447,7 @@ ares_status_t ares__buf_tag_fetch_string(const ares__buf_t *buf, char *str,
/* Space for NULL terminator */
out_len = len - 1;
- status = ares__buf_tag_fetch_bytes(buf, (unsigned char *)str, &out_len);
+ status = ares_buf_tag_fetch_bytes(buf, (unsigned char *)str, &out_len);
if (status != ARES_SUCCESS) {
return status;
}
@@ -442,7 +457,7 @@ ares_status_t ares__buf_tag_fetch_string(const ares__buf_t *buf, char *str,
/* Validate string is printable */
for (i = 0; i < out_len; i++) {
- if (!ares__isprint(str[i])) {
+ if (!ares_isprint(str[i])) {
return ARES_EBADSTR;
}
}
@@ -450,7 +465,32 @@ ares_status_t ares__buf_tag_fetch_string(const ares__buf_t *buf, char *str,
return ARES_SUCCESS;
}
-static const unsigned char *ares__buf_fetch(const ares__buf_t *buf, size_t *len)
+ares_status_t ares_buf_tag_fetch_strdup(const ares_buf_t *buf, char **str)
+{
+ size_t ptr_len = 0;
+ const unsigned char *ptr = ares_buf_tag_fetch(buf, &ptr_len);
+
+ if (ptr == NULL || str == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (!ares_str_isprint((const char *)ptr, ptr_len)) {
+ return ARES_EBADSTR;
+ }
+
+ *str = ares_malloc(ptr_len + 1);
+ if (*str == NULL) {
+ return ARES_ENOMEM;
+ }
+
+ if (ptr_len > 0) {
+ memcpy(*str, ptr, ptr_len);
+ }
+ (*str)[ptr_len] = 0;
+ return ARES_SUCCESS;
+}
+
+static const unsigned char *ares_buf_fetch(const ares_buf_t *buf, size_t *len)
{
if (len != NULL) {
*len = 0;
@@ -468,9 +508,9 @@ static const unsigned char *ares__buf_fetch(const ares__buf_t *buf, size_t *len)
return buf->data + buf->offset;
}
-ares_status_t 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_len(buf);
+ size_t remaining_len = ares_buf_len(buf);
if (remaining_len < len) {
return ARES_EBADRESP;
@@ -480,10 +520,10 @@ ares_status_t ares__buf_consume(ares__buf_t *buf, size_t len)
return ARES_SUCCESS;
}
-ares_status_t 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);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
unsigned int u32;
if (buf == NULL || u16 == NULL || remaining_len < sizeof(*u16)) {
@@ -495,13 +535,13 @@ ares_status_t ares__buf_fetch_be16(ares__buf_t *buf, unsigned short *u16)
u32 = ((unsigned int)(ptr[0]) << 8 | (unsigned int)ptr[1]);
*u16 = (unsigned short)(u32 & 0xFFFF);
- return ares__buf_consume(buf, sizeof(*u16));
+ return ares_buf_consume(buf, sizeof(*u16));
}
-ares_status_t ares__buf_fetch_be32(ares__buf_t *buf, unsigned int *u32)
+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);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
if (buf == NULL || u32 == NULL || remaining_len < sizeof(*u32)) {
return ARES_EBADRESP;
@@ -510,29 +550,29 @@ ares_status_t ares__buf_fetch_be32(ares__buf_t *buf, unsigned int *u32)
*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));
+ return ares_buf_consume(buf, sizeof(*u32));
}
-ares_status_t 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);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
if (buf == NULL || bytes == NULL || len == 0 || remaining_len < len) {
return ARES_EBADRESP;
}
memcpy(bytes, ptr, len);
- return ares__buf_consume(buf, len);
+ return ares_buf_consume(buf, len);
}
-ares_status_t ares__buf_fetch_bytes_dup(ares__buf_t *buf, size_t len,
- ares_bool_t null_term,
- unsigned char **bytes)
+ares_status_t ares_buf_fetch_bytes_dup(ares_buf_t *buf, size_t len,
+ ares_bool_t null_term,
+ unsigned char **bytes)
{
size_t remaining_len;
- const unsigned char *ptr = ares__buf_fetch(buf, &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;
@@ -547,18 +587,26 @@ ares_status_t ares__buf_fetch_bytes_dup(ares__buf_t *buf, size_t len,
if (null_term) {
(*bytes)[len] = 0;
}
- return ares__buf_consume(buf, len);
+ return ares_buf_consume(buf, len);
}
-ares_status_t ares__buf_fetch_str_dup(ares__buf_t *buf, size_t len, char **str)
+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);
+ size_t i;
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
if (buf == NULL || str == NULL || len == 0 || remaining_len < len) {
return ARES_EBADRESP;
}
+ /* Validate string is printable */
+ for (i = 0; i < len; i++) {
+ if (!ares_isprint(ptr[i])) {
+ return ARES_EBADSTR;
+ }
+ }
+
*str = ares_malloc(len + 1);
if (*str == NULL) {
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -567,30 +615,30 @@ ares_status_t ares__buf_fetch_str_dup(ares__buf_t *buf, size_t len, char **str)
memcpy(*str, ptr, len);
(*str)[len] = 0;
- return ares__buf_consume(buf, len);
+ 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)
+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);
+ 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);
+ status = ares_buf_append(dest, ptr, len);
if (status != ARES_SUCCESS) {
return status;
}
- return ares__buf_consume(buf, len);
+ return ares_buf_consume(buf, len);
}
-static ares_bool_t ares__is_whitespace(unsigned char c,
- ares_bool_t include_linefeed)
+static ares_bool_t ares_is_whitespace(unsigned char c,
+ ares_bool_t include_linefeed)
{
switch (c) {
case '\r':
@@ -607,11 +655,11 @@ static ares_bool_t ares__is_whitespace(unsigned char c,
return ARES_FALSE;
}
-size_t ares__buf_consume_whitespace(ares__buf_t *buf,
- ares_bool_t include_linefeed)
+size_t ares_buf_consume_whitespace(ares_buf_t *buf,
+ ares_bool_t include_linefeed)
{
size_t remaining_len = 0;
- const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
size_t i;
if (ptr == NULL) {
@@ -619,21 +667,21 @@ size_t ares__buf_consume_whitespace(ares__buf_t *buf,
}
for (i = 0; i < remaining_len; i++) {
- if (!ares__is_whitespace(ptr[i], include_linefeed)) {
+ if (!ares_is_whitespace(ptr[i], include_linefeed)) {
break;
}
}
if (i > 0) {
- ares__buf_consume(buf, i);
+ ares_buf_consume(buf, i);
}
return i;
}
-size_t ares__buf_consume_nonwhitespace(ares__buf_t *buf)
+size_t ares_buf_consume_nonwhitespace(ares_buf_t *buf)
{
size_t remaining_len = 0;
- const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
size_t i;
if (ptr == NULL) {
@@ -641,21 +689,21 @@ size_t ares__buf_consume_nonwhitespace(ares__buf_t *buf)
}
for (i = 0; i < remaining_len; i++) {
- if (ares__is_whitespace(ptr[i], ARES_TRUE)) {
+ if (ares_is_whitespace(ptr[i], ARES_TRUE)) {
break;
}
}
if (i > 0) {
- ares__buf_consume(buf, i);
+ ares_buf_consume(buf, i);
}
return i;
}
-size_t ares__buf_consume_line(ares__buf_t *buf, ares_bool_t include_linefeed)
+size_t ares_buf_consume_line(ares_buf_t *buf, ares_bool_t include_linefeed)
{
size_t remaining_len = 0;
- const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
size_t i;
if (ptr == NULL) {
@@ -674,28 +722,40 @@ done:
}
if (i > 0) {
- ares__buf_consume(buf, i);
+ ares_buf_consume(buf, i);
}
return i;
}
-size_t ares__buf_consume_until_charset(ares__buf_t *buf,
- const unsigned char *charset, size_t len,
- ares_bool_t require_charset)
+size_t ares_buf_consume_until_charset(ares_buf_t *buf,
+ const unsigned char *charset, size_t len,
+ ares_bool_t require_charset)
{
size_t remaining_len = 0;
- const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len);
- size_t i;
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
+ size_t pos;
ares_bool_t found = ARES_FALSE;
if (ptr == NULL || charset == NULL || len == 0) {
return 0;
}
- for (i = 0; i < remaining_len; i++) {
+ /* Optimize for single character searches */
+ if (len == 1) {
+ const unsigned char *p = memchr(ptr, charset[0], remaining_len);
+ if (p != NULL) {
+ found = ARES_TRUE;
+ pos = (size_t)(p - ptr);
+ } else {
+ pos = remaining_len;
+ }
+ goto done;
+ }
+
+ for (pos = 0; pos < remaining_len; pos++) {
size_t j;
for (j = 0; j < len; j++) {
- if (ptr[i] == charset[j]) {
+ if (ptr[pos] == charset[j]) {
found = ARES_TRUE;
goto done;
}
@@ -704,20 +764,50 @@ size_t ares__buf_consume_until_charset(ares__buf_t *buf,
done:
if (require_charset && !found) {
+ return SIZE_MAX;
+ }
+
+ if (pos > 0) {
+ ares_buf_consume(buf, pos);
+ }
+ return pos;
+}
+
+size_t ares_buf_consume_until_seq(ares_buf_t *buf, const unsigned char *seq,
+ size_t len, ares_bool_t require_seq)
+{
+ size_t remaining_len = 0;
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
+ const unsigned char *p;
+ size_t consume_len = 0;
+
+ if (ptr == NULL || seq == NULL || len == 0) {
return 0;
}
- if (i > 0) {
- ares__buf_consume(buf, i);
+ p = ares_memmem(ptr, remaining_len, seq, len);
+ if (require_seq && p == NULL) {
+ return SIZE_MAX;
}
- return i;
+
+ if (p != NULL) {
+ consume_len = (size_t)(p - ptr);
+ } else {
+ consume_len = remaining_len;
+ }
+
+ if (consume_len > 0) {
+ ares_buf_consume(buf, consume_len);
+ }
+
+ return consume_len;
}
-size_t ares__buf_consume_charset(ares__buf_t *buf, const unsigned char *charset,
- size_t len)
+size_t ares_buf_consume_charset(ares_buf_t *buf, const unsigned char *charset,
+ size_t len)
{
size_t remaining_len = 0;
- const unsigned char *ptr = ares__buf_fetch(buf, &remaining_len);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
size_t i;
if (ptr == NULL || charset == NULL || len == 0) {
@@ -738,28 +828,30 @@ size_t ares__buf_consume_charset(ares__buf_t *buf, const unsigned char *charset,
}
if (i > 0) {
- ares__buf_consume(buf, i);
+ ares_buf_consume(buf, i);
}
return i;
}
-static void ares__buf_destroy_cb(void *arg)
+static void ares_buf_destroy_cb(void *arg)
{
- ares__buf_destroy(arg);
+ ares_buf_t **buf = arg;
+ ares_buf_destroy(*buf);
}
-static ares_bool_t ares__buf_split_isduplicate(ares__llist_t *list,
- const unsigned char *val,
- size_t len,
- ares__buf_split_t flags)
+static ares_bool_t ares_buf_split_isduplicate(ares_array_t *arr,
+ const unsigned char *val,
+ size_t len,
+ ares_buf_split_t flags)
{
- ares__llist_node_t *node;
+ size_t i;
+ size_t num = ares_array_len(arr);
- for (node = ares__llist_node_first(list); node != NULL;
- node = ares__llist_node_next(node)) {
- const ares__buf_t *buf = ares__llist_node_val(node);
- size_t plen = 0;
- const unsigned char *ptr = ares__buf_peek(buf, &plen);
+ for (i = 0; i < num; i++) {
+ ares_buf_t **bufptr = ares_array_at(arr, i);
+ const ares_buf_t *buf = *bufptr;
+ size_t plen = 0;
+ const unsigned char *ptr = ares_buf_peek(buf, &plen);
/* Can't be duplicate if lengths mismatch */
if (plen != len) {
@@ -767,61 +859,62 @@ static ares_bool_t ares__buf_split_isduplicate(ares__llist_t *list,
}
if (flags & ARES_BUF_SPLIT_CASE_INSENSITIVE) {
- if (ares__memeq_ci(ptr, val, len)) {
+ if (ares_memeq_ci(ptr, val, len)) {
return ARES_TRUE;
}
} else {
- if (memcmp(ptr, val, len) == 0) {
+ if (ares_memeq(ptr, val, len)) {
return ARES_TRUE;
}
}
}
+
return ARES_FALSE;
}
-ares_status_t ares__buf_split(ares__buf_t *buf, const unsigned char *delims,
- size_t delims_len, ares__buf_split_t flags,
- size_t max_sections, ares__llist_t **list)
+ares_status_t ares_buf_split(ares_buf_t *buf, const unsigned char *delims,
+ size_t delims_len, ares_buf_split_t flags,
+ size_t max_sections, ares_array_t **arr)
{
ares_status_t status = ARES_SUCCESS;
ares_bool_t first = ARES_TRUE;
- if (buf == NULL || delims == NULL || delims_len == 0 || list == NULL) {
+ if (buf == NULL || delims == NULL || delims_len == 0 || arr == NULL) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- *list = ares__llist_create(ares__buf_destroy_cb);
- if (*list == NULL) {
+ *arr = ares_array_create(sizeof(ares_buf_t *), ares_buf_destroy_cb);
+ if (*arr == NULL) {
status = ARES_ENOMEM;
goto done;
}
- while (ares__buf_len(buf)) {
+ while (ares_buf_len(buf)) {
size_t len = 0;
const unsigned char *ptr;
if (first) {
/* No delimiter yet, just tag the start */
- ares__buf_tag(buf);
+ ares_buf_tag(buf);
} else {
- if (flags & ARES_BUF_SPLIT_DONT_CONSUME_DELIMS) {
+ if (flags & ARES_BUF_SPLIT_KEEP_DELIMS) {
/* tag then eat delimiter so its first byte in buffer */
- ares__buf_tag(buf);
- ares__buf_consume(buf, 1);
+ ares_buf_tag(buf);
+ ares_buf_consume(buf, 1);
} else {
/* throw away delimiter */
- ares__buf_consume(buf, 1);
- ares__buf_tag(buf);
+ ares_buf_consume(buf, 1);
+ ares_buf_tag(buf);
}
}
- if (max_sections && ares__llist_len(*list) >= max_sections - 1) {
- ares__buf_consume(buf, ares__buf_len(buf));
+ if (max_sections && ares_array_len(*arr) >= max_sections - 1) {
+ ares_buf_consume(buf, ares_buf_len(buf));
} else {
- ares__buf_consume_until_charset(buf, delims, delims_len, ARES_FALSE);
+ ares_buf_consume_until_charset(buf, delims, delims_len, ARES_FALSE);
}
- ptr = ares__buf_tag_fetch(buf, &len);
+ ptr = ares_buf_tag_fetch(buf, &len);
/* Shouldn't be possible */
if (ptr == NULL) {
@@ -832,7 +925,7 @@ ares_status_t ares__buf_split(ares__buf_t *buf, const unsigned char *delims,
if (flags & ARES_BUF_SPLIT_LTRIM) {
size_t i;
for (i = 0; i < len; i++) {
- if (!ares__is_whitespace(ptr[i], ARES_TRUE)) {
+ if (!ares_is_whitespace(ptr[i], ARES_TRUE)) {
break;
}
}
@@ -841,22 +934,22 @@ ares_status_t ares__buf_split(ares__buf_t *buf, const unsigned char *delims,
}
if (flags & ARES_BUF_SPLIT_RTRIM) {
- while (len > 0 && ares__is_whitespace(ptr[len - 1], ARES_TRUE)) {
+ while (len > 0 && ares_is_whitespace(ptr[len - 1], ARES_TRUE)) {
len--;
}
}
if (len != 0 || flags & ARES_BUF_SPLIT_ALLOW_BLANK) {
- ares__buf_t *data;
+ ares_buf_t *data;
if (!(flags & ARES_BUF_SPLIT_NO_DUPLICATES) ||
- !ares__buf_split_isduplicate(*list, ptr, len, flags)) {
+ !ares_buf_split_isduplicate(*arr, ptr, len, flags)) {
/* Since we don't allow const buffers of 0 length, and user wants
* 0-length buffers, swap what we do here */
if (len) {
- data = ares__buf_create_const(ptr, len);
+ data = ares_buf_create_const(ptr, len);
} else {
- data = ares__buf_create();
+ data = ares_buf_create();
}
if (data == NULL) {
@@ -864,9 +957,9 @@ ares_status_t ares__buf_split(ares__buf_t *buf, const unsigned char *delims,
goto done;
}
- if (ares__llist_insert_last(*list, data) == NULL) {
- ares__buf_destroy(data);
- status = ARES_ENOMEM;
+ status = ares_array_insertdata_last(*arr, &data);
+ if (status != ARES_SUCCESS) {
+ ares_buf_destroy(data);
goto done;
}
}
@@ -877,18 +970,110 @@ ares_status_t ares__buf_split(ares__buf_t *buf, const unsigned char *delims,
done:
if (status != ARES_SUCCESS) {
- ares__llist_destroy(*list);
- *list = NULL;
+ ares_array_destroy(*arr);
+ *arr = NULL;
}
return status;
}
-ares_bool_t ares__buf_begins_with(const ares__buf_t *buf,
- const unsigned char *data, size_t data_len)
+static void ares_free_split_array(void *arg)
+{
+ void **ptr = arg;
+ ares_free(*ptr);
+}
+
+ares_status_t ares_buf_split_str_array(ares_buf_t *buf,
+ const unsigned char *delims,
+ size_t delims_len,
+ ares_buf_split_t flags,
+ size_t max_sections, ares_array_t **arr)
+{
+ ares_status_t status;
+ ares_array_t *split = NULL;
+ size_t i;
+ size_t len;
+
+ if (arr == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ *arr = NULL;
+
+ status = ares_buf_split(buf, delims, delims_len, flags, max_sections, &split);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ *arr = ares_array_create(sizeof(char *), ares_free_split_array);
+ if (*arr == NULL) {
+ status = ARES_ENOMEM;
+ goto done;
+ }
+
+ len = ares_array_len(split);
+ for (i = 0; i < len; i++) {
+ ares_buf_t **bufptr = ares_array_at(split, i);
+ ares_buf_t *lbuf = *bufptr;
+ char *str = NULL;
+
+ status = ares_buf_fetch_str_dup(lbuf, ares_buf_len(lbuf), &str);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_array_insertdata_last(*arr, &str);
+ if (status != ARES_SUCCESS) {
+ ares_free(str);
+ goto done;
+ }
+ }
+
+done:
+ ares_array_destroy(split);
+ if (status != ARES_SUCCESS) {
+ ares_array_destroy(*arr);
+ *arr = NULL;
+ }
+ return status;
+}
+
+ares_status_t ares_buf_split_str(ares_buf_t *buf, const unsigned char *delims,
+ size_t delims_len, ares_buf_split_t flags,
+ size_t max_sections, char ***strs,
+ size_t *nstrs)
+{
+ ares_status_t status;
+ ares_array_t *arr = NULL;
+
+ if (strs == NULL || nstrs == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ *strs = NULL;
+ *nstrs = 0;
+
+ status = ares_buf_split_str_array(buf, delims, delims_len, flags,
+ max_sections, &arr);
+
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+done:
+ if (status == ARES_SUCCESS) {
+ *strs = ares_array_finish(arr, nstrs);
+ } else {
+ ares_array_destroy(arr);
+ }
+ return status;
+}
+
+ares_bool_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);
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
if (ptr == NULL || data == NULL || data_len == 0) {
return ARES_FALSE;
@@ -905,7 +1090,7 @@ ares_bool_t ares__buf_begins_with(const ares__buf_t *buf,
return ARES_TRUE;
}
-size_t ares__buf_len(const ares__buf_t *buf)
+size_t ares_buf_len(const ares_buf_t *buf)
{
if (buf == NULL) {
return 0;
@@ -914,12 +1099,28 @@ size_t ares__buf_len(const ares__buf_t *buf)
return buf->data_len - buf->offset;
}
-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)
{
- return ares__buf_fetch(buf, len);
+ return ares_buf_fetch(buf, len);
+}
+
+ares_status_t ares_buf_peek_byte(const ares_buf_t *buf, unsigned char *b)
+{
+ size_t remaining_len = 0;
+ const unsigned char *ptr = ares_buf_fetch(buf, &remaining_len);
+
+ if (buf == NULL || b == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (remaining_len == 0) {
+ return ARES_EBADRESP;
+ }
+ *b = ptr[0];
+ return ARES_SUCCESS;
}
-size_t ares__buf_get_position(const ares__buf_t *buf)
+size_t ares_buf_get_position(const ares_buf_t *buf)
{
if (buf == NULL) {
return 0;
@@ -927,7 +1128,7 @@ size_t ares__buf_get_position(const ares__buf_t *buf)
return buf->offset;
}
-ares_status_t ares__buf_set_position(ares__buf_t *buf, size_t idx)
+ares_status_t ares_buf_set_position(ares_buf_t *buf, size_t idx)
{
if (buf == NULL) {
return ARES_EFORMERR;
@@ -941,84 +1142,14 @@ ares_status_t ares__buf_set_position(ares__buf_t *buf, size_t idx)
return ARES_SUCCESS;
}
-ares_status_t ares__buf_parse_dns_abinstr(ares__buf_t *buf,
- size_t remaining_len,
- ares__dns_multistring_t **strs,
- ares_bool_t validate_printable)
-{
- unsigned char len;
- ares_status_t status = ARES_EBADRESP;
- size_t orig_len = ares__buf_len(buf);
-
- if (buf == NULL) {
- return ARES_EFORMERR;
- }
-
- if (remaining_len == 0) {
- return ARES_EBADRESP;
- }
-
- if (strs != NULL) {
- *strs = ares__dns_multistring_create();
- if (*strs == 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; /* LCOV_EXCL_LINE: DefensiveCoding */
- }
-
- if (len) {
- /* When used by the _str() parser, it really needs to be validated to
- * be a valid printable ascii string. Do that here */
- if (validate_printable && ares__buf_len(buf) >= len) {
- size_t mylen;
- const char *data = (const char *)ares__buf_peek(buf, &mylen);
- if (!ares__str_isprint(data, len)) {
- status = ARES_EBADSTR;
- break;
- }
- }
-
- if (strs != NULL) {
- unsigned char *data = NULL;
- status = ares__buf_fetch_bytes_dup(buf, len, ARES_TRUE, &data);
- if (status != ARES_SUCCESS) {
- break;
- }
- status = ares__dns_multistring_add_own(*strs, data, len);
- if (status != ARES_SUCCESS) {
- ares_free(data);
- break;
- }
- } else {
- status = ares__buf_consume(buf, len);
- if (status != ARES_SUCCESS) {
- break;
- }
- }
- }
- }
-
- if (status != ARES_SUCCESS && strs != NULL) {
- ares__dns_multistring_destroy(*strs);
- *strs = NULL;
- }
-
- return status;
-}
-
static ares_status_t
- ares__buf_parse_dns_binstr_int(ares__buf_t *buf, size_t remaining_len,
- unsigned char **bin, size_t *bin_len,
- ares_bool_t validate_printable)
+ ares_buf_parse_dns_binstr_int(ares_buf_t *buf, size_t remaining_len,
+ unsigned char **bin, size_t *bin_len,
+ ares_bool_t validate_printable)
{
unsigned char len;
ares_status_t status = ARES_EBADRESP;
- ares__buf_t *binbuf = NULL;
+ ares_buf_t *binbuf = NULL;
if (buf == NULL) {
return ARES_EFORMERR;
@@ -1028,12 +1159,12 @@ static ares_status_t
return ARES_EBADRESP;
}
- binbuf = ares__buf_create();
+ binbuf = ares_buf_create();
if (binbuf == NULL) {
return ARES_ENOMEM;
}
- status = ares__buf_fetch_bytes(buf, &len, 1);
+ status = ares_buf_fetch_bytes(buf, &len, 1);
if (status != ARES_SUCCESS) {
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
}
@@ -1048,32 +1179,32 @@ static ares_status_t
if (len) {
/* When used by the _str() parser, it really needs to be validated to
* be a valid printable ascii string. Do that here */
- if (validate_printable && ares__buf_len(buf) >= len) {
+ if (validate_printable && ares_buf_len(buf) >= len) {
size_t mylen;
- const char *data = (const char *)ares__buf_peek(buf, &mylen);
- if (!ares__str_isprint(data, len)) {
+ const char *data = (const char *)ares_buf_peek(buf, &mylen);
+ if (!ares_str_isprint(data, len)) {
status = ARES_EBADSTR;
goto done;
}
}
if (bin != NULL) {
- status = ares__buf_fetch_bytes_into_buf(buf, binbuf, len);
+ status = ares_buf_fetch_bytes_into_buf(buf, binbuf, len);
} else {
- status = ares__buf_consume(buf, len);
+ status = ares_buf_consume(buf, len);
}
}
done:
if (status != ARES_SUCCESS) {
- ares__buf_destroy(binbuf);
+ ares_buf_destroy(binbuf);
} else {
if (bin != NULL) {
size_t mylen = 0;
- /* NOTE: we use ares__buf_finish_str() here as we guarantee NULL
+ /* 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 = (unsigned char *)ares_buf_finish_str(binbuf, &mylen);
*bin_len = mylen;
}
}
@@ -1081,32 +1212,32 @@ done:
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_status_t ares_buf_parse_dns_binstr(ares_buf_t *buf, size_t remaining_len,
+ unsigned char **bin, size_t *bin_len)
{
- return ares__buf_parse_dns_binstr_int(buf, remaining_len, bin, bin_len,
- ARES_FALSE);
+ return ares_buf_parse_dns_binstr_int(buf, remaining_len, bin, bin_len,
+ ARES_FALSE);
}
-ares_status_t ares__buf_parse_dns_str(ares__buf_t *buf, size_t remaining_len,
- char **str)
+ares_status_t ares_buf_parse_dns_str(ares_buf_t *buf, size_t remaining_len,
+ char **str)
{
size_t len;
- return ares__buf_parse_dns_binstr_int(buf, remaining_len,
- (unsigned char **)str, &len, ARES_TRUE);
+ return ares_buf_parse_dns_binstr_int(buf, remaining_len,
+ (unsigned char **)str, &len, ARES_TRUE);
}
-ares_status_t ares__buf_append_num_dec(ares__buf_t *buf, size_t num, size_t len)
+ares_status_t ares_buf_append_num_dec(ares_buf_t *buf, size_t num, size_t len)
{
size_t i;
size_t mod;
if (len == 0) {
- len = ares__count_digits(num);
+ len = ares_count_digits(num);
}
- mod = ares__pow(10, len);
+ mod = ares_pow(10, len);
for (i = len; i > 0; i--) {
size_t digit = (num % mod);
@@ -1120,7 +1251,7 @@ ares_status_t ares__buf_append_num_dec(ares__buf_t *buf, size_t num, size_t len)
}
digit /= mod;
- status = ares__buf_append_byte(buf, '0' + (unsigned char)(digit & 0xFF));
+ status = ares_buf_append_byte(buf, '0' + (unsigned char)(digit & 0xFF));
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1128,18 +1259,18 @@ ares_status_t ares__buf_append_num_dec(ares__buf_t *buf, size_t num, size_t len)
return ARES_SUCCESS;
}
-ares_status_t ares__buf_append_num_hex(ares__buf_t *buf, size_t num, size_t len)
+ares_status_t ares_buf_append_num_hex(ares_buf_t *buf, size_t num, size_t len)
{
size_t i;
static const unsigned char hexbytes[] = "0123456789ABCDEF";
if (len == 0) {
- len = ares__count_hexdigits(num);
+ len = ares_count_hexdigits(num);
}
for (i = len; i > 0; i--) {
ares_status_t status;
- status = ares__buf_append_byte(buf, hexbytes[(num >> ((i - 1) * 4)) & 0xF]);
+ status = ares_buf_append_byte(buf, hexbytes[(num >> ((i - 1) * 4)) & 0xF]);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1147,48 +1278,48 @@ ares_status_t ares__buf_append_num_hex(ares__buf_t *buf, size_t num, size_t len)
return ARES_SUCCESS;
}
-ares_status_t ares__buf_append_str(ares__buf_t *buf, const char *str)
+ares_status_t ares_buf_append_str(ares_buf_t *buf, const char *str)
{
- return ares__buf_append(buf, (const unsigned char *)str, ares_strlen(str));
+ return ares_buf_append(buf, (const unsigned char *)str, ares_strlen(str));
}
-static ares_status_t ares__buf_hexdump_line(ares__buf_t *buf, size_t idx,
- const unsigned char *data,
- size_t len)
+static ares_status_t ares_buf_hexdump_line(ares_buf_t *buf, size_t idx,
+ const unsigned char *data,
+ size_t len)
{
size_t i;
ares_status_t status;
/* Address */
- status = ares__buf_append_num_hex(buf, idx, 6);
+ status = ares_buf_append_num_hex(buf, idx, 6);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
/* | */
- status = ares__buf_append_str(buf, " | ");
+ status = ares_buf_append_str(buf, " | ");
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
for (i = 0; i < 16; i++) {
if (i >= len) {
- status = ares__buf_append_str(buf, " ");
+ status = ares_buf_append_str(buf, " ");
} else {
- status = ares__buf_append_num_hex(buf, data[i], 2);
+ status = ares_buf_append_num_hex(buf, data[i], 2);
}
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__buf_append_byte(buf, ' ');
+ status = ares_buf_append_byte(buf, ' ');
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
/* | */
- status = ares__buf_append_str(buf, " | ");
+ status = ares_buf_append_str(buf, " | ");
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1197,24 +1328,24 @@ static ares_status_t ares__buf_hexdump_line(ares__buf_t *buf, size_t idx,
if (i >= len) {
break;
}
- status = ares__buf_append_byte(buf, ares__isprint(data[i]) ? data[i] : '.');
+ status = ares_buf_append_byte(buf, ares_isprint(data[i]) ? data[i] : '.');
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
- return ares__buf_append_byte(buf, '\n');
+ return ares_buf_append_byte(buf, '\n');
}
-ares_status_t ares__buf_hexdump(ares__buf_t *buf, const unsigned char *data,
- size_t len)
+ares_status_t ares_buf_hexdump(ares_buf_t *buf, const unsigned char *data,
+ size_t len)
{
size_t i;
/* Each line is 16 bytes */
for (i = 0; i < len; i += 16) {
ares_status_t status;
- status = ares__buf_hexdump_line(buf, i, data + i, len - i);
+ status = ares_buf_hexdump_line(buf, i, data + i, len - i);
if (status != ARES_SUCCESS) {
return status; /* LCOV_EXCL_LINE: OutOfMemory */
}
@@ -1223,7 +1354,7 @@ ares_status_t ares__buf_hexdump(ares__buf_t *buf, const unsigned char *data,
return ARES_SUCCESS;
}
-ares_status_t ares__buf_load_file(const char *filename, ares__buf_t *buf)
+ares_status_t ares_buf_load_file(const char *filename, ares_buf_t *buf)
{
FILE *fp = NULL;
unsigned char *ptr = NULL;
@@ -1238,7 +1369,7 @@ ares_status_t ares__buf_load_file(const char *filename, ares__buf_t *buf)
fp = fopen(filename, "rb");
if (fp == NULL) {
- int error = ERRNO;
+ int error = errno;
switch (error) {
case ENOENT:
case ESRCH:
@@ -1278,7 +1409,7 @@ ares_status_t ares__buf_load_file(const char *filename, ares__buf_t *buf)
/* Read entire data into buffer */
ptr_len = len;
- ptr = ares__buf_append_start(buf, &ptr_len);
+ ptr = ares_buf_append_start(buf, &ptr_len);
if (ptr == NULL) {
status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
goto done; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -1290,7 +1421,7 @@ ares_status_t ares__buf_load_file(const char *filename, ares__buf_t *buf)
goto done; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- ares__buf_append_finish(buf, len);
+ ares_buf_append_finish(buf, len);
status = ARES_SUCCESS;
done:
diff --git a/contrib/libs/c-ares/src/lib/str/ares_str.c b/contrib/libs/c-ares/src/lib/str/ares_str.c
index ade61041eb..f6bfabf11f 100644
--- a/contrib/libs/c-ares/src/lib/str/ares_str.c
+++ b/contrib/libs/c-ares/src/lib/str/ares_str.c
@@ -101,14 +101,30 @@ ares_bool_t ares_str_isnum(const char *str)
}
for (i = 0; str[i] != 0; i++) {
- if (str[i] < '0' || str[i] > '9') {
+ if (!ares_isdigit(str[i])) {
return ARES_FALSE;
}
}
return ARES_TRUE;
}
-void ares__str_rtrim(char *str)
+ares_bool_t ares_str_isalnum(const char *str)
+{
+ size_t i;
+
+ if (str == NULL || *str == 0) {
+ return ARES_FALSE;
+ }
+
+ for (i = 0; str[i] != 0; i++) {
+ if (!ares_isdigit(str[i]) && !ares_isalpha(str[i])) {
+ return ARES_FALSE;
+ }
+ }
+ return ARES_TRUE;
+}
+
+void ares_str_rtrim(char *str)
{
size_t len;
size_t i;
@@ -119,14 +135,14 @@ void ares__str_rtrim(char *str)
len = ares_strlen(str);
for (i = len; i > 0; i--) {
- if (!ares__isspace(str[i - 1])) {
+ if (!ares_isspace(str[i - 1])) {
break;
}
}
str[i] = 0;
}
-void ares__str_ltrim(char *str)
+void ares_str_ltrim(char *str)
{
size_t i;
size_t len;
@@ -135,7 +151,7 @@ void ares__str_ltrim(char *str)
return; /* LCOV_EXCL_LINE: DefensiveCoding */
}
- for (i = 0; str[i] != 0 && ares__isspace(str[i]); i++) {
+ for (i = 0; str[i] != 0 && ares_isspace(str[i]); i++) {
/* Do nothing */
}
@@ -150,15 +166,15 @@ void ares__str_ltrim(char *str)
str[len - i] = 0;
}
-void ares__str_trim(char *str)
+void ares_str_trim(char *str)
{
- ares__str_ltrim(str);
- ares__str_rtrim(str);
+ ares_str_ltrim(str);
+ ares_str_rtrim(str);
}
/* tolower() is locale-specific. Use a lookup table fast conversion that only
* operates on ASCII */
-static const unsigned char ares__tolower_lookup[] = {
+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,
@@ -181,81 +197,80 @@ static const unsigned char ares__tolower_lookup[] = {
0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
};
-unsigned char ares__tolower(unsigned char c)
+unsigned char ares_tolower(unsigned char c)
{
- return ares__tolower_lookup[c];
+ return ares_tolower_lookup[c];
}
-ares_bool_t ares__memeq_ci(const unsigned char *ptr, const unsigned char *val,
- size_t len)
+void ares_str_lower(char *str)
{
size_t i;
- for (i = 0; i < len; i++) {
- if (ares__tolower_lookup[ptr[i]] != ares__tolower_lookup[val[i]]) {
- return ARES_FALSE;
- }
+
+ if (str == NULL) {
+ return;
+ }
+
+ for (i = 0; str[i] != 0; i++) {
+ str[i] = (char)ares_tolower((unsigned char)str[i]);
}
- return ARES_TRUE;
}
-ares_bool_t ares__isspace(int ch)
+unsigned char *ares_memmem(const unsigned char *big, size_t big_len,
+ const unsigned char *little, size_t little_len)
{
- switch (ch) {
- case '\r':
- case '\t':
- case ' ':
- case '\v':
- case '\f':
- case '\n':
- return ARES_TRUE;
- default:
+ unsigned char *ptr;
+
+ if (big == NULL || little == NULL || big_len == 0 || little_len == 0) {
+ return NULL;
+ }
+
+#ifdef HAVE_MEMMEM
+ ptr = memmem(big, big_len, little, little_len);
+ return ptr;
+#else
+ while (1) {
+ ptr = memchr(big, little[0], big_len);
+ if (ptr == NULL) {
+ break;
+ }
+
+ big_len -= (size_t)(ptr - big);
+ big = ptr;
+ if (big_len < little_len) {
break;
+ }
+
+ if (memcmp(big, little, little_len) == 0) {
+ return ptr;
+ }
+
+ big++;
+ big_len--;
}
- return ARES_FALSE;
+
+ return NULL;
+#endif
}
-ares_bool_t ares__isprint(int ch)
+ares_bool_t ares_memeq(const unsigned char *ptr, const unsigned char *val,
+ size_t len)
{
- if (ch >= 0x20 && ch <= 0x7E) {
- return ARES_TRUE;
- }
- return ARES_FALSE;
+ return memcmp(ptr, val, len) == 0 ? ARES_TRUE : 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). */
-ares_bool_t ares__is_hostnamech(int ch)
+ares_bool_t ares_memeq_ci(const unsigned char *ptr, const unsigned char *val,
+ size_t len)
{
- /* [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;
+ size_t i;
+ for (i = 0; i < len; i++) {
+ if (ares_tolower_lookup[ptr[i]] != ares_tolower_lookup[val[i]]) {
+ return ARES_FALSE;
+ }
}
-
- return ARES_FALSE;
+ return ARES_TRUE;
}
-ares_bool_t ares__is_hostname(const char *str)
+ares_bool_t ares_is_hostname(const char *str)
{
size_t i;
@@ -264,14 +279,14 @@ ares_bool_t ares__is_hostname(const char *str)
}
for (i = 0; str[i] != 0; i++) {
- if (!ares__is_hostnamech(str[i])) {
+ if (!ares_is_hostnamech(str[i])) {
return ARES_FALSE;
}
}
return ARES_TRUE;
}
-ares_bool_t ares__str_isprint(const char *str, size_t len)
+ares_bool_t ares_str_isprint(const char *str, size_t len)
{
size_t i;
@@ -280,9 +295,197 @@ ares_bool_t ares__str_isprint(const char *str, size_t len)
}
for (i = 0; i < len; i++) {
- if (!ares__isprint(str[i])) {
+ if (!ares_isprint(str[i])) {
return ARES_FALSE;
}
}
return ARES_TRUE;
}
+
+int ares_strcmp(const char *a, const char *b)
+{
+ if (a == NULL && b == NULL) {
+ return 0;
+ }
+
+ if (a != NULL && b == NULL) {
+ if (*a == 0) {
+ return 0;
+ }
+ return 1;
+ }
+
+ if (a == NULL && b != NULL) {
+ if (*b == 0) {
+ return 0;
+ }
+ return -1;
+ }
+
+ return strcmp(a, b);
+}
+
+int ares_strncmp(const char *a, const char *b, size_t n)
+{
+ if (n == 0) {
+ return 0;
+ }
+
+ if (a == NULL && b == NULL) {
+ return 0;
+ }
+
+ if (a != NULL && b == NULL) {
+ if (*a == 0) {
+ return 0;
+ }
+ return 1;
+ }
+
+ if (a == NULL && b != NULL) {
+ if (*b == 0) {
+ return 0;
+ }
+ return -1;
+ }
+
+ return strncmp(a, b, n);
+}
+
+int ares_strcasecmp(const char *a, const char *b)
+{
+ if (a == NULL && b == NULL) {
+ return 0;
+ }
+
+ if (a != NULL && b == NULL) {
+ if (*a == 0) {
+ return 0;
+ }
+ return 1;
+ }
+
+ if (a == NULL && b != NULL) {
+ if (*b == 0) {
+ return 0;
+ }
+ return -1;
+ }
+
+#if defined(HAVE_STRCASECMP)
+ return strcasecmp(a, b);
+#elif defined(HAVE_STRCMPI)
+ return strcmpi(a, b);
+#elif defined(HAVE_STRICMP)
+ return stricmp(a, b);
+#else
+ {
+ size_t i;
+
+ for (i = 0; i < (size_t)-1; i++) {
+ int c1 = ares_tolower(a[i]);
+ int c2 = ares_tolower(b[i]);
+ if (c1 != c2) {
+ return c1 - c2;
+ }
+ if (!c1) {
+ break;
+ }
+ }
+ }
+ return 0;
+#endif
+}
+
+int ares_strncasecmp(const char *a, const char *b, size_t n)
+{
+ if (n == 0) {
+ return 0;
+ }
+
+ if (a == NULL && b == NULL) {
+ return 0;
+ }
+
+ if (a != NULL && b == NULL) {
+ if (*a == 0) {
+ return 0;
+ }
+ return 1;
+ }
+
+ if (a == NULL && b != NULL) {
+ if (*b == 0) {
+ return 0;
+ }
+ return -1;
+ }
+
+#if defined(HAVE_STRNCASECMP)
+ return strncasecmp(a, b, n);
+#elif defined(HAVE_STRNCMPI)
+ return strncmpi(a, b, n);
+#elif defined(HAVE_STRNICMP)
+ return strnicmp(a, b, n);
+#else
+ {
+ size_t i;
+
+ for (i = 0; i < n; i++) {
+ int c1 = ares_tolower(a[i]);
+ int c2 = ares_tolower(b[i]);
+ if (c1 != c2) {
+ return c1 - c2;
+ }
+ if (!c1) {
+ break;
+ }
+ }
+ }
+ return 0;
+#endif
+}
+
+ares_bool_t ares_strcaseeq(const char *a, const char *b)
+{
+ return ares_strcasecmp(a, b) == 0 ? ARES_TRUE : ARES_FALSE;
+}
+
+ares_bool_t ares_strcaseeq_max(const char *a, const char *b, size_t n)
+{
+ return ares_strncasecmp(a, b, n) == 0 ? ARES_TRUE : ARES_FALSE;
+}
+
+ares_bool_t ares_streq(const char *a, const char *b)
+{
+ return ares_strcmp(a, b) == 0 ? ARES_TRUE : ARES_FALSE;
+}
+
+ares_bool_t ares_streq_max(const char *a, const char *b, size_t n)
+{
+ return ares_strncmp(a, b, n) == 0 ? ARES_TRUE : ARES_FALSE;
+}
+
+void ares_free_array(void *arrp, size_t nmembers, void (*freefunc)(void *))
+{
+ size_t i;
+ void **arr = arrp;
+
+ if (arr == NULL) {
+ return;
+ }
+
+ if (freefunc != NULL) {
+ if (nmembers == SIZE_MAX) {
+ for (i = 0; arr[i] != NULL; i++) {
+ freefunc(arr[i]);
+ }
+ } else {
+ for (i = 0; i < nmembers; i++) {
+ freefunc(arr[i]);
+ }
+ }
+ }
+
+ ares_free(arr);
+}
diff --git a/contrib/libs/c-ares/src/lib/str/ares_str.h b/contrib/libs/c-ares/src/lib/str/ares_str.h
deleted file mode 100644
index 440758c21b..0000000000
--- a/contrib/libs/c-ares/src/lib/str/ares_str.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* MIT License
- *
- * Copyright (c) 1998 Massachusetts Institute of Technology
- * Copyright (c) The c-ares project and its contributors
- *
- * 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_STR_H
-#define __ARES_STR_H
-
-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);
-
-ares_bool_t ares_str_isnum(const char *str);
-
-void ares__str_ltrim(char *str);
-void ares__str_rtrim(char *str);
-void ares__str_trim(char *str);
-
-unsigned char ares__tolower(unsigned char c);
-ares_bool_t ares__memeq_ci(const unsigned char *ptr, const unsigned char *val,
- size_t len);
-
-ares_bool_t ares__isspace(int ch);
-ares_bool_t ares__isprint(int ch);
-ares_bool_t ares__is_hostnamech(int ch);
-
-ares_bool_t ares__is_hostname(const char *str);
-
-/*! Validate the string provided is printable. The length specified must be
- * at least the size of the buffer provided. If a NULL-terminator is hit
- * before the length provided is hit, this will not be considered a valid
- * printable string. This does not validate that the string is actually
- * NULL terminated.
- *
- * \param[in] str Buffer containing string to evaluate.
- * \param[in] len Number of characters to evaluate within provided buffer.
- * If 0, will return TRUE since it did not hit an exception.
- * \return ARES_TRUE if the entire string is printable, ARES_FALSE if not.
- */
-ares_bool_t ares__str_isprint(const char *str, size_t len);
-
-/* We only care about ASCII rules */
-#define ares__isascii(x) (((unsigned char)x) <= 127)
-#define ares__isdigit(x) \
- (((unsigned char)x) >= '0' && ((unsigned char)x) <= '9')
-#define ares__isxdigit(x) \
- (ares__isdigit(x) || \
- (((unsigned char)x) >= 'a' && ((unsigned char)x) <= 'f') || \
- (((unsigned char)x) >= 'A' && ((unsigned char)x) <= 'F'))
-#define ares__isupper(x) \
- (((unsigned char)x) >= 'A' && ((unsigned char)x) <= 'Z')
-#define ares__islower(x) \
- (((unsigned char)x) >= 'a' && ((unsigned char)x) <= 'z')
-#define ares__isalpha(x) (ares__islower(x) || ares__isupper(x))
-
-#endif /* __ARES_STR_H */
diff --git a/contrib/libs/c-ares/src/lib/str/ares_strsplit.c b/contrib/libs/c-ares/src/lib/str/ares_strsplit.c
index dee307d779..4431c5044d 100644
--- a/contrib/libs/c-ares/src/lib/str/ares_strsplit.c
+++ b/contrib/libs/c-ares/src/lib/str/ares_strsplit.c
@@ -25,21 +25,12 @@
*/
#include "ares_private.h"
-void ares__strsplit_free(char **elms, size_t num_elm)
+void ares_strsplit_free(char **elms, size_t num_elm)
{
- size_t i;
-
- if (elms == NULL) {
- return;
- }
-
- for (i = 0; i < num_elm; i++) {
- ares_free(elms[i]);
- }
- ares_free(elms);
+ ares_free_array(elms, num_elm, ares_free);
}
-char **ares__strsplit_duplicate(char **elms, size_t num_elm)
+char **ares_strsplit_duplicate(char **elms, size_t num_elm)
{
size_t i;
char **out;
@@ -56,23 +47,19 @@ char **ares__strsplit_duplicate(char **elms, size_t num_elm)
for (i = 0; i < num_elm; i++) {
out[i] = ares_strdup(elms[i]);
if (out[i] == NULL) {
- ares__strsplit_free(out, num_elm); /* LCOV_EXCL_LINE: OutOfMemory */
- return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
+ ares_strsplit_free(out, num_elm); /* LCOV_EXCL_LINE: OutOfMemory */
+ return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
}
}
return out;
}
-char **ares__strsplit(const char *in, const char *delms, size_t *num_elm)
+char **ares_strsplit(const char *in, const char *delms, size_t *num_elm)
{
- ares_status_t status;
- ares__buf_t *buf = NULL;
- ares__llist_t *llist = NULL;
- ares__llist_node_t *node;
- char **out = NULL;
- size_t cnt = 0;
- size_t idx = 0;
+ ares_status_t status;
+ ares_buf_t *buf = NULL;
+ char **out = NULL;
if (in == NULL || delms == NULL || num_elm == NULL) {
return NULL; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -80,52 +67,22 @@ char **ares__strsplit(const char *in, const char *delms, size_t *num_elm)
*num_elm = 0;
- buf = ares__buf_create_const((const unsigned char *)in, ares_strlen(in));
+ buf = ares_buf_create_const((const unsigned char *)in, ares_strlen(in));
if (buf == NULL) {
return NULL;
}
- status = ares__buf_split(
+ status = ares_buf_split_str(
buf, (const unsigned char *)delms, ares_strlen(delms),
- ARES_BUF_SPLIT_NO_DUPLICATES | ARES_BUF_SPLIT_CASE_INSENSITIVE, 0, &llist);
+ ARES_BUF_SPLIT_NO_DUPLICATES | ARES_BUF_SPLIT_CASE_INSENSITIVE, 0, &out,
+ num_elm);
if (status != ARES_SUCCESS) {
goto done;
}
- cnt = ares__llist_len(llist);
- if (cnt == 0) {
- status = ARES_EFORMERR;
- goto done;
- }
-
-
- out = ares_malloc_zero(cnt * sizeof(*out));
- if (out == NULL) {
- status = ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
- goto done; /* LCOV_EXCL_LINE: OutOfMemory */
- }
-
- for (node = ares__llist_node_first(llist); node != NULL;
- node = ares__llist_node_next(node)) {
- ares__buf_t *val = ares__llist_node_val(node);
- char *temp = NULL;
-
- status = ares__buf_fetch_str_dup(val, ares__buf_len(val), &temp);
- if (status != ARES_SUCCESS) {
- goto done;
- }
-
- out[idx++] = temp;
- }
-
- *num_elm = cnt;
- status = ARES_SUCCESS;
-
done:
- ares__llist_destroy(llist);
- ares__buf_destroy(buf);
+ ares_buf_destroy(buf);
if (status != ARES_SUCCESS) {
- ares__strsplit_free(out, cnt);
out = NULL;
}
diff --git a/contrib/libs/c-ares/src/lib/str/ares_strsplit.h b/contrib/libs/c-ares/src/lib/str/ares_strsplit.h
index ee997804f0..0da090263a 100644
--- a/contrib/libs/c-ares/src/lib/str/ares_strsplit.h
+++ b/contrib/libs/c-ares/src/lib/str/ares_strsplit.h
@@ -40,12 +40,12 @@
* returns an allocated array of allocated string elements.
*
*/
-char **ares__strsplit(const char *in, const char *delms, size_t *num_elm);
+char **ares_strsplit(const char *in, const char *delms, size_t *num_elm);
-/* Frees the result returned from ares__strsplit(). */
-void ares__strsplit_free(char **elms, size_t num_elm);
+/* Frees the result returned from ares_strsplit(). */
+void ares_strsplit_free(char **elms, size_t num_elm);
/* Duplicate the array */
-char **ares__strsplit_duplicate(char **elms, size_t num_elm);
+char **ares_strsplit_duplicate(char **elms, size_t num_elm);
#endif /* HEADER_CARES_STRSPLIT_H */
diff --git a/contrib/libs/c-ares/src/lib/util/ares__threads.h b/contrib/libs/c-ares/src/lib/util/ares__threads.h
deleted file mode 100644
index 108354dfc1..0000000000
--- a/contrib/libs/c-ares/src/lib/util/ares__threads.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* 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__THREADS_H
-#define __ARES__THREADS_H
-
-struct ares__thread_mutex;
-typedef struct ares__thread_mutex ares__thread_mutex_t;
-
-ares__thread_mutex_t *ares__thread_mutex_create(void);
-void ares__thread_mutex_destroy(ares__thread_mutex_t *mut);
-void ares__thread_mutex_lock(ares__thread_mutex_t *mut);
-void ares__thread_mutex_unlock(ares__thread_mutex_t *mut);
-
-
-struct ares__thread_cond;
-typedef struct ares__thread_cond ares__thread_cond_t;
-
-ares__thread_cond_t *ares__thread_cond_create(void);
-void ares__thread_cond_destroy(ares__thread_cond_t *cond);
-void ares__thread_cond_signal(ares__thread_cond_t *cond);
-void ares__thread_cond_broadcast(ares__thread_cond_t *cond);
-ares_status_t ares__thread_cond_wait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut);
-ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut,
- unsigned long timeout_ms);
-
-
-struct ares__thread;
-typedef struct ares__thread ares__thread_t;
-
-typedef void *(*ares__thread_func_t)(void *arg);
-ares_status_t ares__thread_create(ares__thread_t **thread,
- ares__thread_func_t func, void *arg);
-ares_status_t ares__thread_join(ares__thread_t *thread, void **rv);
-
-#endif
diff --git a/contrib/libs/c-ares/src/lib/util/ares__iface_ips.c b/contrib/libs/c-ares/src/lib/util/ares_iface_ips.c
index 56dc257904..46cb291e30 100644
--- a/contrib/libs/c-ares/src/lib/util/ares__iface_ips.c
+++ b/contrib/libs/c-ares/src/lib/util/ares_iface_ips.c
@@ -59,41 +59,40 @@
#endif
-static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
- const char *name);
+static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips,
+ const char *name);
typedef struct {
- char *name;
- struct ares_addr addr;
- unsigned char netmask;
- unsigned int ll_scope;
- ares__iface_ip_flags_t flags;
-} ares__iface_ip_t;
-
-struct ares__iface_ips {
- ares__array_t *ips; /*!< Type is ares__iface_ip_t */
- ares__iface_ip_flags_t enum_flags;
+ char *name;
+ struct ares_addr addr;
+ unsigned char netmask;
+ unsigned int ll_scope;
+ ares_iface_ip_flags_t flags;
+} ares_iface_ip_t;
+
+struct ares_iface_ips {
+ ares_array_t *ips; /*!< Type is ares_iface_ip_t */
+ ares_iface_ip_flags_t enum_flags;
};
-static void ares__iface_ip_free_cb(void *arg)
+static void ares_iface_ip_free_cb(void *arg)
{
- ares__iface_ip_t *ip = arg;
+ ares_iface_ip_t *ip = arg;
if (ip == NULL) {
return;
}
ares_free(ip->name);
}
-static ares__iface_ips_t *ares__iface_ips_alloc(ares__iface_ip_flags_t flags)
+static ares_iface_ips_t *ares_iface_ips_alloc(ares_iface_ip_flags_t flags)
{
- ares__iface_ips_t *ips = ares_malloc_zero(sizeof(*ips));
+ ares_iface_ips_t *ips = ares_malloc_zero(sizeof(*ips));
if (ips == NULL) {
return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
}
ips->enum_flags = flags;
- ips->ips =
- ares__array_create(sizeof(ares__iface_ip_t), ares__iface_ip_free_cb);
+ ips->ips = ares_array_create(sizeof(ares_iface_ip_t), ares_iface_ip_free_cb);
if (ips->ips == NULL) {
ares_free(ips); /* LCOV_EXCL_LINE: OutOfMemory */
return NULL; /* LCOV_EXCL_LINE: OutOfMemory */
@@ -101,18 +100,18 @@ static ares__iface_ips_t *ares__iface_ips_alloc(ares__iface_ip_flags_t flags)
return ips;
}
-void ares__iface_ips_destroy(ares__iface_ips_t *ips)
+void ares_iface_ips_destroy(ares_iface_ips_t *ips)
{
if (ips == NULL) {
return;
}
- ares__array_destroy(ips->ips);
+ ares_array_destroy(ips->ips);
ares_free(ips);
}
-ares_status_t ares__iface_ips(ares__iface_ips_t **ips,
- ares__iface_ip_flags_t flags, const char *name)
+ares_status_t ares_iface_ips(ares_iface_ips_t **ips,
+ ares_iface_ip_flags_t flags, const char *name)
{
ares_status_t status;
@@ -120,15 +119,15 @@ ares_status_t ares__iface_ips(ares__iface_ips_t **ips,
return ARES_EFORMERR;
}
- *ips = ares__iface_ips_alloc(flags);
+ *ips = ares_iface_ips_alloc(flags);
if (*ips == NULL) {
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
- status = ares__iface_ips_enumerate(*ips, name);
+ status = ares_iface_ips_enumerate(*ips, name);
if (status != ARES_SUCCESS) {
/* LCOV_EXCL_START: UntestablePath */
- ares__iface_ips_destroy(*ips);
+ ares_iface_ips_destroy(*ips);
*ips = NULL;
return status;
/* LCOV_EXCL_STOP */
@@ -138,12 +137,12 @@ ares_status_t ares__iface_ips(ares__iface_ips_t **ips,
}
static ares_status_t
- ares__iface_ips_add(ares__iface_ips_t *ips, ares__iface_ip_flags_t flags,
- const char *name, const struct ares_addr *addr,
- unsigned char netmask, unsigned int ll_scope)
+ ares_iface_ips_add(ares_iface_ips_t *ips, ares_iface_ip_flags_t flags,
+ const char *name, const struct ares_addr *addr,
+ unsigned char netmask, unsigned int ll_scope)
{
- ares__iface_ip_t *ip;
- ares_status_t status;
+ ares_iface_ip_t *ip;
+ ares_status_t status;
if (ips == NULL || name == NULL || addr == NULL) {
return ARES_EFORMERR; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -162,7 +161,7 @@ static ares_status_t
}
/* Check for link-local */
- if (ares__addr_is_linklocal(addr)) {
+ if (ares_addr_is_linklocal(addr)) {
flags |= ARES_IFACE_IP_LINKLOCAL;
}
if (flags & ARES_IFACE_IP_LINKLOCAL &&
@@ -190,7 +189,7 @@ static ares_status_t
}
}
- status = ares__array_insert_last((void **)&ip, ips->ips);
+ status = ares_array_insert_last((void **)&ip, ips->ips);
if (status != ARES_SUCCESS) {
return status;
}
@@ -203,30 +202,30 @@ static ares_status_t
memcpy(&ip->addr, addr, sizeof(*addr));
ip->name = ares_strdup(name);
if (ip->name == NULL) {
- ares__array_remove_last(ips->ips);
+ ares_array_remove_last(ips->ips);
return ARES_ENOMEM; /* LCOV_EXCL_LINE: OutOfMemory */
}
return ARES_SUCCESS;
}
-size_t ares__iface_ips_cnt(const ares__iface_ips_t *ips)
+size_t ares_iface_ips_cnt(const ares_iface_ips_t *ips)
{
if (ips == NULL) {
return 0;
}
- return ares__array_len(ips->ips);
+ return ares_array_len(ips->ips);
}
-const char *ares__iface_ips_get_name(const ares__iface_ips_t *ips, size_t idx)
+const char *ares_iface_ips_get_name(const ares_iface_ips_t *ips, size_t idx)
{
- const ares__iface_ip_t *ip;
+ const ares_iface_ip_t *ip;
if (ips == NULL) {
return NULL;
}
- ip = ares__array_at_const(ips->ips, idx);
+ ip = ares_array_at_const(ips->ips, idx);
if (ip == NULL) {
return NULL;
}
@@ -234,16 +233,16 @@ const char *ares__iface_ips_get_name(const ares__iface_ips_t *ips, size_t idx)
return ip->name;
}
-const struct ares_addr *ares__iface_ips_get_addr(const ares__iface_ips_t *ips,
- size_t idx)
+const struct ares_addr *ares_iface_ips_get_addr(const ares_iface_ips_t *ips,
+ size_t idx)
{
- const ares__iface_ip_t *ip;
+ const ares_iface_ip_t *ip;
if (ips == NULL) {
return NULL;
}
- ip = ares__array_at_const(ips->ips, idx);
+ ip = ares_array_at_const(ips->ips, idx);
if (ip == NULL) {
return NULL;
}
@@ -251,16 +250,16 @@ const struct ares_addr *ares__iface_ips_get_addr(const ares__iface_ips_t *ips,
return &ip->addr;
}
-ares__iface_ip_flags_t ares__iface_ips_get_flags(const ares__iface_ips_t *ips,
- size_t idx)
+ares_iface_ip_flags_t ares_iface_ips_get_flags(const ares_iface_ips_t *ips,
+ size_t idx)
{
- const ares__iface_ip_t *ip;
+ const ares_iface_ip_t *ip;
if (ips == NULL) {
return 0;
}
- ip = ares__array_at_const(ips->ips, idx);
+ ip = ares_array_at_const(ips->ips, idx);
if (ip == NULL) {
return 0;
}
@@ -268,16 +267,16 @@ ares__iface_ip_flags_t ares__iface_ips_get_flags(const ares__iface_ips_t *ips,
return ip->flags;
}
-unsigned char ares__iface_ips_get_netmask(const ares__iface_ips_t *ips,
- size_t idx)
+unsigned char ares_iface_ips_get_netmask(const ares_iface_ips_t *ips,
+ size_t idx)
{
- const ares__iface_ip_t *ip;
+ const ares_iface_ip_t *ip;
if (ips == NULL) {
return 0;
}
- ip = ares__array_at_const(ips->ips, idx);
+ ip = ares_array_at_const(ips->ips, idx);
if (ip == NULL) {
return 0;
}
@@ -285,16 +284,16 @@ unsigned char ares__iface_ips_get_netmask(const ares__iface_ips_t *ips,
return ip->netmask;
}
-unsigned int ares__iface_ips_get_ll_scope(const ares__iface_ips_t *ips,
- size_t idx)
+unsigned int ares_iface_ips_get_ll_scope(const ares_iface_ips_t *ips,
+ size_t idx)
{
- const ares__iface_ip_t *ip;
+ const ares_iface_ip_t *ip;
if (ips == NULL) {
return 0;
}
- ip = ares__array_at_const(ips->ips, idx);
+ ip = ares_array_at_const(ips->ips, idx);
if (ip == NULL) {
return 0;
}
@@ -334,7 +333,7 @@ static ares_bool_t name_match(const char *name, const char *adapter_name,
return ARES_TRUE;
}
- if (strcasecmp(name, adapter_name) == 0) {
+ if (ares_strcaseeq(name, adapter_name)) {
return ARES_TRUE;
}
@@ -345,8 +344,8 @@ static ares_bool_t name_match(const char *name, const char *adapter_name,
return ARES_FALSE;
}
-static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
- const char *name)
+static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips,
+ const char *name)
{
ULONG myflags = GAA_FLAG_INCLUDE_PREFIX /*|GAA_FLAG_INCLUDE_ALL_INTERFACES */;
ULONG outBufLen = 0;
@@ -377,7 +376,7 @@ static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
for (address = addresses; address != NULL; address = address->Next) {
IP_ADAPTER_UNICAST_ADDRESS *ipaddr = NULL;
- ares__iface_ip_flags_t addrflag = 0;
+ ares_iface_ip_flags_t addrflag = 0;
char ifname[64] = "";
# if defined(HAVE_CONVERTINTERFACEINDEXTOLUID) && \
@@ -431,9 +430,9 @@ static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
continue;
}
- status = ares__iface_ips_add(ips, addrflag, ifname, &addr,
- ipaddr->OnLinkPrefixLength /* netmask */,
- address->Ipv6IfIndex /* ll_scope */);
+ status = ares_iface_ips_add(ips, addrflag, ifname, &addr,
+ ipaddr->OnLinkPrefixLength /* netmask */,
+ address->Ipv6IfIndex /* ll_scope */);
if (status != ARES_SUCCESS) {
goto done;
@@ -454,13 +453,13 @@ static unsigned char count_addr_bits(const unsigned char *addr, size_t addr_len)
unsigned char count = 0;
for (i = 0; i < addr_len; i++) {
- count += ares__count_bits_u8(addr[i]);
+ count += ares_count_bits_u8(addr[i]);
}
return count;
}
-static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
- const char *name)
+static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips,
+ const char *name)
{
struct ifaddrs *ifap = NULL;
struct ifaddrs *ifa = NULL;
@@ -472,10 +471,10 @@ static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
}
for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
- ares__iface_ip_flags_t addrflag = 0;
- struct ares_addr addr;
- unsigned char netmask = 0;
- unsigned int ll_scope = 0;
+ ares_iface_ip_flags_t addrflag = 0;
+ struct ares_addr addr;
+ unsigned char netmask = 0;
+ unsigned int ll_scope = 0;
if (ifa->ifa_addr == NULL) {
continue;
@@ -515,12 +514,12 @@ static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
}
/* Name mismatch */
- if (name != NULL && strcasecmp(ifa->ifa_name, name) != 0) {
+ if (name != NULL && !ares_strcaseeq(ifa->ifa_name, name)) {
continue;
}
- status = ares__iface_ips_add(ips, addrflag, ifa->ifa_name, &addr, netmask,
- ll_scope);
+ status = ares_iface_ips_add(ips, addrflag, ifa->ifa_name, &addr, netmask,
+ ll_scope);
if (status != ARES_SUCCESS) {
goto done;
}
@@ -533,8 +532,8 @@ done:
#else
-static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
- const char *name)
+static ares_status_t ares_iface_ips_enumerate(ares_iface_ips_t *ips,
+ const char *name)
{
(void)ips;
(void)name;
@@ -544,7 +543,7 @@ static ares_status_t ares__iface_ips_enumerate(ares__iface_ips_t *ips,
#endif
-unsigned int ares__if_nametoindex(const char *name)
+unsigned int ares_os_if_nametoindex(const char *name)
{
#ifdef HAVE_IF_NAMETOINDEX
if (name == NULL) {
@@ -552,36 +551,35 @@ unsigned int ares__if_nametoindex(const char *name)
}
return if_nametoindex(name);
#else
- ares_status_t status;
- ares__iface_ips_t *ips = NULL;
- size_t i;
- unsigned int index = 0;
+ ares_status_t status;
+ ares_iface_ips_t *ips = NULL;
+ size_t i;
+ unsigned int index = 0;
if (name == NULL) {
return 0;
}
status =
- ares__iface_ips(&ips, ARES_IFACE_IP_V6 | ARES_IFACE_IP_LINKLOCAL, name);
+ ares_iface_ips(&ips, ARES_IFACE_IP_V6 | ARES_IFACE_IP_LINKLOCAL, name);
if (status != ARES_SUCCESS) {
goto done;
}
- for (i = 0; i < ares__iface_ips_cnt(ips); i++) {
- if (ares__iface_ips_get_flags(ips, i) & ARES_IFACE_IP_LINKLOCAL) {
- index = ares__iface_ips_get_ll_scope(ips, i);
+ for (i = 0; i < ares_iface_ips_cnt(ips); i++) {
+ if (ares_iface_ips_get_flags(ips, i) & ARES_IFACE_IP_LINKLOCAL) {
+ index = ares_iface_ips_get_ll_scope(ips, i);
goto done;
}
}
done:
- ares__iface_ips_destroy(ips);
+ ares_iface_ips_destroy(ips);
return index;
#endif
}
-const char *ares__if_indextoname(unsigned int index, char *name,
- size_t name_len)
+const char *ares_os_if_indextoname(unsigned int index, char *name, size_t name_len)
{
#ifdef HAVE_IF_INDEXTONAME
if (name_len < IF_NAMESIZE) {
@@ -589,10 +587,10 @@ const char *ares__if_indextoname(unsigned int index, char *name,
}
return if_indextoname(index, name);
#else
- ares_status_t status;
- ares__iface_ips_t *ips = NULL;
- size_t i;
- const char *ptr = NULL;
+ ares_status_t status;
+ ares_iface_ips_t *ips = NULL;
+ size_t i;
+ const char *ptr = NULL;
if (name == NULL || name_len < IF_NAMESIZE) {
goto done;
@@ -603,22 +601,22 @@ const char *ares__if_indextoname(unsigned int index, char *name,
}
status =
- ares__iface_ips(&ips, ARES_IFACE_IP_V6 | ARES_IFACE_IP_LINKLOCAL, NULL);
+ ares_iface_ips(&ips, ARES_IFACE_IP_V6 | ARES_IFACE_IP_LINKLOCAL, NULL);
if (status != ARES_SUCCESS) {
goto done;
}
- for (i = 0; i < ares__iface_ips_cnt(ips); i++) {
- if (ares__iface_ips_get_flags(ips, i) & ARES_IFACE_IP_LINKLOCAL &&
- ares__iface_ips_get_ll_scope(ips, i) == index) {
- ares_strcpy(name, ares__iface_ips_get_name(ips, i), name_len);
+ for (i = 0; i < ares_iface_ips_cnt(ips); i++) {
+ if (ares_iface_ips_get_flags(ips, i) & ARES_IFACE_IP_LINKLOCAL &&
+ ares_iface_ips_get_ll_scope(ips, i) == index) {
+ ares_strcpy(name, ares_iface_ips_get_name(ips, i), name_len);
ptr = name;
goto done;
}
}
done:
- ares__iface_ips_destroy(ips);
+ ares_iface_ips_destroy(ips);
return ptr;
#endif
}
diff --git a/contrib/libs/c-ares/src/lib/util/ares__iface_ips.h b/contrib/libs/c-ares/src/lib/util/ares_iface_ips.h
index 61ff736a79..f22e09046a 100644
--- a/contrib/libs/c-ares/src/lib/util/ares__iface_ips.h
+++ b/contrib/libs/c-ares/src/lib/util/ares_iface_ips.h
@@ -42,18 +42,18 @@ typedef enum {
/*! Default, enumerate all ips for online interfaces, including loopback */
ARES_IFACE_IP_DEFAULT = (ARES_IFACE_IP_V4 | ARES_IFACE_IP_V6 |
ARES_IFACE_IP_LOOPBACK | ARES_IFACE_IP_LINKLOCAL)
-} ares__iface_ip_flags_t;
+} ares_iface_ip_flags_t;
-struct ares__iface_ips;
+struct ares_iface_ips;
/*! Opaque pointer for holding enumerated interface ip addresses */
-typedef struct ares__iface_ips ares__iface_ips_t;
+typedef struct ares_iface_ips ares_iface_ips_t;
-/*! Destroy ip address enumeration created by ares__iface_ips().
+/*! Destroy ip address enumeration created by ares_iface_ips().
*
* \param[in] ips Initialized IP address enumeration structure
*/
-void ares__iface_ips_destroy(ares__iface_ips_t *ips);
+void ares_iface_ips_destroy(ares_iface_ips_t *ips);
/*! Enumerate ip addresses on interfaces
*
@@ -63,15 +63,15 @@ void ares__iface_ips_destroy(ares__iface_ips_t *ips);
* \return ARES_ENOMEM on out of memory, ARES_ENOTIMP if not supported on
* the system, ARES_SUCCESS on success
*/
-ares_status_t ares__iface_ips(ares__iface_ips_t **ips,
- ares__iface_ip_flags_t flags, const char *name);
+ares_status_t ares_iface_ips(ares_iface_ips_t **ips,
+ ares_iface_ip_flags_t flags, const char *name);
/*! Count of ips enumerated
*
* \param[in] ips Initialized IP address enumeration structure
* \return count
*/
-size_t ares__iface_ips_cnt(const ares__iface_ips_t *ips);
+size_t ares_iface_ips_cnt(const ares_iface_ips_t *ips);
/*! Retrieve interface name
*
@@ -79,7 +79,7 @@ size_t ares__iface_ips_cnt(const ares__iface_ips_t *ips);
* \param[in] idx Index of entry to pull
* \return interface name
*/
-const char *ares__iface_ips_get_name(const ares__iface_ips_t *ips, size_t idx);
+const char *ares_iface_ips_get_name(const ares_iface_ips_t *ips, size_t idx);
/*! Retrieve interface address
*
@@ -87,8 +87,8 @@ const char *ares__iface_ips_get_name(const ares__iface_ips_t *ips, size_t idx);
* \param[in] idx Index of entry to pull
* \return interface address
*/
-const struct ares_addr *ares__iface_ips_get_addr(const ares__iface_ips_t *ips,
- size_t idx);
+const struct ares_addr *ares_iface_ips_get_addr(const ares_iface_ips_t *ips,
+ size_t idx);
/*! Retrieve interface address flags
*
@@ -96,8 +96,8 @@ const struct ares_addr *ares__iface_ips_get_addr(const ares__iface_ips_t *ips,
* \param[in] idx Index of entry to pull
* \return interface address flags
*/
-ares__iface_ip_flags_t ares__iface_ips_get_flags(const ares__iface_ips_t *ips,
- size_t idx);
+ares_iface_ip_flags_t ares_iface_ips_get_flags(const ares_iface_ips_t *ips,
+ size_t idx);
/*! Retrieve interface address netmask
*
@@ -105,8 +105,8 @@ ares__iface_ip_flags_t ares__iface_ips_get_flags(const ares__iface_ips_t *ips,
* \param[in] idx Index of entry to pull
* \return interface address netmask
*/
-unsigned char ares__iface_ips_get_netmask(const ares__iface_ips_t *ips,
- size_t idx);
+unsigned char ares_iface_ips_get_netmask(const ares_iface_ips_t *ips,
+ size_t idx);
/*! Retrieve interface ipv6 link local scope
*
@@ -114,8 +114,8 @@ unsigned char ares__iface_ips_get_netmask(const ares__iface_ips_t *ips,
* \param[in] idx Index of entry to pull
* \return interface ipv6 link local scope
*/
-unsigned int ares__iface_ips_get_ll_scope(const ares__iface_ips_t *ips,
- size_t idx);
+unsigned int ares_iface_ips_get_ll_scope(const ares_iface_ips_t *ips,
+ size_t idx);
/*! Retrieve the interface index (aka link local scope) from the interface
@@ -124,7 +124,7 @@ unsigned int ares__iface_ips_get_ll_scope(const ares__iface_ips_t *ips,
* \param[in] name Interface name
* \return 0 on failure, index otherwise
*/
-unsigned int ares__if_nametoindex(const char *name);
+unsigned int ares_os_if_nametoindex(const char *name);
/*! Retrieves the interface name from the index (aka link local scope)
*
@@ -133,7 +133,7 @@ unsigned int ares__if_nametoindex(const char *name);
* \param[in] name_len Length of provided buffer, must be at least IF_NAMESIZE
* \return NULL on failure, or pointer to name on success
*/
-const char *ares__if_indextoname(unsigned int index, char *name,
- size_t name_len);
+const char *ares_os_if_indextoname(unsigned int index, char *name,
+ size_t name_len);
#endif
diff --git a/contrib/libs/c-ares/src/lib/util/ares_math.c b/contrib/libs/c-ares/src/lib/util/ares_math.c
index 45999bdeab..1106bf6bf1 100644
--- a/contrib/libs/c-ares/src/lib/util/ares_math.c
+++ b/contrib/libs/c-ares/src/lib/util/ares_math.c
@@ -29,7 +29,7 @@
/* Uses public domain code snippets from
* http://graphics.stanford.edu/~seander/bithacks.html */
-static unsigned int ares__round_up_pow2_u32(unsigned int n)
+static unsigned int ares_round_up_pow2_u32(unsigned int n)
{
/* NOTE: if already a power of 2, will return itself, not the next */
n--;
@@ -42,7 +42,7 @@ static unsigned int ares__round_up_pow2_u32(unsigned int n)
return n;
}
-static ares_int64_t ares__round_up_pow2_u64(ares_int64_t n)
+static ares_int64_t ares_round_up_pow2_u64(ares_int64_t n)
{
/* NOTE: if already a power of 2, will return itself, not the next */
n--;
@@ -56,7 +56,7 @@ static ares_int64_t ares__round_up_pow2_u64(ares_int64_t n)
return n;
}
-ares_bool_t ares__is_64bit(void)
+ares_bool_t ares_is_64bit(void)
{
#ifdef _MSC_VER
# pragma warning(push)
@@ -70,16 +70,16 @@ ares_bool_t ares__is_64bit(void)
#endif
}
-size_t ares__round_up_pow2(size_t n)
+size_t ares_round_up_pow2(size_t n)
{
- if (ares__is_64bit()) {
- return (size_t)ares__round_up_pow2_u64((ares_int64_t)n);
+ if (ares_is_64bit()) {
+ return (size_t)ares_round_up_pow2_u64((ares_int64_t)n);
}
- return (size_t)ares__round_up_pow2_u32((unsigned int)n);
+ return (size_t)ares_round_up_pow2_u32((unsigned int)n);
}
-size_t ares__log2(size_t 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,
@@ -92,7 +92,7 @@ size_t ares__log2(size_t n)
56, 45, 25, 31, 35, 16, 9, 12, 44, 24, 15, 8, 23, 7, 6, 5
};
- if (!ares__is_64bit()) {
+ if (!ares_is_64bit()) {
return tab32[(n * 0x077CB531) >> 27];
}
@@ -100,7 +100,7 @@ size_t ares__log2(size_t n)
}
/* x^y */
-size_t ares__pow(size_t x, size_t y)
+size_t ares_pow(size_t x, size_t y)
{
size_t res = 1;
@@ -118,7 +118,7 @@ size_t ares__pow(size_t x, size_t y)
return res;
}
-size_t ares__count_digits(size_t n)
+size_t ares_count_digits(size_t n)
{
size_t digits;
@@ -132,7 +132,7 @@ size_t ares__count_digits(size_t n)
return digits;
}
-size_t ares__count_hexdigits(size_t n)
+size_t ares_count_hexdigits(size_t n)
{
size_t digits;
@@ -146,7 +146,7 @@ size_t ares__count_hexdigits(size_t n)
return digits;
}
-unsigned char ares__count_bits_u8(unsigned char x)
+unsigned char ares_count_bits_u8(unsigned char x)
{
/* Implementation obtained from:
* http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetTable */
diff --git a/contrib/libs/c-ares/src/lib/str/ares_strcasecmp.c b/contrib/libs/c-ares/src/lib/util/ares_math.h
index 76b835fd8e..52fa1facf0 100644
--- a/contrib/libs/c-ares/src/lib/str/ares_strcasecmp.c
+++ b/contrib/libs/c-ares/src/lib/util/ares_math.h
@@ -1,7 +1,6 @@
/* MIT License
*
- * Copyright (c) 1998 Massachusetts Institute of Technology
- * Copyright (c) The c-ares project and its contributors
+ * Copyright (c) 2024 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,56 +23,23 @@
*
* SPDX-License-Identifier: MIT
*/
+#ifndef __ARES_MATH_H
+#define __ARES_MATH_H
-#include "ares_private.h"
-#include "ares_strcasecmp.h"
-
-#ifndef HAVE_STRCASECMP
-int ares_strcasecmp(const char *a, const char *b)
-{
-# if defined(HAVE_STRCMPI)
- return strcmpi(a, b);
-# elif defined(HAVE_STRICMP)
- return stricmp(a, b);
-# else
- size_t i;
-
- for (i = 0; i < (size_t)-1; i++) {
- int c1 = ares__tolower(a[i]);
- int c2 = ares__tolower(b[i]);
- if (c1 != c2) {
- return c1 - c2;
- }
- if (!c1) {
- break;
- }
- }
- return 0;
-# endif
-}
+#ifdef _MSC_VER
+typedef __int64 ares_int64_t;
+typedef unsigned __int64 ares_uint64_t;
+#else
+typedef long long ares_int64_t;
+typedef unsigned long long ares_uint64_t;
#endif
-#ifndef HAVE_STRNCASECMP
-int ares_strncasecmp(const char *a, const char *b, size_t n)
-{
-# if defined(HAVE_STRNCMPI)
- return strncmpi(a, b, n);
-# elif defined(HAVE_STRNICMP)
- return strnicmp(a, b, n);
-# else
- size_t i;
+ares_bool_t ares_is_64bit(void);
+size_t ares_round_up_pow2(size_t n);
+size_t ares_log2(size_t n);
+size_t ares_pow(size_t x, size_t y);
+size_t ares_count_digits(size_t n);
+size_t ares_count_hexdigits(size_t n);
+unsigned char ares_count_bits_u8(unsigned char x);
- for (i = 0; i < n; i++) {
- int c1 = ares__tolower(a[i]);
- int c2 = ares__tolower(b[i]);
- if (c1 != c2) {
- return c1 - c2;
- }
- if (!c1) {
- break;
- }
- }
- return 0;
-# endif
-}
#endif
diff --git a/contrib/libs/c-ares/src/lib/util/ares_rand.c b/contrib/libs/c-ares/src/lib/util/ares_rand.c
index c57bb706e6..408999951a 100644
--- a/contrib/libs/c-ares/src/lib/util/ares_rand.c
+++ b/contrib/libs/c-ares/src/lib/util/ares_rand.c
@@ -55,7 +55,7 @@ typedef struct ares_rand_rc4 {
static unsigned int ares_u32_from_ptr(void *addr)
{
/* LCOV_EXCL_START: FallbackCode */
- if (ares__is_64bit()) {
+ if (ares_is_64bit()) {
return (unsigned int)((((ares_uint64_t)addr >> 32) & 0xFFFFFFFF) |
((ares_uint64_t)addr & 0xFFFFFFFF));
}
@@ -77,9 +77,13 @@ static void ares_rc4_generate_key(ares_rand_rc4 *rc4_state, unsigned char *key,
return;
}
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ /* For fuzzing, random should be deterministic */
+ srand(0);
+#else
/* 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()
+ * rc4_state (heap), &i (stack), and ares_tvnow()
*/
data = ares_u32_from_ptr(rc4_state);
memcpy(key + len, &data, sizeof(data));
@@ -89,13 +93,14 @@ static void ares_rc4_generate_key(ares_rand_rc4 *rc4_state, unsigned char *key,
memcpy(key + len, &data, sizeof(data));
len += sizeof(data);
- ares__tvnow(&tv);
+ ares_tvnow(&tv);
data = (unsigned int)((tv.sec | 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.sec | tv.usec) & 0xFFFFFFFF));
+#endif
for (i = len; i < key_len; i++) {
key[i] = (unsigned char)(rand() % 256); /* LCOV_EXCL_LINE */
@@ -188,10 +193,15 @@ BOOLEAN WINAPI SystemFunction036(PVOID RandomBuffer, ULONG RandomBufferLength);
#endif
-static ares_bool_t ares__init_rand_engine(ares_rand_state *state)
+static ares_bool_t ares_init_rand_engine(ares_rand_state *state)
{
state->cache_remaining = 0;
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ /* For fuzzing, random should be deterministic */
+ state->bad_backends |= ARES_RAND_OS | ARES_RAND_FILE;
+#endif
+
#if defined(HAVE_ARC4RANDOM_BUF) || defined(HAVE_GETRANDOM) || defined(_WIN32)
if (!(state->bad_backends & ARES_RAND_OS)) {
state->type = ARES_RAND_OS;
@@ -223,7 +233,7 @@ static ares_bool_t ares__init_rand_engine(ares_rand_state *state)
return ARES_TRUE; /* LCOV_EXCL_LINE: UntestablePath */
}
-ares_rand_state *ares__init_rand_state(void)
+ares_rand_state *ares_init_rand_state(void)
{
ares_rand_state *state = NULL;
@@ -232,7 +242,7 @@ ares_rand_state *ares__init_rand_state(void)
return NULL;
}
- if (!ares__init_rand_engine(state)) {
+ if (!ares_init_rand_engine(state)) {
ares_free(state); /* LCOV_EXCL_LINE: UntestablePath */
return NULL; /* LCOV_EXCL_LINE: UntestablePath */
}
@@ -240,7 +250,7 @@ ares_rand_state *ares__init_rand_state(void)
return state;
}
-static void ares__clear_rand_state(ares_rand_state *state)
+static void ares_clear_rand_state(ares_rand_state *state)
{
if (!state) {
return; /* LCOV_EXCL_LINE: DefensiveCoding */
@@ -259,26 +269,26 @@ static void ares__clear_rand_state(ares_rand_state *state)
}
}
-static void ares__reinit_rand(ares_rand_state *state)
+static void ares_reinit_rand(ares_rand_state *state)
{
/* LCOV_EXCL_START: UntestablePath */
- ares__clear_rand_state(state);
- ares__init_rand_engine(state);
+ ares_clear_rand_state(state);
+ ares_init_rand_engine(state);
/* LCOV_EXCL_STOP */
}
-void ares__destroy_rand_state(ares_rand_state *state)
+void ares_destroy_rand_state(ares_rand_state *state)
{
if (!state) {
return;
}
- ares__clear_rand_state(state);
+ ares_clear_rand_state(state);
ares_free(state);
}
-static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf,
- size_t len)
+static void ares_rand_bytes_fetch(ares_rand_state *state, unsigned char *buf,
+ size_t len)
{
while (1) {
size_t bytes_read = 0;
@@ -344,17 +354,17 @@ static void ares__rand_bytes_fetch(ares_rand_state *state, unsigned char *buf,
/* If we didn't return before we got here, that means we had a critical rand
* failure and need to reinitialized */
- ares__reinit_rand(state); /* LCOV_EXCL_LINE: UntestablePath */
+ ares_reinit_rand(state); /* LCOV_EXCL_LINE: UntestablePath */
}
}
-void ares__rand_bytes(ares_rand_state *state, unsigned char *buf, size_t len)
+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
* excessive, we're not going to update our cache or serve from cache */
if (len > state->cache_remaining && len < sizeof(state->cache)) {
size_t fetch_size = sizeof(state->cache) - state->cache_remaining;
- ares__rand_bytes_fetch(state, state->cache, fetch_size);
+ ares_rand_bytes_fetch(state, state->cache, fetch_size);
state->cache_remaining = sizeof(state->cache);
}
@@ -367,13 +377,13 @@ void ares__rand_bytes(ares_rand_state *state, unsigned char *buf, size_t len)
}
/* Serve direct due to excess size of request */
- ares__rand_bytes_fetch(state, buf, len);
+ ares_rand_bytes_fetch(state, buf, len);
}
-unsigned short ares__generate_new_id(ares_rand_state *state)
+unsigned short ares_generate_new_id(ares_rand_state *state)
{
unsigned short r = 0;
- ares__rand_bytes(state, (unsigned char *)&r, sizeof(r));
+ ares_rand_bytes(state, (unsigned char *)&r, sizeof(r));
return r;
}
diff --git a/contrib/libs/c-ares/src/lib/ares_platform.h b/contrib/libs/c-ares/src/lib/util/ares_rand.h
index 768eaddddd..81c61bf464 100644
--- a/contrib/libs/c-ares/src/lib/ares_platform.h
+++ b/contrib/libs/c-ares/src/lib/util/ares_rand.h
@@ -1,7 +1,6 @@
/* MIT License
*
- * Copyright (c) 1998 Massachusetts Institute of Technology
- * Copyright (c) 2004 Daniel Stenberg
+ * Copyright (c) 2024 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,27 +23,14 @@
*
* SPDX-License-Identifier: MIT
*/
-#ifndef HEADER_CARES_PLATFORM_H
-#define HEADER_CARES_PLATFORM_H
+#ifndef __ARES_RAND_H
+#define __ARES_RAND_H
-#if defined(_WIN32) && !defined(MSDOS)
+struct ares_rand_state;
+typedef struct ares_rand_state ares_rand_state;
-typedef enum {
- WIN_UNKNOWN,
- WIN_3X,
- WIN_9X,
- WIN_NT,
- WIN_CE
-} win_platform;
-
-win_platform ares__getplatform(void);
-
-#endif
-
-#if defined(_WIN32_WCE)
-
-struct servent *getservbyport(int port, const char *proto);
+ares_rand_state *ares_init_rand_state(void);
+void ares_destroy_rand_state(ares_rand_state *state);
+void ares_rand_bytes(ares_rand_state *state, unsigned char *buf, size_t len);
#endif
-
-#endif /* HEADER_CARES_PLATFORM_H */
diff --git a/contrib/libs/c-ares/src/lib/util/ares__threads.c b/contrib/libs/c-ares/src/lib/util/ares_threads.c
index b47544451d..ab0b51afb7 100644
--- a/contrib/libs/c-ares/src/lib/util/ares__threads.c
+++ b/contrib/libs/c-ares/src/lib/util/ares_threads.c
@@ -28,13 +28,13 @@
#ifdef CARES_THREADS
# ifdef _WIN32
-struct ares__thread_mutex {
+struct ares_thread_mutex {
CRITICAL_SECTION mutex;
};
-ares__thread_mutex_t *ares__thread_mutex_create(void)
+ares_thread_mutex_t *ares_thread_mutex_create(void)
{
- ares__thread_mutex_t *mut = ares_malloc_zero(sizeof(*mut));
+ ares_thread_mutex_t *mut = ares_malloc_zero(sizeof(*mut));
if (mut == NULL) {
return NULL;
}
@@ -43,7 +43,7 @@ ares__thread_mutex_t *ares__thread_mutex_create(void)
return mut;
}
-void ares__thread_mutex_destroy(ares__thread_mutex_t *mut)
+void ares_thread_mutex_destroy(ares_thread_mutex_t *mut)
{
if (mut == NULL) {
return;
@@ -52,7 +52,7 @@ void ares__thread_mutex_destroy(ares__thread_mutex_t *mut)
ares_free(mut);
}
-void ares__thread_mutex_lock(ares__thread_mutex_t *mut)
+void ares_thread_mutex_lock(ares_thread_mutex_t *mut)
{
if (mut == NULL) {
return;
@@ -60,7 +60,7 @@ void ares__thread_mutex_lock(ares__thread_mutex_t *mut)
EnterCriticalSection(&mut->mutex);
}
-void ares__thread_mutex_unlock(ares__thread_mutex_t *mut)
+void ares_thread_mutex_unlock(ares_thread_mutex_t *mut)
{
if (mut == NULL) {
return;
@@ -68,13 +68,13 @@ void ares__thread_mutex_unlock(ares__thread_mutex_t *mut)
LeaveCriticalSection(&mut->mutex);
}
-struct ares__thread_cond {
+struct ares_thread_cond {
CONDITION_VARIABLE cond;
};
-ares__thread_cond_t *ares__thread_cond_create(void)
+ares_thread_cond_t *ares_thread_cond_create(void)
{
- ares__thread_cond_t *cond = ares_malloc_zero(sizeof(*cond));
+ ares_thread_cond_t *cond = ares_malloc_zero(sizeof(*cond));
if (cond == NULL) {
return NULL;
}
@@ -82,7 +82,7 @@ ares__thread_cond_t *ares__thread_cond_create(void)
return cond;
}
-void ares__thread_cond_destroy(ares__thread_cond_t *cond)
+void ares_thread_cond_destroy(ares_thread_cond_t *cond)
{
if (cond == NULL) {
return;
@@ -90,7 +90,7 @@ void ares__thread_cond_destroy(ares__thread_cond_t *cond)
ares_free(cond);
}
-void ares__thread_cond_signal(ares__thread_cond_t *cond)
+void ares_thread_cond_signal(ares_thread_cond_t *cond)
{
if (cond == NULL) {
return;
@@ -98,7 +98,7 @@ void ares__thread_cond_signal(ares__thread_cond_t *cond)
WakeConditionVariable(&cond->cond);
}
-void ares__thread_cond_broadcast(ares__thread_cond_t *cond)
+void ares_thread_cond_broadcast(ares_thread_cond_t *cond)
{
if (cond == NULL) {
return;
@@ -106,8 +106,8 @@ void ares__thread_cond_broadcast(ares__thread_cond_t *cond)
WakeAllConditionVariable(&cond->cond);
}
-ares_status_t ares__thread_cond_wait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut)
+ares_status_t ares_thread_cond_wait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut)
{
if (cond == NULL || mut == NULL) {
return ARES_EFORMERR;
@@ -117,9 +117,9 @@ ares_status_t ares__thread_cond_wait(ares__thread_cond_t *cond,
return ARES_SUCCESS;
}
-ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut,
- unsigned long timeout_ms)
+ares_status_t ares_thread_cond_timedwait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut,
+ unsigned long timeout_ms)
{
if (cond == NULL || mut == NULL) {
return ARES_EFORMERR;
@@ -132,7 +132,7 @@ ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
return ARES_SUCCESS;
}
-struct ares__thread {
+struct ares_thread {
HANDLE thread;
DWORD id;
@@ -142,18 +142,18 @@ struct ares__thread {
};
/* Wrap for pthread compatibility */
-static DWORD WINAPI ares__thread_func(LPVOID lpParameter)
+static DWORD WINAPI ares_thread_func(LPVOID lpParameter)
{
- ares__thread_t *thread = lpParameter;
+ ares_thread_t *thread = lpParameter;
thread->rv = thread->func(thread->arg);
return 0;
}
-ares_status_t ares__thread_create(ares__thread_t **thread,
- ares__thread_func_t func, void *arg)
+ares_status_t ares_thread_create(ares_thread_t **thread,
+ ares_thread_func_t func, void *arg)
{
- ares__thread_t *thr = NULL;
+ ares_thread_t *thr = NULL;
if (func == NULL || thread == NULL) {
return ARES_EFORMERR;
@@ -166,7 +166,7 @@ ares_status_t ares__thread_create(ares__thread_t **thread,
thr->func = func;
thr->arg = arg;
- thr->thread = CreateThread(NULL, 0, ares__thread_func, thr, 0, &thr->id);
+ thr->thread = CreateThread(NULL, 0, ares_thread_func, thr, 0, &thr->id);
if (thr->thread == NULL) {
ares_free(thr);
return ARES_ESERVFAIL;
@@ -176,7 +176,7 @@ ares_status_t ares__thread_create(ares__thread_t **thread,
return ARES_SUCCESS;
}
-ares_status_t ares__thread_join(ares__thread_t *thread, void **rv)
+ares_status_t ares_thread_join(ares_thread_t *thread, void **rv)
{
ares_status_t status = ARES_SUCCESS;
@@ -211,14 +211,14 @@ ares_status_t ares__thread_join(ares__thread_t *thread, void **rv)
# include <sys/time.h>
# endif
-struct ares__thread_mutex {
+struct ares_thread_mutex {
pthread_mutex_t mutex;
};
-ares__thread_mutex_t *ares__thread_mutex_create(void)
+ares_thread_mutex_t *ares_thread_mutex_create(void)
{
- pthread_mutexattr_t attr;
- ares__thread_mutex_t *mut = ares_malloc_zero(sizeof(*mut));
+ pthread_mutexattr_t attr;
+ ares_thread_mutex_t *mut = ares_malloc_zero(sizeof(*mut));
if (mut == NULL) {
return NULL;
}
@@ -247,7 +247,7 @@ fail:
/* LCOV_EXCL_STOP */
}
-void ares__thread_mutex_destroy(ares__thread_mutex_t *mut)
+void ares_thread_mutex_destroy(ares_thread_mutex_t *mut)
{
if (mut == NULL) {
return;
@@ -256,7 +256,7 @@ void ares__thread_mutex_destroy(ares__thread_mutex_t *mut)
ares_free(mut);
}
-void ares__thread_mutex_lock(ares__thread_mutex_t *mut)
+void ares_thread_mutex_lock(ares_thread_mutex_t *mut)
{
if (mut == NULL) {
return;
@@ -264,7 +264,7 @@ void ares__thread_mutex_lock(ares__thread_mutex_t *mut)
pthread_mutex_lock(&mut->mutex);
}
-void ares__thread_mutex_unlock(ares__thread_mutex_t *mut)
+void ares_thread_mutex_unlock(ares_thread_mutex_t *mut)
{
if (mut == NULL) {
return;
@@ -272,13 +272,13 @@ void ares__thread_mutex_unlock(ares__thread_mutex_t *mut)
pthread_mutex_unlock(&mut->mutex);
}
-struct ares__thread_cond {
+struct ares_thread_cond {
pthread_cond_t cond;
};
-ares__thread_cond_t *ares__thread_cond_create(void)
+ares_thread_cond_t *ares_thread_cond_create(void)
{
- ares__thread_cond_t *cond = ares_malloc_zero(sizeof(*cond));
+ ares_thread_cond_t *cond = ares_malloc_zero(sizeof(*cond));
if (cond == NULL) {
return NULL;
}
@@ -286,7 +286,7 @@ ares__thread_cond_t *ares__thread_cond_create(void)
return cond;
}
-void ares__thread_cond_destroy(ares__thread_cond_t *cond)
+void ares_thread_cond_destroy(ares_thread_cond_t *cond)
{
if (cond == NULL) {
return;
@@ -295,7 +295,7 @@ void ares__thread_cond_destroy(ares__thread_cond_t *cond)
ares_free(cond);
}
-void ares__thread_cond_signal(ares__thread_cond_t *cond)
+void ares_thread_cond_signal(ares_thread_cond_t *cond)
{
if (cond == NULL) {
return;
@@ -303,7 +303,7 @@ void ares__thread_cond_signal(ares__thread_cond_t *cond)
pthread_cond_signal(&cond->cond);
}
-void ares__thread_cond_broadcast(ares__thread_cond_t *cond)
+void ares_thread_cond_broadcast(ares_thread_cond_t *cond)
{
if (cond == NULL) {
return;
@@ -311,8 +311,8 @@ void ares__thread_cond_broadcast(ares__thread_cond_t *cond)
pthread_cond_broadcast(&cond->cond);
}
-ares_status_t ares__thread_cond_wait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut)
+ares_status_t ares_thread_cond_wait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut)
{
if (cond == NULL || mut == NULL) {
return ARES_EFORMERR;
@@ -322,7 +322,7 @@ ares_status_t ares__thread_cond_wait(ares__thread_cond_t *cond,
return ARES_SUCCESS;
}
-static void ares__timespec_timeout(struct timespec *ts, unsigned long add_ms)
+static void ares_timespec_timeout(struct timespec *ts, unsigned long add_ms)
{
# if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_REALTIME)
clock_gettime(CLOCK_REALTIME, ts);
@@ -345,9 +345,9 @@ static void ares__timespec_timeout(struct timespec *ts, unsigned long add_ms)
}
}
-ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut,
- unsigned long timeout_ms)
+ares_status_t ares_thread_cond_timedwait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut,
+ unsigned long timeout_ms)
{
struct timespec ts;
@@ -355,7 +355,7 @@ ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
return ARES_EFORMERR;
}
- ares__timespec_timeout(&ts, timeout_ms);
+ ares_timespec_timeout(&ts, timeout_ms);
if (pthread_cond_timedwait(&cond->cond, &mut->mutex, &ts) != 0) {
return ARES_ETIMEOUT;
@@ -364,14 +364,14 @@ ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
return ARES_SUCCESS;
}
-struct ares__thread {
+struct ares_thread {
pthread_t thread;
};
-ares_status_t ares__thread_create(ares__thread_t **thread,
- ares__thread_func_t func, void *arg)
+ares_status_t ares_thread_create(ares_thread_t **thread,
+ ares_thread_func_t func, void *arg)
{
- ares__thread_t *thr = NULL;
+ ares_thread_t *thr = NULL;
if (func == NULL || thread == NULL) {
return ARES_EFORMERR;
@@ -390,7 +390,7 @@ ares_status_t ares__thread_create(ares__thread_t **thread,
return ARES_SUCCESS;
}
-ares_status_t ares__thread_join(ares__thread_t *thread, void **rv)
+ares_status_t ares_thread_join(ares_thread_t *thread, void **rv)
{
void *ret = NULL;
ares_status_t status = ARES_SUCCESS;
@@ -420,57 +420,57 @@ ares_bool_t ares_threadsafety(void)
#else /* !CARES_THREADS */
/* NoOp */
-ares__thread_mutex_t *ares__thread_mutex_create(void)
+ares_thread_mutex_t *ares_thread_mutex_create(void)
{
return NULL;
}
-void ares__thread_mutex_destroy(ares__thread_mutex_t *mut)
+void ares_thread_mutex_destroy(ares_thread_mutex_t *mut)
{
(void)mut;
}
-void ares__thread_mutex_lock(ares__thread_mutex_t *mut)
+void ares_thread_mutex_lock(ares_thread_mutex_t *mut)
{
(void)mut;
}
-void ares__thread_mutex_unlock(ares__thread_mutex_t *mut)
+void ares_thread_mutex_unlock(ares_thread_mutex_t *mut)
{
(void)mut;
}
-ares__thread_cond_t *ares__thread_cond_create(void)
+ares_thread_cond_t *ares_thread_cond_create(void)
{
return NULL;
}
-void ares__thread_cond_destroy(ares__thread_cond_t *cond)
+void ares_thread_cond_destroy(ares_thread_cond_t *cond)
{
(void)cond;
}
-void ares__thread_cond_signal(ares__thread_cond_t *cond)
+void ares_thread_cond_signal(ares_thread_cond_t *cond)
{
(void)cond;
}
-void ares__thread_cond_broadcast(ares__thread_cond_t *cond)
+void ares_thread_cond_broadcast(ares_thread_cond_t *cond)
{
(void)cond;
}
-ares_status_t ares__thread_cond_wait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut)
+ares_status_t ares_thread_cond_wait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut)
{
(void)cond;
(void)mut;
return ARES_ENOTIMP;
}
-ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
- ares__thread_mutex_t *mut,
- unsigned long timeout_ms)
+ares_status_t ares_thread_cond_timedwait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut,
+ unsigned long timeout_ms)
{
(void)cond;
(void)mut;
@@ -478,8 +478,8 @@ ares_status_t ares__thread_cond_timedwait(ares__thread_cond_t *cond,
return ARES_ENOTIMP;
}
-ares_status_t ares__thread_create(ares__thread_t **thread,
- ares__thread_func_t func, void *arg)
+ares_status_t ares_thread_create(ares_thread_t **thread,
+ ares_thread_func_t func, void *arg)
{
(void)thread;
(void)func;
@@ -487,7 +487,7 @@ ares_status_t ares__thread_create(ares__thread_t **thread,
return ARES_ENOTIMP;
}
-ares_status_t ares__thread_join(ares__thread_t *thread, void **rv)
+ares_status_t ares_thread_join(ares_thread_t *thread, void **rv)
{
(void)thread;
(void)rv;
@@ -501,7 +501,7 @@ ares_bool_t ares_threadsafety(void)
#endif
-ares_status_t ares__channel_threading_init(ares_channel_t *channel)
+ares_status_t ares_channel_threading_init(ares_channel_t *channel)
{
ares_status_t status = ARES_SUCCESS;
@@ -510,13 +510,13 @@ ares_status_t ares__channel_threading_init(ares_channel_t *channel)
return ARES_SUCCESS;
}
- channel->lock = ares__thread_mutex_create();
+ channel->lock = ares_thread_mutex_create();
if (channel->lock == NULL) {
status = ARES_ENOMEM;
goto done;
}
- channel->cond_empty = ares__thread_cond_create();
+ channel->cond_empty = ares_thread_cond_create();
if (channel->cond_empty == NULL) {
status = ARES_ENOMEM;
goto done;
@@ -524,27 +524,27 @@ ares_status_t ares__channel_threading_init(ares_channel_t *channel)
done:
if (status != ARES_SUCCESS) {
- ares__channel_threading_destroy(channel);
+ ares_channel_threading_destroy(channel);
}
return status;
}
-void ares__channel_threading_destroy(ares_channel_t *channel)
+void ares_channel_threading_destroy(ares_channel_t *channel)
{
- ares__thread_mutex_destroy(channel->lock);
+ ares_thread_mutex_destroy(channel->lock);
channel->lock = NULL;
- ares__thread_cond_destroy(channel->cond_empty);
+ ares_thread_cond_destroy(channel->cond_empty);
channel->cond_empty = NULL;
}
-void ares__channel_lock(const ares_channel_t *channel)
+void ares_channel_lock(const ares_channel_t *channel)
{
- ares__thread_mutex_lock(channel->lock);
+ ares_thread_mutex_lock(channel->lock);
}
-void ares__channel_unlock(const ares_channel_t *channel)
+void ares_channel_unlock(const ares_channel_t *channel)
{
- ares__thread_mutex_unlock(channel->lock);
+ ares_thread_mutex_unlock(channel->lock);
}
/* Must not be holding a channel lock already, public function only */
@@ -562,29 +562,29 @@ ares_status_t ares_queue_wait_empty(ares_channel_t *channel, int timeout_ms)
}
if (timeout_ms >= 0) {
- ares__tvnow(&tout);
+ ares_tvnow(&tout);
tout.sec += (ares_int64_t)(timeout_ms / 1000);
tout.usec += (unsigned int)(timeout_ms % 1000) * 1000;
}
- ares__thread_mutex_lock(channel->lock);
- while (ares__llist_len(channel->all_queries)) {
+ ares_thread_mutex_lock(channel->lock);
+ while (ares_llist_len(channel->all_queries)) {
if (timeout_ms < 0) {
- ares__thread_cond_wait(channel->cond_empty, channel->lock);
+ ares_thread_cond_wait(channel->cond_empty, channel->lock);
} else {
ares_timeval_t tv_remaining;
ares_timeval_t tv_now;
unsigned long tms;
- ares__tvnow(&tv_now);
- ares__timeval_remaining(&tv_remaining, &tv_now, &tout);
+ ares_tvnow(&tv_now);
+ ares_timeval_remaining(&tv_remaining, &tv_now, &tout);
tms =
(unsigned long)((tv_remaining.sec * 1000) + (tv_remaining.usec / 1000));
if (tms == 0) {
status = ARES_ETIMEOUT;
} else {
status =
- ares__thread_cond_timedwait(channel->cond_empty, channel->lock, tms);
+ ares_thread_cond_timedwait(channel->cond_empty, channel->lock, tms);
}
/* If there was a timeout, don't loop. Otherwise, make sure this wasn't
@@ -594,7 +594,7 @@ ares_status_t ares_queue_wait_empty(ares_channel_t *channel, int timeout_ms)
}
}
}
- ares__thread_mutex_unlock(channel->lock);
+ ares_thread_mutex_unlock(channel->lock);
return status;
}
@@ -605,10 +605,10 @@ void ares_queue_notify_empty(ares_channel_t *channel)
}
/* We are guaranteed to be holding a channel lock already */
- if (ares__llist_len(channel->all_queries)) {
+ if (ares_llist_len(channel->all_queries)) {
return;
}
/* Notify all waiters of the conditional */
- ares__thread_cond_broadcast(channel->cond_empty);
+ ares_thread_cond_broadcast(channel->cond_empty);
}
diff --git a/contrib/libs/c-ares/src/lib/util/ares_threads.h b/contrib/libs/c-ares/src/lib/util/ares_threads.h
new file mode 100644
index 0000000000..95c543e6e9
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/util/ares_threads.h
@@ -0,0 +1,60 @@
+/* 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__THREADS_H
+#define __ARES__THREADS_H
+
+struct ares_thread_mutex;
+typedef struct ares_thread_mutex ares_thread_mutex_t;
+
+ares_thread_mutex_t *ares_thread_mutex_create(void);
+void ares_thread_mutex_destroy(ares_thread_mutex_t *mut);
+void ares_thread_mutex_lock(ares_thread_mutex_t *mut);
+void ares_thread_mutex_unlock(ares_thread_mutex_t *mut);
+
+
+struct ares_thread_cond;
+typedef struct ares_thread_cond ares_thread_cond_t;
+
+ares_thread_cond_t *ares_thread_cond_create(void);
+void ares_thread_cond_destroy(ares_thread_cond_t *cond);
+void ares_thread_cond_signal(ares_thread_cond_t *cond);
+void ares_thread_cond_broadcast(ares_thread_cond_t *cond);
+ares_status_t ares_thread_cond_wait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut);
+ares_status_t ares_thread_cond_timedwait(ares_thread_cond_t *cond,
+ ares_thread_mutex_t *mut,
+ unsigned long timeout_ms);
+
+
+struct ares_thread;
+typedef struct ares_thread ares_thread_t;
+
+typedef void *(*ares_thread_func_t)(void *arg);
+ares_status_t ares_thread_create(ares_thread_t **thread,
+ ares_thread_func_t func, void *arg);
+ares_status_t ares_thread_join(ares_thread_t *thread, void **rv);
+
+#endif
diff --git a/contrib/libs/c-ares/src/lib/util/ares_time.h b/contrib/libs/c-ares/src/lib/util/ares_time.h
new file mode 100644
index 0000000000..c6eaf97366
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/util/ares_time.h
@@ -0,0 +1,48 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_TIME_H
+#define __ARES_TIME_H
+
+/*! struct timeval on some systems like Windows doesn't support 64bit time so
+ * therefore can't be used due to Y2K38 issues. Make our own that does have
+ * 64bit time. */
+typedef struct {
+ ares_int64_t sec; /*!< Seconds */
+ unsigned int usec; /*!< Microseconds. Can't be negative. */
+} ares_timeval_t;
+
+/* return true if now is exactly check time or later */
+ares_bool_t ares_timedout(const ares_timeval_t *now,
+ const ares_timeval_t *check);
+
+void ares_tvnow(ares_timeval_t *now);
+void ares_timeval_remaining(ares_timeval_t *remaining,
+ const ares_timeval_t *now,
+ const ares_timeval_t *tout);
+void ares_timeval_diff(ares_timeval_t *tvdiff, const ares_timeval_t *tvstart,
+ const ares_timeval_t *tvstop);
+
+#endif
diff --git a/contrib/libs/c-ares/src/lib/util/ares__timeval.c b/contrib/libs/c-ares/src/lib/util/ares_timeval.c
index e3a989dca8..0b0845b6fb 100644
--- a/contrib/libs/c-ares/src/lib/util/ares__timeval.c
+++ b/contrib/libs/c-ares/src/lib/util/ares_timeval.c
@@ -28,7 +28,7 @@
#if defined(_WIN32) && !defined(MSDOS)
-void ares__tvnow(ares_timeval_t *now)
+void ares_tvnow(ares_timeval_t *now)
{
/* QueryPerformanceCounters() has been around since Windows 2000, though
* significant fixes were made in later versions. Documentation states
@@ -52,7 +52,7 @@ void ares__tvnow(ares_timeval_t *now)
#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
-void ares__tvnow(ares_timeval_t *now)
+void ares_tvnow(ares_timeval_t *now)
{
/* clock_gettime() is guaranteed to be increased monotonically when the
* monotonic clock is queried. Time starting point is unspecified, it
@@ -76,7 +76,7 @@ void ares__tvnow(ares_timeval_t *now)
#elif defined(HAVE_GETTIMEOFDAY)
-void ares__tvnow(ares_timeval_t *now)
+void ares_tvnow(ares_timeval_t *now)
{
/* gettimeofday() is not granted to be increased monotonically, due to
* clock drifting and external source time synchronization it can jump
diff --git a/contrib/libs/c-ares/src/lib/util/ares_uri.c b/contrib/libs/c-ares/src/lib/util/ares_uri.c
new file mode 100644
index 0000000000..d656f8347f
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/util/ares_uri.c
@@ -0,0 +1,1626 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_private.h"
+#include "ares_uri.h"
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+struct ares_uri {
+ char scheme[16];
+ char *username;
+ char *password;
+ unsigned short port;
+ char host[256];
+ char *path;
+ ares_htable_dict_t *query;
+ char *fragment;
+};
+
+/* RFC3986 character set notes:
+ * gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
+ * / "*" / "+" / "," / ";" / "="
+ * reserved = gen-delims / sub-delims
+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
+ * scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+ * authority = [ userinfo "@" ] host [ ":" port ]
+ * userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
+ * NOTE: Use of the format "user:password" in the userinfo field is
+ * deprecated. Applications should not render as clear text any data
+ * after the first colon (":") character found within a userinfo
+ * subcomponent unless the data after the colon is the empty string
+ * (indicating no password).
+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
+ * query = *( pchar / "/" / "?" )
+ * fragment = *( pchar / "/" / "?" )
+ *
+ * NOTE: Due to ambiguity, "+" in a query must be percent-encoded, as old
+ * URLs used that for spaces.
+ */
+
+
+static ares_bool_t ares_uri_chis_subdelim(char x)
+{
+ switch (x) {
+ case '!':
+ return ARES_TRUE;
+ case '$':
+ return ARES_TRUE;
+ case '&':
+ return ARES_TRUE;
+ case '\'':
+ return ARES_TRUE;
+ case '(':
+ return ARES_TRUE;
+ case ')':
+ return ARES_TRUE;
+ case '*':
+ return ARES_TRUE;
+ case '+':
+ return ARES_TRUE;
+ case ',':
+ return ARES_TRUE;
+ case ';':
+ return ARES_TRUE;
+ case '=':
+ return ARES_TRUE;
+ default:
+ break;
+ }
+ return ARES_FALSE;
+}
+
+/* These don't actually appear to be referenced in any logic */
+#if 0
+static ares_bool_t ares_uri_chis_gendelim(char x)
+{
+ switch (x) {
+ case ':':
+ return ARES_TRUE;
+ case '/':
+ return ARES_TRUE;
+ case '?':
+ return ARES_TRUE;
+ case '#':
+ return ARES_TRUE;
+ case '[':
+ return ARES_TRUE;
+ case ']':
+ return ARES_TRUE;
+ case '@':
+ return ARES_TRUE;
+ default:
+ break;
+ }
+ return ARES_FALSE;
+}
+
+
+static ares_bool_t ares_uri_chis_reserved(char x)
+{
+ return ares_uri_chis_gendelim(x) || ares_uri_chis_subdelim(x);
+}
+#endif
+
+static ares_bool_t ares_uri_chis_unreserved(char x)
+{
+ switch (x) {
+ case '-':
+ return ARES_TRUE;
+ case '.':
+ return ARES_TRUE;
+ case '_':
+ return ARES_TRUE;
+ case '~':
+ return ARES_TRUE;
+ default:
+ break;
+ }
+ return ares_isalpha(x) || ares_isdigit(x);
+}
+
+static ares_bool_t ares_uri_chis_scheme(char x)
+{
+ switch (x) {
+ case '+':
+ return ARES_TRUE;
+ case '-':
+ return ARES_TRUE;
+ case '.':
+ return ARES_TRUE;
+ default:
+ break;
+ }
+ return ares_isalpha(x) || ares_isdigit(x);
+}
+
+static ares_bool_t ares_uri_chis_authority(char x)
+{
+ /* This one here isn't well defined. We are going to include the valid
+ * characters of the subfields plus known delimiters */
+ return ares_uri_chis_unreserved(x) || ares_uri_chis_subdelim(x) || x == '%' ||
+ x == '[' || x == ']' || x == '@' || x == ':';
+}
+
+static ares_bool_t ares_uri_chis_userinfo(char x)
+{
+ /* NOTE: we don't include ':' here since we are using that as our
+ * username/password delimiter */
+ return ares_uri_chis_unreserved(x) || ares_uri_chis_subdelim(x);
+}
+
+static ares_bool_t ares_uri_chis_path(char x)
+{
+ switch (x) {
+ case ':':
+ return ARES_TRUE;
+ case '@':
+ return ARES_TRUE;
+ /* '/' isn't in the spec as a path character since its technically a
+ * delimiter but we're not splitting on '/' so we accept it as valid */
+ case '/':
+ return ARES_TRUE;
+ default:
+ break;
+ }
+ return ares_uri_chis_unreserved(x) || ares_uri_chis_subdelim(x);
+}
+
+static ares_bool_t ares_uri_chis_path_enc(char x)
+{
+ return ares_uri_chis_path(x) || x == '%';
+}
+
+static ares_bool_t ares_uri_chis_query(char x)
+{
+ switch (x) {
+ case '/':
+ return ARES_TRUE;
+ case '?':
+ return ARES_TRUE;
+ default:
+ break;
+ }
+
+ /* Exclude & and = used as delimiters, they're valid characters in the
+ * set, just not for the individual pieces */
+ return ares_uri_chis_path(x) && x != '&' && x != '=';
+}
+
+static ares_bool_t ares_uri_chis_query_enc(char x)
+{
+ return ares_uri_chis_query(x) || x == '%';
+}
+
+static ares_bool_t ares_uri_chis_fragment(char x)
+{
+ switch (x) {
+ case '/':
+ return ARES_TRUE;
+ case '?':
+ return ARES_TRUE;
+ default:
+ break;
+ }
+ return ares_uri_chis_path(x);
+}
+
+static ares_bool_t ares_uri_chis_fragment_enc(char x)
+{
+ return ares_uri_chis_fragment(x) || x == '%';
+}
+
+ares_uri_t *ares_uri_create(void)
+{
+ ares_uri_t *uri = ares_malloc_zero(sizeof(*uri));
+
+ if (uri == NULL) {
+ return NULL;
+ }
+
+ uri->query = ares_htable_dict_create();
+ if (uri->query == NULL) {
+ ares_free(uri);
+ return NULL;
+ }
+
+ return uri;
+}
+
+void ares_uri_destroy(ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return;
+ }
+
+ ares_free(uri->username);
+ ares_free(uri->password);
+ ares_free(uri->path);
+ ares_free(uri->fragment);
+ ares_htable_dict_destroy(uri->query);
+ ares_free(uri);
+}
+
+static ares_bool_t ares_uri_scheme_is_valid(const char *uri)
+{
+ size_t i;
+
+ if (ares_strlen(uri) == 0) {
+ return ARES_FALSE;
+ }
+
+ if (!ares_isalpha(*uri)) {
+ return ARES_FALSE;
+ }
+
+ for (i = 0; uri[i] != 0; i++) {
+ if (!ares_uri_chis_scheme(uri[i])) {
+ return ARES_FALSE;
+ }
+ }
+ return ARES_TRUE;
+}
+
+static ares_bool_t ares_uri_str_isvalid(const char *str, size_t max_len,
+ ares_bool_t (*ischr)(char))
+{
+ size_t i;
+
+ if (str == NULL) {
+ return ARES_FALSE;
+ }
+
+ for (i = 0; i != max_len && str[i] != 0; i++) {
+ if (!ischr(str[i])) {
+ return ARES_FALSE;
+ }
+ }
+ return ARES_TRUE;
+}
+
+ares_status_t ares_uri_set_scheme(ares_uri_t *uri, const char *scheme)
+{
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (!ares_uri_scheme_is_valid(scheme)) {
+ return ARES_EBADSTR;
+ }
+
+ ares_strcpy(uri->scheme, scheme, sizeof(uri->scheme));
+ ares_str_lower(uri->scheme);
+
+ return ARES_SUCCESS;
+}
+
+const char *ares_uri_get_scheme(const ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return NULL;
+ }
+
+ return uri->scheme;
+}
+
+static ares_status_t ares_uri_set_username_own(ares_uri_t *uri, char *username)
+{
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (username != NULL && (!ares_str_isprint(username, ares_strlen(username)) ||
+ ares_strlen(username) == 0)) {
+ return ARES_EBADSTR;
+ }
+
+
+ ares_free(uri->username);
+ uri->username = username;
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_uri_set_username(ares_uri_t *uri, const char *username)
+{
+ ares_status_t status;
+ char *temp = NULL;
+
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (username != NULL) {
+ temp = ares_strdup(username);
+ if (temp == NULL) {
+ return ARES_ENOMEM;
+ }
+ }
+
+ status = ares_uri_set_username_own(uri, temp);
+ if (status != ARES_SUCCESS) {
+ ares_free(temp);
+ }
+
+ return status;
+}
+
+const char *ares_uri_get_username(const ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return NULL;
+ }
+
+ return uri->username;
+}
+
+static ares_status_t ares_uri_set_password_own(ares_uri_t *uri, char *password)
+{
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (password != NULL && !ares_str_isprint(password, ares_strlen(password))) {
+ return ARES_EBADSTR;
+ }
+
+ ares_free(uri->password);
+ uri->password = password;
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_uri_set_password(ares_uri_t *uri, const char *password)
+{
+ ares_status_t status;
+ char *temp = NULL;
+
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (password != NULL) {
+ temp = ares_strdup(password);
+ if (temp == NULL) {
+ return ARES_ENOMEM;
+ }
+ }
+
+ status = ares_uri_set_password_own(uri, temp);
+ if (status != ARES_SUCCESS) {
+ ares_free(temp);
+ }
+
+ return status;
+}
+
+const char *ares_uri_get_password(const ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return NULL;
+ }
+
+ return uri->password;
+}
+
+ares_status_t ares_uri_set_host(ares_uri_t *uri, const char *host)
+{
+ struct ares_addr addr;
+ size_t addrlen;
+ char hoststr[256];
+ char *ll_scope;
+
+ if (uri == NULL || ares_strlen(host) == 0 ||
+ ares_strlen(host) >= sizeof(hoststr)) {
+ return ARES_EFORMERR;
+ }
+
+ ares_strcpy(hoststr, host, sizeof(hoststr));
+
+ /* Look for '%' which could be a link-local scope for ipv6 addresses and
+ * parse it off */
+ ll_scope = strchr(hoststr, '%');
+ if (ll_scope != NULL) {
+ *ll_scope = 0;
+ ll_scope++;
+ if (!ares_str_isalnum(ll_scope)) {
+ return ARES_EBADNAME;
+ }
+ }
+
+ /* If its an IP address, normalize it */
+ memset(&addr, 0, sizeof(addr));
+ addr.family = AF_UNSPEC;
+ if (ares_dns_pton(hoststr, &addr, &addrlen) != NULL) {
+ char ipaddr[INET6_ADDRSTRLEN];
+ ares_inet_ntop(addr.family, &addr.addr, ipaddr, sizeof(ipaddr));
+ /* Only IPv6 is allowed to have a scope */
+ if (ll_scope != NULL && addr.family != AF_INET6) {
+ return ARES_EBADNAME;
+ }
+
+ if (ll_scope != NULL) {
+ snprintf(uri->host, sizeof(uri->host), "%s%%%s", ipaddr, ll_scope);
+ } else {
+ ares_strcpy(uri->host, ipaddr, sizeof(uri->host));
+ }
+ return ARES_SUCCESS;
+ }
+
+ /* If its a hostname, make sure its a valid charset */
+ if (!ares_is_hostname(host)) {
+ return ARES_EBADNAME;
+ }
+
+ ares_strcpy(uri->host, host, sizeof(uri->host));
+ return ARES_SUCCESS;
+}
+
+const char *ares_uri_get_host(const ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return NULL;
+ }
+
+ return uri->host;
+}
+
+ares_status_t ares_uri_set_port(ares_uri_t *uri, unsigned short port)
+{
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+ uri->port = port;
+ return ARES_SUCCESS;
+}
+
+unsigned short ares_uri_get_port(const ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return 0;
+ }
+ return uri->port;
+}
+
+/* URI spec says path normalization is a requirement */
+static char *ares_uri_path_normalize(const char *path)
+{
+ ares_status_t status;
+ ares_array_t *arr = NULL;
+ ares_buf_t *outpath = NULL;
+ ares_buf_t *inpath = NULL;
+ ares_ssize_t i;
+ size_t j;
+ size_t len;
+
+ inpath =
+ ares_buf_create_const((const unsigned char *)path, ares_strlen(path));
+ if (inpath == NULL) {
+ status = ARES_ENOMEM;
+ goto done;
+ }
+
+ outpath = ares_buf_create();
+ if (outpath == NULL) {
+ status = ARES_ENOMEM;
+ goto done;
+ }
+
+ status = ares_buf_split_str_array(inpath, (const unsigned char *)"/", 1,
+ ARES_BUF_SPLIT_TRIM, 0, &arr);
+ if (status != ARES_SUCCESS) {
+ return NULL;
+ }
+
+ for (i = 0; i < (ares_ssize_t)ares_array_len(arr); i++) {
+ const char **strptr = ares_array_at(arr, (size_t)i);
+ const char *str = *strptr;
+
+ if (ares_streq(str, ".")) {
+ ares_array_remove_at(arr, (size_t)i);
+ i--;
+ } else if (ares_streq(str, "..")) {
+ if (i != 0) {
+ ares_array_remove_at(arr, (size_t)i - 1);
+ i--;
+ }
+ ares_array_remove_at(arr, (size_t)i);
+ i--;
+ }
+ }
+
+ status = ares_buf_append_byte(outpath, '/');
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ len = ares_array_len(arr);
+ for (j = 0; j < len; j++) {
+ const char **strptr = ares_array_at(arr, j);
+ const char *str = *strptr;
+ status = ares_buf_append_str(outpath, str);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ /* Path separator, but on the last entry, we need to check if it was
+ * originally terminated or not because they have different meanings */
+ if (j != len - 1 || path[ares_strlen(path) - 1] == '/') {
+ status = ares_buf_append_byte(outpath, '/');
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ }
+ }
+
+done:
+ ares_array_destroy(arr);
+ ares_buf_destroy(inpath);
+ if (status != ARES_SUCCESS) {
+ ares_buf_destroy(outpath);
+ return NULL;
+ }
+
+ return ares_buf_finish_str(outpath, NULL);
+}
+
+ares_status_t ares_uri_set_path(ares_uri_t *uri, const char *path)
+{
+ char *temp = NULL;
+
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (path != NULL && !ares_str_isprint(path, ares_strlen(path))) {
+ return ARES_EBADSTR;
+ }
+
+ if (path != NULL) {
+ temp = ares_uri_path_normalize(path);
+ if (temp == NULL) {
+ return ARES_ENOMEM;
+ }
+ }
+
+ ares_free(uri->path);
+ uri->path = temp;
+
+ return ARES_SUCCESS;
+}
+
+const char *ares_uri_get_path(const ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return NULL;
+ }
+
+ return uri->path;
+}
+
+ares_status_t ares_uri_set_query_key(ares_uri_t *uri, const char *key,
+ const char *val)
+{
+ if (uri == NULL || key == NULL || *key == 0) {
+ return ARES_EFORMERR;
+ }
+
+ if (!ares_str_isprint(key, ares_strlen(key)) ||
+ (val != NULL && !ares_str_isprint(val, ares_strlen(val)))) {
+ return ARES_EBADSTR;
+ }
+
+ if (!ares_htable_dict_insert(uri->query, key, val)) {
+ return ARES_ENOMEM;
+ }
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_uri_del_query_key(ares_uri_t *uri, const char *key)
+{
+ if (uri == NULL || key == NULL || *key == 0 ||
+ !ares_str_isprint(key, ares_strlen(key))) {
+ return ARES_EFORMERR;
+ }
+
+ if (!ares_htable_dict_remove(uri->query, key)) {
+ return ARES_ENOTFOUND;
+ }
+
+ return ARES_SUCCESS;
+}
+
+const char *ares_uri_get_query_key(const ares_uri_t *uri, const char *key)
+{
+ if (uri == NULL || key == NULL || *key == 0 ||
+ !ares_str_isprint(key, ares_strlen(key))) {
+ return NULL;
+ }
+
+ return ares_htable_dict_get_direct(uri->query, key);
+}
+
+char **ares_uri_get_query_keys(const ares_uri_t *uri, size_t *num)
+{
+ if (uri == NULL || num == NULL) {
+ return NULL;
+ }
+
+ return ares_htable_dict_keys(uri->query, num);
+}
+
+static ares_status_t ares_uri_set_fragment_own(ares_uri_t *uri, char *fragment)
+{
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (fragment != NULL && !ares_str_isprint(fragment, ares_strlen(fragment))) {
+ return ARES_EBADSTR;
+ }
+
+ ares_free(uri->fragment);
+ uri->fragment = fragment;
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_uri_set_fragment(ares_uri_t *uri, const char *fragment)
+{
+ ares_status_t status;
+ char *temp = NULL;
+
+ if (uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (fragment != NULL) {
+ temp = ares_strdup(fragment);
+ if (temp == NULL) {
+ return ARES_ENOMEM;
+ }
+ }
+
+ status = ares_uri_set_fragment_own(uri, temp);
+ if (status != ARES_SUCCESS) {
+ ares_free(temp);
+ }
+
+ return status;
+}
+
+const char *ares_uri_get_fragment(const ares_uri_t *uri)
+{
+ if (uri == NULL) {
+ return NULL;
+ }
+ return uri->fragment;
+}
+
+static ares_status_t ares_uri_encode_buf(ares_buf_t *buf, const char *str,
+ ares_bool_t (*ischr)(char))
+{
+ size_t i;
+
+ if (buf == NULL || str == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ for (i = 0; str[i] != 0; i++) {
+ if (ischr(str[i])) {
+ if (ares_buf_append_byte(buf, (unsigned char)str[i]) != ARES_SUCCESS) {
+ return ARES_ENOMEM;
+ }
+ } else {
+ if (ares_buf_append_byte(buf, '%') != ARES_SUCCESS) {
+ return ARES_ENOMEM;
+ }
+ if (ares_buf_append_num_hex(buf, (size_t)str[i], 2) != ARES_SUCCESS) {
+ return ARES_ENOMEM;
+ }
+ }
+ }
+ return ARES_SUCCESS;
+}
+
+static ares_status_t ares_uri_write_scheme(const ares_uri_t *uri,
+ ares_buf_t *buf)
+{
+ ares_status_t status;
+
+ status = ares_buf_append_str(buf, uri->scheme);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ status = ares_buf_append_str(buf, "://");
+
+ return status;
+}
+
+static ares_status_t ares_uri_write_authority(const ares_uri_t *uri,
+ ares_buf_t *buf)
+{
+ ares_status_t status;
+ ares_bool_t is_ipv6 = ARES_FALSE;
+
+ if (ares_strlen(uri->username)) {
+ status = ares_uri_encode_buf(buf, uri->username, ares_uri_chis_userinfo);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ if (ares_strlen(uri->password)) {
+ status = ares_buf_append_byte(buf, ':');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ status = ares_uri_encode_buf(buf, uri->password, ares_uri_chis_userinfo);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ if (ares_strlen(uri->username) || ares_strlen(uri->password)) {
+ status = ares_buf_append_byte(buf, '@');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ /* We need to write ipv6 addresses with [ ] */
+ if (strchr(uri->host, '%') != NULL) {
+ /* If we have a % in the name, it must be ipv6 link local scope, so we
+ * don't need to check anything else */
+ is_ipv6 = ARES_TRUE;
+ } else {
+ /* Parse the host to see if it is an ipv6 address */
+ struct ares_addr addr;
+ size_t addrlen;
+ memset(&addr, 0, sizeof(addr));
+ addr.family = AF_INET6;
+ if (ares_dns_pton(uri->host, &addr, &addrlen) != NULL) {
+ is_ipv6 = ARES_TRUE;
+ }
+ }
+
+ if (is_ipv6) {
+ status = ares_buf_append_byte(buf, '[');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ status = ares_buf_append_str(buf, uri->host);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ if (is_ipv6) {
+ status = ares_buf_append_byte(buf, ']');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ if (uri->port > 0) {
+ status = ares_buf_append_byte(buf, ':');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ status = ares_buf_append_num_dec(buf, uri->port, 0);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ return status;
+}
+
+static ares_status_t ares_uri_write_path(const ares_uri_t *uri, ares_buf_t *buf)
+{
+ ares_status_t status;
+
+ if (ares_strlen(uri->path) == 0) {
+ return ARES_SUCCESS;
+ }
+
+ if (*uri->path != '/') {
+ status = ares_buf_append_byte(buf, '/');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ status = ares_uri_encode_buf(buf, uri->path, ares_uri_chis_path);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ return ARES_SUCCESS;
+}
+
+static ares_status_t ares_uri_write_query(const ares_uri_t *uri,
+ ares_buf_t *buf)
+{
+ ares_status_t status;
+ char **keys;
+ size_t num_keys = 0;
+ size_t i;
+
+ if (ares_htable_dict_num_keys(uri->query) == 0) {
+ return ARES_SUCCESS;
+ }
+
+ keys = ares_uri_get_query_keys(uri, &num_keys);
+ if (keys == NULL || num_keys == 0) {
+ return ARES_ENOMEM;
+ }
+
+ status = ares_buf_append_byte(buf, '?');
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ for (i = 0; i < num_keys; i++) {
+ const char *val;
+
+ if (i != 0) {
+ status = ares_buf_append_byte(buf, '&');
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ }
+
+ status = ares_uri_encode_buf(buf, keys[i], ares_uri_chis_query);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ val = ares_uri_get_query_key(uri, keys[i]);
+ if (val != NULL) {
+ status = ares_buf_append_byte(buf, '=');
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_encode_buf(buf, val, ares_uri_chis_query);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ }
+ }
+
+done:
+ ares_free_array(keys, num_keys, ares_free);
+ return status;
+}
+
+static ares_status_t ares_uri_write_fragment(const ares_uri_t *uri,
+ ares_buf_t *buf)
+{
+ ares_status_t status;
+
+ if (!ares_strlen(uri->fragment)) {
+ return ARES_SUCCESS;
+ }
+
+ status = ares_buf_append_byte(buf, '#');
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ status = ares_uri_encode_buf(buf, uri->fragment, ares_uri_chis_fragment);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ return ARES_SUCCESS;
+}
+
+ares_status_t ares_uri_write_buf(const ares_uri_t *uri, ares_buf_t *buf)
+{
+ ares_status_t status;
+ size_t orig_len;
+
+ if (uri == NULL || buf == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ if (ares_strlen(uri->scheme) == 0 || ares_strlen(uri->host) == 0) {
+ return ARES_ENODATA;
+ }
+
+ orig_len = ares_buf_len(buf);
+
+ status = ares_uri_write_scheme(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_write_authority(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_write_path(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_write_query(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_write_fragment(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+done:
+ if (status != ARES_SUCCESS) {
+ ares_buf_set_length(buf, orig_len);
+ }
+ return status;
+}
+
+ares_status_t ares_uri_write(char **out, const ares_uri_t *uri)
+{
+ ares_buf_t *buf;
+ ares_status_t status;
+
+ if (out == NULL || uri == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ *out = NULL;
+
+ buf = ares_buf_create();
+ if (buf == NULL) {
+ return ARES_ENOMEM;
+ }
+
+ status = ares_uri_write_buf(uri, buf);
+ if (status != ARES_SUCCESS) {
+ ares_buf_destroy(buf);
+ return status;
+ }
+
+ *out = ares_buf_finish_str(buf, NULL);
+ return ARES_SUCCESS;
+}
+
+#define xdigit_val(x) \
+ ((x >= '0' && x <= '9') \
+ ? (x - '0') \
+ : ((x >= 'A' && x <= 'F') ? (x - 'A' + 10) : (x - 'a' + 10)))
+
+static ares_status_t ares_uri_decode_inplace(char *str, ares_bool_t is_query,
+ ares_bool_t must_be_printable,
+ size_t *out_len)
+{
+ size_t i;
+ size_t len = 0;
+
+ for (i = 0; str[i] != 0; i++) {
+ if (is_query && str[i] == '+') {
+ str[len++] = ' ';
+ continue;
+ }
+
+ if (str[i] != '%') {
+ str[len++] = str[i];
+ continue;
+ }
+
+ if (!ares_isxdigit(str[i + 1]) || !ares_isxdigit(str[i + 2])) {
+ return ARES_EBADSTR;
+ }
+
+ str[len] = (char)(xdigit_val(str[i + 1]) << 4 | xdigit_val(str[i + 2]));
+
+ if (must_be_printable && !ares_isprint(str[len])) {
+ return ARES_EBADSTR;
+ }
+
+ len++;
+
+ i += 2;
+ }
+
+ str[len] = 0;
+
+ *out_len = len;
+ return ARES_SUCCESS;
+}
+
+static ares_status_t ares_uri_parse_scheme(ares_uri_t *uri, ares_buf_t *buf)
+{
+ ares_status_t status;
+ size_t bytes;
+ char scheme[sizeof(uri->scheme)];
+
+ ares_buf_tag(buf);
+
+ bytes =
+ ares_buf_consume_until_seq(buf, (const unsigned char *)"://", 3, ARES_TRUE);
+ if (bytes == SIZE_MAX || bytes > sizeof(uri->scheme)) {
+ return ARES_EBADSTR;
+ }
+
+ status = ares_buf_tag_fetch_string(buf, scheme, sizeof(scheme));
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ status = ares_uri_set_scheme(uri, scheme);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ /* Consume :// */
+ ares_buf_consume(buf, 3);
+
+ return ARES_SUCCESS;
+}
+
+static ares_status_t ares_uri_parse_userinfo(ares_uri_t *uri, ares_buf_t *buf)
+{
+ size_t userinfo_len;
+ size_t username_len;
+ ares_bool_t has_password = ARES_FALSE;
+ char *temp = NULL;
+ ares_status_t status;
+ size_t len;
+
+ ares_buf_tag(buf);
+
+ /* Search for @, if its not found, return */
+ userinfo_len = ares_buf_consume_until_charset(buf, (const unsigned char *)"@",
+ 1, ARES_TRUE);
+
+ if (userinfo_len == SIZE_MAX) {
+ return ARES_SUCCESS;
+ }
+
+ /* Rollback since now we know there really is userinfo */
+ ares_buf_tag_rollback(buf);
+
+ /* Search for ':', if it isn't found or its past the '@' then we only have
+ * a username and no password */
+ ares_buf_tag(buf);
+ username_len = ares_buf_consume_until_charset(buf, (const unsigned char *)":",
+ 1, ARES_TRUE);
+ if (username_len < userinfo_len) {
+ has_password = ARES_TRUE;
+ status = ares_buf_tag_fetch_strdup(buf, &temp);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_decode_inplace(temp, ARES_FALSE, ARES_TRUE, &len);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_set_username_own(uri, temp);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ temp = NULL;
+
+ /* Consume : */
+ ares_buf_consume(buf, 1);
+ }
+
+ ares_buf_tag(buf);
+ ares_buf_consume_until_charset(buf, (const unsigned char *)"@", 1, ARES_TRUE);
+ status = ares_buf_tag_fetch_strdup(buf, &temp);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_decode_inplace(temp, ARES_FALSE, ARES_TRUE, &len);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ if (has_password) {
+ status = ares_uri_set_password_own(uri, temp);
+ } else {
+ status = ares_uri_set_username_own(uri, temp);
+ }
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ temp = NULL;
+
+ /* Consume @ */
+ ares_buf_consume(buf, 1);
+
+done:
+ ares_free(temp);
+ return status;
+}
+
+static ares_status_t ares_uri_parse_hostport(ares_uri_t *uri, ares_buf_t *buf)
+{
+ unsigned char b;
+ char host[256];
+ char port[6];
+ size_t len;
+ ares_status_t status;
+
+ status = ares_buf_peek_byte(buf, &b);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ /* Bracketed syntax for ipv6 addresses */
+ if (b == '[') {
+ ares_buf_consume(buf, 1);
+ ares_buf_tag(buf);
+ len = ares_buf_consume_until_charset(buf, (const unsigned char *)"]", 1,
+ ARES_TRUE);
+ if (len == SIZE_MAX) {
+ return ARES_EBADSTR;
+ }
+
+ status = ares_buf_tag_fetch_string(buf, host, sizeof(host));
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ /* Consume ']' */
+ ares_buf_consume(buf, 1);
+ } else {
+ /* Either ipv4 or hostname */
+ ares_buf_tag(buf);
+ ares_buf_consume_until_charset(buf, (const unsigned char *)":", 1,
+ ARES_FALSE);
+
+ status = ares_buf_tag_fetch_string(buf, host, sizeof(host));
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ }
+
+ status = ares_uri_set_host(uri, host);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ /* No port if nothing left to consume */
+ if (!ares_buf_len(buf)) {
+ return status;
+ }
+
+ status = ares_buf_peek_byte(buf, &b);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ /* Only valid extra character at this point is ':' */
+ if (b != ':') {
+ return ARES_EBADSTR;
+ }
+ ares_buf_consume(buf, 1);
+
+ len = ares_buf_len(buf);
+ if (len == 0 || len > sizeof(port) - 1) {
+ return ARES_EBADSTR;
+ }
+
+ status = ares_buf_fetch_bytes(buf, (unsigned char *)port, len);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+ port[len] = 0;
+
+ if (!ares_str_isnum(port)) {
+ return ARES_EBADSTR;
+ }
+
+ status = ares_uri_set_port(uri, (unsigned short)atoi(port));
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ return ARES_SUCCESS;
+}
+
+static ares_status_t ares_uri_parse_authority(ares_uri_t *uri, ares_buf_t *buf)
+{
+ ares_status_t status;
+ size_t bytes;
+ ares_buf_t *auth = NULL;
+ const unsigned char *ptr;
+ size_t ptr_len;
+
+ ares_buf_tag(buf);
+
+ bytes = ares_buf_consume_until_charset(buf, (const unsigned char *)"/?#", 3,
+ ARES_FALSE);
+ if (bytes == 0) {
+ return ARES_EBADSTR;
+ }
+
+ status = ares_buf_tag_fetch_constbuf(buf, &auth);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ ptr = ares_buf_peek(auth, &ptr_len);
+ if (!ares_uri_str_isvalid((const char *)ptr, ptr_len,
+ ares_uri_chis_authority)) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ status = ares_uri_parse_userinfo(uri, auth);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_parse_hostport(uri, auth);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ /* NOTE: the /, ?, or # is still in the buffer at this point so it can
+ * be used to determine what parser should be called next */
+
+done:
+ ares_buf_destroy(auth);
+ return status;
+}
+
+static ares_status_t ares_uri_parse_path(ares_uri_t *uri, ares_buf_t *buf)
+{
+ unsigned char b;
+ char *path = NULL;
+ ares_status_t status;
+ size_t len;
+
+ if (ares_buf_len(buf) == 0) {
+ return ARES_SUCCESS;
+ }
+
+ status = ares_buf_peek_byte(buf, &b);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ /* Not a path, must be one of the others */
+ if (b != '/') {
+ return ARES_SUCCESS;
+ }
+
+ ares_buf_tag(buf);
+ ares_buf_consume_until_charset(buf, (const unsigned char *)"?#", 2,
+ ARES_FALSE);
+ status = ares_buf_tag_fetch_strdup(buf, &path);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ if (!ares_uri_str_isvalid(path, SIZE_MAX, ares_uri_chis_path_enc)) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ status = ares_uri_decode_inplace(path, ARES_FALSE, ARES_TRUE, &len);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_set_path(uri, path);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+done:
+ ares_free(path);
+ return status;
+}
+
+static ares_status_t ares_uri_parse_query_buf(ares_uri_t *uri, ares_buf_t *buf)
+{
+ ares_status_t status = ARES_SUCCESS;
+ char *key = NULL;
+ char *val = NULL;
+
+ while (ares_buf_len(buf) > 0) {
+ unsigned char b = 0;
+ size_t len;
+
+ ares_buf_tag(buf);
+
+ /* Its valid to have only a key with no value, so we search for both
+ * delims */
+ len = ares_buf_consume_until_charset(buf, (const unsigned char *)"&=", 2,
+ ARES_FALSE);
+ if (len == 0) {
+ /* If we're here, we have a zero length key which is invalid */
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ if (ares_buf_len(buf) > 0) {
+ /* Determine if we stopped on & or = */
+ status = ares_buf_peek_byte(buf, &b);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ }
+
+ status = ares_buf_tag_fetch_strdup(buf, &key);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ if (!ares_uri_str_isvalid(key, SIZE_MAX, ares_uri_chis_query_enc)) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ status = ares_uri_decode_inplace(key, ARES_TRUE, ARES_TRUE, &len);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ /* Fetch Value */
+ if (b == '=') {
+ /* Skip delimiter */
+ ares_buf_consume(buf, 1);
+ ares_buf_tag(buf);
+ len = ares_buf_consume_until_charset(buf, (const unsigned char *)"&", 1,
+ ARES_FALSE);
+ if (len > 0) {
+ status = ares_buf_tag_fetch_strdup(buf, &val);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ if (!ares_uri_str_isvalid(val, SIZE_MAX, ares_uri_chis_query_enc)) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ status = ares_uri_decode_inplace(val, ARES_TRUE, ARES_TRUE, &len);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ }
+ }
+
+ if (b != 0) {
+ /* Consume '&' */
+ ares_buf_consume(buf, 1);
+ }
+
+ status = ares_uri_set_query_key(uri, key, val);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ ares_free(key);
+ key = NULL;
+ ares_free(val);
+ val = NULL;
+ }
+
+done:
+ ares_free(key);
+ ares_free(val);
+ return status;
+}
+
+static ares_status_t ares_uri_parse_query(ares_uri_t *uri, ares_buf_t *buf)
+{
+ unsigned char b;
+ ares_status_t status;
+ ares_buf_t *query = NULL;
+ size_t len;
+
+ if (ares_buf_len(buf) == 0) {
+ return ARES_SUCCESS;
+ }
+
+ status = ares_buf_peek_byte(buf, &b);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ /* Not a query, must be one of the others */
+ if (b != '?') {
+ return ARES_SUCCESS;
+ }
+
+ /* Only possible terminator is fragment indicator of '#' */
+ ares_buf_consume(buf, 1);
+ ares_buf_tag(buf);
+ len = ares_buf_consume_until_charset(buf, (const unsigned char *)"#", 1,
+ ARES_FALSE);
+ if (len == 0) {
+ /* No data, return */
+ return ARES_SUCCESS;
+ }
+
+ status = ares_buf_tag_fetch_constbuf(buf, &query);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ status = ares_uri_parse_query_buf(uri, query);
+ ares_buf_destroy(query);
+
+ return status;
+}
+
+static ares_status_t ares_uri_parse_fragment(ares_uri_t *uri, ares_buf_t *buf)
+{
+ unsigned char b;
+ char *fragment = NULL;
+ ares_status_t status;
+ size_t len;
+
+ if (ares_buf_len(buf) == 0) {
+ return ARES_SUCCESS;
+ }
+
+ status = ares_buf_peek_byte(buf, &b);
+ if (status != ARES_SUCCESS) {
+ return status;
+ }
+
+ /* Not a fragment, must be one of the others */
+ if (b != '#') {
+ return ARES_SUCCESS;
+ }
+
+ ares_buf_consume(buf, 1);
+
+ if (ares_buf_len(buf) == 0) {
+ return ARES_SUCCESS;
+ }
+
+ /* Rest of the buffer is the fragment */
+ status = ares_buf_fetch_str_dup(buf, ares_buf_len(buf), &fragment);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ if (!ares_uri_str_isvalid(fragment, SIZE_MAX, ares_uri_chis_fragment_enc)) {
+ status = ARES_EBADSTR;
+ goto done;
+ }
+
+ status = ares_uri_decode_inplace(fragment, ARES_FALSE, ARES_TRUE, &len);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_set_fragment_own(uri, fragment);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+ fragment = NULL;
+
+done:
+ ares_free(fragment);
+ return status;
+}
+
+ares_status_t ares_uri_parse_buf(ares_uri_t **out, ares_buf_t *buf)
+{
+ ares_status_t status;
+ ares_uri_t *uri = NULL;
+ size_t orig_pos;
+
+ if (out == NULL || buf == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ *out = NULL;
+
+ orig_pos = ares_buf_get_position(buf);
+
+ uri = ares_uri_create();
+ if (uri == NULL) {
+ status = ARES_ENOMEM;
+ goto done;
+ }
+
+ status = ares_uri_parse_scheme(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_parse_authority(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_parse_path(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_parse_query(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_parse_fragment(uri, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+done:
+ if (status != ARES_SUCCESS) {
+ ares_buf_set_position(buf, orig_pos);
+ ares_uri_destroy(uri);
+ } else {
+ *out = uri;
+ }
+ return status;
+}
+
+ares_status_t ares_uri_parse(ares_uri_t **out, const char *str)
+{
+ ares_status_t status;
+ ares_buf_t *buf = NULL;
+
+ if (out == NULL || str == NULL) {
+ return ARES_EFORMERR;
+ }
+
+ *out = NULL;
+
+ buf = ares_buf_create();
+ if (buf == NULL) {
+ status = ARES_ENOMEM;
+ goto done;
+ }
+
+ status = ares_buf_append_str(buf, str);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+ status = ares_uri_parse_buf(out, buf);
+ if (status != ARES_SUCCESS) {
+ goto done;
+ }
+
+done:
+ ares_buf_destroy(buf);
+
+ return status;
+}
diff --git a/contrib/libs/c-ares/src/lib/util/ares_uri.h b/contrib/libs/c-ares/src/lib/util/ares_uri.h
new file mode 100644
index 0000000000..6a703cba5b
--- /dev/null
+++ b/contrib/libs/c-ares/src/lib/util/ares_uri.h
@@ -0,0 +1,252 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 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_URI_H
+#define __ARES_URI_H
+
+/*! \addtogroup ares_uri URI parser and writer implementation
+ *
+ * This is a fairly complete URI parser and writer implementation (RFC 3986) for
+ * schemes which use the :// syntax. Does not currently support URIs without an
+ * authority section, such as "mailto:person@example.com".
+ *
+ * Its implementation is overkill for our current needs to be able to express
+ * DNS server configuration, but there was really no reason not to support
+ * a greater subset of the specification.
+ *
+ * @{
+ */
+
+
+struct ares_uri;
+
+/*! URI object */
+typedef struct ares_uri ares_uri_t;
+
+/*! Create a new URI object
+ *
+ * \return new ares_uri_t, must be freed with ares_uri_destroy()
+ */
+ares_uri_t *ares_uri_create(void);
+
+/*! Destroy an initialized URI object
+ *
+ * \param[in] uri Initialized URI object
+ */
+void ares_uri_destroy(ares_uri_t *uri);
+
+/*! Set the URI scheme. Automatically lower-cases the scheme provided.
+ * Only allows Alpha, Digit, +, -, and . characters. Maximum length is
+ * 15 characters. This is required to be set to write a URI.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] scheme Scheme to set the object to use
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_scheme(ares_uri_t *uri, const char *scheme);
+
+/*! Retrieve the currently configured URI scheme.
+ *
+ * \param[in] uri Initialized URI object
+ * \return string containing URI scheme
+ */
+const char *ares_uri_get_scheme(const ares_uri_t *uri);
+
+/*! Set the username in the URI object
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] username Username to set. May be NULL to unset existing username.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_username(ares_uri_t *uri, const char *username);
+
+/*! Retrieve the currently configured username.
+ *
+ * \param[in] uri Initialized URI object
+ * \return string containing username, maybe NULL if not set.
+ */
+const char *ares_uri_get_username(const ares_uri_t *uri);
+
+/*! Set the password in the URI object
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] password Password to set. May be NULL to unset existing password.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_password(ares_uri_t *uri, const char *password);
+
+/*! Retrieve the currently configured password.
+ *
+ * \param[in] uri Initialized URI object
+ * \return string containing password, maybe NULL if not set.
+ */
+const char *ares_uri_get_password(const ares_uri_t *uri);
+
+/*! Set the host or ip address in the URI object. This is required to be
+ * set to write a URI. The character set is strictly validated.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] host IPv4, IPv6, or hostname to set.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_host(ares_uri_t *uri, const char *host);
+
+/*! Retrieve the currently configured host (or ip address). IPv6 addresses
+ * May include a link-local scope (e.g. fe80::b542:84df:1719:65e3%en0).
+ *
+ * \param[in] uri Initialized URI object
+ * \return string containing host, maybe NULL if not set.
+ */
+const char *ares_uri_get_host(const ares_uri_t *uri);
+
+/*! Set the port to use in the URI object. A port value of 0 will omit
+ * the port from the URI when written, thus using the scheme's default.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] port Port to set. Use 0 to unset.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_port(ares_uri_t *uri, unsigned short port);
+
+/*! Retrieve the currently configured port
+ *
+ * \param[in] uri Initialized URI object
+ * \return port number, or 0 if not set.
+ */
+unsigned short ares_uri_get_port(const ares_uri_t *uri);
+
+/*! Set the path in the URI object. Unsupported characters will be URI-encoded
+ * when written.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] path Path to set. May be NULL to unset existing path.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_path(ares_uri_t *uri, const char *path);
+
+/*! Retrieves the path in the URI object. If retrieved after parse, this
+ * value will be URI-decoded already.
+ *
+ * \param[in] uri Initialized URI object
+ * \return path string, or NULL if not set.
+ */
+const char *ares_uri_get_path(const ares_uri_t *uri);
+
+/*! Set a new query key/value pair. There is no set order for query keys
+ * when output in the URI, they will be emitted in a random order. Keys are
+ * case-insensitive. Query keys and values will be automatically URI-encoded
+ * when written.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] key Query key to use, must be non-zero length.
+ * \param[in] val Query value to use, may be NULL.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_query_key(ares_uri_t *uri, const char *key,
+ const char *val);
+
+/*! Delete a specific query key.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] key Key to delete.
+ * \return ARES_SUCCESS if deleted, ARES_ENOTFOUND if not found
+ */
+ares_status_t ares_uri_del_query_key(ares_uri_t *uri, const char *key);
+
+/*! Retrieve the value associted with a query key. Keys are case-insensitive.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] key Key to retrieve.
+ * \return string representing value, may be NULL if either not found or
+ * NULL value set. There is currently no way to indicate the
+ * difference.
+ */
+const char *ares_uri_get_query_key(const ares_uri_t *uri, const char *key);
+
+/*! Retrieve a complete list of query keys.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[out] num Number of keys.
+ * \return NULL on failure or no keys. Use
+ * ares_free_array(keys, num, ares_free) when done with array.
+ */
+char **ares_uri_get_query_keys(const ares_uri_t *uri, size_t *num);
+
+/*! Set the fragment in the URI object. Unsupported characters will be
+ * URI-encoded when written.
+ *
+ * \param[in] uri Initialized URI object
+ * \param[in] fragment Fragment to set. May be NULL to unset existing fragment.
+ * \return ARES_SUCCESS on success
+ */
+ares_status_t ares_uri_set_fragment(ares_uri_t *uri, const char *fragment);
+
+/*! Retrieves the fragment in the URI object. If retrieved after parse, this
+ * value will be URI-decoded already.
+ *
+ * \param[in] uri Initialized URI object
+ * \return fragment string, or NULL if not set.
+ */
+const char *ares_uri_get_fragment(const ares_uri_t *uri);
+
+/*! Parse the provided URI buffer into a new URI object.
+ *
+ * \param[out] out Returned new URI object. free with ares_uri_destroy().
+ * \param[in] buf Buffer object containing the URI
+ * \return ARES_SUCCESS on successful parse. On failure the 'buf' object will
+ * be restored to its initial state in case another parser needs to
+ * be attempted.
+ */
+ares_status_t ares_uri_parse_buf(ares_uri_t **out, ares_buf_t *buf);
+
+/*! Parse the provided URI string into a new URI object.
+ *
+ * \param[out] out Returned new URI object. free with ares_uri_destroy().
+ * \param[in] uri URI string to parse
+ * \return ARES_SUCCESS on successful parse
+ */
+ares_status_t ares_uri_parse(ares_uri_t **out, const char *uri);
+
+/*! Write URI object to a new string buffer. Requires at least the scheme
+ * and host to be set for this to succeed.
+ *
+ * \param[out] out Returned new URI string. Free with ares_free().
+ * \param[in] uri Initialized URI object.
+ * \return ARES_SUCCESS on successful write.
+ */
+ares_status_t ares_uri_write(char **out, const ares_uri_t *uri);
+
+/*! Write URI object to an existing ares_buf_t object. Requires at least the
+ * scheme and host to be set for this to succeed.
+ *
+ * \param[in] uri Initialized URI object.
+ * \param[in,out] buf Destination buf object.
+ * \return ARES_SUCCESS on successful write.
+ */
+ares_status_t ares_uri_write_buf(const ares_uri_t *uri, ares_buf_t *buf);
+
+/*! @} */
+
+#endif /* __ARES_URI_H */
diff --git a/contrib/libs/c-ares/ya.make b/contrib/libs/c-ares/ya.make
index dc862a70fe..80562018e2 100644
--- a/contrib/libs/c-ares/ya.make
+++ b/contrib/libs/c-ares/ya.make
@@ -12,9 +12,9 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-VERSION(1.33.1)
+VERSION(1.34.2)
-ORIGINAL_SOURCE(https://github.com/c-ares/c-ares/archive/v1.33.1.tar.gz)
+ORIGINAL_SOURCE(https://github.com/c-ares/c-ares/archive/v1.34.2.tar.gz)
PEERDIR(
contrib/libs/libc_compat
@@ -23,6 +23,7 @@ PEERDIR(
ADDINCL(
GLOBAL contrib/libs/c-ares/include
contrib/libs/c-ares/src/lib
+ contrib/libs/c-ares/src/lib/include
)
NO_COMPILER_WARNINGS()
@@ -48,15 +49,12 @@ IF (NOT EXPORT_CMAKE)
ENDIF()
SRCS(
- src/lib/ares__addrinfo2hostent.c
- src/lib/ares__addrinfo_localhost.c
- src/lib/ares__close_sockets.c
- src/lib/ares__hosts_file.c
- src/lib/ares__parse_into_addrinfo.c
- src/lib/ares__socket.c
- src/lib/ares__sortaddrinfo.c
+ src/lib/ares_addrinfo2hostent.c
+ src/lib/ares_addrinfo_localhost.c
src/lib/ares_android.c
src/lib/ares_cancel.c
+ src/lib/ares_close_sockets.c
+ src/lib/ares_conn.c
src/lib/ares_cookie.c
src/lib/ares_data.c
src/lib/ares_destroy.c
@@ -68,16 +66,20 @@ SRCS(
src/lib/ares_gethostbyaddr.c
src/lib/ares_gethostbyname.c
src/lib/ares_getnameinfo.c
+ src/lib/ares_hosts_file.c
src/lib/ares_init.c
src/lib/ares_library_init.c
src/lib/ares_metrics.c
src/lib/ares_options.c
- src/lib/ares_platform.c
+ src/lib/ares_parse_into_addrinfo.c
src/lib/ares_process.c
src/lib/ares_qcache.c
src/lib/ares_query.c
src/lib/ares_search.c
src/lib/ares_send.c
+ src/lib/ares_set_socket_functions.c
+ src/lib/ares_socket.c
+ src/lib/ares_sortaddrinfo.c
src/lib/ares_strerror.c
src/lib/ares_sysconfig.c
src/lib/ares_sysconfig_files.c
@@ -87,14 +89,16 @@ SRCS(
src/lib/ares_update_servers.c
src/lib/ares_version.c
src/lib/atomic.cpp
- src/lib/dsa/ares__array.c
- src/lib/dsa/ares__htable.c
- src/lib/dsa/ares__htable_asvp.c
- src/lib/dsa/ares__htable_strvp.c
- src/lib/dsa/ares__htable_szvp.c
- src/lib/dsa/ares__htable_vpvp.c
- src/lib/dsa/ares__llist.c
- src/lib/dsa/ares__slist.c
+ src/lib/dsa/ares_array.c
+ src/lib/dsa/ares_htable.c
+ src/lib/dsa/ares_htable_asvp.c
+ src/lib/dsa/ares_htable_dict.c
+ src/lib/dsa/ares_htable_strvp.c
+ src/lib/dsa/ares_htable_szvp.c
+ src/lib/dsa/ares_htable_vpstr.c
+ src/lib/dsa/ares_htable_vpvp.c
+ src/lib/dsa/ares_llist.c
+ src/lib/dsa/ares_slist.c
src/lib/event/ares_event_configchg.c
src/lib/event/ares_event_epoll.c
src/lib/event/ares_event_kqueue.c
@@ -127,15 +131,15 @@ SRCS(
src/lib/record/ares_dns_parse.c
src/lib/record/ares_dns_record.c
src/lib/record/ares_dns_write.c
- src/lib/str/ares__buf.c
+ src/lib/str/ares_buf.c
src/lib/str/ares_str.c
- src/lib/str/ares_strcasecmp.c
src/lib/str/ares_strsplit.c
- src/lib/util/ares__iface_ips.c
- src/lib/util/ares__threads.c
- src/lib/util/ares__timeval.c
+ src/lib/util/ares_iface_ips.c
src/lib/util/ares_math.c
src/lib/util/ares_rand.c
+ src/lib/util/ares_threads.c
+ src/lib/util/ares_timeval.c
+ src/lib/util/ares_uri.c
src/lib/windows_port.c
)
diff --git a/contrib/libs/croaring/.yandex_meta/override.nix b/contrib/libs/croaring/.yandex_meta/override.nix
index fa1cd2b260..7c23a64e1a 100644
--- a/contrib/libs/croaring/.yandex_meta/override.nix
+++ b/contrib/libs/croaring/.yandex_meta/override.nix
@@ -1,12 +1,12 @@
pkgs: attrs: with pkgs; with attrs; rec {
pname = "croaring";
- version = "4.2.0";
+ version = "4.2.1";
src = fetchFromGitHub {
owner = "RoaringBitmap";
repo = "CRoaring";
rev = "v${version}";
- hash = "sha256-PzwtQDAsnRGIjeb3Ax6qqXtdEqtwaCWsj6g46J3Oqm0=";
+ hash = "sha256-qOFkDu0JM+wBIlGGyewojicCp2pmtr643J3dW6el+O4=";
};
patches = [];
diff --git a/contrib/libs/croaring/README.md b/contrib/libs/croaring/README.md
index eb5ee92752..0f938004c9 100644
--- a/contrib/libs/croaring/README.md
+++ b/contrib/libs/croaring/README.md
@@ -530,26 +530,26 @@ bitset_free(b); // frees memory
More advanced example:
```C
- bitset_t *b = bitset_create();
- for (int k = 0; k < 1000; ++k) {
- bitset_set(b, 3 * k);
- }
- // We have bitset_count(b) == 1000.
- // We have bitset_get(b, 3) is true
- // You can iterate through the values:
- size_t k = 0;
- for (size_t i = 0; bitset_next_set_bit(b, &i); i++) {
- // You will have i == k
- k += 3;
- }
- // We support a wide range of operations on two bitsets such as
- // bitset_inplace_symmetric_difference(b1,b2);
- // bitset_inplace_symmetric_difference(b1,b2);
- // bitset_inplace_difference(b1,b2);// should make no difference
- // bitset_inplace_union(b1,b2);
- // bitset_inplace_intersection(b1,b2);
- // bitsets_disjoint
- // bitsets_intersect
+bitset_t *b = bitset_create();
+for (int k = 0; k < 1000; ++k) {
+ bitset_set(b, 3 * k);
+}
+// We have bitset_count(b) == 1000.
+// We have bitset_get(b, 3) is true
+// You can iterate through the values:
+size_t k = 0;
+for (size_t i = 0; bitset_next_set_bit(b, &i); i++) {
+ // You will have i == k
+ k += 3;
+}
+// We support a wide range of operations on two bitsets such as
+// bitset_inplace_symmetric_difference(b1,b2);
+// bitset_inplace_symmetric_difference(b1,b2);
+// bitset_inplace_difference(b1,b2);// should make no difference
+// bitset_inplace_union(b1,b2);
+// bitset_inplace_intersection(b1,b2);
+// bitsets_disjoint
+// bitsets_intersect
```
In some instances, you may want to convert a Roaring bitmap into a conventional (uncompressed) bitset.
@@ -557,28 +557,28 @@ Indeed, bitsets have advantages such as higher query performances in some cases.
illustrates how you may do so:
```C
- roaring_bitmap_t *r1 = roaring_bitmap_create();
- for (uint32_t i = 100; i < 100000; i+= 1 + (i%5)) {
+roaring_bitmap_t *r1 = roaring_bitmap_create();
+for (uint32_t i = 100; i < 100000; i+= 1 + (i%5)) {
roaring_bitmap_add(r1, i);
- }
- for (uint32_t i = 100000; i < 500000; i+= 100) {
+}
+for (uint32_t i = 100000; i < 500000; i+= 100) {
roaring_bitmap_add(r1, i);
- }
- roaring_bitmap_add_range(r1, 500000, 600000);
- bitset_t * bitset = bitset_create();
- bool success = roaring_bitmap_to_bitset(r1, bitset);
- assert(success); // could fail due to memory allocation.
- assert(bitset_count(bitset) == roaring_bitmap_get_cardinality(r1));
- // You can then query the bitset:
- for (uint32_t i = 100; i < 100000; i+= 1 + (i%5)) {
- assert(bitset_get(bitset,i));
- }
- for (uint32_t i = 100000; i < 500000; i+= 100) {
- assert(bitset_get(bitset,i));
- }
- // you must free the memory:
- bitset_free(bitset);
- roaring_bitmap_free(r1);
+}
+roaring_bitmap_add_range(r1, 500000, 600000);
+bitset_t * bitset = bitset_create();
+bool success = roaring_bitmap_to_bitset(r1, bitset);
+assert(success); // could fail due to memory allocation.
+assert(bitset_count(bitset) == roaring_bitmap_get_cardinality(r1));
+// You can then query the bitset:
+for (uint32_t i = 100; i < 100000; i+= 1 + (i%5)) {
+ assert(bitset_get(bitset,i));
+}
+for (uint32_t i = 100000; i < 500000; i+= 100) {
+ assert(bitset_get(bitset,i));
+}
+// you must free the memory:
+bitset_free(bitset);
+roaring_bitmap_free(r1);
```
You should be aware that a convention bitset (`bitset_t *`) may use much more
diff --git a/contrib/libs/croaring/include/roaring/roaring_version.h b/contrib/libs/croaring/include/roaring/roaring_version.h
index 33926a2102..aad63adecb 100644
--- a/contrib/libs/croaring/include/roaring/roaring_version.h
+++ b/contrib/libs/croaring/include/roaring/roaring_version.h
@@ -2,11 +2,11 @@
// /include/roaring/roaring_version.h automatically generated by release.py, do not change by hand
#ifndef ROARING_INCLUDE_ROARING_VERSION
#define ROARING_INCLUDE_ROARING_VERSION
-#define ROARING_VERSION "4.2.0"
+#define ROARING_VERSION "4.2.1"
enum {
ROARING_VERSION_MAJOR = 4,
ROARING_VERSION_MINOR = 2,
- ROARING_VERSION_REVISION = 0
+ ROARING_VERSION_REVISION = 1
};
#endif // ROARING_INCLUDE_ROARING_VERSION
// clang-format on \ No newline at end of file
diff --git a/contrib/libs/croaring/src/containers/bitset.c b/contrib/libs/croaring/src/containers/bitset.c
index 7b84af82ec..7a38d072b3 100644
--- a/contrib/libs/croaring/src/containers/bitset.c
+++ b/contrib/libs/croaring/src/containers/bitset.c
@@ -904,7 +904,7 @@ int bitset_container_##opname##_nocard(const bitset_container_t *src_1, \
} \
int bitset_container_##opname##_justcard(const bitset_container_t *src_1, \
const bitset_container_t *src_2) { \
- printf("A1\n"); const uint64_t * __restrict__ words_1 = src_1->words; \
+ const uint64_t * __restrict__ words_1 = src_1->words; \
const uint64_t * __restrict__ words_2 = src_2->words; \
int32_t sum = 0; \
for (size_t i = 0; i < BITSET_CONTAINER_SIZE_IN_WORDS; i += 2) { \
diff --git a/contrib/libs/croaring/ya.make b/contrib/libs/croaring/ya.make
index 78b8b40c9d..63e87a8b2a 100644
--- a/contrib/libs/croaring/ya.make
+++ b/contrib/libs/croaring/ya.make
@@ -10,9 +10,9 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-VERSION(4.2.0)
+VERSION(4.2.1)
-ORIGINAL_SOURCE(https://github.com/RoaringBitmap/CRoaring/archive/v4.2.0.tar.gz)
+ORIGINAL_SOURCE(https://github.com/RoaringBitmap/CRoaring/archive/v4.2.1.tar.gz)
ADDINCL(
GLOBAL contrib/libs/croaring/include
diff --git a/contrib/libs/lzma/.yandex_meta/override.nix b/contrib/libs/lzma/.yandex_meta/override.nix
index 56d000f26b..a0b15f6179 100644
--- a/contrib/libs/lzma/.yandex_meta/override.nix
+++ b/contrib/libs/lzma/.yandex_meta/override.nix
@@ -1,11 +1,11 @@
pkgs: attrs: with pkgs; with attrs; rec {
- version = "5.6.2";
+ version = "5.6.3";
src = fetchFromGitHub {
owner = "tukaani-project";
repo = "xz";
rev = "v${version}";
- hash = "sha256-NB6EHOSAL4eMyhgSJqyJ10H9HgTUv5NFJpEQTEzUofo=";
+ hash = "sha256-2bxTxgDGlA0zPlfFs69bkuBGL44Se1ktSZCJ1Pt75I0=";
};
nativeBuildInputs = [ autoreconfHook ];
diff --git a/contrib/libs/lzma/INSTALL b/contrib/libs/lzma/INSTALL
index ba187bbbb5..f742281771 100644
--- a/contrib/libs/lzma/INSTALL
+++ b/contrib/libs/lzma/INSTALL
@@ -789,7 +789,7 @@ XZ Utils Installation
The configure script determines if assembler code can be used by
looking at the configure triplet; there is currently no check if
- the assembler code can actually actually be built. The x86 assembler
+ the assembler code can actually be built. The x86 assembler
code should work on x86 GNU/Linux, *BSDs, Solaris, Darwin, MinGW,
Cygwin, and DJGPP. On other x86 systems, there may be problems and
the assembler code may need to be disabled with the configure option.
diff --git a/contrib/libs/lzma/NEWS b/contrib/libs/lzma/NEWS
index 77eab744f5..478b24b26e 100644
--- a/contrib/libs/lzma/NEWS
+++ b/contrib/libs/lzma/NEWS
@@ -2,6 +2,131 @@
XZ Utils Release Notes
======================
+5.6.3 (2024-10-01)
+
+ IMPORTANT: This includes a Windows-specific security fix to
+ the command line tools. liblzma isn't affected by this issue.
+
+ * liblzma:
+
+ - Fix x86-64 inline assembly compatibility with GNU Binutils
+ older than 2.27.
+
+ - Fix the build with GCC 4.2 on OpenBSD/sparc64.
+
+ * xzdec: Display an error instead of failing silently if the
+ unsupported option -M is specified.
+
+ * lzmainfo: Fix integer overflows when rounding the dictionary and
+ uncompressed sizes to the nearest mebibyte.
+
+ * Windows (except Cygwin and MSYS2): Add an application manifest to
+ xz, xzdec, lzmadec, and lzmainfo executables:
+
+ - Declare them compatible with Vista/7/8/8.1/10/11. This way
+ the programs won't needlessly use Operating System Context
+ of Vista when running on later Windows versions. This setting
+ doesn't mean that the executables cannot run on even older
+ versions if otherwise built that way.
+
+ - Declare them as UAC-compliant. MSVC added this by default
+ already but it wasn't done with MinGW-w64, at least not
+ with all toolchain variants.
+
+ - Declare them long path aware. This makes long path names
+ work on Windows 10 and 11 if the feature has been enabled
+ in the Windows registry.
+
+ - Use the UTF-8 code page on Windows 10 version 1903 and later.
+
+ * Now command line tools can access files whose names
+ contain characters that don't exist in the current
+ legacy code page.
+
+ * The options --files and --files0 now expect file lists
+ to be in UTF-8 instead of the legacy code page.
+
+ * This fixes a security issue: If a command line contains
+ Unicode characters (for example, filenames) that don't
+ exist in the current legacy code page, the characters are
+ converted to similar-looking characters with best-fit
+ mapping. Some best-fit mappings result in ASCII
+ characters that change the meaning of the command line,
+ which can be exploited with malicious filenames to do
+ argument injection or directory traversal attacks.
+ UTF-8 avoids best-fit mappings and thus fixes the issue.
+
+ Forcing the process code page to UTF-8 is possible only
+ on Windows 10 version 1903 and later. The command line
+ tools remain vulnerable if used on an old older
+ version of Windows.
+
+ This issue was discovered by Orange Tsai and splitline
+ from DEVCORE Research Team.
+
+ A related smaller issue remains: Windows filenames may
+ contain unpaired surrogates (invalid UTF-16). These are
+ converted to the replacement character U+FFFD in the
+ UTF-8 code page. Thus, filenames with different unpaired
+ surrogates appear identical and aren't distinguishable
+ from filenames that contain the actual replacement
+ character U+FFFD.
+
+ * When building with MinGW-w64, it is recommended to use
+ UCRT version instead of the old MSVCRT. For example,
+ non-ASCII characters from filenames won't print
+ correctly in messages to console with MSVCRT with
+ the UTF-8 code page (a cosmetic issue). liblzma-only
+ builds are still fine with MSVCRT.
+
+ - Cygwin and MSYS2 process command line options differently and
+ the above issues don't exist. There is no need to replace the
+ default application manifest on Cygwin and MSYS2.
+
+ * Autotools-based build:
+
+ - Fix feature checks with link-time optimization (-flto).
+
+ - Solaris: Fix a compatibility issue in version.sh. It matters
+ if one wants to regenerate configure by running autoconf.
+
+ * CMake:
+
+ - Use paths relative to ${prefix} in liblzma.pc when possible.
+ This is done only with CMake >= 3.20.
+
+ - MSVC: Install liblzma.pc as it can be useful with MSVC too.
+
+ - Windows: Fix liblzma filename prefix, for example:
+
+ * Cygwin: The DLL was incorrectly named liblzma-5.dll.
+ Now it is cyglzma-5.dll.
+
+ * MSVC: Rename import library from liblzma.lib to lzma.lib
+ while keeping liblzma.dll name as is. This helps with
+ "pkgconf --msvc-syntax --libs liblzma" because it mungles
+ "-llzma" in liblzma.pc to "lzma.lib".
+
+ * MinGW-w64: No changes.
+
+ - Windows: Use the correct resource file for lzmadec.exe.
+ Previously the resource file for xzdec.exe was used for both.
+ Autotools-based build isn't affected.
+
+ - Prefer a C11 compiler over a C99 compiler but accept both.
+
+ - Link Threads::Threads against liblzma using PRIVATE so that
+ -pthread and such flags won't unnecessarily get included in
+ the usage requirements of shared liblzma. That is,
+ target_link_libraries(foo PRIVATE liblzma::liblzma) no
+ longer adds -pthread if using POSIX threads and linking
+ against shared liblzma. The threading flags are still added
+ if linking against static liblzma.
+
+ * Updated translations: Catalan, Chinese (simplified), and
+ Brazilian Portuguese.
+
+
5.6.2 (2024-05-29)
* Remove the backdoor (CVE-2024-3094).
diff --git a/contrib/libs/lzma/THANKS b/contrib/libs/lzma/THANKS
index 7d2d4fe82a..5ed0743b50 100644
--- a/contrib/libs/lzma/THANKS
+++ b/contrib/libs/lzma/THANKS
@@ -33,6 +33,7 @@ has been important. :-) In alphabetical order:
- Tomer Chachamu
- Vitaly Chikunov
- Antoine Cœur
+ - Felix Collin
- Gabi Davar
- İhsan Doğan
- Chris Donawa
@@ -69,9 +70,11 @@ has been important. :-) In alphabetical order:
- Hans Jansen
- Jouk Jansen
- Jun I Jin
+ - Christoph Junghans
- Kiyoshi Kanazawa
- Joona Kannisto
- Per Øyvind Karlsen
+ - Firas Khalil Khana
- Iouri Kharon
- Thomas Klausner
- Richard Koch
@@ -92,6 +95,7 @@ has been important. :-) In alphabetical order:
- Cary Lewis
- Wim Lewis
- Xin Li
+ - Yifeng Li
- Eric Lindblad
- Lorenzo De Liso
- H.J. Lu
@@ -107,9 +111,11 @@ has been important. :-) In alphabetical order:
- Nathan Moinvaziri
- Étienne Mollier
- Conley Moorhous
+ - Andrew Murray
- Rafał Mużyło
- Adrien Nader
- Evan Nemerson
+ - Alexander Neumann
- Hongbo Ni
- Jonathan Nieder
- Andre Noll
@@ -118,11 +124,13 @@ has been important. :-) In alphabetical order:
- Daniel Packard
- Filip Palian
- Peter Pallinger
+ - Kai Pastor
- Rui Paulo
- Igor Pavlov
- Diego Elio Pettenò
- Elbert Pol
- Mikko Pouru
+ - Frank Prochnow
- Rich Prohaska
- Trần Ngọc Quân
- Pavel Raiskup
@@ -138,9 +146,12 @@ has been important. :-) In alphabetical order:
- Stephen Sachs
- Jukka Salmi
- Agostino Sarubbo
+ - Vijay Sarvepalli
- Alexandre Sauvé
- Benno Schulenberg
- Andreas Schwab
+ - Eli Schwartz
+ - Peter Seiderer
- Bhargava Shastry
- Dan Shechter
- Stuart Shelton
@@ -149,14 +160,18 @@ has been important. :-) In alphabetical order:
- Brad Smith
- Bruce Stark
- Pippijn van Steenhoven
+ - Tobias Stoeckmann
- Martin Storsjö
- Jonathan Stott
- Dan Stromberg
+ - Douglas Thor
- Vincent Torri
- Alexey Tourbin
- Paul Townsend
- Mohammed Adnène Trojette
+ - Orange Tsai
- Taiki Tsunekawa
+ - Mathieu Vachon
- Maksym Vatsyk
- Loganaden Velvindron
- Patrick J. Volkerding
@@ -176,6 +191,10 @@ has been important. :-) In alphabetical order:
- Ryan Young
- Andreas Zieringer
+Companies:
+ - Google
+ - Sandfly Security
+
Also thanks to all the people who have participated in the Tukaani project.
I have probably forgot to add some names to the above list. Sorry about
diff --git a/contrib/libs/lzma/common/tuklib_integer.h b/contrib/libs/lzma/common/tuklib_integer.h
index 8230a71229..ffe4753537 100644
--- a/contrib/libs/lzma/common/tuklib_integer.h
+++ b/contrib/libs/lzma/common/tuklib_integer.h
@@ -86,9 +86,15 @@
#elif defined(HAVE_SYS_ENDIAN_H)
// *BSDs and Darwin
# include <sys/endian.h>
-# define byteswap16(num) bswap16(num)
-# define byteswap32(num) bswap32(num)
-# define byteswap64(num) bswap64(num)
+# ifdef __OpenBSD__
+# define byteswap16(num) swap16(num)
+# define byteswap32(num) swap32(num)
+# define byteswap64(num) swap64(num)
+# else
+# define byteswap16(num) bswap16(num)
+# define byteswap32(num) bswap32(num)
+# define byteswap64(num) bswap64(num)
+# endif
#elif defined(HAVE_SYS_BYTEORDER_H)
// Solaris
@@ -237,7 +243,7 @@
// from the memcpy() method than from simple byte-by-byte shift-or code
// when reading a 32-bit integer:
//
-// (1) It may be constructed on stack using using four 8-bit loads,
+// (1) It may be constructed on stack using four 8-bit loads,
// four 8-bit stores to stack, and finally one 32-bit load from stack.
//
// (2) Especially with -Os, an actual memcpy() call may be emitted.
diff --git a/contrib/libs/lzma/liblzma/api/lzma/container.h b/contrib/libs/lzma/liblzma/api/lzma/container.h
index 8e4af42038..ee5d77e4f1 100644
--- a/contrib/libs/lzma/liblzma/api/lzma/container.h
+++ b/contrib/libs/lzma/liblzma/api/lzma/container.h
@@ -306,7 +306,7 @@ extern LZMA_API(uint64_t) lzma_easy_decoder_memusage(uint32_t preset)
* number and zero or more flags. Usually flags aren't
* used, so preset is simply a number [0, 9] which match
* the options -0 ... -9 of the xz command line tool.
- * Additional flags can be be set using bitwise-or with
+ * Additional flags can be set using bitwise-or with
* the preset level number, e.g. 6 | LZMA_PRESET_EXTREME.
* \param check Integrity check type to use. See check.h for available
* checks. The xz command line tool defaults to
diff --git a/contrib/libs/lzma/liblzma/api/lzma/version.h b/contrib/libs/lzma/liblzma/api/lzma/version.h
index 53526b992c..e86c0ea4c3 100644
--- a/contrib/libs/lzma/liblzma/api/lzma/version.h
+++ b/contrib/libs/lzma/liblzma/api/lzma/version.h
@@ -22,7 +22,7 @@
#define LZMA_VERSION_MINOR 6
/** \brief Patch version number of the liblzma release. */
-#define LZMA_VERSION_PATCH 2
+#define LZMA_VERSION_PATCH 3
/**
* \brief Version stability marker
diff --git a/contrib/libs/lzma/liblzma/check/crc32_table.c b/contrib/libs/lzma/liblzma/check/crc32_table.c
index 7778e79e92..db8d9d5831 100644
--- a/contrib/libs/lzma/liblzma/check/crc32_table.c
+++ b/contrib/libs/lzma/liblzma/check/crc32_table.c
@@ -34,9 +34,9 @@ typedef void lzma_crc32_dummy;
// Having the declaration here silences clang -Wmissing-variable-declarations.
extern const uint32_t lzma_crc32_table[8][256];
-# ifdef WORDS_BIGENDIAN
-# error #include "crc32_table_be.h"
-# else
-# include "crc32_table_le.h"
-# endif
+# ifdef WORDS_BIGENDIAN
+# error #include "crc32_table_be.h"
+# else
+# include "crc32_table_le.h"
+# endif
#endif
diff --git a/contrib/libs/lzma/liblzma/check/crc_common.h b/contrib/libs/lzma/liblzma/check/crc_common.h
index 63a7b5cefe..c15d4c675c 100644
--- a/contrib/libs/lzma/liblzma/check/crc_common.h
+++ b/contrib/libs/lzma/liblzma/check/crc_common.h
@@ -76,9 +76,9 @@
// NOTE: Keep this and the next check in sync with the macro
// NO_CRC32_TABLE in crc32_table.c
#if defined(HAVE_ARM64_CRC32) && !defined(WORDS_BIGENDIAN)
-// Allow ARM64 CRC32 instruction without a runtime check if
-// __ARM_FEATURE_CRC32 is defined. GCC and Clang only define this if the
-// proper compiler options are used.
+ // Allow ARM64 CRC32 instruction without a runtime check if
+ // __ARM_FEATURE_CRC32 is defined. GCC and Clang only define
+ // this if the proper compiler options are used.
# if defined(__ARM_FEATURE_CRC32)
# define CRC32_ARCH_OPTIMIZED 1
# define CRC32_ARM64 1
diff --git a/contrib/libs/lzma/liblzma/check/crc_x86_clmul.h b/contrib/libs/lzma/liblzma/check/crc_x86_clmul.h
index f1254ece18..50306e49a7 100644
--- a/contrib/libs/lzma/liblzma/check/crc_x86_clmul.h
+++ b/contrib/libs/lzma/liblzma/check/crc_x86_clmul.h
@@ -266,7 +266,7 @@ crc32_arch_optimized(const uint8_t *buf, size_t size, uint32_t crc)
__m128i v0, v1, v2;
- crc_simd_body(buf, size, &v0, &v1, vfold16,
+ crc_simd_body(buf, size, &v0, &v1, vfold16,
_mm_cvtsi32_si128((int32_t)~crc));
v1 = _mm_xor_si128(
@@ -355,12 +355,12 @@ crc64_arch_optimized(const uint8_t *buf, size_t size, uint64_t crc)
__m128i v0, v1, v2;
#if defined(__i386__) || defined(_M_IX86)
- crc_simd_body(buf, size, &v0, &v1, vfold16,
+ crc_simd_body(buf, size, &v0, &v1, vfold16,
_mm_set_epi64x(0, (int64_t)~crc));
#else
// GCC and Clang would produce good code with _mm_set_epi64x
// but MSVC needs _mm_cvtsi64_si128 on x86-64.
- crc_simd_body(buf, size, &v0, &v1, vfold16,
+ crc_simd_body(buf, size, &v0, &v1, vfold16,
_mm_cvtsi64_si128((int64_t)~crc));
#endif
@@ -385,6 +385,9 @@ crc64_arch_optimized(const uint8_t *buf, size_t size, uint64_t crc)
#endif // BUILDING_CRC64_CLMUL
+// Even though this is an inline function, compile it only when needed.
+// This way it won't appear in E2K builds at all.
+#if defined(CRC32_GENERIC) || defined(CRC64_GENERIC)
// Inlining this function duplicates the function body in crc32_resolve() and
// crc64_resolve(), but this is acceptable because this is a tiny function.
static inline bool
@@ -420,9 +423,10 @@ is_arch_extension_supported(void)
// - ICC's _may_i_use_cpu_feature: the other methods should work too.
// - GCC >= 6 / Clang / ICX __builtin_cpu_supports("pclmul")
//
- // CPUID decding is needed with MSVC anyway and older GCC. This keeps
+ // CPUID decoding is needed with MSVC anyway and older GCC. This keeps
// the feature checks in the build system simpler too. The nice thing
// about __builtin_cpu_supports would be that it generates very short
// code as is it only reads a variable set at startup but a few bytes
// doesn't matter here.
}
+#endif
diff --git a/contrib/libs/lzma/liblzma/check/sha256.c b/contrib/libs/lzma/liblzma/check/sha256.c
index bd0d280639..c067a3a693 100644
--- a/contrib/libs/lzma/liblzma/check/sha256.c
+++ b/contrib/libs/lzma/liblzma/check/sha256.c
@@ -21,7 +21,7 @@
static inline uint32_t
rotr_32(uint32_t num, unsigned amount)
{
- return (num >> amount) | (num << (32 - amount));
+ return (num >> amount) | (num << (32 - amount));
}
#define blk0(i) (W[i] = conv32be(data[i]))
diff --git a/contrib/libs/lzma/liblzma/rangecoder/range_decoder.h b/contrib/libs/lzma/liblzma/rangecoder/range_decoder.h
index 31a58d1ffb..a8aca9077c 100644
--- a/contrib/libs/lzma/liblzma/rangecoder/range_decoder.h
+++ b/contrib/libs/lzma/liblzma/rangecoder/range_decoder.h
@@ -592,13 +592,13 @@ do { \
// *_only = rc_asm_y or _n to include or exclude code marked with them
#define rc_asm_bittree(a, b, first_only, middle_only, last_only) \
first_only( \
- "movzw 2(%[probs_base]), %[prob" #a "]\n\t" \
+ "movzwl 2(%[probs_base]), %[prob" #a "]\n\t" \
"mov $2, %[symbol]\n\t" \
- "movzw 4(%[probs_base]), %[prob" #b "]\n\t" \
+ "movzwl 4(%[probs_base]), %[prob" #b "]\n\t" \
) \
middle_only( \
/* Note the scaling of 4 instead of 2: */ \
- "movzw (%[probs_base], %q[symbol], 4), %[prob" #b "]\n\t" \
+ "movzwl (%[probs_base], %q[symbol], 4), %[prob" #b "]\n\t" \
) \
last_only( \
"add %[symbol], %[symbol]\n\t" \
@@ -610,11 +610,11 @@ do { \
"cmovae %[t0], %[range]\n\t" \
\
first_only( \
- "movzw 6(%[probs_base]), %[t0]\n\t" \
+ "movzwl 6(%[probs_base]), %[t0]\n\t" \
"cmovae %[t0], %[prob" #b "]\n\t" \
) \
middle_only( \
- "movzw 2(%[probs_base], %q[symbol], 4), %[t0]\n\t" \
+ "movzwl 2(%[probs_base], %q[symbol], 4), %[t0]\n\t" \
"lea (%q[symbol], %q[symbol]), %[symbol]\n\t" \
"cmovae %[t0], %[prob" #b "]\n\t" \
) \
@@ -716,12 +716,12 @@ do { \
#define rc_asm_bittree_rev(a, b, add, dcur, dnext0, dnext1, \
first_only, middle_only, last_only) \
first_only( \
- "movzw 2(%[probs_base]), %[prob" #a "]\n\t" \
+ "movzwl 2(%[probs_base]), %[prob" #a "]\n\t" \
"xor %[symbol], %[symbol]\n\t" \
- "movzw 4(%[probs_base]), %[prob" #b "]\n\t" \
+ "movzwl 4(%[probs_base]), %[prob" #b "]\n\t" \
) \
middle_only( \
- "movzw " #dnext0 "(%[probs_base], %q[symbol], 2), " \
+ "movzwl " #dnext0 "(%[probs_base], %q[symbol], 2), " \
"%[prob" #b "]\n\t" \
) \
\
@@ -731,11 +731,11 @@ do { \
"cmovae %[t0], %[range]\n\t" \
\
first_only( \
- "movzw 6(%[probs_base]), %[t0]\n\t" \
+ "movzwl 6(%[probs_base]), %[t0]\n\t" \
"cmovae %[t0], %[prob" #b "]\n\t" \
) \
middle_only( \
- "movzw " #dnext1 "(%[probs_base], %q[symbol], 2), %[t0]\n\t" \
+ "movzwl " #dnext1 "(%[probs_base], %q[symbol], 2), %[t0]\n\t" \
"cmovae %[t0], %[prob" #b "]\n\t" \
) \
\
@@ -788,7 +788,7 @@ do { \
uint32_t t_index; \
\
__asm__( \
- "movzw (%[probs_base], %q[symbol], 2), %[prob]\n\t" \
+ "movzwl (%[probs_base], %q[symbol], 2), %[prob]\n\t" \
"mov %[symbol], %[index]\n\t" \
\
"add %[dest], %[t2]\n\t" \
@@ -844,7 +844,7 @@ do { \
"and %[offset], %[match_bit]\n\t" \
"add %[match_bit], %[symbol]\n\t" \
\
- "movzw (%[probs_base], %q[symbol], 2), %[prob]\n\t" \
+ "movzwl (%[probs_base], %q[symbol], 2), %[prob]\n\t" \
\
"add %[symbol], %[symbol]\n\t" \
\
diff --git a/contrib/libs/lzma/liblzma/simple/arm64.c b/contrib/libs/lzma/liblzma/simple/arm64.c
index 0a73f6c8bf..16c2f565f7 100644
--- a/contrib/libs/lzma/liblzma/simple/arm64.c
+++ b/contrib/libs/lzma/liblzma/simple/arm64.c
@@ -46,11 +46,11 @@ arm64_code(void *simple lzma_attribute((__unused__)),
// The full 26-bit immediate is converted.
// The range is +/-128 MiB.
//
- // Using the full range is helps quite a lot with
+ // Using the full range helps quite a lot with
// big executables. Smaller range would reduce false
// positives in non-code sections of the input though
// so this is a compromise that slightly favors big
- // files. With the full range only six bits of the 32
+ // files. With the full range, only six bits of the 32
// need to match to trigger a conversion.
const uint32_t src = instr;
instr = 0x94000000;
diff --git a/contrib/libs/lzma/ya.make b/contrib/libs/lzma/ya.make
index 8e651471d5..8d69e9753d 100644
--- a/contrib/libs/lzma/ya.make
+++ b/contrib/libs/lzma/ya.make
@@ -11,9 +11,9 @@ LICENSE(
LICENSE_TEXTS(.yandex_meta/licenses.list.txt)
-VERSION(5.6.2)
+VERSION(5.6.3)
-ORIGINAL_SOURCE(https://github.com/tukaani-project/xz/archive/v5.6.2.tar.gz)
+ORIGINAL_SOURCE(https://github.com/tukaani-project/xz/archive/v5.6.3.tar.gz)
ADDINCL(
GLOBAL contrib/libs/lzma/liblzma/api
diff --git a/contrib/python/clickhouse-connect/.dist-info/METADATA b/contrib/python/clickhouse-connect/.dist-info/METADATA
index 24f7a78836..bb928a4bc2 100644
--- a/contrib/python/clickhouse-connect/.dist-info/METADATA
+++ b/contrib/python/clickhouse-connect/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: clickhouse-connect
-Version: 0.8.1
+Version: 0.8.2
Summary: ClickHouse Database Core Driver for Python, Pandas, and Superset
Home-page: https://github.com/ClickHouse/clickhouse-connect
Author: ClickHouse Inc.
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
index 398cfc4c74..c400d68132 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/__version__.py
@@ -1 +1 @@
-version = '0.8.1'
+version = '0.8.2'
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py
index fe11c27883..d6b84885e4 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/client.py
@@ -59,9 +59,15 @@ class Client(ABC):
"""
self.query_limit = coerce_int(query_limit)
self.query_retries = coerce_int(query_retries)
+ if database and not database == '__default__':
+ self.database = database
if show_clickhouse_errors is not None:
self.show_clickhouse_errors = coerce_bool(show_clickhouse_errors)
self.server_host_name = server_host_name
+ self.uri = uri
+ self._init_common_settings(apply_server_timezone)
+
+ def _init_common_settings(self, apply_server_timezone:Optional[Union[str, bool]] ):
self.server_tz, dst_safe = pytz.UTC, True
self.server_version, server_tz = \
tuple(self.command('SELECT version(), timezone()', use_database=False))
@@ -83,8 +89,7 @@ class Client(ABC):
readonly = common.get_setting('readonly')
server_settings = self.query(f'SELECT name, value, {readonly} as readonly FROM system.settings LIMIT 10000')
self.server_settings = {row['name']: SettingDef(**row) for row in server_settings.named_results()}
- if database and not database == '__default__':
- self.database = database
+
if self.min_version(CH_VERSION_WITH_PROTOCOL):
# Unfortunately we have to validate that the client protocol version is actually used by ClickHouse
# since the query parameter could be stripped off (in particular, by CHProxy)
@@ -95,7 +100,9 @@ class Client(ABC):
self.protocol_version = PROTOCOL_VERSION_WITH_LOW_CARD
if self._setting_status('date_time_input_format').is_writable:
self.set_client_setting('date_time_input_format', 'best_effort')
- self.uri = uri
+ if self._setting_status('allow_experimental_json_type').is_set:
+ self.set_client_setting('cast_string_to_dynamic_use_inference', '1')
+
def _validate_settings(self, settings: Optional[Dict[str, Any]]) -> Dict[str, str]:
"""
@@ -655,7 +662,8 @@ class Client(ABC):
settings=settings, context=context)
def insert_arrow(self, table: str,
- arrow_table, database: str = None,
+ arrow_table,
+ database: str = None,
settings: Optional[Dict] = None) -> QuerySummary:
"""
Insert a PyArrow table DataFrame into ClickHouse using raw Arrow format
@@ -666,7 +674,8 @@ class Client(ABC):
:return: QuerySummary with summary information, throws exception if insert fails
"""
full_table = table if '.' in table or not database else f'{database}.{table}'
- column_names, insert_block = arrow_buffer(arrow_table)
+ compression = self.write_compression if self.write_compression in ('zstd', 'lz4') else None
+ column_names, insert_block = arrow_buffer(arrow_table, compression)
return self.raw_insert(full_table, column_names, insert_block, settings, 'Arrow')
def create_insert_context(self,
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httputil.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httputil.py
index 58b5460a59..558d66f614 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httputil.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httputil.py
@@ -244,7 +244,8 @@ class ResponseSource:
else:
chunk = chunks.popleft()
current_size -= len(chunk)
- yield chunk
+ if chunk:
+ yield chunk
self.gen = buffered()
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/query.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/query.py
index 54edbeff09..bd10270e71 100644
--- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/query.py
+++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/query.py
@@ -374,9 +374,12 @@ def to_arrow_batches(buffer: IOBase) -> StreamContext:
return StreamContext(buffer, reader)
-def arrow_buffer(table) -> Tuple[Sequence[str], bytes]:
+def arrow_buffer(table, compression: Optional[str] = None) -> Tuple[Sequence[str], bytes]:
pyarrow = check_arrow()
+ options = None
+ if compression in ('zstd', 'lz4'):
+ options = pyarrow.ipc.IpcWriteOptions(compression=pyarrow.Codec(compression=compression))
sink = pyarrow.BufferOutputStream()
- with pyarrow.RecordBatchFileWriter(sink, table.schema) as writer:
+ with pyarrow.RecordBatchFileWriter(sink, table.schema, options=options) as writer:
writer.write(table)
return table.schema.names, sink.getvalue()
diff --git a/contrib/python/clickhouse-connect/ya.make b/contrib/python/clickhouse-connect/ya.make
index e594301105..89d942df53 100644
--- a/contrib/python/clickhouse-connect/ya.make
+++ b/contrib/python/clickhouse-connect/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(0.8.1)
+VERSION(0.8.2)
LICENSE(Apache-2.0)
diff --git a/contrib/python/ipython/py3/.dist-info/METADATA b/contrib/python/ipython/py3/.dist-info/METADATA
index db0f29ac01..b3a405d51d 100644
--- a/contrib/python/ipython/py3/.dist-info/METADATA
+++ b/contrib/python/ipython/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ipython
-Version: 8.27.0
+Version: 8.28.0
Summary: IPython: Productive Interactive Computing
Author: The IPython Development Team
Author-email: ipython-dev@python.org
diff --git a/contrib/python/ipython/py3/IPython/core/debugger.py b/contrib/python/ipython/py3/IPython/core/debugger.py
index a858972bb5..e7a0b8fb55 100644
--- a/contrib/python/ipython/py3/IPython/core/debugger.py
+++ b/contrib/python/ipython/py3/IPython/core/debugger.py
@@ -14,14 +14,35 @@ Among other things, this subclass of PDB:
- hide frames in tracebacks based on `__tracebackhide__`
- allows to skip frames based on `__debuggerskip__`
+
+Global Configuration
+--------------------
+
+The IPython debugger will by read the global ``~/.pdbrc`` file.
+That is to say you can list all comands supported by ipdb in your `~/.pdbrc`
+configuration file, to globally configure pdb.
+
+Example::
+
+ # ~/.pdbrc
+ skip_predicates debuggerskip false
+ skip_hidden false
+ context 25
+
+Features
+--------
+
+The IPython debugger can hide and skip frames when printing or moving through
+the stack. This can have a performance impact, so can be configures.
+
The skipping and hiding frames are configurable via the `skip_predicates`
command.
By default, frames from readonly files will be hidden, frames containing
-``__tracebackhide__=True`` will be hidden.
+``__tracebackhide__ = True`` will be hidden.
-Frames containing ``__debuggerskip__`` will be stepped over, frames who's parent
-frames value of ``__debuggerskip__`` is ``True`` will be skipped.
+Frames containing ``__debuggerskip__`` will be stepped over, frames whose parent
+frames value of ``__debuggerskip__`` is ``True`` will also be skipped.
>>> def helpers_helper():
... pass
@@ -1070,7 +1091,9 @@ class Pdb(OldPdb):
raise ValueError()
self.context = new_context
except ValueError:
- self.error("The 'context' command requires a positive integer argument.")
+ self.error(
+ f"The 'context' command requires a positive integer argument (current value {self.context})."
+ )
class InterruptiblePdb(Pdb):
diff --git a/contrib/python/ipython/py3/IPython/core/display.py b/contrib/python/ipython/py3/IPython/core/display.py
index 20e2e34b8f..5c4557b150 100644
--- a/contrib/python/ipython/py3/IPython/core/display.py
+++ b/contrib/python/ipython/py3/IPython/core/display.py
@@ -41,7 +41,11 @@ from warnings import warn
def __getattr__(name):
if name in _deprecated_names:
- warn(f"Importing {name} from IPython.core.display is deprecated since IPython 7.14, please import from IPython display", DeprecationWarning, stacklevel=2)
+ warn(
+ f"Importing {name} from IPython.core.display is deprecated since IPython 7.14, please import from IPython.display",
+ DeprecationWarning,
+ stacklevel=2,
+ )
return getattr(display_functions, name)
if name in globals().keys():
diff --git a/contrib/python/ipython/py3/IPython/core/magics/packaging.py b/contrib/python/ipython/py3/IPython/core/magics/packaging.py
index 093b0a2ec1..09d4117270 100644
--- a/contrib/python/ipython/py3/IPython/core/magics/packaging.py
+++ b/contrib/python/ipython/py3/IPython/core/magics/packaging.py
@@ -9,6 +9,7 @@
#-----------------------------------------------------------------------------
import functools
+import os
import re
import shlex
import sys
@@ -41,6 +42,16 @@ def _get_conda_like_executable(command):
executable: string
Value should be: conda, mamba or micromamba
"""
+ # Check for a environment variable bound to the base executable, both conda and mamba
+ # set these when activating an environment.
+ base_executable = "CONDA_EXE"
+ if "mamba" in command.lower():
+ base_executable = "MAMBA_EXE"
+ if base_executable in os.environ:
+ executable = Path(os.environ[base_executable])
+ if executable.is_file():
+ return str(executable.resolve())
+
# Check if there is a conda executable in the same directory as the Python executable.
# This is the case within conda's root environment.
executable = Path(sys.executable).parent / command
@@ -48,10 +59,12 @@ def _get_conda_like_executable(command):
return str(executable)
# Otherwise, attempt to extract the executable from conda history.
- # This applies in any conda environment.
+ # This applies in any conda environment. Parsing this way is error prone because
+ # different versions of conda and mamba include differing cmd values such as
+ # `conda`, `conda-script.py`, or `path/to/conda`, here use the raw command provided.
history = Path(sys.prefix, "conda-meta", "history").read_text(encoding="utf-8")
match = re.search(
- rf"^#\s*cmd:\s*(?P<command>.*{executable})\s[create|install]",
+ rf"^#\s*cmd:\s*(?P<command>.*{command})\s[create|install]",
history,
flags=re.MULTILINE,
)
diff --git a/contrib/python/ipython/py3/IPython/core/release.py b/contrib/python/ipython/py3/IPython/core/release.py
index c77f561096..fb5a54da6a 100644
--- a/contrib/python/ipython/py3/IPython/core/release.py
+++ b/contrib/python/ipython/py3/IPython/core/release.py
@@ -16,7 +16,7 @@
# release. 'dev' as a _version_extra string means this is a development
# version
_version_major = 8
-_version_minor = 27
+_version_minor = 28
_version_patch = 0
_version_extra = ".dev"
# _version_extra = "rc1"
diff --git a/contrib/python/ipython/py3/IPython/core/ultratb.py b/contrib/python/ipython/py3/IPython/core/ultratb.py
index 15c835f4d2..e38ef29c7d 100644
--- a/contrib/python/ipython/py3/IPython/core/ultratb.py
+++ b/contrib/python/ipython/py3/IPython/core/ultratb.py
@@ -830,8 +830,8 @@ class VerboseTB(TBTools):
traceback, to be used with alternate interpreters (because their own code
would appear in the traceback)."""
- _tb_highlight = ""
- _tb_highlight_style = "default"
+ tb_highlight = ""
+ tb_highlight_style = "default"
def __init__(
self,
@@ -1133,8 +1133,8 @@ class VerboseTB(TBTools):
after = context // 2
before = context - after
if self.has_colors:
- style = get_style_by_name(self._tb_highlight_style)
- style = stack_data.style_with_executing_node(style, self._tb_highlight)
+ style = get_style_by_name(self.tb_highlight_style)
+ style = stack_data.style_with_executing_node(style, self.tb_highlight)
formatter = Terminal256Formatter(style=style)
else:
formatter = None
diff --git a/contrib/python/ipython/py3/IPython/external/qt_loaders.py b/contrib/python/ipython/py3/IPython/external/qt_loaders.py
index 1486cf9d77..6058ee5a9a 100644
--- a/contrib/python/ipython/py3/IPython/external/qt_loaders.py
+++ b/contrib/python/ipython/py3/IPython/external/qt_loaders.py
@@ -302,13 +302,25 @@ def import_pyside6():
ImportErrors raised within this function are non-recoverable
"""
+
+ def get_attrs(module):
+ return {
+ name: getattr(module, name)
+ for name in dir(module)
+ if not name.startswith("_")
+ }
+
from PySide6 import QtGui, QtCore, QtSvg, QtWidgets, QtPrintSupport
# Join QtGui and QtWidgets for Qt4 compatibility.
QtGuiCompat = types.ModuleType("QtGuiCompat")
QtGuiCompat.__dict__.update(QtGui.__dict__)
- QtGuiCompat.__dict__.update(QtWidgets.__dict__)
- QtGuiCompat.__dict__.update(QtPrintSupport.__dict__)
+ if QtCore.__version_info__ < (6, 7):
+ QtGuiCompat.__dict__.update(QtWidgets.__dict__)
+ QtGuiCompat.__dict__.update(QtPrintSupport.__dict__)
+ else:
+ QtGuiCompat.__dict__.update(get_attrs(QtWidgets))
+ QtGuiCompat.__dict__.update(get_attrs(QtPrintSupport))
return QtCore, QtGuiCompat, QtSvg, QT_API_PYSIDE6
diff --git a/contrib/python/ipython/py3/IPython/utils/_sysinfo.py b/contrib/python/ipython/py3/IPython/utils/_sysinfo.py
index 58edebdad2..304813b0f5 100644
--- a/contrib/python/ipython/py3/IPython/utils/_sysinfo.py
+++ b/contrib/python/ipython/py3/IPython/utils/_sysinfo.py
@@ -1,2 +1,2 @@
# GENERATED BY setup.py
-commit = "82690a067"
+commit = "a9c7369d7"
diff --git a/contrib/python/ipython/py3/IPython/utils/terminal.py b/contrib/python/ipython/py3/IPython/utils/terminal.py
index b09cfe0d22..10d73fce58 100644
--- a/contrib/python/ipython/py3/IPython/utils/terminal.py
+++ b/contrib/python/ipython/py3/IPython/utils/terminal.py
@@ -80,7 +80,13 @@ def _set_term_title_xterm(title):
def _restore_term_title_xterm():
# Make sure the restore has at least one accompanying set.
global _xterm_term_title_saved
- assert _xterm_term_title_saved
+ if not _xterm_term_title_saved:
+ warnings.warn(
+ "Expecting xterm_term_title_saved to be True, but is not; will not restore terminal title.",
+ stacklevel=1,
+ )
+ return
+
sys.stdout.write('\033[23;0t')
_xterm_term_title_saved = False
diff --git a/contrib/python/ipython/py3/patches/03-dissable-backgroud-highlighting.patch b/contrib/python/ipython/py3/patches/03-dissable-backgroud-highlighting.patch
index 73b189b863..4694b5b2e8 100644
--- a/contrib/python/ipython/py3/patches/03-dissable-backgroud-highlighting.patch
+++ b/contrib/python/ipython/py3/patches/03-dissable-backgroud-highlighting.patch
@@ -1,5 +1,5 @@
--- contrib/python/ipython/py3/IPython/core/ultratb.py (index)
+++ contrib/python/ipython/py3/IPython/core/ultratb.py (working tree)
@@ -613,1 +613,1 @@ class VerboseTB(TBTools):
-- _tb_highlight = "bg:ansiyellow"
-+ _tb_highlight = ""
+- tb_highlight = "bg:ansiyellow"
++ tb_highlight = ""
diff --git a/contrib/python/ipython/py3/ya.make b/contrib/python/ipython/py3/ya.make
index ab2a7fb8f5..b13b8d1baa 100644
--- a/contrib/python/ipython/py3/ya.make
+++ b/contrib/python/ipython/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(8.27.0)
+VERSION(8.28.0)
LICENSE(BSD-3-Clause)
diff --git a/contrib/tools/m4/lib/c-stack.c b/contrib/tools/m4/lib/c-stack.c
index 52e46f83de..ac0aacba66 100644
--- a/contrib/tools/m4/lib/c-stack.c
+++ b/contrib/tools/m4/lib/c-stack.c
@@ -52,10 +52,6 @@ typedef struct sigaltstack stack_t;
#endif
#ifndef SIGSTKSZ
# define SIGSTKSZ 16384
-#elif defined __USE_DYNAMIC_STACK_SIZE
-/* Redefining SIGSTKSZ here as dynamic stack size is not supported in this version of bison */
-# undef SIGSTKSZ
-# define SIGSTKSZ 16384
#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
/* libsigsegv 2.6 through 2.8 have a bug where some architectures use
more than the Linux default of an 8k alternate stack when deciding
@@ -76,7 +72,7 @@ typedef struct sigaltstack stack_t;
#include <unistd.h>
#if HAVE_LIBSIGSEGV
-# include <sigsegv.h>
+# error #include <sigsegv.h>
#endif
#include "c-stack.h"
@@ -327,10 +323,7 @@ c_stack_action (void (*action) (int))
int
c_stack_action (void (*action) (int) __attribute__ ((unused)))
{
-#if (defined _MSC_VER) && (_MSC_VER < 1800)
-#else
errno = ENOTSUP;
-#endif
return -1;
}
diff --git a/contrib/tools/m4/lib/config-win.h b/contrib/tools/m4/lib/config-win.h
index 6122ff773c..ec0f1bc242 100644
--- a/contrib/tools/m4/lib/config-win.h
+++ b/contrib/tools/m4/lib/config-win.h
@@ -1282,7 +1282,7 @@ char *strsignal (int signum);
/* Define to 1 if stat needs help when passed a directory name with a trailing
slash */
-#define REPLACE_FUNC_STAT_DIR 1
+/* #undef REPLACE_FUNC_STAT_DIR */
/* Define to 1 if stat needs help when passed a file name with a trailing
slash */
@@ -1707,3 +1707,6 @@ char *strsignal (int signum);
/* Define as a macro for copying va_list variables. */
#define va_copy gl_va_copy
+
+#define HAVE_ISNANL_IN_LIBC 1
+#define HAVE_ISNAND_IN_LIBC 1
diff --git a/contrib/tools/m4/lib/fpurge.c b/contrib/tools/m4/lib/fpurge.c
deleted file mode 100644
index 139a43627f..0000000000
--- a/contrib/tools/m4/lib/fpurge.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Flushing buffers of a FILE stream.
- Copyright (C) 2007-2021 Free Software Foundation, Inc.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <stdio.h>
-
-#if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7, UnixWare >= 7.1.4.MP4, Cygwin >= 1.7.10, Android API >= 23, musl libc */
-# if HAVE_STDIO_EXT_H
-# include <stdio_ext.h>
-# endif
-#endif
-#include <stdlib.h>
-
-#include "stdio-impl.h"
-
-int
-fpurge (FILE *fp)
-{
-#if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7, UnixWare >= 7.1.4.MP4, Cygwin >= 1.7.10, Android API >= 23, musl libc */
-
- __fpurge (fp);
- /* The __fpurge function does not have a return value. */
- return 0;
-
-#elif HAVE_FPURGE /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin >= 1.7 */
-
- /* Call the system's fpurge function. */
-# undef fpurge
-# if !HAVE_DECL_FPURGE
- extern int fpurge (FILE *);
-# endif
- int result = fpurge (fp);
-# if defined __sferror || defined __DragonFly__ || defined __ANDROID__
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
- if (result == 0)
- /* Correct the invariants that fpurge broke.
- <stdio.h> on BSD systems says:
- "The following always hold: if _flags & __SRD, _w is 0."
- If this invariant is not fulfilled and the stream is read-write but
- currently reading, subsequent putc or fputc calls will write directly
- into the buffer, although they shouldn't be allowed to. */
- if ((fp_->_flags & __SRD) != 0)
- fp_->_w = 0;
-# endif
- return result;
-
-#else
-
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
-# if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1
- /* GNU libc, BeOS, Haiku, Linux libc5 */
- fp->_IO_read_end = fp->_IO_read_ptr;
- fp->_IO_write_ptr = fp->_IO_write_base;
- /* Avoid memory leak when there is an active ungetc buffer. */
- if (fp->_IO_save_base != NULL)
- {
- free (fp->_IO_save_base);
- fp->_IO_save_base = NULL;
- }
- return 0;
-# elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
- fp_->_p = fp_->_bf._base;
- fp_->_r = 0;
- fp_->_w = ((fp_->_flags & (__SLBF | __SNBF | __SRD)) == 0 /* fully buffered and not currently reading? */
- ? fp_->_bf._size
- : 0);
- /* Avoid memory leak when there is an active ungetc buffer. */
- if (fp_ub._base != NULL)
- {
- if (fp_ub._base != fp_->_ubuf)
- free (fp_ub._base);
- fp_ub._base = NULL;
- }
- return 0;
-# elif defined __EMX__ /* emx+gcc */
- fp->_ptr = fp->_buffer;
- fp->_rcount = 0;
- fp->_wcount = 0;
- fp->_ungetc_count = 0;
- return 0;
-# elif defined __minix /* Minix */
- fp->_ptr = fp->_buf;
- if (fp->_ptr != NULL)
- fp->_count = 0;
- return 0;
-# elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, UnixWare, mingw, MSVC, NonStop Kernel, OpenVMS */
- fp_->_ptr = fp_->_base;
- if (fp_->_ptr != NULL)
- fp_->_cnt = 0;
- return 0;
-# elif defined __UCLIBC__ /* uClibc */
-# ifdef __STDIO_BUFFERS
- if (fp->__modeflags & __FLAG_WRITING)
- fp->__bufpos = fp->__bufstart;
- else if (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING))
- fp->__bufpos = fp->__bufread;
-# endif
- return 0;
-# elif defined __QNX__ /* QNX */
- fp->_Rback = fp->_Back + sizeof (fp->_Back);
- fp->_Rsave = NULL;
- if (fp->_Mode & 0x2000 /* _MWRITE */)
- /* fp->_Buf <= fp->_Next <= fp->_Wend */
- fp->_Next = fp->_Buf;
- else
- /* fp->_Buf <= fp->_Next <= fp->_Rend */
- fp->_Rend = fp->_Next;
- return 0;
-# elif defined __MINT__ /* Atari FreeMiNT */
- if (fp->__pushed_back)
- {
- fp->__bufp = fp->__pushback_bufp;
- fp->__pushed_back = 0;
- }
- /* Preserve the current file position. */
- if (fp->__target != -1)
- fp->__target += fp->__bufp - fp->__buffer;
- fp->__bufp = fp->__buffer;
- /* Nothing in the buffer, next getc is nontrivial. */
- fp->__get_limit = fp->__bufp;
- /* Nothing in the buffer, next putc is nontrivial. */
- fp->__put_limit = fp->__buffer;
- return 0;
-# elif defined EPLAN9 /* Plan9 */
- fp->rp = fp->wp = fp->lp = fp->buf;
- return 0;
-# else
-# error "Please port gnulib fpurge.c to your platform! Look at the definitions of fflush, setvbuf and ungetc on your system, then report this to bug-gnulib."
-# endif
-
-#endif
-}
diff --git a/contrib/tools/m4/lib/freading.c b/contrib/tools/m4/lib/freading.c
deleted file mode 100644
index 2c342cddb3..0000000000
--- a/contrib/tools/m4/lib/freading.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Retrieve information about a FILE stream.
- Copyright (C) 2007-2021 Free Software Foundation, Inc.
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include "freading.h"
-
-#include "stdio-impl.h"
-
-/* Don't use glibc's __freading function in glibc < 2.7, see
- <https://sourceware.org/bugzilla/show_bug.cgi?id=4359> */
-#if !(HAVE___FREADING && (!defined __GLIBC__ || defined __UCLIBC__ || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 7)))
-
-bool
-freading (FILE *fp)
-{
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
-# if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1
- /* GNU libc, BeOS, Haiku, Linux libc5 */
- return ((fp->_flags & _IO_NO_WRITES) != 0
- || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
- && fp->_IO_read_base != NULL));
-# elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin < 1.7.34, Minix 3, Android */
- return (fp_->_flags & __SRD) != 0;
-# elif defined __EMX__ /* emx+gcc */
- return (fp->_flags & _IOREAD) != 0;
-# elif defined __minix /* Minix */
- return (fp->_flags & _IOREADING) != 0;
-# elif defined _IOERR /* AIX, HP-UX, IRIX, OSF/1, Solaris, OpenServer, UnixWare, mingw, MSVC, NonStop Kernel, OpenVMS */
-# if defined __sun /* Solaris */
- return (fp_->_flag & _IOREAD) != 0 && (fp_->_flag & _IOWRT) == 0;
-# else
- return (fp_->_flag & _IOREAD) != 0;
-# endif
-# elif defined __UCLIBC__ /* uClibc */
- return (fp->__modeflags & (__FLAG_READONLY | __FLAG_READING)) != 0;
-# elif defined __QNX__ /* QNX */
- return ((fp->_Mode & 0x2 /* _MOPENW */) == 0
- || (fp->_Mode & 0x1000 /* _MREAD */) != 0);
-# elif defined __MINT__ /* Atari FreeMiNT */
- if (!fp->__mode.__write)
- return 1;
- if (!fp->__mode.__read)
- return 0;
-# ifdef _IO_CURRENTLY_GETTING /* Flag added on 2009-02-28 */
- return (fp->__flags & _IO_CURRENTLY_GETTING) != 0;
-# else
- return (fp->__buffer < fp->__get_limit /*|| fp->__bufp == fp->__put_limit ??*/);
-# endif
-# elif defined EPLAN9 /* Plan9 */
- if (fp->state == 0 /* CLOSED */ || fp->state == 4 /* WR */)
- return 0;
- return (fp->state == 3 /* RD */ && (fp->bufl == 0 || fp->rp < fp->wp));
-# else
-# error "Please port gnulib freading.c to your platform!"
-# endif
-}
-
-#endif
diff --git a/contrib/tools/m4/lib/isnand.c b/contrib/tools/m4/lib/isnand.c
deleted file mode 100644
index cbad17b583..0000000000
--- a/contrib/tools/m4/lib/isnand.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Test for NaN that does not need libm.
- Copyright (C) 2008-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2008. */
-
-#include "isnan.c"
diff --git a/contrib/tools/m4/lib/isnanf.c b/contrib/tools/m4/lib/isnanf.c
deleted file mode 100644
index 946cb69ce0..0000000000
--- a/contrib/tools/m4/lib/isnanf.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Test for NaN that does not need libm.
- Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-
-#define USE_FLOAT
-#include "isnan.c"
diff --git a/contrib/tools/m4/lib/isnanl.c b/contrib/tools/m4/lib/isnanl.c
deleted file mode 100644
index 9d9d84b974..0000000000
--- a/contrib/tools/m4/lib/isnanl.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Test for NaN that does not need libm.
- Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-
-#define USE_LONG_DOUBLE
-#include "isnan.c"
diff --git a/contrib/tools/m4/lib/lseek.c b/contrib/tools/m4/lib/lseek.c
deleted file mode 100644
index fa7440d151..0000000000
--- a/contrib/tools/m4/lib/lseek.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* An lseek() function that detects pipes.
- Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
-
- 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, 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 <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <unistd.h>
-
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-/* Windows platforms. */
-/* Get GetFileType. */
-# include <windows.h>
-/* Get _get_osfhandle. */
-# include "msvc-nothrow.h"
-#else
-# include <sys/stat.h>
-#endif
-#include <errno.h>
-
-#undef lseek
-
-off_t
-rpl_lseek (int fd, off_t offset, int whence)
-{
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
- /* mingw lseek mistakenly succeeds on pipes, sockets, and terminals. */
- HANDLE h = (HANDLE) _get_osfhandle (fd);
- if (h == INVALID_HANDLE_VALUE)
- {
- errno = EBADF;
- return -1;
- }
- if (GetFileType (h) != FILE_TYPE_DISK)
- {
- errno = ESPIPE;
- return -1;
- }
-#else
- /* BeOS lseek mistakenly succeeds on pipes... */
- struct stat statbuf;
- if (fstat (fd, &statbuf) < 0)
- return -1;
- if (!S_ISREG (statbuf.st_mode))
- {
- errno = ESPIPE;
- return -1;
- }
-#endif
-#if _GL_WINDOWS_64_BIT_OFF_T
- return _lseeki64 (fd, offset, whence);
-#else
- return lseek (fd, offset, whence);
-#endif
-}
diff --git a/contrib/tools/m4/lib/mbrtowc.c b/contrib/tools/m4/lib/mbrtowc.c
deleted file mode 100644
index 5ee44aea48..0000000000
--- a/contrib/tools/m4/lib/mbrtowc.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* Convert multibyte character to wide character.
- Copyright (C) 1999-2002, 2005-2013 Free Software Foundation, Inc.
- Written by Bruno Haible <bruno@clisp.org>, 2008.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-/* Specification. */
-#include <wchar.h>
-
-#if GNULIB_defined_mbstate_t
-/* Implement mbrtowc() on top of mbtowc(). */
-
-# include <errno.h>
-# include <stdlib.h>
-
-# include "localcharset.h"
-# include "streq.h"
-# include "verify.h"
-
-
-verify (sizeof (mbstate_t) >= 4);
-
-static char internal_state[4];
-
-size_t
-mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
-{
- char *pstate = (char *)ps;
-
- if (s == NULL)
- {
- pwc = NULL;
- s = "";
- n = 1;
- }
-
- if (n == 0)
- return (size_t)(-2);
-
- /* Here n > 0. */
-
- if (pstate == NULL)
- pstate = internal_state;
-
- {
- size_t nstate = pstate[0];
- char buf[4];
- const char *p;
- size_t m;
-
- switch (nstate)
- {
- case 0:
- p = s;
- m = n;
- break;
- case 3:
- buf[2] = pstate[3];
- /*FALLTHROUGH*/
- case 2:
- buf[1] = pstate[2];
- /*FALLTHROUGH*/
- case 1:
- buf[0] = pstate[1];
- p = buf;
- m = nstate;
- buf[m++] = s[0];
- if (n >= 2 && m < 4)
- {
- buf[m++] = s[1];
- if (n >= 3 && m < 4)
- buf[m++] = s[2];
- }
- break;
- default:
- errno = EINVAL;
- return (size_t)(-1);
- }
-
- /* Here m > 0. */
-
-# if __GLIBC__ || defined __UCLIBC__
- /* Work around bug <http://sourceware.org/bugzilla/show_bug.cgi?id=9674> */
- mbtowc (NULL, NULL, 0);
-# endif
- {
- int res = mbtowc (pwc, p, m);
-
- if (res >= 0)
- {
- if (pwc != NULL && ((*pwc == 0) != (res == 0)))
- abort ();
- if (nstate >= (res > 0 ? res : 1))
- abort ();
- res -= nstate;
- pstate[0] = 0;
- return res;
- }
-
- /* mbtowc does not distinguish between invalid and incomplete multibyte
- sequences. But mbrtowc needs to make this distinction.
- There are two possible approaches:
- - Use iconv() and its return value.
- - Use built-in knowledge about the possible encodings.
- Given the low quality of implementation of iconv() on the systems that
- lack mbrtowc(), we use the second approach.
- The possible encodings are:
- - 8-bit encodings,
- - EUC-JP, EUC-KR, GB2312, EUC-TW, BIG5, GB18030, SJIS,
- - UTF-8.
- Use specialized code for each. */
- if (m >= 4 || m >= MB_CUR_MAX)
- goto invalid;
- /* Here MB_CUR_MAX > 1 and 0 < m < 4. */
- {
- const char *encoding = locale_charset ();
-
- if (STREQ_OPT (encoding, "UTF-8", 'U', 'T', 'F', '-', '8', 0, 0, 0, 0))
- {
- /* Cf. unistr/u8-mblen.c. */
- unsigned char c = (unsigned char) p[0];
-
- if (c >= 0xc2)
- {
- if (c < 0xe0)
- {
- if (m == 1)
- goto incomplete;
- }
- else if (c < 0xf0)
- {
- if (m == 1)
- goto incomplete;
- if (m == 2)
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if ((c2 ^ 0x80) < 0x40
- && (c >= 0xe1 || c2 >= 0xa0)
- && (c != 0xed || c2 < 0xa0))
- goto incomplete;
- }
- }
- else if (c <= 0xf4)
- {
- if (m == 1)
- goto incomplete;
- else /* m == 2 || m == 3 */
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if ((c2 ^ 0x80) < 0x40
- && (c >= 0xf1 || c2 >= 0x90)
- && (c < 0xf4 || (c == 0xf4 && c2 < 0x90)))
- {
- if (m == 2)
- goto incomplete;
- else /* m == 3 */
- {
- unsigned char c3 = (unsigned char) p[2];
-
- if ((c3 ^ 0x80) < 0x40)
- goto incomplete;
- }
- }
- }
- }
- }
- goto invalid;
- }
-
- /* As a reference for this code, you can use the GNU libiconv
- implementation. Look for uses of the RET_TOOFEW macro. */
-
- if (STREQ_OPT (encoding,
- "EUC-JP", 'E', 'U', 'C', '-', 'J', 'P', 0, 0, 0))
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0xa1 && c < 0xff) || c == 0x8e || c == 0x8f)
- goto incomplete;
- }
- if (m == 2)
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c == 0x8f)
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if (c2 >= 0xa1 && c2 < 0xff)
- goto incomplete;
- }
- }
- goto invalid;
- }
- if (STREQ_OPT (encoding,
- "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
- || STREQ_OPT (encoding,
- "GB2312", 'G', 'B', '2', '3', '1', '2', 0, 0, 0)
- || STREQ_OPT (encoding,
- "BIG5", 'B', 'I', 'G', '5', 0, 0, 0, 0, 0))
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c >= 0xa1 && c < 0xff)
- goto incomplete;
- }
- goto invalid;
- }
- if (STREQ_OPT (encoding,
- "EUC-TW", 'E', 'U', 'C', '-', 'T', 'W', 0, 0, 0))
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0xa1 && c < 0xff) || c == 0x8e)
- goto incomplete;
- }
- else /* m == 2 || m == 3 */
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c == 0x8e)
- goto incomplete;
- }
- goto invalid;
- }
- if (STREQ_OPT (encoding,
- "GB18030", 'G', 'B', '1', '8', '0', '3', '0', 0, 0))
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0x90 && c <= 0xe3) || (c >= 0xf8 && c <= 0xfe))
- goto incomplete;
- }
- else /* m == 2 || m == 3 */
- {
- unsigned char c = (unsigned char) p[0];
-
- if (c >= 0x90 && c <= 0xe3)
- {
- unsigned char c2 = (unsigned char) p[1];
-
- if (c2 >= 0x30 && c2 <= 0x39)
- {
- if (m == 2)
- goto incomplete;
- else /* m == 3 */
- {
- unsigned char c3 = (unsigned char) p[2];
-
- if (c3 >= 0x81 && c3 <= 0xfe)
- goto incomplete;
- }
- }
- }
- }
- goto invalid;
- }
- if (STREQ_OPT (encoding, "SJIS", 'S', 'J', 'I', 'S', 0, 0, 0, 0, 0))
- {
- if (m == 1)
- {
- unsigned char c = (unsigned char) p[0];
-
- if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xea)
- || (c >= 0xf0 && c <= 0xf9))
- goto incomplete;
- }
- goto invalid;
- }
-
- /* An unknown multibyte encoding. */
- goto incomplete;
- }
-
- incomplete:
- {
- size_t k = nstate;
- /* Here 0 <= k < m < 4. */
- pstate[++k] = s[0];
- if (k < m)
- {
- pstate[++k] = s[1];
- if (k < m)
- pstate[++k] = s[2];
- }
- if (k != m)
- abort ();
- }
- pstate[0] = m;
- return (size_t)(-2);
-
- invalid:
- errno = EILSEQ;
- /* The conversion state is undefined, says POSIX. */
- return (size_t)(-1);
- }
- }
-}
-
-#else
-/* Override the system's mbrtowc() function. */
-
-# undef mbrtowc
-
-size_t
-rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
-{
-# if MBRTOWC_NULL_ARG2_BUG || MBRTOWC_RETVAL_BUG
- if (s == NULL)
- {
- pwc = NULL;
- s = "";
- n = 1;
- }
-# endif
-
-# if MBRTOWC_RETVAL_BUG
- {
- static mbstate_t internal_state;
-
- /* Override mbrtowc's internal state. We cannot call mbsinit() on the
- hidden internal state, but we can call it on our variable. */
- if (ps == NULL)
- ps = &internal_state;
-
- if (!mbsinit (ps))
- {
- /* Parse the rest of the multibyte character byte for byte. */
- size_t count = 0;
- for (; n > 0; s++, n--)
- {
- wchar_t wc;
- size_t ret = mbrtowc (&wc, s, 1, ps);
-
- if (ret == (size_t)(-1))
- return (size_t)(-1);
- count++;
- if (ret != (size_t)(-2))
- {
- /* The multibyte character has been completed. */
- if (pwc != NULL)
- *pwc = wc;
- return (wc == 0 ? 0 : count);
- }
- }
- return (size_t)(-2);
- }
- }
-# endif
-
-# if MBRTOWC_NUL_RETVAL_BUG
- {
- wchar_t wc;
- size_t ret = mbrtowc (&wc, s, n, ps);
-
- if (ret != (size_t)(-1) && ret != (size_t)(-2))
- {
- if (pwc != NULL)
- *pwc = wc;
- if (wc == 0)
- ret = 0;
- }
- return ret;
- }
-# else
- {
-# if MBRTOWC_NULL_ARG1_BUG
- wchar_t dummy;
-
- if (pwc == NULL)
- pwc = &dummy;
-# endif
-
- return mbrtowc (pwc, s, n, ps);
- }
-# endif
-}
-
-#endif
diff --git a/contrib/tools/m4/lib/open.c b/contrib/tools/m4/lib/open.c
deleted file mode 100644
index a0c43eadf9..0000000000
--- a/contrib/tools/m4/lib/open.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/* Open a descriptor to a file.
- Copyright (C) 2007-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
-
-/* If the user's config.h happens to include <fcntl.h>, let it include only
- the system's <fcntl.h> here, so that orig_open doesn't recurse to
- rpl_open. */
-#define __need_system_fcntl_h
-#include <config.h>
-
-/* Get the original definition of open. It might be defined as a macro. */
-#include <fcntl.h>
-#include <sys/types.h>
-#undef __need_system_fcntl_h
-
-static int
-orig_open (const char *filename, int flags, mode_t mode)
-{
- return open (filename, flags, mode);
-}
-
-/* Specification. */
-/* Write "fcntl.h" here, not <fcntl.h>, otherwise OSF/1 5.1 DTK cc eliminates
- this include because of the preliminary #include <fcntl.h> above. */
-#include "fcntl.h"
-
-#include <errno.h>
-#include <stdarg.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#ifndef REPLACE_OPEN_DIRECTORY
-# define REPLACE_OPEN_DIRECTORY 0
-#endif
-
-int
-open (const char *filename, int flags, ...)
-{
- mode_t mode;
- int fd;
-
- mode = 0;
- if (flags & O_CREAT)
- {
- va_list arg;
- va_start (arg, flags);
-
- /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
- creates crashing code when 'mode_t' is smaller than 'int'. */
- mode = va_arg (arg, PROMOTED_MODE_T);
-
- va_end (arg);
- }
-
-#if GNULIB_defined_O_NONBLOCK
- /* The only known platform that lacks O_NONBLOCK is mingw, but it
- also lacks named pipes and Unix sockets, which are the only two
- file types that require non-blocking handling in open().
- Therefore, it is safe to ignore O_NONBLOCK here. It is handy
- that mingw also lacks openat(), so that is also covered here. */
- flags &= ~O_NONBLOCK;
-#endif
-
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
- if (strcmp (filename, "/dev/null") == 0)
- filename = "NUL";
-#endif
-
-#if OPEN_TRAILING_SLASH_BUG
- /* If the filename ends in a slash and one of O_CREAT, O_WRONLY, O_RDWR
- is specified, then fail.
- Rationale: POSIX <http://www.opengroup.org/susv3/basedefs/xbd_chap04.html>
- says that
- "A pathname that contains at least one non-slash character and that
- ends with one or more trailing slashes shall be resolved as if a
- single dot character ( '.' ) were appended to the pathname."
- and
- "The special filename dot shall refer to the directory specified by
- its predecessor."
- If the named file already exists as a directory, then
- - if O_CREAT is specified, open() must fail because of the semantics
- of O_CREAT,
- - if O_WRONLY or O_RDWR is specified, open() must fail because POSIX
- <http://www.opengroup.org/susv3/functions/open.html> says that it
- fails with errno = EISDIR in this case.
- If the named file does not exist or does not name a directory, then
- - if O_CREAT is specified, open() must fail since open() cannot create
- directories,
- - if O_WRONLY or O_RDWR is specified, open() must fail because the
- file does not contain a '.' directory. */
- if (flags & (O_CREAT | O_WRONLY | O_RDWR))
- {
- size_t len = strlen (filename);
- if (len > 0 && filename[len - 1] == '/')
- {
- errno = EISDIR;
- return -1;
- }
- }
-#endif
-
- fd = orig_open (filename, flags, mode);
-
-#if REPLACE_FCHDIR
- /* Implementing fchdir and fdopendir requires the ability to open a
- directory file descriptor. If open doesn't support that (as on
- mingw), we use a dummy file that behaves the same as directories
- on Linux (ie. always reports EOF on attempts to read()), and
- override fstat() in fchdir.c to hide the fact that we have a
- dummy. */
- if (REPLACE_OPEN_DIRECTORY && fd < 0 && errno == EACCES
- && ((flags & O_ACCMODE) == O_RDONLY
- || (O_SEARCH != O_RDONLY && (flags & O_ACCMODE) == O_SEARCH)))
- {
- struct stat statbuf;
- if (stat (filename, &statbuf) == 0 && S_ISDIR (statbuf.st_mode))
- {
- /* Maximum recursion depth of 1. */
- fd = open ("/dev/null", flags, mode);
- if (0 <= fd)
- fd = _gl_register_fd (fd, filename);
- }
- else
- errno = EACCES;
- }
-#endif
-
-#if OPEN_TRAILING_SLASH_BUG
- /* If the filename ends in a slash and fd does not refer to a directory,
- then fail.
- Rationale: POSIX <http://www.opengroup.org/susv3/basedefs/xbd_chap04.html>
- says that
- "A pathname that contains at least one non-slash character and that
- ends with one or more trailing slashes shall be resolved as if a
- single dot character ( '.' ) were appended to the pathname."
- and
- "The special filename dot shall refer to the directory specified by
- its predecessor."
- If the named file without the slash is not a directory, open() must fail
- with ENOTDIR. */
- if (fd >= 0)
- {
- /* We know len is positive, since open did not fail with ENOENT. */
- size_t len = strlen (filename);
- if (filename[len - 1] == '/')
- {
- struct stat statbuf;
-
- if (fstat (fd, &statbuf) >= 0 && !S_ISDIR (statbuf.st_mode))
- {
- close (fd);
- errno = ENOTDIR;
- return -1;
- }
- }
- }
-#endif
-
-#if REPLACE_FCHDIR
- if (!REPLACE_OPEN_DIRECTORY && 0 <= fd)
- fd = _gl_register_fd (fd, filename);
-#endif
-
- return fd;
-}
diff --git a/contrib/tools/m4/lib/platform/win64/fcntl.h b/contrib/tools/m4/lib/platform/win64/fcntl.h
index 0637e64b9f..ffb456dfe5 100644
--- a/contrib/tools/m4/lib/platform/win64/fcntl.h
+++ b/contrib/tools/m4/lib/platform/win64/fcntl.h
@@ -426,7 +426,7 @@ _GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - "
#endif
#if 1
-# if 1
+# if 0
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# undef open
# define open rpl_open
diff --git a/contrib/tools/m4/lib/platform/win64/sys/stat.h b/contrib/tools/m4/lib/platform/win64/sys/stat.h
index bf7dc29f6e..14f1f4cc32 100644
--- a/contrib/tools/m4/lib/platform/win64/sys/stat.h
+++ b/contrib/tools/m4/lib/platform/win64/sys/stat.h
@@ -944,7 +944,7 @@ _GL_WARN_ON_USE (mknodat, "mknodat is not portable - "
#if 1
-# if 1
+# if 0
/* We can't use the object-like #define stat rpl_stat, because of
struct stat. This means that rpl_stat will not be used if the user
does (stat)(a,b). Oh well. */
diff --git a/contrib/tools/m4/lib/platform/win64/unistd.h b/contrib/tools/m4/lib/platform/win64/unistd.h
index 3980820c14..5b809eb4f5 100644
--- a/contrib/tools/m4/lib/platform/win64/unistd.h
+++ b/contrib/tools/m4/lib/platform/win64/unistd.h
@@ -1325,7 +1325,7 @@ _GL_WARN_ON_USE (linkat, "linkat is unportable - "
Return the new offset if successful, otherwise -1 and errno set.
See the POSIX:2008 specification
<http://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>. */
-# if 1
+# if 0
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define lseek rpl_lseek
# endif
@@ -1537,7 +1537,7 @@ _GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
#if 1
/* Remove the directory DIR. */
-# if 1
+# if 0
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define rmdir rpl_rmdir
# endif
diff --git a/contrib/tools/m4/lib/printf.c b/contrib/tools/m4/lib/printf.c
deleted file mode 100644
index 7f682497cc..0000000000
--- a/contrib/tools/m4/lib/printf.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Formatted output to a stream.
- Copyright (C) 2007, 2010-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-#if 1
-# include <config.h>
-#endif
-
-/* Specification. */
-#include <stdio.h>
-
-#include <stdarg.h>
-
-/* Print formatted output to standard output.
- Return string length of formatted string. On error, return a negative
- value. */
-int
-printf (const char *format, ...)
-{
- int retval;
- va_list args;
-
- va_start (args, format);
- retval = vfprintf (stdout, format, args);
- va_end (args);
-
- return retval;
-}
diff --git a/contrib/tools/m4/lib/realloc.c b/contrib/tools/m4/lib/realloc.c
deleted file mode 100644
index b51010a621..0000000000
--- a/contrib/tools/m4/lib/realloc.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* realloc() function that is glibc compatible.
-
- Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2013 Free Software
- Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* written by Jim Meyering and Bruno Haible */
-
-#define _GL_USE_STDLIB_ALLOC 1
-#include <config.h>
-
-/* Only the AC_FUNC_REALLOC macro defines 'realloc' already in config.h. */
-#ifdef realloc
-# define NEED_REALLOC_GNU 1
-/* Whereas the gnulib module 'realloc-gnu' defines HAVE_REALLOC_GNU. */
-#elif GNULIB_REALLOC_GNU && !HAVE_REALLOC_GNU
-# define NEED_REALLOC_GNU 1
-#endif
-
-/* Infer the properties of the system's malloc function.
- The gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */
-#if GNULIB_MALLOC_GNU && HAVE_MALLOC_GNU
-# define SYSTEM_MALLOC_GLIBC_COMPATIBLE 1
-#endif
-
-#include <stdlib.h>
-
-#include <errno.h>
-
-/* Change the size of an allocated block of memory P to N bytes,
- with error checking. If N is zero, change it to 1. If P is NULL,
- use malloc. */
-
-void *
-rpl_realloc (void *p, size_t n)
-{
- void *result;
-
-#if NEED_REALLOC_GNU
- if (n == 0)
- {
- n = 1;
-
- /* In theory realloc might fail, so don't rely on it to free. */
- free (p);
- p = NULL;
- }
-#endif
-
- if (p == NULL)
- {
-#if GNULIB_REALLOC_GNU && !NEED_REALLOC_GNU && !SYSTEM_MALLOC_GLIBC_COMPATIBLE
- if (n == 0)
- n = 1;
-#endif
- result = malloc (n);
- }
- else
- result = realloc (p, n);
-
-#if !HAVE_REALLOC_POSIX
- if (result == NULL)
- errno = ENOMEM;
-#endif
-
- return result;
-}
diff --git a/contrib/tools/m4/lib/rmdir.c b/contrib/tools/m4/lib/rmdir.c
deleted file mode 100644
index a8d907ebf0..0000000000
--- a/contrib/tools/m4/lib/rmdir.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Work around rmdir bugs.
-
- Copyright (C) 1988, 1990, 1999, 2003-2006, 2009-2013 Free Software
- Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include <unistd.h>
-
-#include <errno.h>
-#include <string.h>
-
-#include "dosname.h"
-
-#undef rmdir
-
-/* Remove directory DIR.
- Return 0 if successful, -1 if not. */
-
-int
-rpl_rmdir (char const *dir)
-{
- /* Work around cygwin 1.5.x bug where rmdir("dir/./") succeeds. */
- size_t len = strlen (dir);
- int result;
- while (len && ISSLASH (dir[len - 1]))
- len--;
- if (len && dir[len - 1] == '.' && (1 == len || ISSLASH (dir[len - 2])))
- {
- errno = EINVAL;
- return -1;
- }
- result = rmdir (dir);
- /* Work around mingw bug, where rmdir("file/") fails with EINVAL
- instead of ENOTDIR. We've already filtered out trailing ., the
- only reason allowed by POSIX for EINVAL. */
- if (result == -1 && errno == EINVAL)
- errno = ENOTDIR;
- return result;
-}
diff --git a/contrib/tools/m4/lib/same-inode.h b/contrib/tools/m4/lib/same-inode.h
deleted file mode 100644
index 3843b07078..0000000000
--- a/contrib/tools/m4/lib/same-inode.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Determine whether two stat buffers refer to the same file.
-
- Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-#ifndef SAME_INODE_H
-# define SAME_INODE_H 1
-
-# ifdef __VMS
-# define SAME_INODE(a, b) \
- ((a).st_ino[0] == (b).st_ino[0] \
- && (a).st_ino[1] == (b).st_ino[1] \
- && (a).st_ino[2] == (b).st_ino[2] \
- && (a).st_dev == (b).st_dev)
-# else
-# define SAME_INODE(a, b) \
- ((a).st_ino == (b).st_ino \
- && (a).st_dev == (b).st_dev)
-# endif
-
-#endif
diff --git a/contrib/tools/m4/lib/sigsegv.h b/contrib/tools/m4/lib/sigsegv.h
deleted file mode 100644
index 29fc128a3e..0000000000
--- a/contrib/tools/m4/lib/sigsegv.h
+++ /dev/null
@@ -1,243 +0,0 @@
-/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
-/* Page fault handling library.
- Copyright (C) 1998-2021 Bruno Haible <bruno@clisp.org>
-
- 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 <https://www.gnu.org/licenses/>. */
-
-#ifndef _SIGSEGV_H
-#define _SIGSEGV_H
-
-/* Get size_t. */
-#include <stddef.h>
-
-/* Define the fault context structure. */
-#if defined __linux__ || defined __ANDROID__ \
- || (defined __FreeBSD__ && (defined __arm__ || defined __armhf__ || defined __arm64__)) \
- || defined __NetBSD__ \
- || defined _AIX || defined __sun \
- || defined __CYGWIN__
-/* Linux, FreeBSD, NetBSD, AIX, Solaris, Cygwin */
-# include <ucontext.h>
-#elif (defined __APPLE__ && defined __MACH__)
-/* macOS */
-# include <sys/ucontext.h>
-#elif defined __HAIKU__
-/* Haiku */
-# include <signal.h>
-#endif
-
-/* Correct the value of SIGSTKSZ on some systems.
- glibc >= 2.34: When _GNU_SOURCE is defined, SIGSTKSZ is no longer a
- compile-time constant. But most programs need a simple constant.
- AIX 64-bit: original value 4096 is too small.
- HP-UX: original value 8192 is too small.
- Solaris 11/x86_64: original value 8192 is too small. */
-#include <signal.h>
-#if __GLIBC__ >= 2
-# undef SIGSTKSZ
-# if defined __ia64__
-# define SIGSTKSZ 262144
-# else
-# define SIGSTKSZ 65536
-# endif
-#endif
-#if defined _AIX && defined _ARCH_PPC64
-# undef SIGSTKSZ
-# define SIGSTKSZ 8192
-#endif
-#if defined __hpux || (defined __sun && (defined __x86_64__ || defined __amd64__))
-# undef SIGSTKSZ
-# define SIGSTKSZ 16384
-#endif
-
-/* HAVE_SIGSEGV_RECOVERY
- is defined if the system supports catching SIGSEGV. */
-#if defined __linux__ || defined __ANDROID__ || defined __GNU__ \
- || defined __FreeBSD_kernel__ || (defined __FreeBSD__ && !(defined __sparc__ || defined __sparc64__)) || defined __DragonFly__ \
- || defined __NetBSD__ \
- || defined __OpenBSD__ \
- || (defined __APPLE__ && defined __MACH__) \
- || defined _AIX || defined __sgi || defined __sun \
- || defined __CYGWIN__ || defined __HAIKU__
-/* Linux, Hurd, GNU/kFreeBSD, FreeBSD, NetBSD, OpenBSD, macOS, AIX, IRIX, Solaris, Cygwin, Haiku */
-# define HAVE_SIGSEGV_RECOVERY 1
-#endif
-
-/* HAVE_STACK_OVERFLOW_RECOVERY
- is defined if stack overflow can be caught. */
-#if defined __linux__ || defined __ANDROID__ || defined __GNU__ \
- || defined __FreeBSD_kernel__ || (defined __FreeBSD__ && !(defined __sparc__ || defined __sparc64__)) || defined __DragonFly__ \
- || (defined __NetBSD__ && !(defined __sparc__ || defined __sparc64__)) \
- || defined __OpenBSD__ \
- || (defined __APPLE__ && defined __MACH__) \
- || defined _AIX || defined __sgi || defined __sun \
- || defined __CYGWIN__ || defined __HAIKU__
-/* Linux, Hurd, GNU/kFreeBSD, FreeBSD, NetBSD, OpenBSD, macOS, AIX, IRIX, Solaris, Cygwin, Haiku */
-# define HAVE_STACK_OVERFLOW_RECOVERY 1
-#endif
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define LIBSIGSEGV_VERSION 0x020D /* version number: (major<<8) + minor */
-extern int libsigsegv_version; /* Likewise */
-
-/* -------------------------------------------------------------------------- */
-
-#if 1 /* really only HAVE_SIGSEGV_RECOVERY */
-
-/*
- * The mask of bits that are set to zero in a fault address that gets passed
- * to a global SIGSEGV handler.
- * On some platforms, the precise fault address is not known, only the memory
- * page into which the fault address falls. This is apparently allowed by POSIX:
- * <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html>
- * says: "For some implementations, the value of si_addr may be inaccurate."
- * In this case, the returned fault address is rounded down to a multiple of
- * getpagesize() = sysconf(_SC_PAGESIZE).
- * On such platforms, we define SIGSEGV_FAULT_ADDRESS_ALIGNMENT to be an upper
- * bound for getpagesize() (and, like getpagesize(), also a power of 2).
- * On the platforms where the returned fault address is the precise one, we
- * define SIGSEGV_FAULT_ADDRESS_ALIGNMENT to 1.
- */
-# if defined __NetBSD__ && (defined __sparc__ || defined __sparc64__)
- /* getpagesize () is 0x1000 or 0x2000, depending on hardware. */
-# define SIGSEGV_FAULT_ADDRESS_ALIGNMENT 0x2000UL
-# elif defined __linux__ && (defined __s390__ || defined __s390x__)
- /* getpagesize () is 0x1000. */
-# define SIGSEGV_FAULT_ADDRESS_ALIGNMENT 0x1000UL
-# else
-# define SIGSEGV_FAULT_ADDRESS_ALIGNMENT 1UL
-# endif
-
-/*
- * The type of a global SIGSEGV handler.
- * The fault address, with the bits (SIGSEGV_FAULT_ADDRESS_ALIGNMENT - 1)
- * cleared, is passed as argument.
- * The access type (read access or write access) is not passed; your handler
- * has to know itself how to distinguish these two cases.
- * The second argument is 0, meaning it could also be a stack overflow, or 1,
- * meaning the handler should seriously try to fix the fault.
- * The return value should be nonzero if the handler has done its job
- * and no other handler should be called, or 0 if the handler declines
- * responsibility for the given address.
- *
- * The handler is run at a moment when nothing about the global state of the
- * program is known. Therefore it cannot use facilities that manipulate global
- * variables or locks. In particular, it cannot use malloc(); use mmap()
- * instead. It cannot use fopen(); use open() instead. Etc. All global
- * variables that are accessed by the handler should be marked 'volatile'.
- */
-typedef int (*sigsegv_handler_t) (void* fault_address, int serious);
-
-/*
- * Installs a global SIGSEGV handler.
- * This should be called once only, and it ignores any previously installed
- * SIGSEGV handler.
- * Returns 0 on success, or -1 if the system doesn't support catching SIGSEGV.
- */
-extern int sigsegv_install_handler (sigsegv_handler_t handler);
-
-/*
- * Deinstalls the global SIGSEGV handler.
- * This goes back to the state where no SIGSEGV handler is installed.
- */
-extern void sigsegv_deinstall_handler (void);
-
-/*
- * Prepares leaving a SIGSEGV handler (through longjmp or similar means).
- * Control is transferred by calling CONTINUATION with CONT_ARG1, CONT_ARG2,
- * CONT_ARG3 as arguments.
- * CONTINUATION must not return.
- * The sigsegv_leave_handler function may return if called from a SIGSEGV
- * handler; its return value should be used as the handler's return value.
- * The sigsegv_leave_handler function does not return if called from a
- * stack overflow handler.
- */
-extern int sigsegv_leave_handler (void (*continuation) (void*, void*, void*), void* cont_arg1, void* cont_arg2, void* cont_arg3);
-
-#endif /* HAVE_SIGSEGV_RECOVERY */
-
-#if 1 /* really only HAVE_STACK_OVERFLOW_RECOVERY */
-
-/*
- * The type of a context passed to a stack overflow handler.
- * This type is system dependent; on some platforms it is an 'ucontext_t *',
- * on some platforms it is a 'struct sigcontext *', on others merely an
- * opaque 'void *'.
- */
-# if defined __linux__ || defined __ANDROID__ \
- || (defined __FreeBSD__ && (defined __arm__ || defined __armhf__ || defined __arm64__)) \
- || defined __NetBSD__ \
- || (defined __APPLE__ && defined __MACH__) \
- || defined _AIX || defined __sun \
- || defined __CYGWIN__ || defined __HAIKU__
-typedef ucontext_t *stackoverflow_context_t;
-# elif defined __GNU__ \
- || defined __FreeBSD_kernel__ || (defined __FreeBSD__ && !(defined __sparc__ || defined __sparc64__)) \
- || defined __OpenBSD__ || defined __sgi
-typedef struct sigcontext *stackoverflow_context_t;
-# else
-typedef void *stackoverflow_context_t;
-# endif
-
-/*
- * The type of a stack overflow handler.
- * Such a handler should perform a longjmp call in order to reduce the amount
- * of stack needed. It must not return.
- * The emergency argument is 0 when the stack could be repared, or 1 if the
- * application should better save its state and exit now.
- *
- * The handler is run at a moment when nothing about the global state of the
- * program is known. Therefore it cannot use facilities that manipulate global
- * variables or locks. In particular, it cannot use malloc(); use mmap()
- * instead. It cannot use fopen(); use open() instead. Etc. All global
- * variables that are accessed by the handler should be marked 'volatile'.
- */
-typedef void (*stackoverflow_handler_t) (int emergency, stackoverflow_context_t scp);
-
-/*
- * Installs a stack overflow handler.
- * The extra_stack argument is a pointer to a pre-allocated area used as a
- * stack for executing the handler. It typically comes from a static variable
- * or from heap-allocated memoty; placing it on the main stack may fail on
- * some operating systems.
- * Its size, passed in extra_stack_size, should be sufficiently large. The
- * following code determines an appropriate size:
- * #include <signal.h>
- * #ifndef SIGSTKSZ / * glibc defines SIGSTKSZ for this purpose * /
- * # define SIGSTKSZ 16384 / * on most platforms, 16 KB are sufficient * /
- * #endif
- * Returns 0 on success, or -1 if the system doesn't support catching stack
- * overflow.
- */
-extern int stackoverflow_install_handler (stackoverflow_handler_t handler,
- void* extra_stack, size_t extra_stack_size);
-
-/*
- * Deinstalls the stack overflow handler.
- */
-extern void stackoverflow_deinstall_handler (void);
-
-#endif /* HAVE_STACK_OVERFLOW_RECOVERY */
-
-/* -------------------------------------------------------------------------- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SIGSEGV_H */
diff --git a/contrib/tools/m4/lib/stat.c b/contrib/tools/m4/lib/stat.c
deleted file mode 100644
index f888130d26..0000000000
--- a/contrib/tools/m4/lib/stat.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Work around platform bugs in stat.
- Copyright (C) 2009-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* written by Eric Blake */
-
-/* If the user's config.h happens to include <sys/stat.h>, let it include only
- the system's <sys/stat.h> here, so that orig_stat doesn't recurse to
- rpl_stat. */
-#define __need_system_sys_stat_h
-#include <config.h>
-
-/* Get the original definition of stat. It might be defined as a macro. */
-#include <sys/types.h>
-#include <sys/stat.h>
-#undef __need_system_sys_stat_h
-
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
-# if _GL_WINDOWS_64_BIT_ST_SIZE
-# undef stat /* avoid warning on mingw64 with _FILE_OFFSET_BITS=64 */
-# define stat _stati64
-# define REPLACE_FUNC_STAT_DIR 1
-# undef REPLACE_FUNC_STAT_FILE
-# elif REPLACE_FUNC_STAT_FILE
-/* mingw64 has a broken stat() function, based on _stat(), in libmingwex.a.
- Bypass it. */
-# define stat _stat
-# define REPLACE_FUNC_STAT_DIR 1
-# undef REPLACE_FUNC_STAT_FILE
-# endif
-#endif
-
-static int
-orig_stat (const char *filename, struct stat *buf)
-{
- return stat (filename, buf);
-}
-
-/* Specification. */
-/* Write "sys/stat.h" here, not <sys/stat.h>, otherwise OSF/1 5.1 DTK cc
- eliminates this include because of the preliminary #include <sys/stat.h>
- above. */
-#include "sys/stat.h"
-
-#include <errno.h>
-#include <limits.h>
-#include <stdbool.h>
-#include <string.h>
-#include "dosname.h"
-#include "verify.h"
-
-#if REPLACE_FUNC_STAT_DIR
-# include "pathmax.h"
- /* The only known systems where REPLACE_FUNC_STAT_DIR is needed also
- have a constant PATH_MAX. */
-# ifndef PATH_MAX
-# error "Please port this replacement to your platform"
-# endif
-#endif
-
-/* Store information about NAME into ST. Work around bugs with
- trailing slashes. Mingw has other bugs (such as st_ino always
- being 0 on success) which this wrapper does not work around. But
- at least this implementation provides the ability to emulate fchdir
- correctly. */
-
-int
-rpl_stat (char const *name, struct stat *st)
-{
- int result = orig_stat (name, st);
-#if REPLACE_FUNC_STAT_FILE
- /* Solaris 9 mistakenly succeeds when given a non-directory with a
- trailing slash. */
- if (result == 0 && !S_ISDIR (st->st_mode))
- {
- size_t len = strlen (name);
- if (ISSLASH (name[len - 1]))
- {
- errno = ENOTDIR;
- return -1;
- }
- }
-#endif /* REPLACE_FUNC_STAT_FILE */
-#if REPLACE_FUNC_STAT_DIR
-
- if (result == -1 && errno == ENOENT)
- {
- /* Due to mingw's oddities, there are some directories (like
- c:\) where stat() only succeeds with a trailing slash, and
- other directories (like c:\windows) where stat() only
- succeeds without a trailing slash. But we want the two to be
- synonymous, since chdir() manages either style. Likewise, Mingw also
- reports ENOENT for names longer than PATH_MAX, when we want
- ENAMETOOLONG, and for stat("file/"), when we want ENOTDIR.
- Fortunately, mingw PATH_MAX is small enough for stack
- allocation. */
- char fixed_name[PATH_MAX + 1] = {0};
- size_t len = strlen (name);
- bool check_dir = false;
- verify (PATH_MAX <= 4096);
- if (PATH_MAX <= len)
- errno = ENAMETOOLONG;
- else if (len)
- {
- strcpy (fixed_name, name);
- if (ISSLASH (fixed_name[len - 1]))
- {
- check_dir = true;
- while (len && ISSLASH (fixed_name[len - 1]))
- fixed_name[--len] = '\0';
- if (!len)
- fixed_name[0] = '/';
- }
- else
- fixed_name[len++] = '/';
- result = orig_stat (fixed_name, st);
- if (result == 0 && check_dir && !S_ISDIR (st->st_mode))
- {
- result = -1;
- errno = ENOTDIR;
- }
- }
- }
-#endif /* REPLACE_FUNC_STAT_DIR */
- return result;
-}
diff --git a/contrib/tools/m4/lib/stpcpy.c b/contrib/tools/m4/lib/stpcpy.c
deleted file mode 100644
index f5aa8d67e9..0000000000
--- a/contrib/tools/m4/lib/stpcpy.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* stpcpy.c -- copy a string and return pointer to end of new string
- Copyright (C) 1992, 1995, 1997-1998, 2006, 2009-2013 Free Software
- Foundation, Inc.
-
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@prep.ai.mit.edu.
-
- 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 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 <http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#include <string.h>
-#include <stdlib.h>
-
-#undef __stpcpy
-#if defined(_LIBC) || (defined(__MACH__) && defined(stpcpy))
-# undef stpcpy
-#endif
-
-#ifndef weak_alias
-# define __stpcpy stpcpy
-#endif
-
-/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
-char *
-__stpcpy (char *dest, const char *src)
-{
- char *d = dest;
- const char *s = src;
-
- do
- *d++ = *s;
- while (*s++ != '\0');
-
- return d - 1;
-}
-#ifdef weak_alias
-weak_alias (__stpcpy, stpcpy)
-#endif
diff --git a/contrib/tools/m4/lib/streq.h b/contrib/tools/m4/lib/streq.h
deleted file mode 100644
index 12c1867c83..0000000000
--- a/contrib/tools/m4/lib/streq.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* Optimized string comparison.
- Copyright (C) 2001-2002, 2007, 2009-2013 Free Software Foundation, Inc.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* Written by Bruno Haible <bruno@clisp.org>. */
-
-#ifndef _GL_STREQ_H
-#define _GL_STREQ_H
-
-#include <string.h>
-
-/* STREQ_OPT allows to optimize string comparison with a small literal string.
- STREQ_OPT (s, "EUC-KR", 'E', 'U', 'C', '-', 'K', 'R', 0, 0, 0)
- is semantically equivalent to
- strcmp (s, "EUC-KR") == 0
- just faster. */
-
-/* Help GCC to generate good code for string comparisons with
- immediate strings. */
-#if defined (__GNUC__) && defined (__OPTIMIZE__)
-
-static inline int
-streq9 (const char *s1, const char *s2)
-{
- return strcmp (s1 + 9, s2 + 9) == 0;
-}
-
-static inline int
-streq8 (const char *s1, const char *s2, char s28)
-{
- if (s1[8] == s28)
- {
- if (s28 == 0)
- return 1;
- else
- return streq9 (s1, s2);
- }
- else
- return 0;
-}
-
-static inline int
-streq7 (const char *s1, const char *s2, char s27, char s28)
-{
- if (s1[7] == s27)
- {
- if (s27 == 0)
- return 1;
- else
- return streq8 (s1, s2, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq6 (const char *s1, const char *s2, char s26, char s27, char s28)
-{
- if (s1[6] == s26)
- {
- if (s26 == 0)
- return 1;
- else
- return streq7 (s1, s2, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq5 (const char *s1, const char *s2, char s25, char s26, char s27, char s28)
-{
- if (s1[5] == s25)
- {
- if (s25 == 0)
- return 1;
- else
- return streq6 (s1, s2, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq4 (const char *s1, const char *s2, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[4] == s24)
- {
- if (s24 == 0)
- return 1;
- else
- return streq5 (s1, s2, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq3 (const char *s1, const char *s2, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[3] == s23)
- {
- if (s23 == 0)
- return 1;
- else
- return streq4 (s1, s2, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq2 (const char *s1, const char *s2, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[2] == s22)
- {
- if (s22 == 0)
- return 1;
- else
- return streq3 (s1, s2, s23, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq1 (const char *s1, const char *s2, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[1] == s21)
- {
- if (s21 == 0)
- return 1;
- else
- return streq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-static inline int
-streq0 (const char *s1, const char *s2, char s20, char s21, char s22, char s23, char s24, char s25, char s26, char s27, char s28)
-{
- if (s1[0] == s20)
- {
- if (s20 == 0)
- return 1;
- else
- return streq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
- }
- else
- return 0;
-}
-
-#define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
- streq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
-
-#else
-
-#define STREQ_OPT(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
- (strcmp (s1, s2) == 0)
-
-#endif
-
-#endif /* _GL_STREQ_H */
diff --git a/contrib/tools/m4/lib/unsetenv.c b/contrib/tools/m4/lib/unsetenv.c
deleted file mode 100644
index cfb800a992..0000000000
--- a/contrib/tools/m4/lib/unsetenv.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Copyright (C) 1992, 1995-2002, 2005-2013 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- 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 <http://www.gnu.org/licenses/>. */
-
-/* Don't use __attribute__ __nonnull__ in this compilation unit. Otherwise gcc
- optimizes away the name == NULL test below. */
-#define _GL_ARG_NONNULL(params)
-
-#include <config.h>
-
-/* Specification. */
-#include <stdlib.h>
-
-#include <errno.h>
-#if !_LIBC
-# define __set_errno(ev) ((errno) = (ev))
-#endif
-
-#include <string.h>
-#include <unistd.h>
-
-#if !_LIBC
-# define __environ environ
-#endif
-
-#if _LIBC
-/* This lock protects against simultaneous modifications of 'environ'. */
-# error #include <bits/libc-lock.h>
-__libc_lock_define_initialized (static, envlock)
-# define LOCK __libc_lock_lock (envlock)
-# define UNLOCK __libc_lock_unlock (envlock)
-#else
-# define LOCK
-# define UNLOCK
-#endif
-
-/* In the GNU C library we must keep the namespace clean. */
-#ifdef _LIBC
-# define unsetenv __unsetenv
-#endif
-
-#if _LIBC || !HAVE_UNSETENV
-
-int
-unsetenv (const char *name)
-{
- size_t len;
- char **ep;
-
- if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- len = strlen (name);
-
- LOCK;
-
- ep = __environ;
- while (*ep != NULL)
- if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
- {
- /* Found it. Remove this pointer by moving later ones back. */
- char **dp = ep;
-
- do
- dp[0] = dp[1];
- while (*dp++);
- /* Continue the loop in case NAME appears again. */
- }
- else
- ++ep;
-
- UNLOCK;
-
- return 0;
-}
-
-#ifdef _LIBC
-# undef unsetenv
-weak_alias (__unsetenv, unsetenv)
-#endif
-
-#else /* HAVE_UNSETENV */
-
-# undef unsetenv
-# if !HAVE_DECL_UNSETENV
-# if VOID_UNSETENV
-extern void unsetenv (const char *);
-# else
-extern int unsetenv (const char *);
-# endif
-# endif
-
-/* Call the underlying unsetenv, in case there is hidden bookkeeping
- that needs updating beyond just modifying environ. */
-int
-rpl_unsetenv (const char *name)
-{
- int result = 0;
- if (!name || !*name || strchr (name, '='))
- {
- errno = EINVAL;
- return -1;
- }
- while (getenv (name))
-# if !VOID_UNSETENV
- result =
-# endif
- unsetenv (name);
- return result;
-}
-
-#endif /* HAVE_UNSETENV */
diff --git a/contrib/tools/m4/lib/vasnprintf.c b/contrib/tools/m4/lib/vasnprintf.c
index 4de22819fa..184937d6f1 100644
--- a/contrib/tools/m4/lib/vasnprintf.c
+++ b/contrib/tools/m4/lib/vasnprintf.c
@@ -54,7 +54,7 @@
# include <config.h>
#endif
#ifndef IN_LIBINTL
-# include "palloca.h"
+# include <alloca.h>
#endif
/* Specification. */
@@ -5575,10 +5575,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
if (buf_malloced != NULL)
free (buf_malloced);
CLEANUP ();
-#if (defined _MSC_VER) && (_MSC_VER < 1800)
-#else
errno = EOVERFLOW;
-#endif
return NULL;
#endif
diff --git a/contrib/tools/m4/lib/vasprintf.c b/contrib/tools/m4/lib/vasprintf.c
index afc8056194..d0d4a11bf7 100644
--- a/contrib/tools/m4/lib/vasprintf.c
+++ b/contrib/tools/m4/lib/vasprintf.c
@@ -40,10 +40,7 @@ vasprintf (char **resultp, const char *format, va_list args)
if (length > INT_MAX)
{
free (result);
-#if (defined _MSC_VER) && (_MSC_VER < 1800)
-#else
errno = EOVERFLOW;
-#endif
return -1;
}
diff --git a/contrib/tools/m4/lib/xstrndup.c b/contrib/tools/m4/lib/xstrndup.c
index 741d5a1b05..eae92d039d 100644
--- a/contrib/tools/m4/lib/xstrndup.c
+++ b/contrib/tools/m4/lib/xstrndup.c
@@ -21,25 +21,8 @@
#include "xstrndup.h"
#include <string.h>
-#include <stdlib.h>
-
#include "xalloc.h"
-#if defined(_MSC_VER)
-static char *
-strndup(char const *s, size_t n)
-{
- size_t len = strnlen(s, n);
- char *new = malloc(len + 1);
-
- if (new == NULL)
- return NULL;
-
- new[len] = '\0';
- return memcpy(new, s, len);
-}
-#endif
-
/* Return a newly allocated copy of at most N bytes of STRING.
In other words, return a copy of the initial segment of length N of
STRING. */
diff --git a/contrib/tools/m4/lib/xvasprintf.c b/contrib/tools/m4/lib/xvasprintf.c
index 9c93492b80..702b5e6b1a 100644
--- a/contrib/tools/m4/lib/xvasprintf.c
+++ b/contrib/tools/m4/lib/xvasprintf.c
@@ -53,10 +53,7 @@ xstrcat (size_t argcount, va_list args)
vasprintf(). */
if (totalsize == SIZE_MAX || totalsize > INT_MAX)
{
-#if (defined _MSC_VER) && (_MSC_VER < 1800)
-#else
errno = EOVERFLOW;
-#endif
return NULL;
}
@@ -75,10 +72,6 @@ xstrcat (size_t argcount, va_list args)
return result;
}
-#if defined(_MSC_VER)
-int vasprintf(char **resultp, const char *format, va_list args);
-#endif
-
char *
xvasprintf (const char *format, va_list args)
{
diff --git a/contrib/tools/m4/lib/ya.make b/contrib/tools/m4/lib/ya.make
index ccb5f20ba0..08270b4b33 100644
--- a/contrib/tools/m4/lib/ya.make
+++ b/contrib/tools/m4/lib/ya.make
@@ -74,8 +74,6 @@ SRCS(
filenamecat-lgpl.c
filenamecat.c
fopen-safer.c
- fpurge.c
- freading.c
fstat.c
getdtablesize.c
gl_avltree_oset.c
@@ -84,13 +82,8 @@ SRCS(
gl_oset.c
gl_xlist.c
gl_xoset.c
- isnand.c
- isnanl.c
- isnanf.c
localcharset.c
- lseek.c
malloca.c
- mbrtowc.c
memchr2.c
mkstemp-safer.c
nl_langinfo.c
@@ -103,19 +96,14 @@ SRCS(
progname.c
quotearg.c
raise.c
- realloc.c
regex.c
- rmdir.c
secure_getenv.c
sig-handler.c
spawn-pipe.c
- stat.c
- stpcpy.c
stripslash.c
tempname.c
tmpdir.c
unistd.c
- unsetenv.c
vasnprintf.c
verror.c
version-etc-fsf.c
@@ -156,7 +144,6 @@ IF (OS_WINDOWS)
localeconv.c
msvc-inval.c
msvc-nothrow.c
- open.c
sigaction.c
sigprocmask.c
waitpid.c
diff --git a/library/cpp/cache/thread_safe_cache.h b/library/cpp/cache/thread_safe_cache.h
index e77d1a45fd..b4bd4deedf 100644
--- a/library/cpp/cache/thread_safe_cache.h
+++ b/library/cpp/cache/thread_safe_cache.h
@@ -3,6 +3,7 @@
#include "cache.h"
#include <util/generic/singleton.h>
+#include <util/generic/ylimits.h>
#include <util/system/rwlock.h>
namespace NPrivate {
diff --git a/library/cpp/linear_regression/linear_regression.h b/library/cpp/linear_regression/linear_regression.h
index e57de5ff6c..5f2a2a1ca9 100644
--- a/library/cpp/linear_regression/linear_regression.h
+++ b/library/cpp/linear_regression/linear_regression.h
@@ -7,6 +7,7 @@
#include <util/generic/vector.h>
#include <util/generic/hash.h>
+#include <util/generic/ylimits.h>
#include <util/generic/ymath.h>
class TFastLinearRegressionSolver {
diff --git a/library/cpp/tld/tlds-alpha-by-domain.txt b/library/cpp/tld/tlds-alpha-by-domain.txt
index f755065df7..055d440b6e 100644
--- a/library/cpp/tld/tlds-alpha-by-domain.txt
+++ b/library/cpp/tld/tlds-alpha-by-domain.txt
@@ -1,4 +1,4 @@
-# Version 2024101300, Last Updated Sun Oct 13 07:07:01 2024 UTC
+# Version 2024101600, Last Updated Wed Oct 16 07:07:02 2024 UTC
AAA
AARP
ABB
diff --git a/library/cpp/yt/memory/blob.cpp b/library/cpp/yt/memory/blob.cpp
index 260cfb698b..b4de038948 100644
--- a/library/cpp/yt/memory/blob.cpp
+++ b/library/cpp/yt/memory/blob.cpp
@@ -197,6 +197,8 @@ void TBlob::SetTagCookie(TRefCountedTypeCookie tagCookie)
{
#ifdef YT_ENABLE_REF_COUNTED_TRACKING
TagCookie_ = tagCookie;
+#else
+ Y_UNUSED(tagCookie);
#endif
}
@@ -204,6 +206,8 @@ void TBlob::SetTagCookie(const TBlob& other)
{
#ifdef YT_ENABLE_REF_COUNTED_TRACKING
TagCookie_ = other.TagCookie_;
+#else
+ Y_UNUSED(other);
#endif
}
diff --git a/library/cpp/yt/memory/ya.make b/library/cpp/yt/memory/ya.make
index c2d78b0d07..bd817454a9 100644
--- a/library/cpp/yt/memory/ya.make
+++ b/library/cpp/yt/memory/ya.make
@@ -2,6 +2,10 @@ LIBRARY()
INCLUDE(${ARCADIA_ROOT}/library/cpp/yt/ya_cpp.make.inc)
+IF (YT_DISABLE_REF_COUNTED_TRACKING)
+ CXXFLAGS(-DYT_DISABLE_REF_COUNTED_TRACKING)
+ENDIF()
+
SRCS(
allocation_tags_hooks.cpp
blob.cpp
diff --git a/library/cpp/yt/string/string-inl.h b/library/cpp/yt/string/string-inl.h
index baf789b4f1..e3bf094aa3 100644
--- a/library/cpp/yt/string/string-inl.h
+++ b/library/cpp/yt/string/string-inl.h
@@ -4,7 +4,7 @@
#include "string.h"
#endif
-#include "format.h"
+#include "string_builder.h"
namespace NYT {
@@ -19,7 +19,7 @@ namespace NYT {
* \param delimiter A delimiter to be inserted between items: ", " by default.
* \return The resulting combined string.
*/
-template <class TIterator, class TFormatter>
+template <std::forward_iterator TIterator, class TFormatter>
void JoinToString(
TStringBuilderBase* builder,
const TIterator& begin,
@@ -35,7 +35,7 @@ void JoinToString(
}
}
-template <class TIterator, class TFormatter>
+template <std::forward_iterator TIterator, class TFormatter>
TString JoinToString(
const TIterator& begin,
const TIterator& end,
@@ -48,7 +48,7 @@ TString JoinToString(
}
//! A handy shortcut with default formatter.
-template <class TIterator>
+template <std::forward_iterator TIterator>
TString JoinToString(
const TIterator& begin,
const TIterator& end,
@@ -63,9 +63,9 @@ TString JoinToString(
* \param formatter Formatter to apply to the items.
* \param delimiter A delimiter to be inserted between items; ", " by default.
*/
-template <class TCollection, class TFormatter>
+template <std::ranges::range TCollection, class TFormatter>
TString JoinToString(
- const TCollection& collection,
+ TCollection&& collection,
const TFormatter& formatter,
TStringBuf delimiter)
{
@@ -75,12 +75,12 @@ TString JoinToString(
}
//! A handy shortcut with the default formatter.
-template <class TCollection>
+template <std::ranges::range TCollection>
TString JoinToString(
- const TCollection& collection,
+ TCollection&& collection,
TStringBuf delimiter)
{
- return JoinToString(collection, TDefaultFormatter(), delimiter);
+ return JoinToString(std::forward<TCollection>(collection), TDefaultFormatter(), delimiter);
}
//! Concatenates a bunch of TStringBuf-like instances into TString.
@@ -98,7 +98,7 @@ TString ConcatToString(Ts... args)
}
//! Converts a range of items into strings.
-template <class TIter, class TFormatter>
+template <std::forward_iterator TIter, class TFormatter>
std::vector<TString> ConvertToStrings(
const TIter& begin,
const TIter& end,
@@ -118,7 +118,7 @@ std::vector<TString> ConvertToStrings(
}
//! A handy shortcut with the default formatter.
-template <class TIter>
+template <std::forward_iterator TIter>
std::vector<TString> ConvertToStrings(
const TIter& begin,
const TIter& end,
@@ -133,9 +133,9 @@ std::vector<TString> ConvertToStrings(
* \param formatter Formatter to apply to the items.
* \param maxSize Size limit for the resulting vector.
*/
-template <class TCollection, class TFormatter>
+template <std::ranges::range TCollection, class TFormatter>
std::vector<TString> ConvertToStrings(
- const TCollection& collection,
+ TCollection&& collection,
const TFormatter& formatter,
size_t maxSize)
{
@@ -145,12 +145,12 @@ std::vector<TString> ConvertToStrings(
}
//! A handy shortcut with default formatter.
-template <class TCollection>
+template <std::ranges::range TCollection>
std::vector<TString> ConvertToStrings(
- const TCollection& collection,
+ TCollection&& collection,
size_t maxSize)
{
- return ConvertToStrings(collection, TDefaultFormatter(), maxSize);
+ return ConvertToStrings(std::forward<TCollection>(collection), TDefaultFormatter(), maxSize);
}
////////////////////////////////////////////////////////////////////////////////
diff --git a/library/cpp/yt/string/string.h b/library/cpp/yt/string/string.h
index b91d1b3805..9794cfd69f 100644
--- a/library/cpp/yt/string/string.h
+++ b/library/cpp/yt/string/string.h
@@ -9,8 +9,6 @@
#include <util/string/strip.h>
#include <vector>
-#include <set>
-#include <map>
namespace NYT {
@@ -65,7 +63,7 @@ static constexpr TStringBuf IntToHexUppercase = "0123456789ABCDEF";
* \param delimiter A delimiter to be inserted between items: ", " by default.
* \return The resulting combined string.
*/
-template <class TIterator, class TFormatter>
+template <std::forward_iterator TIterator, class TFormatter>
void JoinToString(
TStringBuilderBase* builder,
const TIterator& begin,
@@ -73,7 +71,7 @@ void JoinToString(
const TFormatter& formatter,
TStringBuf delimiter = DefaultJoinToStringDelimiter);
-template <class TIterator, class TFormatter>
+template <std::forward_iterator TIterator, class TFormatter>
TString JoinToString(
const TIterator& begin,
const TIterator& end,
@@ -81,7 +79,7 @@ TString JoinToString(
TStringBuf delimiter = DefaultJoinToStringDelimiter);
//! A handy shortcut with default formatter.
-template <class TIterator>
+template <std::forward_iterator TIterator>
TString JoinToString(
const TIterator& begin,
const TIterator& end,
@@ -93,16 +91,16 @@ TString JoinToString(
* \param formatter Formatter to apply to the items.
* \param delimiter A delimiter to be inserted between items; ", " by default.
*/
-template <class TCollection, class TFormatter>
+template <std::ranges::range TCollection, class TFormatter>
TString JoinToString(
- const TCollection& collection,
+ TCollection&& collection,
const TFormatter& formatter,
TStringBuf delimiter = DefaultJoinToStringDelimiter);
//! A handy shortcut with the default formatter.
-template <class TCollection>
+template <std::ranges::range TCollection>
TString JoinToString(
- const TCollection& collection,
+ TCollection&& collection,
TStringBuf delimiter = DefaultJoinToStringDelimiter);
//! Concatenates a bunch of TStringBuf-like instances into TString.
@@ -110,7 +108,7 @@ template <class... Ts>
TString ConcatToString(Ts... args);
//! Converts a range of items into strings.
-template <class TIter, class TFormatter>
+template <std::forward_iterator TIter, class TFormatter>
std::vector<TString> ConvertToStrings(
const TIter& begin,
const TIter& end,
@@ -118,7 +116,7 @@ std::vector<TString> ConvertToStrings(
size_t maxSize = std::numeric_limits<size_t>::max());
//! A handy shortcut with the default formatter.
-template <class TIter>
+template <std::forward_iterator TIter>
std::vector<TString> ConvertToStrings(
const TIter& begin,
const TIter& end,
@@ -130,16 +128,16 @@ std::vector<TString> ConvertToStrings(
* \param formatter Formatter to apply to the items.
* \param maxSize Size limit for the resulting vector.
*/
-template <class TCollection, class TFormatter>
+template <std::ranges::range TCollection, class TFormatter>
std::vector<TString> ConvertToStrings(
- const TCollection& collection,
+ TCollection&& collection,
const TFormatter& formatter,
size_t maxSize = std::numeric_limits<size_t>::max());
//! A handy shortcut with default formatter.
-template <class TCollection>
+template <std::ranges::range TCollection>
std::vector<TString> ConvertToStrings(
- const TCollection& collection,
+ TCollection&& collection,
size_t maxSize = std::numeric_limits<size_t>::max());
////////////////////////////////////////////////////////////////////////////////
diff --git a/util/folder/iterator.h b/util/folder/iterator.h
index c79d56c654..932d0fc844 100644
--- a/util/folder/iterator.h
+++ b/util/folder/iterator.h
@@ -6,6 +6,7 @@
#include <util/generic/ptr.h>
#include <util/generic/iterator.h>
#include <util/generic/yexception.h>
+#include <util/generic/ylimits.h>
/// Note this magic API traverses directory hierarchy
diff --git a/util/generic/string.h b/util/generic/string.h
index bfaec2d140..46b994bb97 100644
--- a/util/generic/string.h
+++ b/util/generic/string.h
@@ -4,7 +4,6 @@
#include <cstddef>
#include <cstring>
#include <stlfwd>
-#include <stdexcept>
#include <string>
#include <string_view>
#include <type_traits>
@@ -14,7 +13,6 @@
#include "ptr.h"
#include "utility.h"
-#include "bitops.h"
#include "explicit_type.h"
#include "reserve.h"
#ifndef _LIBCPP_VERSION
@@ -23,6 +21,7 @@
#include "strbase.h"
#include "strbuf.h"
#include "string_hash.h"
+#include "ylimits.h"
#if defined(address_sanitizer_enabled) || defined(thread_sanitizer_enabled)
#include "hide_ptr.h"
diff --git a/yt/yt/client/api/file_reader.h b/yt/yt/client/api/file_reader.h
index bf4855fef3..c735e9aadc 100644
--- a/yt/yt/client/api/file_reader.h
+++ b/yt/yt/client/api/file_reader.h
@@ -6,6 +6,7 @@
#include <yt/yt/client/object_client/public.h>
#include <yt/yt/core/concurrency/public.h>
+#include <yt/yt/core/concurrency/async_stream.h>
namespace NYT::NApi {
diff --git a/yt/yt/client/api/queue_transaction.h b/yt/yt/client/api/queue_transaction.h
index f01beae541..4644fcc8e1 100644
--- a/yt/yt/client/api/queue_transaction.h
+++ b/yt/yt/client/api/queue_transaction.h
@@ -71,7 +71,7 @@ struct IQueueTransaction
int partitionIndex,
std::optional<i64> oldOffset,
i64 newOffset,
- const TAdvanceQueueConsumerOptions& options) = 0;
+ const TAdvanceQueueConsumerOptions& options = {}) = 0;
//! Writes rows in the queue with checking their sequence number.
/*!
diff --git a/yt/yt/client/api/rpc_proxy/client_base.cpp b/yt/yt/client/api/rpc_proxy/client_base.cpp
index 6ad3c152b4..266cecd1db 100644
--- a/yt/yt/client/api/rpc_proxy/client_base.cpp
+++ b/yt/yt/client/api/rpc_proxy/client_base.cpp
@@ -1046,6 +1046,7 @@ TFuture<TSelectRowsResult> TClientBase::SelectRows(
}
req->set_range_expansion_limit(options.RangeExpansionLimit);
req->set_max_subqueries(options.MaxSubqueries);
+ req->set_min_row_count_per_subquery(options.MinRowCountPerSubquery);
req->set_allow_full_scan(options.AllowFullScan);
req->set_allow_join_without_index(options.AllowJoinWithoutIndex);
diff --git a/yt/yt/client/api/rpc_proxy/row_batch_reader.cpp b/yt/yt/client/api/rpc_proxy/row_batch_reader.cpp
index 22223f6945..e0d95775b4 100644
--- a/yt/yt/client/api/rpc_proxy/row_batch_reader.cpp
+++ b/yt/yt/client/api/rpc_proxy/row_batch_reader.cpp
@@ -139,8 +139,7 @@ TFuture<TSharedRange<TUnversionedRow>> TRowBatchReader::GetRows()
}
void TRowBatchReader::ApplyStatistics(const NProto::TRowsetStatistics& /*statistics*/)
-{
-}
+{ }
////////////////////////////////////////////////////////////////////////////////
diff --git a/yt/yt/client/chunk_client/public.h b/yt/yt/client/chunk_client/public.h
index 5c93ee55fd..698e918d3c 100644
--- a/yt/yt/client/chunk_client/public.h
+++ b/yt/yt/client/chunk_client/public.h
@@ -89,6 +89,7 @@ YT_DEFINE_ERROR_ENUM(
((TooManyChunksToFetch) (760))
((TotalMemoryLimitExceeded) (761))
((ForbiddenErasureCodec) (762))
+ ((ReadMetaTimeout) (763))
);
DEFINE_ENUM(EUpdateMode,
diff --git a/yt/yt/client/scheduler/public.h b/yt/yt/client/scheduler/public.h
index ac7afba09b..9d6d96f751 100644
--- a/yt/yt/client/scheduler/public.h
+++ b/yt/yt/client/scheduler/public.h
@@ -68,6 +68,7 @@ YT_DEFINE_ERROR_ENUM(
((NoSuchJobShell) (219))
((JobResourceLimitsRestrictionsViolated) (220))
((CannotUseBothAclAndAco) (221))
+ ((GangOperationsAllowedOnlyInFifoPools) (222))
);
DEFINE_ENUM(EUnavailableChunkAction,
diff --git a/yt/yt/client/ya.make b/yt/yt/client/ya.make
index a09ba33382..fef0c10938 100644
--- a/yt/yt/client/ya.make
+++ b/yt/yt/client/ya.make
@@ -198,9 +198,13 @@ SRCS(
kafka/requests.cpp
)
+CONFIGURE_FILE(
+ api/rpc_proxy/protocol_version_variables.h.in
+ api/rpc_proxy/protocol_version_variables.h
+)
+
SRCS(
${YT_SRCS}
- yt/yt/client/api/rpc_proxy/protocol_version_variables.h.in
)
PEERDIR(
diff --git a/yt/yt/core/logging/log_manager.cpp b/yt/yt/core/logging/log_manager.cpp
index fa96cbc28a..1a6d51cb02 100644
--- a/yt/yt/core/logging/log_manager.cpp
+++ b/yt/yt/core/logging/log_manager.cpp
@@ -1337,7 +1337,8 @@ private:
Visit(event,
[&] (const TConfigEvent& event) {
- return UpdateConfig(event);
+ UpdateConfig(event);
+ config = Config_.Acquire();
},
[&] (const TLogEvent& event) {
if (requestSuppressionEnabled && event.RequestId && SuppressedRequestIdSet_.Contains(event.RequestId)) {
diff --git a/yt/yt/core/ytree/ypath_client.cpp b/yt/yt/core/ytree/ypath_client.cpp
index a07176978b..05086a2486 100644
--- a/yt/yt/core/ytree/ypath_client.cpp
+++ b/yt/yt/core/ytree/ypath_client.cpp
@@ -399,12 +399,16 @@ void ExecuteVerb(
TFuture<TYsonString> AsyncYPathGet(
const IYPathServicePtr& service,
const TYPath& path,
- const TAttributeFilter& attributeFilter)
+ const TAttributeFilter& attributeFilter,
+ const IAttributeDictionaryPtr& options)
{
auto request = TYPathProxy::Get(path);
if (attributeFilter) {
ToProto(request->mutable_attributes(), attributeFilter);
}
+ if (options) {
+ ToProto(request->mutable_options(), *options);
+ }
return ExecuteVerb(service, request)
.Apply(BIND([] (TYPathProxy::TRspGetPtr response) {
return TYsonString(response->value());
@@ -423,9 +427,10 @@ TString SyncYPathGetKey(const IYPathServicePtr& service, const TYPath& path)
TYsonString SyncYPathGet(
const IYPathServicePtr& service,
const TYPath& path,
- const TAttributeFilter& attributeFilter)
+ const TAttributeFilter& attributeFilter,
+ const IAttributeDictionaryPtr& options)
{
- auto future = AsyncYPathGet(service, path, attributeFilter);
+ auto future = AsyncYPathGet(service, path, attributeFilter, options);
auto optionalResult = future.TryGetUnique();
YT_VERIFY(optionalResult);
return optionalResult->ValueOrThrow();
diff --git a/yt/yt/core/ytree/ypath_client.h b/yt/yt/core/ytree/ypath_client.h
index 2f9fc916e4..d4889b7fe3 100644
--- a/yt/yt/core/ytree/ypath_client.h
+++ b/yt/yt/core/ytree/ypath_client.h
@@ -258,13 +258,15 @@ TString SyncYPathGetKey(
TFuture<NYson::TYsonString> AsyncYPathGet(
const IYPathServicePtr& service,
const TYPath& path,
- const TAttributeFilter& attributeFilter = {});
+ const TAttributeFilter& attributeFilter = {},
+ const IAttributeDictionaryPtr& options = {});
//! Executes |Get| verb assuming #service handles requests synchronously. Throws if an error has occurred.
NYson::TYsonString SyncYPathGet(
const IYPathServicePtr& service,
const TYPath& path,
- const TAttributeFilter& attributeFilter = {});
+ const TAttributeFilter& attributeFilter = {},
+ const IAttributeDictionaryPtr& options = {});
//! Asynchronously executes |Exists| verb.
TFuture<bool> AsyncYPathExists(
diff --git a/yt/yt/library/profiling/solomon/sensor_service.cpp b/yt/yt/library/profiling/solomon/sensor_service.cpp
index ce25c41673..4329d64264 100644
--- a/yt/yt/library/profiling/solomon/sensor_service.cpp
+++ b/yt/yt/library/profiling/solomon/sensor_service.cpp
@@ -4,13 +4,11 @@
#include "registry.h"
#include "private.h"
-#include <yt/yt/core/concurrency/async_rw_lock.h>
#include <yt/yt/core/concurrency/periodic_executor.h>
#include <yt/yt/core/ytree/fluent.h>
#include <yt/yt/core/ytree/virtual.h>
#include <yt/yt/core/ytree/ypath_client.h>
-#include <yt/yt/core/ytree/ypath_detail.h>
namespace NYT::NProfiling {
@@ -178,7 +176,7 @@ private:
auto node = CreateVirtualNode(std::move(sensorServiceImpl));
try {
- auto path = "/" + NYPath::ToYPathLiteral(name);
+ auto path = TYPath("/" + name);
ForceYPath(Root_, path);
SetNodeByYPath(Root_, path, node);
} catch (const std::exception& ex) {
@@ -196,7 +194,7 @@ private:
SensorTreeUpdateDuration_.Record(elapsed);
YT_LOG_DEBUG(
- "Finished updating sensor service tree"
+ "Finished updating sensor service tree "
"(TotalSensorCount: %v, AddedSensorCount: %v, MalformedSensorCount: %v, Elapsed: %v)",
sensors.size(),
addedSensorCount,
diff --git a/yt/yt/library/profiling/unittests/exporter_ut.cpp b/yt/yt/library/profiling/unittests/exporter_ut.cpp
index ef654170fb..2187b43b7d 100644
--- a/yt/yt/library/profiling/unittests/exporter_ut.cpp
+++ b/yt/yt/library/profiling/unittests/exporter_ut.cpp
@@ -1,9 +1,9 @@
-#include "yt/yt/library/profiling/solomon/registry.h"
#include <gtest/gtest.h>
#include <yt/yt/core/concurrency/action_queue.h>
#include <yt/yt/library/profiling/solomon/exporter.h>
+#include <yt/yt/library/profiling/solomon/registry.h>
namespace NYT::NProfiling {
namespace {
diff --git a/yt/yt/library/profiling/unittests/sensor_service_ut.cpp b/yt/yt/library/profiling/unittests/sensor_service_ut.cpp
new file mode 100644
index 0000000000..7571a349ee
--- /dev/null
+++ b/yt/yt/library/profiling/unittests/sensor_service_ut.cpp
@@ -0,0 +1,64 @@
+#include <gtest/gtest.h>
+
+#include <yt/yt/core/ytree/helpers.h>
+#include <yt/yt/core/ytree/ypath_client.h>
+#include <yt/yt/core/ytree/ypath_proxy.h>
+
+#include <yt/yt/library/profiling/solomon/registry.h>
+#include <yt/yt/library/profiling/solomon/exporter.h>
+#include <yt/yt/library/profiling/solomon/sensor_service.h>
+
+namespace NYT::NProfiling {
+namespace {
+
+using namespace NConcurrency;
+using namespace NYPath;
+using namespace NYTree;
+using namespace NYson;
+
+////////////////////////////////////////////////////////////////////////////////
+
+TEST(TSensorService, GetSensor)
+{
+ auto registry = New<TSolomonRegistry>();
+ auto config = New<TSolomonExporterConfig>();
+ config->GridStep = TDuration::Seconds(1);
+ config->UpdateSensorServiceTreePeriod = TDuration::MilliSeconds(100);
+ config->EnableSelfProfiling = false;
+ auto exporter = New<TSolomonExporter>(config, registry);
+
+ exporter->Start();
+
+ auto gauge = TProfiler(registry, "/foo").Gauge("/bar/baz");
+ gauge.Update(117.0);
+
+ registry->Collect();
+ auto sensorService = exporter->GetSensorService();
+
+ auto valueByName = [&] {
+ auto options = CreateEphemeralAttributes();
+ options->Set("name", "yt/foo/bar/baz");
+
+ return ConvertTo<double>(SyncYPathGet(sensorService, "", /*attributeFilter*/ {}, options));
+ }();
+
+ EXPECT_EQ(valueByName, 117.0);
+
+ TDelayedExecutor::WaitForDuration(2 * config->UpdateSensorServiceTreePeriod);
+
+ auto valueByPath = [&] {
+ auto options = CreateEphemeralAttributes();
+ options->Set("read_all_projections", false);
+
+ return ConvertTo<double>(SyncYPathGet(sensorService, "/yt/foo/bar/baz", /*attributeFilter*/ {}, options));
+ }();
+
+ EXPECT_EQ(valueByPath, 117.0);
+
+ exporter->Stop();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+} // namespace
+} // namespace NYT::NProfiling
diff --git a/yt/yt/library/profiling/unittests/ya.make b/yt/yt/library/profiling/unittests/ya.make
index 073921728b..0fa5d9e6ee 100644
--- a/yt/yt/library/profiling/unittests/ya.make
+++ b/yt/yt/library/profiling/unittests/ya.make
@@ -8,6 +8,7 @@ ENDIF()
SRCS(
sensor_ut.cpp
+ sensor_service_ut.cpp
name_conflicts_ut.cpp
profiler_ut.cpp
solomon_ut.cpp