aboutsummaryrefslogtreecommitdiff
path: root/sys/net/rtsock.c
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2007-03-27 19:36:12 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2007-03-27 19:36:12 +0000
commit5de558219a10a51c05dea62a77cf834585895a55 (patch)
tree278924fd7d814be971d1e109130fd8357467c9e4 /sys/net/rtsock.c
parent02e4a32084adb325d126f13611508a17422959bb (diff)
downloadsrc-5de558219a10a51c05dea62a77cf834585895a55.tar.gz
src-5de558219a10a51c05dea62a77cf834585895a55.zip
Fix regression in rev. 1.140.
Reported by: Yuriy Tsibizov <Yuriy.Tsibizov gfk.ru>, bsam
Notes
Notes: svn path=/head/; revision=167949
Diffstat (limited to 'sys/net/rtsock.c')
-rw-r--r--sys/net/rtsock.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index 83947865faa6..82bc719d2b0f 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -514,7 +514,9 @@ route_output(struct mbuf *m, struct socket *so)
senderr(error);
RT_LOCK(rt);
}
- if (info.rti_ifa != rt->rt_ifa && rt->rt_ifa != NULL &&
+ if (info.rti_ifa != NULL &&
+ info.rti_ifa != rt->rt_ifa &&
+ rt->rt_ifa != NULL &&
rt->rt_ifa->ifa_rtrequest != NULL) {
rt->rt_ifa->ifa_rtrequest(RTM_DELETE, rt,
&info);
@@ -528,12 +530,11 @@ route_output(struct mbuf *m, struct socket *so)
}
rt->rt_flags |= RTF_GATEWAY;
}
- if (info.rti_ifa != rt->rt_ifa) {
+ if (info.rti_ifa != NULL &&
+ info.rti_ifa != rt->rt_ifa) {
+ IFAREF(info.rti_ifa);
rt->rt_ifa = info.rti_ifa;
- if (info.rti_ifa != NULL) {
- IFAREF(info.rti_ifa);
- rt->rt_ifp = info.rti_ifp;
- }
+ rt->rt_ifp = info.rti_ifp;
}
/* Allow some flags to be toggled on change. */
if (rtm->rtm_fmask & RTF_FMASK)