strongswan: backport upstream MUSL fix for pf_handler.c
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
This commit is contained in:
parent
544abeb36a
commit
04c1d688de
|
@ -0,0 +1,58 @@
|
|||
commit f5b1ca4ef60bc4fca91f0d1e852ef8447d23c99a
|
||||
Author: Tobias Brunner <tobias@strongswan.org>
|
||||
Date: Fri Mar 22 09:57:07 2024 +0100
|
||||
|
||||
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")
|
||||
|
||||
--- a/src/libcharon/network/pf_handler.c
|
||||
+++ b/src/libcharon/network/pf_handler.c
|
||||
@@ -20,23 +20,23 @@
|
||||
|
||||
#include <library.h>
|
||||
#include <unistd.h>
|
||||
+#include <errno.h>
|
||||
+#include <net/ethernet.h>
|
||||
+#include <net/if.h>
|
||||
+#include <sys/ioctl.h>
|
||||
|
||||
#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
||||
-#include <linux/if_arp.h>
|
||||
-#include <linux/if_ether.h>
|
||||
+#include <net/if_arp.h>
|
||||
+#include <netinet/if_ether.h>
|
||||
+#include <netpacket/packet.h>
|
||||
#include <linux/filter.h>
|
||||
#else
|
||||
#include <fcntl.h>
|
||||
#include <ifaddrs.h>
|
||||
#include <net/bpf.h>
|
||||
-#include <net/if.h>
|
||||
#include <net/if_dl.h>
|
||||
#endif /* !defined(__APPLE__) && !defined(__FreeBSD__) */
|
||||
|
||||
-#include <errno.h>
|
||||
-#include <net/ethernet.h>
|
||||
-#include <sys/ioctl.h>
|
||||
-
|
||||
#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
||||
|
||||
/**
|
Loading…
Reference in New Issue