Annotation of embedaddon/libnet/doc/CHANGELOG, revision 1.1.1.2
1.1.1.2 ! misho 1: ===============================================================================
! 2: $Id: CHANGELOG,v 1.26 2004/11/09 07:05:06 mike Exp $
! 3: LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
! 4: http://www.packetfactory.net/libnet
! 5: ===============================================================================
! 6:
! 7: - 1.1.6
! 8:
! 9: - Note about why including libnet.h breaks dnet.h/dumbnet.h (Sam Roberts)
! 10: - Prepare for 1.1.6-rc3. (Sam Roberts)
! 11: - Only use getifaddrs() if it exists. (reported by Dagobert Michelsen) (Sam Roberts)
! 12: - Clean up use of single and bracket quotes. (Sam Roberts)
! 13: - FreeBSD and Solaris volunteers to contibute. (Sam Roberts)
! 14: - ICMPv6 struct is too long, so use length macro (sickmind@lavabit.com) (Sam Roberts)
! 15: - ICMPv6 pblock sizes are needed to calculate IPv6's ip_len (reported by sickmind@lavabit.com) (Sam Roberts)
! 16: - Prep for 1.1.6 release, such as bumping version (Sam Roberts)
! 17: - Add people who have volunteered to check release candidates. (Sam Roberts)
! 18: - Rework libnet_autobuild_ipv6() to eliminate code duplication. (Sam Roberts)
! 19: - Implemented libnet_autobuild_ipv6() (repolho)
! 20: - Implemented unix version of libnet_get_ipaddr6() (repolho)
! 21: - Reintroduce libnet_pblock_record_ip_offset() which is empty. (Sam Roberts)
! 22: - Make clear that all contributions are under libnet copyright. (Sam Roberts)
! 23: - Fix doc comment format errors reported by doxygen. (Sam Roberts)
! 24: - Update for doxygen 1.7.4. (Sam Roberts)
! 25: - Note that PORTED is no longer maintained. (Sam Roberts)
! 26: - Note that CONTRIB is no longer maintained. (Sam Roberts)
! 27: - Prep for upcoming 1.1.6 release. (Sam Roberts)
! 28: - Remove BUGS, it referred to non-existent code. (Sam Roberts)
! 29: - Reworked icmpv6 patch to parallel the form of icmpv4 support. (Sam Roberts)
! 30: - Don't depend on netinet/ip.h. (Sam Roberts)
! 31: - Remove unused variable. (Sam Roberts)
! 32: - Support building ICMPv6 packets. (someone)
! 33: - Fixed typo in error message. (Thomas Habets)
! 34: - Use SO_BINDTODEVICE to force packets out opened device. (someone)
! 35: - Always use an IPPROTO of TCP when calculating TCP checksums. (Sam Roberts)
! 36: - Use correct addr type for addrlen calculation. (someone)
! 37: - libnet_build_igmp reserved field was mistakenly called 'code' (Sam Roberts)
! 38: - Documentation doesn't include any gif files. (Sam Roberts)
! 39: - Enable IPV6 support on Solaris 11. (Rich Burridge)
! 40: - Trying to fix write errors (Víctor Martínez)
! 41: - 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)
! 42: - 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)
! 43: - pblock_append deals with raw memory and structs, so declare it correctly (Sam Roberts)
! 44: - 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)
! 45: - Explicitly ignore return value of write (some systems now warn about this). (Sam Roberts)
! 46: - Synchronize comment about h_len with parameter name in function. (Sam Roberts)
! 47: - Fixes a buffer overflow issue when copying chaddr, file, and sname fields to the DHCP header. (allfro)
! 48: - 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)
! 49: - 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)
! 50: - 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)
! 51: - snap parameter was getting copied into the dhost field. (Sam Roberts)
! 52: - 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)
! 53: - Length n should include the value_hdr. (Sam Roberts)
! 54: - Coverity: UNINIT (Jiri Popelka)
! 55: - Coverity: REVERSE_INULL (Jiri Popelka)
! 56: - Coverity: RESOURCE_LEAK (Jiri Popelka)
! 57: - Coverity: OVERRUN_STATIC (Jiri Popelka)
! 58: - Coverity: OVERRUN_STATIC (Jiri Popelka)
! 59: - Coverity: OVERRUN_STATIC (Jiri Popelka)
! 60: - Coverity: FORWARD_NULL (Jiri Popelka)
! 61: - Coverity: FORWARD_NULL (Jiri Popelka)
! 62: - Coverity: CHECKED_RETURN (Jiri Popelka)
! 63: - mkinstalldirs is replaced by autogen.sh. Maybe it shouldn't be checked in? (Sam Roberts)
! 64: - autogen retries if /sw/... doesn't exist (Sam Roberts)
! 65: - build_ipv6: set higher traffic class bits (Ulrich Weber)
! 66: - Fix missing uint instead of u_int (Dagobert Michelsen)
! 67:
! 68: - 1.1.5
! 69:
! 70: - IRIX: Get MAC address from ioctl(), not by spawning shell. (Thomas Habets)
! 71: - Compile fix for IRIX (added includes) (Thomas Habets)
! 72: - Don't explicitly check for UID 0, we may have capabilities even if not root. (Thomas Habets) (Sam Roberts)
! 73: - 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)
! 74: - Visual C++ compiler(v9.0) uses bitfield type as a hint to pad the bitfield, so struct was too long. (Sam Roberts)
! 75: - Further simplify autogen.sh (Sam Roberts)
! 76: - Removed dependency on net/bpf.h, and on pcap.h. (Sam Roberts)
! 77: - LBL_ALIGN check is unused, removing. (Sam Roberts)
! 78: - Don't include pcap.h if we've already got net/bpf.h, pcap has it's own bpf. (Sam Roberts)
! 79: - Make libnet_get_hwaddr work in the last few releases of OpenBSD (stu@spacehopper.org) (Sam Roberts)
! 80: - Get DLT types from the source, <pcap.h>. (Sam Roberts)
! 81: - Use autoconf -ivf in autogen.sh (suggested by alon.barlev@gmail.com) (Sam Roberts)
! 82: - Don't distribute libnet.h, it is generated by configure (alon.barlev@gmail.com) (Sam Roberts)
! 83: - AIX build failures fixed, cause was inclusion of system headers libnet no longer uses (alon.barlev@gmail.com) (Sam Roberts)
! 84: - Add a link to the old docs. (Sam Roberts)
! 85: - Added links to github and sourceforge. (Sam Roberts)
! 86: - Replace C99/C++ comments with traditional C comments. (alon.barlev@gmail.com) (Sam Roberts)
! 87: - checksum would segfault if a IP checksum was requested for a non-ipv4 header (Sam Roberts)
! 88: - Closer backwards compat, assume its ipv4 if it's not ipv6. This seems totally wrong, but so it goes. (Sam Roberts)
! 89: - Try using the ip_len header field to guess the input buffer's size. (Sam Roberts)
! 90: - 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)
! 91: - merged icmpv6 patch in, but I believe either it or the sample/icmp6_unreach generates the cksum incorrectly (victor@inliniac.net) (Sam Roberts)
! 92: - Use libtool-1 or libtool-2 whatever available (alon.barlev@gmail.com) (Sam Roberts)
! 93: - 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)
! 94: - 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)
! 95: - --with-link-layer broken, was using wrong macro name, and didn't include all link types (Sam Roberts)
! 96: - ac_cv_c_bigendian is yes, not "big" (alon.barlev@gmail.com) (Sam Roberts)
! 97: - Remove dead code. (Sam Roberts)
! 98: - h_len is calculated for ip, udp, tcp, icmp, and igmp, so is allowed to be zero. (Sam Roberts)
! 99: - libnet_t's fd should be initialized to an invalid value, or libnet_destroy() will close stdin. (Sam Roberts)
! 100: - Alon's use of AC_CHECK_HEADERS fails to detect headers. Reverted part of 57acd56f09158decb69f301e7547ce8cde6ac63f (Sam Roberts)
! 101: - With link_none, the link apis were failing with not error message. (Sam Roberts)
! 102: - man doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts)
! 103: - Avoid mallocing zero bytes, it perturbs electric fence. (Sam Roberts)
! 104: - autotools patches for cross compiling and seperate builddir (alon.barlev@gmail.com) (Sam Roberts)
! 105: - html doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts)
! 106: - ip_offset is now calculated on the fly, and UDP and TCP no longer use h_len (Sam Roberts)
! 107: - IP offset calculation should allow nesting of IP protocols. (Sam Roberts)
! 108: - Remove gccisms in bitfield definitions. (Sam Roberts)
! 109: - injection type of LIBNET_NONE, for packet construction without injection (also, more const correctness) (Sam Roberts)
! 110: - Notes about checksumming. (Sam Roberts)
! 111: - libnet_build_tcp was not returning the ptag. (Sam Roberts)
! 112: - 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)
! 113: - 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)
! 114: - Updated comments and notes. (Sam Roberts)
! 115: - Null the pointer in the about-to-be-freed structure, not the one on the stack. (Sam Roberts)
! 116: - Added missing pblock types, and made strings consistent with definitions. (Sam Roberts)
! 117: - Change version policy, we will be 1.1.4 until 1.1.5 is released. (Sam Roberts)
! 118: - Bring CHANGELOG up to date with today, and script used to generated it. (Sam Roberts)
! 119: - Begin implementation and tests for repairing pblocks after an update. (Sam Roberts)
! 120: - libnet_pblock_insert_before() didn't remove ptag2 from old location (Sam Roberts)
! 121: - Clarifications in document comments. (Sam Roberts)
! 122: - Don't doxygen process internal header libnet-headers.h (Sam Roberts)
! 123: - Declared many constant arguments as const, const-correct code spews warnings when built against libnet. (Sam Roberts)
! 124: - Include pcap DLT_ types from correct header, was using an internal one before. (Sam Roberts)
! 125: - Declared many constant arguments as const, const-correct code spews warnings when built against libnet. (Sam Roberts)
! 126: - Note about build_data, which doesn't update ip_offset, among other problems. (Sam Roberts)
! 127: - libnet_clear_packet() wasn't clearing all packet context. (Sam Roberts)
! 128: - Why don't TCP and UDP use the DATA pblock type? (Sam Roberts)
! 129: - whitespace cleanup (Sam Roberts)
! 130: - Add libnet_dll.c as extra, so its there for win32, and build libnet_link.c (Sam Roberts)
! 131: - This file wasn't being built, and needed to include bpf to build. (Sam Roberts)
! 132: - Forgot to make device a const string here, too. (Sam Roberts)
! 133: - make string argument constant (Sam Roberts)
! 134: - only ignore Makefile in libnet/ (Sam Roberts)
! 135: - Replace u_intX_t with C99 uintX_t. (Thomas Habets)
! 136: - pclose() following popen(), not fclose() (Thomas Habets)
! 137: - snoof & dlpi: don't free on libnet_link_close() (Thomas Habets)
! 138: - Summarize changes for log. (Sam Roberts)
! 139: - Reindented, removing hard tabs, and using consistent brace positioning. (Sam Roberts)
! 140: - The non-standard types are no longer used. (Sam Roberts)
! 141: - /sw/.. path doesn't always exist (Sam Roberts)
! 142: - src/libnet_link_snoop.c: Only fclose if f!=NULL (Thomas Habets)
! 143: - src/libnet_link_snoop.c: fixed snoop-based backend. Works on IRIX. (Thomas Habets)
! 144: - Use uint64_t, not u_int64_t (Thomas Habets)
! 145: - define a lying gethostbyname2() if it's not defined (Thomas Habets)
! 146: - define STDOUT_FILENO if it's not defined (Thomas Habets)
! 147: - configure.in: check for gethostbyname2 (Thomas Habets)
! 148: - configure.in: Check for uint{16,32,64}_t (Thomas Habets)
! 149: - Configure switch to install samples (Sam Roberts)
! 150: - Attempt at applying a patch to get installable samples, which doesn't work. (Sam Roberts)
! 151: - Pointers not cleared after free could lead to double deallocation. (Sam Roberts)
! 152: - Convert CRLF to LF. (Sam Roberts)
! 153: - Auto* changes to work on OS X from git checkout. (Sam Roberts)
! 154: - Update autobuild endianness and unaligned checks. (Mike Frysinger) (Sam Roberts)
! 155: - Add srcdir to include path. (Sam Roberts)
! 156: - Adjust srcdir and builddir so libnet can build out-of-tree (Robin Getz/Mike Frysinger) (Sam Roberts)
! 157: - Beginning 1.1.5 development. (Sam Roberts)
! 158:
! 159: - 1.1.4
! 160:
! 161: - Strip CRLF from files not in win32/ (Robert Scheck)
! 162: - libnet was using HAVE_CONFIG_H in a public header in order to deal with platform types.
! 163: https://bugzilla.redhat.com/show_bug.cgi?id=501633
! 164: - Patch to libnet.h.in for compilation on HURD (David Paleino)
! 165:
! 166: - 1.1.3
! 167:
! 168: Merged 1.1.3 release candidate from packet factory, 1.1.2, debian patches, and
! 169: my own fixes, including bugs causing memory corruption:
! 170:
! 171: - Fixed various errors, including memory corruption, when IPv4 options are
! 172: modified. (Sam Roberts)
! 173: - Convert from latin-1 to utf-8, from Robert Scheck. (Sam Roberts)
! 174: - Fixed doxygen errors and warnings, and added a deveoper script to prepare
! 175: libnet. (Sam Roberts)
! 176: - Removed CVS crud, again. (Sam Roberts)
! 177: - Applied autotools cleanup patch from Stefanos. (Sam Roberts)
! 178: - Applied patch from Stefanos to remove the autotools ephemera that leaked
! 179: back in. (Sam Roberts)
! 180: - Patches from Stefanos. (Sam Roberts)
! 181: - Updated .so revision to be one backwards compatible interface after
! 182: 1.1.2.1-fork's. (Sam Roberts)
! 183: - Fix for debian bug# 418975, IPv6 wasn't updating ip_offset. See
! 184: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=418975 and sample
! 185: test_ipv6_icmpv4.c for more information, and reproduction. (Sam Roberts)
! 186: - merged autogen.sh from 1.1.3, now ltmain.sh comes from autogen.sh (Sam
! 187: Roberts)
! 188: - 802.1Q and 802.1X header documentation was incorrectly using /** /** is
! 189: reserved for doxygen documentation comments, and they didn't have any.
! 190: That those packet headers, and no others, were marked that way was
! 191: causing man pages to be generated for them, incomplete man pages that
! 192: then were being hacked by debian patches 02- and 03-. (Sam Roberts)
! 193: - Update .so version to be one src change past the last debian release.
! 194: Debian patches to v1.1.2.1 used 4:0:3, in error, so we use 5:0:4, as per
! 195: the rules. See Makefile.am comments for reference. (Sam Roberts)
! 196: - Bug fixes and reproduction code for ip_offset accounting problem in
! 197: libnet_build_ipv4 (Sam Roberts)
! 198: - doxygen configuration updated, html seems fine - I don't know about the
! 199: man pages. (Sam Roberts)
! 200: - autotools merged from v1.1.3 to v1.1.2 (Sam Roberts)
! 201: - Remove autotools. And some garbage local files that should not have been
! 202: in upstream tarball. (Sam Roberts)
! 203: - Removed object files and cvs conflict residue contained in original
! 204: package. (Sam Roberts)
! 205: - debian patch 06 attempts to free the wrong pointer, and also leaks memory
! 206: from the inner loop. (Sam Roberts)
! 207: - libnet (inconsistently) uses various signed and/or unsigned typedefs
! 208: instead of char ANSI C uses char for string literals and the standard
! 209: library, so this generates many warnings. I've fixed a number of the
! 210: places where types representing null-terminated strings weren't typed
! 211: correctly. (Sam Roberts)
! 212: - 09-fix_hurd-i386_build.patch from debian source package See
! 213: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 214: - 08-fix_libnet_checksum.c.patch from debian source package See
! 215: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 216: - 07-add_libnet-cq-end-loop.patch from debian source package See
! 217: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 218: - 06-fix_libnet_pblock_coalesce_leak.patch from debian source package See
! 219: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 220: - 04-fix_libnet_build_ntp.patch from debian source package See
! 221: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 222: - 03-fix_libnet_802_1x_hdr.3.patch from debian source package See
! 223: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 224: - 02-fix_libnet_802_1q_hdr.3.patch See
! 225: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 226: - 01-fix_libnet-functions.h.3.patch from debian source package See
! 227: http://packages.debian.org/source/sid/libnet (Sam Roberts)
! 228: - strip CVS subdirectories from upstream package (Sam Roberts)
! 229:
! 230: From 1.1.3-rc:
! 231:
! 232: Added a libnet_version() function
! 233: Fixed a bug in libnet_build_ntp() where two arguments werent used due to a
! 234: typo
! 235: Fixed a bug ln libnet_name2addr4 in which it didnt call hstrerror
! 236: Fixed a memory leak in libnet_if_addr.c
! 237: Internals: added a payload builder macro
! 238: Added an HSRP builder
! 239: Fixed the cdp.c sample code
! 240: Added AC_PREREQ(2.50) to configure.in to come correct
! 241: Added a libnet udp header prototype. We need to add an entire exported
! 242: interface for the sole purpose of casting captured packets, this will
! 243: presumably be a part of the pcap integration.
! 244: Added libnet_adv_write_raw_ipv4()
! 245: Fixed the checksum function
! 246: Updated the autoconf/automake stuff to be up to date with the latest
! 247: versions. We now use libtool.
! 248: Fixed a signed/unsigned comparison warning in the LIBNET_DO_PAYLOAD() macro
! 249: Changed all empty function prototypes to contain the void keyword
! 250: Removed all C++ style comments
! 251: Removed the configure.in check for strerror()
! 252:
! 253:
! 254: Mon Mar 29 09:23:49 PST 2004 1.1.2.1
! 255:
! 256: Fixed a typo in the ICMP patch mentioned below
! 257:
! 258: Thu Mar 25 10:49:04 PST 2004 1.1.2
! 259:
! 260: Fixed the ICMP error message builders (there was a pblock assembly bug
! 261: that would prevent you from building more than one ICMP {unreach, time
! 262: exceed, redirect} in succession; the order of operations has changed
! 263: slightly for building these packets, see the documenation and sample code
! 264: Added a Sebek builder
! 265: Fixed a bug in libnet_autobuild_arp() that had it pulling in the address to
! 266: a pointer instead of just the address
! 267: Added AM_MAINTAINER_MODE to configure.in
! 268: Changed the __libnet_dump* namespace to the more descriptive libnet_diag*
! 269: Added libnet_getpacket_size() to return the size of a packet in a given l
! 270: Removed "protocol" from the libnet context. It was a waste of four bytes
! 271: The raw socket interface always uses the "IPPROTO_RAW" protocol
! 272: Fixed a memory leak in the advanced interface; there is now a function
! 273: libnet_adv_free_packet() to free the memory allocated for the packet
! 274: when libnet_adv_cull_packet() is called
! 275: Fixed a bug on big endian boxes that had TCP and UDP checksums with odd
! 276: payloads come out incorrect
! 277: Changes all error messages to look and feel the same:
! 278: "%s(): foo\n", __func__
! 279: Added a bunch of htons/htonl fixes
! 280: Continued to add to the doxygen-based documentation
! 281: Added support for unconfigured interfaces
! 282: Changed the number of interfaces libnet can handle from 32 to 512
! 283: Removed uneeded control structure cruft from libnet_link_dlpi.c
! 284: Removed sample/ip.c and added sample/ip_link.c and sample/ip_raw.c
! 285: Added IPv6 fragmentation header builder
! 286: Added IPv6 routing information header builder
! 287: Added IPv6 destination options header builder
! 288: Fixed IPv6 flowlabel and traffic class bitwise math
! 289:
! 290: Tue Nov 25 15:33:27 PST 2003 1.1.1
! 291:
! 292: Fixed a bug in libnet_build_icmp_redirect: htonl(gateway) --> gateway.
! 293: Added icmp_redirect.c sample code.
! 294: Added libnet_autobuild_arp().
! 295: Added a slightly faster checksum.
! 296: Added a GRE builder.
! 297: Fixed a buffer overflow in libnet_build_dhcp().
! 298: Added more sanity checks to ensure we have proper link or network layer
! 299: headers when not in advanced mode.
! 300: Fixed a bug that would sometimes make __libnet_dump_context() crash under
! 301: linux.
! 302: Migration from sprintf and strcpy snprintf and strncpy.
! 303: Fixed bug in libnet_build_ipv4() when calculating size of memory block
! 304: Removed the support directory -- if you're an OLD version of OpenBSD or
! 305: FreeBSD you deserve what you get.
! 306: Added a BGP builder.
! 307: Changed the error handing functions to be more consistent and use
! 308: __FUNCTION__.
! 309: Fixed a bug in libnet_pblock_free() -- replaced it with
! 310: libnet_pblock_delete().
! 311: Fixed all of the inconsistencies inside all of the builders and pblock code
! 312: where some fringe conditions could result in u_longs being crunched into
! 313: u_shorts.
! 314: Fixed libnet_pblock_coalesce() to only require one pass through the list.
! 315: Added better diagnostics (__libnet_dump_context(), __libnet_dump_pblock()).
! 316: Added Token Ring and FDDI builders (Linux and Solaris only).
! 317: Added Token Ring and FDDI sample programs.
! 318: Fixed the handling of TCP and IP payloads when reusing a pblocks.
! 319: Fixed the handling of IP headers such that if a TCP packet changes size
! 320: via subsequent calls to libnet_build_tcp(), the IP header automatically
! 321: changes size as well.
! 322: Added libnet_pblock_delete() to remove a pblock from the list.
! 323: Added ip.c sample program (builds an arbitrary IP packet).
! 324: Added additional payload sanity checks to libnet_build_*.
! 325: Added a payload to sample/icmp_echo_cq.c.
! 326: Added an MPLS builder.
! 327: Added an 802.1x builder.
! 328: Added an RPC builder! Bout time eh?
! 329: Fixed do1x.c sample code to make the frame valid.
! 330: Fixed link-interface semantics under Mac/OSX
! 331: Changed libnet_stats to all be unsigned long longs to accomodate all of
! 332: hardcore packet writers.
! 333: Fixed IPv6 support (to some extent) removed the IP_HDRINCL stuff and
! 334: reworked the resolver stuff to use net_pton() and inet_ntop().
! 335: Fixed libnet_build_icmpv4_*() to properly handle the IP header in the
! 336: payload.
! 337: Fixed libnet_build_igmp() to handle checksums properly.
! 338: Fixed a bug in libnet_build_dnsv4() -- now it will work for TCP or UDP --
! 339: see the sample program for details...
! 340: Fixed a bug in sample/dhcp_discover.c
! 341: Added multiple packet interface (called the context queue interface).
! 342: Until I finish the manpage, see the sample code and README files
! 343: for instructions on how it works.
! 344: Fixed Cygwin support.
! 345: Fixed an OS/X compilation error due to lack of system header files.
! 346: Fixed OS/X link layer bug.
! 347: Fixed a bug in pblock_coalesce() that resulted in bad checksums when the
! 348: advanced mode was enabled.
! 349: Fixed a potential memory leak in pblock_coalesce().
! 350: Fixed a potential memory leak in libnet_select_device().
! 351: Fixed a potential memory leak in libnet_plist_chain_new().
! 352: Fixed Solaris support for IPv6 address support.
! 353: Fixed minor bugs in libnet_advanced.c.
! 354: Added loopback device support.
! 355:
! 356:
! 357: Mon Aug 5 15:18:52 PDT 2002 1.1.0
! 358:
! 359: First 1.1.0 non-beta release.
! 360:
! 361: Added libnet_adv_write_link() which allows an advanced user to access
! 362: libnet's low-level frame injection functionality directly.
! 363:
! 364:
! 365: Wed Jul 10 08:18:15 PDT 2002 1.1.0 Beta 07b
! 366:
! 367: Added some words to the manpage.
! 368:
! 369: Fixed a typo in libnet-functions.h -- forgot a comma.
! 370:
! 371:
! 372: Sun Jul 7 10:37:12 PDT 2002 1.1.0 Beta 07a
! 373:
! 374: My bad. Forgot to `make distclean` before last release resulting in some
! 375: compilation errors.
! 376:
! 377: My bad. Forgot to add advanced *_ADV writing support to libnet_write().
! 378: Simple fix.
! 379:
! 380:
! 381: Tue Jul 2 08:42:57 PDT 2002 1.1.0 Beta 07
! 382:
! 383: BETA support for IPv6.
! 384:
! 385: Fixed the IP and TCP options bugs that bound the TCP and IP payloads to
! 386: the IP and TCP headers respectively and saw options being appended
! 387: after the payload.
! 388:
! 389: Added libnet_hex_aton(). This functions reads in arbirtrarily long hex
! 390: strings from the command line and returns the equivalent byte string. It
! 391: does an implicit malloc() so make sure to free().
! 392:
! 393: Frédéric Raynal submitted a patch to break the coalesce loop down to two
! 394: passes using realloc resulting in a modest performance increase! Cool!
! 395:
! 396: Added "Advanced Mode" which will initialize the library with additional
! 397: functionality for advanced users who "know what they're doing". Basically
! 398: this feature will remove some of the sanity checks libnet does when
! 399: building and injecting packets, at the programmer's peril. It also exposes
! 400: the libnet_adv() functions.
! 401:
! 402: FINALLY changed that irritating struct ether_addr redefintion problem.
! 403: I internalized the name space of it (-> libnet_ether_addr) so there will
! 404: be no more issues there. Please update your code accordingly!
! 405:
! 406: Added IGMP checksum support which was omitted by accident.
! 407:
! 408: Removed netinet/ip_icmp.h from include list. This was causing problems
! 409: when including dnet.h which includes other system headers. We can
! 410: probably stand to remove several headers from libnet.h.in.
! 411:
! 412: Added sanity check to ensure that when *build_ethernet() is called the
! 413: injection method is LIBNET_LINK (except when advanced mode is on).
! 414:
! 415:
! 416: Thu Mar 28 22:18:46 PST 2002 1.1.0 Beta 06
! 417:
! 418: Fixed ICMP unreachable checksum error and payload issues. Now using the
! 419: payload interface with unreachables will append the payload to the IPv4
! 420: header of the "offending packet".
! 421:
! 422: Split STP builder into two; libnet_build_stp_conf() and
! 423: libnet_build_stp_tcn().
! 424:
! 425: New CHANGELOG format. :)
! 426:
! 427:
! 428: Mar 24 2002 1.1.0 Beta 05
! 429:
! 430: New building logic. Top down. Much smarter, we now build packets and
! 431: frames like an OS kernel.
! 432:
! 433: Added Cisco ISL builder.
! 434:
! 435:
! 436: Mar 18 2002 1.1.0 Beta 04
! 437:
! 438: Added an STP builder.
! 439:
! 440: Hooks for Cisco ISL builder.
! 441:
! 442: Changed libnet_init() to now accept an IP address for the device (so
! 443: either "fxp0" or "192.168.0.1" will work).
! 444:
! 445: Added libnet_clear_packet() to free packet memory when we're done with it.
! 446:
! 447:
! 448: Feb 28 2002 1.1.0 Beta 03
! 449:
! 450: Added 802.1q, 802.2, 802.3 builders.
! 451:
! 452:
! 453: Feb 25 2002 1.1.0 Beta 02
! 454:
! 455: Fixed Cygwin support.
! 456:
! 457:
! 458: Feb 01 2002 1.1.0 Beta 01
! 459:
! 460: Complete new API and overhaul of most everything.
! 461:
! 462: Improved linux packet socket support.
! 463:
! 464: Renamed libnet_host_lookup() and libnet_name_resolve() to the more
! 465: intuitive libnet_addr2name() and libnet_name2addr().
! 466:
! 467: All of the address resolution functions return host byte order (which
! 468: is what the build functions want).
! 469:
! 470: Removed a ton of code from every corner of libnet.
! 471:
! 472: Removed alot of useless crap:
! 473: misc directory
! 474: ports directory
! 475: util directory
! 476: cleaned out the test directory and moved it to sample
! 477:
! 478: The libnet-config script is no longer needed to specify machine
! 479: endianess -- that has been moved to libnet.h and done at compile time.
! 480: You can still use it to specify other CPP constants as well as
! 481: libraries.
! 482:
! 483: Added cygwin support.
! 484:
! 485: Hooks for a few ieee 802 builders.
! 486:
! 487: Added NTP builder.
! 488:
! 489: Added DHCP builder.
! 490:
! 491: Added BOOTP builder.
! 492:
! 493: Added Cisco CDP builder (needs work).
! 494:
! 495: Added IPSEC builder (needs work).
! 496:
! 497: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
! 498:
! 499: 1.0.2a 02.06.2001 Oops! Messed up the install stuff. Fixed now.
! 500: Fixed the config.sub to correctly look for arm*
! 501: architecture.
! 502: Fixed the test.sh script
! 503: (Thankz again to syke).
! 504:
! 505: 1.0.2 02.03.2001 Added OpenBSD 2.7 etherspoof lkm and kernel patch.
! 506: (Thankz to obecian).
! 507: Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?)
! 508: etherspoof kernel patch.
! 509: (Thankz to Matt Bing).
! 510: Added FreeBSD 4 support for automagic MAC address
! 511: spoofing (via ioctl). No more lkm!
! 512: (Thankz to Toni Andjelkovic).
! 513: Added VRRP support.
! 514: Fixed a NULL pointer check in libnet_checksum.c.
! 515: (Thankz to syke).
! 516: Fixed a function naming problem in libnet_if_addr.c.
! 517: (Thankz to gigisull).
! 518: Fixed a potential byte error in libnet_version.
! 519: (Thankz to wotan).
! 520: Fixed a potential overflow in
! 521: libnet_link_sockpacket.c and libnet_link_dlpi.c.
! 522: (Thankz to Jarno Huuskonen).
! 523: Fixed a manpage discrepancy (get_ip_addr returns
! 524: host-byte, not network-byte).
! 525: Fixed arena allocation code (misalignments and
! 526: whatnot) and arena manpage entry (2 arguments
! 527: were swapped).
! 528: (Thankz to Bryan T. Schmersal).
! 529: Fixed datatype discrepancies (u_char was used
! 530: liberally when char should have been used).
! 531: (Thankz to Kyle Hargraves).
! 532: Fixed the PF_PACKET interface to work correctly.
! 533: (Thankz to Smiler).
! 534:
! 535: 1.0.1b 04.07.2000 Fixed portlist chaining code to allow for more than
! 536: one active plist chain at a time (as per twitch's
! 537: patch).
! 538: Fixed discrepancy between the manpage and code for
! 539: libnet_close_link_interface. It now returns 1 on
! 540: success as per libnet standard (thankz to Toni
! 541: Andjelkovic for pointing this out).
! 542:
! 543: 1.0.1a 03.29.2000 Fixed a small bug in libnet_link_dlpi.c.
! 544:
! 545: 1.0.1 12.19.1999 Fixed a typo in libnet-headers.h ARH_H -> ARP_H.
! 546: Fixed a small typo in ether_mod-2.5.c.
! 547: Pre-happy BD to libnet! She'z almost 2 yearz old!
! 548:
! 549: 1.0.0 10.27.1999 Added verbose html documentation.
! 550: Added verbosely commented example code.
! 551: Fixed OSPF testcode compile issues.
! 552: Added ping of death ICMP test code module.
! 553: Fixed manpage installation wrongness.
! 554: Fixed a reported bug in OpenBSD etherspoof lkm.
! 555: Merged OSPF lsa checksum code into main checksum
! 556: module.
! 557: Fixed a reported bug in the Makefile.in under
! 558: Solaris when make install was invoked, the ln
! 559: failed.
! 560: Fixed linux-based IP broadcasting using the
! 561: raw sockets interface.
! 562:
! 563: 0.99g 09.13.1999 Added an OSPF builder (which is still in beta).
! 564: Fixed the Linux/configure.in bug. This was an odd
! 565: bug that affected Linux-based boxes, but not
! 566: BSD-based machines. The configure script refused
! 567: to expand most of the Makefile.in macros in every file
! 568: because of a conditional check.
! 569: Fixed some Makefile.in issues.
! 570:
! 571: 0.99f 09.09.1999 Changed test/poink.c to not rely on a previous
! 572: install of libnet to compile.
! 573: Added a redhat RPM.
! 574: Changed sourcefile naming scheme to libnet_*.
! 575: Removed all assertions from the tree.
! 576: We are moving closer to a 1.0 release and
! 577: assertions have no place in production code.
! 578: Furthermore, there should be no exit points
! 579: inside a library. Currently, all functions that
! 580: made assertions now return an integral 1 upon
! 581: success and a -1 when the assertion would have
! 582: failed (some had to be changed from returning
! 583: void to returning int). This will not break
! 584: backward compatbility.
! 585: Fixed bugs in the arena code.
! 586: next_packet_from_arena would never return the
! 587: first chunk of memory, only the "next". It
! 588: now handles this special case. Thanks to
! 589: Sascha Gresk for locating this bug.
! 590: Fixed another potential bug when attempting
! 591: to allocate large packet sizes inside an arena.
! 592: Added an OpenBSD 2.5 ether_spoof lkm.
! 593: Fixed TCP options bugs.
! 594:
! 595: 0.99e 07.21.1999 Modified the libnet-config script to work more
! 596: intutively now. It accepts multiple arguments.
! 597: See README.libnet-config.
! 598: Solaris m4/sh fixes (autoconf phase).
! 599: Internal error handling changed to use libnet_error.
! 600:
! 601: 0.99d 06.24.1999 Added: build_icmp_redirect().
! 602: Added: FreeBSD 3.x support for spoofing source.
! 603: Added: libnet_error().
! 604: Added: port list chaining code.
! 605: MAC addrresses (see README.bpf).
! 606: Bugfix: libnet_select_device correctly accepts
! 607: NULL device arguments.
! 608: Bugfix: build_icmp.c now copies the correct amount
! 609: of header information.
! 610: Bugfix: OpenBSD needs HAVE_SOCKADDR_SA_LEN.
! 611: Changed: write_ip internal semantics. Cleaner
! 612: and faster now.
! 613: Changed: init_packet argument parameters. More
! 614: correct now. Takes a u_short vs. a size_t.
! 615:
! 616: 0.99c 05.28.1999 link_int -> libnet_link_int.
! 617: Misc small testcode fixes.
! 618: Added libnet_tcp_header and libnet_ip_header.
! 619: Added libnet-config shell script, see
! 620: README.libnet-config and the manpage.
! 621: Updated ports.
! 622: Revamped checksum module -- it's much simpler
! 623: and more efficient (ripped out arch specific
! 624: code which seemed to be buggy with series' of
! 625: very large packets). Dug Song wrote it, with
! 626: small fixes/changes by MDS.
! 627:
! 628: 0.99b 05.06.1999 Fixed a nasty UDP/TCP + data checksum bug.
! 629: Header structure further divided into subfiles.
! 630: Moved get_hwaddr into low-level interface locales.
! 631: Fixed the BSD get_hwaddr (dugsong@anzen.com).
! 632: Ported to BSD/OS 3.x.
! 633: Added `LIBNET_VERSION` symbolic constant.
! 634: build_ip with payload semantics changed (now
! 635: requires a payload length which is more
! 636: intuitive).
! 637: Fixed the `disappearing MAC address problem`
! 638: within the linux version of get_hwaddr().
! 639:
! 640: 0.99a 04.14.1999 Linux 2.0.x kernels don't have <net/ethernet.h>
! 641: 0.99 included this header file without checking
! 642: to see if it present. This is now fixed.
! 643: Non-x86 systems have no tcp_check function but the
! 644: stub.c sourcefile did not check this. This is now
! 645: fixed.
! 646: Added the utilities directory and get_mac.c.
! 647:
! 648: 0.99 04.13.1999 Major manpage redux.
! 649: Added (broken?) PF_PACKET support for Linux (see
! 650: README.linux).
! 651: Moved alot of m4 from configure.in to aclocal.m4.
! 652: Added Linux m4 macro to detect PF_PACKET.
! 653: Added build_icmp_unreach
! 654: Added build_icmp_timestamp
! 655: Added standard nomenclature for all the ICMP
! 656: type/code symbolic constants (see the manpage).
! 657: Changed internal network structure nomenclature.
! 658: Decided to stop using the word nomenclature so much.
! 659: Fixed semantics of get_ipaddr (s/PF_INET/AF_INET).
! 660: Added a symlink in the install directory so libnet
! 661: is also named `libpwrite`.
! 662: Added ASN.1 conversion routines, mostly pilfered
! 663: from ucd snmplib.
! 664: Removed get_hwaddr from sockpacket.c and made the
! 665: existing one portable to Linux.
! 666: Added more testcode and changed testcode structure
! 667: to be more intuitive.
! 668: Added init_packet and destroy_packet.
! 669: Added an arena allocator.
! 670: Fixed alignment issues on SPARC and Alpha
! 671: (possibly others with strict alignment
! 672: requirements).
! 673: Added a packet dumping routine. Not fully tested.
! 674: Testcode updates including a master testcode shell
! 675: script.
! 676: Added stub functions to ease the eventual
! 677: transition to a more proper `libnet_*` function
! 678: naming convention. See README.stubs for more
! 679: info.
! 680:
! 681: 0.10a 02.04.1999 Added the libnet.s2h configuration file to the
! 682: distribution.
! 683: GLIBC fix.
! 684:
! 685: 0.10 01.31.1999 Many low-level changes, same interface though.
! 686: Split up the main libnet.h file into two files.
! 687: Autoconf changes:
! 688: checks to see if the underlying architecture
! 689: needs to be aligned.
! 690: flexible install location.
! 691: explicitly set $CC option in Makefile.in.
! 692: Added ensure-dir.sh.
! 693: Changes DEBUG semantics as I was told the previous
! 694: stuff broke on some compilers.
! 695: Created a FreeBSD/OpenBSD ports entry.
! 696: SGI snoop (drain) interface fixed.
! 697: Solaris/HPUX DLPI interface fixed.
! 698: Support for getting local IP addresses.
! 699: Support for getting local hardware addresses.
! 700: Added a DNS packet builder.
! 701: Added an RIP packet builder.
! 702: Added an ICMP MASKREQ/REPLY packet builder.
! 703: Added ICMP at the link layer test code.
! 704: Changed GLIBC version detection semantics.
! 705:
! 706: 0.9 12.15.1998 Major changes/additions here...
! 707: Added lowlevel packet building and writing
! 708: routines with a codebase from libpcap.
! 709: Broken DPLI support (fixme!).
! 710: Added ethernet and ARP building routines.
! 711: Added ICMP_ECHO building routine which led to the
! 712: Discovery of an odd kernel panic bug under
! 713: OpenBSD (see hook.c in test dir).
! 714: Added IGMP building routine.
! 715: Reworked autoconf script.
! 716: Fixed Linux ip_sum vs. ip_csum naming issue.
! 717: Fixed Solaris checksums (2.4, 2.5.x).
! 718: Added NetBSD autoconf entry.
! 719: Changed BSD_BYTE_SWAP semantics to correctly handle
! 720: IP datagrams through BPF (see write_ip.c).
! 721:
! 722: 0.8c 11.10.1998 Added more testcode.
! 723:
! 724: 0.8b 10.21.1998 OK. I THINK WE'VE FINALLY FIXED THAT GLIBC THING.
! 725: Ported to alpha Linux.
! 726:
! 727: 0.8a 10.15.1998 Added support for IP TOS bits (oops. Broke
! 728: backward compatibility again. Like I said, don't
! 729: rely on this until 1.x).
! 730:
! 731: 0.8 10.13.1998 Added support for IP options.
! 732: Added support for TCP options.
! 733: Added a dummy version function.
! 734: Fixed linux libc vs. glibc nomenclature discrepancy.
! 735: Solaris checksums fixed for non-payload laden
! 736: packets?
! 737:
! 738: 0.7b 09.22.1998 Linux glibc/libc nomenclature anomoly still there.
! 739: Fixed Linux/BSD icmp header size problem.
! 740:
! 741: 0.7a 08.26.1998 Fixed payload support (see test code).
! 742:
! 743: 0.7 08.25.1998 Solaris port (checksums broken -- Solaris has gay
! 744: fucking quirks when it comes to checksumming on
! 745: raw sockets).
! 746: Added autoconf scripts.
! 747: Added psuedorandom number generation code.
! 748: Added payload support (breaks backward
! 749: compatability and is untested).
! 750:
! 751: 0.6 06.21.1998 Fixed UDP checksum. Removed USE_NAME CPP option
! 752: made it a run time decision. Makes code more
! 753: extensible, but breaks backward compatibility.
! 754:
! 755: 0.5 06.02.1998 Added TCP/UDP/IP packet assembly routines.
! 756: Added a checksum function.
! 757: Added a manpage.
! 758: Removed daemonizing function (BSD has one).
! 759: UDP checksums broken...
! 760:
! 761: 0.4 01.12.1998 IP checksum (x86 assembly implementation).
! 762:
! 763: 0.3 01.12.1998 daemonizing function.
! 764:
! 765: 0.2 01.11.1998 raw socket function changed to allow user
! 766: designated protocol for raw socket
! 767:
! 768: 0.1 01.05.1998 Initial release, contains:
! 769: network byte order -> human readable IP address,
! 770: human readable IP address -> network byte order,
! 771: simple raw socket / IP_HDRINCL wrapper,
! 772: TCP checksum (x86 assembly implementation)
! 773: EOF
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>