From 4487757fbfd98a8d9ac77a04a152a16f70231183 Mon Sep 17 00:00:00 2001 From: alessio Date: Tue, 17 Sep 2024 15:07:55 +0200 Subject: [PATCH] Remove functions that set ports in dispatchmanager object --- bin/named/server.c | 64 +------------------------------ bin/nsupdate/nsupdate.c | 30 --------------- bin/tools/mdig.c | 43 --------------------- lib/dns/client.c | 44 ---------------------- lib/dns/dispatch.c | 83 +++++------------------------------------ 5 files changed, 10 insertions(+), 254 deletions(-) diff --git a/bin/named/server.c b/bin/named/server.c index 35b3ac9253..82cd9ba53e 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -7946,12 +7946,10 @@ load_configuration(const char *filename, named_server_t *server, dns_view_t *view_next = NULL; dns_viewlist_t tmpviewlist; dns_viewlist_t viewlist, builtin_viewlist; - in_port_t listen_port, udpport_low, udpport_high; + in_port_t listen_port; int i, backlog; isc_interval_t interval; isc_logconfig_t *logc = NULL; - isc_portset_t *v4portset = NULL; - isc_portset_t *v6portset = NULL; isc_result_t result; uint32_t interface_interval; uint32_t udpsize; @@ -8346,62 +8344,6 @@ load_configuration(const char *filename, named_server_t *server, #undef CAP_IF_NOT_ZERO - /* - * Configure sets of UDP query source ports. - */ - result = isc_portset_create(named_g_mctx, &v4portset); - if (result != ISC_R_SUCCESS) { - isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER, - ISC_LOG_ERROR, "creating UDP/IPv4 port set: %s", - isc_result_totext(result)); - goto cleanup_bindkeys_parser; - } - result = isc_portset_create(named_g_mctx, &v6portset); - if (result != ISC_R_SUCCESS) { - isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER, - ISC_LOG_ERROR, "creating UDP/IPv6 port set: %s", - isc_result_totext(result)); - goto cleanup_v4portset; - } - - result = isc_net_getudpportrange(AF_INET, &udpport_low, &udpport_high); - if (result != ISC_R_SUCCESS) { - isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER, - ISC_LOG_ERROR, - "get the default UDP/IPv4 port range: %s", - isc_result_totext(result)); - goto cleanup_v6portset; - } - - isc_portset_addrange(v4portset, udpport_low, udpport_high); - if (!ns_server_getoption(server->sctx, NS_SERVER_DISABLE4)) { - isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER, - ISC_LOG_INFO, - "using default UDP/IPv4 port range: " - "[%d, %d]", - udpport_low, udpport_high); - } - - result = isc_net_getudpportrange(AF_INET6, &udpport_low, &udpport_high); - if (result != ISC_R_SUCCESS) { - isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER, - ISC_LOG_ERROR, - "get the default UDP/IPv6 port range: %s", - isc_result_totext(result)); - goto cleanup_v6portset; - } - isc_portset_addrange(v6portset, udpport_low, udpport_high); - if (!ns_server_getoption(server->sctx, NS_SERVER_DISABLE6)) { - isc_log_write(NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_SERVER, - ISC_LOG_INFO, - "using default UDP/IPv6 port range: " - "[%d, %d]", - udpport_low, udpport_high); - } - - dns_dispatchmgr_setavailports(named_g_dispatchmgr, v4portset, - v6portset); - /* * Set the EDNS UDP size when we don't match a view. */ @@ -9402,11 +9344,7 @@ cleanup_keystorelist: } cleanup_v6portset: - isc_portset_destroy(named_g_mctx, &v6portset); - cleanup_v4portset: - isc_portset_destroy(named_g_mctx, &v4portset); - cleanup_bindkeys_parser: if (bindkeys_parser != NULL) { diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 8285fa4aba..07c64ba5f0 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -757,34 +757,6 @@ shutdown_program(void *arg) { maybeshutdown(); } -/* - * Try honoring the operating system's preferred ephemeral port range. - */ -static void -set_source_ports(dns_dispatchmgr_t *manager) { - isc_portset_t *v4portset = NULL, *v6portset = NULL; - in_port_t udpport_low, udpport_high; - isc_result_t result; - - result = isc_portset_create(gmctx, &v4portset); - check_result(result, "isc_portset_create (v4)"); - result = isc_net_getudpportrange(AF_INET, &udpport_low, &udpport_high); - check_result(result, "isc_net_getudpportrange (v4)"); - isc_portset_addrange(v4portset, udpport_low, udpport_high); - - result = isc_portset_create(gmctx, &v6portset); - check_result(result, "isc_portset_create (v6)"); - result = isc_net_getudpportrange(AF_INET6, &udpport_low, &udpport_high); - check_result(result, "isc_net_getudpportrange (v6)"); - isc_portset_addrange(v6portset, udpport_low, udpport_high); - - result = dns_dispatchmgr_setavailports(manager, v4portset, v6portset); - check_result(result, "dns_dispatchmgr_setavailports"); - - isc_portset_destroy(gmctx, &v4portset); - isc_portset_destroy(gmctx, &v6portset); -} - static isc_result_t create_name(const char *str, char *namedata, size_t len, dns_name_t *name) { isc_buffer_t namesrc, namebuf; @@ -920,8 +892,6 @@ setup_system(void *arg ISC_ATTR_UNUSED) { result = dns_dispatchmgr_create(gmctx, loopmgr, netmgr, &dispatchmgr); check_result(result, "dns_dispatchmgr_create"); - set_source_ports(dispatchmgr); - if (have_ipv6) { isc_sockaddr_any6(&bind_any6); result = dns_dispatch_createudp(dispatchmgr, &bind_any6, diff --git a/bin/tools/mdig.c b/bin/tools/mdig.c index 1587600585..4849adcd75 100644 --- a/bin/tools/mdig.c +++ b/bin/tools/mdig.c @@ -2035,47 +2035,6 @@ parse_args(bool is_batchfile, int argc, char **argv) { } } -/* - * Try honoring the operating system's preferred ephemeral port range. - */ -static void -set_source_ports(dns_dispatchmgr_t *manager) { - isc_portset_t *v4portset = NULL, *v6portset = NULL; - in_port_t udpport_low, udpport_high; - isc_result_t result; - - result = isc_portset_create(mctx, &v4portset); - if (result != ISC_R_SUCCESS) { - fatal("isc_portset_create (v4) failed"); - } - - result = isc_net_getudpportrange(AF_INET, &udpport_low, &udpport_high); - if (result != ISC_R_SUCCESS) { - fatal("isc_net_getudpportrange (v4) failed"); - } - - isc_portset_addrange(v4portset, udpport_low, udpport_high); - - result = isc_portset_create(mctx, &v6portset); - if (result != ISC_R_SUCCESS) { - fatal("isc_portset_create (v6) failed"); - } - result = isc_net_getudpportrange(AF_INET6, &udpport_low, &udpport_high); - if (result != ISC_R_SUCCESS) { - fatal("isc_net_getudpportrange (v6) failed"); - } - - isc_portset_addrange(v6portset, udpport_low, udpport_high); - - result = dns_dispatchmgr_setavailports(manager, v4portset, v6portset); - if (result != ISC_R_SUCCESS) { - fatal("dns_dispatchmgr_setavailports failed"); - } - - isc_portset_destroy(mctx, &v4portset); - isc_portset_destroy(mctx, &v6portset); -} - static void teardown(void *arg ISC_ATTR_UNUSED) { dns_view_detach(&view); @@ -2089,8 +2048,6 @@ static void setup(void *arg ISC_ATTR_UNUSED) { RUNCHECK(dns_dispatchmgr_create(mctx, loopmgr, netmgr, &dispatchmgr)); - set_source_ports(dispatchmgr); - if (have_ipv4) { isc_sockaddr_any(&bind_any); } else { diff --git a/lib/dns/client.c b/lib/dns/client.c index bcd9e4c3e5..5311cef970 100644 --- a/lib/dns/client.c +++ b/lib/dns/client.c @@ -135,48 +135,6 @@ client_resfind(resctx_t *rctx, dns_fetchresponse_t *event); static void destroyrestrans(dns_clientrestrans_t **transp); -/* - * Try honoring the operating system's preferred ephemeral port range. - */ -static isc_result_t -setsourceports(isc_mem_t *mctx, dns_dispatchmgr_t *manager) { - isc_portset_t *v4portset = NULL, *v6portset = NULL; - in_port_t udpport_low, udpport_high; - isc_result_t result; - - result = isc_portset_create(mctx, &v4portset); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } - result = isc_net_getudpportrange(AF_INET, &udpport_low, &udpport_high); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } - isc_portset_addrange(v4portset, udpport_low, udpport_high); - - result = isc_portset_create(mctx, &v6portset); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } - result = isc_net_getudpportrange(AF_INET6, &udpport_low, &udpport_high); - if (result != ISC_R_SUCCESS) { - goto cleanup; - } - isc_portset_addrange(v6portset, udpport_low, udpport_high); - - result = dns_dispatchmgr_setavailports(manager, v4portset, v6portset); - -cleanup: - if (v4portset != NULL) { - isc_portset_destroy(mctx, &v4portset); - } - if (v6portset != NULL) { - isc_portset_destroy(mctx, &v6portset); - } - - return (result); -} - static isc_result_t getudpdispatch(int family, dns_dispatchmgr_t *dispatchmgr, dns_dispatch_t **dispp, const isc_sockaddr_t *localaddr) { @@ -258,8 +216,6 @@ dns_client_create(isc_mem_t *mctx, isc_loopmgr_t *loopmgr, isc_nm_t *nm, if (result != ISC_R_SUCCESS) { goto cleanup_client; } - (void)setsourceports(mctx, client->dispatchmgr); - /* * If only one address family is specified, use it. * If neither family is specified, or if both are, use both. diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index d646e387ae..99d18d09e9 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -872,69 +872,6 @@ tcp_recv(isc_nmhandle_t *handle, isc_result_t result, isc_region_t *region, dns_dispatch_detach(&disp); /* DISPATCH002 */ } -/*% - * Create a temporary port list to set the initial default set of dispatch - * ephemeral ports. This is almost meaningless as the application will - * normally set the ports explicitly, but is provided to fill some minor corner - * cases. - */ -static void -create_default_portset(isc_mem_t *mctx, int family, isc_portset_t **portsetp) { - in_port_t low, high; - - isc_net_getudpportrange(family, &low, &high); - - isc_portset_create(mctx, portsetp); - isc_portset_addrange(*portsetp, low, high); -} - -static isc_result_t -setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset, - isc_portset_t *v6portset) { - in_port_t *v4ports, *v6ports, p = 0; - unsigned int nv4ports, nv6ports, i4 = 0, i6 = 0; - - nv4ports = isc_portset_nports(v4portset); - nv6ports = isc_portset_nports(v6portset); - - v4ports = NULL; - if (nv4ports != 0) { - v4ports = isc_mem_cget(mgr->mctx, nv4ports, sizeof(in_port_t)); - } - v6ports = NULL; - if (nv6ports != 0) { - v6ports = isc_mem_cget(mgr->mctx, nv6ports, sizeof(in_port_t)); - } - - do { - if (isc_portset_isset(v4portset, p)) { - INSIST(i4 < nv4ports); - v4ports[i4++] = p; - } - if (isc_portset_isset(v6portset, p)) { - INSIST(i6 < nv6ports); - v6ports[i6++] = p; - } - } while (p++ < 65535); - INSIST(i4 == nv4ports && i6 == nv6ports); - - if (mgr->v4ports != NULL) { - isc_mem_cput(mgr->mctx, mgr->v4ports, mgr->nv4ports, - sizeof(in_port_t)); - } - mgr->v4ports = v4ports; - mgr->nv4ports = nv4ports; - - if (mgr->v6ports != NULL) { - isc_mem_cput(mgr->mctx, mgr->v6ports, mgr->nv6ports, - sizeof(in_port_t)); - } - mgr->v6ports = v6ports; - mgr->nv6ports = nv6ports; - - return (ISC_R_SUCCESS); -} - /* * Publics. */ @@ -943,9 +880,6 @@ isc_result_t dns_dispatchmgr_create(isc_mem_t *mctx, isc_loopmgr_t *loopmgr, isc_nm_t *nm, dns_dispatchmgr_t **mgrp) { dns_dispatchmgr_t *mgr = NULL; - isc_portset_t *v4portset = NULL; - isc_portset_t *v6portset = NULL; - REQUIRE(mctx != NULL); REQUIRE(mgrp != NULL && *mgrp == NULL); @@ -971,13 +905,13 @@ dns_dispatchmgr_create(isc_mem_t *mctx, isc_loopmgr_t *loopmgr, isc_nm_t *nm, NULL); } - create_default_portset(mgr->mctx, AF_INET, &v4portset); - create_default_portset(mgr->mctx, AF_INET6, &v6portset); - - setavailports(mgr, v4portset, v6portset); - - isc_portset_destroy(mgr->mctx, &v4portset); - isc_portset_destroy(mgr->mctx, &v6portset); + // create_default_portset(mgr->mctx, AF_INET, &v4portset); + // create_default_portset(mgr->mctx, AF_INET6, &v6portset); + // + // setavailports(mgr, v4portset, v6portset); + // + // isc_portset_destroy(mgr->mctx, &v4portset); + // isc_portset_destroy(mgr->mctx, &v6portset); mgr->qids = cds_lfht_new(QIDS_INIT_SIZE, QIDS_MIN_SIZE, 0, CDS_LFHT_AUTO_RESIZE | CDS_LFHT_ACCOUNTING, @@ -1014,7 +948,8 @@ isc_result_t dns_dispatchmgr_setavailports(dns_dispatchmgr_t *mgr, isc_portset_t *v4portset, isc_portset_t *v6portset) { REQUIRE(VALID_DISPATCHMGR(mgr)); - return (setavailports(mgr, v4portset, v6portset)); + // return (setavailports(mgr, v4portset, v6portset)); + return ISC_R_SUCCESS; } static void