From owner-IPv6-jp@jp.freebsd.org  Tue Nov 16 19:13:59 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id TAA55311;
	Tue, 16 Nov 1999 19:13:59 +0900 (JST)
	(envelope-from owner-IPv6-jp@jp.FreeBSD.org)
Received: from orange.kame.net (orange.kame.net [203.178.141.194])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id TAA55304
	for <IPv6-jp@jp.freebsd.org>; Tue, 16 Nov 1999 19:13:59 +0900 (JST)
	(envelope-from shin@nd.net.fujitsu.co.jp)
Received: from localhost (kame209.kame.net [203.178.141.209])
	by orange.kame.net (8.9.1+3.1W/3.7W) with ESMTP id TAA11760;
	Tue, 16 Nov 1999 19:13:54 +0900 (JST)
To: IPv6-jp@jp.freebsd.org, jinmei@isl.rdc.toshiba.co.jp
Cc: v6@wide.ad.jp
In-Reply-To: <14383.64351.279924.51939W@condor.isl.rdc.toshiba.co.jp>
References: <382DDD91.1F1438E@home2.>
	<14383.64351.279924.51939W@condor.isl.rdc.toshiba.co.jp>
	<14384.553.203068.60797N@condor.isl.rdc.toshiba.co.jp>
X-Mailer: Mew version 1.94 on Emacs 20.4 / Mule 4.0 (HANANOEN)
X-Prom-Mew: Prom-Mew 1.93.4 (procmail reader for Mew)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <19991116191444M.shin@nd.net.fujitsu.co.jp>
Date: Tue, 16 Nov 1999 19:14:44 +0900
From: Yoshinobu Inoue <shin@nd.net.fujitsu.co.jp>
X-Dispatcher: imput version 990905(IM130)
Lines: 153
Reply-To: IPv6-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: IPv6-jp 344
Subject: [IPv6-jp 344] Re: Telnet/ftp via router fails
Errors-To: owner-IPv6-jp@jp.freebsd.org
Sender: owner-IPv6-jp@jp.freebsd.org
X-Originator: shin@nd.net.fujitsu.co.jp

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

$B$*$J$8$/$"$j$,$H$&$4$6$$$^$9!#(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

