Wireshark mailing list archives

Re: [Wireshark-bugs] [Bug 7808] libnl3 compatibility


From: Guy Harris <guy () alum mit edu>
Date: Mon, 8 Oct 2012 00:59:23 -0700


On Oct 7, 2012, at 11:52 PM, Joerg Mayer <jmayer () loplof de> wrote:

- Why do we do things in Wireshark that belong into libpcap?

Because, for better or worse, Wireshark releases happen faster than libpcap releases?

Because Wireshark supports versions of libpcap other than "what's on the trunk", so it has to cope with older versions 
of libpcap?

Because OSes may not have the latest shiniest version of libpcap?

Because putting stuff in libpcap requires that a reasonably future-proof API be provided for it?

I.e., there's a bunch of stuff that should be done in libpcap but that's

        1) not done in libpcap yet, and we shouldn't hold up support in Wireshark waiting for that

or

        2) is done in libpcap, but not all the platforms on which people might want to use the feature have the latest 
shiniest libpcap with support for it.

 Shouldn't the whole wireless low level stuff be in libpcap and
 Wireshark/dumpcap would only call libpcap for that?

Yes, ideally.

The main reason why Wireshark links with libnl is to support channel changing for 802.11 capture.  Doing that in 
libpcap on Linux is probably not too painful (but would require that the current code be transplanted to libpcap - 
which means relicensing it with a BSD license - or reimplemented in BSD-licensed code), and doing it in *BSD is 
probably not too painful either.

Doing it on OS X is a bit more annoying, as there's no low-level C library that provides APIs for doing that; the 
choices are

        1) using CoreWLAN, which is an Objective-C framework (which can be called from C; hopefully it only drags in 
the Objective-C runtime and the Foundation framework, without dragging in AppKit or something really bogus such as 
that), and which Apple hopefully won't balk at doing if that's required for updating OS X's libpcap to a version that 
supports changing channels

and

        2) reverse-engineered low-level ioctls, the headers for which are, I think, available in older open-source 
releases of XNU but are licensed under the Apple Public Source License which has patent clauses that might keep other 
OSes from picking up that version of libpcap.

Designing a libpcap API for that also involves some level of future-proofing - an API that can't support 802.11ac or 
802.11ad would not be ideal.

- There's other stuff as well, as the still existing split between
 Winpcap and libpcap which causes lots of ugly #ifdefs

That's a combination of

        1) libpcap not yet supporting remote capture (another item on my to-do list; I want to make sure it's Done 
Right, which means "works with pcap_create()/pcap_activate()" and "the API is extensible enough to handle 
authentication mechanisms other than username/password and capture mechanisms other than rpcap", which could include 
"running tcpdump or dumpcap over ssh" as well as "running rpcap over TLS")

and

        2) WinPcap not being up-to-date with libpcap (which is why you can't read pcap-NG files with WinDump but you 
can with tcpdump on a number of UN*X platforms).

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: