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
This commit is contained in:
Joseph Mingrone 2023-02-13 18:06:51 -04:00
parent 86fd0bdba5
commit 6d1c946e91
No known key found for this signature in database
GPG Key ID: 36A40C83B0D6EF9E
2 changed files with 20 additions and 1 deletions

View File

@ -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
}

View File

@ -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>