Batman-adv 2015.1 released

Added by Marek Lindner over 3 years ago

August 10, 2015. The B.A.T.M.A.N. team today releases batman-adv 2015.1 focusing on code cleanups, stability and bugfixes. Since no major code changes were introduced upgrading to this version should bear minimal risks. 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.

Important changes

The default settings for enabling Network Coding and the bridge loop avoidance have been changed. If you are using either feature, please verify that your setup still behaves as expected after the upgrade.


Thanks to all people sending in patches:

and to all those that supported us with good advice or rigorous testing:


With this release the source directory structure has been modified to align with the batman-adv directory structure in the Linux kernel. This should facilitate proposing and applying patches based on the code base shipped with Linux kernel. In parallel to this restructuring effort, the compat layer (needed to support older Linux kernel versions) also has been modernized. The single compat include file has been divided into separate header files named after their up-to-date counterparts. Previously needed explicit compat includes could be removed, thus further reducing the difference between the Linux kernel code and the out-of-tree repository.

To make the first time deployment a better experience the default configuration has been changed: Network Coding support has been disabled due to its dependency on WiFi promiscuous mode that not all WiFi chips/drivers support. The bridge loop avoidance mechanism (BLA) has been enabled to prevent accidental bridge loops from being created.

The batman-adv module came with its own Jenkins hash implementation used by all sorts of components like the originator table, the translation table and more. That implementation has been replaced with the in-kernel Jenkins hash which provides better optimized code. The debugfs components aren't compiled into the module anymore when debugfs is not compiled into the kernel. The initialization upon detection of a batman-adv gateway has been fixed as it could cause the kernel to hang on module unload. Various race conditions triggered by concurrent delete events in the translation table code have been fixed as well. Payload broadcast packets scheduled to be forwarded right on batman-adv disable or module onload are now properly purged to prevent memory leaks. With enabled distributed ARP table (DAT) batman-adv might have answered an ARP request for a local client. An additional mac address check prevents confusing switches in the LAN which rely on ARP to learn behind which port the client is located. Quite some effort was spent to improve the overall code readability, cleanups and coding style issues.


To support building batctl in combination with the musl C library the if_ether.h header file is now included from the 'netinet' folder instead of the 'linux' folder because musl does not allow mixing includes from 'netinet' and 'linux' at the same time.


Interfaces with more than one link-local addresses are now supported by alfred binding to specific an interfaces and its link-local EUI64 address. All outgoing alfred packets will be originating from that single address.

The size of the maximum alfred payload was slightly reduced. This ensures that the UDP/IPv6 stack is able to transfer the push data packets between different alfred servers.

Happy routing,

The B.A.T.M.A.N. team