public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: Sven Eckelmann <sven@narfation.org>
To: b.a.t.m.a.n@lists.open-mesh.org, Andrew Lunn <andrew@lunn.ch>
Subject: Re: [B.A.T.M.A.N.] [PATCHv4 00/12] netns and netlink support
Date: Mon, 09 May 2016 20:50:58 +0200	[thread overview]
Message-ID: <1495261.OkJHpVOaGk@bentobox> (raw)
In-Reply-To: <1680132.z76VCK1c2R@bentobox>


[-- Attachment #1.1: Type: text/plain, Size: 23044 bytes --]

=2D-nextPart1707506.UTlYUNyO3a
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="us-ascii"

On Monday 09 May 2016 20:29:21 Sven Eckelmann wrote:
> On Monday 09 May 2016 20:07:07 Andrew Lunn wrote:
> > This patchset completes netns support, by disabling debugfs entries
> > when not in the default name space, and correctly handling interface
> > stack loops when the parent is in a different name space.
> > 
> > It additionally adds netlink support for most of the information found
> > in debugfs, and is netns awaire.
> 
> Attached is a tarball with the v4 version rebased on the two initial patches
> from the tp_meter patchset. The patches include many TODOs in the kernel-doc
> which should be replaced with actual docs.
> 
> The batctl patch was not yet rebased.

Just tried it and it is not really a big thing to rebase batctl. I have again
taken the initial two patches of the tp_meter patchset.

I hope this helps to reduce the conflicts (even when not resolving it
completely) between the tp_meter and the netlink patchset.

Kind regards,
	Sven
=2D-nextPart1707506.UTlYUNyO3a
Content-Disposition: attachment; filename="andrew_netlink-ecsv_netlink-batctl.diff"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="UTF-8"; name="andrew_netlink-ecsv_netlink-batctl.diff"

diff --git a/Makefile b/Makefile
index 60795f7..3fa21f4 100755
=2D-- a/Makefile
+++ b/Makefile
@@ -24,7 +24,20 @@ export CONFIG_BATCTL_BISECT=n
 
 # batctl build
 BINARY_NAME = batctl
=2DOBJ = main.o bat-hosts.o functions.o sys.o debug.o ping.o traceroute.o tcpdump.o  hash.o debugfs.o ioctl.o list-batman.o translate.o netlink.o
+OBJ += bat-hosts.o
+OBJ += debugfs.o
+OBJ += debug.o
+OBJ += functions.o
+OBJ += hash.o
+OBJ += ioctl.o
+OBJ += list-batman.o
+OBJ += main.o
+OBJ += netlink.o
+OBJ += ping.o
+OBJ += sys.o
+OBJ += tcpdump.o
+OBJ += traceroute.o
+OBJ += translate.o
 OBJ_BISECT = bisect_iv.o
 MANPAGE = man/batctl.8
 
diff --git a/batman_adv.h b/batman_adv.h
index 6a97a2c..4c8e526 100644
=2D-- a/batman_adv.h
+++ b/batman_adv.h
@@ -56,7 +56,44 @@ enum batadv_tt_client_flags {
 	BATADV_TT_CLIENT_TEMP	 = (1 << 11),
 };
 
=2Denum {
+/**
+ * enum batadv_nl_attrs - batman-adv netlink attributes
+ *
+ * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
+ * @BATADV_ATTR_VERSION: batman-adv version string
+ * @BATADV_ATTR_ALGO_NAME: name of routing algorithm
+ * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
+ * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
+ * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
+ * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
+ * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
+ * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv interface
+ * @BATADV_ATTR_ACTIVE: TODO
+ * @BATADV_ATTR_ORIG_ADDRESS: TODO
+ * @BATADV_ATTR_TT_ADDRESS: TODO
+ * @BATADV_ATTR_TT_TTVN: TODO
+ * @BATADV_ATTR_TT_LAST_TTVN: TODO
+ * @BATADV_ATTR_TT_CRC32: TODO
+ * @BATADV_ATTR_TT_VID: TODO
+ * @BATADV_ATTR_TT_FLAGS: TODO
+ * @BATADV_ATTR_FLAG_BEST: TODO
+ * @BATADV_ATTR_LAST_SEEN_MSECS: TODO
+ * @BATADV_ATTR_NEIGH_ADDRESS: TODO
+ * @BATADV_ATTR_TQ: TODO
+ * @BATADV_ATTR_THROUGHPUT: TODO
+ * @BATADV_ATTR_BANDWIDTH_UP: TODO
+ * @BATADV_ATTR_BANDWIDTH_DOWN: TODO
+ * @BATADV_ATTR_ROUTER: TODO
+ * @BATADV_ATTR_BLA_OWN: TODO
+ * @BATADV_ATTR_BLA_ADDRESS: TODO
+ * @BATADV_ATTR_BLA_VID: TODO
+ * @BATADV_ATTR_BLA_BACKBONE: TODO
+ * @BATADV_ATTR_BLA_CRC: TODO
+ * @__BATADV_ATTR_AFTER_LAST: internal use
+ * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
+ * @BATADV_ATTR_MAX: highest attribute number currently defined
+ */
+enum batadv_nl_attrs {
 	BATADV_ATTR_UNSPEC,
 	BATADV_ATTR_VERSION,
 	BATADV_ATTR_ALGO_NAME,
@@ -87,15 +124,32 @@ enum {
 	BATADV_ATTR_BLA_VID,
 	BATADV_ATTR_BLA_BACKBONE,
 	BATADV_ATTR_BLA_CRC,
=2D	__BATADV_ATTR_MAX,
+	/* add attributes above here, update the policy in netlink.c */
+	__BATADV_ATTR_AFTER_LAST,
+	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
+	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
 };
 
=2D#define BATADV_ATTR_MAX (__BATADV_ATTR_MAX - 1)
=2D
=2Denum {
+/**
+ * enum batadv_nl_commands - supported batman-adv netlink commands
+ *
+ * @BATADV_CMD_UNSPEC: unspecified command to catch errors
+ * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
+ * @BATADV_CMD_GET_ROUTING_ALGOS: TODO
+ * @BATADV_CMD_GET_HARDIFS: TODO
+ * @BATADV_CMD_GET_TRANSTABLE_LOCAL: TODO
+ * @BATADV_CMD_GET_TRANSTABLE_GLOBAL: TODO
+ * @BATADV_CMD_GET_ORIGINATORS: TODO
+ * @BATADV_CMD_GET_NEIGHBORS: TODO
+ * @BATADV_CMD_GET_GATEWAYS: TODO
+ * @BATADV_CMD_GET_BLA_CLAIM: TODO
+ * @__BATADV_CMD_AFTER_LAST: internal use
+ * @BATADV_CMD_MAX: highest used command number
+ */
+enum batadv_nl_commands {
 	BATADV_CMD_UNSPEC,
=2D	BATADV_CMD_GET_ROUTING_ALGOS,
 	BATADV_CMD_GET_MESH_INFO,
+	BATADV_CMD_GET_ROUTING_ALGOS,
 	BATADV_CMD_GET_HARDIFS,
 	BATADV_CMD_GET_TRANSTABLE_LOCAL,
 	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
@@ -103,9 +157,9 @@ enum {
 	BATADV_CMD_GET_NEIGHBORS,
 	BATADV_CMD_GET_GATEWAYS,
 	BATADV_CMD_GET_BLA_CLAIM,
=2D	__BATADV_CMD_MAX,
+	/* add new commands above here */
+	__BATADV_CMD_AFTER_LAST,
+	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
 };
 
=2D#define BATADV_CMD_MAX (__BATADV_CMD_MAX - 1)
=2D
 #endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
diff --git a/netlink.c b/netlink.c
index e09166c..de2fd8a 100644
=2D-- a/netlink.c
+++ b/netlink.c
@@ -1,3 +1,27 @@
+/*
+ * Copyright (C) 2009-2016  B.A.T.M.A.N. contributors:
+ *
+ * Andrew Lunn <andrew@lunn.ch>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA
+ *
+ */
+
+#include "netlink.h"
+#include "main.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -23,7 +47,7 @@ struct print_opts {
 	float watch_interval;
 };
 
=2Dstatic struct nla_policy policy[BATADV_ATTR_MAX+1] = {
+static struct nla_policy batadv_netlink_policy[NUM_BATADV_ATTR] = {
 	[BATADV_ATTR_VERSION]		= { .type = NLA_STRING },
 	[BATADV_ATTR_ALGO_NAME]		= { .type = NLA_STRING },
 	[BATADV_ATTR_MESH_IFINDEX]	= { .type = NLA_U32 },
@@ -145,7 +169,7 @@ static int info_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -247,7 +271,7 @@ static int routing_algos_callback(struct nl_msg *msg, void *arg __unused)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -336,7 +360,7 @@ static int originators_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -470,7 +494,7 @@ static int neighbors_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -561,7 +585,7 @@ static int transglobal_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -657,7 +681,7 @@ static int translocal_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -757,7 +781,7 @@ static int gateways_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -836,7 +860,7 @@ static int bla_claim_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
=2D		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}

=2D-nextPart1707506.UTlYUNyO3a
Content-Disposition: attachment; filename="rebased_split_netlink-batctl.tar.gz"
Content-Transfer-Encoding: base64
Content-Type: application/x-compressed-tar; name="rebased_split_netlink-batctl.tar.gz"

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

=2D-nextPart1707506.UTlYUNyO3a--
This is a multi-part message in MIME format.

[-- Attachment #1.2: Type: text/plain, Size: 963 bytes --]

On Monday 09 May 2016 20:29:21 Sven Eckelmann wrote:
> On Monday 09 May 2016 20:07:07 Andrew Lunn wrote:
> > This patchset completes netns support, by disabling debugfs entries
> > when not in the default name space, and correctly handling interface
> > stack loops when the parent is in a different name space.
> > 
> > It additionally adds netlink support for most of the information found
> > in debugfs, and is netns awaire.
> 
> Attached is a tarball with the v4 version rebased on the two initial patches
> from the tp_meter patchset. The patches include many TODOs in the kernel-doc
> which should be replaced with actual docs.
> 
> The batctl patch was not yet rebased.

Just tried it and it is not really a big thing to rebase batctl. I have again
taken the initial two patches of the tp_meter patchset.

I hope this helps to reduce the conflicts (even when not resolving it
completely) between the tp_meter and the netlink patchset.

Kind regards,
	Sven

[-- Attachment #1.3: andrew_netlink-ecsv_netlink-batctl.diff --]
[-- Type: text/x-patch, Size: 8053 bytes --]

diff --git a/Makefile b/Makefile
index 60795f7..3fa21f4 100755
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,20 @@ export CONFIG_BATCTL_BISECT=n
 
 # batctl build
 BINARY_NAME = batctl
-OBJ = main.o bat-hosts.o functions.o sys.o debug.o ping.o traceroute.o tcpdump.o  hash.o debugfs.o ioctl.o list-batman.o translate.o netlink.o
+OBJ += bat-hosts.o
+OBJ += debugfs.o
+OBJ += debug.o
+OBJ += functions.o
+OBJ += hash.o
+OBJ += ioctl.o
+OBJ += list-batman.o
+OBJ += main.o
+OBJ += netlink.o
+OBJ += ping.o
+OBJ += sys.o
+OBJ += tcpdump.o
+OBJ += traceroute.o
+OBJ += translate.o
 OBJ_BISECT = bisect_iv.o
 MANPAGE = man/batctl.8
 
diff --git a/batman_adv.h b/batman_adv.h
index 6a97a2c..4c8e526 100644
--- a/batman_adv.h
+++ b/batman_adv.h
@@ -56,7 +56,44 @@ enum batadv_tt_client_flags {
 	BATADV_TT_CLIENT_TEMP	 = (1 << 11),
 };
 
-enum {
+/**
+ * enum batadv_nl_attrs - batman-adv netlink attributes
+ *
+ * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
+ * @BATADV_ATTR_VERSION: batman-adv version string
+ * @BATADV_ATTR_ALGO_NAME: name of routing algorithm
+ * @BATADV_ATTR_MESH_IFINDEX: index of the batman-adv interface
+ * @BATADV_ATTR_MESH_IFNAME: name of the batman-adv interface
+ * @BATADV_ATTR_MESH_ADDRESS: mac address of the batman-adv interface
+ * @BATADV_ATTR_HARD_IFINDEX: index of the non-batman-adv interface
+ * @BATADV_ATTR_HARD_IFNAME: name of the non-batman-adv interface
+ * @BATADV_ATTR_HARD_ADDRESS: mac address of the non-batman-adv interface
+ * @BATADV_ATTR_ACTIVE: TODO
+ * @BATADV_ATTR_ORIG_ADDRESS: TODO
+ * @BATADV_ATTR_TT_ADDRESS: TODO
+ * @BATADV_ATTR_TT_TTVN: TODO
+ * @BATADV_ATTR_TT_LAST_TTVN: TODO
+ * @BATADV_ATTR_TT_CRC32: TODO
+ * @BATADV_ATTR_TT_VID: TODO
+ * @BATADV_ATTR_TT_FLAGS: TODO
+ * @BATADV_ATTR_FLAG_BEST: TODO
+ * @BATADV_ATTR_LAST_SEEN_MSECS: TODO
+ * @BATADV_ATTR_NEIGH_ADDRESS: TODO
+ * @BATADV_ATTR_TQ: TODO
+ * @BATADV_ATTR_THROUGHPUT: TODO
+ * @BATADV_ATTR_BANDWIDTH_UP: TODO
+ * @BATADV_ATTR_BANDWIDTH_DOWN: TODO
+ * @BATADV_ATTR_ROUTER: TODO
+ * @BATADV_ATTR_BLA_OWN: TODO
+ * @BATADV_ATTR_BLA_ADDRESS: TODO
+ * @BATADV_ATTR_BLA_VID: TODO
+ * @BATADV_ATTR_BLA_BACKBONE: TODO
+ * @BATADV_ATTR_BLA_CRC: TODO
+ * @__BATADV_ATTR_AFTER_LAST: internal use
+ * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
+ * @BATADV_ATTR_MAX: highest attribute number currently defined
+ */
+enum batadv_nl_attrs {
 	BATADV_ATTR_UNSPEC,
 	BATADV_ATTR_VERSION,
 	BATADV_ATTR_ALGO_NAME,
@@ -87,15 +124,32 @@ enum {
 	BATADV_ATTR_BLA_VID,
 	BATADV_ATTR_BLA_BACKBONE,
 	BATADV_ATTR_BLA_CRC,
-	__BATADV_ATTR_MAX,
+	/* add attributes above here, update the policy in netlink.c */
+	__BATADV_ATTR_AFTER_LAST,
+	NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
+	BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
 };
 
-#define BATADV_ATTR_MAX (__BATADV_ATTR_MAX - 1)
-
-enum {
+/**
+ * enum batadv_nl_commands - supported batman-adv netlink commands
+ *
+ * @BATADV_CMD_UNSPEC: unspecified command to catch errors
+ * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
+ * @BATADV_CMD_GET_ROUTING_ALGOS: TODO
+ * @BATADV_CMD_GET_HARDIFS: TODO
+ * @BATADV_CMD_GET_TRANSTABLE_LOCAL: TODO
+ * @BATADV_CMD_GET_TRANSTABLE_GLOBAL: TODO
+ * @BATADV_CMD_GET_ORIGINATORS: TODO
+ * @BATADV_CMD_GET_NEIGHBORS: TODO
+ * @BATADV_CMD_GET_GATEWAYS: TODO
+ * @BATADV_CMD_GET_BLA_CLAIM: TODO
+ * @__BATADV_CMD_AFTER_LAST: internal use
+ * @BATADV_CMD_MAX: highest used command number
+ */
+enum batadv_nl_commands {
 	BATADV_CMD_UNSPEC,
-	BATADV_CMD_GET_ROUTING_ALGOS,
 	BATADV_CMD_GET_MESH_INFO,
+	BATADV_CMD_GET_ROUTING_ALGOS,
 	BATADV_CMD_GET_HARDIFS,
 	BATADV_CMD_GET_TRANSTABLE_LOCAL,
 	BATADV_CMD_GET_TRANSTABLE_GLOBAL,
@@ -103,9 +157,9 @@ enum {
 	BATADV_CMD_GET_NEIGHBORS,
 	BATADV_CMD_GET_GATEWAYS,
 	BATADV_CMD_GET_BLA_CLAIM,
-	__BATADV_CMD_MAX,
+	/* add new commands above here */
+	__BATADV_CMD_AFTER_LAST,
+	BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
 };
 
-#define BATADV_CMD_MAX (__BATADV_CMD_MAX - 1)
-
 #endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
diff --git a/netlink.c b/netlink.c
index e09166c..de2fd8a 100644
--- a/netlink.c
+++ b/netlink.c
@@ -1,3 +1,27 @@
+/*
+ * Copyright (C) 2009-2016  B.A.T.M.A.N. contributors:
+ *
+ * Andrew Lunn <andrew@lunn.ch>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA
+ *
+ */
+
+#include "netlink.h"
+#include "main.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -23,7 +47,7 @@ struct print_opts {
 	float watch_interval;
 };
 
-static struct nla_policy policy[BATADV_ATTR_MAX+1] = {
+static struct nla_policy batadv_netlink_policy[NUM_BATADV_ATTR] = {
 	[BATADV_ATTR_VERSION]		= { .type = NLA_STRING },
 	[BATADV_ATTR_ALGO_NAME]		= { .type = NLA_STRING },
 	[BATADV_ATTR_MESH_IFINDEX]	= { .type = NLA_U32 },
@@ -145,7 +169,7 @@ static int info_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -247,7 +271,7 @@ static int routing_algos_callback(struct nl_msg *msg, void *arg __unused)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -336,7 +360,7 @@ static int originators_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -470,7 +494,7 @@ static int neighbors_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -561,7 +585,7 @@ static int transglobal_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -657,7 +681,7 @@ static int translocal_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -757,7 +781,7 @@ static int gateways_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}
@@ -836,7 +860,7 @@ static int bla_claim_callback(struct nl_msg *msg, void *arg)
 		return NL_OK;
 
 	if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
-		      genlmsg_len(ghdr), policy)) {
+		      genlmsg_len(ghdr), batadv_netlink_policy)) {
 		fputs("Received invalid data from kernel.\n", stderr);
 		exit(1);
 	}

[-- Attachment #1.4: rebased_split_netlink-batctl.tar.gz --]
[-- Type: application/x-compressed-tar, Size: 9860 bytes --]

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2016-05-09 18:50 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-09 18:07 [B.A.T.M.A.N.] [PATCHv4 00/12] netns and netlink support Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 01/12] batman-adv: Handle parent interfaces in a different netns Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 02/12] batman-adv: compat.h: Add workaround for get_link_net() Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 03/12] batman-adv: Suppress debugfs entries for netns's Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 04/12] batman-adv: add generic netlink query API to replace debugfs files Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 05/12] batman-adv: compat: Workarounds for previous patch Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 06/12] batman-adv: netlink: add translation table query Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 07/12] batman-adv: netlink: add originator and neighbor table queries Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 08/12] batman-adv: add B.A.T.M.A.N. IV bat_{orig, neigh}_dump implementations Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 09/12] batman-adv: add B.A.T.M.A.N. V " Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 10/12] batman-adv: Indicate netlink socket can be used with netns Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 11/12] batman-adv: add B.A.T.M.A.N. Dump gateways via netlink Andrew Lunn
2016-05-09 18:07 ` [B.A.T.M.A.N.] [PATCHv4 12/12] batman-adv: add B.A.T.M.A.N. Dump BLA claims " Andrew Lunn
2016-05-09 18:29 ` [B.A.T.M.A.N.] [PATCHv4 00/12] netns and netlink support Sven Eckelmann
2016-05-09 18:50   ` Sven Eckelmann [this message]
2016-05-09 19:06     ` Andrew Lunn
2016-05-10  7:00       ` Sven Eckelmann
2016-05-10  9:25         ` Sven Eckelmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1495261.OkJHpVOaGk@bentobox \
    --to=sven@narfation.org \
    --cc=andrew@lunn.ch \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox