rte_pcapng.h(3)
π rte_pcapng.h π
okay bestie, so this is the manual page for rte_pcapng.h from the DPDK library β it's section 3 (that's the library functions section, iykyk). Buckle up, we're writing packet capture files and it's gonna be iconic. π¦
β¨ NAME β¨
rte_pcapng.h β the header that gives you pcapng file writing powers, no cap. π
β¨ SYNOPSIS β¨
#include <stdint.h>
#include <sys/types.h>
#include <rte_mempool.h>
π Enumerations
enum rte_pcapng_direction
π Functions
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,
uint16_t link_type, 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)
πΈ Detailed Description πΈ
RTE pcapng
So pcapng is literally pcap's glow-up era. β¨ It exists because old pcap had some real deficiencies β namely, the lack of extensibility and the inability to store additional information. Pcapng said "not me being stuck like that" and reinvented itself. π
For the full tea on the file format, check the RFC: https://www.ietf.org/id/draft-tuexen-opsawg-pcapng-03.html and https://github.com/pcapng/pcapng/
Definition in file rte_pcapng.h.
π§ Enumeration Type Documentation π§
enum rte_pcapng_direction
Direction flag. These should match Enhanced Packet Block flag bits.
Definition at line 105 of file rte_pcapng.h.
π Function Documentation π
rte_pcapng_t * rte_pcapng_fdopen (int fd, const char * osname, const char * hardware, const char * appname, const char * comment)
Write data to an existing open file. π
Parameters
fdβ file descriptorosnameβ 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).
void rte_pcapng_close (rte_pcapng_t * self)
Close the capture file. bye bestie π
Parameters
selfβ handle to library
int rte_pcapng_add_interface (rte_pcapng_t * self, uint16_t port, uint16_t link_type, const char * ifname, const char * ifdescr, const char * filter)
Add interface information to the capture file.
Parameters
selfβ The handle to the packet capture fileportβ The Ethernet port to report stats on.link_typeβ The link type (e.g.,DLT_EN10MB).ifnameβ (optional) Interface name to record in the file. If not specified, name will be constructed fromportifdescrβ (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. periodt.
Returns
number of bytes written to file, -1 on failure
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)
Format an mbuf for writing to file. it's giving β¨formattedβ¨
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 copylengthβ The upper limit on bytes to copy. PassingUINT32_MAXmeans 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 NULLon error such as invalid port or out of memory.
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
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. fr fr, don't do it.
Parameters
selfβ The handle to the packet capture filepktsβ The address of an array ofnb_pktspointers torte_mbufstructures which contain the output packetsnb_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.
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 fileportβ The Ethernet port to report stats on.ifrecvβ The number of packets received by capture. Optional: useUINT64_MAXif not known.ifdropβ The number of packets missed by the capture process. Optional: useUINT64_MAXif not known.commentβ Optional comment to add to statistics.
Returns
On success number of bytes written to file, -1 on failure to write file (and errno is set)
- (
-EINVAL) if bad parameter. - (
-ENOMEM) if unable to allocate resources.
π Author π
Generated automatically by Doxygen for DPDK from the source code. (yes the robots wrote it, we just gave it a makeover π )
and that's the whole page, bestie!! this was DPDK, Version 25.11.3, rte_pcapng.h(3) β go forth and capture packets responsibly, mwah π«Άβ¨
π¦ where this page comes from
- ubuntu resolute: dpdk-doc 25.11.3-0ubuntu0.26.04.1 Β· BSD-3-Clause
- ubuntu stonking: dpdk-doc 25.11.3-1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms