aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörg Krause <joerg.krause@embedded.rocks>2016-03-08 20:42:30 (GMT)
committerJouni Malinen <j@w1.fi>2016-03-26 09:02:16 (GMT)
commit81606ab73bff3c402d03a60b590b4e723d8e12c1 (patch)
treee00957fd63214d989f97759e6a59476a9872146e
parentf347429cf160140b74a1b2f1af0e506bd52c91ba (diff)
downloadhostap-81606ab73bff3c402d03a60b590b4e723d8e12c1.zip
hostap-81606ab73bff3c402d03a60b590b4e723d8e12c1.tar.gz
hostap-81606ab73bff3c402d03a60b590b4e723d8e12c1.tar.bz2
vlan: Fix musl libc conflict with Linux kernel headers
Due to both <netinet/in.h> (in "utils/includes.h") and <linux/in6.h> (in <linux/if_bridge.h>) being included, the in6_addr is being redefined: once from the C library headers and once from the Linux kernel headers. This causes some build failures with for example the musl C library: In file included from /usr/include/linux/if_bridge.h:18, from ../src/ap/vlan_init.c:17: /usr/include/linux/in6.h:32: error: redefinition of 'struct in6_addr' /usr/include/linux/in6.h:49: error: redefinition of 'struct sockaddr_in6' /usr/include/linux/in6.h:59: error: redefinition of 'struct ipv6_mreq' Mixing C library and Linux kernel headers is a bit problematic [1] and should be avoided if possible [2]. In order to fix this, define just the macros needed from <linux/if_bridge.h> as done in Busybox for the brctl applet [3]. [1] https://sourceware.org/bugzilla/show_bug.cgi?id=15850 [2] http://www.openwall.com/lists/musl/2015/10/06/1 [3] https://git.busybox.net/busybox/commit/?id=5fa6d1a632505789409a2ba6cf8e112529f9db18 Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
-rw-r--r--src/ap/vlan_full.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/ap/vlan_full.c b/src/ap/vlan_full.c
index e9512fe..0516523 100644
--- a/src/ap/vlan_full.c
+++ b/src/ap/vlan_full.c
@@ -14,7 +14,16 @@
#undef if_type
#include <sys/ioctl.h>
#include <linux/if_vlan.h>
-#include <linux/if_bridge.h>
+/* From linux/if_bridge.h that can conflict with C library headers for IPv6 */
+#define BRCTL_GET_VERSION 0
+#define BRCTL_GET_BRIDGES 1
+#define BRCTL_ADD_BRIDGE 2
+#define BRCTL_DEL_BRIDGE 3
+#define BRCTL_ADD_IF 4
+#define BRCTL_DEL_IF 5
+#define BRCTL_GET_BRIDGE_INFO 6
+#define BRCTL_GET_PORT_LIST 7
+#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
#include "utils/common.h"
#include "drivers/priv_netlink.h"