2013/3/13 Kay Sievers <span dir="ltr"><<a href="mailto:kay@vrfy.org" target="_blank">kay@vrfy.org</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Tue, Mar 12, 2013 at 9:35 PM, Andrey Wagin <<a href="mailto:avagin@gmail.com">avagin@gmail.com</a>> wrote:<br>
> According to netlink(7) nl_groups is a bit mask with every bit representing<br>
> a netlink group number.<br>
<br>
</div>Netlink uses "numbers" not "a mask" since many years, we have just a<br>
32bit number, not 32 groups today. The man page should really be<br>
updated:<br>
  <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d629b836d151d43332492651dd841d32e57ebe3b" target="_blank">http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d629b836d151d43332492651dd841d32e57ebe3b</a> </blockquote>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
There might be magic for group 1-32, which is still in place, but<br>
there is generally no mask anymore for netlink groups.<br></blockquote><div><br></div><div>I'm afraid, you are wrong. This patch is about kernel internals. User-interfaces have not been changed.</div><div>E.g.</div><div>
netlink_connect(...)</div><div>{</div><div>...</div><div> nlk->dst_group  = ffs(nladdr->nl_groups);</div><div>...</div><div>}</div><div><br></div><div>Here is another patch, which expands user interface to set more than 32 groups.</div>
<div><a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9a4595bc7e67962f13232ee55a64e063062c3a99">http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9a4595bc7e67962f13232ee55a64e063062c3a99</a></div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> I found that constants from udev_monitor_netlink_group are set directly to<br>
> nl_groups. It's dangerous. Currently this enum contains only three constant<br>
> and all is ok, but the next constant will be incorrect.<br>
<br>
</div>There will probably never be another netlink group inside libudev. If<br>
we ever change that low-level stuff here, we would move entirely to a<br>
kernel dbus facility, and not (mis-)use netlink anymore.<br></blockquote><div><br></div><div>It's not a reason to not fix this code. People use code of system tools as examples. I usually do that. It's the most probable place where kernel interfaces are used by the right way.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> I created a patch, but I have not tested it. It's just idea. Sorry, I would<br>
> have prefered to avoid investigation of how to execute my system with custom<br>
> systemd. So if someone wants to fix this issue, you are welcome.<br>
<br>
</div>Just build systemd locally, and run<br>
  ./udevadm monitor<br>
locally, it will receive messages from the kernel and from the already<br>
running and unchanged udevd. Just plub/unplug any device.<br></blockquote><div><br></div><div>Thanks.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
If the output is the same in the local build and the one from the<br>
system, all is fine, you can check with strace to verify the details<br>
too.<br>
<span class="HOEnZb"><font color="#888888"><br>
Kay<br>
</font></span></blockquote></div><br>