Hi, I've noticed a difference between the IPv4 and IPv6 router alert handling, which I think constitutes a bug.
For IPv4, you can bind a socket to an interface. If you use the IP_ROUTER_ALERT sockopt then packets with router alert options are only delivered to raw sockets bound to the incoming interface, or not bound to any interface. (see net/ipv4/ip_input.c in the ip_call_ra_chain function around line 168). The IPv6 equivalent is ip6_call_ra_chain in net/ipv6/ip_output.c (around line 316), which doesn't check sk->sk_bound_dev_if at all before delivering the packet to a raw socket. I assume that it should. Is that assumption correct? I guess the fix would be a matter of changing: if (sk && ra->sel == sel) { to: if (sk && ra->sel == sel && (!sk->sk_bound_dev_if || sk->sk_bound_dev_if == skb->dev->ifindex)) { thanks, Andrew - 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