genetlink: introduce split op representation
authorJakub Kicinski <kuba@kernel.org>
Fri, 4 Nov 2022 19:13:33 +0000 (12:13 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 7 Nov 2022 12:30:16 +0000 (12:30 +0000)
commit20b0b53aca436af9fece9428ca3ab7c7b9cf4583
tree6dccfe349a1ae4e7de872560d807ffed2d07b6a4
parent7c3eaa022261d79d273d73ac68ff02cbe2839c10
genetlink: introduce split op representation

We currently have two forms of operations - small ops and "full" ops
(or just ops). The former does not have pointers for some of the less
commonly used features (namely dump start/done and policy).

The "full" ops, however, still don't contain all the necessary
information. In particular the policy is per command ID, while
do and dump often accept different attributes. It's also not
possible to define different pre_doit and post_doit callbacks
for different commands within the family.

At the same time a lot of commands do not support dumping and
therefore all the dump-related information is wasted space.

Create a new command representation which can hold info about
a do implementation or a dump implementation, but not both at
the same time.

Use this new representation on the command execution path
(genl_family_rcv_msg) as we either run a do or a dump and
don't have to create a "full" op there.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/genetlink.h
net/batman-adv/netlink.c
net/core/devlink.c
net/core/drop_monitor.c
net/ieee802154/nl802154.c
net/netlink/genetlink.c
net/wireless/nl80211.c