On Oct 7, 2012, at 11:52 PM, Joerg Mayer <[email protected]> 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 <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to