summaryrefslogtreecommitdiffstats
path: root/sys/netinet6
diff options
context:
space:
mode:
authortanimura <tanimura@FreeBSD.org>2006-05-23 00:32:22 +0000
committertanimura <tanimura@FreeBSD.org>2006-05-23 00:32:22 +0000
commit713caab1d6be4eba0130d3c24e75ddd38e45e980 (patch)
tree1cfb91e149b27e203a800b02e548a410b561fca9 /sys/netinet6
parent671ec01c105ba0af4fc551a74c213d42074ec7d7 (diff)
downloadFreeBSD-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.c6
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);
}
OpenPOWER on IntegriCloud