Version 3.8

06/07/2023 - bumped from gcc -O2 to -O3 optimization flag: https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-O3 bittwist (generator) - added RFC 2544 benchmark data generator and benchmark page - improved actual inter-packet gap replay by using token bucket algorithm for short IPG and self-regulated timer for long IPG

Version 3.7

27/06/2023 bittwist (generator) - 30% speed up when sending large pcap file bittwiste (editor) - added -G option to set fixed or random inter-packet gap in microseconds - added support for CIDR notation when modifying IPv4/IPv6 address - added support for random MAC address

Version 3.6

17/06/2023 - added github repo for source code browsing: https://github.com/ayeowch/bittwist bittwist (generator) - fixed linerate throttling - updated -p option to send packets at set packets per second (pps) - added -t option to set inter-packet gap (this was previously -p option) bittwiste (editor) - added option to edit IPv6 next header - added random number support for id, ttl, proto, next header, hop limit

Version 3.5

16/06/2023 bittwiste (editor) - added option to set uniformly distributed random number (mersenne twister) for tcp/udp source/destination port and tcp sequence/acknowledgment number - added -N flag to duplicate packets from trace file, e.g. -N 100000 to repeat packets from trace file for 100,000 times - added ip6tcp and ip6udp templates

Version 3.4

13/06/2023 bittwiste (editor) - updated -I flag to allow loading trace file from built-in templates

Version 3.3

12/06/2023 bittwiste (editor) - options to edit IPv4/IPv6 packets to allow testing of classification/queuing features of switches/routers, e.g. -T ip -e 3 to indicate congestion to the end hosts -T ip6 -c 16 to classify packet for operation and management of the network -T ip6 -f 0xfffff to set custom flow label

Version 3.2

10/06/2023 - added support for trace files with nanosecond resolution - updated manual pages bittwist (generator) - removed speed (-m) flag; use -p/-r to shape throughput - updated linerate (-r) flag to use token bucket algorithm bittwiste (editor) - added support for IPv6 packets - improved cksum() - expanded test cases

Version 3.1

30/05/2023 - use in-memory trace files when sending packets in loop - fixed integer overflow in stats output - added static code analysis in Makefile (make check) - reformatted source files for C17 standard - added initial python testing framework for Linux systems

Version 3.0

24/05/2023 - Linux distribution: rebuilt with libpcap 1.10.4 - BSD distribution: rebuilt with libpcap 1.10.4 - macOS distribution: rebuilt with libpcap 1.10.4 - Windows distribution: rebuilt with Npcap 1.75 with Npcap SDK 1.13 - updated homepage url: https://bittwist.sourceforge.io

Version 2.0

