[B.A.T.M.A.N.] [PATCH v3 4/4] batctl: add netlink dump function for multicast flags table

2018-03-13 Thread Linus Lüssing
Signed-off-by: Linus Lüssing 
---
 debug.c   |   1 +
 netlink.c | 143 ++
 netlink.h |   2 +
 3 files changed, 146 insertions(+)

diff --git a/debug.c b/debug.c
index 5f9a87b..63fb633 100644
--- a/debug.c
+++ b/debug.c
@@ -100,6 +100,7 @@ const struct debug_table_data 
batctl_debug_tables[BATCTL_TABLE_NUM] = {
.opt_short = "mf",
.debugfs_name = "mcast_flags",
.header_lines = 6,
+   .netlink_fn = netlink_print_mcast_flags,
},
 };
 
diff --git a/netlink.c b/netlink.c
index 124ff67..ab7be1e 100644
--- a/netlink.c
+++ b/netlink.c
@@ -123,10 +123,14 @@ struct nla_policy batadv_netlink_policy[NUM_BATADV_ATTR] 
= {
.minlen = ETH_ALEN,
.maxlen = ETH_ALEN },
[BATADV_ATTR_DAT_CACHE_VID] = { .type = NLA_U16 },
+   [BATADV_ATTR_MCAST_FLAGS]   = { .type = NLA_U32 },
+   [BATADV_ATTR_MCAST_FLAGS_PRIV]  = { .type = NLA_U32 },
 };
 
 static int last_err;
 static char algo_name_buf[256] = "";
+static int64_t mcast_flags = -EOPNOTSUPP;
+static int64_t mcast_flags_priv = -EOPNOTSUPP;
 
 static int missing_mandatory_attrs(struct nlattr *attrs[],
   const int mandatory[], int num)
@@ -240,6 +244,16 @@ static int info_callback(struct nl_msg *msg, void *arg)
if (attrs[BATADV_ATTR_BLA_CRC])
bla_group_id = nla_get_u16(attrs[BATADV_ATTR_BLA_CRC]);
 
+   if (attrs[BATADV_ATTR_MCAST_FLAGS])
+   mcast_flags = 
nla_get_u32(attrs[BATADV_ATTR_MCAST_FLAGS]);
+   else
+   mcast_flags = -EOPNOTSUPP;
+
+   if (attrs[BATADV_ATTR_MCAST_FLAGS_PRIV])
+   mcast_flags_priv = 
nla_get_u32(attrs[BATADV_ATTR_MCAST_FLAGS_PRIV]);
+   else
+   mcast_flags = -EOPNOTSUPP;
+
switch (opts->nl_cmd) {
case BATADV_CMD_GET_TRANSTABLE_LOCAL:
ret = asprintf(_info, ", TTVN: %u", ttvn);
@@ -1183,6 +1197,72 @@ static int dat_cache_callback(struct nl_msg *msg, void 
*arg)
return NL_OK;
 }
 
