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>