From patchwork Tue Aug 13 23:00:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: babeld: Automatically add redistribute filters From: Fabian Blaese X-Patchwork-Id: 1169 Message-Id: <20190813230044.19667-2-fabian@blaese.de> To: franken-dev@freifunk.net Date: Wed, 14 Aug 2019 01:00:42 +0200 Reviewed-by: Robert Langhammer Tested-by: Fabian Bläse 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.@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 +}