From: Roy Marples Date: Tue, 10 Sep 2019 11:09:20 +0000 (+0100) Subject: sys/net: Add dom_if_up and dom_if_down X-Git-Tag: v5.8.0rc1~989 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/a2b099dd02da6e7746a6d19aff61a534213f6a0b sys/net: Add dom_if_up and dom_if_down Domain functions for when the interface goes up and down. --- diff --git a/sys/net/if.c b/sys/net/if.c index b3d8cfb302..862d816fc9 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -1662,6 +1662,7 @@ if_unroute_dispatch(netmsg_t nmsg) struct ifnet *ifp = msg->ifp; int flag = msg->flag, fam = msg->fam; struct ifaddr_container *ifac; + struct domain *dp; ASSERT_NETISR0; @@ -1686,6 +1687,10 @@ if_unroute_dispatch(netmsg_t nmsg) kpfctlinput(PRC_IFDOWN, ifa->ifa_addr); } + SLIST_FOREACH(dp, &domains, dom_next) + if (dp->dom_if_down != NULL) + dp->dom_if_down(ifp); + ifq_purge_all(&ifp->if_snd); netisr_replymsg(&nmsg->base, 0); } @@ -1713,6 +1718,7 @@ if_route_dispatch(netmsg_t nmsg) struct ifnet *ifp = msg->ifp; int flag = msg->flag, fam = msg->fam; struct ifaddr_container *ifac; + struct domain *dp; ASSERT_NETISR0; @@ -1737,6 +1743,10 @@ if_route_dispatch(netmsg_t nmsg) if (fam == PF_UNSPEC || (fam == ifa->ifa_addr->sa_family)) kpfctlinput(PRC_IFUP, ifa->ifa_addr); } + + SLIST_FOREACH(dp, &domains, dom_next) + if (dp->dom_if_up != NULL) + dp->dom_if_up(ifp); #ifdef INET6 in6_if_up(ifp); #endif diff --git a/sys/sys/domain.h b/sys/sys/domain.h index 776c7dbaed..7976e49197 100644 --- a/sys/sys/domain.h +++ b/sys/sys/domain.h @@ -64,6 +64,8 @@ struct domain { int dom_maxrtkey; /* for routing layer */ void *(*dom_ifattach)(struct ifnet *); void (*dom_ifdetach)(struct ifnet *, void *); + void (*dom_if_up)(struct ifnet *); + void (*dom_if_down)(struct ifnet *); /* af-dependent data on ifnet */ };