tcpdump mailing list archives
Re: vlan tagged packets and libpcap breakage
From: Ani Sinha <ani () aristanetworks com>
Date: Thu, 6 Dec 2012 13:20:11 -0800
On Wed, Oct 31, 2012 at 5:50 PM, Guy Harris <guy () alum mit edu> wrote:
On Oct 31, 2012, at 3:35 PM, Ani Sinha <ani () aristanetworks com> wrote:yes but if the packet is passed to the filter within libpcap (when we are not using the kernel filter) before the reinsertion,...that would be a bug. Currently, that bug doesn't exist in the recvfrom() code path, but *does* appear to exist in the tpacket code path - and that code path also runs the filter before the SLL header is constructed. That should be fixed.
Something like this? Index: libpcap-1.1.1/pcap-linux.c =================================================================== --- libpcap-1.1.1.orig/pcap-linux.c +++ libpcap-1.1.1/pcap-linux.c @@ -132,6 +132,7 @@ static const char rcsid[] _U_ = #include <sys/utsname.h> #include <sys/mman.h> #include <linux/if.h> +#include <linux/if_packet.h> #include <netinet/in.h> #include <linux/if_ether.h> #include <net/if_arp.h> @@ -3469,23 +3476,6 @@ pcap_read_linux_mmap(pcap_t *handle, int return -1; } - /* run filter on received packet - * If the kernel filtering is enabled we need to run the - * filter until all the frames present into the ring - * at filter creation time are processed. - * In such case md.use_bpf is used as a counter for the - * packet we need to filter. - * Note: alternatively it could be possible to stop applying - * the filter when the ring became empty, but it can possibly - * happen a lot later... */ - bp = (unsigned char*)h.raw + tp_mac; - run_bpf = (!handle->md.use_bpf) || - ((handle->md.use_bpf>1) && handle->md.use_bpf--); - if (run_bpf && handle->fcode.bf_insns && - (bpf_filter(handle->fcode.bf_insns, bp, - tp_len, tp_snaplen) == 0)) - goto skip; - /* * Do checks based on packet direction. */ @@ -3582,6 +3576,23 @@ pcap_read_linux_mmap(pcap_t *handle, int } #endif + /* run filter on received packet + * If the kernel filtering is enabled we need to run the + * filter until all the frames present into the ring + * at filter creation time are processed. + * In such case md.use_bpf is used as a counter for the + * packet we need to filter. + * Note: alternatively it could be possible to stop applying + * the filter when the ring became empty, but it can possibly + * happen a lot later... */ + bp = (unsigned char*)h.raw + tp_mac; + run_bpf = (!handle->md.use_bpf) || + ((handle->md.use_bpf>1) && handle->md.use_bpf--); + if (run_bpf && handle->fcode.bf_insns && + (bpf_filter(handle->fcode.bf_insns, bp, + tp_len, tp_snaplen) == 0)) + goto skip; + /* * The only way to tell the kernel to cut off the * packet at a snapshot length is with a filter program; _______________________________________________ tcpdump-workers mailing list tcpdump-workers () lists tcpdump org https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers
Current thread:
- vlan tagged packets and libpcap breakage Ani Sinha (Oct 31)
- Message not available
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Oct 31)
- Re: vlan tagged packets and libpcap breakage Guy Harris (Nov 01)
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Oct 31)
- Re: vlan tagged packets and libpcap breakage Guy Harris (Nov 01)
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Oct 31)
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Dec 06)
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Oct 31)
- Re: vlan tagged packets and libpcap breakage Bill Fenner (Nov 11)
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Nov 13)
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Nov 13)
- Re: vlan tagged packets and libpcap breakage Michael Richardson (Nov 14)
- Message not available
- Re: vlan tagged packets and libpcap breakage Eric W. Biederman (Nov 18)
- Message not available
- Re: vlan tagged packets and libpcap breakage Daniel Borkmann (Nov 18)
- Re: vlan tagged packets and libpcap breakage Eric W. Biederman (Nov 18)
- Message not available
- Re: vlan tagged packets and libpcap breakage Eric W. Biederman (Nov 18)
- Re: vlan tagged packets and libpcap breakage Ani Sinha (Dec 06)
- Re: vlan tagged packets and libpcap breakage Eric W. Biederman (Dec 06)