summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-01-25 01:05:18 +0000
committershin <shin@FreeBSD.org>2000-01-25 01:05:18 +0000
commit3dd6ac32839b2903106dc8ef89e75c0ba9484701 (patch)
tree857c0233bd2ef045ee89685deb79ba21eab9f983 /sys/netinet
parent1a88679ae1b5d8f8d777508cfcb671d512e56bce (diff)
downloadFreeBSD-src-3dd6ac32839b2903106dc8ef89e75c0ba9484701.zip
FreeBSD-src-3dd6ac32839b2903106dc8ef89e75c0ba9484701.tar.gz
Fix the bug that IPv4 ttl is not initialized when AF_INET6 socket is used
for IPv4 communication.(IPv4 mapped IPv6 addr.) Also removed IPv6 hoplimit initialization because it is alway done at tcp_output. Confirmed by: Bernd Walter <ticso@cicely5.cicely.de>
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/tcp_subr.c13
-rw-r--r--sys/netinet/tcp_timewait.c13
2 files changed, 10 insertions, 16 deletions
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index 2dc912e..b15c7d1 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -517,14 +517,11 @@ tcp_newtcpcb(inp)
tp->snd_cwnd = TCP_MAXWIN << TCP_MAX_WINSHIFT;
tp->snd_ssthresh = TCP_MAXWIN << TCP_MAX_WINSHIFT;
tp->t_rcvtime = ticks;
-#ifdef INET6
- if (isipv6 != 0)
- inp->in6p_ip6_hlim = in6_selecthlim(inp,
- inp->in6p_route.ro_rt ?
- inp->in6p_route.ro_rt->rt_ifp :
- NULL);
- else
-#endif
+ /*
+ * IPv4 TTL initialization is necessary for an IPv6 socket as well,
+ * because the socket may be bound to an IPv6 wildcard address,
+ * which may match an IPv4-mapped IPv6 address.
+ */
inp->inp_ip_ttl = ip_defttl;
inp->inp_ppcb = (caddr_t)tp;
return (tp); /* XXX */
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c
index 2dc912e..b15c7d1 100644
--- a/sys/netinet/tcp_timewait.c
+++ b/sys/netinet/tcp_timewait.c
@@ -517,14 +517,11 @@ tcp_newtcpcb(inp)
tp->snd_cwnd = TCP_MAXWIN << TCP_MAX_WINSHIFT;
tp->snd_ssthresh = TCP_MAXWIN << TCP_MAX_WINSHIFT;
tp->t_rcvtime = ticks;
-#ifdef INET6
- if (isipv6 != 0)
- inp->in6p_ip6_hlim = in6_selecthlim(inp,
- inp->in6p_route.ro_rt ?
- inp->in6p_route.ro_rt->rt_ifp :
- NULL);
- else
-#endif
+ /*
+ * IPv4 TTL initialization is necessary for an IPv6 socket as well,
+ * because the socket may be bound to an IPv6 wildcard address,
+ * which may match an IPv4-mapped IPv6 address.
+ */
inp->inp_ip_ttl = ip_defttl;
inp->inp_ppcb = (caddr_t)tp;
return (tp); /* XXX */
OpenPOWER on IntegriCloud