$NetBSD: patch-ad,v 1.1 2006/02/24 22:53:41 drochner Exp $ --- pcap-bpf.c.orig 2006-02-24 23:23:45.000000000 +0100 +++ pcap-bpf.c @@ -34,6 +34,9 @@ static const char rcsid[] _U_ = #include #include #include +#ifdef __NetBSD__ +#include +#endif #include @@ -523,8 +526,12 @@ static inline int bpf_open(pcap_t *p, char *errbuf) { int fd; +#ifndef _PATH_BPF int n = 0; char device[sizeof "/dev/bpf0000000000"]; +#else + const char *device = _PATH_BPF; +#endif #ifdef _AIX /* @@ -536,6 +543,7 @@ bpf_open(pcap_t *p, char *errbuf) return (-1); #endif +#ifndef _PATH_BPF /* * Go through all the minors and find one that isn't in use. */ @@ -566,6 +574,12 @@ bpf_open(pcap_t *p, char *errbuf) if (fd < 0) snprintf(errbuf, PCAP_ERRBUF_SIZE, "(no devices found) %s: %s", device, pcap_strerror(errno)); +#else + if ((fd = open(device, O_RDWR)) == -1 && + (errno != EACCES || (fd = open(device, O_RDONLY)) == -1)) + snprintf(errbuf, PCAP_ERRBUF_SIZE, + "(cannot open device) %s: %s", device, pcap_strerror(errno)); +#endif return (fd); }