Hello, Mr yoshfuji
Take ping6 for example. Asumming there is a router which has 2 NICs.
eth0 on router has ipv6 addr fe80::20c:29ff:fe24:fa0a, eth1 on router has
ipv6 addr fe80::20c:29ff:fe24:fa14. Also there is a host connected to
router's eth0, and the host's ipv6 addr is fe80::200:ff:fe00:100. We ping6
to router's eth1(ipv6 addr fe80::20c:29ff:fe24:fa14). But now Linux kernel
deals with this kind of packet incorrectly. Router forward the Echo request
to eth0. And send ICMP redirect packet to the host. In ICMP redirect packt
TargetAddress =fe80::20c:29ff:fe24:fa14, DestinationAddress =
fe80::20c:29ff:fe24:fa14. So I think Linux kernel considers that
fe80::200:ff:fe00:100 and fe80::20c:29ff:fe24:fa14 are neighbors.
I dived into the kernel, and found that maybe function rt6_score_route() has
problems. In rt6_score_route(), if rt6_check_dev() return 0, and the dst
ipv6 addr is link local addr, rt6_socre_route() return -1 directly. I think
this is not correct, we should return -1 only if the entry is in the route
cache, and the dst addr is link local addr. Only entries in cache will
select wrong IPv6 Link Local NIC for a link local addr, because they are
copied from static IPv6 fib tables.
----- Original Message -----
Hello.
In article <[EMAIL PROTECTED]> (at Wed, 21 Feb 2007
02:24:26 -0500), weidong <[EMAIL PROTECTED]> says:
eth0: fe80::20c:29ff:fe24:fa0a
| eth1: fe80::20c:29ff:fe24:fa14
| |
------------------------------------------------
| |
| |
| LAN1 |LAN2
| |
-----
^
|
Send Echo Request(src addr = fe80::200:ff:fe00:100)
Sorry, I could not understand this figure....
Would you elaborate this?
--yoshfuji
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html