Batman-adv 2015.2 released
the B.A.T.M.A.N. team is excited to announce the release of batman-adv 2015.2, the December 2015 update to batman-adv, batctl and alfred. The batman-adv kernel module has undergone significant polishing in this cycle to deliver stability and reliability. As the kernel module always depends on the Linux kernel it is compiled against, it does not make sense to provide binaries on our website. As usual, you will find the signed tarballs in our download section:
as well as prepackaged binaries in your distribution.
Thanks to all people sending in patches:
- Antonio Quartulli <firstname.lastname@example.org>
- Linus Lüssing <email@example.com>
- Marek Lindner <firstname.lastname@example.org>
- Phil Sutter <email@example.com>
- Simon Wunderlich <firstname.lastname@example.org>
- Sven Eckelmann <email@example.com>
- Ulrich Ölmann <firstname.lastname@example.org>
and to all those that supported us with good advice or rigorous testing:
- Alessandro Bolletta <email@example.com>
- Alfons Name <AlfonsName@web.de>
- Florian Steinel <firstname.lastname@example.org>
- Markus Pargmann <email@example.com>
While operating a mesh network with various nodes being configured with different VLANs, the translation table (TT) could enter an inconsistent state, leading to payload traffic never arriving at the destination. The TT consistency check was extended to no longer assume an identical VLAN configuration on every node in the network. Another corner case is triggered when a non-mesh client is detected via listening to payload traffic ('speedy join') and then roaming to a nearby mesh node before the previous mesh node ever officially announced the presence of said non-mesh client. Because this case also could lead to payload traffic being sent to limbo, the internal non-mesh client TT state is cleared before changing from 'speedy join' client to officially announced client. The memory footprint was reduced by switching to single linked list header for TT operations.
The distributed ARP table (DAT) received a fix preventing invalid stack access when searching for eligible DAT candidates causing a kernel crash. Also, DAT cache replies were able to fool the 'speedy join' mechanism of other mesh participants, as these replies were interpreted as non-mesh client payload data. This confusion is prevented with a proper packet type check.
Under specific circumstances the bridge loop avoidance (BLA) was able to provoke a 'network storm' of constantly repeating BLA claim tables synchronize requests due to missing locking and multiple writes to the same CRC checksum when adding/removing entries. This has been fixed by adding proper locking to the CRC checksum calculation.
The gateway list entry purging was at the origin of long delays on kernel module unload. The artificially introduced delay through a 'deleted' attribute has been replaced with modern RCU-style locking and reference counting. The gateway bandwidth calculation on 32Bit CPU systems could lead to an integer overflow which has been fixed. If parsing the provided gateway bandwidth is unsuccessful an error code is now communicated back to user space.
To avoid packet transmission issues when hardif/lower devices encapsulate packets without having enough room for the encapsulation header the required header size is updated each time a hardif/lower device is added and/or deleted. Memory access on forced kernel module unload was re-ordered to prevent a system crash. The code also benefited from the usual set of code beautifications and checkpatch cleanups.
The batctl utility was enriched with a 'routing algorithm' option, allowing to display all configured batman-adv mesh interfaces with their respective mesh protocol information, as well as setting the mesh protocol for the next mesh interface to be created.
In addition to fixing a few typos, the README now correctly mentions the libpcap dependency.
The B.A.T.M.A.N. team