]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Don't use route socket in unit tests
authorEvan Hunt <each@isc.org>
Sun, 3 Oct 2021 08:01:40 +0000 (01:01 -0700)
committerEvan Hunt <each@isc.org>
Fri, 15 Oct 2021 08:01:25 +0000 (01:01 -0700)
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.

bin/named/server.c
lib/ns/include/ns/interfacemgr.h
lib/ns/interfacemgr.c
lib/ns/tests/nstest.c

index e3cd057bb8bb489b63a74842301752173f6a9819..f50f4db850bb686bc81ba5670ee7cc558d542cce 100644 (file)
@@ -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,
index fc9e10aadf981a1bfb6229b0b6940baa6dbd362e..c52392156a1bdecbf020783f97f402f73de7040d 100644 (file)
@@ -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.
  *
index fdb7338b1c1e63e44fd60ce0188c67fcd9475dec..316d0142f4072228ef02729a6d36854bf12bceb0 100644 (file)
@@ -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);
index 9c291e66bc9fba188ce4f92b07584a559d06585a..15614e1059c0e68c8807689254f11e019e87b304 100644 (file)
@@ -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);