Diff for /embedaddon/libnet/doc/CHANGELOG between versions 1.1 and 1.1.1.2

version 1.1, 2012/02/21 22:14:23 version 1.1.1.2, 2013/07/22 11:54:41
Line 1 Line 1
=============================================================================== ===============================================================================
    $Id$     $Id$
    LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>     LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
                               http://www.packetfactory.net/libnet                                http://www.packetfactory.net/libnet
=============================================================================== ===============================================================================
- 1.1.6
Mon Mar 29 09:23:49 PST 2004                                            1.1.2.1
    - Note about why including libnet.h breaks dnet.h/dumbnet.h (Sam Roberts)
    Fixed a typo in the ICMP patch mentioned below.     - Prepare for 1.1.6-rc3. (Sam Roberts)
    - Only use getifaddrs() if it exists. (reported by Dagobert Michelsen) (Sam Roberts)
Thu Mar 25 10:49:04 PST 2004                                              1.1.2     - Clean up use of single and bracket quotes. (Sam Roberts)
    - FreeBSD and Solaris volunteers to contibute. (Sam Roberts)
    Fixed the ICMP error message builders (there was a pblock assembly bug     - ICMPv6 struct is too long, so use length macro (sickmind@lavabit.com) (Sam Roberts)
     that would prevent you from building more than one ICMP {unreach, time     - ICMPv6 pblock sizes are needed to calculate IPv6's ip_len (reported by sickmind@lavabit.com) (Sam Roberts)
     exceed, redirect} in succession; the order of operations has changed     - Prep for 1.1.6 release, such as bumping version (Sam Roberts)
     slightly for building these packets, see the documenation and sample code     - Add people who have volunteered to check release candidates. (Sam Roberts)
    Added a Sebek builder     - Rework libnet_autobuild_ipv6() to eliminate code duplication. (Sam Roberts)
    Fixed a bug in libnet_autobuild_arp() that had it pulling in the address to     - Implemented libnet_autobuild_ipv6() (repolho)
     a pointer instead of just the address     - Implemented unix version of libnet_get_ipaddr6() (repolho)
    Added AM_MAINTAINER_MODE to configure.in     - Reintroduce libnet_pblock_record_ip_offset() which is empty. (Sam Roberts)
    Changed the __libnet_dump* namespace to the more descriptive libnet_diag*     - Make clear that all contributions are under libnet copyright. (Sam Roberts)
    Added libnet_getpacket_size() to return the size of a packet in a given l     - Fix doc comment format errors reported by doxygen. (Sam Roberts)
    Removed "protocol" from the libnet context. It was a waste of four bytes     - Update for doxygen 1.7.4. (Sam Roberts)
     The raw socket interface always uses the "IPPROTO_RAW" protocol     - Note that PORTED is no longer maintained. (Sam Roberts)
    Fixed a memory leak in the advanced interface; there is now a function     - Note that CONTRIB is no longer maintained. (Sam Roberts)
     libnet_adv_free_packet() to free the memory allocated for the packet     - Prep for upcoming 1.1.6 release. (Sam Roberts)
     when libnet_adv_cull_packet() is called     - Remove BUGS, it referred to non-existent code. (Sam Roberts)
    Fixed a bug on big endian boxes that had TCP and UDP checksums with odd     - Reworked icmpv6 patch to parallel the form of icmpv4 support. (Sam Roberts)
     payloads come out incorrect     - Don't depend on netinet/ip.h. (Sam Roberts)
    Changes all error messages to look and feel the same:     - Remove unused variable. (Sam Roberts)
     "%s(): foo\n", __func__     - Support building ICMPv6 packets. (someone)
    Added a bunch of htons/htonl fixes     - Fixed typo in error message. (Thomas Habets)
    Continued to add to the doxygen-based documentation     - Use SO_BINDTODEVICE to force packets out opened device. (someone)
    Added support for unconfigured interfaces     - Always use an IPPROTO of TCP when calculating TCP checksums. (Sam Roberts)
    Changed the number of interfaces libnet can handle from 32 to 512     - Use correct addr type for addrlen calculation. (someone)
    Removed uneeded control structure cruft from libnet_link_dlpi.c     - libnet_build_igmp reserved field was mistakenly called 'code' (Sam Roberts)
    Removed sample/ip.c and added sample/ip_link.c and sample/ip_raw.c     - Documentation doesn't include any gif files. (Sam Roberts)
    Added IPv6 fragmentation header builder     - Enable IPV6 support on Solaris 11. (Rich Burridge)
    Added IPv6 routing information header builder     - Trying to fix write errors (Víctor Martínez)
    Added IPv6 destination options header builder     - Presence of linux's PF_PACKET sockets is now detected. The acinclude.m4 merged in from packetfactory's 1.1.3-rc branch mysteriously assumed that that there was no PF_PACKET if the target OS was linux, which is the opposite of what we want. (Sam Roberts)
    Fixed IPv6 flowlabel and traffic class bitwise math     - Fix libnet_build_igmp() to not reverse the order of the ip address. libnet APIs that take IP addresses as a uint32_t expect them to already be in network byte order. (Sam Roberts)
    - pblock_append deals with raw memory and structs, so declare it correctly (Sam Roberts)
Tue Nov 25 15:33:27 PST 2003                                              1.1.1     - Clarified types and sizes of DHCP/BOOTP chaddr, sname, and file. chaddr is a hardware address, with size specified seperately, whereas sname and file are null terminated strings. (Sam Roberts)
    - Explicitly ignore return value of write (some systems now warn about this). (Sam Roberts)
    Fixed a bug in libnet_build_icmp_redirect: htonl(gateway) --> gateway.     - Synchronize comment about h_len with parameter name in function. (Sam Roberts)
    Added icmp_redirect.c sample code.     - Fixes a buffer overflow issue when copying chaddr, file, and sname fields to the DHCP header. (allfro)
    Added libnet_autobuild_arp().     - Fixes improper calculation of header size when libnet_pblock_probe is called. payload_s must be added to the header length in order to accommodate for the existence of a non-NULL payload. Otherwise the user is prompted with a 'memcpy would cause overflow' error and the program exits. (allfro)
    Added a slightly faster checksum.     - Fixes incorrect memory block size set in the timeexceed and redirect builders. The n variable does not add the size of the payload (payload_s) for proper allocation of the buffer when payload is not NULL and payload_s is greater than 0. This results in a memcpy buffer overflow error when libnet_pblock_append is called exiting the program. (allfro)
    Added a GRE builder.     - Fixes a bug that incorrectly converts the addr, mask, and next_hop fields to network byte order. Users will usually call libnet_name2addr4 to fill these fields and this function already provides a network byte-ordered value. (allfro)
    Fixed a buffer overflow in libnet_build_dhcp().     - snap parameter was getting copied into the dhost field. (Sam Roberts)
    Added more sanity checks to ensure we have proper link or network layer     - h_len is no longer used, so pass zero. Coverity noticed that stack garbage was being passed instead of a valid value, its just that the value isn't used, and incluing l->total_size is wrong when the pblock is being updated (though it will work on pblock creation). (Sam Roberts)
     headers when not in advanced mode.     - Length n should include the value_hdr. (Sam Roberts)
    Fixed a bug that would sometimes make __libnet_dump_context() crash under     - Coverity: UNINIT (Jiri Popelka)
     linux.     - Coverity: REVERSE_INULL (Jiri Popelka)
    Migration from sprintf and strcpy snprintf and strncpy.     - Coverity: RESOURCE_LEAK (Jiri Popelka)
    Fixed bug in libnet_build_ipv4() when calculating size of memory block     - Coverity: OVERRUN_STATIC (Jiri Popelka)
    Removed the support directory -- if you're an OLD version of OpenBSD or     - Coverity: OVERRUN_STATIC (Jiri Popelka)
     FreeBSD you deserve what you get.     - Coverity: OVERRUN_STATIC (Jiri Popelka)
    Added a BGP builder.     - Coverity: FORWARD_NULL (Jiri Popelka)
    Changed the error handing functions to be more consistent and use     - Coverity: FORWARD_NULL (Jiri Popelka)
     __FUNCTION__.     - Coverity: CHECKED_RETURN (Jiri Popelka)
    Fixed a bug in libnet_pblock_free() -- replaced it with     - mkinstalldirs is replaced by autogen.sh. Maybe it shouldn't be checked in? (Sam Roberts)
     libnet_pblock_delete().     - autogen retries if /sw/... doesn't exist (Sam Roberts)
    Fixed all of the inconsistencies inside all of the builders and pblock code     - build_ipv6: set higher traffic class bits (Ulrich Weber)
     where some fringe conditions could result in u_longs being crunched into     - Fix missing uint instead of u_int (Dagobert Michelsen)
     u_shorts.
    Fixed libnet_pblock_coalesce() to only require one pass through the list. - 1.1.5
    Added better diagnostics (__libnet_dump_context(), __libnet_dump_pblock()).
    Added Token Ring and FDDI builders (Linux and Solaris only).     - IRIX: Get MAC address from ioctl(), not by spawning shell. (Thomas Habets)
    Added Token Ring and FDDI sample programs.     - Compile fix for IRIX (added includes) (Thomas Habets)
    Fixed the handling of TCP and IP payloads when reusing a pblocks.     - Don't explicitly check for UID 0, we may have capabilities even if not root. (Thomas Habets) (Sam Roberts)
    Fixed the handling of IP headers such that if a TCP packet changes size     - Cleaned up implementations of libnet_get_hwaddr(), some leaked memory, one returned a pointer to data on the stack, and the others return a pointer to static data. I'm settling on the non-reentrant static data form. (Sam Roberts)
     via subsequent calls to libnet_build_tcp(), the IP header automatically     - Visual C++ compiler(v9.0) uses bitfield type as a hint to pad the bitfield, so struct was too long. (Sam Roberts)
     changes size as well.     - Further simplify autogen.sh (Sam Roberts)
    Added libnet_pblock_delete() to remove a pblock from the list.     - Removed dependency on net/bpf.h, and on pcap.h. (Sam Roberts)
    Added ip.c sample program (builds an arbitrary IP packet).     - LBL_ALIGN check is unused, removing. (Sam Roberts)
    Added additional payload sanity checks to libnet_build_*.     - Don't include pcap.h if we've already got net/bpf.h, pcap has it's own bpf. (Sam Roberts)
    Added a payload to sample/icmp_echo_cq.c.     - Make libnet_get_hwaddr work in the last few releases of OpenBSD (stu@spacehopper.org) (Sam Roberts)
    Added an MPLS builder.     - Get DLT types from the source, <pcap.h>. (Sam Roberts)
    Added an 802.1x builder.     - Use autoconf -ivf in autogen.sh (suggested by alon.barlev@gmail.com) (Sam Roberts)
    Added an RPC builder!  Bout time eh?     - Don't distribute libnet.h, it is generated by configure (alon.barlev@gmail.com) (Sam Roberts)
    Fixed do1x.c sample code to make the frame valid.     - AIX build failures fixed, cause was inclusion of system headers libnet no longer uses (alon.barlev@gmail.com) (Sam Roberts)
    Fixed link-interface semantics under Mac/OSX     - Add a link to the old docs. (Sam Roberts)
    Changed libnet_stats to all be unsigned long longs to accomodate all of     - Added links to github and sourceforge. (Sam Roberts)
     hardcore packet writers.     - Replace C99/C++ comments with traditional C comments. (alon.barlev@gmail.com) (Sam Roberts)
    Fixed IPv6 support (to some extent) removed the IP_HDRINCL stuff and     - checksum would segfault if a IP checksum was requested for a non-ipv4 header (Sam Roberts)
     reworked the resolver stuff to use net_pton() and inet_ntop().     - Closer backwards compat, assume its ipv4 if it's not ipv6. This seems totally wrong, but so it goes. (Sam Roberts)
    Fixed libnet_build_icmpv4_*() to properly handle the IP header in the     - Try using the ip_len header field to guess the input buffer's size. (Sam Roberts)
     payload.     - libnet_do_checksum(), despite being "internal", is used by external code. libnet needs to maintain backwards API compatibility, tcpsic from the isic package is an example of a binary failing when calling the new API with the old arguments. (Sam Roberts)
    Fixed libnet_build_igmp() to handle checksums properly.     - merged icmpv6 patch in, but I believe either it or the sample/icmp6_unreach generates the cksum incorrectly (victor@inliniac.net) (Sam Roberts)
    Fixed a bug in libnet_build_dnsv4() -- now it will work for TCP or UDP --     - Use libtool-1 or libtool-2 whatever available (alon.barlev@gmail.com) (Sam Roberts)
     see the sample program for details...     - Avoid looking at /dev and /usr/include when cross-compiling (alon.barlev@gmail.com) Alon: The following code support cross compiling: 1. You CANNOT check for /usr/include stuff as cross compiler is installed else-where. Autoconf know how to do this, use its header detection logic and ask the result. 2. Testing for /dev/ can be done only when not cross compiling... (Sam Roberts)
    Fixed a bug in sample/dhcp_discover.c     - Corrected target_os check, it was broke for linuxgnu, and m4 syntax was invalid (alon.barlev@gmail.com) Alon:The following change is needed in order to solve two issues: 1. linuxgnu and such target os. 2. You cannot set variable with space before '=' as it tries to execute the variable... 3. Print result of test in case of linux (Sam Roberts)
    Added multiple packet interface (called the context queue interface).     - --with-link-layer broken, was using wrong macro name, and didn't include all link types (Sam Roberts)
     Until I finish the manpage, see the sample code and README files     - ac_cv_c_bigendian is yes, not "big" (alon.barlev@gmail.com) (Sam Roberts)
     for instructions on how it works.     - Remove dead code. (Sam Roberts)
    Fixed Cygwin support.     - h_len is calculated for ip, udp, tcp, icmp, and igmp, so is allowed to be zero. (Sam Roberts)
    Fixed an OS/X compilation error due to lack of system header files.     - libnet_t's fd should be initialized to an invalid value, or libnet_destroy() will close stdin. (Sam Roberts)
    Fixed OS/X link layer bug.     - Alon's use of AC_CHECK_HEADERS fails to detect headers. Reverted part of 57acd56f09158decb69f301e7547ce8cde6ac63f (Sam Roberts)
    Fixed a bug in pblock_coalesce() that resulted in bad checksums when the     - With link_none, the link apis were failing with not error message. (Sam Roberts)
     advanced mode was enabled.     - man doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts)
    Fixed a potential memory leak in pblock_coalesce().     - Avoid mallocing zero bytes, it perturbs electric fence. (Sam Roberts)
    Fixed a potential memory leak in libnet_select_device().     - autotools patches for cross compiling and seperate builddir (alon.barlev@gmail.com) (Sam Roberts)
    Fixed a potential memory leak in libnet_plist_chain_new().     - html doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts)
    Fixed Solaris support for IPv6 address support.     - ip_offset is now calculated on the fly, and UDP and TCP no longer use h_len (Sam Roberts)
    Fixed minor bugs in libnet_advanced.c.     - IP offset calculation should allow nesting of IP protocols. (Sam Roberts)
    Added loopback device support.     - Remove gccisms in bitfield definitions. (Sam Roberts)
    - injection type of LIBNET_NONE, for packet construction without injection (also, more const correctness) (Sam Roberts)
    - Notes about checksumming. (Sam Roberts)
