Module Name:    src
Committed By:   ozaki-r
Date:           Tue Apr 26 09:31:18 UTC 2016

Modified Files:
        src/sys/net: route.c

Log Message:
Stop using rt_gwroute completely


To generate a diff of this commit:
cvs rdiff -u -r1.165 -r1.166 src/sys/net/route.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/route.c
diff -u src/sys/net/route.c:1.165 src/sys/net/route.c:1.166
--- src/sys/net/route.c:1.165	Tue Apr 26 09:30:01 2016
+++ src/sys/net/route.c	Tue Apr 26 09:31:18 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: route.c,v 1.165 2016/04/26 09:30:01 ozaki-r Exp $	*/
+/*	$NetBSD: route.c,v 1.166 2016/04/26 09:31:18 ozaki-r Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2008 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.165 2016/04/26 09:30:01 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: route.c,v 1.166 2016/04/26 09:31:18 ozaki-r Exp $");
 
 #include <sys/param.h>
 #ifdef RTFLUSH_DEBUG
@@ -773,10 +773,6 @@ rtrequest1(int req, struct rt_addrinfo *
 			senderr(ESRCH);
 		if ((rt = rt_deladdr(rtbl, dst, netmask)) == NULL)
 			senderr(ESRCH);
-		if (rt->rt_gwroute) {
-			rtfree(rt->rt_gwroute);
-			rt->rt_gwroute = NULL;
-		}
 		rt->rt_flags &= ~RTF_UP;
 		if ((ifa = rt->rt_ifa)) {
 			if (ifa->ifa_flags & IFA_ROUTE &&
@@ -845,8 +841,6 @@ rtrequest1(int req, struct rt_addrinfo *
 		RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
 		if (rc != 0) {
 			ifafree(ifa);
-			if (rt->rt_gwroute)
-				rtfree(rt->rt_gwroute);
 			rt_destroy(rt);
 			pool_put(&rtentry_pool, rt);
 			senderr(rc);
@@ -883,17 +877,10 @@ bad:
 int
 rt_setgate(struct rtentry *rt, const struct sockaddr *gate)
 {
-	KASSERT(rt != rt->rt_gwroute);
 
 	KASSERT(rt->_rt_key != NULL);
 	RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
 
-	if (rt->rt_gwroute) {
-		rtfree(rt->rt_gwroute);
-		rt->rt_gwroute = NULL;
-	}
-	KASSERT(rt->_rt_key != NULL);
-	RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
 	if (rt->rt_gateway != NULL)
 		sockaddr_free(rt->rt_gateway);
 	KASSERT(rt->_rt_key != NULL);
@@ -904,9 +891,7 @@ rt_setgate(struct rtentry *rt, const str
 	RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
 
 	if (rt->rt_flags & RTF_GATEWAY) {
-		KASSERT(rt->_rt_key != NULL);
-		RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
-		rt->rt_gwroute = rtalloc1(gate, 1);
+		struct rtentry *gwrt = rtalloc1(gate, 1);
 		/*
 		 * If we switched gateways, grab the MTU from the new
 		 * gateway route if the current MTU, if the current MTU is
@@ -914,13 +899,15 @@ rt_setgate(struct rtentry *rt, const str
 		 * Note that, if the MTU of gateway is 0, we will reset the
 		 * MTU of the route to run PMTUD again from scratch. XXX
 		 */
-		KASSERT(rt->_rt_key != NULL);
-		RT_DPRINTF("rt->_rt_key = %p\n", (void *)rt->_rt_key);
-		if (rt->rt_gwroute
-		    && !(rt->rt_rmx.rmx_locks & RTV_MTU)
-		    && rt->rt_rmx.rmx_mtu
-		    && rt->rt_rmx.rmx_mtu > rt->rt_gwroute->rt_rmx.rmx_mtu) {
-			rt->rt_rmx.rmx_mtu = rt->rt_gwroute->rt_rmx.rmx_mtu;
+		if (gwrt != NULL) {
+			KASSERT(gwrt->_rt_key != NULL);
+			RT_DPRINTF("gwrt->_rt_key = %p\n", gwrt->_rt_key);
+			if ((rt->rt_rmx.rmx_locks & RTV_MTU) == 0 &&
+			    rt->rt_rmx.rmx_mtu &&
+			    rt->rt_rmx.rmx_mtu > gwrt->rt_rmx.rmx_mtu) {
+				rt->rt_rmx.rmx_mtu = gwrt->rt_rmx.rmx_mtu;
+			}
+			rtfree(gwrt);
 		}
 	}
 	KASSERT(rt->_rt_key != NULL);

Reply via email to