tcpdump mailing list archives

Re: Saving packets with libpcap in PCAPNG format


From: Martin Dubuc <martind1111 () gmail com>
Date: Tue, 6 Dec 2016 14:05:44 -0500

Has there been any discussions with folks from Apple that worked on the
PCAPNG API to donate there code to tcpdump project? I am sure many
(including Apple) would benefit from single source for this code as far as
maintenance is concerned.

Martin

On Tue, Dec 6, 2016 at 1:32 PM, Guy Harris <guy () alum mit edu> wrote:

On Dec 6, 2016, at 10:15 AM, Martin Dubuc <martind1111 () gmail com> wrote:

I am working on an application that requires to store packets in PCAPNG
format. My understanding is that there isn't support for saving packets
in
PCAPNG format in the current code base. I have noticed that Apple has
created an API in its custom version of libpcap (latest version can be
viewed at https://opensource.apple.com/source/libpcap/libpcap-67/
libpcap/
and is based on libpcap-1.7.4), and the extension seems to be open
source.

Open source *but* licensed under the Apple Public Source License Version
2.0:

        https://opensource.apple.com/apsl

which says:

        1.1      "Applicable Patent Rights" mean:  (a) in the case where
Apple is the grantor of rights, (i) claims of patents that are now or
hereafter acquired, owned by or assigned to Apple and (ii) that cover
subject matter contained in the Original Code, but only to the extent
necessary to use, reproduce and/or distribute the Original Code without
infringement; and (b) in the case where You are the grantor of rights, (i)
claims of patents that are now or hereafter acquired, owned by or assigned
to You and (ii) that cover subject matter in Your Modifications, taken
alone or in combination with Original Code.

        ...

        2.      Permitted Uses; Conditions & Restrictions.   Subject to
the terms and conditions of this License, Apple hereby grants You,
effective on the date You accept this License and download the Original
Code, a world-wide, royalty-free, non-exclusive license, to the extent of
Apple's Applicable Patent Rights and copyrights covering the Original Code,
to do the following:

        ...

        2.4     Third Party Rights.  You expressly acknowledge and agree
that although Apple and each Contributor grants the licenses to their
respective portions of the Covered Code set forth herein, no assurances are
provided by Apple or any Contributor that the Covered Code does not
infringe the patent or other intellectual property rights of any other
entity. Apple and each Contributor disclaim any liability to You for claims
brought by any other entity based on infringement of intellectual property
rights or otherwise. As a condition to exercising the rights and licenses
granted hereunder, You hereby assume sole responsibility to secure any
other intellectual property rights needed, if any. For example, if a third
party patent license is required to allow You to distribute the Covered
Code, it is Your responsibility to acquire that license before distributing
the Covered Code.

        3.      Your Grants.  In consideration of, and as a condition to,
the licenses granted to You under this License, You hereby grant to any
person or entity receiving or distributing Covered Code under this License
a non-exclusive, royalty-free, perpetual, irrevocable license, under Your
Applicable Patent Rights and other intellectual property rights (other than
patent) owned or controlled by You, to use, reproduce, display, perform,
modify, sublicense, distribute and Externally Deploy Your Modifications of
the same scope and extent as Apple's licenses under Sections 2.1 and 2.2
above.

        ...

        5.      Limitations on Patent License.   Except as expressly
stated in Section 2, no other patent rights, express or implied, are
granted by Apple herein.  Modifications and/or Larger Works may require
additional patent licenses from Apple which Apple may grant in its sole
discretion.

        ...

        12.     Termination.

        12.1    Termination.  This License and the rights granted
hereunder will terminate:

        (a)     automatically without notice from Apple if You fail to
comply with any term(s) of this License and fail to cure such breach within
30 days of becoming aware of such breach;
        (b)     immediately in the event of the circumstances described in
Section 13.5(b); or
        (c)     automatically without notice from Apple if You, at any
time during the term of this License, commence an action for patent
infringement against Apple; provided that Apple did not first commence an
action for patent infringement against You in that instance.

I'm not sure whether the patent-related clauses - especially the
"Termination" clause - would cause any vendors or distributors who
currently include libpcap under its patent-clause-free BSD license not to
want to include it if it includes patent clauses of that sort.

Is there a plan to merge this to the libpcap at some point? Or is there
plan to implement something else?

My inclination was to implement *some* APIs for reading files (pcapng or
pcap, using the same API, so programs can transparently *read* either file
type), with the full capabilities of pcapng supported, and for writing
pcapng files, with a separate implementation.

If we can get away with implementing Apple's API independently, under the
same BSD license as is used for the rest of libpcap, and that API can be
used to read either pcap or pcapng files, and it supports the full
capabilities of pcapng and allows support for future pcapng capabilities
(as well as vendor extensions), that would probably be the right choice;
otherwise, we'll implement a separate API, but try to do so in a way that
allows Apple to continue to provide their API.  (They don't document the
API in any man page other than the pcapng man page in the source, so they
might consider it a private interface and be willing to use a different
one, especially if, as I expect we'll do, we provide a version of tcpdump
that supports the new API if available.
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers


Current thread: