Batman-adv 2016.0 released

Added by Marek Lindner about 8 years ago

January 19th, 2016. Today the B.A.T.M.A.N. team publishes its first release in 2016! This release contains mostly bugfixes, code cleanups and code documentation updates, providing a safe and pleasant update for everyone. 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:

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


A long standing feature request has been addressed by implementing a list of unique single hop neighbors per hard-interface. As this neighbor list is maintained by each routing protocol independently, the necessary protocol abstractions have been put in place. The neighbor list is made available to user space via debugfs. This release also comes with a massive code documentation (kernel doc) update concerning literally every component. Missing symbols were added, obsolete descriptions removed, names and code pointers updated and the style unified. The batman-adv kernel module also gained the ability to react to interface type changes allowing batman-adv to detect when an interface transitions from a supported type to non-supported and vice-versa.

Batman-adv's mutual exclusion mechanism 'read-copy-update' (rcu) to access data structures shared among various threads was re-organized to avoid recursive code paths of rcu delayed memory frees that could bypass safeguards meant to prevent freed memory access. Especially on multi-core systems these recursive rcu calls might have led to random kernel crashes.
The bridge loop avoidance' wait time for broadcast suppression has been increased to 60 seconds, in order to grant the loop avoidance mechanism sufficient time to detect all backbone neighbors even on networks with lossy links. Additionally, batman-adv will clear all internal states and purge data-structures immediately upon bridge loop avoidance deactivation to ensure a clean state, in case the system toggles the bridge loop avoidance activation/deactivation within a few seconds.
Following an interface shut down, batman-adv re-organizes its internal routing structures and - in the process - might copy data to new structures. In that process wrong data can be copied to the new location due to a bogus memory address calculation. This has been fixed.

The regular set of checkpatch cleanups & code refactoring complement this release.


To conveniently retrieve the single hop neighbor table, support to fetch said table from the kernel module was added. Furthermore, typographical errors in the code comments were fixed as well as a bogus length check upon debugfs path assembly.


Typographical errors in the manpage were fixed as well as a bogus length check upon debugfs path assembly.

Happy routing,

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