diff options
author | glebius <glebius@FreeBSD.org> | 2007-03-27 19:36:12 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2007-03-27 19:36:12 +0000 |
commit | 2f20235351089bb6e52be91ffa6c7bf6ded46a69 (patch) | |
tree | 278924fd7d814be971d1e109130fd8357467c9e4 /sys/net | |
parent | 3d4e99268c26ac8357d6fce205893605bec64bc0 (diff) | |
download | FreeBSD-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')
-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 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) |