genetlink: switch control commands to per-op policies
In preparation for adding a new attribute to CTRL_CMD_GETPOLICY split the policies for getpolicy and getfamily apart. This will cause a slight user-visible change in that dumping the policies will switch from per family to per op, but supposedly sniffer-type applications (which are the main use case for policy dumping thus far) should support both, anyway. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8e1ed28fd8
commit
a4bb4f5fc8
|
@ -1016,7 +1016,7 @@ ctrl_build_mcgrp_msg(const struct genl_family *family,
|
|||
return skb;
|
||||
}
|
||||
|
||||
static const struct nla_policy ctrl_policy[CTRL_ATTR_MAX+1] = {
|
||||
static const struct nla_policy ctrl_policy_family[] = {
|
||||
[CTRL_ATTR_FAMILY_ID] = { .type = NLA_U16 },
|
||||
[CTRL_ATTR_FAMILY_NAME] = { .type = NLA_NUL_STRING,
|
||||
.len = GENL_NAMSIZ - 1 },
|
||||
|
@ -1115,6 +1115,12 @@ struct ctrl_dump_policy_ctx {
|
|||
u16 fam_id;
|
||||
};
|
||||
|
||||
static const struct nla_policy ctrl_policy_policy[] = {
|
||||
[CTRL_ATTR_FAMILY_ID] = { .type = NLA_U16 },
|
||||
[CTRL_ATTR_FAMILY_NAME] = { .type = NLA_NUL_STRING,
|
||||
.len = GENL_NAMSIZ - 1 },
|
||||
};
|
||||
|
||||
static int ctrl_dumppolicy_start(struct netlink_callback *cb)
|
||||
{
|
||||
const struct genl_dumpit_info *info = genl_dumpit_info(cb);
|
||||
|
@ -1196,11 +1202,15 @@ static const struct genl_ops genl_ctrl_ops[] = {
|
|||
{
|
||||
.cmd = CTRL_CMD_GETFAMILY,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.policy = ctrl_policy_family,
|
||||
.maxattr = ARRAY_SIZE(ctrl_policy_family) - 1,
|
||||
.doit = ctrl_getfamily,
|
||||
.dumpit = ctrl_dumpfamily,
|
||||
},
|
||||
{
|
||||
.cmd = CTRL_CMD_GETPOLICY,
|
||||
.policy = ctrl_policy_policy,
|
||||
.maxattr = ARRAY_SIZE(ctrl_policy_policy) - 1,
|
||||
.start = ctrl_dumppolicy_start,
|
||||
.dumpit = ctrl_dumppolicy,
|
||||
.done = ctrl_dumppolicy_done,
|
||||
|
@ -1220,8 +1230,6 @@ static struct genl_family genl_ctrl __ro_after_init = {
|
|||
.id = GENL_ID_CTRL,
|
||||
.name = "nlctrl",
|
||||
.version = 0x2,
|
||||
.maxattr = CTRL_ATTR_MAX,
|
||||
.policy = ctrl_policy,
|
||||
.netnsok = true,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue