forked from osmocom/wireshark
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>
This commit is contained in:
parent
1d2b0d91e3
commit
675e0649c0
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include <wsutil/strtoi.h>
|
||||
#include <wsutil/filesystem.h>
|
||||
#include <wsutil/netlink.h>
|
||||
#include <writecap/pcapio.h>
|
||||
|
||||
#include <netlink/netlink.h>
|
||||
|
|
|
@ -45,6 +45,7 @@ set(WSUTIL_PUBLIC_HEADERS
|
|||
interface.h
|
||||
jsmn.h
|
||||
mpeg-audio.h
|
||||
netlink.h
|
||||
nstime.h
|
||||
os_version_info.h
|
||||
pint.h
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
/* netlink.h
|
||||
* netlink-related definitions shared between libwireshark and other parts
|
||||
*
|
||||
* Copyright 2018, Martin Kaiser
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef _WS_NETLINK_H
|
||||
#define _WS_NETLINK_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#if defined(HAVE_LIBNL)
|
||||
|
||||
/*
|
||||
* Pull in the include files where the kernel's nla_for_each_nested is defined.
|
||||
* This is to make sure that the kernel's definition will not overwrite our
|
||||
* version if msg.h or attr.h are included again explicitly after this file.
|
||||
*/
|
||||
DIAG_OFF_PEDANTIC
|
||||
#include <netlink/msg.h>
|
||||
DIAG_ON_PEDANTIC
|
||||
#include <netlink/attr.h>
|
||||
|
||||
/*
|
||||
* 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)
|
||||
|
||||
#endif /* HAVE_LIBNL */
|
||||
|
||||
#endif /* _WS_NETLINK_H */
|
||||
|
||||
/*
|
||||
* Editor modelines - http://www.wireshark.org/tools/modelines.html
|
||||
*
|
||||
* Local variables:
|
||||
* c-basic-offset: 4
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* vi: set shiftwidth=4 tabstop=8 expandtab:
|
||||
* :indentSize=4:tabSize=8:noTabs=true:
|
||||
*/
|
Loading…
Reference in New Issue