summaryrefslogtreecommitdiffstats
path: root/sys/netinet/in.h
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2005-09-18 17:36:28 +0000
committerrwatson <rwatson@FreeBSD.org>2005-09-18 17:36:28 +0000
commit64eedb0310efb0ac8456dd7ad217d0bb521fb0fe (patch)
tree3b72fca936f4938b785351a205954a3281449806 /sys/netinet/in.h
parent58834f5972e1bccbd50161cd117ea2f7f64bd892 (diff)
downloadFreeBSD-src-64eedb0310efb0ac8456dd7ad217d0bb521fb0fe.zip
FreeBSD-src-64eedb0310efb0ac8456dd7ad217d0bb521fb0fe.tar.gz
Take a first cut at cleaning up ifnet removal and multicast socket
panics, which occur when stale ifnet pointers are left in struct moptions hung off of inpcbs: - Add in_ifdetach(), which matches in6_ifdetach(), and allows the protocol to perform early tear-down on the interface early in if_detach(). - Annotate that if_detach() needs careful consideration. - Remove calls to in_pcbpurgeif0() in the handling of SIOCDIFADDR -- this is not the place to detect interface removal! This also removes what is basically a nasty (and now unnecessary) hack. - Invoke in_pcbpurgeif0() from in_ifdetach(), in both raw and UDP IPv4 sockets. It is now possible to run the msocket_ifnet_remove regression test using HEAD without panicking. MFC after: 3 days
Diffstat (limited to 'sys/netinet/in.h')
-rw-r--r--sys/netinet/in.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet/in.h b/sys/netinet/in.h
index f006ae3..eede911 100644
--- a/sys/netinet/in.h
+++ b/sys/netinet/in.h
@@ -572,6 +572,7 @@ int in_localaddr(struct in_addr);
int in_localip(struct in_addr);
char *inet_ntoa(struct in_addr); /* in libkern */
char *inet_ntoa_r(struct in_addr ina, char *buf); /* in libkern */
+void in_ifdetach(struct ifnet *);
#define in_hosteq(s, t) ((s).s_addr == (t).s_addr)
#define in_nullhost(x) ((x).s_addr == INADDR_ANY)
OpenPOWER on IntegriCloud