Hey, Looking through the code that uses NL_NONROOT_SEND I just realised that it's impossible to send multicast messages from userspace to multicast groups with IDs higher than 31. That's not really good given that everywhere else we handle multicast groups up to 2^32-1 :/
Unfortunately, I haven't found any good way to fix this; in fact the only way to fix it backward-compatibly I could come up with so far is to extend struct sockaddr_nl by "__u32 nl_group;" and use that in netlink_sendmsg instead of nl_groups when msg_namelen is large enough and I'm not even sure that checking msg_namelen is enough, apps could give you a length much longer than the actual structure... Maybe additionally require that nl_groups is set to ~0 or something. The same should be done for netlink_connect() then. It would of course be possible to add a new sockopt NETLINK_{SET,GET}_DST_GROUP, but that prevents you from sending messages to multiple high groups with sendmsg(), and I think having a working sendmsg() is desirable as well. Does anybody have any better ideas? johannes
signature.asc
Description: This is a digitally signed message part