]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add a utility function to dump all active sockets on a NM instance
authorArtem Boldariev <artem@boldariev.com>
Tue, 26 Sep 2023 12:37:48 +0000 (15:37 +0300)
committerArtem Boldariev <artem@boldariev.com>
Wed, 6 Dec 2023 13:15:25 +0000 (15:15 +0200)
Add the new isc__nm_dump_active_manager() function that can be used
for debugging purposes: it dumps all active sockets withing the
network manager instance.

lib/isc/netmgr/netmgr-int.h
lib/isc/netmgr/netmgr.c

index 9d8f642eb2217670e46a38a645fa8e4f9c99f85b..71822b36411854e67c9da6c5c9680009a3c7ea75 100644 (file)
@@ -215,9 +215,14 @@ typedef struct isc__networker {
 
 ISC_REFCOUNT_DECL(isc__networker);
 
+#ifdef ISC_NETMGR_TRACE
 void
 isc__nm_dump_active(isc__networker_t *worker);
 
+void
+isc__nm_dump_active_manager(isc_nm_t *netmgr);
+#endif /* ISC_NETMGR_TRACE */
+
 /*
  * A general handle for a connection bound to a networker.  For UDP
  * connections we have peer address here, so both TCP and UDP can be
index c02bf645af3894a86d90d72d148d3ff3535cb8fd..41541cbb28dd5e10a0a3faa99dd964bb6ce7e02d 100644 (file)
@@ -2926,4 +2926,18 @@ isc__nm_dump_active(isc__networker_t *worker) {
                nmsocket_dump(sock);
        }
 }
+
+void
+isc__nm_dump_active_manager(isc_nm_t *netmgr) {
+       size_t i = 0;
+
+       for (i = 0; i < netmgr->nloops; i++) {
+               isc__networker_t *worker = &netmgr->workers[i];
+
+               if (!ISC_LIST_EMPTY(worker->active_sockets)) {
+                       fprintf(stderr, "Worker #%zu (%p)\n", i, worker);
+                       isc__nm_dump_active(worker);
+               }
+       }
+}
 #endif