Evgeniy Polyakov wrote: > On Tue, Apr 18, 2006 at 01:13:35AM +0200, Patrick McHardy ([EMAIL PROTECTED]) > wrote: > >>I went over your mails again, but I don't understand the problem you're >>seeing. Please just make a simple example showing the operation + >>the arguments you're using to bind to group 5 which would result in >>bit 0 beeing set or the kernel deciding to send to group 1 for some >>other reason. > > > Example: > at bind time group 5 was selected and then socket was subscribed to that > group. This end up in 0b10101 bitmask, which allows to multicast to > group 16 which has nothing in common with either group number 5 or > bitmask 5.
Again, bind() takes a bitmask of the groups to subscribe to, not the numerical value 5. To subscribe to group 5 using bind, you use 1<<(5-1) as nladdr, which is 0x10000. Check out the difference between RTMGRP_NOTIFY (backwards compatibility for bind()) and RTNLGRP_NOTIFY (used internally and for NETLINK_ADD_MEMBERSHIP). > I think that if socket uses bitmask at bind time, then it should not be > allowed to subscribe. > So for above example at bind time (1<<4) should be used and this is what > happens with subscription. We discussed already that itmask > functionality was never used, and current behaviour introduces big > ambiguity. > Well, if you forces this to not be changed, I will update documentation > about this behaviour. See above. Does this clear things up? - 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