From owner-IPv6-jp@jp.freebsd.org  Mon Nov 15 21:23:24 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id VAA32946;
	Mon, 15 Nov 1999 21:23:24 +0900 (JST)
	(envelope-from owner-IPv6-jp@jp.FreeBSD.org)
Received: from tortoise.jp.freebsd.org (root@tortoise.jp.FreeBSD.ORG [210.157.158.41])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id VAA32941
	for <IPv6-jp@jp.freebsd.org>; Mon, 15 Nov 1999 21:23:23 +0900 (JST)
	(envelope-from jinmei@isl.rdc.toshiba.co.jp)
Received: from shuttle.wide.toshiba.co.jp (shuttle.sixyards.wide.toshiba.co.jp [3ffe:501:100f:0:200:f8ff:fe01:61cf])
	by tortoise.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP/IPv6 id VAA26755
	for <IPv6-jp@jp.freebsd.org>; Mon, 15 Nov 1999 21:22:40 +0900 (JST)
	(envelope-from jinmei@isl.rdc.toshiba.co.jp)
Received: from localhost ([3ffe:501:100f:1048:2a0:24ff:fe66:1350])
	by shuttle.wide.toshiba.co.jp (8.9.1+3.1W/8.9.0) with ESMTP id VAA10951;
	Mon, 15 Nov 1999 21:12:37 +0900 (JST)
Date: Mon, 15 Nov 1999 21:23:59 +0900
Message-ID: <14383.64351.279924.51939W@condor.isl.rdc.toshiba.co.jp>
From: JINMEI Tatuya / =?ISO-2022-JP?B?GyRCP0BMQEMjOkgbKEI=?=
 <jinmei@isl.rdc.toshiba.co.jp>
To: IPv6-jp@jp.freebsd.org
Cc: v6@wide.ad.jp
In-Reply-To: In your message of "Sun, 14 Nov 1999 06:52:17 +0900"
	 <382DDD91.1F1438E@home2.>
References: <382DDD91.1F1438E@home2.>
User-Agent: Wanderlust/2.2.5 (Come Undone) Emacs/20.4 Mule/4.0 (HANANOEN)
Organization: Research & Development Center, Toshiba Corp., Kawasaki, Japan.
MIME-Version: 1.0 (generated by SEMI 1.13.4 - "Terai")
Content-Type: text/plain; charset=ISO-2022-JP
X-Dispatcher: imput version 980905(IM100)
Lines: 155
Reply-To: IPv6-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: IPv6-jp 342
Subject: [IPv6-jp 342] Re: Telnet/ftp via router fails
Errors-To: owner-IPv6-jp@jp.freebsd.org
Sender: owner-IPv6-jp@jp.freebsd.org
X-Originator: jinmei@isl.rdc.toshiba.co.jp

$B5.=E$J%l%]!<%H$r$"$j$,$H$&$4$6$$$^$9!#(B

>>>>> On Sun, 14 Nov 1999 06:52:17 +0900, 
>>>>> Motoya Kurotsu <kurotsu@violet.plala.or.jp> said:

