mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
genetlink: make policy common to family
Since maxattr is common, the policy can't really differ sanely,
so make it common as well.
The only user that did in fact manage to make a non-common policy
is taskstats, which has to be really careful about it (since it's
still using a common maxattr!). This is no longer supported, but
we can fake it using pre_doit.
This reduces the size of e.g. nl80211.o (which has lots of commands):
text data bss dec hex filename
398745 14323 2240 415308 6564c net/wireless/nl80211.o (before)
397913 14331 2240 414484 65314 net/wireless/nl80211.o (after)
--------------------------------
-832 +8 0 -824
Which is obviously just 8 bytes for each command, and an added 8
bytes for the new policy pointer. I'm not sure why the ops list is
counted as .text though.
Most of the code transformations were done using the following spatch:
@ops@
identifier OPS;
expression POLICY;
@@
struct genl_ops OPS[] = {
...,
{
- .policy = POLICY,
},
...
};
@@
identifier ops.OPS;
expression ops.POLICY;
identifier fam;
expression M;
@@
struct genl_family fam = {
.ops = OPS,
.maxattr = M,
+ .policy = POLICY,
...
};
This also gets rid of devlink_nl_cmd_region_read_dumpit() accessing
the cb->data as ops, which we want to change in a later genl patch.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
601ed4d6dc
commit
3b0f31f2b8
@@ -1999,22 +1999,18 @@ out:
|
||||
static const struct genl_ops nbd_connect_genl_ops[] = {
|
||||
{
|
||||
.cmd = NBD_CMD_CONNECT,
|
||||
.policy = nbd_attr_policy,
|
||||
.doit = nbd_genl_connect,
|
||||
},
|
||||
{
|
||||
.cmd = NBD_CMD_DISCONNECT,
|
||||
.policy = nbd_attr_policy,
|
||||
.doit = nbd_genl_disconnect,
|
||||
},
|
||||
{
|
||||
.cmd = NBD_CMD_RECONFIGURE,
|
||||
.policy = nbd_attr_policy,
|
||||
.doit = nbd_genl_reconfigure,
|
||||
},
|
||||
{
|
||||
.cmd = NBD_CMD_STATUS,
|
||||
.policy = nbd_attr_policy,
|
||||
.doit = nbd_genl_status,
|
||||
},
|
||||
};
|
||||
@@ -2031,6 +2027,7 @@ static struct genl_family nbd_genl_family __ro_after_init = {
|
||||
.ops = nbd_connect_genl_ops,
|
||||
.n_ops = ARRAY_SIZE(nbd_connect_genl_ops),
|
||||
.maxattr = NBD_ATTR_MAX,
|
||||
.policy = nbd_attr_policy,
|
||||
.mcgrps = nbd_mcast_grps,
|
||||
.n_mcgrps = ARRAY_SIZE(nbd_mcast_grps),
|
||||
};
|
||||
|
||||
@@ -1271,20 +1271,17 @@ static const struct genl_ops gtp_genl_ops[] = {
|
||||
{
|
||||
.cmd = GTP_CMD_NEWPDP,
|
||||
.doit = gtp_genl_new_pdp,
|
||||
.policy = gtp_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = GTP_CMD_DELPDP,
|
||||
.doit = gtp_genl_del_pdp,
|
||||
.policy = gtp_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = GTP_CMD_GETPDP,
|
||||
.doit = gtp_genl_get_pdp,
|
||||
.dumpit = gtp_genl_dump_pdp,
|
||||
.policy = gtp_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
};
|
||||
@@ -1294,6 +1291,7 @@ static struct genl_family gtp_genl_family __ro_after_init = {
|
||||
.version = 0,
|
||||
.hdrsize = 0,
|
||||
.maxattr = GTPA_MAX,
|
||||
.policy = gtp_genl_policy,
|
||||
.netnsok = true,
|
||||
.module = THIS_MODULE,
|
||||
.ops = gtp_genl_ops,
|
||||
|
||||
@@ -598,37 +598,31 @@ static const struct nla_policy hwsim_genl_policy[MAC802154_HWSIM_ATTR_MAX + 1] =
|
||||
static const struct genl_ops hwsim_nl_ops[] = {
|
||||
{
|
||||
.cmd = MAC802154_HWSIM_CMD_NEW_RADIO,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_new_radio_nl,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MAC802154_HWSIM_CMD_DEL_RADIO,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_del_radio_nl,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MAC802154_HWSIM_CMD_GET_RADIO,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_get_radio_nl,
|
||||
.dumpit = hwsim_dump_radio_nl,
|
||||
},
|
||||
{
|
||||
.cmd = MAC802154_HWSIM_CMD_NEW_EDGE,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_new_edge_nl,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MAC802154_HWSIM_CMD_DEL_EDGE,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_del_edge_nl,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MAC802154_HWSIM_CMD_SET_EDGE,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_set_edge_lqi,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
@@ -638,6 +632,7 @@ static struct genl_family hwsim_genl_family __ro_after_init = {
|
||||
.name = "MAC802154_HWSIM",
|
||||
.version = 1,
|
||||
.maxattr = MAC802154_HWSIM_ATTR_MAX,
|
||||
.policy = hwsim_genl_policy,
|
||||
.module = THIS_MODULE,
|
||||
.ops = hwsim_nl_ops,
|
||||
.n_ops = ARRAY_SIZE(hwsim_nl_ops),
|
||||
|
||||
@@ -2637,60 +2637,50 @@ static const struct genl_ops macsec_genl_ops[] = {
|
||||
{
|
||||
.cmd = MACSEC_CMD_GET_TXSC,
|
||||
.dumpit = macsec_dump_txsc,
|
||||
.policy = macsec_genl_policy,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_ADD_RXSC,
|
||||
.doit = macsec_add_rxsc,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_DEL_RXSC,
|
||||
.doit = macsec_del_rxsc,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_UPD_RXSC,
|
||||
.doit = macsec_upd_rxsc,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_ADD_TXSA,
|
||||
.doit = macsec_add_txsa,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_DEL_TXSA,
|
||||
.doit = macsec_del_txsa,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_UPD_TXSA,
|
||||
.doit = macsec_upd_txsa,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_ADD_RXSA,
|
||||
.doit = macsec_add_rxsa,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_DEL_RXSA,
|
||||
.doit = macsec_del_rxsa,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = MACSEC_CMD_UPD_RXSA,
|
||||
.doit = macsec_upd_rxsa,
|
||||
.policy = macsec_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
};
|
||||
@@ -2700,6 +2690,7 @@ static struct genl_family macsec_fam __ro_after_init = {
|
||||
.hdrsize = 0,
|
||||
.version = MACSEC_GENL_VERSION,
|
||||
.maxattr = MACSEC_ATTR_MAX,
|
||||
.policy = macsec_genl_policy,
|
||||
.netnsok = true,
|
||||
.module = THIS_MODULE,
|
||||
.ops = macsec_genl_ops,
|
||||
|
||||
@@ -2725,24 +2725,20 @@ static const struct genl_ops team_nl_ops[] = {
|
||||
{
|
||||
.cmd = TEAM_CMD_NOOP,
|
||||
.doit = team_nl_cmd_noop,
|
||||
.policy = team_nl_policy,
|
||||
},
|
||||
{
|
||||
.cmd = TEAM_CMD_OPTIONS_SET,
|
||||
.doit = team_nl_cmd_options_set,
|
||||
.policy = team_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = TEAM_CMD_OPTIONS_GET,
|
||||
.doit = team_nl_cmd_options_get,
|
||||
.policy = team_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = TEAM_CMD_PORT_LIST_GET,
|
||||
.doit = team_nl_cmd_port_list_get,
|
||||
.policy = team_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
};
|
||||
@@ -2755,6 +2751,7 @@ static struct genl_family team_nl_family __ro_after_init = {
|
||||
.name = TEAM_GENL_NAME,
|
||||
.version = TEAM_GENL_VERSION,
|
||||
.maxattr = TEAM_ATTR_MAX,
|
||||
.policy = team_nl_policy,
|
||||
.netnsok = true,
|
||||
.module = THIS_MODULE,
|
||||
.ops = team_nl_ops,
|
||||
|
||||
@@ -3620,35 +3620,29 @@ done:
|
||||
static const struct genl_ops hwsim_ops[] = {
|
||||
{
|
||||
.cmd = HWSIM_CMD_REGISTER,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_register_received_nl,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = HWSIM_CMD_FRAME,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_cloned_frame_received_nl,
|
||||
},
|
||||
{
|
||||
.cmd = HWSIM_CMD_TX_INFO_FRAME,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_tx_info_frame_received_nl,
|
||||
},
|
||||
{
|
||||
.cmd = HWSIM_CMD_NEW_RADIO,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_new_radio_nl,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = HWSIM_CMD_DEL_RADIO,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_del_radio_nl,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = HWSIM_CMD_GET_RADIO,
|
||||
.policy = hwsim_genl_policy,
|
||||
.doit = hwsim_get_radio_nl,
|
||||
.dumpit = hwsim_dump_radio_nl,
|
||||
},
|
||||
@@ -3658,6 +3652,7 @@ static struct genl_family hwsim_genl_family __ro_after_init = {
|
||||
.name = "MAC80211_HWSIM",
|
||||
.version = 1,
|
||||
.maxattr = HWSIM_ATTR_MAX,
|
||||
.policy = hwsim_genl_policy,
|
||||
.netnsok = true,
|
||||
.module = THIS_MODULE,
|
||||
.ops = hwsim_ops,
|
||||
|
||||
@@ -442,25 +442,21 @@ static const struct genl_ops tcmu_genl_ops[] = {
|
||||
{
|
||||
.cmd = TCMU_CMD_SET_FEATURES,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = tcmu_attr_policy,
|
||||
.doit = tcmu_genl_set_features,
|
||||
},
|
||||
{
|
||||
.cmd = TCMU_CMD_ADDED_DEVICE_DONE,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = tcmu_attr_policy,
|
||||
.doit = tcmu_genl_add_dev_done,
|
||||
},
|
||||
{
|
||||
.cmd = TCMU_CMD_REMOVED_DEVICE_DONE,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = tcmu_attr_policy,
|
||||
.doit = tcmu_genl_rm_dev_done,
|
||||
},
|
||||
{
|
||||
.cmd = TCMU_CMD_RECONFIG_DEVICE_DONE,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = tcmu_attr_policy,
|
||||
.doit = tcmu_genl_reconfig_dev_done,
|
||||
},
|
||||
};
|
||||
@@ -472,6 +468,7 @@ static struct genl_family tcmu_genl_family __ro_after_init = {
|
||||
.name = "TCM-USER",
|
||||
.version = 2,
|
||||
.maxattr = TCMU_ATTR_MAX,
|
||||
.policy = tcmu_attr_policy,
|
||||
.mcgrps = tcmu_mcgrps,
|
||||
.n_mcgrps = ARRAY_SIZE(tcmu_mcgrps),
|
||||
.netnsok = true,
|
||||
|
||||
@@ -233,7 +233,6 @@ const char *CONCAT_(GENL_MAGIC_FAMILY, _genl_cmd_to_str)(__u8 cmd)
|
||||
{ \
|
||||
handler \
|
||||
.cmd = op_name, \
|
||||
.policy = CONCAT_(GENL_MAGIC_FAMILY, _tla_nl_policy), \
|
||||
},
|
||||
|
||||
#define ZZZ_genl_ops CONCAT_(GENL_MAGIC_FAMILY, _genl_ops)
|
||||
@@ -290,7 +289,8 @@ static struct genl_family ZZZ_genl_family __ro_after_init = {
|
||||
#ifdef GENL_MAGIC_FAMILY_HDRSZ
|
||||
.hdrsize = NLA_ALIGN(GENL_MAGIC_FAMILY_HDRSZ),
|
||||
#endif
|
||||
.maxattr = ARRAY_SIZE(drbd_tla_nl_policy)-1,
|
||||
.maxattr = ARRAY_SIZE(CONCAT_(GENL_MAGIC_FAMILY, _tla_nl_policy))-1,
|
||||
.policy = CONCAT_(GENL_MAGIC_FAMILY, _tla_nl_policy),
|
||||
.ops = ZZZ_genl_ops,
|
||||
.n_ops = ARRAY_SIZE(ZZZ_genl_ops),
|
||||
.mcgrps = ZZZ_genl_mcgrps,
|
||||
|
||||
@@ -26,6 +26,7 @@ struct genl_info;
|
||||
* @name: name of family
|
||||
* @version: protocol version
|
||||
* @maxattr: maximum number of attributes supported
|
||||
* @policy: netlink policy
|
||||
* @netnsok: set to true if the family can handle network
|
||||
* namespaces and should be presented in all of them
|
||||
* @parallel_ops: operations can be called in parallel and aren't
|
||||
@@ -56,6 +57,7 @@ struct genl_family {
|
||||
unsigned int maxattr;
|
||||
bool netnsok;
|
||||
bool parallel_ops;
|
||||
const struct nla_policy *policy;
|
||||
int (*pre_doit)(const struct genl_ops *ops,
|
||||
struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
@@ -124,14 +126,12 @@ static inline int genl_err_attr(struct genl_info *info, int err,
|
||||
* @cmd: command identifier
|
||||
* @internal_flags: flags used by the family
|
||||
* @flags: flags
|
||||
* @policy: attribute validation policy
|
||||
* @doit: standard command callback
|
||||
* @start: start callback for dumps
|
||||
* @dumpit: callback for dumpers
|
||||
* @done: completion callback for dumps
|
||||
*/
|
||||
struct genl_ops {
|
||||
const struct nla_policy *policy;
|
||||
int (*doit)(struct sk_buff *skb,
|
||||
struct genl_info *info);
|
||||
int (*start)(struct netlink_callback *cb);
|
||||
|
||||
@@ -650,16 +650,37 @@ static const struct genl_ops taskstats_ops[] = {
|
||||
{
|
||||
.cmd = TASKSTATS_CMD_GET,
|
||||
.doit = taskstats_user_cmd,
|
||||
.policy = taskstats_cmd_get_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
/* policy enforced later */
|
||||
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_HASPOL,
|
||||
},
|
||||
{
|
||||
.cmd = CGROUPSTATS_CMD_GET,
|
||||
.doit = cgroupstats_user_cmd,
|
||||
.policy = cgroupstats_cmd_get_policy,
|
||||
/* policy enforced later */
|
||||
.flags = GENL_CMD_CAP_HASPOL,
|
||||
},
|
||||
};
|
||||
|
||||
static int taskstats_pre_doit(const struct genl_ops *ops, struct sk_buff *skb,
|
||||
struct genl_info *info)
|
||||
{
|
||||
const struct nla_policy *policy = NULL;
|
||||
|
||||
switch (ops->cmd) {
|
||||
case TASKSTATS_CMD_GET:
|
||||
policy = taskstats_cmd_get_policy;
|
||||
break;
|
||||
case CGROUPSTATS_CMD_GET:
|
||||
policy = cgroupstats_cmd_get_policy;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return nlmsg_validate(info->nlhdr, GENL_HDRLEN, TASKSTATS_CMD_ATTR_MAX,
|
||||
policy, info->extack);
|
||||
}
|
||||
|
||||
static struct genl_family family __ro_after_init = {
|
||||
.name = TASKSTATS_GENL_NAME,
|
||||
.version = TASKSTATS_GENL_VERSION,
|
||||
@@ -667,6 +688,7 @@ static struct genl_family family __ro_after_init = {
|
||||
.module = THIS_MODULE,
|
||||
.ops = taskstats_ops,
|
||||
.n_ops = ARRAY_SIZE(taskstats_ops),
|
||||
.pre_doit = taskstats_pre_doit,
|
||||
};
|
||||
|
||||
/* Needed early in initialization */
|
||||
|
||||
@@ -1345,34 +1345,29 @@ static const struct genl_ops batadv_netlink_ops[] = {
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_MESH,
|
||||
/* can be retrieved by unprivileged users */
|
||||
.policy = batadv_netlink_policy,
|
||||
.doit = batadv_netlink_get_mesh,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_TP_METER,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.doit = batadv_netlink_tp_meter_start,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_TP_METER_CANCEL,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.doit = batadv_netlink_tp_meter_cancel,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_ROUTING_ALGOS,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_algo_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_HARDIF,
|
||||
/* can be retrieved by unprivileged users */
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_netlink_dump_hardif,
|
||||
.doit = batadv_netlink_get_hardif,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH |
|
||||
@@ -1381,68 +1376,57 @@ static const struct genl_ops batadv_netlink_ops[] = {
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_TRANSTABLE_LOCAL,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_tt_local_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_TRANSTABLE_GLOBAL,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_tt_global_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_ORIGINATORS,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_orig_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_NEIGHBORS,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_hardif_neigh_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_GATEWAYS,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_gw_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_BLA_CLAIM,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_bla_claim_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_BLA_BACKBONE,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_bla_backbone_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_DAT_CACHE,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_dat_cache_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_MCAST_FLAGS,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.dumpit = batadv_mcast_flags_dump,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_SET_MESH,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.doit = batadv_netlink_set_mesh,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH,
|
||||
},
|
||||
{
|
||||
.cmd = BATADV_CMD_SET_HARDIF,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.doit = batadv_netlink_set_hardif,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH |
|
||||
BATADV_FLAG_NEED_HARDIF,
|
||||
@@ -1450,7 +1434,6 @@ static const struct genl_ops batadv_netlink_ops[] = {
|
||||
{
|
||||
.cmd = BATADV_CMD_GET_VLAN,
|
||||
/* can be retrieved by unprivileged users */
|
||||
.policy = batadv_netlink_policy,
|
||||
.doit = batadv_netlink_get_vlan,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH |
|
||||
BATADV_FLAG_NEED_VLAN,
|
||||
@@ -1458,7 +1441,6 @@ static const struct genl_ops batadv_netlink_ops[] = {
|
||||
{
|
||||
.cmd = BATADV_CMD_SET_VLAN,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.policy = batadv_netlink_policy,
|
||||
.doit = batadv_netlink_set_vlan,
|
||||
.internal_flags = BATADV_FLAG_NEED_MESH |
|
||||
BATADV_FLAG_NEED_VLAN,
|
||||
@@ -1470,6 +1452,7 @@ struct genl_family batadv_netlink_family __ro_after_init = {
|
||||
.name = BATADV_NL_NAME,
|
||||
.version = 1,
|
||||
.maxattr = BATADV_ATTR_MAX,
|
||||
.policy = batadv_netlink_policy,
|
||||
.netnsok = true,
|
||||
.pre_doit = batadv_pre_doit,
|
||||
.post_doit = batadv_post_doit,
|
||||
|
||||
@@ -3640,7 +3640,6 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,
|
||||
struct netlink_callback *cb)
|
||||
{
|
||||
u64 ret_offset, start_offset, end_offset = 0;
|
||||
const struct genl_ops *ops = cb->data;
|
||||
struct devlink_region *region;
|
||||
struct nlattr *chunks_attr;
|
||||
const char *region_name;
|
||||
@@ -3657,7 +3656,8 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,
|
||||
return -ENOMEM;
|
||||
|
||||
err = nlmsg_parse(cb->nlh, GENL_HDRLEN + devlink_nl_family.hdrsize,
|
||||
attrs, DEVLINK_ATTR_MAX, ops->policy, cb->extack);
|
||||
attrs, DEVLINK_ATTR_MAX, devlink_nl_family.policy,
|
||||
cb->extack);
|
||||
if (err)
|
||||
goto out_free;
|
||||
|
||||
@@ -4923,7 +4923,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_GET,
|
||||
.doit = devlink_nl_cmd_get_doit,
|
||||
.dumpit = devlink_nl_cmd_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
@@ -4931,21 +4930,18 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_PORT_GET,
|
||||
.doit = devlink_nl_cmd_port_get_doit,
|
||||
.dumpit = devlink_nl_cmd_port_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_SET,
|
||||
.doit = devlink_nl_cmd_port_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_SPLIT,
|
||||
.doit = devlink_nl_cmd_port_split_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NO_LOCK,
|
||||
@@ -4953,7 +4949,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_UNSPLIT,
|
||||
.doit = devlink_nl_cmd_port_unsplit_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NO_LOCK,
|
||||
@@ -4962,7 +4957,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_SB_GET,
|
||||
.doit = devlink_nl_cmd_sb_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
/* can be retrieved by unprivileged users */
|
||||
@@ -4971,7 +4965,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_SB_POOL_GET,
|
||||
.doit = devlink_nl_cmd_sb_pool_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_pool_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
/* can be retrieved by unprivileged users */
|
||||
@@ -4979,7 +4972,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_POOL_SET,
|
||||
.doit = devlink_nl_cmd_sb_pool_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
@@ -4988,7 +4980,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_SB_PORT_POOL_GET,
|
||||
.doit = devlink_nl_cmd_sb_port_pool_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_port_pool_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
/* can be retrieved by unprivileged users */
|
||||
@@ -4996,7 +4987,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_PORT_POOL_SET,
|
||||
.doit = devlink_nl_cmd_sb_port_pool_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
@@ -5005,7 +4995,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET,
|
||||
.doit = devlink_nl_cmd_sb_tc_pool_bind_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_tc_pool_bind_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
/* can be retrieved by unprivileged users */
|
||||
@@ -5013,7 +5002,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_TC_POOL_BIND_SET,
|
||||
.doit = devlink_nl_cmd_sb_tc_pool_bind_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
@@ -5021,7 +5009,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_OCC_SNAPSHOT,
|
||||
.doit = devlink_nl_cmd_sb_occ_snapshot_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
@@ -5029,7 +5016,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_OCC_MAX_CLEAR,
|
||||
.doit = devlink_nl_cmd_sb_occ_max_clear_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NEED_SB,
|
||||
@@ -5037,14 +5023,12 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_ESWITCH_GET,
|
||||
.doit = devlink_nl_cmd_eswitch_get_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_ESWITCH_SET,
|
||||
.doit = devlink_nl_cmd_eswitch_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NO_LOCK,
|
||||
@@ -5052,49 +5036,42 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_TABLE_GET,
|
||||
.doit = devlink_nl_cmd_dpipe_table_get,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_ENTRIES_GET,
|
||||
.doit = devlink_nl_cmd_dpipe_entries_get,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_HEADERS_GET,
|
||||
.doit = devlink_nl_cmd_dpipe_headers_get,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
|
||||
.doit = devlink_nl_cmd_dpipe_table_counters_set,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RESOURCE_SET,
|
||||
.doit = devlink_nl_cmd_resource_set,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RESOURCE_DUMP,
|
||||
.doit = devlink_nl_cmd_resource_dump,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RELOAD,
|
||||
.doit = devlink_nl_cmd_reload,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NO_LOCK,
|
||||
@@ -5103,14 +5080,12 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_PARAM_GET,
|
||||
.doit = devlink_nl_cmd_param_get_doit,
|
||||
.dumpit = devlink_nl_cmd_param_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PARAM_SET,
|
||||
.doit = devlink_nl_cmd_param_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
@@ -5118,14 +5093,12 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_PORT_PARAM_GET,
|
||||
.doit = devlink_nl_cmd_port_param_get_doit,
|
||||
.dumpit = devlink_nl_cmd_port_param_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_PARAM_SET,
|
||||
.doit = devlink_nl_cmd_port_param_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
},
|
||||
@@ -5133,21 +5106,18 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_REGION_GET,
|
||||
.doit = devlink_nl_cmd_region_get_doit,
|
||||
.dumpit = devlink_nl_cmd_region_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_REGION_DEL,
|
||||
.doit = devlink_nl_cmd_region_del,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_REGION_READ,
|
||||
.dumpit = devlink_nl_cmd_region_read_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
@@ -5155,7 +5125,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_INFO_GET,
|
||||
.doit = devlink_nl_cmd_info_get_doit,
|
||||
.dumpit = devlink_nl_cmd_info_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
@@ -5163,35 +5132,30 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
.doit = devlink_nl_cmd_health_reporter_get_doit,
|
||||
.dumpit = devlink_nl_cmd_health_reporter_get_dumpit,
|
||||
.policy = devlink_nl_policy,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_SET,
|
||||
.doit = devlink_nl_cmd_health_reporter_set_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
|
||||
.doit = devlink_nl_cmd_health_reporter_recover_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
|
||||
.doit = devlink_nl_cmd_health_reporter_diagnose_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
|
||||
.doit = devlink_nl_cmd_health_reporter_dump_get_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NO_LOCK,
|
||||
@@ -5199,7 +5163,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
|
||||
.doit = devlink_nl_cmd_health_reporter_dump_clear_doit,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
DEVLINK_NL_FLAG_NO_LOCK,
|
||||
@@ -5207,7 +5170,6 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_FLASH_UPDATE,
|
||||
.doit = devlink_nl_cmd_flash_update,
|
||||
.policy = devlink_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
@@ -5217,6 +5179,7 @@ static struct genl_family devlink_nl_family __ro_after_init = {
|
||||
.name = DEVLINK_GENL_NAME,
|
||||
.version = DEVLINK_GENL_VERSION,
|
||||
.maxattr = DEVLINK_ATTR_MAX,
|
||||
.policy = devlink_nl_policy,
|
||||
.netnsok = true,
|
||||
.pre_doit = devlink_nl_pre_doit,
|
||||
.post_doit = devlink_nl_post_doit,
|
||||
|
||||
@@ -449,14 +449,12 @@ static const struct genl_ops hsr_ops[] = {
|
||||
{
|
||||
.cmd = HSR_C_GET_NODE_STATUS,
|
||||
.flags = 0,
|
||||
.policy = hsr_genl_policy,
|
||||
.doit = hsr_get_node_status,
|
||||
.dumpit = NULL,
|
||||
},
|
||||
{
|
||||
.cmd = HSR_C_GET_NODE_LIST,
|
||||
.flags = 0,
|
||||
.policy = hsr_genl_policy,
|
||||
.doit = hsr_get_node_list,
|
||||
.dumpit = NULL,
|
||||
},
|
||||
@@ -467,6 +465,7 @@ static struct genl_family hsr_genl_family __ro_after_init = {
|
||||
.name = "HSR",
|
||||
.version = 1,
|
||||
.maxattr = HSR_A_MAX,
|
||||
.policy = hsr_genl_policy,
|
||||
.module = THIS_MODULE,
|
||||
.ops = hsr_ops,
|
||||
.n_ops = ARRAY_SIZE(hsr_ops),
|
||||
|
||||
@@ -20,7 +20,6 @@ void ieee802154_nl_exit(void);
|
||||
#define IEEE802154_OP(_cmd, _func) \
|
||||
{ \
|
||||
.cmd = _cmd, \
|
||||
.policy = ieee802154_policy, \
|
||||
.doit = _func, \
|
||||
.dumpit = NULL, \
|
||||
.flags = GENL_ADMIN_PERM, \
|
||||
@@ -29,7 +28,6 @@ void ieee802154_nl_exit(void);
|
||||
#define IEEE802154_DUMP(_cmd, _func, _dump) \
|
||||
{ \
|
||||
.cmd = _cmd, \
|
||||
.policy = ieee802154_policy, \
|
||||
.doit = _func, \
|
||||
.dumpit = _dump, \
|
||||
}
|
||||
|
||||
@@ -136,6 +136,7 @@ struct genl_family nl802154_family __ro_after_init = {
|
||||
.name = IEEE802154_NL_NAME,
|
||||
.version = 1,
|
||||
.maxattr = IEEE802154_ATTR_MAX,
|
||||
.policy = ieee802154_policy,
|
||||
.module = THIS_MODULE,
|
||||
.ops = ieee802154_ops,
|
||||
.n_ops = ARRAY_SIZE(ieee802154_ops),
|
||||
|
||||
@@ -2220,7 +2220,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
.doit = nl802154_get_wpan_phy,
|
||||
.dumpit = nl802154_dump_wpan_phy,
|
||||
.done = nl802154_dump_wpan_phy_done,
|
||||
.policy = nl802154_policy,
|
||||
/* can be retrieved by unprivileged users */
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_PHY |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2229,7 +2228,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
.cmd = NL802154_CMD_GET_INTERFACE,
|
||||
.doit = nl802154_get_interface,
|
||||
.dumpit = nl802154_dump_interface,
|
||||
.policy = nl802154_policy,
|
||||
/* can be retrieved by unprivileged users */
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_DEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2237,7 +2235,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_NEW_INTERFACE,
|
||||
.doit = nl802154_new_interface,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_PHY |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2245,7 +2242,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_DEL_INTERFACE,
|
||||
.doit = nl802154_del_interface,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_DEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2253,7 +2249,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_CHANNEL,
|
||||
.doit = nl802154_set_channel,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_PHY |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2261,7 +2256,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_CCA_MODE,
|
||||
.doit = nl802154_set_cca_mode,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_PHY |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2269,7 +2263,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_CCA_ED_LEVEL,
|
||||
.doit = nl802154_set_cca_ed_level,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_PHY |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2277,7 +2270,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_TX_POWER,
|
||||
.doit = nl802154_set_tx_power,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_PHY |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2285,7 +2277,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_WPAN_PHY_NETNS,
|
||||
.doit = nl802154_wpan_phy_netns,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_WPAN_PHY |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2293,7 +2284,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_PAN_ID,
|
||||
.doit = nl802154_set_pan_id,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2301,7 +2291,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_SHORT_ADDR,
|
||||
.doit = nl802154_set_short_addr,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2309,7 +2298,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_BACKOFF_EXPONENT,
|
||||
.doit = nl802154_set_backoff_exponent,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2317,7 +2305,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_MAX_CSMA_BACKOFFS,
|
||||
.doit = nl802154_set_max_csma_backoffs,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2325,7 +2312,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_MAX_FRAME_RETRIES,
|
||||
.doit = nl802154_set_max_frame_retries,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2333,7 +2319,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_LBT_MODE,
|
||||
.doit = nl802154_set_lbt_mode,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2341,7 +2326,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_ACKREQ_DEFAULT,
|
||||
.doit = nl802154_set_ackreq_default,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2350,7 +2334,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_SET_SEC_PARAMS,
|
||||
.doit = nl802154_set_llsec_params,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2359,7 +2342,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
.cmd = NL802154_CMD_GET_SEC_KEY,
|
||||
/* TODO .doit by matching key id? */
|
||||
.dumpit = nl802154_dump_llsec_key,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2367,7 +2349,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_NEW_SEC_KEY,
|
||||
.doit = nl802154_add_llsec_key,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2375,7 +2356,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_DEL_SEC_KEY,
|
||||
.doit = nl802154_del_llsec_key,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2385,7 +2365,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
.cmd = NL802154_CMD_GET_SEC_DEV,
|
||||
/* TODO .doit by matching extended_addr? */
|
||||
.dumpit = nl802154_dump_llsec_dev,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2393,7 +2372,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_NEW_SEC_DEV,
|
||||
.doit = nl802154_add_llsec_dev,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2401,7 +2379,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_DEL_SEC_DEV,
|
||||
.doit = nl802154_del_llsec_dev,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2411,7 +2388,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
.cmd = NL802154_CMD_GET_SEC_DEVKEY,
|
||||
/* TODO doit by matching ??? */
|
||||
.dumpit = nl802154_dump_llsec_devkey,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2419,7 +2395,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_NEW_SEC_DEVKEY,
|
||||
.doit = nl802154_add_llsec_devkey,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2427,7 +2402,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_DEL_SEC_DEVKEY,
|
||||
.doit = nl802154_del_llsec_devkey,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2436,7 +2410,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
.cmd = NL802154_CMD_GET_SEC_LEVEL,
|
||||
/* TODO .doit by matching frame_type? */
|
||||
.dumpit = nl802154_dump_llsec_seclevel,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2444,7 +2417,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
{
|
||||
.cmd = NL802154_CMD_NEW_SEC_LEVEL,
|
||||
.doit = nl802154_add_llsec_seclevel,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2453,7 +2425,6 @@ static const struct genl_ops nl802154_ops[] = {
|
||||
.cmd = NL802154_CMD_DEL_SEC_LEVEL,
|
||||
/* TODO match frame_type only? */
|
||||
.doit = nl802154_del_llsec_seclevel,
|
||||
.policy = nl802154_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = NL802154_FLAG_NEED_NETDEV |
|
||||
NL802154_FLAG_NEED_RTNL,
|
||||
@@ -2466,6 +2437,7 @@ static struct genl_family nl802154_fam __ro_after_init = {
|
||||
.hdrsize = 0, /* no private header */
|
||||
.version = 1, /* no particular meaning now */
|
||||
.maxattr = NL802154_ATTR_MAX,
|
||||
.policy = nl802154_policy,
|
||||
.netnsok = true,
|
||||
.pre_doit = nl802154_pre_doit,
|
||||
.post_doit = nl802154_post_doit,
|
||||
|
||||
@@ -808,20 +808,17 @@ static const struct genl_ops fou_nl_ops[] = {
|
||||
{
|
||||
.cmd = FOU_CMD_ADD,
|
||||
.doit = fou_nl_cmd_add_port,
|
||||
.policy = fou_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = FOU_CMD_DEL,
|
||||
.doit = fou_nl_cmd_rm_port,
|
||||
.policy = fou_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = FOU_CMD_GET,
|
||||
.doit = fou_nl_cmd_get_port,
|
||||
.dumpit = fou_nl_dump,
|
||||
.policy = fou_nl_policy,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -830,6 +827,7 @@ static struct genl_family fou_nl_family __ro_after_init = {
|
||||
.name = FOU_GENL_NAME,
|
||||
.version = FOU_GENL_VERSION,
|
||||
.maxattr = FOU_ATTR_MAX,
|
||||
.policy = fou_nl_policy,
|
||||
.netnsok = true,
|
||||
.module = THIS_MODULE,
|
||||
.ops = fou_nl_ops,
|
||||
|
||||
@@ -953,12 +953,10 @@ static const struct genl_ops tcp_metrics_nl_ops[] = {
|
||||
.cmd = TCP_METRICS_CMD_GET,
|
||||
.doit = tcp_metrics_nl_cmd_get,
|
||||
.dumpit = tcp_metrics_nl_dump,
|
||||
.policy = tcp_metrics_nl_policy,
|
||||
},
|
||||
{
|
||||
.cmd = TCP_METRICS_CMD_DEL,
|
||||
.doit = tcp_metrics_nl_cmd_del,
|
||||
.policy = tcp_metrics_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
};
|
||||
@@ -968,6 +966,7 @@ static struct genl_family tcp_metrics_nl_family __ro_after_init = {
|
||||
.name = TCP_METRICS_GENL_NAME,
|
||||
.version = TCP_METRICS_GENL_VERSION,
|
||||
.maxattr = TCP_METRICS_ATTR_MAX,
|
||||
.policy = tcp_metrics_nl_policy,
|
||||
.netnsok = true,
|
||||
.module = THIS_MODULE,
|
||||
.ops = tcp_metrics_nl_ops,
|
||||
|
||||
@@ -17,19 +17,16 @@ static const struct genl_ops ila_nl_ops[] = {
|
||||
{
|
||||
.cmd = ILA_CMD_ADD,
|
||||
.doit = ila_xlat_nl_cmd_add_mapping,
|
||||
.policy = ila_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = ILA_CMD_DEL,
|
||||
.doit = ila_xlat_nl_cmd_del_mapping,
|
||||
.policy = ila_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = ILA_CMD_FLUSH,
|
||||
.doit = ila_xlat_nl_cmd_flush,
|
||||
.policy = ila_nl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
@@ -38,7 +35,6 @@ static const struct genl_ops ila_nl_ops[] = {
|
||||
.start = ila_xlat_nl_dump_start,
|
||||
.dumpit = ila_xlat_nl_dump,
|
||||
.done = ila_xlat_nl_dump_done,
|
||||
.policy = ila_nl_policy,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -49,6 +45,7 @@ struct genl_family ila_nl_family __ro_after_init = {
|
||||
.name = ILA_GENL_NAME,
|
||||
.version = ILA_GENL_VERSION,
|
||||
.maxattr = ILA_ATTR_MAX,
|
||||
.policy = ila_nl_policy,
|
||||
.netnsok = true,
|
||||
.parallel_ops = true,
|
||||
.module = THIS_MODULE,
|
||||
|
||||
@@ -399,7 +399,6 @@ static const struct genl_ops seg6_genl_ops[] = {
|
||||
{
|
||||
.cmd = SEG6_CMD_SETHMAC,
|
||||
.doit = seg6_genl_sethmac,
|
||||
.policy = seg6_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
@@ -407,19 +406,16 @@ static const struct genl_ops seg6_genl_ops[] = {
|
||||
.start = seg6_genl_dumphmac_start,
|
||||
.dumpit = seg6_genl_dumphmac,
|
||||
.done = seg6_genl_dumphmac_done,
|
||||
.policy = seg6_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = SEG6_CMD_SET_TUNSRC,
|
||||
.doit = seg6_genl_set_tunsrc,
|
||||
.policy = seg6_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
{
|
||||
.cmd = SEG6_CMD_GET_TUNSRC,
|
||||
.doit = seg6_genl_get_tunsrc,
|
||||
.policy = seg6_genl_policy,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
},
|
||||
};
|
||||
@@ -429,6 +425,7 @@ static struct genl_family seg6_genl_family __ro_after_init = {
|
||||
.name = SEG6_GENL_NAME,
|
||||
.version = SEG6_GENL_VERSION,
|
||||
.maxattr = SEG6_ATTR_MAX,
|
||||
.policy = seg6_genl_policy,
|
||||
.netnsok = true,
|
||||
.parallel_ops = true,
|
||||
.ops = seg6_genl_ops,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user