There was an issue that dynamic path MTU discovery together with
authorbluhm <bluhm@openbsd.org>
Mon, 15 Jan 2018 13:48:31 +0000 (13:48 +0000)
committerbluhm <bluhm@openbsd.org>
Mon, 15 Jan 2018 13:48:31 +0000 (13:48 +0000)
ARP or ND timeout could delete local routes.  Put an assert into
arptfree() and nd6_free() so this cannot happen again.
OK mpi@

sys/netinet/if_ether.c
sys/netinet6/nd6.c

index f1de465..ef28b67 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_ether.c,v 1.231 2017/08/11 21:24:19 mpi Exp $      */
+/*     $OpenBSD: if_ether.c,v 1.232 2018/01/15 13:48:31 bluhm Exp $    */
 /*     $NetBSD: if_ether.c,v 1.31 1996/05/11 12:59:58 mycroft Exp $    */
 
 /*
@@ -694,6 +694,7 @@ arptfree(struct rtentry *rt)
 {
        struct ifnet *ifp;
 
+       KASSERT(!ISSET(rt->rt_flags, RTF_LOCAL));
        arpinvalidate(rt);
 
        ifp = if_get(rt->rt_ifidx);
index 8b0b3d8..9da9635 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: nd6.c,v 1.222 2017/11/27 15:41:30 mpi Exp $   */
+/*     $OpenBSD: nd6.c,v 1.223 2018/01/15 13:48:31 bluhm Exp $ */
 /*     $KAME: nd6.c,v 1.280 2002/06/08 19:52:07 itojun Exp $   */
 
 /*
@@ -722,6 +722,7 @@ nd6_free(struct rtentry *rt)
                }
        }
 
+       KASSERT(!ISSET(rt->rt_flags, RTF_LOCAL));
        nd6_invalidate(rt);
 
        /*