21/04/2012 - switched to "struct pcap_sf_pkthdr" to support 64-bit platforms - rebuilt with libpcap 1.2.1 - added Mac OS X distribution (author's primary platform) - BSD distribution no longer maintained - ended Bit-Twist Web Edition BETA - revised copyright information and manpages bittwistb (bridge) - no longer maintained on all platforms

Version 1.1

12/12/2009 - rebuilt with libpcap 1.0.0 - revised copyright information and manpages - removed Eclipse dependency; requires only Cygwin environment for Windows development - release of bittwist(w), Bit-Twist Web Edition BETA, http://twitter.com/bittwistw

Version 1.0

26/10/2007 - revised AUTHORS, INSTALL, copyright information and manpages - unified source files for all supported platforms - moved Windows development to Eclipse IDE for C/C++ Developers + Cygwin environment bittwist (generator) - increased max. packet throughput from 1Gbps to 10Gbps (option -r) bittwiste (editor) - corrected usage of strptime() - use comma (,) instead of slash (/) as delimiter for all replace options - added a feature request; replace a specific MAC address with a new MAC address for eth, arp - added a feature request; replace a specific IP address with a new IP address for arp

Version 0.80

23/10/2006 bittwist (generator) - improved performance; use single buffer for all packet data, calculate linerate_interval only when necessary bittwiste (editor) - corrected several malloc related bugs - added a feature request; replace the linktype stored in the pcap file header, e.g. to replace raw IP linktype to Ethernet linktype, bittwiste -I rawip.pcap -O rawip.1.pcap -M 1 - added a feature request; support for writing packets within a specific timeframe only, e.g. bittwist -I trace.pcap -O trace.1.pcap -S 22/10/2006,21:47:35-24/10/2006,13:16:05

Version 0.74

17/09/2006 bittwiste (editor) - minor bug correction - added a feature request; delete a specific byte offset from a packet, bittwiste -I trace.pcap -O trace.1.pcap -D 1-14 - added a feature request; replace a specific IP address with a new IP address, e.g. to replace source IP address 192.168.0.1 with 192.168.1.1, bittwiste -I ip.pcap -O ip.1.pcap -T ip -s 192.168.0.1:192.168.1.1

Version 0.73

28/07/2006 - minor correction in Makefile - merged 180506-0.72-def.h-patch-1 (patch for OpenBSD) into BSD distribution bittwiste (editor) - minor bug correction - added a feature request; replace a specific port number with a new port number, e.g. to replace destination port 1066 with 1067, bittwiste -I tcp.pcap -O tcp.1.pcap -T tcp -d 1066:1067 misc. - Bit-Twist 0.72 for Windows has been released prior to this update

Version 0.72

29/04/2006 - removed definition of in_addr_t in def.h for BSD distribution bittwistb (bridge) - minor bug correction

Version 0.71

28/04/2006 bittwist (generator) - removed maths.h which was previously required for round(), ROUND() is now defined in def.h - minor bug correction bittwistb (bridge) - fixed gethwaddr(), previous version does not work under Linux

Version 0.7

11/04/2006 bittwistb (bridge) - removed packet duplication check (based on resource hog MD5 hashing); this was initially required due to a faulty logic which causes the bridge to check and forward packets that are already departing from an interface - added explicit check for broadcast and multicast packets - added hash entry timeout check bittwiste (editor) - option -R range can take a single value, e.g. -R 10 instead of previous requirement of -R 10-10 to save only the 10th packet - added support for checksum correction for payload which covers ICMP, TCP, or UDP header and data - in def.h, #define IP_FO_MAX, 8191 changed to 7770 misc. - created manpages for bittwist, bittwistb, bittwiste - public release: http://bittwist.sourceforge.net

Version 0.61

04/04/2006 bittwistb (bridge) - minor correction: when "forward to all", we are not suppose to forward a packet back into the same port where we received it

Version 0.6

03/04/2006 bittwistb (bridge) - added pcap based program to bridge 2 or more LAN segments bittwiste (editor) - added proper handling for fragmented packets - skip checksum calculation for fragmented packets - option -R range is working now

Version 0.5

17/03/2006 bittwist (generator) - removed option -e timeout presented in Version 0.4 since its usage is limited and we can do better by using the OS ping program - added option -c count to send packets up to count bittwiste (editor) - full rewrite - added options to edit most fields in Ethernet, ARP, IP, ICMP, TCP and UDP header - added option -X payload to support addition of payload from standard input - added option -L layer to support writing up to specific layer only - added option -R range to support writing of specific packets only

Version 0.4

10/03/2006 - redundant definitions in bittwist.h and bittwiste.h moved to def.h - change of datatype, e.g. unsigned char is now u_char bittwist (generator) - added option -e timeout to allow sending packet as ping packet and check for host response (currently limited to ICMP echo only, expect support for TCP in later version) bittwiste (editor) - added option -c to disable/enable checksum correction

Version 0.3

25/02/2006 bittwist (generator) - added option -r linerate to limit packet throughput at the specified line rate (1 -> 1000Mbps) - explicit close for pcap descriptor and file pointer removed from cleanup() - more details in info() bittwiste (editor) - options to change source/destination MAC, source/destination IP, TTL, source/destination port, enable/disable checksum correction for IP, ICMP, TCP and UDP packets

Version 0.2

21/02/2006 - removes libnet dependency - requires libpcap 0.9.4 (and above) - options: -d, -vv, -i interface, -s len, -l loop, -m speed, -p sleep, -h - -v for timestamp and -vv to include hex data - user specified interval in seconds through -p option - interval multiplier through -m option - packet length: send captured length / on wire length / user specified length (14 to 1514 bytes) through option -s - SIGINT signal handling

Version 0.1

25/01/2006 - skeleton program, uses libpcap 0.9.4 and libnet 1.1.3-RC-01 - options: -D, -V, -i interface, -l loop - tested only on FreeBSD 6.0-STABLE