svn commit: r265279 - in head/sys: net netinet netinet6

Alexander V. Chernikov melifaro at FreeBSD.org
Sat May 3 16:28:56 UTC 2014


Author: melifaro
Date: Sat May  3 16:28:54 2014
New Revision: 265279
URL: http://svnweb.freebsd.org/changeset/base/265279

Log:
  Pass radix head ptr along with rte to rtexpunge().
  Rename rtexpunge to rt_expunge().

Modified:
  head/sys/net/route.c
  head/sys/net/route.h
  head/sys/netinet/in_rmx.c
  head/sys/netinet6/in6_ifattach.c

Modified: head/sys/net/route.c
==============================================================================
--- head/sys/net/route.c	Sat May  3 16:24:41 2014	(r265278)
+++ head/sys/net/route.c	Sat May  3 16:28:54 2014	(r265279)
@@ -898,7 +898,7 @@ rt_getifa_fib(struct rt_addrinfo *info, 
  * The route must be locked.
  */
 int
-rtexpunge(struct rtentry *rt)
+rt_expunge(struct radix_node_head *rnh, struct rtentry *rt)
 {
 #if !defined(RADIX_MPATH)
 	struct radix_node *rn;
@@ -907,17 +907,10 @@ rtexpunge(struct rtentry *rt)
 	int fib;
 	struct rtentry *rt0;
 #endif
-	struct radix_node_head *rnh;
 	struct ifaddr *ifa;
 	int error = 0;
 
-	/*
-	 * Find the correct routing tree to use for this Address Family
-	 */
-	rnh = rt_tables_get_rnh(rt->rt_fibnum, rt_key(rt)->sa_family);
 	RT_LOCK_ASSERT(rt);
-	if (rnh == NULL)
-		return (EAFNOSUPPORT);
 	RADIX_NODE_HEAD_LOCK_ASSERT(rnh);
 
 #ifdef RADIX_MPATH

Modified: head/sys/net/route.h
==============================================================================
--- head/sys/net/route.h	Sat May  3 16:24:41 2014	(r265278)
+++ head/sys/net/route.h	Sat May  3 16:28:54 2014	(r265279)
@@ -371,7 +371,7 @@ int	rtsock_routemsg(int, struct ifnet *i
  *    RTFREE() uses an unlocked entry.
  */
 
-int	 rtexpunge(struct rtentry *);
+int	 rt_expunge(struct radix_node_head *, struct rtentry *);
 void	 rtfree(struct rtentry *);
 int	 rt_check(struct rtentry **, struct rtentry **, struct sockaddr *);
 

Modified: head/sys/netinet/in_rmx.c
==============================================================================
--- head/sys/netinet/in_rmx.c	Sat May  3 16:24:41 2014	(r265278)
+++ head/sys/netinet/in_rmx.c	Sat May  3 16:28:54 2014	(r265279)
@@ -169,9 +169,8 @@ in_clsroute(struct radix_node *rn, struc
 	if (V_rtq_reallyold != 0) {
 		rt->rt_flags |= RTPRF_OURS;
 		rt->rt_expire = time_uptime + V_rtq_reallyold;
-	} else {
-		rtexpunge(rt);
-	}
+	} else
+		rt_expunge(head, rt);
 }
 
 struct rtqk_arg {
@@ -388,6 +387,7 @@ in_detachhead(void **head, int off)
  * plug back in.
  */
 struct in_ifadown_arg {
+	struct radix_node_head *rnh;
 	struct ifaddr *ifa;
 	int del;
 };
@@ -411,7 +411,7 @@ in_ifadownkill(struct radix_node *rn, vo
 		 * Disconnect it from the tree and permit protocols
 		 * to cleanup.
 		 */
-		rtexpunge(rt);
+		rt_expunge(ap->rnh, rt);
 		/*
 		 * At this point it is an rttrash node, and in case
 		 * the above is the only reference we must free it.

Modified: head/sys/netinet6/in6_ifattach.c
==============================================================================
--- head/sys/netinet6/in6_ifattach.c	Sat May  3 16:24:41 2014	(r265278)
+++ head/sys/netinet6/in6_ifattach.c	Sat May  3 16:28:54 2014	(r265279)
@@ -863,7 +863,7 @@ in6_ifdetach(struct ifnet *ifp)
 		    RT_DEFAULT_FIB);
 		if (rt) {
 			if (rt->rt_ifp == ifp)
-				rtexpunge(rt);
+				rt_expunge(rnh, rt);
 			RTFREE_LOCKED(rt);
 		}
 		RADIX_NODE_HEAD_UNLOCK(rnh);


More information about the svn-src-all mailing list