diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2019-12-24 14:50:04 +0300 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2019-12-24 14:50:04 +0300 |
commit | 4d837cc3bd92493732f2c598560e9e83c82f9b9e (patch) | |
tree | 5484fbf0fc3dcedd82bd601a7a3f7458c25dc932 /drivers/vlan_mon | |
parent | fe7c3a4b74b9f1ed57d22316069602acd4794265 (diff) | |
download | accel-ppp-xebd-4d837cc3bd92493732f2c598560e9e83c82f9b9e.tar.gz accel-ppp-xebd-4d837cc3bd92493732f2c598560e9e83c82f9b9e.zip |
ipoe,vlan_mon: add support for kernels 5.2+
Diffstat (limited to 'drivers/vlan_mon')
-rw-r--r-- | drivers/vlan_mon/vlan_mon.c | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/drivers/vlan_mon/vlan_mon.c b/drivers/vlan_mon/vlan_mon.c index b6476d4..271f2ff 100644 --- a/drivers/vlan_mon/vlan_mon.c +++ b/drivers/vlan_mon/vlan_mon.c @@ -43,6 +43,10 @@ #define vlan_tx_tag_present(skb) skb_vlan_tag_present(skb) #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0) +#define nla_nest_start_noflag(skb, attr) nla_nest_start(skb, attr) +#endif + struct vlan_dev { unsigned int magic; int ifindex; @@ -198,13 +202,13 @@ static void vlan_do_notify(struct work_struct *w) #if LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0) && RHEL_MAJOR < 7 header = genlmsg_put(report_skb, 0, vlan_mon_nl_mcg.id, &vlan_mon_nl_family, 0, VLAN_MON_NOTIFY); #else - header = genlmsg_put(report_skb, 0, vlan_mon_nl_family.mcgrp_offset, &vlan_mon_nl_family, 0, VLAN_MON_NOTIFY); + header = genlmsg_put(report_skb, 0, 0, &vlan_mon_nl_family, 0, VLAN_MON_NOTIFY); #endif } //pr_info("notify %i vlan %i\n", id, n->vid); - ns = nla_nest_start(report_skb, id++); + ns = nla_nest_start_noflag(report_skb, id++); if (!ns) goto nl_err; @@ -616,7 +620,7 @@ static int vlan_mon_nl_cmd_check_busy(struct sk_buff *skb, struct genl_info *inf return ret; } -static struct nla_policy vlan_mon_nl_policy[VLAN_MON_ATTR_MAX + 1] = { +static const struct nla_policy vlan_mon_nl_policy[VLAN_MON_ATTR_MAX + 1] = { [VLAN_MON_ATTR_NONE] = { .type = NLA_UNSPEC, }, [VLAN_MON_ATTR_VLAN_MASK] = { .type = NLA_BINARY, .len = 4096/8 }, [VLAN_MON_ATTR_PROTO] = { .type = NLA_U16, }, @@ -624,42 +628,54 @@ static struct nla_policy vlan_mon_nl_policy[VLAN_MON_ATTR_MAX + 1] = { [VLAN_MON_ATTR_VID] = { .type = NLA_U16, }, }; -static struct genl_ops vlan_mon_nl_ops[] = { +static const struct genl_ops vlan_mon_nl_ops[] = { { .cmd = VLAN_MON_CMD_NOOP, .doit = vlan_mon_nl_cmd_noop, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0) .policy = vlan_mon_nl_policy, +#endif /* can be retrieved by unprivileged users */ }, { .cmd = VLAN_MON_CMD_ADD, .doit = vlan_mon_nl_cmd_add_vlan_mon, - .policy = vlan_mon_nl_policy, .flags = GENL_ADMIN_PERM, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0) + .policy = vlan_mon_nl_policy, +#endif }, { .cmd = VLAN_MON_CMD_ADD_VID, .doit = vlan_mon_nl_cmd_add_vlan_mon_vid, - .policy = vlan_mon_nl_policy, .flags = GENL_ADMIN_PERM, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0) + .policy = vlan_mon_nl_policy, +#endif }, { .cmd = VLAN_MON_CMD_DEL, .doit = vlan_mon_nl_cmd_del_vlan_mon, - .policy = vlan_mon_nl_policy, .flags = GENL_ADMIN_PERM, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0) + .policy = vlan_mon_nl_policy, +#endif }, { .cmd = VLAN_MON_CMD_CHECK_BUSY, .doit = vlan_mon_nl_cmd_check_busy, - .policy = vlan_mon_nl_policy, .flags = GENL_ADMIN_PERM, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0) + .policy = vlan_mon_nl_policy, +#endif }, { .cmd = VLAN_MON_CMD_DEL_VID, .doit = vlan_mon_nl_cmd_del_vlan_mon_vid, - .policy = vlan_mon_nl_policy, .flags = GENL_ADMIN_PERM, +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,2,0) + .policy = vlan_mon_nl_policy, +#endif }, }; @@ -688,6 +704,9 @@ static struct genl_family vlan_mon_nl_family = { .mcgrps = vlan_mon_nl_mcgs, .n_mcgrps = ARRAY_SIZE(vlan_mon_nl_mcgs), #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0) + .policy = vlan_mon_nl_policy, +#endif }; static struct packet_type vlan_pt __read_mostly = { |