tcpdump mailing list archives
Re: Libpcap reentrancy and PF_RING patch
From: Guy Harris <guy () alum mit edu>
Date: Thu, 10 Jan 2008 18:40:23 -0800
On Jan 6, 2008, at 12:54 PM, Guy Harris wrote:
Would it work better if, for PF_RING sockets, there were a separate pcap_read_pf_ring, and handle->read_op were set to pcap_read_pf_ring if a PF_RING socket were being used? That'd avoid some per-packet checks in the read_op routine, and might involve fewer #ifdefs as well.
For that matter, should there be a separate live_open_pf_ring() routine, with that routine called first and, if it fails (e.g., because the system doesn't have PF_RING support), live_open_new() called? From a quick look at the libpfring code, at least some of the code path in live_open_new() that appears to be used with PF_RING doesn't need to be, such as the code to use the PACKET_ADD_MEMBERSHIP socket option to turn promiscuous mode on.
(Speaking of which, again, from looking at the libpfring code, it appears that it uses the old SIOCGIFFLAGS/SIOCSIFFLAGS mechanism for controlling promiscuous mode; to quote a comment early in pcap- linux.c, explaining the problems with the old PF_INET/SOCK_PACKET sockets:
* - We have to set the interface's IFF_PROMISC flag ourselves, if * we're to run in promiscuous mode, which means we have to turn * it off ourselves when we're done; the kernel doesn't keep track * of how many sockets are listening promiscuously, which means * it won't get turned off automatically when no sockets are * listening promiscuously. We catch "pcap_close()" and, for * interfaces we put into promiscuous mode, take them out of * promiscuous mode - which isn't necessarily the right thing to * do, if another socket also requested promiscuous mode between * the time when we opened the socket and the time when we close * the socket.Is there a way to use a mechanism such as the PACKET_ADD_MEMBERSHIP socket option with PF_RING sockets, and, if so, will the socket keep track of both PF_PACKET and PF_RING sockets, and shut promiscuous mode off only if *neither* of those types of sockets are using promiscuous mode?)
- This is the tcpdump-workers list. Visit https://cod.sandelman.ca/ to unsubscribe.
Current thread:
- Re: Libpcap reentrancy and PF_RING patch, (continued)
- Re: Libpcap reentrancy and PF_RING patch Luca Deri (Jan 02)
- Re: Libpcap reentrancy and PF_RING patch Paolo Abeni (Jan 03)
- Re: Libpcap reentrancy and PF_RING patch Luca Deri (Jan 02)
- Re: Libpcap reentrancy and PF_RING patch Luca Deri (Jan 02)
- Re: Libpcap reentrancy and PF_RING patch Gregor Maier (Jan 07)
- Re: Libpcap reentrancy and PF_RING patch Luca Deri (Jan 02)
- Re: Libpcap reentrancy and PF_RING patch Guy Harris (Jan 05)
- Re: Libpcap reentrancy and PF_RING patch Luca Deri (Jan 06)
- Re: Libpcap reentrancy and PF_RING patch Guy Harris (Jan 06)
- Re: Libpcap reentrancy and PF_RING patch Luca Deri (Jan 06)
- Re: Libpcap reentrancy and PF_RING patch Guy Harris (Jan 06)
- Re: Libpcap reentrancy and PF_RING patch Guy Harris (Jan 10)
- Re: Libpcap reentrancy and PF_RING patch Luca Deri (Jan 22)
- Re: Libpcap reentrancy and PF_RING patch Guy Harris (Jan 24)
- Re: Libpcap reentrancy and PF_RING patch Guy Harris (Jan 05)