1From f7ab91f739b936305ca56743adfb4673e3f2f4ba Mon Sep 17 00:00:00 2001 2Message-ID: <f7ab91f739b936305ca56743adfb4673e3f2f4ba.1687508149.git.stefan@agner.ch> 3In-Reply-To: <e136dcdcdd93ef32ada981e89c195905eb809eea.1687508149.git.stefan@agner.ch> 4References: <e136dcdcdd93ef32ada981e89c195905eb809eea.1687508149.git.stefan@agner.ch> 5From: Nate Karstens <[email protected]> 6Date: Wed, 28 Jun 2017 17:30:00 -0500 7Subject: [PATCH] Create subroutine for tearing down an interface 8 9Creates a subroutine for tearing down an interface. 10 11Upstream-Status: Submitted [[email protected]] 12 13Signed-off-by: Nate Karstens <[email protected]> 14Signed-off-by: Alex Kiernan <[email protected]> 15--- 16 mDNSPosix/mDNSPosix.c | 22 ++++++++++++++++------ 17 1 file changed, 16 insertions(+), 6 deletions(-) 18 19diff --git a/mDNSPosix/mDNSPosix.c b/mDNSPosix/mDNSPosix.c 20index fe7242d..a32a880 100644 21--- a/mDNSPosix/mDNSPosix.c 22+++ b/mDNSPosix/mDNSPosix.c 23@@ -1043,6 +1043,19 @@ mDNSlocal void FreePosixNetworkInterface(PosixNetworkInterface *intf) 24 gRecentInterfaces = intf; 25 } 26 27+mDNSlocal void TearDownInterface(mDNS *const m, PosixNetworkInterface *intf) 28+{ 29+ mDNS_DeregisterInterface(m, &intf->coreIntf, NormalActivation); 30+ if (gMDNSPlatformPosixVerboseLevel > 0) fprintf(stderr, "Deregistered interface %s\n", intf->intfName); 31+ FreePosixNetworkInterface(intf); 32+ 33+ num_registered_interfaces--; 34+ if (num_registered_interfaces == 0) { 35+ num_pkts_accepted = 0; 36+ num_pkts_rejected = 0; 37+ } 38+} 39+ 40 // Grab the first interface, deregister it, free it, and repeat until done. 41 mDNSlocal void ClearInterfaceList(mDNS *const m) 42 { 43@@ -1051,13 +1064,10 @@ mDNSlocal void ClearInterfaceList(mDNS *const m) 44 while (m->HostInterfaces) 45 { 46 PosixNetworkInterface *intf = (PosixNetworkInterface*)(m->HostInterfaces); 47- mDNS_DeregisterInterface(m, &intf->coreIntf, NormalActivation); 48- if (gMDNSPlatformPosixVerboseLevel > 0) fprintf(stderr, "Deregistered interface %s\n", intf->intfName); 49- FreePosixNetworkInterface(intf); 50+ TearDownInterface(m, intf); 51 } 52- num_registered_interfaces = 0; 53- num_pkts_accepted = 0; 54- num_pkts_rejected = 0; 55+ 56+ assert(num_registered_interfaces == 0); 57 } 58 59 mDNSlocal int SetupIPv6Socket(int fd) 60-- 612.41.0 62 63