The kernel supports much more than 32 groups, see nlk->groups which is
a bitmap which can be sized to arbitrary sizes. nlk->nl_groups is
for backwards compatability only.
netlink_change_ngroups() does the bitmap resizing when necessary.
The root multicast listening restriction can be relaxed in some
circumstances, whatever is needed to fill your needs.
Stop making excuses, with minor adjustments we have the facilities to
meet your needs. There is no need for yet-another-protocol to do what
you're trying to do, we already have too much duplicated
functionality.
--