summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2016-06-06 12:49:47 +0000
committerbz <bz@FreeBSD.org>2016-06-06 12:49:47 +0000
commit8757b6342b889322044da2baa3094d31efba5d42 (patch)
treec777f7f443f33c186d0f9b489e0f1b32042a1f92 /sys/net
parent4948c572e7d17a6c09d98026c5a15de8d7b71e09 (diff)
downloadFreeBSD-src-8757b6342b889322044da2baa3094d31efba5d42.zip
FreeBSD-src-8757b6342b889322044da2baa3094d31efba5d42.tar.gz
Provide a public interface to rt_flushifroutes which takes the address
family as an argument as well. This will be used to cleanup individual protocols during VNET teardown. Obtained from: projects/vnet Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/route.c9
-rw-r--r--sys/net/route.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/sys/net/route.c b/sys/net/route.c
index 26e3b85..f2f8897 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -1141,6 +1141,15 @@ rt_ifdelroute(const struct rtentry *rt, void *arg)
* to this interface...oh well...
*/
void
+rt_flushifroutes_af(struct ifnet *ifp, int af)
+{
+ KASSERT((af >= 1 && af <= AF_MAX), ("%s: af %d not >= 1 and <= %d",
+ __func__, af, AF_MAX));
+
+ rt_foreach_fib_walk_del(af, rt_ifdelroute, ifp);
+}
+
+void
rt_flushifroutes(struct ifnet *ifp)
{
diff --git a/sys/net/route.h b/sys/net/route.h
index 46e2ace..b6aa36d 100644
--- a/sys/net/route.h
+++ b/sys/net/route.h
@@ -468,6 +468,7 @@ typedef int rt_walktree_f_t(struct rtentry *, void *);
typedef void rt_setwarg_t(struct rib_head *, uint32_t, int, void *);
void rt_foreach_fib_walk(int af, rt_setwarg_t *, rt_walktree_f_t *, void *);
void rt_foreach_fib_walk_del(int af, rt_filter_f_t *filter_f, void *arg);
+void rt_flushifroutes_af(struct ifnet *, int);
void rt_flushifroutes(struct ifnet *ifp);
/* XXX MRT COMPAT VERSIONS THAT SET UNIVERSE to 0 */
OpenPOWER on IntegriCloud