Mon Aug  5 15:18:52 PDT 2002                                              1.1.0     - libnet_build_tcp was not returning the ptag. (Sam Roberts)
    - Packet boundaries are now passed to _do_checksum(), so it can validate its input. Hopefully, this will end the recurring segmentation faults due to buffer overruns. (Sam Roberts)
    First 1.1.0 non-beta release.     - TCP building is triggering memory overwrites; closer examination shows the link list manipulation to be wrong, and the checksumming approach to be incapable of working. I reworked code to simplify and clarify how it works currently, in preparation to fixing it. (Sam Roberts)
    - Updated comments and notes. (Sam Roberts)
    Added libnet_adv_write_link() which allows an advanced user to access     - Null the pointer in the about-to-be-freed structure, not the one on the stack. (Sam Roberts)
    libnet's low-level frame injection functionality directly.     - Added missing pblock types, and made strings consistent with definitions. (Sam Roberts)
    - Change version policy, we will be 1.1.4 until 1.1.5 is released. (Sam Roberts)
    - Bring CHANGELOG up to date with today, and script used to generated it. (Sam Roberts)
Wed Jul 10 08:18:15 PDT 2002                                     1.1.0 Beta 07b     - Begin implementation and tests for repairing pblocks after an update. (Sam Roberts)
    - libnet_pblock_insert_before() didn't remove ptag2 from old location (Sam Roberts)
    Added some words to the manpage.     - Clarifications in document comments. (Sam Roberts)
    - Don't doxygen process internal header libnet-headers.h (Sam Roberts)
    Fixed a typo in libnet-functions.h -- forgot a comma.     - Declared many constant arguments as const, const-correct code spews warnings when built against libnet. (Sam Roberts)
    - Include pcap DLT_ types from correct header, was using an internal one before. (Sam Roberts)
    - Declared many constant arguments as const, const-correct code spews warnings when built against libnet. (Sam Roberts)
