[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1183492286.4021.21.camel@johannes.berg>
Date: Tue, 03 Jul 2007 21:51:25 +0200
From: Johannes Berg <johannes@...solutions.net>
To: netdev <netdev@...r.kernel.org>
Cc: jamal <hadi@...erus.ca>, Patrick McHardy <kaber@...sh.net>,
Thomas Graf <tgraf@...g.ch>
Subject: multicasting netlink messages to groups > 31 from userspace
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
Download attachment "signature.asc" of type "application/pgp-signature" (191 bytes)
Powered by blists - more mailing lists