| Main index | Section 3 | Options |
#include <pcap/pcap.h>int pcap_get_selectable_fd(pcap_t *p);
Some network devices opened with pcap_create(3) and pcap_activate(3), or with pcap_open_live(3), do not support those calls (for example, regular network devices on FreeBSD 4.3 and 4.4, and Endace DAG devices), so -1 is returned for those devices. In that case, those calls must be given a timeout less than or equal to the timeout returned by pcap_get_required_select_timeout(3) for the device for which pcap_get_selectable_fd() returned -1, the device must be put in non-blocking mode with a call to pcap_setnonblock(3), and an attempt must always be made to read packets from the device when the call returns. If pcap_get_required_select_timeout() returns NULL, it is not possible to wait for packets to arrive on the device in an event loop.
Note that a device on which a read can be done without blocking may, on some platforms, not have any packets to read if the packet buffer timeout has expired. A call to pcap_dispatch(3) or pcap_next_ex(3) will return 0 in this case, but will not block.
Note that in:
| FreeBSD prior to FreeBSD 4.6; | |
| NetBSD prior to NetBSD 3.0; | |
| OpenBSD prior to OpenBSD 2.4; | |
| Mac OS X prior to Mac OS X 10.7; | |
Note also that poll() and kevent() doesn't work on character special files, including BPF devices, in Mac OS X 10.4 and 10.5, so, while select() can be used on the descriptor returned by pcap_get_selectable_fd(), poll() and kevent() cannot be used on it those versions of Mac OS X. poll(), but not kevent(), works on that descriptor in Mac OS X releases prior to 10.4; poll() and kevent() work on that descriptor in Mac OS X 10.6 and later.
pcap_get_selectable_fd() is not available on Windows.
| 29 January 2020 | PCAP_GET_SELECTABLE_FD (3) |
| Main index | Section 3 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
| “ | As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs. | ” |
| — Maurice Wilkes | ||