[v2,2/2] fff-babeld: Add prefix to configuration name

Submitted by Fabian Blaese on June 27, 2019, 5:48 p.m.

Details

Message ID 20190627174826.22653-2-fabian@blaese.de
State Accepted
Headers show

Commit Message

Fabian Blaese June 27, 2019, 5:48 p.m.
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@blaese.de>
---
Changes in v2:
- None
---
 .../fff-babeld/files/etc/gateway.d/40-babel   | 47 +++++++++----------
 1 file changed, 23 insertions(+), 24 deletions(-)

Patch hide | download patch | download mbox

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 28a0d50..97f2c92 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

Comments

Adrian Schmutzler July 1, 2019, 4:42 p.m.
Hallo,

hier bin ich mir nicht so sicher, ob die Sache jetzt besser oder schlechter wird.

Funktionale Probleme habe ich keine finden können, im Prinzip ist es mir also egal, ob der Patch reinkommt oder nicht.

Eine Kleinigkeit noch:

> +		# check prefix
> +		if [ "$name" = "${name#babelpeer_}" ]; then
> +			return
> +		fi

Das hätte ich als Einzeiler gemacht:
[ "$name" = "${name#babelpeer_}" ] && return

Ist aber reine Geschmackssache.

Grüße

Adrian
Fabian Blaese July 1, 2019, 6:54 p.m.
Hallo Adrian,

On 01.07.19 18:42, Adrian Schmutzler wrote:
> hier bin ich mir nicht so sicher, ob die Sache jetzt besser oder schlechter wird.
Hast du eine bessere Idee? Falls ja, her damit! :-D

Schön finde ich es auch nicht. Mit diesem Patch können wir aber immerhin sicherstellen, dass wir alles überflüssige wieder sauber löschen können.
Mir ist bisher nichts besseres eingefallen..

Gruß
Fabian
Robert Langhammer July 4, 2019, 2:34 p.m.
> Signed-off-by: Fabian Bläse <fabian@blaese.de>
> ---
> Changes in v2:
> - None

hallo Fabian,

Hier keine Änderung zu v2, dann ziehen wir mein

Reviewed-by: Robert Langhammer <rlanghammer@web.de>

einfach mit.

> ---
Fabian Blaese Aug. 13, 2019, 10:34 p.m.
applied.