Wireshark-bugs: [Wireshark-bugs] [Bug 475] Add Buffer Size to Capture Preferences window
Date: Wed, 30 Dec 2009 17:47:12 -0800 (PST)
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=475 --- Comment #8 from Guy Harris <guy@xxxxxxxxxxxx> 2009-12-30 17:47:10 PST --- > Ok, so this is a difference between using pcap_open_live() and pcap_create()/pcap_activate()? Because I can capture with 802.11 headers when using pcap_open_live(), but I'm unable to select linktype when using pcap_create()/pcap_activate(). Yes, it is an intentional difference. On some platforms (such as one rhyming with "Finnux" :-)), with at least some adapters and drivers, the *only* way to determine what link-layer header types are available in monitor mode is to go into monitor mode and find out what link-layer header type is provided. On others, such as Mac OS X Leopard and later, the OS gives you a list of link-layer header types, and some of them implicitly turn on monitor mode (all the 802.11 link-layer header types are available only in monitor mode. On still others, such as *BSD, monitor mode is independent of link-layer header type (although monitor mode plus Ethernet headers makes sense only if you see only data frames, and might not work - you can, however, get 802.11 headers, or 802.11 headers plus radio headers, even if you're not in monitor mode). Mac OS X Tiger is a bit more complicated - you have the "enN" device, which doesn't run in monitor mode and gives you only Ethernet headers, and the "wltN" device device, which always runs in monitor mode and gives you 802.11 headers. The pcap_create()/pcap_activate() behavior was chosen so as to make it work in as similar a fashion as possible on all platforms, so that applications don't have to care how the platform behaves. If you select monitor mode, you get, by default, the "best" 802.11 header type (radiotap beats AVS, AVS beats Prism, Prism beats no radio, and "beats" is a transitive relation). For backwards compatibility, if you use pcap_open_live() on Mac OS X Leopard and later, you get all the link-layer types when you ask for a list of link-layer types, and can select any of those link-layer types. > Does pcap_open_live() "set rfmon" behind the scenes? No. "Set rfmon" is done *very* differently on different platforms (and even differently between OS X Tiger and OS X Leopard-and-later) - go take a look at top-of-Git-tree libpcap's pcap-linux.c for the steaming pile of code I wrote for Linux, and then see pcap-bpf.c for the not-quite-as-high-but-still-a-bit-steamy pile of code for *BSD and Mac OS X. pcap_set_datalink(), on systems with BPF, just does the ioctl to set the link-layer header type; if you do that ioctl on an AirPort device in OS X Leopard and later, and the link-layer header type is an 802.11-header type, that turns on monitor mode. On OS X Leopard and later, pcap_activate() does that ioctl behind the scenes if you've requested monitor mode. > I really just want the old behaviour. I do not want to introduce a "monitor mode" option at this point, just introduce "set buffer size". And I'm using Mac OS X 10.6 here. Unfortunately, BPF doesn't let you set the buffer size once you've bound the BPF device to an adapter, so the desired buffer size has to be known before the BPF device is bound to the adapter. Thus, it's un-implementable with pcap_open_live(); my original proposal on tcpdump-workers was a new "open live capture" call with an extensible list of options, but the consensus we reached was the pcap_create()/pcap_activate() scheme, where you do a pcap_create(), make calls to set open options, and do a pcap_activate(). That means you have to use pcap_create() and pcap_activate() if you want to set the buffer size, and thus have to offer an explicit "monitor mode" option as well if you're going to support monitor mode on OS X. If you want to hand this over to me, go ahead, given that I'm the person who put all that monitor mode stuff into libpcap in the first place. -- Configure bugmail: https://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.
- Prev by Date: [Wireshark-bugs] [Bug 475] Add Buffer Size to Capture Preferences window
- Next by Date: [Wireshark-bugs] [Bug 1546] Statistics routine stats_tree_get_strs_from_node in (stats_tree.c) use milliseconds to calculate Rate
- Previous by thread: [Wireshark-bugs] [Bug 475] Add Buffer Size to Capture Preferences window
- Next by thread: [Wireshark-bugs] [Bug 475] Add Buffer Size to Capture Preferences window
- Index(es):