From patchwork Sat Jun 22 19:51:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [2/2] fff-babeld: Add prefix to configuration name From: Fabian Blaese X-Patchwork-Id: 1137 Message-Id: <20190622195144.27620-2-fabian@blaese.de> To: franken-dev@freifunk.net Date: Sat, 22 Jun 2019 21:51:44 +0200 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 --- Using --word-diff might be very handy for reviewing this patch. :-) --- .../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 4c94a12..e71f597 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" || exit 1 - # remove babel interface - babel_delete_interface "$name" || exit 1 - 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" || exit 1 + # remove babel interface + babel_delete_interface "$name" || exit 1 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" || exit 1 + babel_add_iifrules "$prefixname" || exit 1 # peer_ip - uci -q delete "network.$name.ipaddr" - uci -q delete "network.$name.ip6addr" - babel_add_peeraddr "network.$name.ipaddr" || exit 1 - babel_add_peer6addr "network.$name.ip6addr" || exit 1 + uci -q delete "network.$prefixname.ipaddr" + uci -q delete "network.$prefixname.ip6addr" + babel_add_peeraddr "network.$prefixname.ipaddr" || exit 1 + babel_add_peer6addr "network.$prefixname.ip6addr" || exit 1 # add babel interface - babel_add_interface "$name" "$iface" "$type" "$rxcost" || exit 1 + babel_add_interface "$prefixname" "$iface" "$type" "$rxcost" || exit 1 } config_load gateway