lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 6 May 2020 12:30:28 -0400
From:   Murali Karicheri <m-karicheri2@...com>
To:     <davem@...emloft.net>, <kuba@...nel.org>, <netdev@...r.kernel.org>,
        <linux-kernel@...r.kernel.org>, <linux-api@...r.kernel.org>,
        <nsekhar@...com>, <grygorii.strashko@...com>
Subject: [net-next RFC PATCH 08/13] net: hsr: migrate HSR netlink socket code to use new common API

Migrate the existing netlink socket code to the use the new common API.

Signed-off-by: Murali Karicheri <m-karicheri2@...com>
---
 net/hsr-prp/hsr_netlink.c | 123 +++++++++++++++++++-------------------
 net/hsr-prp/hsr_netlink.h |   2 +-
 2 files changed, 64 insertions(+), 61 deletions(-)

diff --git a/net/hsr-prp/hsr_netlink.c b/net/hsr-prp/hsr_netlink.c
index fbfa98aee13c..1f7c3be8d96e 100644
--- a/net/hsr-prp/hsr_netlink.c
+++ b/net/hsr-prp/hsr_netlink.c
@@ -15,13 +15,13 @@
 #include "hsr_prp_device.h"
 #include "hsr_prp_framereg.h"
 
-static const struct nla_policy hsr_policy[IFLA_HSR_MAX + 1] = {
-	[IFLA_HSR_SLAVE1]		= { .type = NLA_U32 },
-	[IFLA_HSR_SLAVE2]		= { .type = NLA_U32 },
-	[IFLA_HSR_MULTICAST_SPEC]	= { .type = NLA_U8 },
-	[IFLA_HSR_VERSION]	= { .type = NLA_U8 },
-	[IFLA_HSR_SUPERVISION_ADDR]	= { .len = ETH_ALEN },
-	[IFLA_HSR_SEQ_NR]		= { .type = NLA_U16 },
+static const struct nla_policy hsr_policy[IFLA_HSR_PRP_MAX + 1] = {
+	[IFLA_HSR_PRP_SLAVE1]		= { .type = NLA_U32 },
+	[IFLA_HSR_PRP_SLAVE2]		= { .type = NLA_U32 },
+	[IFLA_HSR_PRP_SF_MC_ADDR_LSB]	= { .type = NLA_U8 },
+	[IFLA_HSR_PRP_VERSION]	= { .type = NLA_U8 },
+	[IFLA_HSR_PRP_SF_MC_ADDR]	= { .len = ETH_ALEN },
+	[IFLA_HSR_PRP_SEQ_NR]		= { .type = NLA_U16 },
 };
 
 /* Here, it seems a netdevice has already been allocated for us, and the
@@ -38,22 +38,22 @@ static int hsr_newlink(struct net *src_net, struct net_device *dev,
 		NL_SET_ERR_MSG_MOD(extack, "No slave devices specified");
 		return -EINVAL;
 	}
-	if (!data[IFLA_HSR_SLAVE1]) {
+	if (!data[IFLA_HSR_PRP_SLAVE1]) {
 		NL_SET_ERR_MSG_MOD(extack, "Slave1 device not specified");
 		return -EINVAL;
 	}
 	link[0] = __dev_get_by_index(src_net,
-				     nla_get_u32(data[IFLA_HSR_SLAVE1]));
+				     nla_get_u32(data[IFLA_HSR_PRP_SLAVE1]));
 	if (!link[0]) {
 		NL_SET_ERR_MSG_MOD(extack, "Slave1 does not exist");
 		return -EINVAL;
 	}
-	if (!data[IFLA_HSR_SLAVE2]) {
+	if (!data[IFLA_HSR_PRP_SLAVE2]) {
 		NL_SET_ERR_MSG_MOD(extack, "Slave2 device not specified");
 		return -EINVAL;
 	}
 	link[1] = __dev_get_by_index(src_net,
-				     nla_get_u32(data[IFLA_HSR_SLAVE2]));
+				     nla_get_u32(data[IFLA_HSR_PRP_SLAVE2]));
 	if (!link[1]) {
 		NL_SET_ERR_MSG_MOD(extack, "Slave2 does not exist");
 		return -EINVAL;
@@ -64,15 +64,15 @@ static int hsr_newlink(struct net *src_net, struct net_device *dev,
 		return -EINVAL;
 	}
 
-	if (!data[IFLA_HSR_MULTICAST_SPEC])
+	if (!data[IFLA_HSR_PRP_SF_MC_ADDR_LSB])
 		multicast_spec = 0;
 	else
-		multicast_spec = nla_get_u8(data[IFLA_HSR_MULTICAST_SPEC]);
+		multicast_spec = nla_get_u8(data[IFLA_HSR_PRP_SF_MC_ADDR_LSB]);
 
-	if (!data[IFLA_HSR_VERSION]) {
+	if (!data[IFLA_HSR_PRP_VERSION]) {
 		hsr_version = 0;
 	} else {
-		hsr_version = nla_get_u8(data[IFLA_HSR_VERSION]);
+		hsr_version = nla_get_u8(data[IFLA_HSR_PRP_VERSION]);
 		if (hsr_version > 1) {
 			NL_SET_ERR_MSG_MOD(extack,
 					   "Only versions 0..1 are supported");
@@ -91,19 +91,19 @@ static int hsr_fill_info(struct sk_buff *skb, const struct net_device *dev)
 
 	port = hsr_prp_get_port(priv, HSR_PRP_PT_SLAVE_A);
 	if (port) {
-		if (nla_put_u32(skb, IFLA_HSR_SLAVE1, port->dev->ifindex))
+		if (nla_put_u32(skb, IFLA_HSR_PRP_SLAVE1, port->dev->ifindex))
 			goto nla_put_failure;
 	}
 
 	port = hsr_prp_get_port(priv, HSR_PRP_PT_SLAVE_B);
 	if (port) {
-		if (nla_put_u32(skb, IFLA_HSR_SLAVE2, port->dev->ifindex))
+		if (nla_put_u32(skb, IFLA_HSR_PRP_SLAVE2, port->dev->ifindex))
 			goto nla_put_failure;
 	}
 
-	if (nla_put(skb, IFLA_HSR_SUPERVISION_ADDR, ETH_ALEN,
+	if (nla_put(skb, IFLA_HSR_PRP_SF_MC_ADDR, ETH_ALEN,
 		    priv->sup_multicast_addr) ||
-	    nla_put_u16(skb, IFLA_HSR_SEQ_NR, priv->sequence_nr))
+	    nla_put_u16(skb, IFLA_HSR_PRP_SEQ_NR, priv->sequence_nr))
 		goto nla_put_failure;
 
 	return 0;
@@ -114,7 +114,7 @@ static int hsr_fill_info(struct sk_buff *skb, const struct net_device *dev)
 
 static struct rtnl_link_ops hsr_link_ops __read_mostly = {
 	.kind		= "hsr",
-	.maxtype	= IFLA_HSR_MAX,
+	.maxtype	= IFLA_HSR_PRP_MAX,
 	.policy		= hsr_policy,
 	.priv_size	= sizeof(struct hsr_prp_priv),
 	.setup		= hsr_prp_dev_setup,
@@ -123,14 +123,14 @@ static struct rtnl_link_ops hsr_link_ops __read_mostly = {
 };
 
 /* attribute policy */
-static const struct nla_policy hsr_genl_policy[HSR_A_MAX + 1] = {
-	[HSR_A_NODE_ADDR] = { .len = ETH_ALEN },
-	[HSR_A_NODE_ADDR_B] = { .len = ETH_ALEN },
-	[HSR_A_IFINDEX] = { .type = NLA_U32 },
-	[HSR_A_IF1_AGE] = { .type = NLA_U32 },
-	[HSR_A_IF2_AGE] = { .type = NLA_U32 },
-	[HSR_A_IF1_SEQ] = { .type = NLA_U16 },
-	[HSR_A_IF2_SEQ] = { .type = NLA_U16 },
+static const struct nla_policy hsr_genl_policy[HSR_PRP_A_MAX + 1] = {
+	[HSR_PRP_A_NODE_ADDR] = { .len = ETH_ALEN },
+	[HSR_PRP_A_NODE_ADDR_B] = { .len = ETH_ALEN },
+	[HSR_PRP_A_IFINDEX] = { .type = NLA_U32 },
+	[HSR_PRP_A_IF1_AGE] = { .type = NLA_U32 },
+	[HSR_PRP_A_IF2_AGE] = { .type = NLA_U32 },
+	[HSR_PRP_A_IF1_SEQ] = { .type = NLA_U16 },
+	[HSR_PRP_A_IF2_SEQ] = { .type = NLA_U16 },
 };
 
 static struct genl_family hsr_genl_family;
@@ -157,15 +157,15 @@ void hsr_nl_ringerror(struct hsr_prp_priv *priv,
 		goto fail;
 
 	msg_head = genlmsg_put(skb, 0, 0, &hsr_genl_family, 0,
-			       HSR_C_RING_ERROR);
+			       HSR_PRP_C_RING_ERROR);
 	if (!msg_head)
 		goto nla_put_failure;
 
-	res = nla_put(skb, HSR_A_NODE_ADDR, ETH_ALEN, addr);
+	res = nla_put(skb, HSR_PRP_A_NODE_ADDR, ETH_ALEN, addr);
 	if (res < 0)
 		goto nla_put_failure;
 
-	res = nla_put_u32(skb, HSR_A_IFINDEX, port->dev->ifindex);
+	res = nla_put_u32(skb, HSR_PRP_A_IFINDEX, port->dev->ifindex);
 	if (res < 0)
 		goto nla_put_failure;
 
@@ -199,11 +199,12 @@ void hsr_nl_nodedown(struct hsr_prp_priv *priv,
 	if (!skb)
 		goto fail;
 
-	msg_head = genlmsg_put(skb, 0, 0, &hsr_genl_family, 0, HSR_C_NODE_DOWN);
+	msg_head = genlmsg_put(skb, 0, 0, &hsr_genl_family, 0,
+			       HSR_PRP_C_NODE_DOWN);
 	if (!msg_head)
 		goto nla_put_failure;
 
-	res = nla_put(skb, HSR_A_NODE_ADDR, ETH_ALEN, addr);
+	res = nla_put(skb, HSR_PRP_A_NODE_ADDR, ETH_ALEN, addr);
 	if (res < 0)
 		goto nla_put_failure;
 
@@ -222,7 +223,7 @@ void hsr_nl_nodedown(struct hsr_prp_priv *priv,
 	rcu_read_unlock();
 }
 
-/* HSR_C_GET_NODE_STATUS lets userspace query the internal HSR node table
+/* HSR_PRP_C_GET_NODE_STATUS lets userspace query the internal HSR node table
  * about the status of a specific node in the network, defined by its MAC
  * address.
  *
@@ -252,16 +253,17 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info)
 	if (!info)
 		goto invalid;
 
-	na = info->attrs[HSR_A_IFINDEX];
+	na = info->attrs[HSR_PRP_A_IFINDEX];
 	if (!na)
 		goto invalid;
-	na = info->attrs[HSR_A_NODE_ADDR];
+	na = info->attrs[HSR_PRP_A_NODE_ADDR];
 	if (!na)
 		goto invalid;
 
 	rcu_read_lock();
-	hsr_dev = dev_get_by_index_rcu(genl_info_net(info),
-				       nla_get_u32(info->attrs[HSR_A_IFINDEX]));
+	hsr_dev =
+	dev_get_by_index_rcu(genl_info_net(info),
+			     nla_get_u32(info->attrs[HSR_PRP_A_IFINDEX]));
 	if (!hsr_dev)
 		goto rcu_unlock;
 	if (!is_hsr_prp_master(hsr_dev))
@@ -276,20 +278,20 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info)
 
 	msg_head = genlmsg_put(skb_out, NETLINK_CB(skb_in).portid,
 			       info->snd_seq, &hsr_genl_family, 0,
-			       HSR_C_SET_NODE_STATUS);
+			       HSR_PRP_C_SET_NODE_STATUS);
 	if (!msg_head) {
 		res = -ENOMEM;
 		goto nla_put_failure;
 	}
 
-	res = nla_put_u32(skb_out, HSR_A_IFINDEX, hsr_dev->ifindex);
+	res = nla_put_u32(skb_out, HSR_PRP_A_IFINDEX, hsr_dev->ifindex);
 	if (res < 0)
 		goto nla_put_failure;
 
 	priv = netdev_priv(hsr_dev);
 	res = hsr_prp_get_node_data(priv,
 				    (unsigned char *)
-				    nla_data(info->attrs[HSR_A_NODE_ADDR]),
+				    nla_data(info->attrs[HSR_PRP_A_NODE_ADDR]),
 					     node_addr_b,
 					     &addr_b_ifindex,
 					     &hsr_node_if1_age,
@@ -299,45 +301,45 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info)
 	if (res < 0)
 		goto nla_put_failure;
 
-	res = nla_put(skb_out, HSR_A_NODE_ADDR, ETH_ALEN,
-		      nla_data(info->attrs[HSR_A_NODE_ADDR]));
+	res = nla_put(skb_out, HSR_PRP_A_NODE_ADDR, ETH_ALEN,
+		      nla_data(info->attrs[HSR_PRP_A_NODE_ADDR]));
 	if (res < 0)
 		goto nla_put_failure;
 
 	if (addr_b_ifindex > -1) {
-		res = nla_put(skb_out, HSR_A_NODE_ADDR_B, ETH_ALEN,
+		res = nla_put(skb_out, HSR_PRP_A_NODE_ADDR_B, ETH_ALEN,
 			      node_addr_b);
 		if (res < 0)
 			goto nla_put_failure;
 
-		res = nla_put_u32(skb_out, HSR_A_ADDR_B_IFINDEX,
+		res = nla_put_u32(skb_out, HSR_PRP_A_ADDR_B_IFINDEX,
 				  addr_b_ifindex);
 		if (res < 0)
 			goto nla_put_failure;
 	}
 
-	res = nla_put_u32(skb_out, HSR_A_IF1_AGE, hsr_node_if1_age);
+	res = nla_put_u32(skb_out, HSR_PRP_A_IF1_AGE, hsr_node_if1_age);
 	if (res < 0)
 		goto nla_put_failure;
-	res = nla_put_u16(skb_out, HSR_A_IF1_SEQ, hsr_node_if1_seq);
+	res = nla_put_u16(skb_out, HSR_PRP_A_IF1_SEQ, hsr_node_if1_seq);
 	if (res < 0)
 		goto nla_put_failure;
 	port = hsr_prp_get_port(priv, HSR_PRP_PT_SLAVE_A);
 	if (port)
-		res = nla_put_u32(skb_out, HSR_A_IF1_IFINDEX,
+		res = nla_put_u32(skb_out, HSR_PRP_A_IF1_IFINDEX,
 				  port->dev->ifindex);
 	if (res < 0)
 		goto nla_put_failure;
 
-	res = nla_put_u32(skb_out, HSR_A_IF2_AGE, hsr_node_if2_age);
+	res = nla_put_u32(skb_out, HSR_PRP_A_IF2_AGE, hsr_node_if2_age);
 	if (res < 0)
 		goto nla_put_failure;
-	res = nla_put_u16(skb_out, HSR_A_IF2_SEQ, hsr_node_if2_seq);
+	res = nla_put_u16(skb_out, HSR_PRP_A_IF2_SEQ, hsr_node_if2_seq);
 	if (res < 0)
 		goto nla_put_failure;
 	port = hsr_prp_get_port(priv, HSR_PRP_PT_SLAVE_B);
 	if (port)
-		res = nla_put_u32(skb_out, HSR_A_IF2_IFINDEX,
+		res = nla_put_u32(skb_out, HSR_PRP_A_IF2_IFINDEX,
 				  port->dev->ifindex);
 	if (res < 0)
 		goto nla_put_failure;
@@ -381,13 +383,14 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info)
 	if (!info)
 		goto invalid;
 
-	na = info->attrs[HSR_A_IFINDEX];
+	na = info->attrs[HSR_PRP_A_IFINDEX];
 	if (!na)
 		goto invalid;
 
 	rcu_read_lock();
-	hsr_dev = dev_get_by_index_rcu(genl_info_net(info),
-				       nla_get_u32(info->attrs[HSR_A_IFINDEX]));
+	hsr_dev =
+	dev_get_by_index_rcu(genl_info_net(info),
+			     nla_get_u32(info->attrs[HSR_PRP_A_IFINDEX]));
 	if (!hsr_dev)
 		goto rcu_unlock;
 	if (!is_hsr_prp_master(hsr_dev))
@@ -403,14 +406,14 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info)
 
 	msg_head = genlmsg_put(skb_out, NETLINK_CB(skb_in).portid,
 			       info->snd_seq, &hsr_genl_family, 0,
-			       HSR_C_SET_NODE_LIST);
+			       HSR_PRP_C_SET_NODE_LIST);
 	if (!msg_head) {
 		res = -ENOMEM;
 		goto nla_put_failure;
 	}
 
 	if (!restart) {
-		res = nla_put_u32(skb_out, HSR_A_IFINDEX, hsr_dev->ifindex);
+		res = nla_put_u32(skb_out, HSR_PRP_A_IFINDEX, hsr_dev->ifindex);
 		if (res < 0)
 			goto nla_put_failure;
 	}
@@ -420,7 +423,7 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info)
 	if (!pos)
 		pos = hsr_prp_get_next_node(priv, NULL, addr);
 	while (pos) {
-		res = nla_put(skb_out, HSR_A_NODE_ADDR, ETH_ALEN, addr);
+		res = nla_put(skb_out, HSR_PRP_A_NODE_ADDR, ETH_ALEN, addr);
 		if (res < 0) {
 			if (res == -EMSGSIZE) {
 				genlmsg_end(skb_out, msg_head);
@@ -457,14 +460,14 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info)
 
 static const struct genl_ops hsr_ops[] = {
 	{
-		.cmd = HSR_C_GET_NODE_STATUS,
+		.cmd = HSR_PRP_C_GET_NODE_STATUS,
 		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
 		.flags = 0,
 		.doit = hsr_get_node_status,
 		.dumpit = NULL,
 	},
 	{
-		.cmd = HSR_C_GET_NODE_LIST,
+		.cmd = HSR_PRP_C_GET_NODE_LIST,
 		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
 		.flags = 0,
 		.doit = hsr_get_node_list,
@@ -476,7 +479,7 @@ static struct genl_family hsr_genl_family __ro_after_init = {
 	.hdrsize = 0,
 	.name = "HSR",
 	.version = 1,
-	.maxattr = HSR_A_MAX,
+	.maxattr = HSR_PRP_A_MAX,
 	.policy = hsr_genl_policy,
 	.netnsok = true,
 	.module = THIS_MODULE,
diff --git a/net/hsr-prp/hsr_netlink.h b/net/hsr-prp/hsr_netlink.h
index ae7a1c0de80d..df3d1acb08e0 100644
--- a/net/hsr-prp/hsr_netlink.h
+++ b/net/hsr-prp/hsr_netlink.h
@@ -10,7 +10,7 @@
 
 #include <linux/if_ether.h>
 #include <linux/module.h>
-#include <uapi/linux/hsr_netlink.h>
+#include <uapi/linux/hsr_prp_netlink.h>
 
 struct hsr_prp_priv;
 struct hsr_prp_port;
-- 
2.17.1

Powered by blists - more mailing lists