rtnetlink: Link address family API
authorThomas Graf <tgraf@infradead.org>
Tue, 16 Nov 2010 04:30:14 +0000 (04:30 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Nov 2010 19:28:24 +0000 (11:28 -0800)
commitf8ff182c716c6f11ca3061961f5722f26a14e101
tree6ea721a7feb71850c61b9d02400d162674d91c21
parentd67ef35fff67845c64d806c033cc7c569ccebfff
rtnetlink: Link address family API

Each net_device contains address family specific data such as
per device settings and statistics. We already expose this data
via procfs/sysfs and partially netlink.

The netlink method requires the requester to send one RTM_GETLINK
request for each address family it wishes to receive data of
and then merge this data itself.

This patch implements a new API which combines all address family
specific link data in a new netlink attribute IFLA_AF_SPEC.
IFLA_AF_SPEC contains a sequence of nested attributes, one for each
address family which in turn defines the structure of its own
attribute. Example:

   [IFLA_AF_SPEC] = {
       [AF_INET] = {
           [IFLA_INET_CONF] = ...,
       },
       [AF_INET6] = {
           [IFLA_INET6_FLAGS] = ...,
           [IFLA_INET6_CONF] = ...,
       }
   }

The API also allows for address families to implement a function
which parses the IFLA_AF_SPEC attribute sent by userspace to
implement address family specific link options.

Signed-off-by: Thomas Graf <tgraf@infradead.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/if_link.h
include/net/rtnetlink.h
net/core/rtnetlink.c