> $B!!;d$N2<5-$N$h$&$J4D6-$G!"#1Bf$N%^%7%s(B(poulenc)$B$r(Bkame$B2=$7$F$_$^$7$?!#(B
> $B!!$=$N%^%7%s$G(Binetd$B$H(Binet46d$B$NN>J}$,Av$C$F$$$k$H$-$O!"%k!<%?1[$($N(B
> $B!!(Btelnet,ftp(mozart->poulenc)$B$H$b$KLdBj$J$,$C$?$N$G$9$,!"(Binetd$B$r$H$a(B
> $B!!$F(Binet46d$B$@$1$rAv$i$;$k$H!"%k!<%?1[$($N(Btelnet,ftp$B$,$G$-$J$/$J$j$^$7(B
> $B!!$?!#(Bping,traceroute$B$ODL$j$^$9!#%k!<%?(B(bach)$B$+$i$N(Btelnet,ftp$B$OLdBj$"(B
> $B!!$j$^$;$s!#5UJ}8~(B(poulenc->mozart)$B$N(Btelnet,ftp$B$ODL$j$^$9!#(B

> $B!!(Btcpdump$B$GD4$Y$k$H!"Aj<j@h(B(poulenc)$B$+$i$N1~Ez$,%k!<%?(B(bach)$B$^$G$G$H(B
> $B!!$^$C$F$$$k$h$&$J$N$G$9$,!%!%!%%"%I%P%$%9$*4j$$$7$^$9!#(B

> 11/14/99
> $B9uDE4pLo(B
> ---------$B!!(B

> TROUBLE: Telnet/ftp via router fails.

>  (kame) 1     2  (v4) 1     2  (v4)
> +-------+     +-------+     +--------+
> |poulenc|=====| bach  |=====| mozart |
> +-------+     +-------+     +--------+
>       192.168.4/24  192.168.3/24

> OS (all machines) : FreeBSD 3.2-RELEASE
> kame (poulenc)    : kame-19991012-freebsd32-stable

> ------
> mozart% telnet poulenc
> Trying 192.168.4.1...
> telnet: Unable to connect remote host: Operation timed out 
> ------
> poulenc# tcpdump -n -i ed0
> 01:17:32.817773 192.168.3.2.1111 > 192.168.4.1.23: S
> 3966415506:3966415506(0) win 16384 <mss 1460,nop,wscale
> 0,nop,nop,timestamp[|tcp]> (DF) [tos 0x10]
> 01:17:32.818293 192.168.4.1.23 > 192.168.3.2.1111: S
> 1126087372:1126087372(0) ack 3966415507 win 17520 <mss 1460> (DF) [ttl
> 0]
> 01:17:32.818767 192.168.4.2 > 192.168.4.1: icmp: time exceeded
> in-transit (DF)
> 01:17:35.320159 192.168.3.2.1111 > 192.168.4.1.23: S
> 3966415506:3966415506(0) win 16384 <mss 1460,nop,wscale
> 0,nop,nop,timestamp[|tcp]> (DF) [tos 0x10]
> 01:17:35.320470 192.168.4.1.23 > 192.168.3.2.1111: . ack 1 win 17520
> (DF) [ttl 0]
> 01:17:35.320950 192.168.4.2 > 192.168.4.1: icmp: time exceeded
> in-transit (DF)
> 01:17:35.463082 192.168.4.1.23 > 192.168.3.2.1111: S
> 1126087372:1126087372(0) ack 3966415507 win 17520 <mss 1460> (DF) [ttl
> 0]
> 01:17:35.463561 192.168.4.2 > 192.168.4.1: icmp: time exceeded
> in-transit (DF)

$B$3$N(Bdump$B$r8+$F$o$+$k$h$&$K!"(Bserver$BB&$+$i$N(BTTL$B$,(B0$B$K$J$C$F$$$k$N$,860x$+(B
$B$H;W$o$l$^$9!#(B

(ps$B$H(Bnetstat$B$N=PNO$O4X78$J$5$=$&$J$N$G>JN,(B)

$B$3$N%a!<%k$NKvHx$KE:IU$9$k%Q%C%A$G(B($B$H$j$"$($:(B)$BD>$k$H;W$$$^$9$N$G$*;n$7(B
$B$/$@$5$$!#%Q%C%A$O:G?7$N%=!<%9$KBP$9$k$b$N$G$9$,!"(B
kame-19991012-freebsd32-stable$B$K$bAGD>$K$"$?$k$+!"$=$&$G$J$/$F$b4JC1$K(B
$B<j$G$"$F$i$l$k$H;W$$$^$9!#(B

($B0J2<!"6=L#$"$k?M8~$1(B)

inet46d$B$r;H$C$F(B
telnet  stream  tcp     nowait  root    /usr/local/v6/libexec/telnetd   telnetd
$B$_$?$$$K$9$k$H!"(B

Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp46      0      0  *.23                   *.*                    LISTEN

$B$_$?$$$K!"(BIPv6$B$G(Bopen$B$7$?(Bsocket$B$r(Bwildcard bind$B$7$FBT$D$3$H$K$J$j$^$9$,!"(B
socket(2)$B$N$H$-$N=i4|2=$G$O(BIPv4$BMQ(Bttl$B$O%;%C%H$5$l$^$;$s!#(Btcp_newtcpbcb
$B$NCf$NKAF,$N(Bprotocol$BH=Dj(B

#ifdef INET6
	int isipv6 = (inp->inp_vflag & INP_IPV4) == 0;
#endif /* INET6 */

$B$G$O(BINP_IPV4 flag$B$ON)$C$F$J$$$N$G(B

#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
	inp->inp_ip_ttl = ip_defttl;

$B$N(Belse$B$KF~$i$J$$$+$i$G$9!#$=$N8e(Bbind(2)$B$N$H$-$K!"(Btcp6_usr_bind$B$G(B
#ifdef MAPPED_ADDR_ENABLED
	inp->inp_vflag &= ~INP_IPV4;
	inp->inp_vflag |= INP_IPV6;
	if (ip6_mapped_addr_on && (inp->inp_flags & IN6P_BINDV6ONLY) == NULL) {

		if (IN6_IS_ADDR_UNSPECIFIED(&sin6p->sin6_addr))
			inp->inp_vflag |= INP_IPV4;

$B$N$h$&$K$7$F(BINP_IPV4$B$,N)$D$N$G$9$,!"$3$N;~E@$G$O(Bttl(or hoplimit)$B$N(B
initialze$B$O40N;$7$F$*$j!"%Q%1%C%H$r=P$9$H$-$K$O>o$K$3$NCM$rC1=c$K%3%T$C(B
$B$F$k$N$G(Bttl = 0$B$G=P$F$$$C$F$7$^$&$N$G$9!#(B

inp_ip_ttl$B$C$F$H$/$K(Boverlay$B$5$l$?$j$7$F$J$$$h$&$G$7$?$N$G!"E:IU$N%Q%C(B
$B%A$G$OC1=c$K(Belse$B$r>C$7$F$_$^$7$?$,!"(B

- ttl or hoplimit$B$N(Binitialize$B$r(Bbind$B$^$GCY$i$9(B
- bind$B8e$K$b$&0lEY(Bttl$B$N(Binitialize$B$r;n$_$k(B
- hoplimit$B$H(Bttl$B$OF1$8$b$N(B(protocol independent)$B$H$_$J$7$F(Bv4$B$G$b(Bv6$B$G$b(B
  $BF1$8$b$N$r;H$&(B

$B$J$I$N(Balternative$B$b$"$j$=$&$G$9(B($B$^$"!"$I$l$b$$$^$$$A$C$]$$$,(B)$B!#@5$7$$(B
fix$B$O%W%m$K$*$^$+$;$7$^$9!#(B

				$B?@L@(B $BC#:H(B (jinmei@isl.rdc.toshiba.co.jp)
				$B3t<02q<R(B $BEl<G(B  $B8&5f3+H/%;%s%?!<(B
				$BDL?.%W%i%C%H%[!<%`%i%\%i%H%j!<(B

Index: tcp_subr.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd3/sys/netinet/tcp_subr.c,v
retrieving revision 1.16
diff -c -r1.16 tcp_subr.c
*** tcp_subr.c	1999/10/10 06:42:12	1.16
--- tcp_subr.c	1999/11/15 11:50:34
***************
*** 500,507 ****
  						    inp->in6p_route.ro_rt ?
  						    inp->in6p_route.ro_rt->rt_ifp :
  						    NULL);
- 	else
  #endif
  	inp->inp_ip_ttl = ip_defttl;
  	inp->inp_ppcb = (caddr_t)tp;
  	return (tp);		/* XXX */
--- 500,512 ----
  						    inp->in6p_route.ro_rt ?
  						    inp->in6p_route.ro_rt->rt_ifp :
  						    NULL);
  #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.
+ 	 * XXX: is there a better approach?
+ 	 */
  	inp->inp_ip_ttl = ip_defttl;
  	inp->inp_ppcb = (caddr_t)tp;
  	return (tp);		/* XXX */
