[PATCH 2/2] fff-babeld: Add prefix to configuration name
Fabian Bläse
fabian at blaese.de
Sa Jun 22 21:51:44 CEST 2019
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 <fabian at blaese.de>
---
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
--
2.22.0
Mehr Informationen über die Mailingliste franken-dev