aboutsummaryrefslogtreecommitdiffstats
path: root/caputils
diff options
context:
space:
mode:
authorMartin Kaiser <wireshark@kaiser.cx>2018-05-21 18:45:44 +0200
committerAnders Broman <a.broman58@gmail.com>2018-05-23 13:18:00 +0000
commit675e0649c04d1c55ea570c6f5c9efb90a0f81e6e (patch)
tree56d80eb9d780a6374a399cdcc34809afa2415f16 /caputils
parent1d2b0d91e3d90062367052c4ac9753a6b78e0fcd (diff)
make our version of nla_for_each_nested() public
caputils/ws80211_utils.c contains a re-definition of the linux kernel's nla_for_each_nested() macro that applies the correct casts to allow compilation with a C++ compiler. Make this definition public by moving it into a new wsutil/netlink.h file. Include the kernel's original definition before we overwrite it. This way, it's not necessary for a .c file to include wsutil/netlink.h after the system includes. Use our nla_for_each_nested() version in extcap/dpauxmon.c to squelch the following compiler warning: [1664/2251] Building C object extcap/CMakeFiles/dpauxmon.dir/dpauxmon.c.o ../extcap/dpauxmon.c: In function ‘family_handler’: ../extcap/dpauxmon.c:168:13: warning: request for implicit conversion from ‘void *’ to ‘struct nlattr *’ not permitted in C++ [-Wc++-compat] nla_for_each_nested(mcgrp, tb[CTRL_ATTR_MCAST_GROUPS], rem_mcgrp) { Change-Id: I6ba40ef6343c5d168c1b0c4554f13202911ded76 Reviewed-on: https://code.wireshark.org/review/27688 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'caputils')
-rw-r--r--caputils/ws80211_utils.c23
1 files changed, 2 insertions, 21 deletions
diff --git a/caputils/ws80211_utils.c b/caputils/ws80211_utils.c
index 265baa6ebe..fbd9349f6e 100644
--- a/caputils/ws80211_utils.c
+++ b/caputils/ws80211_utils.c
@@ -41,6 +41,8 @@ DIAG_ON_PEDANTIC
#include <linux/nl80211.h>
+#include <wsutil/netlink.h>
+
#ifdef HAVE_NL80211_SPLIT_WIPHY_DUMP
static int ws80211_get_protocol_features(int* features);
#endif /* HAVE_NL80211_SPLIT_WIPHY_DUMP */
@@ -195,27 +197,6 @@ static struct ws80211_interface *
return NULL;
}
-/*
- * And now for a steaming heap of suck.
- *
- * The nla_for_each_nested() macro defined by at least some versions of the
- * Linux kernel's headers doesn't do the casting required when compiling
- * with a C++ compiler or with -Wc++-compat, so we get warnings, and those
- * warnings are fatal when we compile this file.
- *
- * So we replace it with our own version, which does the requisite cast.
- */
-
-/**
- * nla_for_each_nested - iterate over nested attributes
- * @pos: loop counter, set to current attribute
- * @nla: attribute containing the nested attributes
- * @rem: initialized to len, holds bytes currently remaining in stream
- */
-#undef nla_for_each_nested
-#define nla_for_each_nested(pos, nla, rem) \
- nla_for_each_attr(pos, (struct nlattr *)nla_data(nla), nla_len(nla), rem)
-
#ifdef HAVE_NL80211_SPLIT_WIPHY_DUMP
static int get_features_handler(struct nl_msg *msg, void *arg)
{