forked from freifunk-franken/firmware
babeld: Automatically add redistribute filters
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@blaese.de> Reviewed-by: Robert Langhammer <rlanghammer@web.de> Tested-by: Fabian Bläse <fabian@blaese.de>
This commit is contained in:
parent
c3f8b808ec
commit
199058d110
|
@ -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() {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue