diff options
author | tanimura <tanimura@FreeBSD.org> | 2006-05-23 00:32:22 +0000 |
---|---|---|
committer | tanimura <tanimura@FreeBSD.org> | 2006-05-23 00:32:22 +0000 |
commit | 713caab1d6be4eba0130d3c24e75ddd38e45e980 (patch) | |
tree | 1cfb91e149b27e203a800b02e548a410b561fca9 /sys/netinet6 | |
parent | 671ec01c105ba0af4fc551a74c213d42074ec7d7 (diff) | |
download | FreeBSD-src-713caab1d6be4eba0130d3c24e75ddd38e45e980.zip FreeBSD-src-713caab1d6be4eba0130d3c24e75ddd38e45e980.tar.gz |
Avoid spurious release of an rtentry.
Diffstat (limited to 'sys/netinet6')
-rw-r--r-- | sys/netinet6/in6_src.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c index bedb3a4..be3e0f8 100644 --- a/sys/netinet6/in6_src.c +++ b/sys/netinet6/in6_src.c @@ -650,7 +650,7 @@ in6_selectif(dstsock, opts, mopts, ro, retifp) if ((error = selectroute(dstsock, opts, mopts, ro, retifp, &rt, 0, 1)) != 0) { - if (rt && rt == sro.ro_rt) + if (ro == &sro && rt && rt == sro.ro_rt) RTFREE(rt); return (error); } @@ -675,7 +675,7 @@ in6_selectif(dstsock, opts, mopts, ro, retifp) if (rt && (rt->rt_flags & (RTF_REJECT | RTF_BLACKHOLE))) { int flags = (rt->rt_flags & RTF_HOST ? EHOSTUNREACH : ENETUNREACH); - if (rt && rt == sro.ro_rt) + if (ro == &sro && rt && rt == sro.ro_rt) RTFREE(rt); return (flags); } @@ -690,7 +690,7 @@ in6_selectif(dstsock, opts, mopts, ro, retifp) if (rt && rt->rt_ifa && rt->rt_ifa->ifa_ifp) *retifp = rt->rt_ifa->ifa_ifp; - if (rt && rt == sro.ro_rt) + if (ro == &sro && rt && rt == sro.ro_rt) RTFREE(rt); return (0); } |