Sun Jul  7 10:37:12 PDT 2002                                     1.1.0 Beta 07a     - Note about build_data, which doesn't update ip_offset, among other problems. (Sam Roberts)
    - libnet_clear_packet() wasn't clearing all packet context. (Sam Roberts)
    My bad.  Forgot to `make distclean` before last release resulting in some     - Why don't TCP and UDP use the DATA pblock type? (Sam Roberts)
    compilation errors.     - whitespace cleanup (Sam Roberts)
    - Add libnet_dll.c as extra, so its there for win32, and build libnet_link.c (Sam Roberts)
    My bad.  Forgot to add advanced *_ADV writing support to libnet_write().     - This file wasn't being built, and needed to include bpf to build. (Sam Roberts)
    Simple fix.     - Forgot to make device a const string here, too. (Sam Roberts)
    - make string argument constant (Sam Roberts)
    - only ignore Makefile in libnet/ (Sam Roberts)
Tue Jul  2 08:42:57 PDT 2002                                      1.1.0 Beta 07     - Replace u_intX_t with C99 uintX_t. (Thomas Habets)
    - pclose() following popen(), not fclose() (Thomas Habets)
    BETA support for IPv6.     - snoof & dlpi: don't free on libnet_link_close() (Thomas Habets)
    - Summarize changes for log. (Sam Roberts)
    Fixed the IP and TCP options bugs that bound the TCP and IP payloads to     - Reindented, removing hard tabs, and using consistent brace positioning. (Sam Roberts)
    the IP and TCP headers respectively and saw options being appended     - The non-standard types are no longer used. (Sam Roberts)
    after the payload.     - /sw/.. path doesn't always exist (Sam Roberts)
    - src/libnet_link_snoop.c: Only fclose if f!=NULL (Thomas Habets)
    Added libnet_hex_aton().  This functions reads in arbirtrarily long hex     - src/libnet_link_snoop.c: fixed snoop-based backend. Works on IRIX. (Thomas Habets)
    strings from the command line and returns the equivalent byte string.  It     - Use uint64_t, not u_int64_t (Thomas Habets)
    does an implicit malloc() so make sure to free().     - define a lying gethostbyname2() if it's not defined (Thomas Habets)
    - define STDOUT_FILENO if it's not defined (Thomas Habets)
    Frdric Raynal submitted a patch to break the coalesce loop down to two     - configure.in: check for gethostbyname2 (Thomas Habets)
    passes using realloc resulting in a modest performance increase!  Cool!     - configure.in: Check for uint{16,32,64}_t (Thomas Habets)
    - Configure switch to install samples (Sam Roberts)
    Added "Advanced Mode" which will initialize the library with additional     - Attempt at applying a patch to get installable samples, which doesn't work. (Sam Roberts)
    functionality for advanced users who "know what they're doing".  Basically     - Pointers not cleared after free could lead to double deallocation. (Sam Roberts)
    this feature will remove some of the sanity checks libnet does when     - Convert CRLF to LF. (Sam Roberts)
    building and injecting packets, at the programmer's peril.  It also exposes     - Auto* changes to work on OS X from git checkout. (Sam Roberts)
    the libnet_adv() functions.     - Update autobuild endianness and unaligned checks. (Mike Frysinger) (Sam Roberts)
    - Add srcdir to include path. (Sam Roberts)
    FINALLY changed that irritating struct ether_addr redefintion problem.     - Adjust srcdir and builddir so libnet can build out-of-tree (Robin Getz/Mike Frysinger) (Sam Roberts)
    I internalized the name space of it (-> libnet_ether_addr) so there will     - Beginning 1.1.5 development. (Sam Roberts)
    be no more issues there.  Please update your code accordingly!
- 1.1.4
    Added IGMP checksum support which was omitted by accident.
    - Strip CRLF from files not in win32/ (Robert Scheck)
    Removed netinet/ip_icmp.h from include list.  This was causing problems     - libnet was using HAVE_CONFIG_H in a public header in order to deal with platform types.
    when including dnet.h which includes other system headers.  We can       https://bugzilla.redhat.com/show_bug.cgi?id=501633
    probably stand to remove several headers from libnet.h.in.     - Patch to libnet.h.in for compilation on HURD (David Paleino)
    Added sanity check to ensure that when *build_ethernet() is called the - 1.1.3
    injection method is LIBNET_LINK (except when advanced mode is on).
Merged 1.1.3 release candidate from packet factory, 1.1.2, debian patches, and
my own fixes, including bugs causing memory corruption:
Thu Mar 28 22:18:46 PST 2002                                      1.1.0 Beta 06
    - Fixed various errors, including memory corruption, when IPv4 options are
    Fixed ICMP unreachable checksum error and payload issues.  Now using the       modified.  (Sam Roberts)
    payload interface with unreachables will append the payload to the IPv4     - Convert from latin-1 to utf-8, from Robert Scheck. (Sam Roberts)
    header of the "offending packet".     - Fixed doxygen errors and warnings, and added a deveoper script to prepare
      libnet. (Sam Roberts)
    Split STP builder into two; libnet_build_stp_conf() and     - Removed CVS crud, again. (Sam Roberts)
    libnet_build_stp_tcn().     - Applied autotools cleanup patch from Stefanos. (Sam Roberts)
    - Applied patch from Stefanos to remove the autotools ephemera that leaked
    New CHANGELOG format.  :)       back in. (Sam Roberts)
    - Patches from Stefanos. (Sam Roberts)
    - Updated .so revision to be one backwards compatible interface after
