aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Mingrone <jrm@FreeBSD.org>2023-02-13 22:06:51 +0000
committerJoseph Mingrone <jrm@FreeBSD.org>2023-02-16 15:37:51 +0000
commit6d1c946e916845d01062e146aad5395410da1e54 (patch)
tree82a8ef663f06372ff430706c881f5513d9d161d0
parent86fd0bdba540132ae298457e160b651f61d1db6b (diff)
downloadsrc-6d1c946e916845d01062e146aad5395410da1e54.tar.gz
src-6d1c946e916845d01062e146aad5395410da1e54.zip
libpcap: Make pcap/bpf.h a wrapper around system net/bpf.h
In the past, we modified pcap/pcap.h to include the system net/bpf.h rather than libpcap's own pcap/bpf.h. However, starting around 1.10.2, libpcap requires a few extern functions defined in pcap/bpf.h to build. Simply reverting that local change and pulling in pcap/bpf.h is not a solution, because some ports with '#include <pcap.h>' such as mail/spamd and net/xprobe require the system net/bpf.h to be pulled in. To accommodate both requirements, make pcap/bpf.h a wrapper around the system net/bpf.h, but retain the extern function definitions. This is in preparation for libpcap 1.10.3. Approved by: cy, philip, emaste, delphij (earlier revision) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D38575
-rw-r--r--contrib/libpcap/pcap/bpf.h16
-rw-r--r--contrib/libpcap/pcap/pcap.h5
2 files changed, 20 insertions, 1 deletions
diff --git a/contrib/libpcap/pcap/bpf.h b/contrib/libpcap/pcap/bpf.h
index 9d748952a0e5..1c9d0f56a01a 100644
--- a/contrib/libpcap/pcap/bpf.h
+++ b/contrib/libpcap/pcap/bpf.h
@@ -74,6 +74,18 @@
extern "C" {
#endif
+/*
+ * In the past, we modified pcap/pcap.h to include the system net/bpf.h,
+ * rather than this file. However, starting around 1.10.2, libpcap requires
+ * the extern functions defined here to build. Simply reverting that local
+ * change is not a solution, because some ports with '#include <pcap.h>'
+ * such as mail/spamd and net/xprobe require the system net/bpf.h to be
+ * pulled in. To accommodate both requirements, make this header a wrapper
+ * around the system net/bpf.h, but keep the extern function definitions.
+ */
+#if defined(__FreeBSD__)
+#include <net/bpf.h>
+#else
/* BSD style release date */
#define BPF_RELEASE 199606
@@ -244,13 +256,17 @@ struct bpf_insn {
#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }
#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }
+#endif /* defined(__FreeBSD__) */
+
PCAP_API int bpf_validate(const struct bpf_insn *, int);
PCAP_API u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
+#if !defined(__FreeBSD__)
/*
* Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).
*/
#define BPF_MEMWORDS 16
+#endif
#ifdef __cplusplus
}
diff --git a/contrib/libpcap/pcap/pcap.h b/contrib/libpcap/pcap/pcap.h
index a2d6003cdf61..4e30e77812ef 100644
--- a/contrib/libpcap/pcap/pcap.h
+++ b/contrib/libpcap/pcap/pcap.h
@@ -85,7 +85,10 @@
#endif /* _WIN32/MSDOS/UN*X */
#include <pcap/socket.h> /* for SOCKET, as the active-mode rpcap APIs use it */
-#include <net/bpf.h>
+
+#ifndef PCAP_DONT_INCLUDE_PCAP_BPF_H
+#include <pcap/bpf.h>
+#endif
#include <stdio.h>