mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-08 14:13:53 +00:00
netkit: Simplify netkit mode over to use NLA_POLICY_MAX
Jakub suggested to rely on netlink policy validation via NLA_POLICY_MAX() instead of open-coding it. netkit_check_mode() is a candidate which can be simplified through this as well aside from the netkit scrubbing one. Suggested-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Cc: Nikolay Aleksandrov <razor@blackwall.org> Acked-by: Nikolay Aleksandrov <razor@blackwall.org> Link: https://lore.kernel.org/r/20241004101335.117711-2-daniel@iogearbox.net Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
This commit is contained in:
parent
83134ef460
commit
0ebe224ffc
@ -311,20 +311,6 @@ static int netkit_check_policy(int policy, struct nlattr *tb,
|
||||
}
|
||||
}
|
||||
|
||||
static int netkit_check_mode(int mode, struct nlattr *tb,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
switch (mode) {
|
||||
case NETKIT_L2:
|
||||
case NETKIT_L3:
|
||||
return 0;
|
||||
default:
|
||||
NL_SET_ERR_MSG_ATTR(extack, tb,
|
||||
"Provided device mode can only be L2 or L3");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static int netkit_validate(struct nlattr *tb[], struct nlattr *data[],
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
@ -360,13 +346,8 @@ static int netkit_new_link(struct net *src_net, struct net_device *dev,
|
||||
int err;
|
||||
|
||||
if (data) {
|
||||
if (data[IFLA_NETKIT_MODE]) {
|
||||
attr = data[IFLA_NETKIT_MODE];
|
||||
mode = nla_get_u32(attr);
|
||||
err = netkit_check_mode(mode, attr, extack);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
if (data[IFLA_NETKIT_MODE])
|
||||
mode = nla_get_u32(data[IFLA_NETKIT_MODE]);
|
||||
if (data[IFLA_NETKIT_PEER_INFO]) {
|
||||
attr = data[IFLA_NETKIT_PEER_INFO];
|
||||
ifmp = nla_data(attr);
|
||||
@ -976,7 +957,7 @@ static int netkit_fill_info(struct sk_buff *skb, const struct net_device *dev)
|
||||
|
||||
static const struct nla_policy netkit_policy[IFLA_NETKIT_MAX + 1] = {
|
||||
[IFLA_NETKIT_PEER_INFO] = { .len = sizeof(struct ifinfomsg) },
|
||||
[IFLA_NETKIT_MODE] = { .type = NLA_U32 },
|
||||
[IFLA_NETKIT_MODE] = NLA_POLICY_MAX(NLA_U32, NETKIT_L3),
|
||||
[IFLA_NETKIT_POLICY] = { .type = NLA_U32 },
|
||||
[IFLA_NETKIT_PEER_POLICY] = { .type = NLA_U32 },
|
||||
[IFLA_NETKIT_SCRUB] = NLA_POLICY_MAX(NLA_U32, NETKIT_SCRUB_DEFAULT),
|
||||
|
Loading…
Reference in New Issue
Block a user