Annotation of embedaddon/libnet/doc/CHANGELOG, revision 1.1

1.1     ! misho       1: ===============================================================================
        !             2:     $Id: CHANGELOG,v 1.24 2004/03/29 17:24:34 mike Exp $
        !             3:     LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
        !             4:                                http://www.packetfactory.net/libnet
        !             5: ===============================================================================
        !             6: 
        !             7: 
        !             8: Mon Mar 29 09:23:49 PST 2004                                            1.1.2.1
        !             9: 
        !            10:     Fixed a typo in the ICMP patch mentioned below.
        !            11: 
        !            12: Thu Mar 25 10:49:04 PST 2004                                              1.1.2
        !            13: 
        !            14:     Fixed the ICMP error message builders (there was a pblock assembly bug
        !            15:      that would prevent you from building more than one ICMP {unreach, time
        !            16:      exceed, redirect} in succession; the order of operations has changed
        !            17:      slightly for building these packets, see the documenation and sample code
        !            18:     Added a Sebek builder
        !            19:     Fixed a bug in libnet_autobuild_arp() that had it pulling in the address to
        !            20:      a pointer instead of just the address
        !            21:     Added AM_MAINTAINER_MODE to configure.in
        !            22:     Changed the __libnet_dump* namespace to the more descriptive libnet_diag*
        !            23:     Added libnet_getpacket_size() to return the size of a packet in a given l
        !            24:     Removed "protocol" from the libnet context. It was a waste of four bytes
        !            25:      The raw socket interface always uses the "IPPROTO_RAW" protocol
        !            26:     Fixed a memory leak in the advanced interface; there is now a function
        !            27:      libnet_adv_free_packet() to free the memory allocated for the packet
        !            28:      when libnet_adv_cull_packet() is called
        !            29:     Fixed a bug on big endian boxes that had TCP and UDP checksums with odd
        !            30:      payloads come out incorrect 
        !            31:     Changes all error messages to look and feel the same:
        !            32:      "%s(): foo\n", __func__
        !            33:     Added a bunch of htons/htonl fixes
        !            34:     Continued to add to the doxygen-based documentation
        !            35:     Added support for unconfigured interfaces
        !            36:     Changed the number of interfaces libnet can handle from 32 to 512
        !            37:     Removed uneeded control structure cruft from libnet_link_dlpi.c
        !            38:     Removed sample/ip.c and added sample/ip_link.c and sample/ip_raw.c
        !            39:     Added IPv6 fragmentation header builder
        !            40:     Added IPv6 routing information header builder
        !            41:     Added IPv6 destination options header builder
        !            42:     Fixed IPv6 flowlabel and traffic class bitwise math
        !            43: 
        !            44: Tue Nov 25 15:33:27 PST 2003                                              1.1.1
        !            45: 
        !            46:     Fixed a bug in libnet_build_icmp_redirect: htonl(gateway) --> gateway.
        !            47:     Added icmp_redirect.c sample code.
        !            48:     Added libnet_autobuild_arp().
        !            49:     Added a slightly faster checksum.
        !            50:     Added a GRE builder.
        !            51:     Fixed a buffer overflow in libnet_build_dhcp().
        !            52:     Added more sanity checks to ensure we have proper link or network layer
        !            53:      headers when not in advanced mode.
        !            54:     Fixed a bug that would sometimes make __libnet_dump_context() crash under 
        !            55:      linux.
        !            56:     Migration from sprintf and strcpy snprintf and strncpy.
        !            57:     Fixed bug in libnet_build_ipv4() when calculating size of memory block
        !            58:     Removed the support directory -- if you're an OLD version of OpenBSD or
        !            59:      FreeBSD you deserve what you get.
        !            60:     Added a BGP builder.
        !            61:     Changed the error handing functions to be more consistent and use
        !            62:      __FUNCTION__.
        !            63:     Fixed a bug in libnet_pblock_free() -- replaced it with 
        !            64:      libnet_pblock_delete().
        !            65:     Fixed all of the inconsistencies inside all of the builders and pblock code
        !            66:      where some fringe conditions could result in u_longs being crunched into
        !            67:      u_shorts.
        !            68:     Fixed libnet_pblock_coalesce() to only require one pass through the list. 
        !            69:     Added better diagnostics (__libnet_dump_context(), __libnet_dump_pblock()).
        !            70:     Added Token Ring and FDDI builders (Linux and Solaris only).
        !            71:     Added Token Ring and FDDI sample programs.
        !            72:     Fixed the handling of TCP and IP payloads when reusing a pblocks.
        !            73:     Fixed the handling of IP headers such that if a TCP packet changes size
        !            74:      via subsequent calls to libnet_build_tcp(), the IP header automatically
        !            75:      changes size as well.
        !            76:     Added libnet_pblock_delete() to remove a pblock from the list.
        !            77:     Added ip.c sample program (builds an arbitrary IP packet).
        !            78:     Added additional payload sanity checks to libnet_build_*.
        !            79:     Added a payload to sample/icmp_echo_cq.c.
        !            80:     Added an MPLS builder.
        !            81:     Added an 802.1x builder.
        !            82:     Added an RPC builder!  Bout time eh?
        !            83:     Fixed do1x.c sample code to make the frame valid.
        !            84:     Fixed link-interface semantics under Mac/OSX
        !            85:     Changed libnet_stats to all be unsigned long longs to accomodate all of
        !            86:      hardcore packet writers.
        !            87:     Fixed IPv6 support (to some extent) removed the IP_HDRINCL stuff and
        !            88:      reworked the resolver stuff to use net_pton() and inet_ntop().
        !            89:     Fixed libnet_build_icmpv4_*() to properly handle the IP header in the
        !            90:      payload.
        !            91:     Fixed libnet_build_igmp() to handle checksums properly.
        !            92:     Fixed a bug in libnet_build_dnsv4() -- now it will work for TCP or UDP --
        !            93:      see the sample program for details...
        !            94:     Fixed a bug in sample/dhcp_discover.c
        !            95:     Added multiple packet interface (called the context queue interface).
        !            96:      Until I finish the manpage, see the sample code and README files
        !            97:      for instructions on how it works.
        !            98:     Fixed Cygwin support.
        !            99:     Fixed an OS/X compilation error due to lack of system header files.
        !           100:     Fixed OS/X link layer bug.
        !           101:     Fixed a bug in pblock_coalesce() that resulted in bad checksums when the
        !           102:      advanced mode was enabled.
        !           103:     Fixed a potential memory leak in pblock_coalesce().
        !           104:     Fixed a potential memory leak in libnet_select_device().
        !           105:     Fixed a potential memory leak in libnet_plist_chain_new().
        !           106:     Fixed Solaris support for IPv6 address support.
        !           107:     Fixed minor bugs in libnet_advanced.c.
        !           108:     Added loopback device support.
        !           109: 
        !           110: 
        !           111: Mon Aug  5 15:18:52 PDT 2002                                              1.1.0
        !           112: 
        !           113:     First 1.1.0 non-beta release.
        !           114: 
        !           115:     Added libnet_adv_write_link() which allows an advanced user to access
        !           116:     libnet's low-level frame injection functionality directly.
        !           117: 
        !           118: 
        !           119: Wed Jul 10 08:18:15 PDT 2002                                     1.1.0 Beta 07b
        !           120: 
        !           121:     Added some words to the manpage.
        !           122: 
        !           123:     Fixed a typo in libnet-functions.h -- forgot a comma.
        !           124: 
        !           125: 
        !           126: Sun Jul  7 10:37:12 PDT 2002                                     1.1.0 Beta 07a
        !           127: 
        !           128:     My bad.  Forgot to `make distclean` before last release resulting in some
        !           129:     compilation errors.
        !           130: 
        !           131:     My bad.  Forgot to add advanced *_ADV writing support to libnet_write().
        !           132:     Simple fix.
        !           133: 
        !           134: 
        !           135: Tue Jul  2 08:42:57 PDT 2002                                      1.1.0 Beta 07
        !           136: 
        !           137:     BETA support for IPv6.
        !           138: 
        !           139:     Fixed the IP and TCP options bugs that bound the TCP and IP payloads to
        !           140:     the IP and TCP headers respectively and saw options being appended
        !           141:     after the payload.
        !           142: 
        !           143:     Added libnet_hex_aton().  This functions reads in arbirtrarily long hex
        !           144:     strings from the command line and returns the equivalent byte string.  It
        !           145:     does an implicit malloc() so make sure to free().
        !           146: 
        !           147:     Frédéric Raynal submitted a patch to break the coalesce loop down to two
        !           148:     passes using realloc resulting in a modest performance increase!  Cool!
        !           149: 
        !           150:     Added "Advanced Mode" which will initialize the library with additional
        !           151:     functionality for advanced users who "know what they're doing".  Basically
        !           152:     this feature will remove some of the sanity checks libnet does when
        !           153:     building and injecting packets, at the programmer's peril.  It also exposes
        !           154:     the libnet_adv() functions.
        !           155: 
        !           156:     FINALLY changed that irritating struct ether_addr redefintion problem.
        !           157:     I internalized the name space of it (-> libnet_ether_addr) so there will
        !           158:     be no more issues there.  Please update your code accordingly!
        !           159: 
        !           160:     Added IGMP checksum support which was omitted by accident.
        !           161: 
        !           162:     Removed netinet/ip_icmp.h from include list.  This was causing problems
        !           163:     when including dnet.h which includes other system headers.  We can
        !           164:     probably stand to remove several headers from libnet.h.in.
        !           165: 
        !           166:     Added sanity check to ensure that when *build_ethernet() is called the
        !           167:     injection method is LIBNET_LINK (except when advanced mode is on).
        !           168: 
        !           169: 
        !           170: Thu Mar 28 22:18:46 PST 2002                                      1.1.0 Beta 06
        !           171: 
        !           172:     Fixed ICMP unreachable checksum error and payload issues.  Now using the
        !           173:     payload interface with unreachables will append the payload to the IPv4
        !           174:     header of the "offending packet".
        !           175: 
        !           176:     Split STP builder into two; libnet_build_stp_conf() and
        !           177:     libnet_build_stp_tcn().
        !           178: 
        !           179:     New CHANGELOG format.  :)
        !           180: 
        !           181: 
        !           182: Mar 24 2002                                                       1.1.0 Beta 05
        !           183: 
        !           184:     New building logic.  Top down.  Much smarter, we now build packets and
        !           185:     frames like an OS kernel.
        !           186: 
        !           187:     Added Cisco ISL builder.
        !           188: 
        !           189: 
        !           190: Mar 18 2002                                                       1.1.0 Beta 04
        !           191: 
        !           192:     Added an STP builder.
        !           193: 
        !           194:     Hooks for Cisco ISL builder.
        !           195: 
        !           196:     Changed libnet_init() to now accept an IP address for the device (so 
        !           197:     either "fxp0" or "192.168.0.1" will work).
        !           198: 
        !           199:     Added libnet_clear_packet() to free packet memory when we're done with it.
        !           200: 
        !           201: 
        !           202: Feb 28 2002                                                       1.1.0 Beta 03
        !           203: 
        !           204:     Added 802.1q, 802.2, 802.3 builders.
        !           205: 
        !           206: 
        !           207: Feb 25 2002                                                       1.1.0 Beta 02
        !           208: 
        !           209:     Fixed Cygwin support.
        !           210: 
        !           211: 
        !           212: Feb 01 2002                                                       1.1.0 Beta 01
        !           213: 
        !           214:     Complete new API and overhaul of most everything.
        !           215: 
        !           216:     Improved linux packet socket support.
        !           217:                             
        !           218:     Renamed libnet_host_lookup() and libnet_name_resolve() to the more 
        !           219:     intuitive libnet_addr2name() and libnet_name2addr().
        !           220: 
        !           221:     All of the address resolution functions return host byte order (which 
        !           222:     is what the build functions want).
        !           223: 
        !           224:     Removed a ton of code from every corner of libnet.
        !           225: 
        !           226:     Removed alot of useless crap:
        !           227:         misc directory
        !           228:         ports directory
        !           229:         util directory
        !           230:         cleaned out the test directory and moved it to sample
        !           231:                             
        !           232:     The libnet-config script is no longer needed to specify machine 
        !           233:     endianess -- that has been moved to libnet.h and done at compile time.
        !           234:     You can still use it to specify other CPP constants as well as 
        !           235:     libraries.
        !           236: 
        !           237:     Added cygwin support.
        !           238: 
        !           239:     Hooks for a few ieee 802 builders.
        !           240: 
        !           241:     Added NTP builder.
        !           242: 
        !           243:     Added DHCP builder.
        !           244: 
        !           245:     Added BOOTP builder.
        !           246: 
        !           247:     Added Cisco CDP builder (needs work).
        !           248: 
        !           249:     Added IPSEC builder (needs work).
        !           250: 
        !           251: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        !           252: 
        !           253:   1.0.2a    02.06.2001      Oops!  Messed up the install stuff.  Fixed now.
        !           254:                             Fixed the config.sub to correctly look for arm*
        !           255:                              architecture.
        !           256:                             Fixed the test.sh script
        !           257:                              (Thankz again to syke).
        !           258: 
        !           259:   1.0.2     02.03.2001      Added OpenBSD 2.7 etherspoof lkm and kernel patch.
        !           260:                              (Thankz to obecian).
        !           261:                             Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?)
        !           262:                              etherspoof kernel patch.
        !           263:                              (Thankz to Matt Bing).
        !           264:                             Added FreeBSD 4 support for automagic MAC address
        !           265:                              spoofing (via ioctl).  No more lkm!
        !           266:                              (Thankz to Toni Andjelkovic).
        !           267:                             Added VRRP support.
        !           268:                             Fixed a NULL pointer check in libnet_checksum.c.
        !           269:                              (Thankz to syke).
        !           270:                             Fixed a function naming problem in libnet_if_addr.c.
        !           271:                              (Thankz to gigisull).
        !           272:                             Fixed a potential byte error in libnet_version.
        !           273:                              (Thankz to wotan).
        !           274:                             Fixed a potential overflow in
        !           275:                              libnet_link_sockpacket.c and libnet_link_dlpi.c.
        !           276:                              (Thankz to Jarno Huuskonen).
        !           277:                             Fixed a manpage discrepancy (get_ip_addr returns
        !           278:                              host-byte, not network-byte).
        !           279:                             Fixed arena allocation code (misalignments and
        !           280:                              whatnot) and arena manpage entry (2 arguments
        !           281:                              were swapped).
        !           282:                              (Thankz to Bryan T. Schmersal).
        !           283:                             Fixed datatype discrepancies (u_char was used
        !           284:                              liberally when char should have been used).
        !           285:                              (Thankz to Kyle Hargraves).
        !           286:                             Fixed the PF_PACKET interface to work correctly.
        !           287:                              (Thankz to Smiler).
        !           288: 
        !           289:   1.0.1b    04.07.2000      Fixed portlist chaining code to allow for more than
        !           290:                              one active plist chain at a time (as per twitch's
        !           291:                              patch).
        !           292:                             Fixed discrepancy between the manpage and code for
        !           293:                              libnet_close_link_interface.  It now returns 1 on
        !           294:                              success as per libnet standard (thankz to Toni
        !           295:                              Andjelkovic for pointing this out).
        !           296: 
        !           297:   1.0.1a    03.29.2000      Fixed a small bug in libnet_link_dlpi.c.
        !           298: 
        !           299:   1.0.1     12.19.1999      Fixed a typo in libnet-headers.h ARH_H -> ARP_H.
        !           300:                             Fixed a small typo in ether_mod-2.5.c.
        !           301:                             Pre-happy BD to libnet!  She'z almost 2 yearz old!
        !           302: 
        !           303:   1.0.0     10.27.1999      Added verbose html documentation.
        !           304:                             Added verbosely commented  example code.
        !           305:                             Fixed OSPF testcode compile issues.
        !           306:                             Added ping of death ICMP test code module.
        !           307:                             Fixed manpage installation wrongness.
        !           308:                             Fixed a reported bug in OpenBSD etherspoof lkm.
        !           309:                             Merged OSPF lsa checksum code into main checksum
        !           310:                              module.
        !           311:                             Fixed a reported bug in the Makefile.in under
        !           312:                              Solaris when make install was invoked, the ln
        !           313:                              failed.
        !           314:                             Fixed linux-based IP broadcasting using the
        !           315:                              raw sockets interface.
        !           316: 
        !           317:     0.99g    09.13.1999     Added an OSPF builder (which is still in beta).
        !           318:                             Fixed the Linux/configure.in bug.  This was an odd
        !           319:                              bug that affected Linux-based boxes, but not
        !           320:                              BSD-based machines.  The configure script refused
        !           321:                              to expand most of the Makefile.in macros in every file
        !           322:                              because of a conditional check.
        !           323:                             Fixed some Makefile.in issues.
        !           324: 
        !           325:     0.99f    09.09.1999     Changed test/poink.c to not rely on a previous
        !           326:                              install of libnet to compile.
        !           327:                             Added a redhat RPM.
        !           328:                             Changed sourcefile naming scheme to libnet_*.
        !           329:                             Removed all assertions from the tree.
        !           330:                              We are moving closer to a 1.0 release and
        !           331:                              assertions have no place in production code.
        !           332:                              Furthermore, there should be no exit points
        !           333:                              inside a library.  Currently, all functions that
        !           334:                              made assertions now return an integral 1 upon
        !           335:                              success and a -1 when the assertion would have
        !           336:                              failed (some had to be changed from returning
        !           337:                              void to returning int).  This will not break
        !           338:                              backward compatbility.
        !           339:                             Fixed bugs in the arena code.
        !           340:                              next_packet_from_arena would never return the
        !           341:                              first chunk of memory, only the "next".  It
        !           342:                              now handles this special case.  Thanks to
        !           343:                              Sascha Gresk for locating this bug.
        !           344:                              Fixed another potential bug when attempting
        !           345:                               to allocate large packet sizes inside an arena.
        !           346:                             Added an OpenBSD 2.5 ether_spoof lkm.
        !           347:                             Fixed TCP options bugs.
        !           348: 
        !           349:     0.99e    07.21.1999     Modified the libnet-config script to work more
        !           350:                              intutively now.  It accepts multiple arguments.
        !           351:                              See README.libnet-config.
        !           352:                             Solaris m4/sh fixes (autoconf phase).
        !           353:                             Internal error handling changed to use libnet_error.
        !           354: 
        !           355:     0.99d    06.24.1999     Added: build_icmp_redirect().
        !           356:                             Added: FreeBSD 3.x support for spoofing source.
        !           357:                             Added: libnet_error().
        !           358:                             Added: port list chaining code.
        !           359:                              MAC addrresses (see README.bpf).
        !           360:                             Bugfix: libnet_select_device correctly accepts
        !           361:                              NULL device arguments.
        !           362:                             Bugfix: build_icmp.c now copies the correct amount 
        !           363:                              of header information.
        !           364:                             Bugfix: OpenBSD needs HAVE_SOCKADDR_SA_LEN.
        !           365:                             Changed: write_ip internal semantics.  Cleaner
        !           366:                              and faster now.
        !           367:                             Changed: init_packet argument parameters.  More
        !           368:                              correct now.  Takes a u_short vs. a size_t.
        !           369: 
        !           370:     0.99c   05.28.1999      link_int -> libnet_link_int.
        !           371:                             Misc small testcode fixes.
        !           372:                             Added libnet_tcp_header and libnet_ip_header.
        !           373:                             Added libnet-config shell script, see
        !           374:                              README.libnet-config and the manpage.
        !           375:                             Updated ports.
        !           376:                             Revamped checksum module --  it's much simpler
        !           377:                              and more efficient (ripped out arch specific
        !           378:                              code which seemed to be buggy with series' of
        !           379:                              very large packets).  Dug Song wrote it, with
        !           380:                              small fixes/changes by MDS.
        !           381: 
        !           382:     0.99b   05.06.1999      Fixed a nasty UDP/TCP + data checksum bug.
        !           383:                             Header structure further divided into subfiles.
        !           384:                             Moved get_hwaddr into low-level interface locales.
        !           385:                             Fixed the BSD get_hwaddr (dugsong@anzen.com).
        !           386:                             Ported to BSD/OS 3.x.
        !           387:                             Added `LIBNET_VERSION` symbolic constant.
        !           388:                             build_ip with payload semantics changed (now
        !           389:                              requires a payload length which is more
        !           390:                              intuitive).
        !           391:                             Fixed the `disappearing MAC address problem`
        !           392:                              within the linux version of get_hwaddr().
        !           393: 
        !           394:     0.99a   04.14.1999      Linux 2.0.x kernels don't have <net/ethernet.h>
        !           395:                              0.99 included this header file without checking
        !           396:                              to see if it present.  This is now fixed.
        !           397:                             Non-x86 systems have no tcp_check function but the
        !           398:                              stub.c sourcefile did not check this.  This is now
        !           399:                              fixed.
        !           400:                             Added the utilities directory and get_mac.c.
        !           401: 
        !           402:     0.99    04.13.1999      Major manpage redux.
        !           403:                             Added (broken?) PF_PACKET support for Linux (see
        !           404:                              README.linux).
        !           405:                             Moved alot of m4 from configure.in to aclocal.m4.
        !           406:                             Added Linux m4 macro to detect PF_PACKET.
        !           407:                             Added build_icmp_unreach
        !           408:                             Added build_icmp_timestamp
        !           409:                             Added standard nomenclature for all the ICMP
        !           410:                              type/code symbolic constants (see the manpage).
        !           411:                             Changed internal network structure nomenclature.
        !           412:                             Decided to stop using the word nomenclature so much.
        !           413:                             Fixed semantics of get_ipaddr (s/PF_INET/AF_INET).
        !           414:                             Added a symlink in the install directory so libnet
        !           415:                              is also named `libpwrite`.
        !           416:                             Added ASN.1 conversion routines, mostly pilfered
        !           417:                              from ucd snmplib.
        !           418:                             Removed get_hwaddr from sockpacket.c and made the
        !           419:                              existing one portable to Linux.
        !           420:                             Added more testcode and changed testcode structure
        !           421:                              to be more intuitive.
        !           422:                             Added init_packet and destroy_packet.
        !           423:                             Added an arena allocator.
        !           424:                             Fixed alignment issues on SPARC and Alpha
        !           425:                              (possibly others with strict alignment
        !           426:                              requirements).
        !           427:                             Added a packet dumping routine.  Not fully tested.
        !           428:                             Testcode updates including a master testcode shell
        !           429:                              script.
        !           430:                             Added stub functions to ease the eventual
        !           431:                              transition to a more proper `libnet_*` function
        !           432:                              naming convention.  See README.stubs for more
        !           433:                              info.
        !           434: 
        !           435:     0.10a   02.04.1999      Added the libnet.s2h configuration file to the
        !           436:                              distribution.
        !           437:                             GLIBC fix.
        !           438: 
        !           439:     0.10    01.31.1999      Many low-level changes, same interface though.
        !           440:                             Split up the main libnet.h file into two files.
        !           441:                             Autoconf changes:
        !           442:                              checks to see if the underlying architecture
        !           443:                              needs to be aligned.
        !           444:                              flexible install location.
        !           445:                              explicitly set $CC option in Makefile.in.
        !           446:                             Added ensure-dir.sh.
        !           447:                             Changes DEBUG semantics as I was told the previous
        !           448:                              stuff broke on some compilers.
        !           449:                             Created a FreeBSD/OpenBSD ports entry.
        !           450:                             SGI snoop (drain) interface fixed.
        !           451:                             Solaris/HPUX DLPI interface fixed.
        !           452:                             Support for getting local IP addresses.
        !           453:                             Support for getting local hardware addresses.
        !           454:                             Added a DNS packet builder.
        !           455:                             Added an RIP packet builder.
        !           456:                             Added an ICMP MASKREQ/REPLY packet builder.
        !           457:                             Added ICMP at the link layer test code.
        !           458:                             Changed GLIBC version detection semantics.
        !           459: 
        !           460:     0.9     12.15.1998      Major changes/additions here...
        !           461:                             Added lowlevel packet building and writing
        !           462:                              routines with a codebase from libpcap.
        !           463:                             Broken DPLI support (fixme!).
        !           464:                             Added ethernet and ARP building routines.
        !           465:                             Added ICMP_ECHO building routine which led to the
        !           466:                              Discovery of an odd kernel panic bug under
        !           467:                              OpenBSD (see hook.c in test dir).
        !           468:                             Added IGMP building routine.
        !           469:                             Reworked autoconf script.
        !           470:                             Fixed Linux ip_sum vs. ip_csum naming issue.
        !           471:                             Fixed Solaris checksums (2.4, 2.5.x).
        !           472:                             Added NetBSD autoconf entry.
        !           473:                             Changed BSD_BYTE_SWAP semantics to correctly handle
        !           474:                              IP datagrams through BPF (see write_ip.c).
        !           475: 
        !           476:     0.8c    11.10.1998      Added more testcode.
        !           477: 
        !           478:     0.8b    10.21.1998      OK.  I THINK WE'VE FINALLY FIXED THAT GLIBC THING.
        !           479:                             Ported to alpha Linux.
        !           480: 
        !           481:     0.8a    10.15.1998      Added support for IP TOS bits (oops.  Broke
        !           482:                              backward compatibility again.  Like I said, don't
        !           483:                              rely on this until 1.x).
        !           484: 
        !           485:     0.8     10.13.1998      Added support for IP options.
        !           486:                             Added support for TCP options.
        !           487:                             Added a dummy version function.
        !           488:                             Fixed linux libc vs. glibc nomenclature discrepancy.
        !           489:                             Solaris checksums fixed for non-payload laden
        !           490:                              packets?
        !           491: 
        !           492:     0.7b    09.22.1998      Linux glibc/libc nomenclature anomoly still there.
        !           493:                             Fixed Linux/BSD icmp header size problem.
        !           494: 
        !           495:     0.7a    08.26.1998      Fixed payload support (see test code).
        !           496: 
        !           497:     0.7     08.25.1998      Solaris port (checksums broken -- Solaris has gay
        !           498:                              fucking quirks when it comes to checksumming on
        !           499:                              raw sockets).
        !           500:                             Added autoconf scripts.
        !           501:                             Added psuedorandom number generation code.
        !           502:                             Added payload support (breaks backward
        !           503:                             compatability and is untested).
        !           504: 
        !           505:     0.6     06.21.1998      Fixed UDP checksum.  Removed USE_NAME CPP option
        !           506:                              made it a run time decision.  Makes code more
        !           507:                              extensible, but breaks backward compatibility.
        !           508: 
        !           509:     0.5     06.02.1998      Added TCP/UDP/IP packet assembly routines.
        !           510:                             Added a checksum function.
        !           511:                             Added a manpage.
        !           512:                             Removed daemonizing function (BSD has one).
        !           513:                             UDP checksums broken...
        !           514: 
        !           515:     0.4     01.12.1998      IP checksum (x86 assembly implementation).
        !           516: 
        !           517:     0.3     01.12.1998      daemonizing function.
        !           518: 
        !           519:     0.2     01.11.1998      raw socket function changed to allow user 
        !           520:                             designated protocol for raw socket
        !           521: 
        !           522:     0.1     01.05.1998      Initial release, contains: 
        !           523:                              network byte order -> human readable IP address,
        !           524:                              human readable IP address -> network byte order,
        !           525:                              simple raw socket / IP_HDRINCL wrapper,
        !           526:                              TCP checksum (x86 assembly implementation)
        !           527: EOF

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