gluon-mesh-batman-adv: remove gluon-mesh-batman-adv-14

This commit is contained in:
Matthias Schiffer 2019-09-25 00:13:23 +02:00 committed by Martin Weinelt
parent 7837bc1059
commit 5b97d36c7e
12 changed files with 42 additions and 204 deletions

View File

@ -21,8 +21,8 @@ However it mitigates the impact on the mesh when a larger range of
its IPv4 subnet is being scanned, which would otherwise result in its IPv4 subnet is being scanned, which would otherwise result in
a significant amount of ARP chatter, even for unused IP addresses. a significant amount of ARP chatter, even for unused IP addresses.
This package is selected by default if the installed routing This package is installed by default if the selected routing
package is gluon-mesh-batman-adv-14 or gluon-mesh-batman-adv-15. feature is *mesh-batman-adv-15*.
It can be unselected via:: It can be unselected via::
GLUON_SITE_PACKAGES := \ GLUON_SITE_PACKAGES := \

View File

@ -20,49 +20,11 @@ B.A.T.M.A.N. Advanced project homepage:
* https://www.open-mesh.org/projects/batman-adv/wiki/Wiki * https://www.open-mesh.org/projects/batman-adv/wiki/Wiki
Flavours
--------
Gluon currently supports two main build flavours of batman-adv:
gluon-mesh-batman-adv-15
^^^^^^^^^^^^^^^^^^^^^^^^
This is the recommended batman-adv flavour to use.
It follows recent, upstream batman-adv releases and is flexible to new feature additions.
gluon-mesh-batman-adv-14 (`batman-adv-legacy`)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`gluon-mesh-batman-adv-14`, also known as `batman-adv-legacy` or batman-adv v2013.4
is the last batman-adv release with the batman-adv compatibility version 14, which
was released in October 2013.
With batman-adv v2014.0.0 a compat breakage became necessary for the introduction
of new features. However, one of these features was the addition of TVLV support
(type-version-length-value fields) which from then on allowed adding features
without breaking packet format compatibility. This made it possible to stay with
compatibility version 15 so far.
For new installations `gluon-mesh-batman-adv-14` is **not recommended**. It misses
a lot of bugfixes and is currently only available for existing communities
until they have migrated. This package will soon be deprecated and removed.
Also see:
* https://www.open-mesh.org/projects/batman-adv/wiki/Compatversion
* https://www.open-mesh.org/news/56
* https://github.com/freifunk-gluon/batman-adv-legacy/
B.A.T.M.A.N. Routing Algorithms B.A.T.M.A.N. Routing Algorithms
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For the `gluon-mesh-batman-adv-15` package two routing algorithms are selectable Two routing algorithms are selectable via
via :ref:`site.conf mesh section <user-site-mesh>`: BATMAN_IV and BATMAN_V. :ref:`site.conf mesh section <user-site-mesh>`: BATMAN_IV and BATMAN_V.
For the `gluon-mesh-batman-adv-14` package, BATMAN_IV_LEGACY needs to be selected.
BATMAN_IV - stable BATMAN_IV - stable
"""""""""""""""""" """"""""""""""""""
@ -92,8 +54,8 @@ mesh protocol, it quickly reaches its limit.
For meshes with about **50 nodes / 100 clients, or more** it is therefore highly For meshes with about **50 nodes / 100 clients, or more** it is therefore highly
recommended to add the :doc:`gluon-ebtables-filter-multicast` recommended to add the :doc:`gluon-ebtables-filter-multicast`
package. Also, with gluon-mesh-batman-adv-15 or gluon-mesh-batman-adv-14 package. Also, with the *mesh-batman-adv-15* feature,
installed :doc:`gluon-ebtables-limit-arp` is selected by default. :doc:`gluon-ebtables-limit-arp` is selected by default.
Furthermore, by default IGMP and MLD messages are filtered. See Furthermore, by default IGMP and MLD messages are filtered. See
:ref:`site.conf mesh section <user-site-mesh>` and :ref:`site.conf mesh section <user-site-mesh>` and

View File

@ -45,9 +45,8 @@ Consider these key values:
.. _MSS clamping: https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.mtu-mss.html .. _MSS clamping: https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.mtu-mss.html
- Encapsulation: Account for the overhead created by the configured mesh protocol - Encapsulation: Account for the overhead created by the configured mesh protocol
encapsulating the payload, which is encapsulating the payload, which is up to 32 Byte (14 Byte Ethernet + 18 Byte
- up to 32 Byte (14 Byte Ethernet + 18 Byte batadv) for batman-adv compat v15 (v2014.0 and later) batadv).
- up to 28 Byte (14 Byte Ethernet + 14 Byte batadv) for batman-adv compat v14 (v2011.3.0 until and including v2013.4.0)
- PMTU: What MTU does the path between your gateway and each of its peers support? - PMTU: What MTU does the path between your gateway and each of its peers support?
@ -106,4 +105,4 @@ Conclusion
Determining the maximum MTU can be a tedious process, especially since the PMTU Determining the maximum MTU can be a tedious process, especially since the PMTU
of peers could change at any time. The general recommendation for maximized of peers could change at any time. The general recommendation for maximized
compatibility is therefore the minimum MTU of 1312 Byte, which works well with compatibility is therefore the minimum MTU of 1312 Byte, which works well with
all combinations of IPv4, IPv6, batman-adv compat v14 and v15. both IPv4 and IPv6.

