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,
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.
*
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;
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);
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));
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);