1 ===============================================================================
2 LIBNET 1.0 (c) 1998 - 2001 Mike D. Schiffman <mike@infonexus.com>
3 http://www.packetfactory.net/libnet
4 ===============================================================================
7 Version Released Changes
8 -------------------------------------------------------------------------------
9 1.0.2a 02.06.2001 Oops! Messed up the install stuff. Fixed now.
10 Fixed the config.sub to correctly look for arm*
12 Fixed the test.sh script
13 (Thankz again to syke).
14 1.0.2 02.03.2001 Added OpenBSD 2.7 etherspoof lkm and kernel patch.
16 Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?)
17 etherspoof kernel patch.
18 (Thankz to Matt Bing).
19 Added FreeBSD 4 support for automagic MAC address
20 spoofing (via ioctl). No more lkm!
21 (Thankz to Toni Andjelkovic).
23 Fixed a NULL pointer check in libnet_checksum.c.
25 Fixed a function naming problem in libnet_if_addr.c.
27 Fixed a potential byte error in libnet_version.
29 Fixed a potential overflow in
30 libnet_link_sockpacket.c and libnet_link_dlpi.c.
31 (Thankz to Jarno Huuskonen).
32 Fixed a manpage discrepancy (get_ip_addr returns
33 host-byte, not network-byte).
34 Fixed arena allocation code (misalignments and
35 whatnot) and arena manpage entry (2 arguments
37 (Thankz to Bryan T. Schmersal).
38 Fixed datatype discrepancies (u_char was used
39 liberally when char should have been used).
40 (Thankz to Kyle Hargraves).
41 Fixed the PF_PACKET interface to work correctly.
44 1.0.1b 04.07.2000 Fixed portlist chaining code to allow for more than
45 one active plist chain at a time (as per twitch's
47 Fixed discrepancy between the manpage and code for
48 libnet_close_link_interface. It now returns 1 on
49 success as per libnet standard (thankz to Toni
50 Andjelkovic for pointing this out).
52 1.0.1a 03.29.2001 Fixed a small bug in libnet_link_dlpi.c.
54 1.0.1 12.19.1999 Fixed a typo in libnet-headers.h ARH_H -> ARP_H.
55 Fixed a small typo in ether_mod-2.5.c.
56 Pre-happy BD to libnet! She'z almost 2 yearz old!
58 1.0.0 10.27.1999 Added verbose html documentation.
59 Added verbosely commented example code.
60 Fixed OSPF testcode compile issues.
61 Added ping of death ICMP test code module.
62 Fixed manpage installation wrongness.
63 Fixed a reported bug in OpenBSD etherspoof lkm.
64 Merged OSPF lsa checksum code into main checksum
66 Fixed a reported bug in the Makefile.in under
67 Solaris when make install was invoked, the ln
69 Fixed linux-based IP broadcasting using the
70 raw sockets interface.
72 0.99g 09.13.1999 Added an OSPF builder (which is still in beta).
73 Fixed the Linux/configure.in bug. This was an odd
74 bug that affected Linux-based boxes, but not
75 BSD-based machines. The configure script refused
76 to expand most of the Makefile.in macros in every file
77 because of a conditional check.
78 Fixed some Makefile.in issues.
80 0.99f 09.09.1999 Changed test/poink.c to not rely on a previous
81 install of libnet to compile.
83 Changed sourcefile naming scheme to libnet_*.
84 Removed all assertions from the tree.
85 We are moving closer to a 1.0 release and
86 assertions have no place in production code.
87 Furthermore, there should be no exit points
88 inside a library. Currently, all functions that
89 made assertions now return an integral 1 upon
90 success and a -1 when the assertion would have
91 failed (some had to be changed from returning
92 void to returning int). This will not break
93 backward compatbility.
94 Fixed bugs in the arena code.
95 next_packet_from_arena would never return the
96 first chunk of memory, only the "next". It
97 now handles this special case. Thanks to
98 Sascha Gresk for locating this bug.
99 Fixed another potential bug when attempting
100 to allocate large packet sizes inside an arena.
101 Added an OpenBSD 2.5 ether_spoof lkm.
102 Fixed TCP options bugs.
104 0.99e 07.21.1999 Modified the libnet-config script to work more
105 intutively now. It accepts multiple arguments.
106 See README.libnet-config.
107 Solaris m4/sh fixes (autoconf phase).
108 Internal error handling changed to use libnet_error.
110 0.99d 06.24.1999 Added: build_icmp_redirect().
111 Added: FreeBSD 3.x support for spoofing source.
112 Added: libnet_error().
113 Added: port list chaining code.
114 MAC addrresses (see README.bpf).
115 Bugfix: libnet_select_device correctly accepts
116 NULL device arguments.
117 Bugfix: build_icmp.c now copies the correct amount
118 of header information.
119 Bugfix: OpenBSD needs HAVE_SOCKADDR_SA_LEN.
120 Changed: write_ip internal semantics. Cleaner
122 Changed: init_packet argument parameters. More
123 correct now. Takes a u_short vs. a size_t.
125 0.99c 05.28.1999 link_int -> libnet_link_int.
126 Misc small testcode fixes.
127 Added libnet_tcp_header and libnet_ip_header.
128 Added libnet-config shell script, see
129 README.libnet-config and the manpage.
131 Revamped checksum module -- it's much simpler
132 and more efficient (ripped out arch specific
133 code which seemed to be buggy with series' of
134 very large packets). Dug Song wrote it, with
135 small fixes/changes by MDS.
137 0.99b 05.06.1999 Fixed a nasty UDP/TCP + data checksum bug.
138 Header structure further divided into subfiles.
139 Moved get_hwaddr into low-level interface locales.
140 Fixed the BSD get_hwaddr (dugsong@anzen.com).
141 Ported to BSD/OS 3.x.
142 Added `LIBNET_VERSION` symbolic constant.
143 build_ip with payload semantics changed (now
144 requires a payload length which is more
146 Fixed the `disappearing MAC address problem`
147 within the linux version of get_hwaddr().
149 0.99a 04.14.1999 Linux 2.0.x kernels don't have <net/ethernet.h>
150 0.99 included this header file without checking
151 to see if it present. This is now fixed.
152 Non-x86 systems have no tcp_check function but the
153 stub.c sourcefile did not check this. This is now
155 Added the utilities directory and get_mac.c.
157 0.99 04.13.1999 Major manpage redux.
158 Added (broken?) PF_PACKET support for Linux (see
160 Moved alot of m4 from configure.in to aclocal.m4.
161 Added Linux m4 macro to detect PF_PACKET.
162 Added build_icmp_unreach
163 Added build_icmp_timestamp
164 Added standard nomenclature for all the ICMP
165 type/code symbolic constants (see the manpage).
166 Changed internal network structure nomenclature.
167 Decided to stop using the word nomenclature so much.
168 Fixed semantics of get_ipaddr (s/PF_INET/AF_INET).
169 Added a symlink in the install directory so libnet
170 is also named `libpwrite`.
171 Added ASN.1 conversion routines, mostly pilfered
173 Removed get_hwaddr from sockpacket.c and made the
174 existing one portable to Linux.
175 Added more testcode and changed testcode structure
176 to be more intuitive.
177 Added init_packet and destroy_packet.
178 Added an arena allocator.
179 Fixed alignment issues on SPARC and Alpha
180 (possibly others with strict alignment
182 Added a packet dumping routine. Not fully tested.
183 Testcode updates including a master testcode shell
185 Added stub functions to ease the eventual
186 transition to a more proper `libnet_*` function
187 naming convention. See README.stubs for more
190 0.10a 02.04.1999 Added the libnet.s2h configuration file to the
194 0.10 01.31.1999 Many low-level changes, same interface though.
195 Split up the main libnet.h file into two files.
197 checks to see if the underlying architecture
199 flexible install location.
200 explicitly set $CC option in Makefile.in.
202 Changes DEBUG semantics as I was told the previous
203 stuff broke on some compilers.
204 Created a FreeBSD/OpenBSD ports entry.
205 SGI snoop (drain) interface fixed.
206 Solaris/HPUX DLPI interface fixed.
207 Support for getting local IP addresses.
208 Support for getting local hardware addresses.
209 Added a DNS packet builder.
210 Added an RIP packet builder.
211 Added an ICMP MASKREQ/REPLY packet builder.
212 Added ICMP at the link layer test code.
213 Changed GLIBC version detection semantics.
215 0.9 12.15.1998 Major changes/additions here...
216 Added lowlevel packet building and writing
217 routines with a codebase from libpcap.
218 Broken DPLI support (fixme!).
219 Added ethernet and ARP building routines.
220 Added ICMP_ECHO building routine which led to the
221 Discovery of an odd kernel panic bug under
222 OpenBSD (see hook.c in test dir).
223 Added IGMP building routine.
224 Reworked autoconf script.
225 Fixed Linux ip_sum vs. ip_csum naming issue.
226 Fixed Solaris checksums (2.4, 2.5.x).
227 Added NetBSD autoconf entry.
228 Changed BSD_BYTE_SWAP semantics to correctly handle
229 IP datagrams through BPF (see write_ip.c).
231 0.8c 11.10.1998 Added more testcode.
233 0.8b 10.21.1998 OK. I THINK WE'VE FINALLY FIXED THAT GLIBC THING.
234 Ported to alpha Linux.
236 0.8a 10.15.1998 Added support for IP TOS bits (oops. Broke
237 backward compatibility again. Like I said, don't
238 rely on this until 1.x).
240 0.8 10.13.1998 Added support for IP options.
241 Added support for TCP options.
242 Added a dummy version function.
243 Fixed linux libc vs. glibc nomenclature discrepancy.
244 Solaris checksums fixed for non-payload laden
247 0.7b 09.22.1998 Linux glibc/libc nomenclature anomoly still there.
248 Fixed Linux/BSD icmp header size problem.
250 0.7a 08.26.1998 Fixed payload support (see test code).
252 0.7 08.25.1998 Solaris port (checksums broken -- Solaris has gay
253 fucking quirks when it comes to checksumming on
255 Added autoconf scripts.
256 Added psuedorandom number generation code.
257 Added payload support (breaks backward
258 compatability and is untested).
260 0.6 06.21.1998 Fixed UDP checksum. Removed USE_NAME CPP option
261 made it a run time decision. Makes code more
262 extensible, but breaks backward compatibility.
264 0.5 06.02.1998 Added TCP/UDP/IP packet assembly routines.
265 Added a checksum function.
267 Removed daemonizing function (BSD has one).
268 UDP checksums broken...
270 0.4 01.12.1998 IP checksum (x86 assembly implementation).
272 0.3 01.12.1998 daemonizing function.
274 0.2 01.11.1998 raw socket function changed to allow user
275 designated protocol for raw socket
277 0.1 01.05.1998 Initial release, contains:
278 network byte order -> human readable IP address,
279 human readable IP address -> network byte order,
280 simple raw socket / IP_HDRINCL wrapper,
281 TCP checksum (x86 assembly implementation)