[PATCH] babeld: Automatically add redistribute filters

Fabian Bläse fabian at blaese.de
Mi Aug 14 01:00:42 CEST 2019


babeld filters routes before announcing them with the
redistribute filters.

Users might add unknown public subnets to the client interface,
so redistribute filters have to be generated for these addresses.

Signed-off-by: Fabian Bläse <fabian at blaese.de>
---
 .../fff-babeld/files/etc/gateway.d/40-babel   | 10 ++++++
 .../fff-babeld/files/lib/functions/fff/babel  | 33 +++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
index 97f2c92..c238cc1 100644
--- a/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
+++ b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
@@ -80,6 +80,16 @@ configure() {
 
 	config_load gateway
 	config_foreach add_babelpeer babelpeer
+
+
+	# configure babeld filters for custom ipv6 addresses
+	## remove old filters
+	babel_remove_custom_redistribute_filters
+
+	## add new filters set for client interface in gatewayconfig
+	for prefix in $(uci -q get gateway. at client[0].ip6addr); do
+		babel_add_redistribute_filter "$prefix"
+	done
 }
 
 apply() {
diff --git a/src/packages/fff/fff-babeld/files/lib/functions/fff/babel b/src/packages/fff/fff-babeld/files/lib/functions/fff/babel
index 0d19cef..5eb679b 100644
--- a/src/packages/fff/fff-babeld/files/lib/functions/fff/babel
+++ b/src/packages/fff/fff-babeld/files/lib/functions/fff/babel
@@ -86,3 +86,36 @@ babel_delete_interface() {
 
 	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
+}
-- 
2.22.0



Mehr Informationen über die Mailingliste franken-dev