diff options
author | shin <shin@FreeBSD.org> | 2000-01-25 01:05:18 +0000 |
---|---|---|
committer | shin <shin@FreeBSD.org> | 2000-01-25 01:05:18 +0000 |
commit | 3dd6ac32839b2903106dc8ef89e75c0ba9484701 (patch) | |
tree | 857c0233bd2ef045ee89685deb79ba21eab9f983 /sys/netinet | |
parent | 1a88679ae1b5d8f8d777508cfcb671d512e56bce (diff) | |
download | FreeBSD-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.c | 13 | ||||
-rw-r--r-- | sys/netinet/tcp_timewait.c | 13 |
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 */ |