The state of slave interfaces are handled differently depending on whether
the interface is up or not. All active interfaces (IFF_UP) will transmit
OGMs. But for B.A.T.M.A.N. IV, also non-active interfaces are scheduling
(low TTL) OGMs on active interfaces. The code which setups and schedules
the OGMs must therefore already be called when the interfaces gets added as
slave interface and the transmit function must then check whether it has to
send out the OGM or not on the specific slave interface.
But v2016.3 moved the setup code from the enable function to the activate
function. The latter is called either when the added slave was already up
when batadv_hardif_enable_interface processed the new interface or when a
NETDEV_UP event was received for this slave interfac. As result, each
NETDEV_UP would schedule a new OGM worker for the interface and thus OGMs
would be send a lot more than expected.
Fixes: 549909f89d ("batman-adv: upgrade package to latest release 2016.3")
Reported-by: Linus Lüssing <linus.luessing@c0d3.blue>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* fix uninit-value in batadv_interface_tx()
* Reduce claim hash refcnt only for removed entry
* Reduce tt_local hash refcnt only for removed entry
* Reduce tt_global hash refcnt only for removed entry
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* Fix skbuff rcsum on packet reroute
* update data pointers after skb_cow()
* fix header size check in batadv_dbg_arp()
* Fix multicast packet loss with a single WANT_ALL_IPV4/6 flag
* fix multicast-via-unicast transmission with AP isolation
* fix packet loss for broadcasted DHCP packets to a server
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* fix packet checksum in receive path
* invalidate checksum on fragment reassembly
* Ignore invalid batadv_iv_gw during netlink send
* Ignore invalid batadv_v_gw during netlink send
* Fix netlink dumping of BLA claims
* Fix netlink dumping of BLA backbones
* Fix internal interface indices types
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* Fix lock for ogm cnt access in batadv_iv_ogm_calc_tq
* Fix check of retrieved orig_gw in batadv_v_gw_is_eligible
* Always initialize fragment header priority
* Avoid spurious warnings from bat_v neigh_cmp implementation
* fix TT sync flag inconsistencies
* Accept only filled wifi station info
* Use default throughput value on cfg80211 error
* do not add loop detection mac addresses to global tt
* Fix rx packet/bytes stats on local ARP reply
* handle race condition for claims between gateways
* fix memory leak when dropping packet from other gateway
* drop unicast packets from other backbone gw
* prevent duplication of ARP replies when DAT is used
* prevent multiple ARP replies sent by gateways if dat enabled
* Initialize gw sel_class via batadv_algo
* Keep fragments equally sized
* decrease maximum fragment size
* don't add loop detect macs to TT
* Treat NET_XMIT_CN as transmit successfully
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* batman-adv: Fix double free during fragment merge error
* batman-adv: Fix transmission of final, 16th fragment
Signed-off-by: Sven Eckelmann <sven@narfation.org>
There is no vis_mode in the batman-adv kernel module since batman-adv
2014.0.0. So don't expose such a setting in uci.
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
The new setting for aggregated_ogms was read from the correct config key.
But the setting was applied to the wrong file. Also the value to set was
not read from the correct variable.
Reported-by: Edward Beech <initialed85@gmail.com>
Fixes: 2d654c0af1 ("batman-adv: upgrade package to latest release 2012.0.0")
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
The batman-adv Makefile set a PKG_BUILD_DIR outside of KERNEL_BUILD_DIR;
this could lead to batman-adv not being rebuilt when switching targets and
thus kernel configurations. This resulted in ABI mismatches and
occasionally broke the build with messages like the following:
Package kmod-batman-adv is missing dependencies for the following libraries:
crc16.ko
Instead of setting a better PKG_BUILD_DIR ourselves, we can just remove
the explicit PKG_BUILD_DIR definition and include kernel.mk before
package.mk to get the default definition used by other kernel module
packages.
Reported-by: David Lutz <kpanic@hirnduenger.de>
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* support latest kernels (3.2 - 4.10)
* change installation path back to $INSTALL_MOD_DIR/updates/net/batman-adv
* add simple (re)broadcast avoidance
* reduce multicast TT and TVLV update delays under B.A.T.M.A.N. V
* support B.A.T.M.A.N. V throughput detection when using VLANs on top of WiFi
* improve documentation of sysfs and debugfs files
* coding style cleanups and refactoring
* bugs squashed:
- detect missing primaryif during tp_send as error
- fix re-adding of previously removed interfaces via rtnetlink
- fix rare race conditions on interface removal
- handle allocation error when generating TT responses
Signed-off-by: Sven Eckelmann <sven@narfation.org>
LEDE is still using Linux 3.18 on some systems. Allow to build batman-adv
for it by not checking the netns of a possible netdev link during the
batadv-on-batadv check.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* batman-adv: Install module in $INSTALL_MOD_DIR/updates/net/batman-adv
* batman-adv: Revert "fix splat on disabling an interface"
* batman-adv: Detect missing primaryif during tp_send as error
* batman-adv: Check for alloc errors when preparing TT local data
Signed-off-by: Sven Eckelmann <sven@narfation.org>
The CONFIG_MODULE_STRIPPED hack broke some time ago, as it is undefined too
late (after the headers using it have been included by compat-hacks.h).
Undefine CONFIG_MODULE_STRIPPED at the top of compat-hacks.h instead to
make the module version available to batctl again.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
The build of netlink.c in batman-adv 2016.3 will fail because the
definition of GENL_NAMESIZE and similar things are missing. This is is
caused by an incorrect order of backports and non-backports header files
mixed up with uapi and non-uapi header files. Parts of the header files
would not get included by include_next because it not anymore in the
remaining search paths.
Reported: Marek Lindner <marek.lindner@open-mesh.com>
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
Speedy join only works when the received packet is either broadcast or an
4addr unicast packet. Thus packets converted from broadcast to unicast via
the gateway handling code have to be converted to 4addr packets to allow
the receiving gateway server to add the sender address as temporary entry
to the translation table.
Not doing it will make the batman-adv gateway server drop the DHCP response
in many situations because it doesn't yet have the TT entry for the
destination of the DHCP response.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
* Avoid nullptr dereference in bla after vlan_insert_tag
* Avoid nullptr dereference in dat after vlan_insert_tag
* Avoid tt_req_node list put for unhashed entry
* Fix orig_node_vlan leak on orig_node_release
* Fix non-atomic bla_claim::backbone_gw access
* Fix reference leak in batadv_find_router
* Free last_bonding_candidate on release of orig_node
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
The entire batman-adv code relies on the kernel backports introduced
by the mac80211 package.
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>
The network config section for proto batadv now allows to select the
routing algorithm via the option routing_algo. This allows to chose between
BATMAN_IV and BATMAN_V when BATMAN_V is released. This option is only
useful when a new batman-adv device is created and not when only a device
is added to an already existing batman-adv device.
Signed-off-by: Sven Eckelmann <sven.eckelmann@open-mesh.com>
The content of this file should actually be included somehow in
backport.git so it will become part of the mac80211 package. Still keep
this for now in a separate file so it is easier to extract them.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
BATMAN_V (in the upcoming release) will use structures from the mac80211
package. These structures can be incompatible to the structures defined in
the header of the kernel. This can lead to weird problems like stack
overflows or memory corruptions.
To avoid this, the batman-adv has to be compiled against the mac80211
headers instead of the kernel headers. But this requires that the
compatibility headers of compat-wireless are used. So the batman-adv
compatibility layer has (mostly) be removed and instead the
compat-wireless/mac80211 compat layer has to be used.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
open-mesh.org and its subdomains can only be accessed via HTTPS. HTTP-only
requests are currently redirected automatically to HTTPS but references
to it should be only https.
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Marek Lindner <mareklindner@neomailbox.ch>