summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorozaki-r <ozaki-r@NetBSD.org>2016-04-26 09:31:18 +0000
committerozaki-r <ozaki-r@NetBSD.org>2016-04-26 09:31:18 +0000
commit57dc64e2d24a72ea34ce69a65eb05de4d09960e9 (patch)
tree741c48a888dba910c30747fd4c9fb427c3546acc /sys
parentce4e075c935f30490048c0cff03f4b4273d085bc (diff)
Stop using rt_gwroute completely
Diffstat (limited to 'sys')
-rw-r--r--sys/net/route.c37
1 files changed, 12 insertions, 25 deletions
diff --git a/sys/net/route.c b/sys/net/route.c
index 6abac58d4d7..93ad8a17386 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -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 *info, struct rtentry **ret_nrt)
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 *info, struct rtentry **ret_nrt)
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 struct sockaddr *gate)
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 struct sockaddr *gate)
* 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);