From: Evan Hunt Date: Sun, 3 Oct 2021 08:01:40 +0000 (-0700) Subject: Don't use route socket in unit tests X-Git-Tag: v9.17.20~42^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ab98e95f4c31772df1daa728441b7107f4554ed3;p=thirdparty%2Fbind9.git Don't use route socket in unit tests Some of the libns unit tests override the isc_nmhandle_attach() and _detach() functions. This causes a failure in ns_interface_create() if a route socket is being used, so we add a parameter to disable it. --- diff --git a/bin/named/server.c b/bin/named/server.c index e3cd057bb8b..f50f4db850b 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -9825,7 +9825,7 @@ run_server(isc_task_t *task, isc_event_t *event) { named_g_taskmgr, named_g_timermgr, named_g_netmgr, named_g_dispatchmgr, server->task, geoip, named_g_cpus, - &server->interfacemgr), + true, &server->interfacemgr), "creating interface manager"); CHECKFATAL(isc_timer_create(named_g_timermgr, isc_timertype_inactive, diff --git a/lib/ns/include/ns/interfacemgr.h b/lib/ns/include/ns/interfacemgr.h index fc9e10aadf9..c52392156a1 100644 --- a/lib/ns/include/ns/interfacemgr.h +++ b/lib/ns/include/ns/interfacemgr.h @@ -99,7 +99,7 @@ ns_interfacemgr_create(isc_mem_t *mctx, ns_server_t *sctx, isc_taskmgr_t *taskmgr, isc_timermgr_t *timermgr, isc_nm_t *nm, dns_dispatchmgr_t *dispatchmgr, isc_task_t *task, dns_geoip_databases_t *geoip, - int ncpus, ns_interfacemgr_t **mgrp); + int ncpus, bool scan, ns_interfacemgr_t **mgrp); /*%< * Create a new interface manager. * diff --git a/lib/ns/interfacemgr.c b/lib/ns/interfacemgr.c index fdb7338b1c1..316d0142f40 100644 --- a/lib/ns/interfacemgr.c +++ b/lib/ns/interfacemgr.c @@ -190,7 +190,7 @@ ns_interfacemgr_create(isc_mem_t *mctx, ns_server_t *sctx, isc_taskmgr_t *taskmgr, isc_timermgr_t *timermgr, isc_nm_t *nm, dns_dispatchmgr_t *dispatchmgr, isc_task_t *task, dns_geoip_databases_t *geoip, - int ncpus, ns_interfacemgr_t **mgrp) { + int ncpus, bool scan, ns_interfacemgr_t **mgrp) { isc_result_t result; ns_interfacemgr_t *mgr = NULL; @@ -242,11 +242,13 @@ ns_interfacemgr_create(isc_mem_t *mctx, ns_server_t *sctx, UNUSED(geoip); #endif /* if defined(HAVE_GEOIP2) */ - result = isc_nm_routeconnect(nm, route_connected, mgr, 0); - if (result != ISC_R_SUCCESS) { - isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_INFO, - "unable to open route socket: %s", - isc_result_totext(result)); + if (scan) { + result = isc_nm_routeconnect(nm, route_connected, mgr, 0); + if (result != ISC_R_SUCCESS) { + isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_INFO, + "unable to open route socket: %s", + isc_result_totext(result)); + } } isc_refcount_init(&mgr->references, 1); diff --git a/lib/ns/tests/nstest.c b/lib/ns/tests/nstest.c index 9c291e66bc9..15614e1059c 100644 --- a/lib/ns/tests/nstest.c +++ b/lib/ns/tests/nstest.c @@ -233,7 +233,7 @@ create_managers(void) { CHECK(dns_dispatchmgr_create(mctx, netmgr, &dispatchmgr)); CHECK(ns_interfacemgr_create(mctx, sctx, taskmgr, timermgr, netmgr, - dispatchmgr, maintask, NULL, ncpus, + dispatchmgr, maintask, NULL, ncpus, false, &interfacemgr)); CHECK(ns_listenlist_default(mctx, port, -1, true, &listenon)); @@ -244,12 +244,6 @@ create_managers(void) { scan_interfaces, NULL, sizeof(isc_event_t)); isc_task_send(maintask, &event); - /* - * There's no straightforward way to determine - * whether the interfaces have been scanned, - * we'll just sleep for a bit and hope. - */ - ns_test_nap(500000); clientmgr = ns_interfacemgr_getclientmgr(interfacemgr); atomic_store(&run_managers, true);