summaryrefslogtreecommitdiff
path: root/drivers/vlan_mon
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2019-12-24 14:50:04 +0300
committerDmitry Kozlov <xeb@mail.ru>2019-12-24 14:50:04 +0300
commit4d837cc3bd92493732f2c598560e9e83c82f9b9e (patch)
tree5484fbf0fc3dcedd82bd601a7a3f7458c25dc932 /drivers/vlan_mon
parentfe7c3a4b74b9f1ed57d22316069602acd4794265 (diff)
downloadaccel-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.c37
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 = {