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