$B$3$NJU$r<BAu$7$?$N$O;d$@$H;W$$$^$9$,!"9MN8$,IT==J,$@$C$?$_$?$$(B
$B$G$I$&$b$9$$$^$;$s$G$7$?!#(B
jinmei$B$5$sD4::$HBP1~$"$j$,$H$&$4$6$$$^$7$?!#(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%W%m$G$O$J$$$G$9$,!"(B
null$B$G(Bbind$B$5$l$?(BAF_INET6$B$N%=%1%C%H$G(BIPv6$B$b(BIPv4$B$b<u$1IU$1$k$H$$$&(B
IPv4 mapped IPv6 address$B$N;EMM$+$i9M$($k$H!"(B
bind$B8e$G$b$^$@BLL\$G!"(Bconnect$B$d(Baccept$B$^$GBT$DI,MW$,$"$j$=$&$G$9!#(B

tcp_newtcpcb()$B$K$O!"(Bhoplimit$B0J30$K$b(Bt_maxseg$B$N$h$&$J%W%m%H%3%k(B
$B0MB8$NCM$N=i4|2==hM}$,F~$C$F$$$k$N$G!"$3$l$i$N=i4|2=$r(Bbind,
accept$B$K0\$7$F!"(Btcp_newtcpcb()$B$O%W%m%H%3%k$K0MB8$7$J$$=i4|2=$@(B
$B$1$r9T$&$H$$$&J}8~$GD>$7$F$_$h$&$H;W$$$^$9!#(B

$B$?$@!"$5$i$K%=!<%9$r8+$F$_$?$i!"(Btcp_newtcpcb()$B$G8=>u0J2<$N$h$&(B
$B$K=i4|2=$5$l$F$$$k(Bin6p_ip6_hlim$B$O!"(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

$BC1$K(Btcp_output$B$G(BIPv6$B%X%C%@$N(Bhoplimit$B$r=i4|2=$9$k:]$N%-%c%C%7%e(B
$B$5$l$?CM$H$7$FMxMQ$5$l$F$$$?CM$G$7$?!#(B
$B$3$NItJ,$O!"(Bhoplim$B$NCM$,(Bsetsockopt()$BEy$GF0E*$KJQ99$5$l$k2DG=@-(B
$B$r9M$($F(B($B0JA0$b(Bv6@wide$B$G$$$m$$$m5DO@$N$"$C$?OC$G$9$,(B)$B!"(B
tcp_output()$B$G0J2<$N$h$&$K(B

		ip6->ip6_hlim = in6_selecthlim(tp->t_inpcb,
					       tp->t_inpcb->in6p_route.ro_rt ?
					       tp->t_inpcb->in6p_route.ro_rt->rt_ifp
					       : NULL);

$BKh2s(Bin6_selecthlim$B$r8F$S=P$7$F!"F0E*$K:GE,$JCM$r@_Dj$9$k$h$&$K(B
$B$J$C$F$^$9!#(B
$B=>$C$F!"8=>u$N(Btcp_newtcpcb$B$G$N(Bin6p_ip6_hlim$B$N=i4|2=$O$=$b$=$b(B
$BITMW$K$J$C$F$$$k$N$G!"C1$K4]$4$H:o=|$7$h$&$H;W$$$^$9!#(B
(in6p_ip6_hlim$B$H$$$&%a%s%P!<$b$b$&ITMW$J$N$G:o=|$7$^$9(B)

($B$=$&$9$k$H!"8=>u$N(Btcp_newtcpcb$B$G$N(Binp_ip_ttl$B$N=i4|2=$NJ}$O$=(B
$B$N$^$^$G$$$$$+$J(B)

> $B$D$$$G$K(Bnetbsd kame$B$N%3!<%I$b8+$F$_$^$7$?$,!"(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$K6a$$$C$]$$$G$9$M!#(Btcp_output$B$G(B

$B$s(B?$B!"$3$3$N%3!<%I$N0U?^$O$A$g$C$H0c$&$N$G$O(B?

> 	switch (af) {
> 	case AF_INET:
> 		ip->ip_len = m->m_pkthdr.len;
> 		if (tp->t_inpcb) {
> 			ip->ip_ttl = tp->t_inpcb->inp_ip.ip_ttl;
> 			ip->ip_tos = tp->t_inpcb->inp_ip.ip_tos;
> 		}
> #ifdef INET6
> 		else if (tp->t_in6pcb) {
> 			ip->ip_ttl = tp->t_in6pcb->in6p_ip6.ip6_hlim;
> 			ip->ip_tos = 0;	/*XXX*/
> 		}
> #endif

#ifdef INET6$B$G0O$^$l$?ItJ,$O!"$*$=$i$/(BAF_INET6$B$N%=%1%C%H$G(BIPv4
mapped IPv6 address$B$,;HMQ$5$l$F$$$k%1!<%9$@$H;W$$$^$9!#(B
$B=>$C$F!"2<0LAX$,F1$8(BIPv4$B$K$J$k>l9g$G$b!"(B
  -AF_INET$B%=%1%C%H$N>l9g$O(BIPv4$BE*$J(Bsetsockopt$B$G;XDj$5$l$?(Bttl$B$NCM$r;HMQ(B
  -AF_INET6$B%=%1%C%H$N>l9g$O!"(BIPv6$BE*$J(Bsetsockopt$B$G;XDj$5$l$?(B
   hoplimit$B$NCM$r;HMQ(B
$B$H$$$&$3$H$@$H;W$$$^$9!#(B

> $B$H$7$F$$$k$N$G!#>/$J$/$H$b!"(Bfbsd3$B$HF1$8LdBj$O$J$5$=$&!#(Bip6_hlim$B$r;H$&(B
> $B$N$,@5$7$$$N$+$I$&$+$O$h$/$o$+$i$J$$$1$I!#(B

$B$A$J$_$K$3$NItJ,$b!"(BIPv6$B$N(Bsetsockopt$B$GF0E*$K@_Dj$5$l$?CM$r;HMQ(B
$B$9$k$?$a$K$O!"(Bfbsd3$B$HF1MM$K(Bin6_selecthlim()$B$r8F$S=P$7$?J}$,NI(B
$B$5$=$&$G$9!#(B

$B$5$i$K8@$&$H!">e$NItJ,$N(Bnetbsd$B$N%3!<%I$O:#2s$N(Btcp_newtcpcb$B$G$N(B
$B=i4|2=O3$l$H$OJL$JOC$@$H;W$$$^$9!#(B
$BF1MM$NItJ,$O!"(Bnetbsd$B$G$O(B

tcp_usrreq.c$B$N(Btcp_attach$B$G!"(B

tcp_attach(so)
	struct socket *so;
{
<SNIP>
	family = so->so_proto->pr_domain->dom_family;
<SNIP>
	if (inp)
		tp = tcp_newtcpcb(family, (void *)inp);
#ifdef INET6
	else if (in6p)
		tp = tcp_newtcpcb(family, (void *)in6p);
#endif
	else
		tp = NULL;

$B$H$$$&Iw$K$*$=$i$/(Bfamily$B$,(BAF_INET6$B$G8F$S=P$5$l!"(B
tcp_subr.c$B$N(Btcp_newtcpcb$B$G$O(B

struct tcpcb *
tcp_newtcpcb(family, aux)
	int family;	/* selects inpcb, or in6pcb */
	void *aux;
{
<SNIP>
	if (family == AF_INET) {
		struct inpcb *inp = (struct inpcb *)aux;
		inp->inp_ip.ip_ttl = ip_defttl;
		inp->inp_ppcb = (caddr_t)tp;
	}
#ifdef INET6
	else if (family == AF_INET6) {
		struct in6pcb *in6p = (struct in6pcb *)aux;
		in6p->in6p_ip6.ip6_hlim = ip6_defhlim;
		in6p->in6p_ppcb = (caddr_t)tp;
	}
#endif

$B$H$$$&46$8$K$J$C$F$$$F!"$&!<$s!"$3$NJU$r8+$k8B$j$G$O!"(Bnetbsd$B$G(B
$B$bF1MM$K!"(BAF_INET6$B$G3+$+$l$?(Bsocket$B$K4X$7$F$O(B
inp_ip.ip_ttl(fbsd3$B$G8@$&$H$3$m$N(Binp_ip_ttl)$B$O=i4|2=$5$l$F$$$J(B
$B$$$h$&$K8+$($^$9$M!#(B
$B>\$7$/%3!<%I$rDI$C$F$$$J$$$N$G!"$I$3$+B>$N$H$3$m$G=i4|2=$5$l$F(B
$B$$$k$N$+$b$7$l$J$$$1$I!#(B