View File

@ -244,12 +244,8 @@ mesh
The mandatory value *routing_algo* selects the batman-adv protocol variant. The mandatory value *routing_algo* selects the batman-adv protocol variant.
The following values are supported: The following values are supported:
- ``BATMAN_IV_LEGACY`` (*mesh-batman-adv-14*) - ``BATMAN_IV``
- ``BATMAN_IV`` (*mesh-batman-adv-15*) - ``BATMAN_V``
- ``BATMAN_V`` (*mesh-batman-adv-15*)
When both *mesh-batman-adv-14* and *mesh-batman-adv-15* are included, this
setting specifies which one to use.
The optional value *gw_sel_class* sets the gateway selection class, the The optional value *gw_sel_class* sets the gateway selection class, the
default is ``20`` for B.A.T.M.A.N. IV and ``5000`` kbit/s for B.A.T.M.A.N. V. default is ``20`` for B.A.T.M.A.N. IV and ``5000`` kbit/s for B.A.T.M.A.N. V.
@ -598,12 +594,12 @@ prefix: The feature flag corresponding to the package *gluon-mesh-batman-adv-15*
The file ``package/features`` in the Gluon repository (or The file ``package/features`` in the Gluon repository (or
``features`` in site feeds) can specify additional rules for deriving package lists ``features`` in site feeds) can specify additional rules for deriving package lists
from feature flags, e.g. specifying both *status-page* and either *mesh-batman-adv-14* from feature flags, e.g. specifying both *status-page* and *mesh-batman-adv-15*
or *mesh-batman-adv-15* will automatically select the additional package will automatically select the additional package
*gluon-status-page-mesh-batman-adv*. In the future, selecting the flags *gluon-status-page-mesh-batman-adv*. In the future, selecting the flags
*mesh-vpn-fastd* and *respondd* might automatically enable the additional *mesh-vpn-fastd* and *respondd* might automatically enable the additional
package *gluon-mesh-vpn-fastd-respondd*, and enabling *status-page* and package *gluon-mesh-vpn-fastd-respondd*, and enabling *status-page* and
*mesh-batman-adv-15* (or *-14*) with ``de`` in *GLUON_LANGS* could *mesh-batman-adv-15* with ``de`` in *GLUON_LANGS* could
add the package *gluon-status-page-mesh-batman-adv-i18n-de*. add the package *gluon-status-page-mesh-batman-adv-i18n-de*.
In short, it is not necessary anymore to list all the individual packages that are In short, it is not necessary anymore to list all the individual packages that are

View File

@ -23,10 +23,10 @@ packages 'web-advanced' \
packages 'web-advanced & autoupdater' \ packages 'web-advanced & autoupdater' \
'gluon-web-autoupdater' 'gluon-web-autoupdater'
packages 'status-page & (mesh-batman-adv-14 | mesh-batman-adv-15)' \ packages 'status-page & mesh-batman-adv-15' \
'gluon-status-page-mesh-batman-adv' 'gluon-status-page-mesh-batman-adv'
packages 'mesh-batman-adv-14 | mesh-batman-adv-15' \ packages 'mesh-batman-adv-15' \
'gluon-ebtables-limit-arp' \ 'gluon-ebtables-limit-arp' \
'gluon-radvd' 'gluon-radvd'

View File

