Batman-adv 2014.1.0 released
The B.A.T.M.A.N. developers are happy to present batman-adv 2014.1.0, stabilizing the feature-packed 2014.0.0 release while also pushing routing improvements and other smaller features. 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 <email@example.com>
- Linus Lüssing <firstname.lastname@example.org>
- Marek Lindner <email@example.com>
- Simon Wunderlich <firstname.lastname@example.org>
- Stephen Hemminger <email@example.com>
- Sven Eckelmann <firstname.lastname@example.org>
- Ying Xue <email@example.com>
and to all those that supported us with good advice or rigorous testing:
- cmsv <firstname.lastname@example.org>
- Daniel <email@example.com>
- Jan-Philipp Litza <firstname.lastname@example.org>
- Martin Hundebøll <email@example.com>
Special thanks to Russell Senior for his vigorous testing and debugging efforts.
After having accomplished the heavy infrastructure lifting with the previous release, the attention shifted towards batman-adv's core functionality - routing packets - once more. The forwarding mechanism of the mesh protocol messages (OGMs) was revamped to allow applying rules when packets are forwarded from one interface to another. For example, when the same interface is used for sending and receiving, there might be throughput degradation on half-duplex interfaces such as WiFi which is now reflected in the metric. At the same time, packets switching interfaces (incoming interface is not equal to the outgoing one) do not get handicapped, effectively favoring interface switching. To pull all this together, batman-adv now maintains a routing table per interface (plus the default routing table) which essentially allows the kernel module to route traffic based on network wide multi-interface information.
Also new on board is the extended AP isolation, aiming to grant fine-grained isolation control by working with a user specified 'skb mark'. Incoming broadcast packets carrying the specified skb mark are flagged as 'isolated' (translation table flag). Isolated packets received over the mesh are transformed back to an skb with a mark before they are forwarded to the upper layers. There, the packets can be filtered, dropped, etc by netfilter and friends based on the skb mark.
The DHCP packet handling scope was widened to force all DHCP packet types to unicast transmission (with the gateway feature enabled), covering older / unusual DHCP client implementations. Previously, only DHCP discover packets were forwarded as unicast. The MTU overhead calculation did not consider the prepended Ethernet header before setting dev->hard_header_len leading to fragmented packets. Also removed was the 1500 bytes MTU limit on the batX interface by improving the maximum MTU computation. A potential kernel crash on skb reallocation was fixed along numerous problems in the translation table component and a memory leak in the newly introduced TVLV infrastructure code.
The recent switch to the RTNL API was further enriched by replacing the custom RTNL code with the libnl library to reduce maintenance burden and security risks. The batctl Makefile attempts to locate the libnl library by itself as well as tries to determine the compiler options, thereby facilitating the build process.
To monitor the per-interface routing tables, batctl gained the ability to retrieve the routing table of a particular interface (the local routing table is shown per default). Also, the extended AP isolation mark/mask pair can be configured through batctl.
Fixed was a file descriptor leak in the batadv-vis component which is part of the alfred package. Over a longer period time file descriptors were opened and 'lost', leading batadv-vis to eventually hit the open file limit and stop normal operation.
The B.A.T.M.A.N. team