From f7e1ec318fa838ef316e13a27247454d2d987409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= Date: Mon, 15 Feb 2021 00:43:54 +0100 Subject: [PATCH] Make babel modular MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fabian Bläse --- src/packages/fff/fff-babel/Makefile | 28 ++++++++ .../files/etc/layer3.d/40-babel | 8 ++- .../files/etc/uci-defaults/01-iproute | 0 .../files/etc/uci-defaults/02-network-rules | 0 .../files/lib/functions/fff/babel | 61 +--------------- src/packages/fff/fff-babeld/Makefile | 1 + .../files/lib/functions/fff/babeldaemon | 70 +++++++++++++++++++ src/packages/fff/fff-layer3/Makefile | 2 +- src/packages/fff/fff-wireguard/Makefile | 2 +- .../files/etc/layer3.d/50-wireguard | 8 ++- 10 files changed, 115 insertions(+), 65 deletions(-) create mode 100644 src/packages/fff/fff-babel/Makefile rename src/packages/fff/{fff-babeld => fff-babel}/files/etc/layer3.d/40-babel (97%) rename src/packages/fff/{fff-babeld => fff-babel}/files/etc/uci-defaults/01-iproute (100%) rename src/packages/fff/{fff-babeld => fff-babel}/files/etc/uci-defaults/02-network-rules (100%) rename src/packages/fff/{fff-babeld => fff-babel}/files/lib/functions/fff/babel (55%) create mode 100644 src/packages/fff/fff-babeld/files/lib/functions/fff/babeldaemon diff --git a/src/packages/fff/fff-babel/Makefile b/src/packages/fff/fff-babel/Makefile new file mode 100644 index 00000000..abae858c --- /dev/null +++ b/src/packages/fff/fff-babel/Makefile @@ -0,0 +1,28 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=fff-babel +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/fff-babel + SECTION:=base + CATEGORY:=Freifunk + TITLE:=Freifunk-Franken babel + URL:=https://www.freifunk-franken.de + DEPENDS:=+fff-babel-implementation +endef + +define Package/fff-babel/description + This is the Freifunk Franken Firmware babel package. +endef + +define Build/Compile + # nothing +endef + +define Package/fff-babel/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,fff-babel)) diff --git a/src/packages/fff/fff-babeld/files/etc/layer3.d/40-babel b/src/packages/fff/fff-babel/files/etc/layer3.d/40-babel similarity index 97% rename from src/packages/fff/fff-babeld/files/etc/layer3.d/40-babel rename to src/packages/fff/fff-babel/files/etc/layer3.d/40-babel index 42f8a48f..a5a3a478 100644 --- a/src/packages/fff/fff-babeld/files/etc/layer3.d/40-babel +++ b/src/packages/fff/fff-babel/files/etc/layer3.d/40-babel @@ -94,10 +94,14 @@ configure() { apply() { uci commit network - uci commit babeld + babel_apply +} + +reload() { + babel_reload } revert() { uci revert network - uci revert babeld + babel_revert } diff --git a/src/packages/fff/fff-babeld/files/etc/uci-defaults/01-iproute b/src/packages/fff/fff-babel/files/etc/uci-defaults/01-iproute similarity index 100% rename from src/packages/fff/fff-babeld/files/etc/uci-defaults/01-iproute rename to src/packages/fff/fff-babel/files/etc/uci-defaults/01-iproute diff --git a/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules b/src/packages/fff/fff-babel/files/etc/uci-defaults/02-network-rules similarity index 100% rename from src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules rename to src/packages/fff/fff-babel/files/etc/uci-defaults/02-network-rules diff --git a/src/packages/fff/fff-babeld/files/lib/functions/fff/babel b/src/packages/fff/fff-babel/files/lib/functions/fff/babel similarity index 55% rename from src/packages/fff/fff-babeld/files/lib/functions/fff/babel rename to src/packages/fff/fff-babel/files/lib/functions/fff/babel index 3b2c7dac..2e3d3f2e 100644 --- a/src/packages/fff/fff-babeld/files/lib/functions/fff/babel +++ b/src/packages/fff/fff-babel/files/lib/functions/fff/babel @@ -1,3 +1,5 @@ +. /lib/functions/fff/babeldaemon + babel_add_iifrules() { [ "$#" -ne "1" ] && return 1 @@ -60,62 +62,3 @@ babel_add_peer6addr() { return 0 } - -babel_add_interface() { - [ "$#" -ne "4" ] && return 1 - - local name="$1" - local interface="$2" - local type="$3" - local rxcost="$4" - - uci set babeld.$name=interface - uci set babeld.$name.ifname="$interface" - uci set babeld.$name.type="$type" - uci set babeld.$name.rxcost="$rxcost" - - return 0 -} - -babel_delete_interface() { - [ "$#" -ne "1" ] && return 1 - - local name="$1" - - uci -q del babeld.$name - - return 0 -} - -babel_add_redistribute_filter() { - [ "$#" -ne "1" ] && return 1 - - local prefix="$1" - - config=$(uci add babeld filter) - uci set babeld.$config.type='redistribute' - uci set babeld.$config.ip="$prefix" - uci set babeld.$config.addedbyautoconfig='true' - - return 0 -} - -babel_remove_custom_redistribute_filters() { - [ "$#" -ne "0" ] && return 1 - - remove_filters() { - local name="$1" - - # check if filter was added by configuregateway - if ! [ "$(uci -q get babeld.$name.addedbyautoconfig)" = 'true' ]; then - return - fi - - uci -q del babeld.$name - } - - config_load babeld - config_foreach remove_filters filter - - return 0 -} diff --git a/src/packages/fff/fff-babeld/Makefile b/src/packages/fff/fff-babeld/Makefile index fef12122..cc0aeb19 100644 --- a/src/packages/fff/fff-babeld/Makefile +++ b/src/packages/fff/fff-babeld/Makefile @@ -11,6 +11,7 @@ define Package/fff-babeld TITLE:=Freifunk-Franken babeld configuration example URL:=http://www.freifunk-franken.de DEPENDS:=+babeld + PROVIDES:=fff-babel-implementation endef define Package/fff-babeld/description diff --git a/src/packages/fff/fff-babeld/files/lib/functions/fff/babeldaemon b/src/packages/fff/fff-babeld/files/lib/functions/fff/babeldaemon new file mode 100644 index 00000000..0d00b55f --- /dev/null +++ b/src/packages/fff/fff-babeld/files/lib/functions/fff/babeldaemon @@ -0,0 +1,70 @@ +babel_add_interface() { + [ "$#" -ne "4" ] && return 1 + + local name="$1" + local interface="$2" + local type="$3" + local rxcost="$4" + + uci set babeld.$name=interface + uci set babeld.$name.ifname="$interface" + uci set babeld.$name.type="$type" + uci set babeld.$name.rxcost="$rxcost" + + return 0 +} + +babel_delete_interface() { + [ "$#" -ne "1" ] && return 1 + + local name="$1" + + uci -q del babeld.$name + + return 0 +} + +babel_add_redistribute_filter() { + [ "$#" -ne "1" ] && return 1 + + local prefix="$1" + + config=$(uci add babeld filter) + uci set babeld.$config.type='redistribute' + uci set babeld.$config.ip="$prefix" + uci set babeld.$config.addedbyautoconfig='true' + + return 0 +} + +babel_remove_custom_redistribute_filters() { + [ "$#" -ne "0" ] && return 1 + + remove_filters() { + local name="$1" + + # check if filter was added by configuregateway + if ! [ "$(uci -q get babeld.$name.addedbyautoconfig)" = 'true' ]; then + return + fi + + uci -q del babeld.$name + } + + config_load babeld + config_foreach remove_filters filter + + return 0 +} + +babel_apply() { + uci apply babeld +} + +babel_reload() { + return 0 +} + +babel_revert() { + uci revert babeld +} diff --git a/src/packages/fff/fff-layer3/Makefile b/src/packages/fff/fff-layer3/Makefile index ce3d2002..f4938a81 100644 --- a/src/packages/fff/fff-layer3/Makefile +++ b/src/packages/fff/fff-layer3/Makefile @@ -11,7 +11,7 @@ define Package/fff-layer3 TITLE:=Freifunk-Franken gateway configuration URL:=https://www.freifunk-franken.de DEPENDS:=+fff-alfred-monitoring-proxy \ - +fff-babeld \ + +fff-babel \ +fff-boardname \ +fff-dhcp \ +fff-layer3-config \ diff --git a/src/packages/fff/fff-wireguard/Makefile b/src/packages/fff/fff-wireguard/Makefile index c39e68ef..80eb8824 100644 --- a/src/packages/fff/fff-wireguard/Makefile +++ b/src/packages/fff/fff-wireguard/Makefile @@ -13,7 +13,7 @@ define Package/fff-wireguard DEPENDS:= \ +owipcalc \ +wireguard \ - +fff-babeld \ + +fff-babel \ +fff-network endef diff --git a/src/packages/fff/fff-wireguard/files/etc/layer3.d/50-wireguard b/src/packages/fff/fff-wireguard/files/etc/layer3.d/50-wireguard index 5b550d17..e349047d 100644 --- a/src/packages/fff/fff-wireguard/files/etc/layer3.d/50-wireguard +++ b/src/packages/fff/fff-wireguard/files/etc/layer3.d/50-wireguard @@ -135,12 +135,16 @@ configure() { apply() { uci commit network - uci commit babeld uci commit gateway + babel_apply +} + +reload() { + babel_reload } revert() { uci revert network - uci revert babeld uci revert gateway + babel_revert }