@ -5,9 +5,11 @@ PKG_VERSION:=1
include ../gluon.mk include ../gluon.mk
define Package/gluon-mesh-batman-adv-common define Package/gluon-mesh-batman-adv-15
TITLE:=Gluon scripts for batman-adv and batman-adv-legacy PROVIDES:=gluon-mesh-batman-adv
DEPENDS:= \ TITLE:=Support for batman-adv meshing (compat level 15)
DEPENDS+= \
+kmod-batman-adv \
+gluon-core \ +gluon-core \
+libgluonutil \ +libgluonutil \
+gluon-client-bridge \ +gluon-client-bridge \
@ -23,36 +25,4 @@ define Package/gluon-mesh-batman-adv-common
+@GLUON_SPECIALIZE_KERNEL:KERNEL_LIBCRC32C +@GLUON_SPECIALIZE_KERNEL:KERNEL_LIBCRC32C
endef endef
define Package/gluon-mesh-batman-adv-14
PROVIDES:=gluon-mesh-batman-adv
TITLE:=Support for batman-adv meshing (compat level 14)
DEPENDS+= \
+gluon-mesh-batman-adv-common \
+kmod-batman-adv-legacy
endef
define Package/gluon-mesh-batman-adv-15
PROVIDES:=gluon-mesh-batman-adv
TITLE:=Support for batman-adv meshing (compat level 15)
DEPENDS+= \
+gluon-mesh-batman-adv-common \
+kmod-batman-adv
endef
define Package/gluon-mesh-batman-adv-common/install
$(Gluon/Build/Install)
endef
define Package/gluon-mesh-batman-adv-14/install
$(INSTALL_DIR) $(1)/lib/gluon/mesh-batman-adv
touch $(1)/lib/gluon/mesh-batman-adv/compat-14
endef
#
define Package/gluon-mesh-batman-adv-15/install
$(INSTALL_DIR) $(1)/lib/gluon/mesh-batman-adv
touch $(1)/lib/gluon/mesh-batman-adv/compat-15
endef
$(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-common))
$(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-14))
$(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-15)) $(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-15))

View File

@ -2,18 +2,4 @@
need_boolean(in_domain({'mesh', 'vxlan'}), not this_domain()) need_boolean(in_domain({'mesh', 'vxlan'}), not this_domain())
need_number({'mesh', 'batman_adv', 'gw_sel_class'}, false) need_number({'mesh', 'batman_adv', 'gw_sel_class'}, false)
need_one_of({'mesh', 'batman_adv', 'routing_algo'}, {'BATMAN_IV', 'BATMAN_V'})
local allowed_algos = {}
local has_compat_14 = (os.execute('exec ls "$IPKG_INSTROOT"/lib/gluon/mesh-batman-adv/compat-14 >/dev/null 2>&1') == 0)
local has_compat_15 = (os.execute('exec ls "$IPKG_INSTROOT"/lib/gluon/mesh-batman-adv/compat-15 >/dev/null 2>&1') == 0)
if has_compat_14 then
table.insert(allowed_algos, 'BATMAN_IV_LEGACY')
end
if has_compat_15 then
table.insert(allowed_algos, 'BATMAN_IV')
table.insert(allowed_algos, 'BATMAN_V')
end
need_one_of({'mesh', 'batman_adv', 'routing_algo'}, allowed_algos)

View File

@ -43,13 +43,7 @@ proto_gluon_bat0_setup() {
ip link set primary0 address "$primary0_mac" mtu 1532 up ip link set primary0 address "$primary0_mac" mtu 1532 up
local routing_algo="$(lua -e 'print(require("gluon.site").mesh.batman_adv.routing_algo())')" local routing_algo="$(lua -e 'print(require("gluon.site").mesh.batman_adv.routing_algo())')"
if [ "$routing_algo" = 'BATMAN_IV_LEGACY' ]; then
modprobe batman-adv-legacy
else
modprobe batman-adv
(echo "$routing_algo" >/sys/module/batman_adv/parameters/routing_algo) 2>/dev/null (echo "$routing_algo" >/sys/module/batman_adv/parameters/routing_algo) 2>/dev/null
fi
echo bat0 > /sys/class/net/primary0/batman_adv/mesh_iface echo bat0 > /sys/class/net/primary0/batman_adv/mesh_iface
@ -64,8 +58,6 @@ proto_gluon_bat0_teardown() {
ip link del bat0 ip link del bat0
ip link del primary0 ip link del primary0
rmmod batman-adv
} }
add_protocol gluon_bat0 add_protocol gluon_bat0

View File

@ -7,21 +7,14 @@ local util = require 'gluon.util'
local uci = require('simple-uci').cursor() local uci = require('simple-uci').cursor()
local gw_mode = uci:get('batman-adv', 'bat0', 'gw_mode') or uci:get('batman-adv-legacy', 'bat0', 'gw_mode') or 'client' local gw_mode = uci:get('batman-adv', 'bat0', 'gw_mode') or 'client'
local gw_sel_class = site.mesh.batman_adv.gw_sel_class() local gw_sel_class = site.mesh.batman_adv.gw_sel_class()
local routing_algo = site.mesh.batman_adv.routing_algo() local routing_algo = site.mesh.batman_adv.routing_algo()
uci:delete('batman-adv-legacy', 'bat0') uci:delete('batman-adv-legacy', 'bat0')
uci:delete('batman-adv', 'bat0') uci:save('batman-adv-legacy')
if routing_algo == 'BATMAN_IV_LEGACY' then uci:delete('batman-adv', 'bat0')
uci:section('batman-adv-legacy', 'mesh', 'bat0', {
orig_interval = 5000,
gw_mode = gw_mode,
gw_sel_class = gw_sel_class,
hop_penalty = 15,
})
else
uci:section('batman-adv', 'mesh', 'bat0', { uci:section('batman-adv', 'mesh', 'bat0', {
orig_interval = 5000, orig_interval = 5000,
gw_mode = gw_mode, gw_mode = gw_mode,
@ -30,9 +23,6 @@ else
routing_algo = routing_algo, routing_algo = routing_algo,
multicast_mode = false, multicast_mode = false,
}) })
end
uci:save('batman-adv-legacy')
uci:save('batman-adv') uci:save('batman-adv')
uci:delete('network', 'gluon_bat0') uci:delete('network', 'gluon_bat0')