+static const int mcast_flags_mandatory[] = {
+   BATADV_ATTR_ORIG_ADDRESS,
+};
+
+static int mcast_flags_callback(struct nl_msg *msg, void *arg)
+{
+   struct nlattr *attrs[BATADV_ATTR_MAX+1];
+   struct nlmsghdr *nlh = nlmsg_hdr(msg);
+   struct print_opts *opts = arg;
+   struct bat_host *bat_host;
+   struct genlmsghdr *ghdr;
+   uint32_t flags;
+   uint8_t *addr;
+
+   if (!genlmsg_valid_hdr(nlh, 0)) {
+   fputs("Received invalid data from kernel.\n", stderr);
+   exit(1);
+   }
+
+   ghdr = nlmsg_data(nlh);
+
+   if (ghdr->cmd != BATADV_CMD_GET_MCAST_FLAGS)
+   return NL_OK;
+
+   if (nla_parse(attrs, BATADV_ATTR_MAX, genlmsg_attrdata(ghdr, 0),
+ genlmsg_len(ghdr), batadv_netlink_policy)) {
+   fputs("Received invalid data from kernel.\n", stderr);
+   exit(1);
+   }
+
+   if (missing_mandatory_attrs(attrs, mcast_flags_mandatory,
+   ARRAY_SIZE(mcast_flags_mandatory))) {
+   fputs("Missing attributes from kernel\n", stderr);
+   exit(1);
+   }
+
+   addr = nla_data(attrs[BATADV_ATTR_ORIG_ADDRESS]);
+
+   if (opts->read_opt & MULTICAST_ONLY && !(addr[0] & 0x01))
+   return NL_OK;
+
+   if (opts->read_opt & UNICAST_ONLY && (addr[0] & 0x01))
+   return NL_OK;
+
+   bat_host = bat_hosts_find_by_mac((char *)addr);
+   if (!(opts->read_opt & USE_BAT_HOSTS) || !bat_host)
+   printf("%02x:%02x:%02x:%02x:%02x:%02x ",
+  addr[0], addr[1], addr[2],
+  addr[3], addr[4], addr[5]);
+   else
+   printf("%17s ", bat_host->name);
+
+   if (attrs[BATADV_ATTR_MCAST_FLAGS]) {
+   flags = nla_get_u32(attrs[BATADV_ATTR_MCAST_FLAGS]);
+
+   printf("[%c%c%c]\n",
+  flags & BATADV_MCAST_WANT_ALL_UNSNOOPABLES ? 'U' : '.',
+  flags & BATADV_MCAST_WANT_ALL_IPV4 ? '4' : '.',
+  flags & BATADV_MCAST_WANT_ALL_IPV6 ? '6' : '.');
+   } else {
+   printf("-\n");
+   }
+
+   return NL_OK;
+}
+
 static int netlink_print_common(char *mesh_iface, char *orig_iface,
int read_opt, float orig_timeout,
float watch_interval, const char *header,
@@ -1437,6 +1517,69 @@ int netlink_print_dat_cache(char *mesh_iface, char 
*orig_iface, int read_opts,
return ret;
 }
 
+int netlink_print_mcast_flags(char *mesh_iface, char *orig_iface, int 
read_opts,
+ 

[B.A.T.M.A.N.] [PATCH v3 3/4] batctl: add multicast flags netlink support

2018-03-13 Thread Linus Lüssing
Dump the list of multicast flags entries via the netlink socket.

Signed-off-by: Linus Lüssing 
---
 batman_adv.h | 62 
 1 file changed, 62 insertions(+)

diff --git a/batman_adv.h b/batman_adv.h
index 95ab5db..324a0e1 100644
--- a/batman_adv.h
+++ b/batman_adv.h
@@ -92,6 +92,53 @@ enum batadv_tt_client_flags {
 };
 
 /**
+ * enum batadv_mcast_flags_priv - Private, own multicast flags
+ *
+ * These are internal, multicast related flags. Currently they describe certain
+ * multicast related attributes of the segment this originator bridges into the
+ * mesh.
+ *
+ * Those attributes are used to determine the public multicast flags this
+ * originator is going to announce via TT.
+ *
+ * For netlink, if BATADV_MCAST_FLAGS_BRIDGED is unset then all querier
+ * related flags are undefined.
+ */
+enum batadv_mcast_flags_priv {
+   /**
+* @BATADV_MCAST_FLAGS_BRIDGED: There is a bridge on top of the mesh
+* interface.
+*/
+   BATADV_MCAST_FLAGS_BRIDGED  = (1 << 0),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS: Whether an IGMP querier
+* exists in the mesh
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS  = (1 << 1),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS: Whether an MLD querier
+* exists in the mesh
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS  = (1 << 2),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING: If an IGMP querier
+* exists, whether it is potentially shadowing multicast listeners
+* (i.e. querier is behind our own bridge segment)
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING   = (1 << 3),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING: If an MLD querier
+* exists, whether it is potentially shadowing multicast listeners
+* (i.e. querier is behind our own bridge segment)
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING   = (1 << 4),
+};
+
+/**
  * enum batadv_nl_attrs - batman-adv netlink attributes
  */
 enum batadv_nl_attrs {
@@ -287,6 +334,16 @@ enum batadv_nl_attrs {
 */
BATADV_ATTR_DAT_CACHE_VID,
 
+   /**
+* @BATADV_ATTR_MCAST_FLAGS: Per originator multicast flags
+*/
+   BATADV_ATTR_MCAST_FLAGS,
+
+   /**
+* @BATADV_ATTR_MCAST_FLAGS_PRIV: Private, own multicast flags
+*/
+   BATADV_ATTR_MCAST_FLAGS_PRIV,
+
/* add attributes above here, update the policy in netlink.c */
 
/**
@@ -381,6 +438,11 @@ enum batadv_nl_commands {
 */
BATADV_CMD_GET_DAT_CACHE,
 
+   /**
+* @BATADV_CMD_GET_MCAST_FLAGS: Query list of multicast flags
+*/
+   BATADV_CMD_GET_MCAST_FLAGS,
+
/* add new commands above here */
 
/**
-- 
2.11.0



[B.A.T.M.A.N.] [PATCH v3 2/4] batctl: add netlink dump function for DAT cache table

2018-03-13 Thread Linus Lüssing
Signed-off-by: Linus Lüssing 
---
 debug.c   |   1 +
 netlink.c | 205 ++
 netlink.h |   2 +
 3 files changed, 156 insertions(+), 52 deletions(-)

diff --git a/debug.c b/debug.c
index a7c5adf..5f9a87b 100644
--- a/debug.c
+++ b/debug.c
@@ -87,6 +87,7 @@ const struct debug_table_data 
batctl_debug_tables[BATCTL_TABLE_NUM] = {
.opt_short = "dc",
.debugfs_name = "dat_cache",
.header_lines = 2,
+   .netlink_fn = netlink_print_dat_cache,
},
{
.opt_long = "nc_nodes",
diff --git a/netlink.c b/netlink.c
index 126066b..124ff67 100644
--- a/netlink.c
+++ b/netlink.c
@@ -66,58 +66,63 @@ struct nlquery_opts {
 };
 
 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 },
-   [BATADV_ATTR_MESH_IFNAME]   = { .type = NLA_STRING,
-   .maxlen = IFNAMSIZ },
-   [BATADV_ATTR_MESH_ADDRESS]  = { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_HARD_IFINDEX]  = { .type = NLA_U32 },
-   [BATADV_ATTR_HARD_IFNAME]   = { .type = NLA_STRING,
-   .maxlen = IFNAMSIZ },
-   [BATADV_ATTR_HARD_ADDRESS]  = { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_ORIG_ADDRESS]  = { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_TPMETER_RESULT]= { .type = NLA_U8 },
-   [BATADV_ATTR_TPMETER_TEST_TIME] = { .type = NLA_U32 },
-   [BATADV_ATTR_TPMETER_BYTES] = { .type = NLA_U64 },
-   [BATADV_ATTR_TPMETER_COOKIE]= { .type = NLA_U32 },
-   [BATADV_ATTR_PAD]   = { .type = NLA_UNSPEC },
-   [BATADV_ATTR_ACTIVE]= { .type = NLA_FLAG },
-   [BATADV_ATTR_TT_ADDRESS]= { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_TT_TTVN]   = { .type = NLA_U8 },
-   [BATADV_ATTR_TT_LAST_TTVN]  = { .type = NLA_U8 },
-   [BATADV_ATTR_TT_CRC32]  = { .type = NLA_U32 },
-   [BATADV_ATTR_TT_VID]= { .type = NLA_U16 },
-   [BATADV_ATTR_TT_FLAGS]  = { .type = NLA_U32 },
-   [BATADV_ATTR_FLAG_BEST] = { .type = NLA_FLAG },
-   [BATADV_ATTR_LAST_SEEN_MSECS]   = { .type = NLA_U32 },
-   [BATADV_ATTR_NEIGH_ADDRESS] = { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_TQ]= { .type = NLA_U8 },
-   [BATADV_ATTR_THROUGHPUT]= { .type = NLA_U32 },
-   [BATADV_ATTR_BANDWIDTH_UP]  = { .type = NLA_U32 },
-   [BATADV_ATTR_BANDWIDTH_DOWN]= { .type = NLA_U32 },
-   [BATADV_ATTR_ROUTER]= { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_BLA_OWN]   = { .type = NLA_FLAG },
-   [BATADV_ATTR_BLA_ADDRESS]   = { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_BLA_VID]   = { .type = NLA_U16 },
-   [BATADV_ATTR_BLA_BACKBONE]  = { .type = NLA_UNSPEC,
-   .minlen = ETH_ALEN,
-   .maxlen = ETH_ALEN },
-   [BATADV_ATTR_BLA_CRC]   = { .type = NLA_U16 },
+   [BATADV_ATTR_VERSION]   = { .type = NLA_STRING },
+   [BATADV_ATTR_ALGO_NAME] = { .type = NLA_STRING },
+   [BATADV_ATTR_MESH_IFINDEX]  = { .type = NLA_U32 },
+   [BATADV_ATTR_MESH_IFNAME]   = { .type = NLA_STRING,
+   .maxlen = IFNAMSIZ },
+   [BATADV_ATTR_MESH_ADDRESS]  = { .type = NLA_UNSPEC,
+   .minlen = ETH_ALEN,
+   .maxlen = ETH_ALEN },
+   [BATADV_ATTR_HARD_IFINDEX]  = { .type = NLA_U32 },
+   [BATADV_ATTR_HARD_IFNAME]   = { .type = NLA_STRING,
+   .maxlen = IFNAMSIZ },
+   

[B.A.T.M.A.N.] [PATCH v3 0/4] batctl: netlink support for DAT and MCAST

2018-03-13 Thread Linus Lüssing
This patchset adds netlink support for dumping DAT cache and multicast
flags tables.


Changes in v3:
==
- renamed netlink attributes:
  - BATADV_ATTR_DC_ADDRESS   -> BATADV_ATTR_DAT_CACHE_IP4ADDRESS
  - BATADV_ATTR_DC_HWADDRESS -> BATADV_ATTR_DAT_CACHE_HWADDRESS
  - BATADV_ATTR_DC_VID   -> BATADV_ATTR_DAT_CACHE_VID

Changes in v2:
==

- Removed htonl() conversion for BATADV_ATTR_DC_ADDRESS as batman-adv
  now provides it in network byte order (via nla_put_in_addr() )
- Increased BATADV_ATTR_MCAST_FLAGS and BATADV_ATTR_MCAST_FLAGS_PRIV
  size from 8 to 32 bits to enhance extensibility
- Changed mcast_flags error value from -EINVAL to -ENOTSUPP to allow
  a fallback to and retry via debugfs, for compatibility with older
  batman-adv versions


[B.A.T.M.A.N.] [PATCH v3 1/4] batctl: add DAT cache netlink support

2018-03-13 Thread Linus Lüssing
Dump the list of DAT cache entries via the netlink socket.

Signed-off-by: Linus Lüssing 
---
 batman_adv.h | 20 
 1 file changed, 20 insertions(+)

diff --git a/batman_adv.h b/batman_adv.h
index 56ae289..95ab5db 100644
--- a/batman_adv.h
+++ b/batman_adv.h
@@ -272,6 +272,21 @@ enum batadv_nl_attrs {
 */
BATADV_ATTR_BLA_CRC,
 
+   /**
+* @BATADV_ATTR_DAT_CACHE_IP4ADDRESS: Client IPv4 address
+*/
+   BATADV_ATTR_DAT_CACHE_IP4ADDRESS,
+
+   /**
+* @BATADV_ATTR_DAT_CACHE_HWADDRESS: Client MAC address
+*/
+   BATADV_ATTR_DAT_CACHE_HWADDRESS,
+
+   /**
+* @BATADV_ATTR_DAT_CACHE_VID: VLAN ID
+*/
+   BATADV_ATTR_DAT_CACHE_VID,
+
/* add attributes above here, update the policy in netlink.c */
 
/**
@@ -361,6 +376,11 @@ enum batadv_nl_commands {
 */
BATADV_CMD_GET_BLA_BACKBONE,
 
+   /**
+* @BATADV_CMD_GET_DAT_CACHE: Query list of DAT cache entries
+*/
+   BATADV_CMD_GET_DAT_CACHE,
+
/* add new commands above here */
 
/**
-- 
2.11.0



[B.A.T.M.A.N.] [PATCH v3 2/2] batman-adv: add multicast flags netlink support

2018-03-13 Thread Linus Lüssing
Dump the list of multicast flags entries via the netlink socket.

Signed-off-by: Linus Lüssing 
---
 include/uapi/linux/batman_adv.h |  62 +++
 net/batman-adv/multicast.c  | 237 
 net/batman-adv/multicast.h  |  18 +++
 net/batman-adv/netlink.c|  12 ++
 4 files changed, 329 insertions(+)

diff --git a/include/uapi/linux/batman_adv.h b/include/uapi/linux/batman_adv.h
index 95ab5dbd..324a0e11 100644
--- a/include/uapi/linux/batman_adv.h
+++ b/include/uapi/linux/batman_adv.h
@@ -92,6 +92,53 @@ enum batadv_tt_client_flags {
 };
 
 /**
+ * enum batadv_mcast_flags_priv - Private, own multicast flags
+ *
+ * These are internal, multicast related flags. Currently they describe certain
+ * multicast related attributes of the segment this originator bridges into the
+ * mesh.
+ *
+ * Those attributes are used to determine the public multicast flags this
+ * originator is going to announce via TT.
+ *
+ * For netlink, if BATADV_MCAST_FLAGS_BRIDGED is unset then all querier
+ * related flags are undefined.
+ */
+enum batadv_mcast_flags_priv {
+   /**
+* @BATADV_MCAST_FLAGS_BRIDGED: There is a bridge on top of the mesh
+* interface.
+*/
+   BATADV_MCAST_FLAGS_BRIDGED  = (1 << 0),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS: Whether an IGMP querier
+* exists in the mesh
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS  = (1 << 1),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS: Whether an MLD querier
+* exists in the mesh
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS  = (1 << 2),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING: If an IGMP querier
+* exists, whether it is potentially shadowing multicast listeners
+* (i.e. querier is behind our own bridge segment)
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING   = (1 << 3),
+
+   /**
+* @BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING: If an MLD querier
+* exists, whether it is potentially shadowing multicast listeners
+* (i.e. querier is behind our own bridge segment)
+*/
+   BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING   = (1 << 4),
+};
+
+/**
  * enum batadv_nl_attrs - batman-adv netlink attributes
  */
 enum batadv_nl_attrs {
@@ -287,6 +334,16 @@ enum batadv_nl_attrs {
 */
BATADV_ATTR_DAT_CACHE_VID,
 
+   /**
+* @BATADV_ATTR_MCAST_FLAGS: Per originator multicast flags
+*/
+   BATADV_ATTR_MCAST_FLAGS,
+
+   /**
+* @BATADV_ATTR_MCAST_FLAGS_PRIV: Private, own multicast flags
+*/
+   BATADV_ATTR_MCAST_FLAGS_PRIV,
+
/* add attributes above here, update the policy in netlink.c */
 
/**
@@ -381,6 +438,11 @@ enum batadv_nl_commands {
 */
BATADV_CMD_GET_DAT_CACHE,
 
+   /**
+* @BATADV_CMD_GET_MCAST_FLAGS: Query list of multicast flags
+*/
+   BATADV_CMD_GET_MCAST_FLAGS,
+
/* add new commands above here */
 
/**
diff --git a/net/batman-adv/multicast.c b/net/batman-adv/multicast.c
index 6eaffe50..9a1182ae 100644
--- a/net/batman-adv/multicast.c
+++ b/net/batman-adv/multicast.c
@@ -40,6 +40,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -52,14 +53,20 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
+#include 
+#include 
 #include 
+#include 
 
 #include "hard-interface.h"
 #include "hash.h"
 #include "log.h"
+#include "netlink.h"
+#include "soft-interface.h"
 #include "translation-table.h"
 #include "tvlv.h"
 
@@ -1286,6 +1293,236 @@ int batadv_mcast_flags_seq_print_text(struct seq_file 
*seq, void *offset)
 #endif
 
 /**
+ * batadv_mcast_mesh_info_put() - put multicast info into a netlink message
+ * @msg: buffer for the message
+ * @bat_priv: the bat priv with all the soft interface information
+ *
+ * Return: 0 or error code.
+ */
+int batadv_mcast_mesh_info_put(struct sk_buff *msg,
+  struct batadv_priv *bat_priv)
+{
+   u32 flags = bat_priv->mcast.flags;
+   u32 flags_priv = BATADV_NO_FLAGS;
+
+   if (bat_priv->mcast.bridged) {
+   flags_priv |= BATADV_MCAST_FLAGS_BRIDGED;
+
+   if (bat_priv->mcast.querier_ipv4.exists)
+   flags_priv |= BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS;
+   if (bat_priv->mcast.querier_ipv6.exists)
+   flags_priv |= BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS;
+   if (bat_priv->mcast.querier_ipv4.shadowing)
+   flags_priv |= BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING;
+   if (bat_priv->mcast.querier_ipv6.shadowing)
+   flags_priv |= BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING;
+   }
+
+   if (nla_put_u32(msg, BATADV_ATTR_MCAST_FLAGS, flags) ||
+   

[B.A.T.M.A.N.] [PATCH v3 0/2] batman-adv: netlink support for DAT and MCAST

2018-03-13 Thread Linus Lüssing
This patchset adds netlink support for dumping DAT cache and multicast
flags tables.


Changes in v3:
==
- renamed netlink attributes:
  - BATADV_ATTR_DC_ADDRESS   -> BATADV_ATTR_DAT_CACHE_IP4ADDRESS
  - BATADV_ATTR_DC_HWADDRESS -> BATADV_ATTR_DAT_CACHE_HWADDRESS
  - BATADV_ATTR_DC_VID   -> BATADV_ATTR_DAT_CACHE_VID

Changes in v2:
==

- Added missing includes, "#include " and
  "#include ", to distributed-arp-table.c
- Added missing forward declaration for "struct netlink_callback" to
  distributed-arp-table.h
- Changed nla_put_u32() to nla_put_in_addr() for BATADV_ATTR_DC_ADDRESS,
  removed the then obsolete ntohl() conversion
- Added missing include, "#include ", to multicast.c
- Changed nla_put_u8() to nla_put_u32() for BATADV_ATTR_MCAST_FLAGS and
  BATADV_ATTR_MCAST_FLAGS_PRIV to enhance extensibility



Re: [B.A.T.M.A.N.] [PATCH v2 0/2] batman-adv: netlink support for DAT and MCAST

2018-03-13 Thread Antonio Quartulli


On 13/03/18 16:52, Sven Eckelmann wrote:
> On Dienstag, 13. März 2018 16:22:24 CET Antonio Quartulli wrote:
> [...]
>> (if we wanted to, we could still rename all the attrs pointing to the
>> very same data type and unify them, but I don't have a strong opinion
>> about it at this time).
> 
> This would break backwards compatibility.

Ah right, those names are exported to user space too with the same
header file.

We'll live with that then.

Cheers,

-- 
Antonio Quartulli



signature.asc
Description: OpenPGP digital signature


Re: [B.A.T.M.A.N.] [PATCH v2 0/2] batman-adv: netlink support for DAT and MCAST

2018-03-13 Thread Sven Eckelmann
On Dienstag, 13. März 2018 16:22:24 CET Antonio Quartulli wrote:
[...]
> (if we wanted to, we could still rename all the attrs pointing to the
> very same data type and unify them, but I don't have a strong opinion
> about it at this time).

This would break backwards compatibility.

Kind regards,
Sven

signature.asc
Description: This is a digitally signed message part.


Re: [B.A.T.M.A.N.] [PATCH v2 0/2] batman-adv: netlink support for DAT and MCAST

2018-03-13 Thread Antonio Quartulli


On 13/03/18 16:20, Sven Eckelmann wrote:
> On Dienstag, 13. März 2018 16:02:34 CET Antonio Quartulli wrote:
> [...]
>> Another observation: do these attributes need to be DAT specific? or can
>> we just define (or reuse) a generic HWADDRESS attribute that we might
>> already be using somewhere else (i.e. for TT)?
> 
> I've asked myself the same but we have BLA_- and TT_ADDRESS and these are 
> named in a way which connects them to these specific subsystems. Using one of 
> them for DAT seems to be a little bit odd.

Oh ok. In this case it makes sense to have DAT specific attrs.

(if we wanted to, we could still rename all the attrs pointing to the
very same data type and unify them, but I don't have a strong opinion
about it at this time).

Cheers,

-- 
Antonio Quartulli



signature.asc
Description: OpenPGP digital signature


Re: [B.A.T.M.A.N.] [PATCH v2 0/2] batman-adv: netlink support for DAT and MCAST

2018-03-13 Thread Sven Eckelmann
On Dienstag, 13. März 2018 16:02:34 CET Antonio Quartulli wrote:
[...]
> Another observation: do these attributes need to be DAT specific? or can
> we just define (or reuse) a generic HWADDRESS attribute that we might
> already be using somewhere else (i.e. for TT)?

I've asked myself the same but we have BLA_- and TT_ADDRESS and these are 
named in a way which connects them to these specific subsystems. Using one of 
them for DAT seems to be a little bit odd.

Kind regards,
Sven

signature.asc
Description: This is a digitally signed message part.


Re: [B.A.T.M.A.N.] [PATCH v2 0/2] batman-adv: netlink support for DAT and MCAST

2018-03-13 Thread Antonio Quartulli


On 11/03/18 18:54, Sven Eckelmann wrote:
> On Sonntag, 11. März 2018 00:53:19 CET Linus Lüssing wrote:
>> This patchset adds netlink support for dumping DAT cache and multicast
>> flags tables.
>>
>> Changes in v2:
>> ==
>>
>> - Added missing includes, "#include " and
>>   "#include ", to distributed-arp-table.c
>> - Added missing forward declaration for "struct netlink_callback" to
>>   distributed-arp-table.h
>> - Changed nla_put_u32() to nla_put_in_addr() for BATADV_ATTR_DC_ADDRESS,
>>   removed the then obsolete ntohl() conversion
>> - Added missing include, "#include ", to multicast.c
>> - Changed nla_put_u8() to nla_put_u32() for BATADV_ATTR_MCAST_FLAGS and
>>   BATADV_ATTR_MCAST_FLAGS_PRIV to enhance extensibility
> 
> Thanks for the doing the requested changes.
> 
> @Antonio: Can you please check whether you are ok with the new netlink names 
> and types.
> 
>> +   [BATADV_ATTR_DC_ADDRESS]= { .type = NLA_U32 },
>> +   [BATADV_ATTR_DC_HWADDRESS]  = { .len = ETH_ALEN },
>> +   [BATADV_ATTR_DC_VID]= { .type = NLA_U16 },
> 

Personally I'd find "DAT_CACHE" easier to parse than "DC".
I know we have the "batctl dc" command, but that's more to keep the CLI
compact.

This said, DAT was meant to be extended in the future and not store only
IPv4 addresses. This said, shouldn't we use a more specific name for the
address?

Another observation: do these attributes need to be DAT specific? or can
we just define (or reuse) a generic HWADDRESS attribute that we might
already be using somewhere else (i.e. for TT)?


Regards,

-- 
Antonio Quartulli



signature.asc
Description: OpenPGP digital signature