Annotation of embedaddon/libnet/doc/CHANGELOG, revision 1.1.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>