diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2007-03-27 19:36:12 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2007-03-27 19:36:12 +0000 |
commit | 5de558219a10a51c05dea62a77cf834585895a55 (patch) | |
tree | 278924fd7d814be971d1e109130fd8357467c9e4 /sys/net/rtsock.c | |
parent | 02e4a32084adb325d126f13611508a17422959bb (diff) | |
download | src-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.c | 13 |
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) |