From cacb34f95fb7937e81b1fe8add7b5dca91e3a4c5 Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Fri, 31 May 2013 12:11:09 +0200 Subject: ring: setup frame structure for v2/v3 in a generic way Prepare TPACKET_V3 for allowing to transparently setting up the frame structure such that we do not need to change much in the netsniff-ng/trafgen code. Signed-off-by: Daniel Borkmann --- ring.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'ring.c') diff --git a/ring.c b/ring.c index 2899df3..c5d2d99 100644 --- a/ring.c +++ b/ring.c @@ -27,18 +27,17 @@ void mmap_ring_generic(int sock, struct ring *ring) panic("Cannot mmap {TX,RX}_RING!\n"); } -void alloc_ring_frames_generic(struct ring *ring) +void alloc_ring_frames_generic(struct ring *ring, int num, size_t size) { int i; - size_t len = ring->layout.tp_frame_nr * sizeof(*ring->frames); + size_t len = num * sizeof(*ring->frames); ring->frames = xmalloc_aligned(len, CO_CACHE_LINE_SIZE); fmemset(ring->frames, 0, len); - for (i = 0; i < ring->layout.tp_frame_nr; ++i) { - ring->frames[i].iov_len = ring->layout.tp_frame_size; - ring->frames[i].iov_base = ring->mm_space + - (i * ring->layout.tp_frame_size); + for (i = 0; i < num; ++i) { + ring->frames[i].iov_len = size; + ring->frames[i].iov_base = ring->mm_space + (i * size); } } -- cgit v1.2.3-54-g00ecf