tcpdump mailing list archives
Re: libpcap changes required for BPF on Solaris
From: Guy Harris <guy () alum mit edu>
Date: Mon, 13 Apr 2009 10:58:39 -0700
On Apr 10, 2009, at 8:23 PM, Darren Reed wrote:
The URL below contains the necessary changes for BPF on Solaris to "just work". To summarise, Solaris needs a few extra includes
@ -37,6 +37,12 @@ static const char rcsid[] _U_ = #include <sys/file.h> #include <sys/ioctl.h> #include <sys/utsname.h> +#ifdef HAVE_SYS_FCNTL_H +#include <sys/fcntl.h> +#endif +#ifdef HAVE_SYS_IOCCOM_H +#include <sys/ioccom.h> +#endif #ifdef HAVE_ZEROCOPY_BPF #include <machine/atomic.h>I presume fcntl.h is being included to define O_RDONLY and O_RDWR and to declare open(). If so, is there a reason not to include <fcntl.h>, which I think is the "standard" path, rather than including <sys/ fcntl.h>?
Why is <sys/ioccom.h> needed? If Solaris-with-BPF defines the ioctls in <net/bpf.h>, then <net/bpf.h> should include <sys/ioccom.h> - speaking as its creator, back in the SunOS 4.0 days, I can say that <sys/ioccom.h> was never intended to be included directly, but was intended to be included by other files that defined ioctls. (And, yes, the fact that <net/bpf.h> doesn't include <sys/ioccom.h> on various flavors of BSD is, indeed, a bug; I'll file bugs on whatever OSes don't have it include <sys/ioccom.h>. You should not have to include <sys/ioctl.h> before including <net/bpf.h>.)
and for BPF to be checked before DLPI. http://www.opensolaris.org/os/community/networking/files/libpcap.diff.gz
There are some other changes:@@ -725,6 +730,7 @@ pcap_read_bpf(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
#ifdef PCAP_FDDIPAD register int pad; #endif + struct bpf_hdr *bhp; #ifdef HAVE_ZEROCOPY_BPF int i; #endif@@ -827,7 +833,7 @@ pcap_read_bpf(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
/* * Loop through each packet. */ -#define bhp ((struct bpf_hdr *)bp) +#define bhpe ((struct bpf_hdr *)bp) ep = bp + cc; #ifdef PCAP_FDDIPAD pad = p->fddipad;@@ -856,6 +862,7 @@ pcap_read_bpf(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
} } + bhp = (struct bpf_hdr *)bp; caplen = bhp->bh_caplen; hdrlen = bhp->bh_hdrlen; datap = bp + hdrlen; What are those changes for? ("bhpe" is never used.) - This is the tcpdump-workers list. Visit https://cod.sandelman.ca/ to unsubscribe.
Current thread:
- libpcap changes required for BPF on Solaris Darren Reed (Apr 10)
- Re: libpcap changes required for BPF on Solaris Guy Harris (Apr 13)
- Re: libpcap changes required for BPF on Solaris Darren Reed (Apr 27)
- Re: libpcap changes required for BPF on Solaris Guy Harris (Apr 18)
- Re: libpcap changes required for BPF on Solaris Darren Reed (Apr 27)
- Re: libpcap changes required for BPF on Solaris Guy Harris (Apr 13)