Outsource creation of random MAC address to a new function create_random_mac.
[mausezahn.git] / ChangeLog
blobea946913b310e88ee796ec6eaddb34a486985676
1 version 0.40
2 ============
3 2010-07-07
5 Important bugfixes and some interesting new features:
7 - Configured packets can now be grouped to 'packet sequences', optionally with
8   additional delays between each packet chain. Use the 'sequence' command to
9   enter the sequence configuration mode. Only in interactive mode.
10 - IP auto-fragmentation is now supported in interactive mode. For every IP-based
11   packet you can configure a 'fragment-size' and optionally a 'fragment-
12   overlap'. 
13 - Direct mode, jitter measurements: Now uses consistently the ssrc option to
14   distinguish different RTP streams. 
15 - Corrected PVST+ spanning tree packets in both direct and interactive mode
16   (and exhaustively tested). 
17 - Direct mode: Loose Source Route option works now correctly (tested it in
18   Cisco network).
19 - Interactice mode: 'start' command has been renamed to 'run'. Also improved 
20   packet selection with this command, using IDs or names. Also sequences can
21   be started that way.
22 - Lots of bugfixes, more and less critical.
26 version 0.39
27 ============
28 2010-03-07
30 This is basically a stable version with a few more features. Everybody should
31 use only this version and not one of the previous!
33 - Fixed 100% CPU-consumption bug, occurring when Mausezahn is used in
34   interactive mode or RTP-measurement mode and the system has a recent
35   libpcap-dev library.
36 - Added RTP support in MOPS.
37 - Improved RTP measurement mode (more efficient, some bugs fixed, internally
38   nanosecond resolution for future and hi-end machines).
39 - Fixed sporadic clean-up bugs (NULL-pointer verification).
40 - Updated man pages.
43 version 0.38
44 ============
45 2009-12-24
47 Mausezahn now supports a multi-threaded mode with Cisco-style command line. 
48 Try e. g. "mz -x 99" and telnet to port 99. This mode utilizes a new protocol
49 and packet management framework called MOPS (Mausezahn's Own Packet System).
50 From now on all new features are added to MOPS. 
52 This is a X-mas release and should be considered beta (although the legacy
53 part should be much more stable and cleaner than the version 0.34.9 and the
54 new MOPS part has been already tested somewhat...). PLEASE send be bug
55 reports! 
57 Known bugs:
59 Due to a libpcap-problem (I assume) Mausezahn runs quite unstable
60 under Ubuntu 9.10 (100% CPU consumption in MOPS mode, segfaults upon
61 termination, unbounded numbers in jitter measurement mode...). Interestingly
62 no problems when running under Debian 5.0 or Ubuntu 8.04. 
64 Changelog: (only the most important)
66 - Added basic support for IGMP (v1, v2), querier and client mode (currently
67   only TX, no RX). (MOPS)
68 - Added basic LLDP support (MOPS). Also supports 'bad' TLV creation.
69 - Multi-device support (MOPS).
70 - Support for nanosecond inter-packet delays (MOPS). The CLI now allows to 
71   configure inter-packet delay in units hour, min, sec, msec, usec, and nsec.
72 - Support for greater transmission intervals.
73 - FIXED simulation mode; -V is now only the extended verbose mode and the new
74   switch -S enables the simulation mode (i. e. nothing is sent).
75 - Support for automatic L2-multicast addresses when L3 address is multicast
76   (MOPS).
77 - Added 'launch' commands for easier handling of usual tasks. (Currently only
78   synflood and BPDU).
79 - Added ARP observation service; this can be also used to detect malicious ARP
80   tricks on the LAN, e. g. ARP cache poisoning attacks.
81 - Improved IP range configuration in legacy code.
82 - Support for independent measurements of concurrent RTP streams (as part
83   of legacy code). Now each RTP stream can be assigned an arbitrary ID.
84   This solution is easier to handle (than IP-based) an NAT-independent.
85 - Added -r option for randomized interpacket delay.
86 - Prettier rtp measurement outputs via 'bar' (default) and 'txt' commands.
87 - More precise RTP jitter measurements now.
88 - Added 'bar' and 'txt' option for rtp jitter measurements.
89 - Migrated BPDU to mops.
90 - The -t option (protocol type) is now case insensitive for subsequent
91   protocol commands. 
92 - Support for central mausezahn configuration file (/etc/mausezahn/mz.cfg)
93   containing username, password, enable, etc. In case the config file is
94   not present Mausezahn uses default credentials (user: mz, password: mz,
95   enable: mops).
96 - Better cleanup when aborting; fixed clean_up function to also clean-up 
97   mops list
98 - Legacy code: Protocol command string is now case insensitive.
99 - Fixed str2hex function (potential stack smashing threat)
104 version 0.37
105 ============
106 (not officially released)
108 - Command 'clear all' now removes all packets except a plain init packet
109 - Added command 'clear packet' to remove a specific packet
110 - Added command 'reset packet' to re-initialize all data of a MOPS entry
111 - Changed mops id to u_int32_t
112 - Added 'load' command to load and run a config file 
113 - Added 'launch' command to easily start predefined packet processes
114 - #defined MZ_DEFAULT_CONFIG_PATH "/etc/mausezahn/" which is now the default 
115   location for the global config file (with passwords and other things)
116 - #defined MZ_DEFAULT_LOG_PATH "/var/log/mausezahn/" which is now the default
117   location for any dynamically created files such as logs and packet captures. 
118 - Fixed limits check for strtoul and strtoull in str2int (etc) in tools.c.
121 version 0.36
122 ============
123 (not officially released)
125 - Added lots of new commands compared with version 0.35. (Too much to list here)
126 - Changed MOPS architecture from array to doubly linked list. (Code release
127   'Cyanistes caeruleus' - all mops versions will be named after cute birds)
128 - Multi-threaded packet generation.
129 - Added full support for 802.1Q and MPLS (arbitrary number of tags)
130 - Migrated ARP, IP (no options), UDP, and TCP (stateless) to MOPS
131   
133 version 0.35 
134 ============
135 (not officially released)
137 - Added interactive (Cisco-style) commandline interface: Start Mausezahn with
138   the -x option (optionally specify port number, default is 25542) and then
139   Mausezahn accepts incoming Telnet connections. Currently this CLI should be
140   considered experimental.
141 - Allow arbitrary (user-defined) variable fields within frames (multi-precision
142   counters).
143 - Fixed automatic device detection bugs if vmware interfaces are present. Also
144   a bug that prevents choosing the loopback interface on some systems has been
145   fixed.
146 - Ascii payloads can now be specified in a file which is specified by the new
147   option-f <filename>.
148 - Hexadecimal payloads can no be specified in a file which is specified by the
149   new option -F <filename>.
150 - To improve usage consistency, added 'help' argument also for the 802.1Q
151   option, that is, also  '-Q help' is now possible (as with many other options). 
155 version 0.34.7
156 ==============
157 2009-07-27
159 - RTP packet drop count and disorder count (the number of permutations
160   needed to regain the correct sequence) are not only printed on the 
161   CLI but also in the 9th and 10th columns of the log file.
162 - Added RTP jitter estimation as specified in RFC3550 (smoothed mean deviation). 
163   This value is printed on the CLI and in the 5th column of the rtp log-file.
164 - Fixed -V option with raw layer-2 frames (simulation mode).
165 - Fixed padding (-p) option (segfault when number too big)
166 - Fixed some potential stack overflow issues (thanks Vivek!)
169 version 0.34.6
170 ==============
171 2008-12-10
173 - Added the IP arguments df (don't fragment), mf (more fragments), and rf
174   (reserved flag). This makes it easier to build fragmented packets.
175   
177 version 0.34.5
178 ==============
179 2008-10-30
181 - Added RTP packet drop count and disorder count (the number of permutations
182   needed to regain the correct sequence). These values are printed on the 
183   CLI.
184 - Fixed usage of ranges even when no payload is specified; previously Mausezahn
185   had problems with that; error messages include:
186    a)  mz/update_DPORT: Can't build TCP header: libnet_build_tcp(): payload
187        inconsistency
188    b)  mz/update_IP_DA: IP address manipulation failed!
189   or similar.
190 - Updated the INSTALL file.
194 version 0.34.1
195 ==============
196 2008-10-08
198 - Mausezahn now checks system clock precision and chooses monotonic nanosecond
199   clock if available or alternative clock otherwise. No nasty warning message 
200   should occur anymore.
204 version 0.34
205 ============
206 2008-09-24
208 - Replaced gettimeofday() with the clock_gettime(CLOCK_MONOTONIC) which does
209   not jump when the system syncs via NTP (otherwise artefacts would occur in
210   long-term jitter-measurement data; additionally nanosecond precision is 
211   (internally) supported, although it is not really required).
212 - Added IP options 'Loose Source Route' and 'Strict Source Route', as well as
213   the possibility to specify any IP option as hexadecimal string.
214 - IP packets can now be sent without any payload (previously at least a single
215   payload byte has been added)
216 - Added -V option (extended verbose) which prints only frame details but does
217   not put anything on the wire.
218 - Added icmp option echo request (ping), echo reply (default), and unreachable.
219   Also made some clean-ups here.
222 version 0.33.2
223 ==============
224 2008-09-11
226 - RTP packets are now (at least more) standard conform. Now Mausezahn per
227   default simulates a G.711 codec with 20 msec inter-packet delay and 160 bytes 
228   payload. The usage of the timestamps should be correct now so that other
229   applications can also interprete Mausezahn's RTP header.
230 - Added 8 byte padding to BPDU packets (some switches rejected the packet; now
231   whole frame is always 60 bytes long (added 8 zero bytes or 4 for PVST+,
232   respectively).
233 - Fixed PVST+ packet format. Should be correct now; can be sent with (default)
234   or without 802.1Q tag.
235 - Better help text for BPDU mode.
236 - Added 'pvst' as additional keyword for specification of MAC addresses
239 version 0.33.1
240 ==============
241 2008-09-04
243 - Upon startup Mausezahn checks if it has root privileges (getuid, geteuid)
244 - 'Cleaned' the files README, INSTALL, and AUTHORS, fixed some missing information
245   and applied a line wrap at 80 chars to comply with packaging requirements.
246 - Also made a 80-char line-wrap in the source code's license statement.
249 version 0.33 
250 ============
251 2008-08-20
253 - Clearly defined GPLv2 as license.
254 - Support for the Syslog protocol.
255 - Inclusion of cmake for easier build process.
256 - Some minor bugfixes, e. g. now "mz -t help" works (before you had to enter 
257   "mz eth0 -t help").
259 Thanks to Cristian Greco, Steve Grubb, Rauno Tuul, and Heinz Wiesinger for help
260 and feedback.
265 ================================================================================
267 Since I was too lazy to maintain a changelog before version 0.32 let
268 me summarize at least all features and possible bugs at this point:
270 *) Full support for the following protocols:
272     - ARP
273     - BPDU (PVST+)
274     - CDP
275     - UDP
276     - TCP (only transmission, no state machine so far)
277     - DNS 
278     
279 *) Limited support:
281     - ICMP (started to implement ICMP redirects, did not had time for
282             tests so far; almost sure buggy)
283             
284     - RTP  (only needed for jitter measurements, the timestamps used
285             are quite proprietary (sec and msec separately))
287 *) Other features
289     - can send arbitrary byte sequences longer or equal 15 bytes
290     - randomized MAC and/or IP addresses
291     - ranges for IP addresses, port numbers, TCP sequence numbers
292     - 802.1Q VLAN tags (arbitrary depth) plus CoS values
293     - MPLS tags (arbitrary depth) plus CoS and TTL values
294     - automatic padding if desired
295     - inter-packet delays in usec (but can also be specified in msec
296       and sec)
297     - text or hex payloads 
298     - RTP receiving mode to measure jitter with high precision (usec
299       is base, plan to measure true precision empirically, I guess
300       it is at least below 1 msec)
302 *) Possible bugs
304     - Limited checks for wrong arguments and options (however, I
305       tried to avoid buffer overflows, mostly)
306       
307     - ICMP packets (redirects) may be incorrect (I had no use for
308       those so far)