[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(usagi-users 02621) UDP IPv6 Multicast



I am noticing strange behavior on the 2.6 series kernel (I tested on 2.6.0-test9). When I have two sockets which bind to and join different multicast addresses but with the same UDP port, and then I send a packet to one of those multicast addresses, the packet gets delivered to both of them. For example, if one socket is bound to ff01::1:1 UDP port 2000 and joins multicast group ff01::1:1, and a second socket is bound to ff01::1:2 UDP port 2000 and joins multicast group ff01::1:2, and then I send a packet to ff01::1:1 UDP port 2000, it actually gets delivered to both sockets. This does not happen in the 2.4 series kernel.

I have narrowed it down to the interaction between the following two functions in the kernel: inet6_mc_check and and udp_v6_mcast_next. It seems that the return semantics were changed for inet6_mc_check in the 2.6 series kernel without changing the logic used when calling it in udp_v6_mcast_next. Is there a reason for this change, or is this just a bug?

Thanks,
Brian Buesker