-----Etherate 1.18 2018-06

[MINOR] Fixed issue #51; Max jitter value isn't max jitter in results list



-----Etherate 1.17 2018-04

[MINOR] Fixed issue #50; Frame order detection is wrong

[FEATURE] Added enhancement #49; Update compile checks

[MAJOR] Fixed issue #48; Rx loop for speed test is missing pointer reference

[MAJOR] Fixed issue #47; Unsafe reference

[MAJOR] Fixed issue #46; "Message too long" when running test

[MINOR] Fixed issue #44; The average FPS and max FPS are always the same

[FEATURE] Added enhancement #43; Replace sendto() with send()

[MINOR] Fixed issue #42; -h option says "on the wire"

[MINOR] Fixed issue #39; -l option requires sudo

[MINOR] Fixed issue #36; Kernel version checks on CentOS

[MINOR] Fixed issue #9; fail to compile on AlpineLinux

[MINOR] Various calloc() calls were missing a return value check

[MINOR] Correct some typos in the code and more cody tidying



-----Etherate 1.16 2018-01

[FEATURE] Added enhancement #38; Remove -fstack-protector-all compile flag

[FEATURE] Added enhancement #37; Add packet pacing feature

[MINOR] Correct some typos in the code and more cody tidying



-----Etherate 1.15 2017-10

[FEATURE] Added enhancement #35; Add test stats output when stopping with CTRL+C

[MINOR] Fixed issue #34; MTU test frame count

[MINOR] Fixed issue #27; VLAN tag not included frame size and rate limit

[MINOR] Fixed issue #26; Rx host shows Rx rate lower that Tx host's Tx rate

[MINOR] Fixed issue #24; Doubling of stats on Rx host

[MINOR] Code tidy up with typos and styling



-----Etherate 1.14 2017-09

[MAJOR] Fixed issue 22; Test not starting



-----Etherate 0.13 Beta 2017-07

[FEATURE] Added enhancement #20; Test if interface is IFF_UP && IFF_RUNNING

[MAJOR] Fixed issue #19; Quality Tests are stil very buggy

[MINOR] Fixed issue #23; Regression bug with speed limit display on Rx host

[MINOR] Fixed issue #11; Uneeded +1 with result print on latency_test()

[MINOR] Updated documentation regarding usage and troubleshooting

[MINOR] Cody tidy up with perrors, more work to standardise lower case naming of variables, typos etc



-----Etherate 0.12 Beta 2017-05

[FEATURE] Added enhancement #16; PACKET_QDISC_BYPASS

[FEATURE] Added enhancement #13; Remove the htonll() and ntohll() functions

[FEATURE] Added enhancement #18; Inline the build_tlv() and build_sub_tlv() functions

[MINOR] Finally finished migrating from C++ to C

[MINOR] Fixed issue #17; Multiple ioctl() calls have no error checking

[MINOR] Fixed issue #15; cli_args() IF_NAME copy error

[MINOR] Fixed issue #14; Make strncpy() zero value safe

[MINOR] Fixed issue #12; Function prototype is missing parameter setup_frame()

[MINOR] Fixed error with double close() on socket file descriptor

[MINOR] Fixed missing net/if.h include

[MINOR] Added error check for fclose() in cli_args()

[MINOR] Cody tidy up, started to standardise lower case naming of variables



-----Etherate 0.11 Beta 2017-03

[MAJOR] Fixed issue #5; -Q option not working, 100% frame loss

[MINOR] Fixed issue #8; LeakSanatisor found leak with "-h" and several "return"s

[MINOR] Fixed issue #7; File descriptors left open in list_interfaces()

[MINOR] Fixed issue #6; Interface selectiom not working by name and list_interfaces() shows the wrong MAC address

[MINOR] Fixed seg fault when missing arguments to -Q, "sudo ./etherate -I 11 -Q -r"

[MINOR] Fixed blocks at exit used for delay_test() not being free()'ed

[MINOR] Tidied exit codes to use EXIT_SUCCCESS/EXIT_FAILURE



-----Etherate 0.10 Beta 2016-09

[FEATURE] Added DEI option for single and double tagged VLANs.

[FEATURE] Added -C option to load a custom frame from file.

[MINOR] The default Ethertype has been changed from 0xABCD as several other applications use this, to 0x3333 which is still unassigned by IANA

[MINOR] The network socket was being declared inside the loop and closed outside, only the last socket was being closed.

[MINOR] Various strict coding issues corrected when compiling with -Wall -ftrapv such as signed/unsigned comparisons, operator behaviour --a vs a-- vs a-=1 etc. Still lots to do to pass "-pedantic".

[MINOR] Syntax passing bug in -L option fixed.

[MINOR] Migrated to uint*_t/int*_t to standardise sizes and standardised return values with ints.

[MINOR] More code cleaning, adding the defaults.cpp file to tidy main().



-----Etherate 0.9 Beta - 2016-04

[FEATURE] Added max and avg frames per second stats.

[MINOR] Added warning and padding for frames less than 46 bytes.

