pcap: Add an offset argument in pcap_iov()

The offset is passed directly to pcap_frame() and allows
any headers that are not part of the frame to
capture to be skipped.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Laurent Vivier 2024-10-03 16:51:05 +02:00 committed by Stefano Brivio
parent 72e7d3024b
commit fd8334b25d
2 changed files with 4 additions and 3 deletions

5
pcap.c
View file

@ -138,9 +138,10 @@ void pcap_multiple(const struct iovec *iov, size_t frame_parts, unsigned int n,
* @iov: Pointer to the array of struct iovec describing the I/O vector * @iov: Pointer to the array of struct iovec describing the I/O vector
* containing packet data to write, including L2 header * containing packet data to write, including L2 header
* @iovcnt: Number of buffers (@iov entries) * @iovcnt: Number of buffers (@iov entries)
* @offset: Offset of the L2 frame within the full data length
*/ */
/* cppcheck-suppress unusedFunction */ /* cppcheck-suppress unusedFunction */
void pcap_iov(const struct iovec *iov, size_t iovcnt) void pcap_iov(const struct iovec *iov, size_t iovcnt, size_t offset)
{ {
struct timespec now; struct timespec now;
@ -148,7 +149,7 @@ void pcap_iov(const struct iovec *iov, size_t iovcnt)
return; return;
clock_gettime(CLOCK_REALTIME, &now); clock_gettime(CLOCK_REALTIME, &now);
pcap_frame(iov, iovcnt, 0, &now); pcap_frame(iov, iovcnt, offset, &now);
} }
/** /**

2
pcap.h
View file

@ -9,7 +9,7 @@
void pcap(const char *pkt, size_t l2len); void pcap(const char *pkt, size_t l2len);
void pcap_multiple(const struct iovec *iov, size_t frame_parts, unsigned int n, void pcap_multiple(const struct iovec *iov, size_t frame_parts, unsigned int n,
size_t offset); size_t offset);
void pcap_iov(const struct iovec *iov, size_t iovcnt); void pcap_iov(const struct iovec *iov, size_t iovcnt, size_t offset);
void pcap_init(struct ctx *c); void pcap_init(struct ctx *c);
#endif /* PCAP_H */ #endif /* PCAP_H */