summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoritojun <itojun@openbsd.org>2001-01-18 06:48:25 +0000
committeritojun <itojun@openbsd.org>2001-01-18 06:48:25 +0000
commitfc63e37c45015311ba4b6f2d6f22c06e2c922a0d (patch)
tree0cab5d81aba72e76e01ece525c5503dc6d8fe46e
parentworkaround; be sure to initialize nd6 interface information when IPv6 (diff)
downloadwireguard-openbsd-fc63e37c45015311ba4b6f2d6f22c06e2c922a0d.tar.xz
wireguard-openbsd-fc63e37c45015311ba4b6f2d6f22c06e2c922a0d.zip
do not remove default route by mistake, on interface removal.
-rw-r--r--sys/netinet6/in6_ifattach.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netinet6/in6_ifattach.c b/sys/netinet6/in6_ifattach.c
index 011ca6b9b61..09e48542cf4 100644
--- a/sys/netinet6/in6_ifattach.c
+++ b/sys/netinet6/in6_ifattach.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: in6_ifattach.c,v 1.13 2000/10/25 22:01:02 jason Exp $ */
+/* $OpenBSD: in6_ifattach.c,v 1.14 2001/01/18 06:48:25 itojun Exp $ */
/* $KAME: in6_ifattach.c,v 1.68 2000/10/18 18:44:24 itojun Exp $ */
/*
@@ -889,7 +889,8 @@ in6_ifdetach(ifp)
sin6.sin6_family = AF_INET6;
sin6.sin6_addr = in6addr_linklocal_allnodes;
sin6.sin6_addr.s6_addr16[1] = htons(ifp->if_index);
- if ((rt = rtalloc1((struct sockaddr *)&sin6, 0)) != NULL) {
+ rt = rtalloc1((struct sockaddr *)&sin6, 0);
+ if (rt && rt->rt_ifp == ifp) {
rtrequest(RTM_DELETE, (struct sockaddr *)rt_key(rt),
rt->rt_gateway, rt_mask(rt), rt->rt_flags, 0);
rtfree(rt);