* ping6 is sent out from wrong interface
@ 2008-06-20 1:42 Naohiro Ooiwa
2008-06-24 20:04 ` YOSHIFUJI Hideaki / 吉藤英明
0 siblings, 1 reply; 3+ messages in thread
From: Naohiro Ooiwa @ 2008-06-20 1:42 UTC (permalink / raw)
To: netdev, usagi-users; +Cc: YOSHIFUJI Hideaki / 吉藤英明
Hi all,
I configured the IPv6 global address for two interfaces,
and sent the ping with "-I <eth1 address>" to the "ff02::1".
# ifconfig eth0 add 2001:2c0:418:1::2/64
# ifconfig eth1 add 2001:2c0:418:2::2/64
# ping6 -I2001:2c0:418:2::2 ff02::1
# /usr/sbin/tcpdump -ieth1 icmp6 -v -e
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
0 packets captured
0 packets received by filter
0 packets dropped by kernel
The ping packets weren't sent from "eth1",
so I captured the packets on the "eth0" by tcpdump.
# /usr/sbin/tcpdump -ieth0 icmp6 -v -e
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
18:16:53.900751 00:19:d1:19:23:af (oui Unknown) > 33:33:00:00:00:01 (oui Unknown), ethertype IPv6 (0x86dd), length
118: (hlim 64, next-header: ICMPv6 (58), length: 64) 2001:2c0:418:2::2 > ff02::1: ICMP6, echo request, length 64, seq 190
18:16:53.957145 00:1d:09:7a:91:19 (oui Unknown) > 33:33:00:00:00:02 (oui Unknown), ethertype IPv6 (0x86dd), length
70: (hlim 255, next-header: ICMPv6 (58), length: 16) fe80::21d:9ff:fe7a:9119 > ff02::2: [icmp6 sum ok] ICMP6, router
solicitation, length 16
source link-address option (1), length 8 (1): 00:1d:09:7a:91:19
::::::
The ping packets were sent out from "eth0"(00:19:d1:19:23:af),
but IPv6 address was "eth1"(2001:2c0:418:2::2).
Why is interface "eth0". Isn't it bug ?
The following is additional information.
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:19:D1:19:23:AF
inet addr:10.1.0.161 Bcast:10.1.255.255 Mask:255.255.0.0
inet6 addr: 2001:2c0:418:1::1/64 Scope:Global
inet6 addr: fe80::219:d1ff:fe19:23af/64 Scope:Link
::::::
# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:10:18:0E:0C:B4
inet addr:172.16.255.200 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: 2001:2c0:418:2::2/64 Scope:Global
inet6 addr: fe80::210:18ff:fe0e:cb4/64 Scope:Link
::::::
# route -A inet6
Kernel IPv6 routing table
Destination Next Hop Flags Metric Ref Use Iface
2001:2c0:418:1::/64 * U 256 0 0 eth0
2001:2c0:418:2::/64 * U 256 0 0 eth1
fe80::/64 * U 256 0 0 eth0
fe80::/64 * U 256 0 0 eth1
::::::
2001:2c0:418:1::1/128 * U 0 8 1 lo
2001:2c0:418:2::2/128 * U 0 5 1 lo
::::::
ff00::/8 * U 256 0 0 eth0
ff00::/8 * U 256 0 0 eth1
#
The version used are following:
# uname -r -m
2.6.24.7-92.fc8 i686
# ping6 -V
ping6 utility, iputils-sss20070202
Regards,
Naohiro Ooiwa
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ping6 is sent out from wrong interface
2008-06-20 1:42 ping6 is sent out from wrong interface Naohiro Ooiwa
@ 2008-06-24 20:04 ` YOSHIFUJI Hideaki / 吉藤英明
0 siblings, 0 replies; 3+ messages in thread
From: YOSHIFUJI Hideaki / 吉藤英明 @ 2008-06-24 20:04 UTC (permalink / raw)
To: nooiwa; +Cc: netdev, usagi-users, yoshfuji
In article <485B0B1D.5000603@miraclelinux.com> (at Fri, 20 Jun 2008 10:42:53 +0900), Naohiro Ooiwa <nooiwa@miraclelinux.com> says:
> The ping packets were sent out from "eth0"(00:19:d1:19:23:af),
> but IPv6 address was "eth1"(2001:2c0:418:2::2).
> Why is interface "eth0". Isn't it bug ?
>
> The following is additional information.
>
> # ifconfig eth0
> eth0 Link encap:Ethernet HWaddr 00:19:D1:19:23:AF
> inet addr:10.1.0.161 Bcast:10.1.255.255 Mask:255.255.0.0
> inet6 addr: 2001:2c0:418:1::1/64 Scope:Global
> inet6 addr: fe80::219:d1ff:fe19:23af/64 Scope:Link
> ::::::
> # ifconfig eth1
> eth1 Link encap:Ethernet HWaddr 00:10:18:0E:0C:B4
> inet addr:172.16.255.200 Bcast:172.16.255.255 Mask:255.255.0.0
> inet6 addr: 2001:2c0:418:2::2/64 Scope:Global
> inet6 addr: fe80::210:18ff:fe0e:cb4/64 Scope:Link
> ::::::
-I does not specify interface strictly but source address.
Which means, if you just specify an address, interface is unspecified.
You can give "-I eth1", too.
BTW, we should accept '-I fe80::1%eth0', maybe.
--yoshfuji
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ping6 is sent out from wrong interface
@ 2008-06-25 7:02 Naohiro Ooiwa
0 siblings, 0 replies; 3+ messages in thread
From: Naohiro Ooiwa @ 2008-06-25 7:02 UTC (permalink / raw)
To: YOSHIFUJI Hideaki / 吉藤英明; +Cc: netdev, usagi-users
Hi YOSHIFUJI-san
Thank you for your reply.
> -I does not specify interface strictly but source address.
> Which means, if you just specify an address, interface is unspecified.
> You can give "-I eth1", too.
I'm not convinced yet.
I don't think it's correct that kernel or ping6 arbitrarily decides outgoing interface.
Is this really an expected behaviour?
Could you explain to me the reason of it, too?
I think the behavior should be similar to IPv4.
The following is my image. ipv6_dev_find() is an imaginary function, which
finds the interface with a given source address.
How do you think?
--- linux-2.6.25/net/ipv6/raw.c.orig 2008-04-17 11:49:44.000000000 +0900
+++ linux-2.6.25/net/ipv6/raw.c 2008-06-25 15:20:27.000000000 +0900
@@ -875,8 +875,13 @@ static int rawv6_sendmsg(struct kiocb *i
final_p = &final;
}
- if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst))
- fl.oif = np->mcast_oif;
+ if (!fl.oif && ipv6_addr_is_multicast(&fl.fl6_dst)) {
+ if (np->mcast_oif)
+ fl.oif = np->mcast_oif;
+ else
+ fl.oif = ipv6_dev_find(oldflp->fl6_src);
+ }
+
security_sk_classify_flow(sk, &fl);
err = ip6_dst_lookup(sk, &dst, &fl);
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-06-25 7:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-20 1:42 ping6 is sent out from wrong interface Naohiro Ooiwa
2008-06-24 20:04 ` YOSHIFUJI Hideaki / 吉藤英明
2008-06-25 7:02 Naohiro Ooiwa
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.