>>>>> On Sun, 06 Jan 2002 22:28:40 +0100,
>>>>> Kristof Verhenne <[EMAIL PROTECTED]> said:
> My ssh to some IPv6-hosts goes reilly weird;
> the OS is fbsd, gif0 is the default route for IPv6, tun0 is the default
> route for IPv4
> The setup of the ssh -6 connection goes very well, but suddenly, my
> ssh-client starts sending ACK's through tun0, not encapsulated...
I guess the attached message works for you as well.
JINMEI, Tatuya
Communication Platform Lab.
Corporate R&D Center, Toshiba Corp.
[EMAIL PROTECTED]
--- Begin Message ---
Finally I figured out the problem.
The essential reason for this weirdness was that the kernel did not
set the in_conninfo.inc_isipv6 member of a PCB entry correctly. As a
result of this, once a cached route stored in the PCB has become
invalid, the kernel would try to get a new route with an AF_INET
destination. Neighbor solicitation messages on the gif link, which
might invalidate the cached route, are also bogus, but they are not
directly related to this particular problem.
So, we should deal with this trouble as follows:
1. set the inc_isipv6 member correctly. The patch attached to this
message should work for this (I checked the patch on a 4.5 RELEASE
box).
2. prohibit the kernel from sending the bogus neighbor solicitations.
This can be done by a patch I proposed last week in a different thread:
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=345287+0+archive/2002/freebsd-net/20020224.freebsd-net
BTW: I believe we should not rely on the inc_isipv6 member, which
tends to introduce this type of bug. We should probably detect the
correct family by the addresses themselves.
JINMEI, Tatuya
Communication Platform Lab.
Corporate R&D Center, Toshiba Corp.
[EMAIL PROTECTED]
*** tcp_usrreq.c.orig Tue Feb 26 14:00:22 2002
--- tcp_usrreq.c Tue Feb 26 14:05:43 2002
***************
*** 375,380 ****
--- 375,381 ----
}
inp->inp_vflag &= ~INP_IPV4;
inp->inp_vflag |= INP_IPV6;
+ inp->inp_inc.inc_isipv6 = 1;
if ((error = tcp6_connect(tp, nam, p)) != 0)
goto out;
error = tcp_output(tp);
*** tcp_syncache.c.orig Tue Feb 26 10:52:39 2002
--- tcp_syncache.c Tue Feb 26 10:52:49 2002
***************
*** 552,557 ****
--- 552,558 ----
/*
* Insert new socket into hash list.
*/
+ inp->inp_inc.inc_isipv6 = sc->sc_inc.inc_isipv6;
#ifdef INET6
if (sc->sc_inc.inc_isipv6) {
inp->in6p_laddr = sc->sc_inc.inc6_laddr;
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message
--- End Message ---