From 24e5409190820a14e4d097924b1acaab62bb3b99 Mon Sep 17 00:00:00 2001 From: Baruch Siach Date: Sun, 30 Oct 2016 18:12:00 +0200 Subject: [PATCH] libbridge: fix headers conflict with musl libc Don't including kernel headers directly to avoid headers conflict like: In file included from .../sysroot/usr/include/linux/if_bridge.h:18:0, from libbridge.h:26, from libbridge_if.c:26: .../sysroot/usr/include/linux/in6.h:32:8: error: redefinition of ‘struct in6_addr’ struct in6_addr { ^ In file included from libbridge.h:24:0, from libbridge_if.c:26: .../sysroot/usr/include/netinet/in.h:23:8: note: originally defined here struct in6_addr { ^ Instead copy the required linux/if_bridge.h definitions into libbridge_private.h. Signed-off-by: Baruch Siach --- Patch status: Nacked (https://lists.linuxfoundation.org/pipermail/bridge/2016-November/010107.html) --- libbridge/libbridge.h | 1 - libbridge/libbridge_private.h | 83 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 82 insertions(+), 2 deletions(-) diff --git a/libbridge/libbridge.h b/libbridge/libbridge.h index ff047f933cd6..18b40cd90413 100644 --- a/libbridge/libbridge.h +++ b/libbridge/libbridge.h @@ -23,7 +23,6 @@ #include #include #include -#include /* defined in net/if.h but that conflicts with linux/if.h... */ extern unsigned int if_nametoindex (const char *__ifname); diff --git a/libbridge/libbridge_private.h b/libbridge/libbridge_private.h index 99a511dae00a..565025b7bccb 100644 --- a/libbridge/libbridge_private.h +++ b/libbridge/libbridge_private.h @@ -24,7 +24,88 @@ #include #include #include -#include + +/* From linux/if_ether.h */ +#ifndef ETH_ALEN +#define ETH_ALEN 6 +#endif + +/* From linux/if_bridge.h */ +#ifndef BRCTL_GET_VERSION +#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 +#define BRCTL_SET_BRIDGE_HELLO_TIME 9 +#define BRCTL_SET_BRIDGE_MAX_AGE 10 +#define BRCTL_SET_AGEING_TIME 11 +#define BRCTL_SET_GC_INTERVAL 12 +#define BRCTL_GET_PORT_INFO 13 +#define BRCTL_SET_BRIDGE_STP_STATE 14 +#define BRCTL_SET_BRIDGE_PRIORITY 15 +#define BRCTL_SET_PORT_PRIORITY 16 +#define BRCTL_SET_PATH_COST 17 +#define BRCTL_GET_FDB_ENTRIES 18 + +#define BR_STATE_DISABLED 0 +#define BR_STATE_LISTENING 1 +#define BR_STATE_LEARNING 2 +#define BR_STATE_FORWARDING 3 +#define BR_STATE_BLOCKING 4 + +struct __bridge_info { + __u64 designated_root; + __u64 bridge_id; + __u32 root_path_cost; + __u32 max_age; + __u32 hello_time; + __u32 forward_delay; + __u32 bridge_max_age; + __u32 bridge_hello_time; + __u32 bridge_forward_delay; + __u8 topology_change; + __u8 topology_change_detected; + __u8 root_port; + __u8 stp_enabled; + __u32 ageing_time; + __u32 gc_interval; + __u32 hello_timer_value; + __u32 tcn_timer_value; + __u32 topology_change_timer_value; + __u32 gc_timer_value; +}; + +struct __port_info { + __u64 designated_root; + __u64 designated_bridge; + __u16 port_id; + __u16 designated_port; + __u32 path_cost; + __u32 designated_cost; + __u8 state; + __u8 top_change_ack; + __u8 config_pending; + __u8 unused0; + __u32 message_age_timer_value; + __u32 forward_delay_timer_value; + __u32 hold_timer_value; +}; + +struct __fdb_entry { + __u8 mac_addr[ETH_ALEN]; + __u8 port_no; + __u8 is_local; + __u32 ageing_timer_value; + __u8 port_hi; + __u8 pad0; + __u16 unused; +}; +#endif /* BRCTL_GET_VERSION */ #define MAX_BRIDGES 1024 #define MAX_PORTS 1024 -- 2.10.1