File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libnet / doc / CHANGELOG
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 11:54:41 2013 UTC (11 years, 11 months ago) by misho
Branches: libnet, MAIN
CVS tags: v1_1_6p5, v1_1_6p4, v1_1_6p0, v1_1_6, HEAD
1.1.6

    1: ===============================================================================
    2:     $Id: CHANGELOG,v 1.1.1.2 2013/07/22 11:54:41 misho 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>