diff options
Diffstat (limited to 'doc/CHANGELOG')
-rw-r--r-- | doc/CHANGELOG | 849 |
1 files changed, 849 insertions, 0 deletions
diff --git a/doc/CHANGELOG b/doc/CHANGELOG new file mode 100644 index 0000000..39b52f3 --- /dev/null +++ b/doc/CHANGELOG @@ -0,0 +1,849 @@ +=============================================================================== + $Id: CHANGELOG,v 1.26 2004/11/09 07:05:06 mike Exp $ + LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com> + http://www.packetfactory.net/libnet +=============================================================================== + + +- 1.2 + + - Prepare for 1.2 release candidate 3 (Sam Roberts) + - Remove obsolete SYMBOL_CACHE_SIZE from doxygen.conf (Sam Roberts) + - For samples, netinet/in.h is not on windows (Sam Roberts) + - Fix errors with missing IPPROTO_MH on windows (Sam Roberts) + - Factorize socket setup code for socket opening (Eric Leblond) + - Fix build error in Mac OS X (allfro) + - Insource comments and whitespace cleanups (Sam Roberts) + - Fix #34 correct checksum caculation when IPv6 extension headers being used (Alexander Koeppe) + - Make libnet_get_hwaddr() work with 802.1q interfaces in bpf (BSD). (Thomas Habets) + - Update libnet_dll.c (dlwdlw) + - Update libnet_raw.c (dlwdlw) + - Update CHANGELOG (Sam Roberts) + - libnet: Remove unneeded trailing -Wl from -version-info line (Gilles Espinasse) + - Prepare for 1.2 release candidate 2 (Sam Roberts) + - libnet: libnet_build_snmp fix warning (Gilles Espinasse) + - libnet: use LIBNET_*RESOLVE const in libnet_name2addr* (Gilles Espinasse) + - libnet: fix i486 sample synflood6 warning (Gilles Espinasse) + - Some samples need #include<netinet/in.h> for IPPROTO_* on OpenBSD 5.2 (Thomas Habets) + - Better description of .so revioning. (Sam Roberts) + - Fix gcc warnings. (Stefanos Harhalakis) + - Use @retval for correct man page formatting. (Sam Roberts) + - Hide undocumented in auto-generated documentation. (Sam Roberts) + - Check for socklen_t (suggested by g.esp and Stefanos Harhalakis) (Sam Roberts) + - Update to doxygen 1.8 (Sam Roberts) + - Only distribute man pages for libnet headers. (Reported by g.esp) (Sam Roberts) + - libnet: update for obsolete INCLUDE directive (Gilles Espinasse) + - Fix warning inside comment (Gilles Espinasse) + - Prepare for 1.2 release candidate. (Sam Roberts) + - Bump libnet versions in preparation for 1.2 release. (Sam Roberts) + - Cleaned up references to win32 pre-generated headers (Sam Roberts) + - VERSION is ancient and unused (Barak A. Pearlmutter) + - autoupdate configure.ac (Barak A. Pearlmutter) + - Simplify autogen.sh (suggested by Barak A. Pearlmutter) (Sam Roberts) + - Ignore doxygen javascript output (Sam Roberts) + - remove autoreconf-installed file (Barak A. Pearlmutter) + - Use +AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER (Sam Roberts) + - Automatic link options ("#pragma comment(lib, ...)") are only for MSVC (ThomasVolkert) + - Added guards around definitions of _GNU_SOURCE to avoid redefinitions (ThomasVolkert) + - Avoids several warnings for MS C/C++ compiler (ThomasVolkert) + - libnet_open_raw4 doesn't return a SOCKET on win32 (Sam Roberts) + - Remove unused STDOUT_FILENO, and dead code that used to use it. (Sam Roberts) + - Removed references to removed win32/in_systm.h (Sam Roberts) + - git ignore doxygen output (Sam Roberts) + - Remove automake reference to win32 header that has been removed. (Sam Roberts) + - Fixes error messages sometimes include newline, sometimes not. (Sam Roberts) + - Properly set l->err_buf if libnet_ifaddrlist() fails. (Thomas Habets) + - Pass build errors to caller of batch files. (Sam Roberts) + - dlpi: Try harder to find the device for the interface. (Thomas Habets) + - dlpi: Correctly extract the unit number from devices with numbers in their name. (Thomas Habets) + - Make interface selection work for interfaces with multiple addresses on them. (Sam Roberts) + - memory leak fixed, device list needs to freed after use (Sam Roberts) + - uint32 address properly initialized with an address (Sam Roberts) + - Reformatted and commented win32 specific code. (Sam Roberts) + - Interface selection was ignoring interfaces with ipv6. (Sam Roberts) + - Use simple batch file to build for win32. (Sam Roberts) + - Use LIBNET_API on public functions, instead of an export file. (Sam Roberts) + - Note about libnet_get_prand being secure only on windows. (Sam Roberts) + - ignore visual studio output artifacts (Sam Roberts) + - Don't need iphlpapi.h included. (Sam Roberts) + - Libnet.vcxproj file gained a ProjectGUID property. Hm. (Sam Roberts) + - visual studio 2010 project files (Sam Roberts) + - Convert uses of non-standard uint to uint32_t. (Sam Roberts) + - Compiled on win32 with Visual Studio 2010. (Sam Roberts) + - Add build instructions for Visual Studio 2010 (Sam Roberts) + - Documentation typo, valid should be invalid. (Sam Roberts) + - Replace usage of non-standard uint type with uint32_t. (Sam Roberts) + - define INET6 on IRIX, making libnet compile cleanly. (Thomas Habets) + - Use LIBNET_BSDISH_OS and LIBNET_BSD_BYTE_SWAP on all darwin architectures. (Kimmo Suominen) + - Added BSD byteswap for Darwin. Otherwise sendto() returns EINVAL (Emilio Escobar) + - Use a common header to trim cut and paste include blocks. (Sam Roberts) + - netinet/in.h is needed for IPPROTO_ and sockaddr_in (reported by Dirk Meyer) (Sam Roberts) + + +- 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 (Víctor Martí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, <pcap.h>. (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 <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 |