Mar 24 2002                                                       1.1.0 Beta 05       1.1.2.1-fork's. (Sam Roberts)
    - Fix for debian bug# 418975, IPv6 wasn't updating ip_offset. See
    New building logic.  Top down.  Much smarter, we now build packets and       http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=418975 and sample
    frames like an OS kernel.       test_ipv6_icmpv4.c for more information, and reproduction. (Sam Roberts)
    - merged autogen.sh from 1.1.3, now ltmain.sh comes from autogen.sh (Sam
    Added Cisco ISL builder.       Roberts)
    - 802.1Q and 802.1X header documentation was incorrectly using /** /** is
      reserved for doxygen documentation comments, and they didn't have any.
Mar 18 2002                                                       1.1.0 Beta 04       That those packet headers, and no others, were marked that way was
      causing man pages to be generated for them, incomplete man pages that
    Added an STP builder.       then were being hacked by debian patches 02- and 03-. (Sam Roberts)
    - Update .so version to be one src change past the last debian release.
    Hooks for Cisco ISL builder.       Debian patches to v1.1.2.1 used 4:0:3, in error, so we use 5:0:4, as per
      the rules. See Makefile.am comments for reference. (Sam Roberts)
    Changed libnet_init() to now accept an IP address for the device (so     - Bug fixes and reproduction code for ip_offset accounting problem in
    either "fxp0" or "192.168.0.1" will work).       libnet_build_ipv4 (Sam Roberts)
    - doxygen configuration updated, html seems fine - I don't know about the
    Added libnet_clear_packet() to free packet memory when we're done with it.       man pages. (Sam Roberts)
    - autotools merged from v1.1.3 to v1.1.2 (Sam Roberts)
    - Remove autotools. And some garbage local files that should not have been
Feb 28 2002                                                       1.1.0 Beta 03       in upstream tarball. (Sam Roberts)
    - Removed object files and cvs conflict residue contained in original
    Added 802.1q, 802.2, 802.3 builders.       package. (Sam Roberts)
    - debian patch 06 attempts to free the wrong pointer, and also leaks memory
      from the inner loop. (Sam Roberts)
Feb 25 2002                                                       1.1.0 Beta 02     - libnet (inconsistently) uses various signed and/or unsigned typedefs
      instead of char ANSI C uses char for string literals and the standard
    Fixed Cygwin support.       library, so this generates many warnings. I've fixed a number of the
      places where types representing null-terminated strings weren't typed
      correctly. (Sam Roberts)
Feb 01 2002                                                       1.1.0 Beta 01     - 09-fix_hurd-i386_build.patch from debian source package See
      http://packages.debian.org/source/sid/libnet (Sam Roberts)
    Complete new API and overhaul of most everything.     - 08-fix_libnet_checksum.c.patch from debian source package See
      http://packages.debian.org/source/sid/libnet (Sam Roberts)
    Improved linux packet socket support.     - 07-add_libnet-cq-end-loop.patch from debian source package See
                                  http://packages.debian.org/source/sid/libnet (Sam Roberts)
    Renamed libnet_host_lookup() and libnet_name_resolve() to the more     - 06-fix_libnet_pblock_coalesce_leak.patch from debian source package See
    intuitive libnet_addr2name() and libnet_name2addr().       http://packages.debian.org/source/sid/libnet (Sam Roberts)
    - 04-fix_libnet_build_ntp.patch from debian source package See
    All of the address resolution functions return host byte order (which       http://packages.debian.org/source/sid/libnet (Sam Roberts)
    is what the build functions want).     - 03-fix_libnet_802_1x_hdr.3.patch from debian source package See
      http://packages.debian.org/source/sid/libnet (Sam Roberts)
    Removed a ton of code from every corner of libnet.     - 02-fix_libnet_802_1q_hdr.3.patch See
      http://packages.debian.org/source/sid/libnet (Sam Roberts)
    Removed alot of useless crap:     - 01-fix_libnet-functions.h.3.patch from debian source package See
        misc directory       http://packages.debian.org/source/sid/libnet (Sam Roberts)
        ports directory     - strip CVS subdirectories from upstream package (Sam Roberts)
        util directory
        cleaned out the test directory and moved it to sample From 1.1.3-rc:
                           
    The libnet-config script is no longer needed to specify machine     Added a libnet_version() function
    endianess -- that has been moved to libnet.h and done at compile time.     Fixed a bug in libnet_build_ntp() where two arguments werent used due to a
    You can still use it to specify other CPP constants as well as      typo
    libraries.     Fixed a bug ln libnet_name2addr4 in which it didnt call hstrerror
    Fixed a memory leak in libnet_if_addr.c
    Added cygwin support.     Internals: added a payload builder macro
    Added an HSRP builder
    Hooks for a few ieee 802 builders.     Fixed the cdp.c sample code
    Added AC_PREREQ(2.50) to configure.in to come correct
    Added NTP builder.     Added a libnet udp header prototype. We need to add an entire exported
     interface for the sole purpose of casting captured packets, this will
    Added DHCP builder.      presumably be a part of the pcap integration.
    Added libnet_adv_write_raw_ipv4()
    Added BOOTP builder.     Fixed the checksum function
    Updated the autoconf/automake stuff to be up to date with the latest
    Added Cisco CDP builder (needs work).      versions. We now use libtool.
    Fixed a signed/unsigned comparison warning in the LIBNET_DO_PAYLOAD() macro
    Added IPSEC builder (needs work).     Changed all empty function prototypes to contain the void keyword
    Removed all C++ style comments
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -     Removed the configure.in check for strerror()   
     
  1.0.2a    02.06.2001      Oops!  Messed up the install stuff.  Fixed now.
                            Fixed the config.sub to correctly look for arm* Mon Mar 29 09:23:49 PST 2004                                            1.1.2.1
                             architecture.
                            Fixed the test.sh script     Fixed a typo in the ICMP patch mentioned below
                             (Thankz again to syke).
Thu Mar 25 10:49:04 PST 2004                                              1.1.2
  1.0.2     02.03.2001      Added OpenBSD 2.7 etherspoof lkm and kernel patch.
                             (Thankz to obecian).     Fixed the ICMP error message builders (there was a pblock assembly bug
                            Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?)      that would prevent you from building more than one ICMP {unreach, time
                             etherspoof kernel patch.      exceed, redirect} in succession; the order of operations has changed
                             (Thankz to Matt Bing).      slightly for building these packets, see the documenation and sample code
                            Added FreeBSD 4 support for automagic MAC address     Added a Sebek builder
                             spoofing (via ioctl).  No more lkm!     Fixed a bug in libnet_autobuild_arp() that had it pulling in the address to
                             (Thankz to Toni Andjelkovic).      a pointer instead of just the address
                            Added VRRP support.     Added AM_MAINTAINER_MODE to configure.in
                            Fixed a NULL pointer check in libnet_checksum.c.     Changed the __libnet_dump* namespace to the more descriptive libnet_diag*
                             (Thankz to syke).     Added libnet_getpacket_size() to return the size of a packet in a given l
                            Fixed a function naming problem in libnet_if_addr.c.     Removed "protocol" from the libnet context. It was a waste of four bytes
                             (Thankz to gigisull).      The raw socket interface always uses the "IPPROTO_RAW" protocol
                            Fixed a potential byte error in libnet_version.     Fixed a memory leak in the advanced interface; there is now a function
                             (Thankz to wotan).      libnet_adv_free_packet() to free the memory allocated for the packet
                            Fixed a potential overflow in      when libnet_adv_cull_packet() is called
                             libnet_link_sockpacket.c and libnet_link_dlpi.c.     Fixed a bug on big endian boxes that had TCP and UDP checksums with odd
                             (Thankz to Jarno Huuskonen).      payloads come out incorrect 
                            Fixed a manpage discrepancy (get_ip_addr returns     Changes all error messages to look and feel the same:
                             host-byte, not network-byte).      "%s(): foo\n", __func__
                            Fixed arena allocation code (misalignments and     Added a bunch of htons/htonl fixes
                             whatnot) and arena manpage entry (2 arguments     Continued to add to the doxygen-based documentation
                             were swapped).     Added support for unconfigured interfaces
                             (Thankz to Bryan T. Schmersal).     Changed the number of interfaces libnet can handle from 32 to 512
                            Fixed datatype discrepancies (u_char was used     Removed uneeded control structure cruft from libnet_link_dlpi.c
                             liberally when char should have been used).     Removed sample/ip.c and added sample/ip_link.c and sample/ip_raw.c
                             (Thankz to Kyle Hargraves).     Added IPv6 fragmentation header builder
                            Fixed the PF_PACKET interface to work correctly.     Added IPv6 routing information header builder
                             (Thankz to Smiler).     Added IPv6 destination options header builder
    Fixed IPv6 flowlabel and traffic class bitwise math
  1.0.1b    04.07.2000      Fixed portlist chaining code to allow for more than
                             one active plist chain at a time (as per twitch's Tue Nov 25 15:33:27 PST 2003                                              1.1.1
                             patch).
                            Fixed discrepancy between the manpage and code for     Fixed a bug in libnet_build_icmp_redirect: htonl(gateway) --> gateway.
                             libnet_close_link_interface.  It now returns 1 on     Added icmp_redirect.c sample code.
                             success as per libnet standard (thankz to Toni     Added libnet_autobuild_arp().
                             Andjelkovic for pointing this out).     Added a slightly faster checksum.
    Added a GRE builder.
  1.0.1a    03.29.2000      Fixed a small bug in libnet_link_dlpi.c.     Fixed a buffer overflow in libnet_build_dhcp().
    Added more sanity checks to ensure we have proper link or network layer
  1.0.1     12.19.1999      Fixed a typo in libnet-headers.h ARH_H -> ARP_H.      headers when not in advanced mode.
                            Fixed a small typo in ether_mod-2.5.c.     Fixed a bug that would sometimes make __libnet_dump_context() crash under 
                            Pre-happy BD to libnet!  She'z almost 2 yearz old!      linux.
    Migration from sprintf and strcpy snprintf and strncpy.
  1.0.0     10.27.1999      Added verbose html documentation.     Fixed bug in libnet_build_ipv4() when calculating size of memory block
                            Added verbosely commented  example code.     Removed the support directory -- if you're an OLD version of OpenBSD or
                            Fixed OSPF testcode compile issues.      FreeBSD you deserve what you get.
                            Added ping of death ICMP test code module.     Added a BGP builder.
                            Fixed manpage installation wrongness.     Changed the error handing functions to be more consistent and use
                            Fixed a reported bug in OpenBSD etherspoof lkm.      __FUNCTION__.
                            Merged OSPF lsa checksum code into main checksum     Fixed a bug in libnet_pblock_free() -- replaced it with 
                             module.      libnet_pblock_delete().
                            Fixed a reported bug in the Makefile.in under     Fixed all of the inconsistencies inside all of the builders and pblock code
                             Solaris when make install was invoked, the ln      where some fringe conditions could result in u_longs being crunched into
                             failed.      u_shorts.
                            Fixed linux-based IP broadcasting using the     Fixed libnet_pblock_coalesce() to only require one pass through the list. 
                             raw sockets interface.     Added better diagnostics (__libnet_dump_context(), __libnet_dump_pblock()).
    Added Token Ring and FDDI builders (Linux and Solaris only).
    0.99g    09.13.1999     Added an OSPF builder (which is still in beta).     Added Token Ring and FDDI sample programs.
                            Fixed the Linux/configure.in bug.  This was an odd     Fixed the handling of TCP and IP payloads when reusing a pblocks.
                             bug that affected Linux-based boxes, but not     Fixed the handling of IP headers such that if a TCP packet changes size
                             BSD-based machines.  The configure script refused      via subsequent calls to libnet_build_tcp(), the IP header automatically
                             to expand most of the Makefile.in macros in every file      changes size as well.
                             because of a conditional check.     Added libnet_pblock_delete() to remove a pblock from the list.
                            Fixed some Makefile.in issues.     Added ip.c sample program (builds an arbitrary IP packet).
    Added additional payload sanity checks to libnet_build_*.
    0.99f    09.09.1999     Changed test/poink.c to not rely on a previous     Added a payload to sample/icmp_echo_cq.c.
                             install of libnet to compile.     Added an MPLS builder.
                            Added a redhat RPM.     Added an 802.1x builder.
                            Changed sourcefile naming scheme to libnet_*.     Added an RPC builder!  Bout time eh?
                            Removed all assertions from the tree.     Fixed do1x.c sample code to make the frame valid.
                             We are moving closer to a 1.0 release and     Fixed link-interface semantics under Mac/OSX
                             assertions have no place in production code.     Changed libnet_stats to all be unsigned long longs to accomodate all of
                             Furthermore, there should be no exit points      hardcore packet writers.
                             inside a library.  Currently, all functions that     Fixed IPv6 support (to some extent) removed the IP_HDRINCL stuff and
                             made assertions now return an integral 1 upon      reworked the resolver stuff to use net_pton() and inet_ntop().
                             success and a -1 when the assertion would have     Fixed libnet_build_icmpv4_*() to properly handle the IP header in the
                             failed (some had to be changed from returning      payload.
                             void to returning int).  This will not break     Fixed libnet_build_igmp() to handle checksums properly.
                             backward compatbility.     Fixed a bug in libnet_build_dnsv4() -- now it will work for TCP or UDP --
                            Fixed bugs in the arena code.      see the sample program for details...
                             next_packet_from_arena would never return the     Fixed a bug in sample/dhcp_discover.c
                             first chunk of memory, only the "next".  It     Added multiple packet interface (called the context queue interface).
                             now handles this special case.  Thanks to      Until I finish the manpage, see the sample code and README files
                             Sascha Gresk for locating this bug.      for instructions on how it works.
                             Fixed another potential bug when attempting     Fixed Cygwin support.
                              to allocate large packet sizes inside an arena.     Fixed an OS/X compilation error due to lack of system header files.
                            Added an OpenBSD 2.5 ether_spoof lkm.     Fixed OS/X link layer bug.
                            Fixed TCP options bugs.     Fixed a bug in pblock_coalesce() that resulted in bad checksums when the
     advanced mode was enabled.
    0.99e    07.21.1999     Modified the libnet-config script to work more     Fixed a potential memory leak in pblock_coalesce().
                             intutively now.  It accepts multiple arguments.     Fixed a potential memory leak in libnet_select_device().
                             See README.libnet-config.     Fixed a potential memory leak in libnet_plist_chain_new().
                            Solaris m4/sh fixes (autoconf phase).     Fixed Solaris support for IPv6 address support.
                            Internal error handling changed to use libnet_error.     Fixed minor bugs in libnet_advanced.c.
    Added loopback device support.
    0.99d    06.24.1999     Added: build_icmp_redirect().
                            Added: FreeBSD 3.x support for spoofing source.
                            Added: libnet_error(). Mon Aug  5 15:18:52 PDT 2002                                              1.1.0
                            Added: port list chaining code.
                             MAC addrresses (see README.bpf).     First 1.1.0 non-beta release.
                            Bugfix: libnet_select_device correctly accepts
                             NULL device arguments.     Added libnet_adv_write_link() which allows an advanced user to access
                            Bugfix: build_icmp.c now copies the correct amount     libnet's low-level frame injection functionality directly.
                             of header information.
                            Bugfix: OpenBSD needs HAVE_SOCKADDR_SA_LEN.
                            Changed: write_ip internal semantics.  Cleaner Wed Jul 10 08:18:15 PDT 2002                                     1.1.0 Beta 07b
                             and faster now.
                            Changed: init_packet argument parameters.  More     Added some words to the manpage.
                             correct now.  Takes a u_short vs. a size_t.
    Fixed a typo in libnet-functions.h -- forgot a comma.
    0.99c   05.28.1999      link_int -> libnet_link_int.
                            Misc small testcode fixes.
                            Added libnet_tcp_header and libnet_ip_header. Sun Jul  7 10:37:12 PDT 2002                                     1.1.0 Beta 07a
                            Added libnet-config shell script, see
                             README.libnet-config and the manpage.     My bad.  Forgot to `make distclean` before last release resulting in some
                            Updated ports.     compilation errors.
                            Revamped checksum module --  it's much simpler
                             and more efficient (ripped out arch specific     My bad.  Forgot to add advanced *_ADV writing support to libnet_write().
                             code which seemed to be buggy with series' of     Simple fix.
                             very large packets).  Dug Song wrote it, with
                             small fixes/changes by MDS.
Tue Jul  2 08:42:57 PDT 2002                                      1.1.0 Beta 07
    0.99b   05.06.1999      Fixed a nasty UDP/TCP + data checksum bug.
                            Header structure further divided into subfiles.     BETA support for IPv6.
                            Moved get_hwaddr into low-level interface locales.
                            Fixed the BSD get_hwaddr (dugsong@anzen.com).     Fixed the IP and TCP options bugs that bound the TCP and IP payloads to
                            Ported to BSD/OS 3.x.     the IP and TCP headers respectively and saw options being appended
                            Added `LIBNET_VERSION` symbolic constant.     after the payload.
                            build_ip with payload semantics changed (now
                             requires a payload length which is more     Added libnet_hex_aton().  This functions reads in arbirtrarily long hex
                             intuitive).     strings from the command line and returns the equivalent byte string.  It
                            Fixed the `disappearing MAC address problem`     does an implicit malloc() so make sure to free().
                             within the linux version of get_hwaddr().
    Frédéric Raynal submitted a patch to break the coalesce loop down to two
    0.99a   04.14.1999      Linux 2.0.x kernels don't have <net/ethernet.h>     passes using realloc resulting in a modest performance increase!  Cool!
                             0.99 included this header file without checking
                             to see if it present.  This is now fixed.     Added "Advanced Mode" which will initialize the library with additional
                            Non-x86 systems have no tcp_check function but the     functionality for advanced users who "know what they're doing".  Basically
                             stub.c sourcefile did not check this.  This is now     this feature will remove some of the sanity checks libnet does when
                             fixed.     building and injecting packets, at the programmer's peril.  It also exposes
                            Added the utilities directory and get_mac.c.     the libnet_adv() functions.
    0.99    04.13.1999      Major manpage redux.     FINALLY changed that irritating struct ether_addr redefintion problem.
                            Added (broken?) PF_PACKET support for Linux (see     I internalized the name space of it (-> libnet_ether_addr) so there will
                             README.linux).     be no more issues there.  Please update your code accordingly!
                            Moved alot of m4 from configure.in to aclocal.m4.
                            Added Linux m4 macro to detect PF_PACKET.     Added IGMP checksum support which was omitted by accident.
                            Added build_icmp_unreach
                            Added build_icmp_timestamp     Removed netinet/ip_icmp.h from include list.  This was causing problems
                            Added standard nomenclature for all the ICMP     when including dnet.h which includes other system headers.  We can
                             type/code symbolic constants (see the manpage).     probably stand to remove several headers from libnet.h.in.
                            Changed internal network structure nomenclature.
                            Decided to stop using the word nomenclature so much.     Added sanity check to ensure that when *build_ethernet() is called the
                            Fixed semantics of get_ipaddr (s/PF_INET/AF_INET).     injection method is LIBNET_LINK (except when advanced mode is on).
                            Added a symlink in the install directory so libnet
                             is also named `libpwrite`.
                            Added ASN.1 conversion routines, mostly pilfered Thu Mar 28 22:18:46 PST 2002                                      1.1.0 Beta 06
                             from ucd snmplib.
                            Removed get_hwaddr from sockpacket.c and made the     Fixed ICMP unreachable checksum error and payload issues.  Now using the
                             existing one portable to Linux.     payload interface with unreachables will append the payload to the IPv4
                            Added more testcode and changed testcode structure     header of the "offending packet".
                             to be more intuitive.
                            Added init_packet and destroy_packet.     Split STP builder into two; libnet_build_stp_conf() and
                            Added an arena allocator.     libnet_build_stp_tcn().
                            Fixed alignment issues on SPARC and Alpha
                             (possibly others with strict alignment     New CHANGELOG format.  :)
                             requirements).
                            Added a packet dumping routine.  Not fully tested.
                            Testcode updates including a master testcode shell Mar 24 2002                                                       1.1.0 Beta 05
                             script.
                            Added stub functions to ease the eventual     New building logic.  Top down.  Much smarter, we now build packets and
                             transition to a more proper `libnet_*` function     frames like an OS kernel.
                             naming convention.  See README.stubs for more
                             info.     Added Cisco ISL builder.
    0.10a   02.04.1999      Added the libnet.s2h configuration file to the
                             distribution. Mar 18 2002                                                       1.1.0 Beta 04
                            GLIBC fix.
    Added an STP builder.
    0.10    01.31.1999      Many low-level changes, same interface though.
                            Split up the main libnet.h file into two files.     Hooks for Cisco ISL builder.
                            Autoconf changes:
                             checks to see if the underlying architecture     Changed libnet_init() to now accept an IP address for the device (so 
                             needs to be aligned.     either "fxp0" or "192.168.0.1" will work).
                             flexible install location.
                             explicitly set $CC option in Makefile.in.     Added libnet_clear_packet() to free packet memory when we're done with it.
                            Added ensure-dir.sh.
                            Changes DEBUG semantics as I was told the previous
                             stuff broke on some compilers. Feb 28 2002                                                       1.1.0 Beta 03
                            Created a FreeBSD/OpenBSD ports entry.
                            SGI snoop (drain) interface fixed.     Added 802.1q, 802.2, 802.3 builders.
                            Solaris/HPUX DLPI interface fixed.
                            Support for getting local IP addresses.
                            Support for getting local hardware addresses. Feb 25 2002                                                       1.1.0 Beta 02
                            Added a DNS packet builder.
                            Added an RIP packet builder.     Fixed Cygwin support.
                            Added an ICMP MASKREQ/REPLY packet builder.
                            Added ICMP at the link layer test code.
                            Changed GLIBC version detection semantics. Feb 01 2002                                                       1.1.0 Beta 01
    0.9     12.15.1998      Major changes/additions here...     Complete new API and overhaul of most everything.
                            Added lowlevel packet building and writing
                             routines with a codebase from libpcap.     Improved linux packet socket support.
                            Broken DPLI support (fixme!).                             
                            Added ethernet and ARP building routines.     Renamed libnet_host_lookup() and libnet_name_resolve() to the more 
                            Added ICMP_ECHO building routine which led to the     intuitive libnet_addr2name() and libnet_name2addr().
                             Discovery of an odd kernel panic bug under
                             OpenBSD (see hook.c in test dir).     All of the address resolution functions return host byte order (which 
                            Added IGMP building routine.     is what the build functions want).
                            Reworked autoconf script.
                            Fixed Linux ip_sum vs. ip_csum naming issue.     Removed a ton of code from every corner of libnet.
                            Fixed Solaris checksums (2.4, 2.5.x).
                            Added NetBSD autoconf entry.     Removed alot of useless crap:
                            Changed BSD_BYTE_SWAP semantics to correctly handle         misc directory
                             IP datagrams through BPF (see write_ip.c).         ports directory
        util directory
    0.8c    11.10.1998      Added more testcode.         cleaned out the test directory and moved it to sample
                            
    0.8b    10.21.1998      OK.  I THINK WE'VE FINALLY FIXED THAT GLIBC THING.     The libnet-config script is no longer needed to specify machine 
                            Ported to alpha Linux.     endianess -- that has been moved to libnet.h and done at compile time.
    You can still use it to specify other CPP constants as well as 
    0.8a    10.15.1998      Added support for IP TOS bits (oops.  Broke     libraries.
                             backward compatibility again.  Like I said, don't
                             rely on this until 1.x).     Added cygwin support.
    0.8     10.13.1998      Added support for IP options.     Hooks for a few ieee 802 builders.
                            Added support for TCP options.
                            Added a dummy version function.     Added NTP builder.
                            Fixed linux libc vs. glibc nomenclature discrepancy.
                            Solaris checksums fixed for non-payload laden     Added DHCP builder.
                             packets?
    Added BOOTP builder.
    0.7b    09.22.1998      Linux glibc/libc nomenclature anomoly still there.
                            Fixed Linux/BSD icmp header size problem.     Added Cisco CDP builder (needs work).
    0.7a    08.26.1998      Fixed payload support (see test code).     Added IPSEC builder (needs work).
    0.7     08.25.1998      Solaris port (checksums broken -- Solaris has gay - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                             fucking quirks when it comes to checksumming on
                             raw sockets).   1.0.2a    02.06.2001      Oops!  Messed up the install stuff.  Fixed now.
                            Added autoconf scripts.                             Fixed the config.sub to correctly look for arm*
                            Added psuedorandom number generation code.                              architecture.
                            Added payload support (breaks backward                             Fixed the test.sh script
                            compatability and is untested).                              (Thankz again to syke).
    0.6     06.21.1998      Fixed UDP checksum.  Removed USE_NAME CPP option   1.0.2     02.03.2001      Added OpenBSD 2.7 etherspoof lkm and kernel patch.
                             made it a run time decision.  Makes code more                              (Thankz to obecian).
                             extensible, but breaks backward compatibility.                             Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?)
                             etherspoof kernel patch.
    0.5     06.02.1998      Added TCP/UDP/IP packet assembly routines.                              (Thankz to Matt Bing).
                            Added a checksum function.                             Added FreeBSD 4 support for automagic MAC address
                            Added a manpage.                              spoofing (via ioctl).  No more lkm!
                            Removed daemonizing function (BSD has one).                              (Thankz to Toni Andjelkovic).
                            UDP checksums broken...                             Added VRRP support.
                            Fixed a NULL pointer check in libnet_checksum.c.
    0.4     01.12.1998      IP checksum (x86 assembly implementation).                              (Thankz to syke).
                            Fixed a function naming problem in libnet_if_addr.c.
    0.3     01.12.1998      daemonizing function.                              (Thankz to gigisull).
                            Fixed a potential byte error in libnet_version.
    0.2     01.11.1998      raw socket function changed to allow user                              (Thankz to wotan).
                            designated protocol for raw socket                             Fixed a potential overflow in
                             libnet_link_sockpacket.c and libnet_link_dlpi.c.
    0.1     01.05.1998      Initial release, contains:                              (Thankz to Jarno Huuskonen).
                             network byte order -> human readable IP address,                             Fixed a manpage discrepancy (get_ip_addr returns
                             human readable IP address -> network byte order,                              host-byte, not network-byte).
                             simple raw socket / IP_HDRINCL wrapper,                             Fixed arena allocation code (misalignments and
                             TCP checksum (x86 assembly implementation)                              whatnot) and arena manpage entry (2 arguments
EOF                              were swapped).
                              (Thankz to Bryan T. Schmersal).
                             Fixed datatype discrepancies (u_char was used
                              liberally when char should have been used).
                              (Thankz to Kyle Hargraves).
                             Fixed the PF_PACKET interface to work correctly.
                              (Thankz to Smiler).
 
   1.0.1b    04.07.2000      Fixed portlist chaining code to allow for more than
                              one active plist chain at a time (as per twitch's
                              patch).
                             Fixed discrepancy between the manpage and code for
                              libnet_close_link_interface.  It now returns 1 on
                              success as per libnet standard (thankz to Toni
                              Andjelkovic for pointing this out).
 
   1.0.1a    03.29.2000      Fixed a small bug in libnet_link_dlpi.c.
 
   1.0.1     12.19.1999      Fixed a typo in libnet-headers.h ARH_H -> ARP_H.
                             Fixed a small typo in ether_mod-2.5.c.
                             Pre-happy BD to libnet!  She'z almost 2 yearz old!
 
   1.0.0     10.27.1999      Added verbose html documentation.
                             Added verbosely commented  example code.
                             Fixed OSPF testcode compile issues.
                             Added ping of death ICMP test code module.
                             Fixed manpage installation wrongness.
                             Fixed a reported bug in OpenBSD etherspoof lkm.
                             Merged OSPF lsa checksum code into main checksum
                              module.
                             Fixed a reported bug in the Makefile.in under
                              Solaris when make install was invoked, the ln
                              failed.
                             Fixed linux-based IP broadcasting using the
                              raw sockets interface.
 
     0.99g    09.13.1999     Added an OSPF builder (which is still in beta).
                             Fixed the Linux/configure.in bug.  This was an odd
                              bug that affected Linux-based boxes, but not
                              BSD-based machines.  The configure script refused
                              to expand most of the Makefile.in macros in every file
                              because of a conditional check.
                             Fixed some Makefile.in issues.
 
     0.99f    09.09.1999     Changed test/poink.c to not rely on a previous
                              install of libnet to compile.
                             Added a redhat RPM.
                             Changed sourcefile naming scheme to libnet_*.
                             Removed all assertions from the tree.
                              We are moving closer to a 1.0 release and
                              assertions have no place in production code.
                              Furthermore, there should be no exit points
                              inside a library.  Currently, all functions that
                              made assertions now return an integral 1 upon
                              success and a -1 when the assertion would have
                              failed (some had to be changed from returning
                              void to returning int).  This will not break
                              backward compatbility.
                             Fixed bugs in the arena code.
                              next_packet_from_arena would never return the
                              first chunk of memory, only the "next".  It
                              now handles this special case.  Thanks to
                              Sascha Gresk for locating this bug.
                              Fixed another potential bug when attempting
                               to allocate large packet sizes inside an arena.
                             Added an OpenBSD 2.5 ether_spoof lkm.
                             Fixed TCP options bugs.
 
     0.99e    07.21.1999     Modified the libnet-config script to work more
                              intutively now.  It accepts multiple arguments.
                              See README.libnet-config.
                             Solaris m4/sh fixes (autoconf phase).
                             Internal error handling changed to use libnet_error.
 
     0.99d    06.24.1999     Added: build_icmp_redirect().
                             Added: FreeBSD 3.x support for spoofing source.
                             Added: libnet_error().
                             Added: port list chaining code.
                              MAC addrresses (see README.bpf).
                             Bugfix: libnet_select_device correctly accepts
                              NULL device arguments.
                             Bugfix: build_icmp.c now copies the correct amount 
                              of header information.
                             Bugfix: OpenBSD needs HAVE_SOCKADDR_SA_LEN.
                             Changed: write_ip internal semantics.  Cleaner
                              and faster now.
                             Changed: init_packet argument parameters.  More
                              correct now.  Takes a u_short vs. a size_t.
 
     0.99c   05.28.1999      link_int -> libnet_link_int.
                             Misc small testcode fixes.
                             Added libnet_tcp_header and libnet_ip_header.
                             Added libnet-config shell script, see
                              README.libnet-config and the manpage.
                             Updated ports.
                             Revamped checksum module --  it's much simpler
                              and more efficient (ripped out arch specific
                              code which seemed to be buggy with series' of
                              very large packets).  Dug Song wrote it, with
                              small fixes/changes by MDS.
 
     0.99b   05.06.1999      Fixed a nasty UDP/TCP + data checksum bug.
                             Header structure further divided into subfiles.
                             Moved get_hwaddr into low-level interface locales.
                             Fixed the BSD get_hwaddr (dugsong@anzen.com).
                             Ported to BSD/OS 3.x.
                             Added `LIBNET_VERSION` symbolic constant.
                             build_ip with payload semantics changed (now
                              requires a payload length which is more
                              intuitive).
                             Fixed the `disappearing MAC address problem`
                              within the linux version of get_hwaddr().
 
     0.99a   04.14.1999      Linux 2.0.x kernels don't have <net/ethernet.h>
                              0.99 included this header file without checking
                              to see if it present.  This is now fixed.
                             Non-x86 systems have no tcp_check function but the
                              stub.c sourcefile did not check this.  This is now
                              fixed.
                             Added the utilities directory and get_mac.c.
 
     0.99    04.13.1999      Major manpage redux.
                             Added (broken?) PF_PACKET support for Linux (see
                              README.linux).
                             Moved alot of m4 from configure.in to aclocal.m4.
                             Added Linux m4 macro to detect PF_PACKET.
                             Added build_icmp_unreach
                             Added build_icmp_timestamp
                             Added standard nomenclature for all the ICMP
                              type/code symbolic constants (see the manpage).
                             Changed internal network structure nomenclature.
                             Decided to stop using the word nomenclature so much.
                             Fixed semantics of get_ipaddr (s/PF_INET/AF_INET).
                             Added a symlink in the install directory so libnet
                              is also named `libpwrite`.
                             Added ASN.1 conversion routines, mostly pilfered
                              from ucd snmplib.
                             Removed get_hwaddr from sockpacket.c and made the
                              existing one portable to Linux.
                             Added more testcode and changed testcode structure
                              to be more intuitive.
                             Added init_packet and destroy_packet.
                             Added an arena allocator.
                             Fixed alignment issues on SPARC and Alpha
                              (possibly others with strict alignment
                              requirements).
                             Added a packet dumping routine.  Not fully tested.
                             Testcode updates including a master testcode shell
                              script.
                             Added stub functions to ease the eventual
                              transition to a more proper `libnet_*` function
                              naming convention.  See README.stubs for more
                              info.
 
     0.10a   02.04.1999      Added the libnet.s2h configuration file to the
                              distribution.
                             GLIBC fix.
 
     0.10    01.31.1999      Many low-level changes, same interface though.
                             Split up the main libnet.h file into two files.
                             Autoconf changes:
                              checks to see if the underlying architecture
                              needs to be aligned.
                              flexible install location.
                              explicitly set $CC option in Makefile.in.
                             Added ensure-dir.sh.
                             Changes DEBUG semantics as I was told the previous
                              stuff broke on some compilers.
                             Created a FreeBSD/OpenBSD ports entry.
                             SGI snoop (drain) interface fixed.
                             Solaris/HPUX DLPI interface fixed.
                             Support for getting local IP addresses.
                             Support for getting local hardware addresses.
                             Added a DNS packet builder.
                             Added an RIP packet builder.
                             Added an ICMP MASKREQ/REPLY packet builder.
                             Added ICMP at the link layer test code.
                             Changed GLIBC version detection semantics.
 
     0.9     12.15.1998      Major changes/additions here...
                             Added lowlevel packet building and writing
                              routines with a codebase from libpcap.
                             Broken DPLI support (fixme!).
                             Added ethernet and ARP building routines.
                             Added ICMP_ECHO building routine which led to the
                              Discovery of an odd kernel panic bug under
                              OpenBSD (see hook.c in test dir).
                             Added IGMP building routine.
                             Reworked autoconf script.
                             Fixed Linux ip_sum vs. ip_csum naming issue.
                             Fixed Solaris checksums (2.4, 2.5.x).
                             Added NetBSD autoconf entry.
                             Changed BSD_BYTE_SWAP semantics to correctly handle
                              IP datagrams through BPF (see write_ip.c).
 
     0.8c    11.10.1998      Added more testcode.
 
     0.8b    10.21.1998      OK.  I THINK WE'VE FINALLY FIXED THAT GLIBC THING.
                             Ported to alpha Linux.
 
     0.8a    10.15.1998      Added support for IP TOS bits (oops.  Broke
                              backward compatibility again.  Like I said, don't
                              rely on this until 1.x).
 
     0.8     10.13.1998      Added support for IP options.
                             Added support for TCP options.
                             Added a dummy version function.
                             Fixed linux libc vs. glibc nomenclature discrepancy.
                             Solaris checksums fixed for non-payload laden
                              packets?
 
     0.7b    09.22.1998      Linux glibc/libc nomenclature anomoly still there.
                             Fixed Linux/BSD icmp header size problem.
 
     0.7a    08.26.1998      Fixed payload support (see test code).
 
     0.7     08.25.1998      Solaris port (checksums broken -- Solaris has gay
                              fucking quirks when it comes to checksumming on
                              raw sockets).
                             Added autoconf scripts.
                             Added psuedorandom number generation code.
                             Added payload support (breaks backward
                             compatability and is untested).
 
     0.6     06.21.1998      Fixed UDP checksum.  Removed USE_NAME CPP option
                              made it a run time decision.  Makes code more
                              extensible, but breaks backward compatibility.
 
     0.5     06.02.1998      Added TCP/UDP/IP packet assembly routines.
                             Added a checksum function.
                             Added a manpage.
                             Removed daemonizing function (BSD has one).
                             UDP checksums broken...
 
     0.4     01.12.1998      IP checksum (x86 assembly implementation).
 
     0.3     01.12.1998      daemonizing function.
 
     0.2     01.11.1998      raw socket function changed to allow user 
                             designated protocol for raw socket
 
     0.1     01.05.1998      Initial release, contains: 
                              network byte order -> human readable IP address,
                              human readable IP address -> network byte order,
                              simple raw socket / IP_HDRINCL wrapper,
                              TCP checksum (x86 assembly implementation)
 EOF

Removed from v.1.1  
changed lines
  Added in v.1.1.1.2


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