#include <stdint.h>
#include <sys/types.h>
#include <rte_mempool.h>
Go to the source code of this file.
|
rte_pcapng_t * | rte_pcapng_fdopen (int fd, const char *osname, const char *hardware, const char *appname, const char *comment) |
|
void | rte_pcapng_close (rte_pcapng_t *self) |
|
int | rte_pcapng_add_interface (rte_pcapng_t *self, uint16_t port, const char *ifname, const char *ifdescr, const char *filter) |
|
struct rte_mbuf * | rte_pcapng_copy (uint16_t port_id, uint32_t queue, const struct rte_mbuf *m, struct rte_mempool *mp, uint32_t length, enum rte_pcapng_direction direction, const char *comment) |
|
uint32_t | rte_pcapng_mbuf_size (uint32_t length) |
|
ssize_t | rte_pcapng_write_packets (rte_pcapng_t *self, struct rte_mbuf *pkts[], uint16_t nb_pkts) |
|
ssize_t | rte_pcapng_write_stats (rte_pcapng_t *self, uint16_t port, uint64_t ifrecv, uint64_t ifdrop, const char *comment) |
|
RTE pcapng
Pcapng is an evolution from the pcap format, created to address some of its deficiencies. Namely, the lack of extensibility and inability to store additional information.
For details about the file format see RFC: https://www.ietf.org/id/draft-tuexen-opsawg-pcapng-03.html and https://github.com/pcapng/pcapng/
Definition in file rte_pcapng.h.
◆ rte_pcapng_direction
Direction flag These should match Enhanced Packet Block flag bits
Definition at line 95 of file rte_pcapng.h.
◆ rte_pcapng_fdopen()
rte_pcapng_t* rte_pcapng_fdopen |
( |
int |
fd, |
|
|
const char * |
osname, |
|
|
const char * |
hardware, |
|
|
const char * |
appname, |
|
|
const char * |
comment |
|
) |
| |
Write data to existing open file
- Parameters
-
fd | file descriptor |
osname | Optional description of the operating system. Examples: "Debian 11", "Windows Server 22" |
hardware | Optional description of the hardware used to create this file. Examples: "x86 Virtual Machine" |
appname | Optional: application name recorded in the pcapng file. Example: "dpdk-dumpcap 1.0 (DPDK 20.11)" |
comment | Optional comment to add to file header. |
- Returns
- handle to library, or NULL in case of error (and rte_errno is set).
◆ rte_pcapng_close()
void rte_pcapng_close |
( |
rte_pcapng_t * |
self | ) |
|
Close capture file
- Parameters
-
◆ rte_pcapng_add_interface()
int rte_pcapng_add_interface |
( |
rte_pcapng_t * |
self, |
|
|
uint16_t |
port, |
|
|
const char * |
ifname, |
|
|
const char * |
ifdescr, |
|
|
const char * |
filter |
|
) |
| |
Add interface information to the capture file
- Parameters
-
self | The handle to the packet capture file |
port | The Ethernet port to report stats on. |
ifname | (optional) Interface name to record in the file. If not specified, name will be constructed from port |
ifdescr | (optional) Interface description to record in the file. |
filter | Capture filter to record in the file. |
Interfaces must be added to the output file after opening and before any packet record. All ports used in packet capture must be added.
◆ rte_pcapng_copy()
Format an mbuf for writing to file.
- Parameters
-
port_id | The Ethernet port on which packet was received or is going to be transmitted. |
queue | The queue on the Ethernet port where packet was received or is going to be transmitted. |
mp | The mempool from which the "clone" mbufs are allocated. |
m | The mbuf to copy |
length | The upper limit on bytes to copy. Passing UINT32_MAX means all data (after offset). |
direction | The direction of the packer: receive, transmit or unknown. |
comment | Packet comment. |
- Returns
- The pointer to the new mbuf formatted for pcapng_write
- NULL if allocation fails.
◆ rte_pcapng_mbuf_size()
uint32_t rte_pcapng_mbuf_size |
( |
uint32_t |
length | ) |
|
Determine optimum mbuf data size.
- Parameters
-
length | The largest packet that will be copied. |
- Returns
- The minimum size of mbuf data to handle packet with length bytes. Accounting for required header and trailer fields
◆ rte_pcapng_write_packets()
ssize_t rte_pcapng_write_packets |
( |
rte_pcapng_t * |
self, |
|
|
struct rte_mbuf * |
pkts[], |
|
|
uint16_t |
nb_pkts |
|
) |
| |
Write packets to the capture file.
Packets to be captured are copied by rte_pcapng_copy() and then this function is called to write them to the file.
- Warning
- Do not pass original mbufs from transmit or receive or file will be invalid pcapng format.
- Parameters
-
self | The handle to the packet capture file |
pkts | The address of an array of nb_pkts pointers to rte_mbuf structures which contain the output packets |
nb_pkts | The number of packets to write to the file. |
- Returns
- The number of bytes written to file, -1 on failure to write file. The mbuf's in pkts are always freed.
◆ rte_pcapng_write_stats()
ssize_t rte_pcapng_write_stats |
( |
rte_pcapng_t * |
self, |
|
|
uint16_t |
port, |
|
|
uint64_t |
ifrecv, |
|
|
uint64_t |
ifdrop, |
|
|
const char * |
comment |
|
) |
| |
Write an Interface statistics block. For statistics, use 0 if don't know or care to report it. Should be called before closing capture to report results.
- Parameters
-
self | The handle to the packet capture file |
port | The Ethernet port to report stats on. |
ifrecv | The number of packets received by capture. Optional: use UINT64_MAX if not known. |
ifdrop | The number of packets missed by the capture process. Optional: use UINT64_MAX if not known. |
comment | Optional comment to add to statistics. |
- Returns
- number of bytes written to file, -1 on failure to write file