[NETLINK]: Generic netlink family
commit482a8524f85a7d8c40c6fb5d072e85bc2fef327f
authorThomas Graf <tgraf@suug.ch>
Thu, 10 Nov 2005 01:25:56 +0000 (10 02:25 +0100)
committerThomas Graf <tgr@axs.localdomain>
Thu, 10 Nov 2005 01:26:41 +0000 (10 02:26 +0100)
treecbd4225da63a687dd70441d41aad35ff5c171f48
parent9ac4a16983ea4edf719c390a1a234d956947688d
[NETLINK]: Generic netlink family

The generic netlink family builds on top of netlink and provides
simplifies access for the less demanding netlink users. It solves
the problem of protocol numbers running out by introducing a so
called controller taking care of id management and name resolving.

Generic netlink modules register themself after filling out their
id card (struct genl_family), after successful registration the
modules are able to register callbacks to command numbers by
filling out a struct genl_ops and calling genl_register_op(). The
registered callbacks are invoked with attributes parsed making
life of simple modules a lot easier.

Although generic netlink modules can request static identifiers,
it is recommended to use GENL_ID_GENERATE and to let the controller
assign a unique identifier to the module. Userspace applications
will then ask the controller and lookup the idenfier by the module
name.

Due to the current multicast implementation of netlink, the number
of generic netlink modules is restricted to 1024 to avoid wasting
memory for the per socket multiacst subscription bitmask.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/genetlink.h [new file with mode: 0644]
include/net/genetlink.h [new file with mode: 0644]
net/netlink/Makefile
net/netlink/genetlink.c [new file with mode: 0644]