Annotation of embedaddon/libnet/ChangeLog.md, revision 1.1

1.1     ! misho       1: Change Log
        !             2: ==========
        !             3: 
        !             4: All relevant changes are documented in this file.  For a complete list
        !             5: of contributors, see the GIT commit log.
        !             6: 
        !             7: 
        !             8: [v1.2][] - 2019-10-16
        !             9: ---------------------
        !            10: 
        !            11: Release curated by Sam Roberts and Joachim Nilsson.
        !            12: 
        !            13: ### Changes
        !            14: 
        !            15: - Removed Lua bindings from repo and dist files, now available separately
        !            16: - Removed generated HTML and Nroff (man pages) documentation files, must
        !            17:   be regenerated with Doxygen using `make doc`
        !            18: - Add `pkg-config` support with `libnet.pc`, replaces `libnet-config`
        !            19:   tool, although it is kept for compatibility for now
        !            20: - Factorize socket setup code for socket opening to provide output
        !            21:   device selection for IPv4
        !            22: - Make `libnet_get_hwaddr()` work with 802.1q interfaces in bpf (BSD)
        !            23: - New API for OSPF HELLO messages, with neighbor
        !            24: 
        !            25: ### Fixes
        !            26: 
        !            27: - Use `getifaddrs()` on OpnBSD and Linux
        !            28: - For samples, `netinet/in.h` is not on windows
        !            29: - Fix errors with missing `IPPROTO_MH` on windows
        !            30: - Fix build error on Mac OS X
        !            31: - Fix #34 checksum caculation when IPv6 extension headers being used
        !            32: - Remove unneeded trailing `-Wl` from `-version-info` line
        !            33: - `libnet_build_snmp()` fix warning
        !            34: - Use `LIBNET_*RESOLVE` const in `libnet_name2addr*`
        !            35: - Fix i486 sample synflood6 warning
        !            36: - Some samples need `#include<netinet/in.h>` for `IPPROTO_*` on OpenBSD 5.2
        !            37: - Fix gcc warnings
        !            38: - Check for `socklen_t`.  Suggested by g.esp and Stefanos Harhalakis
        !            39: - libnet: update for obsolete INCLUDE directive
        !            40: - Fix warning inside comment
        !            41: - Automatic link options `#pragma comment(lib, ...)` are only for MSVC
        !            42: - Fix several warnings for MS C/C++ compiler
        !            43: - `libnet_open_raw4()` doesn't return a SOCKET on win32
        !            44: - Fixes error messages sometimes include newline, sometimes not
        !            45: - Properly set `l->err_buf` if `libnet_ifaddrlist()` fails
        !            46: - dlpi: Try harder to find the device for the interface
        !            47: - dlpi: Correctly extract unit number from devices with numbers in their name
        !            48: - Make interface selection work for interfaces with multiple addresses
        !            49: - Fix memory leak, device list needs to freed after use
        !            50: - Fix file descriptor leak in `libnet_ifaddrlist()`
        !            51: - Fix `libnet_get_hwaddr()` for large(!) number of interfaces
        !            52: - Fix to support musl libc, removes support for GLIBC <2.1
        !            53: - Fix win32 buffer overrun in `libnet_get_ipaddr4()`
        !            54: - Interface selection was ignoring interfaces with IPv6
        !            55: - Use `LIBNET_API` on public functions, instead of an export file
        !            56: - Add Visual Studio 2010 project files, with build instructions
        !            57: - Define INET6 on IRIX, making libnet compile cleanly
        !            58: - Check for FreeBSD pre-11 before enabling `LIBNET_BSD_BYTE_SWAP`
        !            59: - Use `LIBNET_BSDISH_OS` and `LIBNET_BSD_BYTE_SWAP` on Darwin
        !            60: - Add BSD byteswap for Darwin. Otherwise `sendto(` returns `EINVAL`
        !            61: - `netinet/in.h` is needed for `IPPROTO_` and `sockaddr_in`
        !            62: 
        !            63: 
        !            64: [v1.1.6][] - 2012-03-06
        !            65: -----------------------
        !            66: 
        !            67: Release curated by Sam Roberts.
        !            68: 
        !            69: ### Changes
        !            70: - Note about why including libnet.h breaks dnet.h/dumbnet.h (Sam Roberts)
        !            71: - Clean up use of single and bracket quotes. (Sam Roberts)
        !            72: - FreeBSD and Solaris volunteers to contibute. (Sam Roberts)
        !            73: - Prep for 1.1.6 release, such as bumping version (Sam Roberts)
        !            74: - Add people who have volunteered to check release candidates. (Sam Roberts)
        !            75: - Rework libnet_autobuild_ipv6() to eliminate code duplication. (Sam Roberts)
        !            76: - Implemented libnet_autobuild_ipv6() (repolho)
        !            77: - Implemented unix version of libnet_get_ipaddr6() (repolho)
        !            78: - Reintroduce libnet_pblock_record_ip_offset() which is empty. (Sam Roberts)
        !            79: - Make clear that all contributions are under libnet copyright. (Sam Roberts)
        !            80: - Update for doxygen 1.7.4. (Sam Roberts)
        !            81: - Note that PORTED is no longer maintained. (Sam Roberts)
        !            82: - Note that CONTRIB is no longer maintained. (Sam Roberts)
        !            83: - Prep for upcoming 1.1.6 release. (Sam Roberts)
        !            84: - Remove BUGS, it referred to non-existent code. (Sam Roberts)
        !            85: - Reworked icmpv6 patch to parallel the form of icmpv4 support. (Sam Roberts)
        !            86: - Don't depend on netinet/ip.h. (Sam Roberts)
        !            87: - Remove unused variable. (Sam Roberts)
        !            88: - Support building ICMPv6 packets. (someone)
        !            89: - Use SO_BINDTODEVICE to force packets out opened device. (someone)
        !            90: - Always use an IPPROTO of TCP when calculating TCP checksums. (Sam Roberts)
        !            91: - Use correct addr type for addrlen calculation. (someone)
        !            92: - libnet_build_igmp reserved field was mistakenly called 'code' (Sam Roberts)
        !            93: - Documentation doesn't include any gif files. (Sam Roberts)
        !            94: - Enable IPV6 support on Solaris 11. (Rich Burridge)
        !            95: - Presence of linux's PF_PACKET sockets is now detected. The acinclude.m4
        !            96:   merged in from packetfactory's 1.1.3-rc branch mysteriously assumed that
        !            97:   that there was no PF_PACKET if the target OS was linux, which is the
        !            98:   opposite of what we want. (Sam Roberts)
        !            99: - pblock_append deals with raw memory and structs, so declare it correctly
        !           100:   (Sam Roberts)
        !           101: - Clarified types and sizes of DHCP/BOOTP chaddr, sname, and file. chaddr is a
        !           102:   hardware address, with size specified seperately, whereas sname and file are
        !           103:   null terminated strings. (Sam Roberts)
        !           104: - Explicitly ignore return value of write (some systems now warn about this).
        !           105:   (Sam Roberts)
        !           106: - Synchronize comment about h_len with parameter name in function. (Sam Roberts)
        !           107: - mkinstalldirs is replaced by autogen.sh. Maybe it shouldn't be checked in?
        !           108:   (Sam Roberts)
        !           109: - autogen retries if /sw/... doesn't exist (Sam Roberts)
        !           110: 
        !           111: ### Fixes
        !           112: 
        !           113: - Only use getifaddrs() if it exists. (reported by Dagobert Michelsen) (Sam Roberts)
        !           114: - ICMPv6 struct is too long, so use length macro (sickmind@lavabit.com) (Sam Roberts)
        !           115: - ICMPv6 pblock sizes are needed to calculate IPv6's ip_len (reported by
        !           116:   sickmind@lavabit.com) (Sam Roberts)
        !           117: - Fix doc comment format errors reported by doxygen. (Sam Roberts)
        !           118: - Fixed typo in error message. (Thomas Habets)
        !           119: - Trying to fix write errors (Víctor Martínez)
        !           120: - Fix libnet_build_igmp() to not reverse the order of the ip address. libnet
        !           121:   APIs that take IP addresses as a uint32_t expect them to already be in
        !           122:   network byte order. (Sam Roberts)
        !           123: - Fixes a buffer overflow issue when copying chaddr, file, and sname fields to
        !           124:   the DHCP header. (allfro)
        !           125: - Fixes improper calculation of header size when libnet_pblock_probe is
        !           126:   called. payload_s must be added to the header length in order to accommodate
        !           127:   for the existence of a non-NULL payload. Otherwise the user is prompted with
        !           128:   a 'memcpy would cause overflow' error and the program exits. (allfro)
        !           129: - Fixes incorrect memory block size set in the timeexceed and redirect
        !           130:   builders. The n variable does not add the size of the payload (payload_s)
        !           131:   for proper allocation of the buffer when payload is not NULL and payload_s
        !           132:   is greater than 0. This results in a memcpy buffer overflow error when
        !           133:   libnet_pblock_append is called exiting the program. (allfro)
        !           134: - Fixes a bug that incorrectly converts the addr, mask, and next_hop fields to
        !           135:   network byte order. Users will usually call libnet_name2addr4 to fill these
        !           136:   fields and this function already provides a network byte-ordered
        !           137:   value. (allfro)
        !           138: - snap parameter was getting copied into the dhost field. (Sam Roberts)
        !           139: - h_len is no longer used, so pass zero. Coverity noticed that stack garbage
        !           140:   was being passed instead of a valid value, its just that the value isn't
        !           141:   used, and incluing l->total_size is wrong when the pblock is being updated
        !           142:   (though it will work on pblock creation). (Sam Roberts)
        !           143: - Length n should include the value_hdr. (Sam Roberts)
        !           144: - Coverity: UNINIT (Jiri Popelka)
        !           145: - Coverity: REVERSE_INULL (Jiri Popelka)
        !           146: - Coverity: RESOURCE_LEAK (Jiri Popelka)
        !           147: - Coverity: OVERRUN_STATIC (Jiri Popelka)
        !           148: - Coverity: OVERRUN_STATIC (Jiri Popelka)
        !           149: - Coverity: OVERRUN_STATIC (Jiri Popelka)
        !           150: - Coverity: FORWARD_NULL (Jiri Popelka)
        !           151: - Coverity: FORWARD_NULL (Jiri Popelka)
        !           152: - Coverity: CHECKED_RETURN (Jiri Popelka)
        !           153: - build_ipv6: set higher traffic class bits (Ulrich Weber)
        !           154: - Fix missing uint instead of u_int (Dagobert Michelsen)
        !           155: 
        !           156: 
        !           157: [v1.1.5][] - 2010-11-03
        !           158: -----------------------
        !           159: 
        !           160: Release curated by Sam Roberts.
        !           161: 
        !           162: ### Changes
        !           163: - IRIX: Get MAC address from `ioctl()`, not by spawning shell. (Thomas Habets)
        !           164: - Cleaned up implementations of `libnet_get_hwaddr()`, some leaked
        !           165:   memory, one returned a pointer to data on the stack, and the others
        !           166:   return a pointer to static data. I'm settling on the non-reentrant
        !           167:   static data form. (Sam Roberts)
        !           168: - Further simplify `autogen.sh` (Sam Roberts)
        !           169: - Removed dependency on `net/bpf.h`, and on `pcap.h`. (Sam Roberts)
        !           170: - `LBL_ALIGN` check is unused, removing. (Sam Roberts)
        !           171: - Don't include `pcap.h` if we've already got `net/bpf.h`, pcap has it's
        !           172:   own bpf. (Sam Roberts)
        !           173: - Get DLT types from the source, `pcap.h`. (Sam Roberts)
        !           174: - Use `autoconf -ivf` in autogen.sh (suggested by alon.barlev@gmail.com)
        !           175:   (Sam Roberts)
        !           176: - Add a link to the old docs. (Sam Roberts)
        !           177: - Added links to github and sourceforge. (Sam Roberts)
        !           178: - Replace C99/C++ comments with traditional C
        !           179:   comments. (alon.barlev@gmail.com) (Sam Roberts)
        !           180: - Closer backwards compat, assume its ipv4 if it's not ipv6. This seems
        !           181:   totally wrong, but so it goes. (Sam Roberts)
        !           182: - Try using the `ip_len` header field to guess the input buffer's
        !           183:   size. (Sam Roberts)
        !           184: - `libnet_do_checksum()`, despite being "internal", is used by external
        !           185:   code. libnet needs to maintain backwards API compatibility, tcpsic
        !           186:   from the isic package is an example of a binary failing when calling
        !           187:   the new API with the old arguments. (Sam Roberts)
        !           188: - Use libtool-1 or libtool-2 whatever available (alon.barlev@gmail.com)
        !           189:   (Sam Roberts)
        !           190: - Remove dead code. (Sam Roberts)
        !           191: - h_len is calculated for ip, udp, tcp, icmp, and igmp, so is allowed to
        !           192:   be zero. (Sam Roberts)
        !           193: - Avoid mallocing zero bytes, it perturbs electric fence. (Sam Roberts)
        !           194: - `ip_offset` is now calculated on the fly, and UDP and TCP no longer
        !           195:   use `h_len` (Sam Roberts)
        !           196: - IP offset calculation should allow nesting of IP protocols. (Sam Roberts)
        !           197: - Remove gccisms in bitfield definitions. (Sam Roberts)
        !           198: - injection type `of LIBNET_NONE`, for packet construction without
        !           199:   injection (also, more const correctness) (Sam Roberts)
        !           200: - Notes about checksumming. (Sam Roberts)
        !           201: - Updated comments and notes. (Sam Roberts)
        !           202: - Added missing pblock types, and made strings consistent with
        !           203:   definitions. (Sam Roberts)
        !           204: - Change version policy, we will be 1.1.4 until 1.1.5 is released. (Sam Roberts)
        !           205: - Bring CHANGELOG up to date with today, and script used to generated
        !           206:   it. (Sam Roberts)
        !           207: - Begin implementation and tests for repairing pblocks after an
        !           208:   update. (Sam Roberts)
        !           209: - Clarifications in document comments. (Sam Roberts)
        !           210: - Don't doxygen process internal header libnet-headers.h (Sam Roberts)
        !           211: - Note about `build_data`, which doesn't update `ip_offset`, among other
        !           212:   problems. (Sam Roberts)
        !           213: - Why don't TCP and UDP use the DATA pblock type? (Sam Roberts)
        !           214: - whitespace cleanup (Sam Roberts)
        !           215: - Summarize changes for log. (Sam Roberts)
        !           216: - Reindented, removing hard tabs, and using consistent brace
        !           217:   positioning. (Sam Roberts)
        !           218: - configure.in: Check for `uint{16,32,64}_t` (Thomas Habets)
        !           219: - Use `uint64_t`, not `u_int64_t` (Thomas Habets)
        !           220: - configure.in: check for `gethostbyname2()` (Thomas Habets)
        !           221: - define a lying `gethostbyname2()` if it's not defined (Thomas Habets)
        !           222: - define `STDOUT_FILENO` if it's not defined (Thomas Habets)
        !           223: - Configure switch to install samples (Sam Roberts)
        !           224: - Attempt at applying a patch to get installable samples, which doesn't
        !           225:   work. (Sam Roberts)
        !           226: - Convert CRLF to LF. (Sam Roberts)
        !           227: - Auto* changes to work on OS X from git checkout. (Sam Roberts)
        !           228: - Add srcdir to include path. (Sam Roberts)
        !           229: - Beginning 1.1.5 development. (Sam Roberts)
        !           230: 
        !           231: ### Fixes
        !           232: - Compile fix for IRIX (added includes) (Thomas Habets)
        !           233: - Don't explicitly check for UID 0, we may have capabilities even if not
        !           234:   root. (Thomas Habets) (Sam Roberts)
        !           235: - Visual C++ compiler(v9.0) uses bitfield type as a hint to pad the
        !           236:   bitfield, so struct was too long. (Sam Roberts)
        !           237: - Make `libnet_get_hwaddr()` work in the last few releases of OpenBSD
        !           238:   (stu@spacehopper.org) (Sam Roberts)
        !           239: - Don't distribute `libnet.h`, it is generated by `configure`
        !           240:   (alon.barlev@gmail.com) (Sam Roberts)
        !           241: - AIX build failures fixed, cause was inclusion of system headers libnet
        !           242:   no longer uses (alon.barlev@gmail.com) (Sam Roberts)
        !           243: - checksum would segfault if a IP checksum was requested for a non-ipv4
        !           244:   header (Sam Roberts)
        !           245: - merged icmpv6 patch in, but I believe either it or the
        !           246:   `sample/icmp6_unreach` generates the cksum incorrectly
        !           247:   (victor@inliniac.net) (Sam Roberts)
        !           248: - Avoid looking at `/dev` and `/usr/include` when cross-compiling
        !           249:   (alon.barlev@gmail.com) Alon: The following code support cross
        !           250:   compiling: 1. You CANNOT check for `/usr/include` stuff as cross
        !           251:   compiler is installed else-where. Autoconf know how to do this, use
        !           252:   its header detection logic and ask the result. 2. Testing for `/dev/`
        !           253:   can be done only when not cross compiling... (Sam Roberts)
        !           254: - Corrected `target_os` check, it was broke for linuxgnu, and m4 syntax
        !           255:   was invalid (alon.barlev@gmail.com) Alon:The following change is
        !           256:   needed in order to solve two issues: 1. linuxgnu and such target
        !           257:   os. 2. You cannot set variable with space before '=' as it tries to
        !           258:   execute the variable... 3. Print result of test in case of linux (Sam
        !           259:   Roberts)
        !           260: - `--with-link-layer` broken, was using wrong macro name, and didn't
        !           261:   include all link types (Sam Roberts)
        !           262: - `ac_cv_c_bigendian` is yes, not "big" (alon.barlev@gmail.com) (Sam Roberts)
        !           263: - `libnet_t`'s fd should be initialized to an invalid value, or
        !           264:   `libnet_destroy()` will close stdin. (Sam Roberts)
        !           265: - Alon's use of `AC_CHECK_HEADERS` fails to detect headers. Reverted
        !           266:   part of 57acd56f09158decb69f301e7547ce8cde6ac63f (Sam Roberts)
        !           267: - With `link_none`, the link apis were failing with not error
        !           268:   message. (Sam Roberts)
        !           269: - man doc makefile wasn't correctly referring to the srcdir
        !           270:   (alon.barlev@gmail.com) (Sam Roberts)
        !           271: - autotools patches for cross compiling and seperate builddir
        !           272:   (alon.barlev@gmail.com) (Sam Roberts)
        !           273: - html doc makefile wasn't correctly referring to the srcdir
        !           274:   (alon.barlev@gmail.com) (Sam Roberts)
        !           275: - `libnet_build_tcp()` was not returning the ptag. (Sam Roberts)
        !           276: - Packet boundaries are now passed to `_do_checksum()`, so it can
        !           277:   validate its input. Hopefully, this will end the recurring
        !           278:   segmentation faults due to buffer overruns. (Sam Roberts)
        !           279: - TCP building is triggering memory overwrites; closer examination shows
        !           280:   the link list manipulation to be wrong, and the checksumming approach
        !           281:   to be incapable of working. I reworked code to simplify and clarify
        !           282:   how it works currently, in preparation to fixing it. (Sam Roberts)
        !           283: - Null the pointer in the about-to-be-freed structure, not the one on
        !           284:   the stack. (Sam Roberts)
        !           285: - libnet_pblock_insert_before() didn't remove ptag2 from old location (Sam Roberts)
        !           286: - Declared many constant arguments as const, const-correct code spews
        !           287:   warnings when built against libnet. (Sam Roberts)
        !           288: - Include pcap DLT_ types from correct header, was using an internal one
        !           289:   before. (Sam Roberts)
        !           290: - Declared many constant arguments as const, const-correct code spews
        !           291:   warnings when built against libnet. (Sam Roberts)
        !           292: - `libnet_clear_packet()` wasn't clearing all packet context. (Sam Roberts)
        !           293: - Add `libnet_dll.c` as extra, so its there for win32, and build
        !           294:   `libnet_link.c` (Sam Roberts)
        !           295: - This file wasn't being built, and needed to include bpf to build. (Sam Roberts)
        !           296: - Forgot to make device a const string here, too. (Sam Roberts)
        !           297: - make string argument constant (Sam Roberts)
        !           298: - only ignore Makefile in `libnet/` (Sam Roberts)
        !           299: - Replace `u_intX_t` with C99 `uintX_t`. (Thomas Habets)
        !           300: - `pclose()` following `popen()`, not `fclose()` (Thomas Habets)
        !           301: - snoof & dlpi: don't free on `libnet_link_close()` (Thomas Habets)
        !           302: - The non-standard types are no longer used. (Sam Roberts)
        !           303: - `/sw/..` path doesn't always exist (Sam Roberts)
        !           304: - `src/libnet_link_snoop.c`: Only fclose if `f!=NULL  (Thomas Habets)
        !           305: -  rc/libnet_link_snoop.c`: fixed snoop-based backend. Works on
        !           306:    IRIX. (Thomas Habets)
        !           307: - Pointers not cleared after free could lead to double
        !           308:   deallocation. (Sam Roberts)
        !           309: - Update autobuild endianness and unaligned checks. (Mike Frysinger)
        !           310:   (Sam Roberts)
        !           311: - Adjust srcdir and builddir so libnet can build out-of-tree (Robin
        !           312:   Getz/Mike Frysinger) (Sam Roberts)
        !           313: 
        !           314: 
        !           315: [v1.1.4][] - 2009-06-09
        !           316: -----------------------
        !           317: 
        !           318: Release curated by Sam Roberts.
        !           319: 
        !           320: ### Changes
        !           321: - Strip CRLF from files not in win32/ (Robert Scheck)
        !           322: 
        !           323: ### Fixes
        !           324: - libnet was using `HAVE_CONFIG_H` in a public header to deal with
        !           325:   platform types.  https://bugzilla.redhat.com/show_bug.cgi?id=501633
        !           326: - Patch to `libnet.h.in` for compilation on HURD (David Paleino)
        !           327: 
        !           328: 
        !           329: [v1.1.3][] - 2009-05-11
        !           330: -----------------------
        !           331: 
        !           332: Merged 1.1.3 release candidate from packet factory, 1.1.2, debian
        !           333: patches, and my own fixes, including bugs causing memory corruption.
        !           334: 
        !           335: Release curated by Sam Roberts.
        !           336: 
        !           337: ### Changes
        !           338: - Convert from latin-1 to utf-8, from Robert Scheck. (Sam Roberts)
        !           339: - Removed CVS crud, again. (Sam Roberts)
        !           340: - Applied autotools cleanup patch from Stefanos. (Sam Roberts)
        !           341: - Applied patch from Stefanos to remove the autotools ephemera that leaked
        !           342:   back in. (Sam Roberts)
        !           343: - Updated .so revision to be one backwards compatible interface after
        !           344:   1.1.2.1-fork's. (Sam Roberts)
        !           345: - merged autogen.sh from 1.1.3, now ltmain.sh comes from autogen.sh (Sam
        !           346:   Roberts)
        !           347: - Update .so version to be one src change past the last debian release.
        !           348:   Debian patches to v1.1.2.1 used 4:0:3, in error, so we use 5:0:4, as per
        !           349:   the rules. See Makefile.am comments for reference. (Sam Roberts)
        !           350: - autotools merged from v1.1.3 to v1.1.2 (Sam Roberts)
        !           351: - Remove autotools. And some garbage local files that should not have been
        !           352:   in upstream tarball. (Sam Roberts)
        !           353: - Removed object files and cvs conflict residue contained in original
        !           354:   package. (Sam Roberts)
        !           355: - doxygen configuration updated, html seems fine - I don't know about the
        !           356:   man pages. (Sam Roberts)
        !           357: - strip CVS subdirectories from upstream package (Sam Roberts)
        !           358: - Added a `libnet_version()` function
        !           359: - Internals:
        !           360:   - added a payload builder macro
        !           361:   - Added an HSRP builder
        !           362: - Added `AC_PREREQ(2.50)` to `configure.in` to come correct
        !           363: - Added a libnet UDP header prototype. We need to add an entire exported
        !           364:   interface for the sole purpose of casting captured packets, this will
        !           365:   presumably be a part of the pcap integration.
        !           366: - Added `libnet_adv_write_raw_ipv4()`
        !           367: - Updated the autoconf/automake stuff to be up to date with the latest
        !           368:   versions. We now use libtool.
        !           369: - Changed all empty function prototypes to contain the void keyword
        !           370: - Removed all C++ style comments
        !           371: - Removed the configure.in check for `strerror()`
        !           372: 
        !           373: ### Fixes
        !           374: - Fixed various errors, including memory corruption, when IPv4 options
        !           375:   are modified.  (Sam Roberts)
        !           376: - Fixed doxygen errors and warnings, and added a deveoper script to
        !           377:   prepare libnet. (Sam Roberts)
        !           378: - Patches from Stefanos. (Sam Roberts)
        !           379: - Fix for debian bug 418975, IPv6 wasn't updating `ip_offset`. See
        !           380:   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=418975 and sample
        !           381:   `test_ipv6_icmpv4.c` for more info and reproduction. (Sam Roberts)
        !           382: - 802.1Q and 802.1X header documentation was incorrectly using `/** /**`
        !           383:   is reserved for doxygen documentation comments, and they didn't have
        !           384:   any.  That those packet headers, and no others, were marked that way
        !           385:   was causing man pages to be generated for them, incomplete man pages
        !           386:   that then were being hacked by debian patches 02- and 03-. (Sam
        !           387:   Roberts)
        !           388: - Bug fixes and reproduction code for `ip_offset` accounting problem in
        !           389:   `libnet_build_ipv4()` (Sam Roberts)
        !           390: - debian patch 06 attempts to free the wrong pointer, and also leaks memory
        !           391:   from the inner loop. (Sam Roberts)
        !           392: - libnet (inconsistently) uses various signed and/or unsigned typedefs
        !           393:   instead of char ANSI C uses char for string literals and the standard
        !           394:   library, so this generates many warnings. I've fixed a number of the
        !           395:   places where types representing null-terminated strings weren't typed
        !           396:   correctly. (Sam Roberts)
        !           397: - Merged Debian fixes:
        !           398:   - 09-fix_hurd-i386_build.patch from debian source package See
        !           399:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           400:   - 08-fix_libnet_checksum.c.patch from debian source package See
        !           401:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           402:   - 07-add_libnet-cq-end-loop.patch from debian source package See
        !           403:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           404:   - 06-fix_libnet_pblock_coalesce_leak.patch from debian source package See
        !           405:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           406:   - 04-fix_libnet_build_ntp.patch from debian source package See
        !           407:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           408:   - 03-fix_libnet_802_1x_hdr.3.patch from debian source package See
        !           409:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           410:   - 02-fix_libnet_802_1q_hdr.3.patch See
        !           411:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           412:   - 01-fix_libnet-functions.h.3.patch from debian source package See
        !           413:     http://packages.debian.org/source/sid/libnet (Sam Roberts)
        !           414: - Fixed a bug in `libnet_build_ntp()` where two arguments werent used
        !           415:   due to a typo
        !           416: - Fixed a bug ln `libnet_name2addr4()` in which it didnt call hstrerror
        !           417: - Fixed a memory leak in `libnet_if_addr.c`
        !           418: - Fixed the `cdp.c` sample code
        !           419: - Fixed the checksum function
        !           420: - Fixed a signed/unsigned comparison warning in the
        !           421:   `LIBNET_DO_PAYLOAD()` macro
        !           422: 
        !           423: 
        !           424: [UNRELEASED]: https://github.com/libnet/libnet/compare/v1.2...HEAD
        !           425: [v1.2]:       https://github.com/libnet/libnet/compare/v1.1.6...v1.2
        !           426: [v1.1.6]:     https://github.com/libnet/libnet/compare/v1.1.5...v1.1.6
        !           427: [v1.1.5]:     https://github.com/libnet/libnet/compare/v1.1.4...v1.1.5
        !           428: [v1.1.4]:     https://github.com/libnet/libnet/compare/v1.1.3...v1.1.4

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>