From f5b1ca4ef60bc4fca91f0d1e852ef8447d23c99a Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Fri, 22 Mar 2024 09:57:07 +0100 Subject: [PATCH] pf-handler: Fix build with musl C library musl's headers define a lot of networking structs. For some, the definition in the Linux UAPI headers is then suppressed by e.g. __UAPI_DEF_ETHHDR. Since we included musl's net/ethernet.h, which includes netinet/if_ether.h that defines `struct ethhdr` (and the above constant), **after** we include linux/if_ether.h, there was a compilation error because the struct was defined multiple times. However, simply moving that include doesn't fix the problem because for ARP-specific structs the Linux headers don't provide __UAPI_DEF* checks. So instead of directly including the linux/ headers, we include those provided by the C library. For glibc these usually just include the Linux headers, but for musl this allows them to define the struct directly. We also need to move if.h and add packet.h, which define other structs (or include headers that do so) that we use. Fixes: 187c72d1afdc ("dhcp: Port the plugin to FreeBSD/macOS") --- src/libcharon/network/pf_handler.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/libcharon/network/pf_handler.c b/src/libcharon/network/pf_handler.c index 91b0e7507..43ef432ba 100644 --- a/src/libcharon/network/pf_handler.c +++ b/src/libcharon/network/pf_handler.c @@ -20,23 +20,23 @@ #include #include +#include +#include +#include +#include #if !defined(__APPLE__) && !defined(__FreeBSD__) -#include -#include +#include +#include +#include #include #else #include #include #include -#include #include #endif /* !defined(__APPLE__) && !defined(__FreeBSD__) */ -#include -#include -#include - #if !defined(__APPLE__) && !defined(__FreeBSD__) /**