summaryrefslogtreecommitdiff
path: root/sys/netinet/in.c
diff options
context:
space:
mode:
authorMartin Pieuchot <mpi@cvs.openbsd.org>2014-06-26 13:08:26 +0000
committerMartin Pieuchot <mpi@cvs.openbsd.org>2014-06-26 13:08:26 +0000
commitc2c6d14672cfd997b24b1dd1f2745689f4eec1a0 (patch)
treeb0db5cf41d0a29388d7737aa2f76a5183748ab89 /sys/netinet/in.c
parent0137082b3c9ed6dd09a88b2974f47695b0357e24 (diff)
Calling in{6,}_purgeaddr() is not enough to remove an address from
an interface. Two other operations are performed when issuing a SIOCDIFADDR{_IN6,} ioctl: call the address hook and the per-driver ioctl function. Since carp(4) relies on an address hook to recalculate its hash, make sure to call this hook when IFXF_NOINET6 is set or when the rdomain is changed. ok henning@, mikeb@
Diffstat (limited to 'sys/netinet/in.c')
-rw-r--r--sys/netinet/in.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 74403a8adfc..425b408c376 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: in.c,v 1.98 2014/06/16 19:47:21 mpi Exp $ */
+/* $OpenBSD: in.c,v 1.99 2014/06/26 13:08:25 mpi Exp $ */
/* $NetBSD: in.c,v 1.26 1996/02/13 23:41:39 christos Exp $ */
/*
@@ -1079,5 +1079,6 @@ in_ifdetach(struct ifnet *ifp)
if (ifa->ifa_addr->sa_family != AF_INET)
continue;
in_purgeaddr(ifa);
+ dohooks(ifp->if_addrhooks, 0);
}
}