diff options
author | Martin Kaiser <wireshark@kaiser.cx> | 2018-05-21 18:45:44 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-05-23 13:18:00 +0000 |
commit | 675e0649c04d1c55ea570c6f5c9efb90a0f81e6e (patch) | |
tree | 56d80eb9d780a6374a399cdcc34809afa2415f16 /caputils | |
parent | 1d2b0d91e3d90062367052c4ac9753a6b78e0fcd (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.c | 23 |
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) { |