diff --git a/bin/named/server.c b/bin/named/server.c index e3cd057bb8..f50f4db850 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 fc9e10aadf..c52392156a 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 fdb7338b1c..316d0142f4 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 9c291e66bc..15614e1059 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);