From 104a2608433e99c75fde6cc146bab5e05d6c1c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Bl=C3=A4se?= Date: Thu, 27 Jun 2019 19:48:26 +0200 Subject: [PATCH] fff-babeld: Add prefix to configuration name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the user removes a peer from /etc/config/gateway, the script has to be able to find any leftover configurations that have been created for it. This can be made very easy by prepending a prefix to every automatically generated configuration. This also allows to remove the nasty check for the babeld default interface. Therefore the naming check for cfg* also can be removed. As a side effect all manually created configuration blocks that do not match a prefix will not be touched by configuregateway. Signed-off-by: Fabian Bläse Reviewed-by: Robert Langhammer --- .../fff-babeld/files/etc/gateway.d/40-babel | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) 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 28a0d50d..97f2c92f 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 @@ -10,15 +10,19 @@ configure() { # remove peers missing in gateway config remove_babelpeer() { local name="$1" - if ! echo $name | grep cfg > /dev/null; then # do not delete default interface - if ! uci -q get gateway.$name > /dev/null; then - # remove interface - uci -q del network.$name - # remove iif-rules - babel_delete_iifrules "$name" - # remove babel interface - babel_delete_interface "$name" - fi + + # check prefix + if [ "$name" = "${name#babelpeer_}" ]; then + return + fi + + if ! uci -q get gateway.$name > /dev/null; then + # remove interface + uci -q del network.$name + # remove iif-rules + babel_delete_iifrules "$name" + # remove babel interface + babel_delete_interface "$name" fi } @@ -28,15 +32,10 @@ configure() { #add new peers add_babelpeer() { local name="$1" + local prefixname="babelpeer_$name" local vlan local type - # prohibit cfg* as name - if echo $name | grep cfg > /dev/null; then - echo "ERROR: name $name is invalid for babelpeer!" - exit 1 - fi - # get iface if vlan=$(uci -q get gateway.$name.vlan); then iface="${SWITCHDEV}.$vlan" @@ -62,21 +61,21 @@ configure() { fi # add interface - uci set network.$name=interface - uci set network.$name.proto=static - uci set network.$name.ifname=$iface + uci set network.$prefixname=interface + uci set network.$prefixname.proto=static + uci set network.$prefixname.ifname=$iface # add iif-rules - babel_add_iifrules "$name" || { echo "Could not add iif-rules for babelpeer $name"; exit 1; } + babel_add_iifrules "$prefixname" || { echo "Could not add iif-rules for babelpeer $name"; exit 1; } # peer_ip - uci -q delete "network.$name.ipaddr" - uci -q delete "network.$name.ip6addr" - babel_add_peeraddr "network.$name.ipaddr" - babel_add_peer6addr "network.$name.ip6addr" + uci -q delete "network.$prefixname.ipaddr" + uci -q delete "network.$prefixname.ip6addr" + babel_add_peeraddr "network.$prefixname.ipaddr" + babel_add_peer6addr "network.$prefixname.ip6addr" # add babel interface - babel_add_interface "$name" "$iface" "$type" "$rxcost" || { echo "Could not add babeld interface for babelpeer $name"; exit 1; } + babel_add_interface "$prefixname" "$iface" "$type" "$rxcost" || { echo "Could not add babeld interface for babelpeer $name"; exit 1; } } config_load gateway