On 2015-04-29 at 21:18:24 +0200, Vadim Kochan <[email protected]> wrote: > From: Vadim Kochan <[email protected]> > > It might be related to the issue #73 noticed by > > Jon Schipp <[email protected]> > > where he pointed that netsniff-ng captures some extra packets. > > I observed this issue when I captured few Ethernet frames from > wireless device while I was sniffing Netlink monitor device (!!!), > especially under high load traffic (HD Video). > > It can be easy grepped: > > sudo netsniff-ng/netsniff-ng -i nlmon0 --less | grep <dev> > > where <dev> is the active high traffic device. > > Interesting observation was that issue appeared only in the beginning of > the sniffing, and after some investigation I came up to the conclusion > that issue might be caused when netsniff-ng creates RX ring through the > setsockopt where Linux registers device hook for any device (we did not > bind yet socket to the specified device), and I assumed that before > binding to the specified device Linux can caught for us some packets > from the other devices until netsniff-ng will bind socket to the > specified device. > > So fixed (I can't reproduce this anymore) by moving device binding > before attaching RX ring to the socket, in this case setsockopt consider > the bound device. > > Signed-off-by: Vadim Kochan <[email protected]> > --- > ring_rx.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ring_rx.c b/ring_rx.c > index 32d3f6d..56685e0 100644 > --- a/ring_rx.c > +++ b/ring_rx.c > @@ -231,10 +231,10 @@ void ring_rx_setup(struct ring *ring, int sock, size_t > size, int ifindex, > { > fmemset(ring, 0, sizeof(*ring)); > setup_rx_ring_layout(sock, ring, size, jumbo_support, v3); > + bind_ring_generic(sock, ring, ifindex, false); > create_rx_ring(sock, ring, verbose); > mmap_ring_generic(sock, ring); > alloc_rx_ring_frames(sock, ring); > - bind_ring_generic(sock, ring, ifindex, false); > join_fanout_group(sock, fanout_group, fanout_type); > prepare_polling(sock, poll);
Shouldn't mmap_ring_generic and alloc_rx_ring_frames be done before bind_ring_generic? How about moving create_rx_ring down instead of moving bind_ring_generic up? Daniel can probably comment better on how exactly the order should be and what the interdependecies are... Any comments? -- You received this message because you are subscribed to the Google Groups "netsniff-ng" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