View File

@ -232,24 +232,9 @@ static struct json_object * get_mesh(void) {
return ret; return ret;
} }
static struct json_object * get_batman_adv_compat(const char *version) {
int compat = 15;
if (!version)
return NULL;
if (strcmp(version, "2013.4.0") == 0)
compat = 14;
return json_object_new_int(compat);
}
static struct json_object * respondd_provider_nodeinfo(void) { static struct json_object * respondd_provider_nodeinfo(void) {
struct json_object *ret = json_object_new_object(); struct json_object *ret = json_object_new_object();
char *version = gluonutil_read_line("/sys/module/batman_adv/version");
struct json_object *compat = get_batman_adv_compat(version);
struct json_object *network = json_object_new_object(); struct json_object *network = json_object_new_object();
json_object_object_add(network, "addresses", get_addresses()); json_object_object_add(network, "addresses", get_addresses());
json_object_object_add(network, "mesh", get_mesh()); json_object_object_add(network, "mesh", get_mesh());
@ -257,8 +242,9 @@ static struct json_object * respondd_provider_nodeinfo(void) {
struct json_object *software = json_object_new_object(); struct json_object *software = json_object_new_object();
struct json_object *software_batman_adv = json_object_new_object(); struct json_object *software_batman_adv = json_object_new_object();
json_object_object_add(software_batman_adv, "version", gluonutil_wrap_and_free_string(version)); json_object_object_add(software_batman_adv, "version",
json_object_object_add(software_batman_adv, "compat", compat); gluonutil_wrap_and_free_string(gluonutil_read_line("/sys/module/batman_adv/version")));
json_object_object_add(software_batman_adv, "compat", json_object_new_int(15));
json_object_object_add(software, "batman-adv", software_batman_adv); json_object_object_add(software, "batman-adv", software_batman_adv);
json_object_object_add(ret, "software", software); json_object_object_add(ret, "software", software);

View File

@ -1,22 +0,0 @@
From: Linus Lüssing <linus.luessing@c0d3.blue>
Date: Mon, 18 Feb 2019 18:28:03 +0100
Subject: batctl: remove kmod-batman-adv dependency
This always pulls in the batman-adv compat 15 kernel module. However,
batctl works just as well with batman-adv-legacy (compat 14).
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
diff --git a/batctl/Makefile b/batctl/Makefile
index 4e67512844d07607852a5447a336dc9f93f5990a..df96ca7325ba3f84bd682da6df32fa4489474113 100644
--- a/batctl/Makefile
+++ b/batctl/Makefile
@@ -23,7 +23,7 @@ define Package/batctl
URL:=https://www.open-mesh.org/
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+kmod-batman-adv +libnl-tiny +libc +librt
+ DEPENDS:=+libnl-tiny +libc +librt
TITLE:=B.A.T.M.A.N. Advanced user space configuration tool batctl
MAINTAINER:=Simon Wunderlich <sw@simonwunderlich.de>
endef

View File

@ -1,21 +0,0 @@
From: Linus Lüssing <linus.luessing@c0d3.blue>
Date: Sun, 16 Jun 2019 00:01:36 +0200
Subject: batman-adv: remove module autoload
Instead of unconditionally loading this module on boot the gluon_bat0
netifd protocol script will later take care of loading either the batman-adv
or batman-adv-legacy module, depending on the configured routing
algorithm in UCI.
diff --git a/batman-adv/Makefile b/batman-adv/Makefile
index ae434909c90f61efdf0d80b56352c983cfef25b0..e58f862b0e5fac7ac12d6ba5a09241d23148a252 100644
--- a/batman-adv/Makefile
+++ b/batman-adv/Makefile
@@ -30,7 +30,6 @@ define KernelPackage/batman-adv
DEPENDS:=+KMOD_BATMAN_ADV_BLA:kmod-lib-crc16 +kmod-crypto-crc32c +kmod-lib-crc32c +kmod-cfg80211
TITLE:=B.A.T.M.A.N. Adv
FILES:=$(PKG_BUILD_DIR)/net/batman-adv/batman-adv.$(LINUX_KMOD_SUFFIX)
- AUTOLOAD:=$(call AutoProbe,batman-adv)
endef
define KernelPackage/batman-adv/description