| 123456789101112131415161718192021 |
- libpcap opens /dev/bpfX as O_RDONLY rather than O_RDWR. This
- affects applications which open BPF using pcap_open_live(),
- then get the fileno and try to use it to send packets. An
- example application having this problem with BGP is UCARP
- (http://www.ucarp.org/), which silently fails to send packets.
- See also: http://www.freebsd.org/cgi/query-pr.cgi?pr=72814
- Index: pcap-bpf.c
- --- pcap-bpf.c.orig 2003-11-22 01:06:28 +0100
- +++ pcap-bpf.c 2004-12-09 22:57:15 +0100
- @@ -468,6 +468,8 @@
- do {
- (void)snprintf(device, sizeof(device), "/dev/bpf%d", n++);
- - fd = open(device, O_RDONLY);
- + fd = open(device, O_RDWR);
- + if (fd < 0 && errno == EACCES)
- + fd = open(device, O_RDONLY);
- } while (fd < 0 && errno == EBUSY);
-
- /*
|