Helper class for dealing with libpcap handles.
More...
#include <daemon/face/pcap-helper.hpp>
|
| PcapHelper (const std::string &interfaceName) |
| Create a libpcap context for live packet capture on a network interface. More...
|
|
| ~PcapHelper () noexcept |
|
void | activate (int dlt) |
| Start capturing packets. More...
|
|
void | close () noexcept |
| Stop capturing and close the handle. More...
|
|
int | getFd () const |
| Obtain a file descriptor that can be used in calls such as select(2) and poll(2). More...
|
|
std::string | getLastError () const noexcept |
| Get last error message. More...
|
|
size_t | getNDropped () const |
| Get the number of packets dropped by the kernel, as reported by libpcap. More...
|
|
| operator pcap_t * () const noexcept |
|
std::tuple< span< const uint8_t >, std::string > | readNextPacket () const noexcept |
| Read the next packet captured on the interface. More...
|
|
void | setPacketFilter (const char *filter) const |
| Install a BPF filter on the receiving socket. More...
|
|
Helper class for dealing with libpcap handles.
Definition at line 44 of file pcap-helper.hpp.
◆ PcapHelper()
nfd::face::PcapHelper::PcapHelper |
( |
const std::string & |
interfaceName | ) |
|
|
explicit |
Create a libpcap context for live packet capture on a network interface.
- Exceptions
-
- See also
- pcap_create(3pcap)
Definition at line 40 of file pcap-helper.cpp.
◆ ~PcapHelper()
nfd::face::PcapHelper::~PcapHelper |
( |
| ) |
|
|
noexcept |
◆ activate()
void nfd::face::PcapHelper::activate |
( |
int |
dlt | ) |
|
Start capturing packets.
- Parameters
-
dlt | The link-layer header type to be used. |
- Exceptions
-
- See also
- pcap_activate(3pcap), pcap_set_datalink(3pcap)
Definition at line 64 of file pcap-helper.cpp.
◆ close()
void nfd::face::PcapHelper::close |
( |
| ) |
|
|
noexcept |
Stop capturing and close the handle.
- See also
- pcap_close(3pcap)
Definition at line 84 of file pcap-helper.cpp.
◆ getFd()
int nfd::face::PcapHelper::getFd |
( |
| ) |
const |
Obtain a file descriptor that can be used in calls such as select(2) and poll(2).
- Precondition
- activate() has been called.
- Returns
- A selectable file descriptor. It is the caller's responsibility to close the fd.
- Exceptions
-
- See also
- pcap_get_selectable_fd(3pcap)
Definition at line 93 of file pcap-helper.cpp.
◆ getLastError()
std::string nfd::face::PcapHelper::getLastError |
( |
| ) |
const |
|
noexcept |
Get last error message.
- Returns
- Human-readable explanation of the last libpcap error.
- Warning
- The behavior is undefined if no error occurred.
- See also
- pcap_geterr(3pcap)
Definition at line 105 of file pcap-helper.cpp.
◆ getNDropped()
size_t nfd::face::PcapHelper::getNDropped |
( |
| ) |
const |
Get the number of packets dropped by the kernel, as reported by libpcap.
- Exceptions
-
- See also
- pcap_stats(3pcap)
Definition at line 111 of file pcap-helper.cpp.
◆ operator pcap_t *()
nfd::face::PcapHelper::operator pcap_t * |
( |
| ) |
const |
|
inlinenoexcept |
◆ readNextPacket()
std::tuple< span< const uint8_t >, std::string > nfd::face::PcapHelper::readNextPacket |
( |
| ) |
const |
|
noexcept |
Read the next packet captured on the interface.
- Returns
- If successful, returns a tuple containing a read-only view of the received packet bytes (including the link-layer header) and a second element that must be ignored. On failure, returns a tuple containing an empty span and the reason for the failure.
- Warning
- The returned span is valid only until the next call to this function.
- See also
- pcap_next_ex(3pcap)
Definition at line 134 of file pcap-helper.cpp.
◆ setPacketFilter()
void nfd::face::PcapHelper::setPacketFilter |
( |
const char * |
filter | ) |
const |
Install a BPF filter on the receiving socket.
- Parameters
-
filter | Null-terminated string containing the BPF program source. |
- Precondition
- activate() has been called.
- Exceptions
-
- See also
- pcap_setfilter(3pcap), pcap-filter(7)
Definition at line 121 of file pcap-helper.cpp.