Annotation of embedaddon/libnet/ChangeLog.md, revision 1.1.1.1
1.1 misho 1: Change Log
2: ==========
3:
4: All relevant changes are documented in this file. For a complete list
5: of contributors, see the GIT commit log.
6:
7:
8: [v1.2][] - 2019-10-16
9: ---------------------
10:
11: Release curated by Sam Roberts and Joachim Nilsson.
12:
13: ### Changes
14:
15: - Removed Lua bindings from repo and dist files, now available separately
16: - Removed generated HTML and Nroff (man pages) documentation files, must
17: be regenerated with Doxygen using `make doc`
18: - Add `pkg-config` support with `libnet.pc`, replaces `libnet-config`
19: tool, although it is kept for compatibility for now
20: - Factorize socket setup code for socket opening to provide output
21: device selection for IPv4
22: - Make `libnet_get_hwaddr()` work with 802.1q interfaces in bpf (BSD)
23: - New API for OSPF HELLO messages, with neighbor
24:
25: ### Fixes
26:
27: - Use `getifaddrs()` on OpnBSD and Linux
28: - For samples, `netinet/in.h` is not on windows
29: - Fix errors with missing `IPPROTO_MH` on windows
30: - Fix build error on Mac OS X
31: - Fix #34 checksum caculation when IPv6 extension headers being used
32: - Remove unneeded trailing `-Wl` from `-version-info` line
33: - `libnet_build_snmp()` fix warning
34: - Use `LIBNET_*RESOLVE` const in `libnet_name2addr*`
35: - Fix i486 sample synflood6 warning
36: - Some samples need `#include<netinet/in.h>` for `IPPROTO_*` on OpenBSD 5.2
37: - Fix gcc warnings
38: - Check for `socklen_t`. Suggested by g.esp and Stefanos Harhalakis
39: - libnet: update for obsolete INCLUDE directive
40: - Fix warning inside comment
41: - Automatic link options `#pragma comment(lib, ...)` are only for MSVC
42: - Fix several warnings for MS C/C++ compiler
43: - `libnet_open_raw4()` doesn't return a SOCKET on win32
44: - Fixes error messages sometimes include newline, sometimes not
45: - Properly set `l->err_buf` if `libnet_ifaddrlist()` fails
46: - dlpi: Try harder to find the device for the interface
47: - dlpi: Correctly extract unit number from devices with numbers in their name
48: - Make interface selection work for interfaces with multiple addresses
49: - Fix memory leak, device list needs to freed after use
50: - Fix file descriptor leak in `libnet_ifaddrlist()`
51: - Fix `libnet_get_hwaddr()` for large(!) number of interfaces
52: - Fix to support musl libc, removes support for GLIBC <2.1
53: - Fix win32 buffer overrun in `libnet_get_ipaddr4()`
54: - Interface selection was ignoring interfaces with IPv6
55: - Use `LIBNET_API` on public functions, instead of an export file
56: - Add Visual Studio 2010 project files, with build instructions
57: - Define INET6 on IRIX, making libnet compile cleanly
58: - Check for FreeBSD pre-11 before enabling `LIBNET_BSD_BYTE_SWAP`
59: - Use `LIBNET_BSDISH_OS` and `LIBNET_BSD_BYTE_SWAP` on Darwin
60: - Add BSD byteswap for Darwin. Otherwise `sendto(` returns `EINVAL`
61: - `netinet/in.h` is needed for `IPPROTO_` and `sockaddr_in`
62:
63:
64: [v1.1.6][] - 2012-03-06
65: -----------------------
66:
67: Release curated by Sam Roberts.
68:
69: ### Changes
70: - Note about why including libnet.h breaks dnet.h/dumbnet.h (Sam Roberts)
71: - Clean up use of single and bracket quotes. (Sam Roberts)
72: - FreeBSD and Solaris volunteers to contibute. (Sam Roberts)
73: - Prep for 1.1.6 release, such as bumping version (Sam Roberts)
74: - Add people who have volunteered to check release candidates. (Sam Roberts)
75: - Rework libnet_autobuild_ipv6() to eliminate code duplication. (Sam Roberts)
76: - Implemented libnet_autobuild_ipv6() (repolho)
77: - Implemented unix version of libnet_get_ipaddr6() (repolho)
78: - Reintroduce libnet_pblock_record_ip_offset() which is empty. (Sam Roberts)
79: - Make clear that all contributions are under libnet copyright. (Sam Roberts)
80: - Update for doxygen 1.7.4. (Sam Roberts)
81: - Note that PORTED is no longer maintained. (Sam Roberts)
82: - Note that CONTRIB is no longer maintained. (Sam Roberts)
83: - Prep for upcoming 1.1.6 release. (Sam Roberts)
84: - Remove BUGS, it referred to non-existent code. (Sam Roberts)
85: - Reworked icmpv6 patch to parallel the form of icmpv4 support. (Sam Roberts)
86: - Don't depend on netinet/ip.h. (Sam Roberts)
87: - Remove unused variable. (Sam Roberts)
88: - Support building ICMPv6 packets. (someone)
89: - Use SO_BINDTODEVICE to force packets out opened device. (someone)
90: - Always use an IPPROTO of TCP when calculating TCP checksums. (Sam Roberts)
91: - Use correct addr type for addrlen calculation. (someone)
92: - libnet_build_igmp reserved field was mistakenly called 'code' (Sam Roberts)
93: - Documentation doesn't include any gif files. (Sam Roberts)
94: - Enable IPV6 support on Solaris 11. (Rich Burridge)
95: - Presence of linux's PF_PACKET sockets is now detected. The acinclude.m4
96: merged in from packetfactory's 1.1.3-rc branch mysteriously assumed that
97: that there was no PF_PACKET if the target OS was linux, which is the
98: opposite of what we want. (Sam Roberts)
99: - pblock_append deals with raw memory and structs, so declare it correctly
100: (Sam Roberts)
101: - Clarified types and sizes of DHCP/BOOTP chaddr, sname, and file. chaddr is a
102: hardware address, with size specified seperately, whereas sname and file are
103: null terminated strings. (Sam Roberts)
104: - Explicitly ignore return value of write (some systems now warn about this).
105: (Sam Roberts)
106: - Synchronize comment about h_len with parameter name in function. (Sam Roberts)
107: - mkinstalldirs is replaced by autogen.sh. Maybe it shouldn't be checked in?
108: (Sam Roberts)
109: - autogen retries if /sw/... doesn't exist (Sam Roberts)
110:
111: ### Fixes
112:
113: - Only use getifaddrs() if it exists. (reported by Dagobert Michelsen) (Sam Roberts)
114: - ICMPv6 struct is too long, so use length macro (sickmind@lavabit.com) (Sam Roberts)
115: - ICMPv6 pblock sizes are needed to calculate IPv6's ip_len (reported by
116: sickmind@lavabit.com) (Sam Roberts)
117: - Fix doc comment format errors reported by doxygen. (Sam Roberts)
118: - Fixed typo in error message. (Thomas Habets)
119: - Trying to fix write errors (Víctor Martínez)
120: - Fix libnet_build_igmp() to not reverse the order of the ip address. libnet
121: APIs that take IP addresses as a uint32_t expect them to already be in
122: network byte order. (Sam Roberts)
123: - Fixes a buffer overflow issue when copying chaddr, file, and sname fields to
124: the DHCP header. (allfro)
125: - Fixes improper calculation of header size when libnet_pblock_probe is
126: called. payload_s must be added to the header length in order to accommodate
127: for the existence of a non-NULL payload. Otherwise the user is prompted with
128: a 'memcpy would cause overflow' error and the program exits. (allfro)
129: - Fixes incorrect memory block size set in the timeexceed and redirect
130: builders. The n variable does not add the size of the payload (payload_s)
131: for proper allocation of the buffer when payload is not NULL and payload_s
132: is greater than 0. This results in a memcpy buffer overflow error when
133: libnet_pblock_append is called exiting the program. (allfro)
134: - Fixes a bug that incorrectly converts the addr, mask, and next_hop fields to
135: network byte order. Users will usually call libnet_name2addr4 to fill these
136: fields and this function already provides a network byte-ordered
137: value. (allfro)
138: - snap parameter was getting copied into the dhost field. (Sam Roberts)
139: - h_len is no longer used, so pass zero. Coverity noticed that stack garbage
140: was being passed instead of a valid value, its just that the value isn't
141: used, and incluing l->total_size is wrong when the pblock is being updated
142: (though it will work on pblock creation). (Sam Roberts)
143: - Length n should include the value_hdr. (Sam Roberts)
144: - Coverity: UNINIT (Jiri Popelka)
145: - Coverity: REVERSE_INULL (Jiri Popelka)
146: - Coverity: RESOURCE_LEAK (Jiri Popelka)
147: - Coverity: OVERRUN_STATIC (Jiri Popelka)
148: - Coverity: OVERRUN_STATIC (Jiri Popelka)
149: - Coverity: OVERRUN_STATIC (Jiri Popelka)
150: - Coverity: FORWARD_NULL (Jiri Popelka)
151: - Coverity: FORWARD_NULL (Jiri Popelka)
152: - Coverity: CHECKED_RETURN (Jiri Popelka)
153: - build_ipv6: set higher traffic class bits (Ulrich Weber)
154: - Fix missing uint instead of u_int (Dagobert Michelsen)
155:
156:
157: [v1.1.5][] - 2010-11-03
158: -----------------------
159:
160: Release curated by Sam Roberts.
161:
162: ### Changes
163: - IRIX: Get MAC address from `ioctl()`, not by spawning shell. (Thomas Habets)
164: - Cleaned up implementations of `libnet_get_hwaddr()`, some leaked
165: memory, one returned a pointer to data on the stack, and the others
166: return a pointer to static data. I'm settling on the non-reentrant
167: static data form. (Sam Roberts)
168: - Further simplify `autogen.sh` (Sam Roberts)
169: - Removed dependency on `net/bpf.h`, and on `pcap.h`. (Sam Roberts)
170: - `LBL_ALIGN` check is unused, removing. (Sam Roberts)
171: - Don't include `pcap.h` if we've already got `net/bpf.h`, pcap has it's
172: own bpf. (Sam Roberts)
173: - Get DLT types from the source, `pcap.h`. (Sam Roberts)
174: - Use `autoconf -ivf` in autogen.sh (suggested by alon.barlev@gmail.com)
175: (Sam Roberts)
176: - Add a link to the old docs. (Sam Roberts)
177: - Added links to github and sourceforge. (Sam Roberts)
178: - Replace C99/C++ comments with traditional C
179: comments. (alon.barlev@gmail.com) (Sam Roberts)
180: - Closer backwards compat, assume its ipv4 if it's not ipv6. This seems
181: totally wrong, but so it goes. (Sam Roberts)
182: - Try using the `ip_len` header field to guess the input buffer's
183: size. (Sam Roberts)
184: - `libnet_do_checksum()`, despite being "internal", is used by external
185: code. libnet needs to maintain backwards API compatibility, tcpsic
186: from the isic package is an example of a binary failing when calling
187: the new API with the old arguments. (Sam Roberts)
188: - Use libtool-1 or libtool-2 whatever available (alon.barlev@gmail.com)
189: (Sam Roberts)
190: - Remove dead code. (Sam Roberts)
191: - h_len is calculated for ip, udp, tcp, icmp, and igmp, so is allowed to
192: be zero. (Sam Roberts)
193: - Avoid mallocing zero bytes, it perturbs electric fence. (Sam Roberts)
194: - `ip_offset` is now calculated on the fly, and UDP and TCP no longer
195: use `h_len` (Sam Roberts)
196: - IP offset calculation should allow nesting of IP protocols. (Sam Roberts)
197: - Remove gccisms in bitfield definitions. (Sam Roberts)
198: - injection type `of LIBNET_NONE`, for packet construction without
199: injection (also, more const correctness) (Sam Roberts)
200: - Notes about checksumming. (Sam Roberts)
201: - Updated comments and notes. (Sam Roberts)
202: - Added missing pblock types, and made strings consistent with
203: definitions. (Sam Roberts)
204: - Change version policy, we will be 1.1.4 until 1.1.5 is released. (Sam Roberts)
205: - Bring CHANGELOG up to date with today, and script used to generated
206: it. (Sam Roberts)
207: - Begin implementation and tests for repairing pblocks after an
208: update. (Sam Roberts)
209: - Clarifications in document comments. (Sam Roberts)
210: - Don't doxygen process internal header libnet-headers.h (Sam Roberts)
211: - Note about `build_data`, which doesn't update `ip_offset`, among other
212: problems. (Sam Roberts)
213: - Why don't TCP and UDP use the DATA pblock type? (Sam Roberts)
214: - whitespace cleanup (Sam Roberts)
215: - Summarize changes for log. (Sam Roberts)
216: - Reindented, removing hard tabs, and using consistent brace
217: positioning. (Sam Roberts)
218: - configure.in: Check for `uint{16,32,64}_t` (Thomas Habets)
219: - Use `uint64_t`, not `u_int64_t` (Thomas Habets)
220: - configure.in: check for `gethostbyname2()` (Thomas Habets)
221: - define a lying `gethostbyname2()` if it's not defined (Thomas Habets)
222: - define `STDOUT_FILENO` if it's not defined (Thomas Habets)
223: - Configure switch to install samples (Sam Roberts)
224: - Attempt at applying a patch to get installable samples, which doesn't
225: work. (Sam Roberts)
226: - Convert CRLF to LF. (Sam Roberts)
227: - Auto* changes to work on OS X from git checkout. (Sam Roberts)
228: - Add srcdir to include path. (Sam Roberts)
229: - Beginning 1.1.5 development. (Sam Roberts)
230:
231: ### Fixes
232: - Compile fix for IRIX (added includes) (Thomas Habets)
233: - Don't explicitly check for UID 0, we may have capabilities even if not
234: root. (Thomas Habets) (Sam Roberts)
235: - Visual C++ compiler(v9.0) uses bitfield type as a hint to pad the
236: bitfield, so struct was too long. (Sam Roberts)
237: - Make `libnet_get_hwaddr()` work in the last few releases of OpenBSD
238: (stu@spacehopper.org) (Sam Roberts)
239: - Don't distribute `libnet.h`, it is generated by `configure`
240: (alon.barlev@gmail.com) (Sam Roberts)
241: - AIX build failures fixed, cause was inclusion of system headers libnet
242: no longer uses (alon.barlev@gmail.com) (Sam Roberts)
243: - checksum would segfault if a IP checksum was requested for a non-ipv4
244: header (Sam Roberts)
245: - merged icmpv6 patch in, but I believe either it or the
246: `sample/icmp6_unreach` generates the cksum incorrectly
247: (victor@inliniac.net) (Sam Roberts)
248: - Avoid looking at `/dev` and `/usr/include` when cross-compiling
249: (alon.barlev@gmail.com) Alon: The following code support cross
250: compiling: 1. You CANNOT check for `/usr/include` stuff as cross
251: compiler is installed else-where. Autoconf know how to do this, use
252: its header detection logic and ask the result. 2. Testing for `/dev/`
253: can be done only when not cross compiling... (Sam Roberts)
254: - Corrected `target_os` check, it was broke for linuxgnu, and m4 syntax
255: was invalid (alon.barlev@gmail.com) Alon:The following change is
256: needed in order to solve two issues: 1. linuxgnu and such target
257: os. 2. You cannot set variable with space before '=' as it tries to
258: execute the variable... 3. Print result of test in case of linux (Sam
259: Roberts)
260: - `--with-link-layer` broken, was using wrong macro name, and didn't
261: include all link types (Sam Roberts)
262: - `ac_cv_c_bigendian` is yes, not "big" (alon.barlev@gmail.com) (Sam Roberts)
263: - `libnet_t`'s fd should be initialized to an invalid value, or
264: `libnet_destroy()` will close stdin. (Sam Roberts)
265: - Alon's use of `AC_CHECK_HEADERS` fails to detect headers. Reverted
266: part of 57acd56f09158decb69f301e7547ce8cde6ac63f (Sam Roberts)
267: - With `link_none`, the link apis were failing with not error
268: message. (Sam Roberts)
269: - man doc makefile wasn't correctly referring to the srcdir
270: (alon.barlev@gmail.com) (Sam Roberts)
271: - autotools patches for cross compiling and seperate builddir
272: (alon.barlev@gmail.com) (Sam Roberts)
273: - html doc makefile wasn't correctly referring to the srcdir
274: (alon.barlev@gmail.com) (Sam Roberts)
275: - `libnet_build_tcp()` was not returning the ptag. (Sam Roberts)
276: - Packet boundaries are now passed to `_do_checksum()`, so it can
277: validate its input. Hopefully, this will end the recurring
278: segmentation faults due to buffer overruns. (Sam Roberts)
279: - TCP building is triggering memory overwrites; closer examination shows
280: the link list manipulation to be wrong, and the checksumming approach
281: to be incapable of working. I reworked code to simplify and clarify
282: how it works currently, in preparation to fixing it. (Sam Roberts)
283: - Null the pointer in the about-to-be-freed structure, not the one on
284: the stack. (Sam Roberts)
285: - libnet_pblock_insert_before() didn't remove ptag2 from old location (Sam Roberts)
286: - Declared many constant arguments as const, const-correct code spews
287: warnings when built against libnet. (Sam Roberts)
288: - Include pcap DLT_ types from correct header, was using an internal one
289: before. (Sam Roberts)
290: - Declared many constant arguments as const, const-correct code spews
291: warnings when built against libnet. (Sam Roberts)
292: - `libnet_clear_packet()` wasn't clearing all packet context. (Sam Roberts)
293: - Add `libnet_dll.c` as extra, so its there for win32, and build
294: `libnet_link.c` (Sam Roberts)
295: - This file wasn't being built, and needed to include bpf to build. (Sam Roberts)
296: - Forgot to make device a const string here, too. (Sam Roberts)
297: - make string argument constant (Sam Roberts)
298: - only ignore Makefile in `libnet/` (Sam Roberts)
299: - Replace `u_intX_t` with C99 `uintX_t`. (Thomas Habets)
300: - `pclose()` following `popen()`, not `fclose()` (Thomas Habets)
301: - snoof & dlpi: don't free on `libnet_link_close()` (Thomas Habets)
302: - The non-standard types are no longer used. (Sam Roberts)
303: - `/sw/..` path doesn't always exist (Sam Roberts)
304: - `src/libnet_link_snoop.c`: Only fclose if `f!=NULL (Thomas Habets)
305: - rc/libnet_link_snoop.c`: fixed snoop-based backend. Works on
306: IRIX. (Thomas Habets)
307: - Pointers not cleared after free could lead to double
308: deallocation. (Sam Roberts)
309: - Update autobuild endianness and unaligned checks. (Mike Frysinger)
310: (Sam Roberts)
311: - Adjust srcdir and builddir so libnet can build out-of-tree (Robin
312: Getz/Mike Frysinger) (Sam Roberts)
313:
314:
315: [v1.1.4][] - 2009-06-09
316: -----------------------
317:
318: Release curated by Sam Roberts.
319:
320: ### Changes
321: - Strip CRLF from files not in win32/ (Robert Scheck)
322:
323: ### Fixes
324: - libnet was using `HAVE_CONFIG_H` in a public header to deal with
325: platform types. https://bugzilla.redhat.com/show_bug.cgi?id=501633
326: - Patch to `libnet.h.in` for compilation on HURD (David Paleino)
327:
328:
329: [v1.1.3][] - 2009-05-11
330: -----------------------
331:
332: Merged 1.1.3 release candidate from packet factory, 1.1.2, debian
333: patches, and my own fixes, including bugs causing memory corruption.
334:
335: Release curated by Sam Roberts.
336:
337: ### Changes
338: - Convert from latin-1 to utf-8, from Robert Scheck. (Sam Roberts)
339: - Removed CVS crud, again. (Sam Roberts)
340: - Applied autotools cleanup patch from Stefanos. (Sam Roberts)
341: - Applied patch from Stefanos to remove the autotools ephemera that leaked
342: back in. (Sam Roberts)
343: - Updated .so revision to be one backwards compatible interface after
344: 1.1.2.1-fork's. (Sam Roberts)
345: - merged autogen.sh from 1.1.3, now ltmain.sh comes from autogen.sh (Sam
346: Roberts)
347: - Update .so version to be one src change past the last debian release.
348: Debian patches to v1.1.2.1 used 4:0:3, in error, so we use 5:0:4, as per
349: the rules. See Makefile.am comments for reference. (Sam Roberts)
350: - autotools merged from v1.1.3 to v1.1.2 (Sam Roberts)
351: - Remove autotools. And some garbage local files that should not have been
352: in upstream tarball. (Sam Roberts)
353: - Removed object files and cvs conflict residue contained in original
354: package. (Sam Roberts)
355: - doxygen configuration updated, html seems fine - I don't know about the
356: man pages. (Sam Roberts)
357: - strip CVS subdirectories from upstream package (Sam Roberts)
358: - Added a `libnet_version()` function
359: - Internals:
360: - added a payload builder macro
361: - Added an HSRP builder
362: - Added `AC_PREREQ(2.50)` to `configure.in` to come correct
363: - Added a libnet UDP header prototype. We need to add an entire exported
364: interface for the sole purpose of casting captured packets, this will
365: presumably be a part of the pcap integration.
366: - Added `libnet_adv_write_raw_ipv4()`
367: - Updated the autoconf/automake stuff to be up to date with the latest
368: versions. We now use libtool.
369: - Changed all empty function prototypes to contain the void keyword
370: - Removed all C++ style comments
371: - Removed the configure.in check for `strerror()`
372:
373: ### Fixes
374: - Fixed various errors, including memory corruption, when IPv4 options
375: are modified. (Sam Roberts)
376: - Fixed doxygen errors and warnings, and added a deveoper script to
377: prepare libnet. (Sam Roberts)
378: - Patches from Stefanos. (Sam Roberts)
379: - Fix for debian bug 418975, IPv6 wasn't updating `ip_offset`. See
380: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=418975 and sample
381: `test_ipv6_icmpv4.c` for more info and reproduction. (Sam Roberts)
382: - 802.1Q and 802.1X header documentation was incorrectly using `/** /**`
383: is reserved for doxygen documentation comments, and they didn't have
384: any. That those packet headers, and no others, were marked that way
385: was causing man pages to be generated for them, incomplete man pages
386: that then were being hacked by debian patches 02- and 03-. (Sam
387: Roberts)
388: - Bug fixes and reproduction code for `ip_offset` accounting problem in
389: `libnet_build_ipv4()` (Sam Roberts)
390: - debian patch 06 attempts to free the wrong pointer, and also leaks memory
391: from the inner loop. (Sam Roberts)
392: - libnet (inconsistently) uses various signed and/or unsigned typedefs
393: instead of char ANSI C uses char for string literals and the standard
394: library, so this generates many warnings. I've fixed a number of the
395: places where types representing null-terminated strings weren't typed
396: correctly. (Sam Roberts)
397: - Merged Debian fixes:
398: - 09-fix_hurd-i386_build.patch from debian source package See
399: http://packages.debian.org/source/sid/libnet (Sam Roberts)
400: - 08-fix_libnet_checksum.c.patch from debian source package See
401: http://packages.debian.org/source/sid/libnet (Sam Roberts)
402: - 07-add_libnet-cq-end-loop.patch from debian source package See
403: http://packages.debian.org/source/sid/libnet (Sam Roberts)
404: - 06-fix_libnet_pblock_coalesce_leak.patch from debian source package See
405: http://packages.debian.org/source/sid/libnet (Sam Roberts)
406: - 04-fix_libnet_build_ntp.patch from debian source package See
407: http://packages.debian.org/source/sid/libnet (Sam Roberts)
408: - 03-fix_libnet_802_1x_hdr.3.patch from debian source package See
409: http://packages.debian.org/source/sid/libnet (Sam Roberts)
410: - 02-fix_libnet_802_1q_hdr.3.patch See
411: http://packages.debian.org/source/sid/libnet (Sam Roberts)
412: - 01-fix_libnet-functions.h.3.patch from debian source package See
413: http://packages.debian.org/source/sid/libnet (Sam Roberts)
414: - Fixed a bug in `libnet_build_ntp()` where two arguments werent used
415: due to a typo
416: - Fixed a bug ln `libnet_name2addr4()` in which it didnt call hstrerror
417: - Fixed a memory leak in `libnet_if_addr.c`
418: - Fixed the `cdp.c` sample code
419: - Fixed the checksum function
420: - Fixed a signed/unsigned comparison warning in the
421: `LIBNET_DO_PAYLOAD()` macro
422:
423:
424: [UNRELEASED]: https://github.com/libnet/libnet/compare/v1.2...HEAD
425: [v1.2]: https://github.com/libnet/libnet/compare/v1.1.6...v1.2
426: [v1.1.6]: https://github.com/libnet/libnet/compare/v1.1.5...v1.1.6
427: [v1.1.5]: https://github.com/libnet/libnet/compare/v1.1.4...v1.1.5
428: [v1.1.4]: https://github.com/libnet/libnet/compare/v1.1.3...v1.1.4
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>