Commit Graph

181 Commits

Author SHA1 Message Date
Sven Eckelmann 9090aefa69 batman-adv: Provide teardown hook for batadv_vlan proto
The batadv_vlan proto doesn't need to do anything when it gets teared down.
But the scripts are still trying to call the teardown function of this
proto. This results in warnings like:

    daemon.notice netifd: batmesh1 (18940): ./batadv_vlan.sh: eval: line 37: proto_batadv_vlan_teardown: not found

Just providing a stub function avoids this log spam.

Fixes: #1044
Reported-by: Rani Hod <rani.hod@gmail.com>
Fixes: f5205d7d24 ("batman-adv: upgrade package to latest release 2014.2.0")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
2024-02-05 09:04:42 +01:00
Sven Eckelmann 6a7a1a5dab batman-adv: update to version 2024.0
* support latest kernels (4.19 - 6.8)
* coding style cleanups and refactoring
* add stateless multicast packet format support

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2024-02-03 14:13:47 +01:00
Sven Eckelmann 96b5fa139c batman-adv: compat: Fix skb_vlan_eth_hdr conflict in stable kernels
The newest Linux stable kernel releases:

* v5.10.205
* v5.15.144
* v6.1.69

received a backported version of commit 1f5020acb33f ("net: vlan: introduce
skb_vlan_eth_hdr()"). batman-adv must therefore not provide this function
any longer for these kernel versions.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2023-12-23 15:33:57 +01:00
Sven Eckelmann 28b8a5eafe batman-adv: update to version 2023.3
* support latest kernels (4.14 - 6.7)
* coding style cleanups and refactoring
* only warn about too small MTU when soft interfaces wasn't already reduced
* bugs squashed:
  - Hold rtnl lock during MTU update via netlink

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2023-11-17 21:31:47 +01:00
Sven Eckelmann 364379c056 batman-adv: Fix lock assert after fragmentation change
The automatic recalculation of the maximum allowed MTU is usually triggered
by code sections which are already rtnl lock protected by callers outside
of batman-adv. But when the fragmentation setting is changed via
batman-adv's own batadv genl family, then the rtnl lock is not yet taken.

But dev_set_mtu requires that the caller holds the rtnl lock because it
uses netdevice notifiers. And this code will then fail the check for this
lock:

  RTNL: assertion failed at net/core/dev.c (1953)

Fixes: e7ee4c55de ("batman-adv: update to version 2023.2")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
2023-08-22 18:54:26 +02:00
Sven Eckelmann e7ee4c55de batman-adv: update to version 2023.2
* support latest kernels (4.14 - 6.5)
* bugs squashed:
  - avoid potential invalid memory access when processing ELP/OGM2 packets
  - drop pending DAT worker when interface shuts down
  - inform network stack about automatically adjusted MTUs
  - keep user defined MTU limit when MTU is recalculated
  - fix packet memory leak when sending OGM2 via inactive interfaces
  - fix TT memory leak for roamed back clients

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2023-08-18 16:02:02 +02:00
Sven Eckelmann 04bbb0a87e batman-adv: Drop support for kernel < 5.15
OpenWrt master is no longer providing any kernels older than 5.15. Just
drop the compat-hacks/patches for older kernels to make it easier to
maintain the package.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2023-05-27 12:15:47 +02:00
Sven Eckelmann 6afc0452c2 batman-adv: update to version 2023.1
* support latest kernels (4.14 - 6.4)
* drop single unicast transfer optimization for unsnoopable IP addresses
* prepare infrastructure for multicast packets with multiple unicast destination
  addresses

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2023-05-27 12:09:02 +02:00
Nick Hainke 3e96c851a7 treewide: remove AUTORELEASE
OpenWrt/packages removed AUTORELEASE treewide. Remove it also in the
routing feed.

This is just copied from [0] with modification to the sed cmd because it
was not working for the routing feed:

The following temporary change was made to the core:

diff --git a/rules.mk b/rules.mk
index 57d7995d4fa8..f16367de87a8 100644
--- a/rules.mk
+++ b/rules.mk
@@ -429,7 +429,7 @@ endef
 abi_version_str = $(subst -,,$(subst _,,$(subst .,,$(1))))

 COMMITCOUNT = $(if $(DUMP),0,$(call commitcount))
-AUTORELEASE = $(if $(DUMP),0,$(call commitcount,1))
+AUTORELEASE = $(if $(DUMP),0,$(shell sed -i "s/\$$(AUTORELEASE)/$(call commitcount,1)/" $(CURDIR)/Makefile))

 all:
 FORCE: ;

And this command used to fix affected packages:

for i in $(cd feeds/routing; git grep -l PKG_RELEASE:=.*AUTORELEASE | \
                              sed 's/\/Makefile$//';);
do
  make package/$i/download
done

[0] - 0c10c224be

Signed-off-by: Nick Hainke <vincent@systemli.org>
2023-04-27 17:14:16 +02:00
Alexandru Gagniuc 2eb71d7d7a batman-adv: fix compilation bug in batadv_is_cfg80211_netdev()
Because batman-adv is built under backports, not a clean linux tree,
the CONFIG_CFG80211 does not exist. The evaluation of IS_ENABLED() in
batadv_is_cfg80211_netdev() will be false, causing the funtion to
always return false.

This means that the wifi_flags of an interface don't get set, causing
batadv_is_wifi_hardif() to always return false. As a result,
batadv_v_elp_get_throughput() never tries to get the station info from
cfg80211, resulting in the following warning:

    batman_adv: bat0: WiFi driver or ethtool info does not provide
    information about link speeds on interface phy1-mesh0,
    therefore defaulting to hardcoded throughput values of 1.0 Mbps.

So replace CONFIG_CFG80211 with CPTCFG_CFG80211, which is the correct
macro to use under backports.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2023-04-07 09:03:04 -05:00
Sven Eckelmann b4034e4ae1 batman-adv: update to version 2023.0
* support latest kernels (4.14 - 6.2)

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2023-01-26 22:29:55 +01:00
Sven Eckelmann 081291592e batman-adv: update to version 2022.3
* support latest kernels (4.9 - 6.1)
* coding style cleanups and refactoring
* bugs squashed:

  - limit the minimum MTU of hard-interface to avoid
    "Forced to purge local tt entries" errors

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-11-10 21:44:20 +01:00
Sven Eckelmann fb41ed5cc8 batman-adv: Rebuild on CONFIG_BATMAN_ADV_* changes
The buildsystem doesn't know that the KernelPackage/*/config kconfig
symbols are related to the batman-adv package build. It is necessary to
explicitly define it via PKG_CONFIG_DEPENDS.

Fixes: 522ce8dfdb ("batman-adv: rename folder name to match project & package name")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-10-23 10:16:07 +02:00
Sven Eckelmann 4a2b53b10d batman-adv: update to version 2022.2
* support latest kernels (4.9 - 5.19)

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-07-26 21:55:40 +02:00
Sven Eckelmann 4216c909aa batman-adv: Fix build with kernel 5.15.38
The build failed in this kernel due to some missing implicit includes:

  build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/batman-adv-2022.1/compat-hacks.h:64:42: warning: 'struct sk_buff' declared inside parameter list will not be visible outside of this definition or declaration
     64 | static inline int batadv_netif_rx(struct sk_buff *skb)
        |                                          ^~~~~~~
  build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/batman-adv-2022.1/compat-hacks.h: In function 'batadv_netif_rx':
  build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/batman-adv-2022.1/compat-hacks.h:66:13: error: implicit declaration of function 'in_interrupt' [-Werror=implicit-function-declaration]
    66 |         if (in_interrupt())
        |             ^~~~~~~~~~~~
  build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/batman-adv-2022.1/compat-hacks.h:67:24: error: implicit declaration of function 'netif_rx' [-Werror=implicit-function-declaration]
     67 |                 return netif_rx(skb);
        |                        ^~~~~~~~
  build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/batman-adv-2022.1/compat-hacks.h:69:24: error: implicit declaration of function 'netif_rx_ni' [-Werror=implicit-function-declaration]
     69 |                 return netif_rx_ni(skb);
        |                        ^~~~~~~~~~~
  In file included from <command-line>:
  ./include/linux/netdevice.h: At top level:
  build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/batman-adv-2022.1/compat-hacks.h:71:18: error: conflicting types for 'batadv_netif_rx'; have 'int(struct sk_buff *)'
     71 | #define netif_rx batadv_netif_rx
        |                  ^~~~~~~~~~~~~~~
  ./include/linux/netdevice.h:4029:5: note: in expansion of macro 'netif_rx'
   4029 | int netif_rx(struct sk_buff *skb);
        |     ^~~~~~~~
  build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/batman-adv-2022.1/compat-hacks.h:64:19: note: previous definition of 'batadv_netif_rx' with type 'int(struct sk_buff *)'
     64 | static inline int batadv_netif_rx(struct sk_buff *skb)
        |                   ^~~~~~~~~~~~~~~
  cc1: some warnings being treated as errors

Reported-by: Chen Minqiang <ptpt52@gmail.com>
Fixes: b65a8ca03a ("batman-adv: update to version 2022.1")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-05-12 14:29:10 +02:00
Sven Eckelmann b65a8ca03a batman-adv: update to version 2022.1
* support latest kernels (4.9 - 5.18)
* bugs squashed:

  - resolve "time-of-check-time-of-use" race condition when checking the
    network namespace of a lower device
  - fix sanity check of network devices in different namespaces with
    colliding IDs
  - prevent transmission errors after splitting large GRO packets into
    smaller fragments

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-05-06 22:09:55 +02:00
Sven Eckelmann b1d9a55b49 batman-adv: Drop compat hacks for kernels < 5.10
OpenWrt master is no longer providing any kernels older than 5.10. Just
drop the compat-hacks for older kernels to make it easier to maintain the
package.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-04-17 14:00:29 +02:00
Sven Eckelmann 500352d44f batman-adv: Drop unused compat patches
The minimal kernel version in OpenWrt is now Linux 5.10.111. It already
provides various thing which needed special patches on older versions.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-04-17 14:00:29 +02:00
Sven Eckelmann 73195d63da batman-adv: compat: Add atomic mc_forwarding support for stable kernels
Eric Dumazet changed the mc_forwarding in commit 145c7a793838 ("ipv6: make
mc_forwarding atomic") the type of mc_forwarding from __s32 to an atomic_t.
This patch was then ported to various stable kernels.

This code change caused a FTBFS when in batman-adv when
CONFIG_BATMAN_ADV_MCAST was activated. To work around this problem, provide
a version for kernels with __s32 mc_forwarding and a version for kernel
with atomic_t mc_forwarding.

Fixes: #850
Reported-by: Huangbin Zhan <zhanhb88@gmail.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-04-17 13:25:16 +02:00
Sven Eckelmann 823acb605b batman-adv: Allow parallel builds
The build system of this package is written in a way that it is safe to run
the make steps in parallel. The build time can be reduced slightly on
modern systems.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-02-19 09:12:56 +01:00
Sven Eckelmann 55a8827ad8 batman-adv: update to version 2022.0
* support latest kernels (4.9 - 5.17)
* dropped support for kernels < 4.9
* coding style cleanups and refactoring
* allow netlink usage in unprivileged containers
* bugs squashed:

  - don't send link-local multicast to mcast routers

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2022-02-03 19:47:44 +01:00
Simon Wunderlich 65585a746d
Merge pull request #759 from ecsv/batadv-2021.4
batman-adv: Drop duplicated dev_{hold,put} compat helpers
2021-11-28 17:53:36 +01:00
Sven Eckelmann a2fe1d4131 batman-adv: Drop duplicated dev_{hold,put} compat helpers
The mac80211 package in OpenWrt master is now already providing helpers for
the changed dev_{hold,put} behavior in Linux 5.15. It is no longer
necessary to ship them as part of the batman-adv package.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-11-27 17:10:06 +01:00
Hendrik Borghorst 523821c195 batman-adv: Prevent use from libc headers to not build with BIG_ENDIAN
Commit 97d35a552ec5b6ddf7923dd2f9a8eb973526acea of musl introduced the
macros __LITTLE_ENDIAN and __BIG_ENDIAN in alltypes.h. These are pulled
into the compilation of batman-adv. This has the side effect that the
function is_multicast_ether_addr of etherdevice.h in Linux kernel is
compiled as the big endian version and so fails to work properly on
little endian devices.

This commits prevents pulling in header files of musl libc similar to
OpenWRT commit 9ac47ee46918c45b91f4e4d1fa76b1e26b9d57fe

Signed-off-by: Hendrik Borghorst <hendrikborghorst@gmail.com>
2021-11-27 13:53:53 +01:00
Sven Eckelmann ca6c9edc3e batman-adv: update to version 2021.4
* support latest kernels (4.4 - 5.16)
* coding style cleanups and refactoring
* bugs squashed:

  - fix error handling during interface initialization

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-11-19 17:40:29 +01:00
Simon Wunderlich c28f02f679
Revert "batman-adv: update packages to version 2021.4" 2021-11-19 17:35:37 +01:00
Sven Eckelmann 260e16b32a batman-adv: update to version 2021.4
* support latest kernels (4.4 - 5.16)
* coding style cleanups and refactoring
* bugs squashed:

  - fix error handling during interface initialization

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-11-19 16:55:58 +01:00
Sven Eckelmann a7b79a1d4f batman-adv: update to version 2021.3
* support latest kernels (4.4 - 5.15)
* coding style cleanups and refactoring
* reduced memory copy overhead when sending broadcasts

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-09-14 21:14:11 +02:00
Sven Eckelmann 7684cdd73d batman-adv: Fix build against kernel 5.10
The linux kernel 5.10 needs an explicit include of linux/if_bridge.h to
define br_multicast_list_adjacent and the struct br_ip_list.

Reported-by: Rosen Penev <rosenp@gmail.com>
Fixes: 47cd2a4b62 ("batman-adv: update to version 2021.2")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-08-22 08:56:28 +02:00
Sven Eckelmann 5eda02f74c batman-adv: Refresh patches with quilt
The test builds are now requiring quilt refreshed patches instead of git
patches. Otherwise the build check will not even try to build something.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-08-20 13:14:35 +02:00
Sven Eckelmann 47cd2a4b62 batman-adv: update to version 2021.2
* support latest kernels (4.4 - 5.14)
* coding style cleanups and refactoring
* add MRD + routable IPv4 multicast with bridges support
* rewrite of broadcast queuing
* bugs squashed:

  - avoid kernel warnings on timing related checks

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-08-20 13:14:22 +02:00
Sven Eckelmann 39da22d04a batman-adv: Always send iface index+name in genlmsg
The batman-adv netlink messages often contain the interface index and
interface name in the same message. This makes it easy for the receiver to
operate on the incoming data when it either needs to print something or
needs to operate on the interface index.

But one of the attributes was missing for:

* neighbor table dumps
* originator table dumps
* gateway list dumps
* query of hardif information
* query of vid information

The userspace therefore had to implement special workarounds using
SIOCGIFNAME or SIOCGIFINDEX depending on what was actually provided.
Providing both information simplifies the userspace code massively without
adding a lot of extra overhead in the kernel portion.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-05-18 18:51:26 +02:00
Sven Eckelmann 1c3233ca67 batman-adv: update to version 2021.1
* support latest kernels (4.4 - 5.13)
* coding style cleanups and refactoring
* bugs squashed:

  - correctly initialize padding when sending out translation table TVLVs

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-05-18 18:48:52 +02:00
Sven Eckelmann b6a5577fab batman-adv: use $(AUTORELEASE) for PKG_RELEASE
Use `$(AUTORELEASE)` variable rather than setting a PKG_RELEASE
on every commit manually.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-05-14 19:18:33 +02:00
Sven Eckelmann 6c81fc2916 batman-adv: upgrade package to latest release 2021.0
* support latest kernels (4.4 - 5.11)
* coding style cleanups and refactoring
* drop support for sysfs+debugfs
* allow to select routing algorithm during creation of interface
* bugs squashed:

  - allocate enough reserved room on fragments for lower devices

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-01-28 21:08:27 +01:00
Sven Eckelmann 39cf9f5b47 batman-adv: Drop compat code for Linux < 5.4
The lowest kernel version supported by OpenWrt at the moment is Linux 5.4.
It is therefore not required to have these dead code sections anymore.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2021-01-28 21:05:35 +01:00
Sven Eckelmann aca51f8149 batman-adv: upgrade package to latest release 2020.4
* support latest kernels (4.4 - 5.10)
* coding style cleanups and refactoring
* bugs squashed:

  - fix incorrect reroute handling of multicast packets
  - improve handling of multicast packets by bridge loop avoidance

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-10-27 14:46:11 +01:00
Sven Eckelmann c201b00922 batman-adv: upgrade package to latest release 2020.3
* support latest kernels (4.4 - 5.9)
* coding style cleanups and refactoring
* introduce a configurable per interface hop penalty
* bugs squashed:

  - avoid uninitialized chaddr when handling DHCP
  - fix own OGMv2 check in aggregation receive handling
  - fix "NOHZ: local_softirq_pending 08" warnings caused by BLA

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-08-25 20:09:34 +02:00
Sven Eckelmann 9852b614a2 batman-adv: upgrade package to latest release 2020.2
* support latest kernels (4.4 - 5.8)
* coding style cleanups and refactoring
* dropped support for kernels < 4.4
* re-enabled link speed detection for interfaces without auto negotiation

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-07-06 19:54:00 +02:00
Sven Eckelmann aa8705683e batman-adv: Provide mac80211's config settings
The mac80211 headers might depend on the actual configuration of mac80211
to generate an ABI compatible structure definition. batman-adv must
therefore include the header with these config definitions.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-05-19 15:11:35 +02:00
Sven Eckelmann 2f54cd50a3 batman-adv: use KERNEL_MAKE_FLAGS for kernel module compilation
It is easier to use the global define than to manually keep track of the
changes in the various kernel module makefiles in the main OpenWrt
repository and feeds.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-05-19 15:11:35 +02:00
Sven Eckelmann d6ba424d34 batman-adv: upgrade package to latest release 2020.1
* support latest kernels (3.16 - 5.7-rc2)
* coding style cleanups and refactoring
* bugs squashed:

  - fix reference leaks in throughput_override sysfs file
  - fix reference leak in B.A.T.M.A.N. V OGM error handling
  - fix network coding random weighting

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-04-24 19:30:11 +02:00
Sven Eckelmann 0aa846dec7 batman-adv: Drop compat-sources build
The compat-sources are no longer needed for kernels >= 4.4. Older kernel
versions are not used since a while in OpenWrt.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-04-24 19:01:20 +02:00
Sven Eckelmann cc0ce25bb0 batman-adv: Switch to OpenWrt package template
The OpenWrt routing feed was tried to be merged together with the OpenWrt
package feed. But they ended up being rejected due to formalities like the
slightly different package template. Just moving to the OpenWrt package
based one should simplify similar approaches in the future.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-03-07 18:51:17 +01:00
Sven Eckelmann 00de979415 batman-adv: replace SUBDIRS with M kernel build recipe
The SUBDIRS variable has been removed in kernel 5.4 and M or KBUILD_EXTMOD
has to be used instead.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-03-07 18:50:14 +01:00
Sven Eckelmann bacc8c1385 batman-adv: Drop compat code for Linux < 4.14
The lowest kernel version supported by OpenWrt at the moment is Linux 4.14.
It is therefore not required to have these dead code sections anymore.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-03-07 18:50:14 +01:00
Sven Eckelmann 05da6ef2ca batman-adv: upgrade package to latest release 2020.0
* support latest kernels (3.16 - 5.6)
* coding style cleanups and refactoring
* use wifi tx rates as fallback for the B.A.T.M.A.N. V throughput estimation
* disable deprecated sysfs support by default
* bugs squashed:

  - fix crash during the scheduling of OGMs for removed interfaces

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2020-03-07 18:50:13 +01:00
Simon Wunderlich 5544be5234
Merge pull request #529 from adrianschmutzler/openwrtversion
batman-adv and friends: improve version string
2019-12-15 16:00:16 +01:00
Sven Eckelmann 5bd07eb12b batman-adv: upgrade package to latest release 2019.5
* support latest kernels (3.16 - 5.5)
* coding style cleanups and refactoring
* bugs squashed:

  - fix DAT candidate selection on little endian systems

Signed-off-by: Sven Eckelmann <sven@narfation.org>
2019-12-13 22:35:12 +01:00
Adrian Schmutzler 4b457916ea batman-adv: improve version string
This changes the package version string so it does not start
with "openwrt", but with the base version we are modifying:

So far: openwrt-2019.4-1
Now:    2019.4-openwrt-1

Since it's us modifying version 2019.4 (in this case), this order
is more convenient (and also closer to what the kernel version
string does).

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
2019-11-11 12:39:26 +01:00