summaryrefslogtreecommitdiffstats
path: root/sys/net/rtsock.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2007-03-27 19:36:12 +0000
committerglebius <glebius@FreeBSD.org>2007-03-27 19:36:12 +0000
commit2f20235351089bb6e52be91ffa6c7bf6ded46a69 (patch)
tree278924fd7d814be971d1e109130fd8357467c9e4 /sys/net/rtsock.c
parent3d4e99268c26ac8357d6fce205893605bec64bc0 (diff)
downloadFreeBSD-src-2f20235351089bb6e52be91ffa6c7bf6ded46a69.zip
FreeBSD-src-2f20235351089bb6e52be91ffa6c7bf6ded46a69.tar.gz
Fix regression in rev. 1.140.
Reported by: Yuriy Tsibizov <Yuriy.Tsibizov gfk.ru>, bsam
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 8394786..82bc719 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)
OpenPOWER on IntegriCloud