On Wed, Mar 27, 2002 at 04:23:20PM +0900, Keiichi SHIMA / ?$BEg7D0l?(B wrote:
> This is a cached route problem.  struct inpcb has a route entry for
> cached route.  Since inpcb is shared by both IPv4 and IPv6, the cached
> route entry is also shared by them.  4.5-STABLE doesn't check the
> protocol family of the cached route when using it.  Therefore, once a
> IPv4 route is cached, ip6_output mistakingly use it as a cached route
> for IPv6 destination.
> 
> Please try attached patches.

Thanks a lot! I have applied the patches and it works only partially.

I have the server at
   de0: flags=8943<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::280:c8ff:fe45:b392%de0 prefixlen 64 scopeid 0x1 
        inet 195.30.1.139 netmask 0xffffff00 broadcast 195.30.1.255
        inet6 2001:608:0:1:280:c8ff:fe45:b392 prefixlen 64 autoconf 
        ether 00:80:c8:45:b3:92 
the IPv4 only client is at
   de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 195.30.1.54 netmask 0xffffff00 broadcast 195.30.1.255
        ether 00:80:c8:4c:33:36 
the IPv6 client is at
   de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 195.30.0.29 netmask 0xffffff00 broadcast 195.30.0.255
        inet6 fe80::280:c8ff:fe56:bf25%de0 prefixlen 64 scopeid 0x1 
        inet6 2001:608::1000:1 prefixlen 64 
        inet6 2001:608::280:c8ff:fe56:bf25 prefixlen 64 
        ether 00:80:c8:56:bf:25 

queries from the IPv6 client both to
     2001:608:0:1:280:c8ff:fe45:b392
or   195.30.1.139
work fine, always.

As long as I only do queries via IPv4 it works for both clients.
As the IPv4 client and the server are on the same subnet/ethernet
they can talk directly. What happens is that the server has two
ARP entries as soon as a query via IPv4 comes in:
    lagrange.Space.Net (195.30.1.54) at 0:80:c8:4c:33:36 on de0 [ethernet]
    lagrange.Space.Net (195.30.1.54) at (incomplete) on de0 [ethernet]

As soon as I do the first query via IPv6 I can do further queries via
IPv6 from that host but queries via IPv4 from any host on the same
subnet/ethernet don't work any longer.

truss shows the sendto() without any errors.
    recvfrom(0x3,0x80556c0,0x400,0x0,0xbfbffbc0,0xbfbffbbc) = 31 (0x1f)
    [ ... ]
    sendto(0x3,0x80f34c0,0x2f,0x0,0xbfbffba0,0x1c)   = 47 (0x2f)

tcpdump shows that at the moment the server does the sendto() the
server host sends ARP requests and gets answers but doesn't send any
packets:
    19:56:26.381491 195.30.1.54.2494 > 195.30.1.139.53:  6+ A? www.space.net.  (31)
    19:56:26.382267 arp who-has 195.30.1.54 tell 195.30.1.139
    19:56:26.382366 arp reply 195.30.1.54 is-at 0:80:c8:4c:33:36

arp -a still shows the above two entries (one incomplete). Same happens
if I use other hosts e.g.:
    moebius2.Space.Net (195.30.1.100) at 0:d0:b7:a9:2e:5b on de0 [ethernet]
    moebius2.Space.Net (195.30.1.100) at (incomplete) on de0 [ethernet]
and no packets get out:
    20:02:56.283806 195.30.1.100.3227 > 195.30.1.139.53:  6+ A?  www.space.net. (31)
    20:02:56.284575 arp who-has 195.30.1.100 tell 195.30.1.139
    20:02:56.284753 arp reply 195.30.1.100 is-at 0:d0:b7:a9:2e:5b

I have also tried
    # arp -a -d
but that doesn't change anything.

ping and ssh still work for all clients to the server.

        \Maex
-- 
SpaceNet AG            | Joseph-Dollinger-Bogen 14 | Fon: +49 (89) 32356-0
Research & Development |       D-80807 Muenchen    | Fax: +49 (89) 32356-299
"The security, stability and reliability of a computer system is reciprocally
 proportional to the amount of vacuity between the ears of the admin"

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to