[MINOR] Fixed code, comment and documentation typos.

[MINOR] Migrated from select() to poll() to non-block recvfrom(), faster for unidirectional single flow.



-----Etherate 0.8 Beta - 2016-03

[FEATURE] Added CLI arg -F to set max frames per second limit.

[FEATURE] Set the default Ethertype for the Etherate payload frame to be 0xABCD for easy identification.

[FEATURE] Added -L option to build an MPLS label stack and -E to specify LSR src/dst MAC.

[FEATURE] Added -P option to add pseudowire control word to header stack.

[MAJOR] Fixed issue with delay calculation not waiting and loop exceeding by 1.

[MAJOR] Fixed issue with VLAN tag not being restored after build_headers().

[MINOR] Added MTU check to resolve MTU issues with QinQ.

[MINOR] Fixed uninitialised value for IF_NAME.

[MINOR] Fixed code, comment and documentation typos.

[MINOR] Wrote the initial INSTALL file.



-----Etherate 0.7 Beta - 2015-10-10

[FEATURE] First draft of the link quality test is implemented.

[MINOR] Added a pause on the RX host for the first test frame to come though (so the hosts are testing in sync).

[MINOR] I was a very naughty boy and used a goto, this has now been removed.

[MINOR] Fixed code, comment and documentation typos.



-----Etherate 0.6 Beta - 2015-09-13

[MAJOR] Rewrite to structs and functions to improve efficiency (major because this was 10G performance impacting).

[MAJOR] Moved to a TLV based header (major because this was 10G performance impacting).

[MAJOR] Added htonll() and ntohll() function (major because this was 10G performance impacting).

[MINOR] Fixed minor memory leaks.

[MINOR] Removed most of the nasty global variables.

[MINOR] Fixed code, comment and documentation typos.

[MINOR] General code tidy up to improve readability.

[MINOR] Fixed rounding and display errors when using -m and -M.



-----Etherarte 0.5 Beta - 2015-07-11

[MINOR] Fixed MTU sweeps that are bigger than interface max MTU size.

[MINOR] Add bigger delay averages to account for interrupt coalescing.



-----Etherarte 0.4 Alpha - 2014-11-04

[FEATURE] Code for single VLAN tagging an priority codes is working (double tag/QinQ needs further research).

[FEATURE] Both hosts display the number of non-test frames received during a test.

[FEATURE] Code for interface selection by index and by name is now working.

[FEATURE] Added rate limit in bits per second using -M option (previously just -m for bytes per second).

[FEATURE] Option to transmit without sync is coded, -g will skip strait to transmission.

[FEATURE] Added MTU sweep feature.

[MAJOR] Finalised delay calculation code (calculates mean delay based on 5 samples).

[MINOR] Fixed the interface selection by ID/index.

[MINOR] TX host can receive dying gasp from RX (RX could already receive dying gasp from TX).

[MINOR] Fixed hanging of RX host on recv().

[MINOR] Further clean up of code.

[MINOR] Further clean up of CLI output.

[MINOR] Non test frame receive count is fixed.



-----Etherate 0.3 Alpha - 2014-01-10

[FEATURE] Add code for testing with VLAN tagging, priority codes, QinQ tagging and QinQ priorities, -v 25 -p 3 -q 2025 -o 4.

[MAJOR] Sometimes locking to the wrong interface such as "eth0" even though it was disabled or disconnected and specifically selecting another interface like "wlan0" (for example).

[MAJOR] Promiscuous mode was not entering/exiting properly. Rather than XOR IFF_PROMISC on and off, copy interface flags to ifFlags then OR IFF_PROMISC, then restore the stored ifFlags value. Looks like a problem with ifreq.

[MINOR] Typos in the CLI output.

[MINOR] Further clean up of code.

[MINOR] Standardise changelog tags;
[FEATURE]  == New working feature added to Etherate
[MAJOR]    == Fixed a bug in Etherate code that affects the operations of the program or one of the test modes or test results
[MINOR]    == Fixed a bug that doesn't stop Etherate from running properly like typos, formatting, documentation errata, code tidies



-----Etherate 0.2 Alpha - 2013-06-30

[MAJOR] Added promiscuous mode, frames addressed anything other than FF:FF:FF:FF:FF:FF and the NICs burnt in address wasn't being received but were being sent (e.g. TX wasn't receiving dst==00:04:00:00:00:01).

[MAJOR] Using a custom MAC like 00:00:5E:00:00:02 on the RX host was being overwritten, typo in code. Now both TX and RX can use any MAC.

[MAJOR] Using wrong IANA unassigned MAC, using MAC allocated to Lexmark. Changed to 00:00:5E:00:00:0[1-2].

[MINOR] Typos in the UI/CLI output.

[FEATURE] Added code to check CLI arguments that have two parts like "-i 2", the second option (the value) supplied was casuing Etherate to Seg Fault.



-----Etherate 0.1 Alpha - 2013-03

Code isn't even finished or tested yet. We can send and receive data and measure the speed with basic max speed, frame size and frame count limit options.