--- embedaddon/libnet/doc/CHANGELOG 2012/02/21 22:14:23 1.1.1.1 +++ embedaddon/libnet/doc/CHANGELOG 2013/07/22 11:54:41 1.1.1.2 @@ -1,527 +1,773 @@ -=============================================================================== - $Id: CHANGELOG,v 1.1.1.1 2012/02/21 22:14:23 misho Exp $ - LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman - http://www.packetfactory.net/libnet -=============================================================================== - - -Mon Mar 29 09:23:49 PST 2004 1.1.2.1 - - Fixed a typo in the ICMP patch mentioned below. - -Thu Mar 25 10:49:04 PST 2004 1.1.2 - - Fixed the ICMP error message builders (there was a pblock assembly bug - that would prevent you from building more than one ICMP {unreach, time - exceed, redirect} in succession; the order of operations has changed - slightly for building these packets, see the documenation and sample code - Added a Sebek builder - Fixed a bug in libnet_autobuild_arp() that had it pulling in the address to - a pointer instead of just the address - Added AM_MAINTAINER_MODE to configure.in - Changed the __libnet_dump* namespace to the more descriptive libnet_diag* - Added libnet_getpacket_size() to return the size of a packet in a given l - Removed "protocol" from the libnet context. It was a waste of four bytes - The raw socket interface always uses the "IPPROTO_RAW" protocol - Fixed a memory leak in the advanced interface; there is now a function - libnet_adv_free_packet() to free the memory allocated for the packet - when libnet_adv_cull_packet() is called - Fixed a bug on big endian boxes that had TCP and UDP checksums with odd - payloads come out incorrect - Changes all error messages to look and feel the same: - "%s(): foo\n", __func__ - Added a bunch of htons/htonl fixes - Continued to add to the doxygen-based documentation - Added support for unconfigured interfaces - Changed the number of interfaces libnet can handle from 32 to 512 - Removed uneeded control structure cruft from libnet_link_dlpi.c - Removed sample/ip.c and added sample/ip_link.c and sample/ip_raw.c - Added IPv6 fragmentation header builder - Added IPv6 routing information header builder - Added IPv6 destination options header builder - Fixed IPv6 flowlabel and traffic class bitwise math - -Tue Nov 25 15:33:27 PST 2003 1.1.1 - - Fixed a bug in libnet_build_icmp_redirect: htonl(gateway) --> gateway. - Added icmp_redirect.c sample code. - Added libnet_autobuild_arp(). - Added a slightly faster checksum. - Added a GRE builder. - Fixed a buffer overflow in libnet_build_dhcp(). - Added more sanity checks to ensure we have proper link or network layer - headers when not in advanced mode. - Fixed a bug that would sometimes make __libnet_dump_context() crash under - linux. - Migration from sprintf and strcpy snprintf and strncpy. - Fixed bug in libnet_build_ipv4() when calculating size of memory block - Removed the support directory -- if you're an OLD version of OpenBSD or - FreeBSD you deserve what you get. - Added a BGP builder. - Changed the error handing functions to be more consistent and use - __FUNCTION__. - Fixed a bug in libnet_pblock_free() -- replaced it with - libnet_pblock_delete(). - Fixed all of the inconsistencies inside all of the builders and pblock code - where some fringe conditions could result in u_longs being crunched into - u_shorts. - Fixed libnet_pblock_coalesce() to only require one pass through the list. - Added better diagnostics (__libnet_dump_context(), __libnet_dump_pblock()). - Added Token Ring and FDDI builders (Linux and Solaris only). - Added Token Ring and FDDI sample programs. - Fixed the handling of TCP and IP payloads when reusing a pblocks. - Fixed the handling of IP headers such that if a TCP packet changes size - via subsequent calls to libnet_build_tcp(), the IP header automatically - changes size as well. - Added libnet_pblock_delete() to remove a pblock from the list. - Added ip.c sample program (builds an arbitrary IP packet). - Added additional payload sanity checks to libnet_build_*. - Added a payload to sample/icmp_echo_cq.c. - Added an MPLS builder. - Added an 802.1x builder. - Added an RPC builder! Bout time eh? - Fixed do1x.c sample code to make the frame valid. - Fixed link-interface semantics under Mac/OSX - Changed libnet_stats to all be unsigned long longs to accomodate all of - hardcore packet writers. - Fixed IPv6 support (to some extent) removed the IP_HDRINCL stuff and - reworked the resolver stuff to use net_pton() and inet_ntop(). - Fixed libnet_build_icmpv4_*() to properly handle the IP header in the - payload. - Fixed libnet_build_igmp() to handle checksums properly. - Fixed a bug in libnet_build_dnsv4() -- now it will work for TCP or UDP -- - see the sample program for details... - Fixed a bug in sample/dhcp_discover.c - Added multiple packet interface (called the context queue interface). - Until I finish the manpage, see the sample code and README files - for instructions on how it works. - Fixed Cygwin support. - Fixed an OS/X compilation error due to lack of system header files. - Fixed OS/X link layer bug. - Fixed a bug in pblock_coalesce() that resulted in bad checksums when the - advanced mode was enabled. - Fixed a potential memory leak in pblock_coalesce(). - Fixed a potential memory leak in libnet_select_device(). - Fixed a potential memory leak in libnet_plist_chain_new(). - Fixed Solaris support for IPv6 address support. - Fixed minor bugs in libnet_advanced.c. - Added loopback device support. - - -Mon Aug 5 15:18:52 PDT 2002 1.1.0 - - First 1.1.0 non-beta release. - - Added libnet_adv_write_link() which allows an advanced user to access - libnet's low-level frame injection functionality directly. - - -Wed Jul 10 08:18:15 PDT 2002 1.1.0 Beta 07b - - Added some words to the manpage. - - Fixed a typo in libnet-functions.h -- forgot a comma. - - -Sun Jul 7 10:37:12 PDT 2002 1.1.0 Beta 07a - - My bad. Forgot to `make distclean` before last release resulting in some - compilation errors. - - My bad. Forgot to add advanced *_ADV writing support to libnet_write(). - Simple fix. - - -Tue Jul 2 08:42:57 PDT 2002 1.1.0 Beta 07 - - BETA support for IPv6. - - Fixed the IP and TCP options bugs that bound the TCP and IP payloads to - the IP and TCP headers respectively and saw options being appended - after the payload. - - Added libnet_hex_aton(). This functions reads in arbirtrarily long hex - strings from the command line and returns the equivalent byte string. It - does an implicit malloc() so make sure to free(). - - Frédéric Raynal submitted a patch to break the coalesce loop down to two - passes using realloc resulting in a modest performance increase! Cool! - - Added "Advanced Mode" which will initialize the library with additional - functionality for advanced users who "know what they're doing". Basically - this feature will remove some of the sanity checks libnet does when - building and injecting packets, at the programmer's peril. It also exposes - the libnet_adv() functions. - - FINALLY changed that irritating struct ether_addr redefintion problem. - I internalized the name space of it (-> libnet_ether_addr) so there will - be no more issues there. Please update your code accordingly! - - Added IGMP checksum support which was omitted by accident. - - Removed netinet/ip_icmp.h from include list. This was causing problems - when including dnet.h which includes other system headers. We can - probably stand to remove several headers from libnet.h.in. - - Added sanity check to ensure that when *build_ethernet() is called the - injection method is LIBNET_LINK (except when advanced mode is on). - - -Thu Mar 28 22:18:46 PST 2002 1.1.0 Beta 06 - - Fixed ICMP unreachable checksum error and payload issues. Now using the - payload interface with unreachables will append the payload to the IPv4 - header of the "offending packet". - - Split STP builder into two; libnet_build_stp_conf() and - libnet_build_stp_tcn(). - - New CHANGELOG format. :) - - -Mar 24 2002 1.1.0 Beta 05 - - New building logic. Top down. Much smarter, we now build packets and - frames like an OS kernel. - - Added Cisco ISL builder. - - -Mar 18 2002 1.1.0 Beta 04 - - Added an STP builder. - - Hooks for Cisco ISL builder. - - Changed libnet_init() to now accept an IP address for the device (so - either "fxp0" or "192.168.0.1" will work). - - Added libnet_clear_packet() to free packet memory when we're done with it. - - -Feb 28 2002 1.1.0 Beta 03 - - Added 802.1q, 802.2, 802.3 builders. - - -Feb 25 2002 1.1.0 Beta 02 - - Fixed Cygwin support. - - -Feb 01 2002 1.1.0 Beta 01 - - Complete new API and overhaul of most everything. - - Improved linux packet socket support. - - Renamed libnet_host_lookup() and libnet_name_resolve() to the more - intuitive libnet_addr2name() and libnet_name2addr(). - - All of the address resolution functions return host byte order (which - is what the build functions want). - - Removed a ton of code from every corner of libnet. - - Removed alot of useless crap: - misc directory - ports directory - util directory - cleaned out the test directory and moved it to sample - - The libnet-config script is no longer needed to specify machine - 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 - libraries. - - Added cygwin support. - - Hooks for a few ieee 802 builders. - - Added NTP builder. - - Added DHCP builder. - - Added BOOTP builder. - - Added Cisco CDP builder (needs work). - - Added IPSEC builder (needs work). - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1.0.2a 02.06.2001 Oops! Messed up the install stuff. Fixed now. - Fixed the config.sub to correctly look for arm* - architecture. - Fixed the test.sh script - (Thankz again to syke). - - 1.0.2 02.03.2001 Added OpenBSD 2.7 etherspoof lkm and kernel patch. - (Thankz to obecian). - Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?) - etherspoof kernel patch. - (Thankz to Matt Bing). - Added FreeBSD 4 support for automagic MAC address - spoofing (via ioctl). No more lkm! - (Thankz to Toni Andjelkovic). - Added VRRP support. - Fixed a NULL pointer check in libnet_checksum.c. - (Thankz to syke). - Fixed a function naming problem in libnet_if_addr.c. - (Thankz to gigisull). - Fixed a potential byte error in libnet_version. - (Thankz to wotan). - Fixed a potential overflow in - libnet_link_sockpacket.c and libnet_link_dlpi.c. - (Thankz to Jarno Huuskonen). - Fixed a manpage discrepancy (get_ip_addr returns - host-byte, not network-byte). - Fixed arena allocation code (misalignments and - whatnot) and arena manpage entry (2 arguments - 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 - 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 +=============================================================================== + $Id: CHANGELOG,v 1.1.1.2 2013/07/22 11:54:41 misho Exp $ + LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman + http://www.packetfactory.net/libnet +=============================================================================== + +- 1.1.6 + + - Note about why including libnet.h breaks dnet.h/dumbnet.h (Sam Roberts) + - Prepare for 1.1.6-rc3. (Sam Roberts) + - Only use getifaddrs() if it exists. (reported by Dagobert Michelsen) (Sam Roberts) + - Clean up use of single and bracket quotes. (Sam Roberts) + - FreeBSD and Solaris volunteers to contibute. (Sam Roberts) + - ICMPv6 struct is too long, so use length macro (sickmind@lavabit.com) (Sam Roberts) + - ICMPv6 pblock sizes are needed to calculate IPv6's ip_len (reported by sickmind@lavabit.com) (Sam Roberts) + - Prep for 1.1.6 release, such as bumping version (Sam Roberts) + - Add people who have volunteered to check release candidates. (Sam Roberts) + - Rework libnet_autobuild_ipv6() to eliminate code duplication. (Sam Roberts) + - Implemented libnet_autobuild_ipv6() (repolho) + - Implemented unix version of libnet_get_ipaddr6() (repolho) + - Reintroduce libnet_pblock_record_ip_offset() which is empty. (Sam Roberts) + - Make clear that all contributions are under libnet copyright. (Sam Roberts) + - Fix doc comment format errors reported by doxygen. (Sam Roberts) + - Update for doxygen 1.7.4. (Sam Roberts) + - Note that PORTED is no longer maintained. (Sam Roberts) + - Note that CONTRIB is no longer maintained. (Sam Roberts) + - Prep for upcoming 1.1.6 release. (Sam Roberts) + - Remove BUGS, it referred to non-existent code. (Sam Roberts) + - Reworked icmpv6 patch to parallel the form of icmpv4 support. (Sam Roberts) + - Don't depend on netinet/ip.h. (Sam Roberts) + - Remove unused variable. (Sam Roberts) + - Support building ICMPv6 packets. (someone) + - Fixed typo in error message. (Thomas Habets) + - Use SO_BINDTODEVICE to force packets out opened device. (someone) + - Always use an IPPROTO of TCP when calculating TCP checksums. (Sam Roberts) + - Use correct addr type for addrlen calculation. (someone) + - libnet_build_igmp reserved field was mistakenly called 'code' (Sam Roberts) + - Documentation doesn't include any gif files. (Sam Roberts) + - Enable IPV6 support on Solaris 11. (Rich Burridge) + - Trying to fix write errors (ViÌctor MartiÌnez) + - 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) + - 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) + - 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) + - Synchronize comment about h_len with parameter name in function. (Sam Roberts) + - Fixes a buffer overflow issue when copying chaddr, file, and sname fields to the DHCP header. (allfro) + - 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) + - 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) + - 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) + - snap parameter was getting copied into the dhost field. (Sam Roberts) + - 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) + - Length n should include the value_hdr. (Sam Roberts) + - Coverity: UNINIT (Jiri Popelka) + - Coverity: REVERSE_INULL (Jiri Popelka) + - Coverity: RESOURCE_LEAK (Jiri Popelka) + - Coverity: OVERRUN_STATIC (Jiri Popelka) + - Coverity: OVERRUN_STATIC (Jiri Popelka) + - Coverity: OVERRUN_STATIC (Jiri Popelka) + - Coverity: FORWARD_NULL (Jiri Popelka) + - Coverity: FORWARD_NULL (Jiri Popelka) + - Coverity: CHECKED_RETURN (Jiri Popelka) + - mkinstalldirs is replaced by autogen.sh. Maybe it shouldn't be checked in? (Sam Roberts) + - autogen retries if /sw/... doesn't exist (Sam Roberts) + - build_ipv6: set higher traffic class bits (Ulrich Weber) + - Fix missing uint instead of u_int (Dagobert Michelsen) + +- 1.1.5 + + - IRIX: Get MAC address from ioctl(), not by spawning shell. (Thomas Habets) + - Compile fix for IRIX (added includes) (Thomas Habets) + - Don't explicitly check for UID 0, we may have capabilities even if not root. (Thomas Habets) (Sam Roberts) + - 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) + - Visual C++ compiler(v9.0) uses bitfield type as a hint to pad the bitfield, so struct was too long. (Sam Roberts) + - Further simplify autogen.sh (Sam Roberts) + - Removed dependency on net/bpf.h, and on pcap.h. (Sam Roberts) + - LBL_ALIGN check is unused, removing. (Sam Roberts) + - Don't include pcap.h if we've already got net/bpf.h, pcap has it's own bpf. (Sam Roberts) + - Make libnet_get_hwaddr work in the last few releases of OpenBSD (stu@spacehopper.org) (Sam Roberts) + - Get DLT types from the source, . (Sam Roberts) + - Use autoconf -ivf in autogen.sh (suggested by alon.barlev@gmail.com) (Sam Roberts) + - Don't distribute libnet.h, it is generated by configure (alon.barlev@gmail.com) (Sam Roberts) + - AIX build failures fixed, cause was inclusion of system headers libnet no longer uses (alon.barlev@gmail.com) (Sam Roberts) + - Add a link to the old docs. (Sam Roberts) + - Added links to github and sourceforge. (Sam Roberts) + - Replace C99/C++ comments with traditional C comments. (alon.barlev@gmail.com) (Sam Roberts) + - checksum would segfault if a IP checksum was requested for a non-ipv4 header (Sam Roberts) + - Closer backwards compat, assume its ipv4 if it's not ipv6. This seems totally wrong, but so it goes. (Sam Roberts) + - Try using the ip_len header field to guess the input buffer's size. (Sam Roberts) + - 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) + - merged icmpv6 patch in, but I believe either it or the sample/icmp6_unreach generates the cksum incorrectly (victor@inliniac.net) (Sam Roberts) + - Use libtool-1 or libtool-2 whatever available (alon.barlev@gmail.com) (Sam Roberts) + - 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) + - 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) + - --with-link-layer broken, was using wrong macro name, and didn't include all link types (Sam Roberts) + - ac_cv_c_bigendian is yes, not "big" (alon.barlev@gmail.com) (Sam Roberts) + - Remove dead code. (Sam Roberts) + - h_len is calculated for ip, udp, tcp, icmp, and igmp, so is allowed to be zero. (Sam Roberts) + - libnet_t's fd should be initialized to an invalid value, or libnet_destroy() will close stdin. (Sam Roberts) + - Alon's use of AC_CHECK_HEADERS fails to detect headers. Reverted part of 57acd56f09158decb69f301e7547ce8cde6ac63f (Sam Roberts) + - With link_none, the link apis were failing with not error message. (Sam Roberts) + - man doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts) + - Avoid mallocing zero bytes, it perturbs electric fence. (Sam Roberts) + - autotools patches for cross compiling and seperate builddir (alon.barlev@gmail.com) (Sam Roberts) + - html doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts) + - ip_offset is now calculated on the fly, and UDP and TCP no longer use h_len (Sam Roberts) + - IP offset calculation should allow nesting of IP protocols. (Sam Roberts) + - 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) + - 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) + - 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) + - Null the pointer in the about-to-be-freed structure, not the one on the stack. (Sam Roberts) + - 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) + - 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) + - Clarifications in document comments. (Sam Roberts) + - Don't doxygen process internal header libnet-headers.h (Sam Roberts) + - 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) + - 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) + - Why don't TCP and UDP use the DATA pblock type? (Sam Roberts) + - whitespace cleanup (Sam Roberts) + - Add libnet_dll.c as extra, so its there for win32, and build libnet_link.c (Sam Roberts) + - This file wasn't being built, and needed to include bpf to build. (Sam Roberts) + - Forgot to make device a const string here, too. (Sam Roberts) + - make string argument constant (Sam Roberts) + - only ignore Makefile in libnet/ (Sam Roberts) + - Replace u_intX_t with C99 uintX_t. (Thomas Habets) + - pclose() following popen(), not fclose() (Thomas Habets) + - snoof & dlpi: don't free on libnet_link_close() (Thomas Habets) + - Summarize changes for log. (Sam Roberts) + - Reindented, removing hard tabs, and using consistent brace positioning. (Sam Roberts) + - The non-standard types are no longer used. (Sam Roberts) + - /sw/.. path doesn't always exist (Sam Roberts) + - src/libnet_link_snoop.c: Only fclose if f!=NULL (Thomas Habets) + - src/libnet_link_snoop.c: fixed snoop-based backend. Works on IRIX. (Thomas Habets) + - Use uint64_t, not u_int64_t (Thomas Habets) + - define a lying gethostbyname2() if it's not defined (Thomas Habets) + - define STDOUT_FILENO if it's not defined (Thomas Habets) + - configure.in: check for gethostbyname2 (Thomas Habets) + - configure.in: Check for uint{16,32,64}_t (Thomas Habets) + - Configure switch to install samples (Sam Roberts) + - Attempt at applying a patch to get installable samples, which doesn't work. (Sam Roberts) + - Pointers not cleared after free could lead to double deallocation. (Sam Roberts) + - Convert CRLF to LF. (Sam Roberts) + - Auto* changes to work on OS X from git checkout. (Sam Roberts) + - Update autobuild endianness and unaligned checks. (Mike Frysinger) (Sam Roberts) + - Add srcdir to include path. (Sam Roberts) + - Adjust srcdir and builddir so libnet can build out-of-tree (Robin Getz/Mike Frysinger) (Sam Roberts) + - Beginning 1.1.5 development. (Sam Roberts) + +- 1.1.4 + + - Strip CRLF from files not in win32/ (Robert Scheck) + - libnet was using HAVE_CONFIG_H in a public header in order to deal with platform types. + https://bugzilla.redhat.com/show_bug.cgi?id=501633 + - Patch to libnet.h.in for compilation on HURD (David Paleino) + +- 1.1.3 + +Merged 1.1.3 release candidate from packet factory, 1.1.2, debian patches, and +my own fixes, including bugs causing memory corruption: + + - Fixed various errors, including memory corruption, when IPv4 options are + modified. (Sam Roberts) + - Convert from latin-1 to utf-8, from Robert Scheck. (Sam Roberts) + - Fixed doxygen errors and warnings, and added a deveoper script to prepare + libnet. (Sam Roberts) + - Removed CVS crud, again. (Sam Roberts) + - Applied autotools cleanup patch from Stefanos. (Sam Roberts) + - Applied patch from Stefanos to remove the autotools ephemera that leaked + back in. (Sam Roberts) + - Patches from Stefanos. (Sam Roberts) + - Updated .so revision to be one backwards compatible interface after + 1.1.2.1-fork's. (Sam Roberts) + - Fix for debian bug# 418975, IPv6 wasn't updating ip_offset. See + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=418975 and sample + 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 + Roberts) + - 802.1Q and 802.1X header documentation was incorrectly using /** /** is + reserved for doxygen documentation comments, and they didn't have any. + That those packet headers, and no others, were marked that way was + causing man pages to be generated for them, incomplete man pages that + 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. + 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) + - Bug fixes and reproduction code for ip_offset accounting problem in + libnet_build_ipv4 (Sam Roberts) + - doxygen configuration updated, html seems fine - I don't know about the + 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 + in upstream tarball. (Sam Roberts) + - Removed object files and cvs conflict residue contained in original + package. (Sam Roberts) + - debian patch 06 attempts to free the wrong pointer, and also leaks memory + from the inner loop. (Sam Roberts) + - libnet (inconsistently) uses various signed and/or unsigned typedefs + instead of char ANSI C uses char for string literals and the standard + 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) + - 09-fix_hurd-i386_build.patch from debian source package See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - 08-fix_libnet_checksum.c.patch from debian source package See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - 07-add_libnet-cq-end-loop.patch from debian source package See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - 06-fix_libnet_pblock_coalesce_leak.patch from debian source package See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - 04-fix_libnet_build_ntp.patch from debian source package See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - 03-fix_libnet_802_1x_hdr.3.patch from debian source package See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - 02-fix_libnet_802_1q_hdr.3.patch See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - 01-fix_libnet-functions.h.3.patch from debian source package See + http://packages.debian.org/source/sid/libnet (Sam Roberts) + - strip CVS subdirectories from upstream package (Sam Roberts) + +From 1.1.3-rc: + + Added a libnet_version() function + Fixed a bug in libnet_build_ntp() where two arguments werent used due to a + typo + Fixed a bug ln libnet_name2addr4 in which it didnt call hstrerror + Fixed a memory leak in libnet_if_addr.c + Internals: added a payload builder macro + Added an HSRP builder + Fixed the cdp.c sample code + Added AC_PREREQ(2.50) to configure.in to come correct + Added a libnet udp header prototype. We need to add an entire exported + interface for the sole purpose of casting captured packets, this will + presumably be a part of the pcap integration. + Added libnet_adv_write_raw_ipv4() + Fixed the checksum function + Updated the autoconf/automake stuff to be up to date with the latest + versions. We now use libtool. + Fixed a signed/unsigned comparison warning in the LIBNET_DO_PAYLOAD() macro + Changed all empty function prototypes to contain the void keyword + Removed all C++ style comments + Removed the configure.in check for strerror() + + +Mon Mar 29 09:23:49 PST 2004 1.1.2.1 + + Fixed a typo in the ICMP patch mentioned below + +Thu Mar 25 10:49:04 PST 2004 1.1.2 + + Fixed the ICMP error message builders (there was a pblock assembly bug + that would prevent you from building more than one ICMP {unreach, time + exceed, redirect} in succession; the order of operations has changed + slightly for building these packets, see the documenation and sample code + Added a Sebek builder + Fixed a bug in libnet_autobuild_arp() that had it pulling in the address to + a pointer instead of just the address + Added AM_MAINTAINER_MODE to configure.in + Changed the __libnet_dump* namespace to the more descriptive libnet_diag* + Added libnet_getpacket_size() to return the size of a packet in a given l + Removed "protocol" from the libnet context. It was a waste of four bytes + The raw socket interface always uses the "IPPROTO_RAW" protocol + Fixed a memory leak in the advanced interface; there is now a function + libnet_adv_free_packet() to free the memory allocated for the packet + when libnet_adv_cull_packet() is called + Fixed a bug on big endian boxes that had TCP and UDP checksums with odd + payloads come out incorrect + Changes all error messages to look and feel the same: + "%s(): foo\n", __func__ + Added a bunch of htons/htonl fixes + Continued to add to the doxygen-based documentation + Added support for unconfigured interfaces + Changed the number of interfaces libnet can handle from 32 to 512 + Removed uneeded control structure cruft from libnet_link_dlpi.c + Removed sample/ip.c and added sample/ip_link.c and sample/ip_raw.c + Added IPv6 fragmentation header builder + Added IPv6 routing information header builder + Added IPv6 destination options header builder + Fixed IPv6 flowlabel and traffic class bitwise math + +Tue Nov 25 15:33:27 PST 2003 1.1.1 + + Fixed a bug in libnet_build_icmp_redirect: htonl(gateway) --> gateway. + Added icmp_redirect.c sample code. + Added libnet_autobuild_arp(). + Added a slightly faster checksum. + Added a GRE builder. + Fixed a buffer overflow in libnet_build_dhcp(). + Added more sanity checks to ensure we have proper link or network layer + headers when not in advanced mode. + Fixed a bug that would sometimes make __libnet_dump_context() crash under + linux. + Migration from sprintf and strcpy snprintf and strncpy. + Fixed bug in libnet_build_ipv4() when calculating size of memory block + Removed the support directory -- if you're an OLD version of OpenBSD or + FreeBSD you deserve what you get. + Added a BGP builder. + Changed the error handing functions to be more consistent and use + __FUNCTION__. + Fixed a bug in libnet_pblock_free() -- replaced it with + libnet_pblock_delete(). + Fixed all of the inconsistencies inside all of the builders and pblock code + where some fringe conditions could result in u_longs being crunched into + u_shorts. + Fixed libnet_pblock_coalesce() to only require one pass through the list. + Added better diagnostics (__libnet_dump_context(), __libnet_dump_pblock()). + Added Token Ring and FDDI builders (Linux and Solaris only). + Added Token Ring and FDDI sample programs. + Fixed the handling of TCP and IP payloads when reusing a pblocks. + Fixed the handling of IP headers such that if a TCP packet changes size + via subsequent calls to libnet_build_tcp(), the IP header automatically + changes size as well. + Added libnet_pblock_delete() to remove a pblock from the list. + Added ip.c sample program (builds an arbitrary IP packet). + Added additional payload sanity checks to libnet_build_*. + Added a payload to sample/icmp_echo_cq.c. + Added an MPLS builder. + Added an 802.1x builder. + Added an RPC builder! Bout time eh? + Fixed do1x.c sample code to make the frame valid. + Fixed link-interface semantics under Mac/OSX + Changed libnet_stats to all be unsigned long longs to accomodate all of + hardcore packet writers. + Fixed IPv6 support (to some extent) removed the IP_HDRINCL stuff and + reworked the resolver stuff to use net_pton() and inet_ntop(). + Fixed libnet_build_icmpv4_*() to properly handle the IP header in the + payload. + Fixed libnet_build_igmp() to handle checksums properly. + Fixed a bug in libnet_build_dnsv4() -- now it will work for TCP or UDP -- + see the sample program for details... + Fixed a bug in sample/dhcp_discover.c + Added multiple packet interface (called the context queue interface). + Until I finish the manpage, see the sample code and README files + for instructions on how it works. + Fixed Cygwin support. + Fixed an OS/X compilation error due to lack of system header files. + Fixed OS/X link layer bug. + Fixed a bug in pblock_coalesce() that resulted in bad checksums when the + advanced mode was enabled. + Fixed a potential memory leak in pblock_coalesce(). + Fixed a potential memory leak in libnet_select_device(). + Fixed a potential memory leak in libnet_plist_chain_new(). + Fixed Solaris support for IPv6 address support. + Fixed minor bugs in libnet_advanced.c. + Added loopback device support. + + +Mon Aug 5 15:18:52 PDT 2002 1.1.0 + + First 1.1.0 non-beta release. + + Added libnet_adv_write_link() which allows an advanced user to access + libnet's low-level frame injection functionality directly. + + +Wed Jul 10 08:18:15 PDT 2002 1.1.0 Beta 07b + + Added some words to the manpage. + + Fixed a typo in libnet-functions.h -- forgot a comma. + + +Sun Jul 7 10:37:12 PDT 2002 1.1.0 Beta 07a + + My bad. Forgot to `make distclean` before last release resulting in some + compilation errors. + + My bad. Forgot to add advanced *_ADV writing support to libnet_write(). + Simple fix. + + +Tue Jul 2 08:42:57 PDT 2002 1.1.0 Beta 07 + + BETA support for IPv6. + + Fixed the IP and TCP options bugs that bound the TCP and IP payloads to + the IP and TCP headers respectively and saw options being appended + after the payload. + + Added libnet_hex_aton(). This functions reads in arbirtrarily long hex + strings from the command line and returns the equivalent byte string. It + does an implicit malloc() so make sure to free(). + + Frédéric Raynal submitted a patch to break the coalesce loop down to two + passes using realloc resulting in a modest performance increase! Cool! + + Added "Advanced Mode" which will initialize the library with additional + functionality for advanced users who "know what they're doing". Basically + this feature will remove some of the sanity checks libnet does when + building and injecting packets, at the programmer's peril. It also exposes + the libnet_adv() functions. + + FINALLY changed that irritating struct ether_addr redefintion problem. + I internalized the name space of it (-> libnet_ether_addr) so there will + be no more issues there. Please update your code accordingly! + + Added IGMP checksum support which was omitted by accident. + + Removed netinet/ip_icmp.h from include list. This was causing problems + when including dnet.h which includes other system headers. We can + probably stand to remove several headers from libnet.h.in. + + Added sanity check to ensure that when *build_ethernet() is called the + injection method is LIBNET_LINK (except when advanced mode is on). + + +Thu Mar 28 22:18:46 PST 2002 1.1.0 Beta 06 + + Fixed ICMP unreachable checksum error and payload issues. Now using the + payload interface with unreachables will append the payload to the IPv4 + header of the "offending packet". + + Split STP builder into two; libnet_build_stp_conf() and + libnet_build_stp_tcn(). + + New CHANGELOG format. :) + + +Mar 24 2002 1.1.0 Beta 05 + + New building logic. Top down. Much smarter, we now build packets and + frames like an OS kernel. + + Added Cisco ISL builder. + + +Mar 18 2002 1.1.0 Beta 04 + + Added an STP builder. + + Hooks for Cisco ISL builder. + + Changed libnet_init() to now accept an IP address for the device (so + either "fxp0" or "192.168.0.1" will work). + + Added libnet_clear_packet() to free packet memory when we're done with it. + + +Feb 28 2002 1.1.0 Beta 03 + + Added 802.1q, 802.2, 802.3 builders. + + +Feb 25 2002 1.1.0 Beta 02 + + Fixed Cygwin support. + + +Feb 01 2002 1.1.0 Beta 01 + + Complete new API and overhaul of most everything. + + Improved linux packet socket support. + + Renamed libnet_host_lookup() and libnet_name_resolve() to the more + intuitive libnet_addr2name() and libnet_name2addr(). + + All of the address resolution functions return host byte order (which + is what the build functions want). + + Removed a ton of code from every corner of libnet. + + Removed alot of useless crap: + misc directory + ports directory + util directory + cleaned out the test directory and moved it to sample + + The libnet-config script is no longer needed to specify machine + 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 + libraries. + + Added cygwin support. + + Hooks for a few ieee 802 builders. + + Added NTP builder. + + Added DHCP builder. + + Added BOOTP builder. + + Added Cisco CDP builder (needs work). + + Added IPSEC builder (needs work). + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + 1.0.2a 02.06.2001 Oops! Messed up the install stuff. Fixed now. + Fixed the config.sub to correctly look for arm* + architecture. + Fixed the test.sh script + (Thankz again to syke). + + 1.0.2 02.03.2001 Added OpenBSD 2.7 etherspoof lkm and kernel patch. + (Thankz to obecian). + Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?) + etherspoof kernel patch. + (Thankz to Matt Bing). + Added FreeBSD 4 support for automagic MAC address + spoofing (via ioctl). No more lkm! + (Thankz to Toni Andjelkovic). + Added VRRP support. + Fixed a NULL pointer check in libnet_checksum.c. + (Thankz to syke). + Fixed a function naming problem in libnet_if_addr.c. + (Thankz to gigisull). + Fixed a potential byte error in libnet_version. + (Thankz to wotan). + Fixed a potential overflow in + libnet_link_sockpacket.c and libnet_link_dlpi.c. + (Thankz to Jarno Huuskonen). + Fixed a manpage discrepancy (get_ip_addr returns + host-byte, not network-byte). + Fixed arena allocation code (misalignments and + whatnot) and arena manpage entry (2 arguments + 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 + 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