fff-babel: add configuration scripts

Submitted by Fabian Blaese on May 12, 2019, 1:48 p.m.

Details

Message ID 20190512134848.11956-1-fabian@blaese.de
State Accepted
Headers show

Commit Message

Fabian Blaese May 12, 2019, 1:48 p.m.
---
 .../fff-babeld/files/etc/gateway.d/40-babel   | 117 ++++++++++++++++++
 1 file changed, 117 insertions(+)
 create mode 100644 src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel

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
new file mode 100644
index 0000000..9f458c6
--- /dev/null
+++ b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
@@ -0,0 +1,117 @@ 
+. /lib/functions.sh
+
+#load board specific properties
+BOARD="$(uci get board.model.name)"
+. /etc/network.$BOARD
+
+configure() {
+	## babelpeer
+	# 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
+				uci -q del network.${name}_rule
+				uci -q del network.${name}_rule6
+				# remove babel interface
+				uci -q del babeld.$name
+				# remove wireguard config
+				uci -q del network.@wireguard_$name[0]
+			fi
+		fi
+	}
+
+	config_load babeld
+	config_foreach remove_babelpeer interface
+
+	#add new peers
+	add_babelpeer() {
+		local name="$1"
+		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"
+		elif iface=$(uci -q get gateway.$name.iface); then
+			iface="$iface"
+		else
+			echo "ERROR: No iface set for babelpeer $name!"
+			exit 1
+		fi
+
+		# get type
+		if type=$(uci -q get gateway.$name.type); then
+			type="$type"
+		else
+			type=wired
+		fi
+
+		# get rxcost
+		if rxcost=$(uci -q get gateway.$name.rxcost); then
+			rxcost="$rxcost"
+		else
+			rxcost=96
+		fi
+
+		# add interface
+		uci set network.$name=interface
+		uci set network.$name.proto=static
+		uci set network.$name.ifname=$iface
+
+		# add iif-rules
+		uci set network.${name}_rule=rule
+		uci set network.${name}_rule.in="$name"
+		uci set network.${name}_rule.lookup='10'
+		uci set network.${name}_rule.priority='31'
+
+		uci set network.${name}_rule6=rule6
+		uci set network.${name}_rule6.in="$name"
+		uci set network.${name}_rule6.lookup='10'
+		uci set network.${name}_rule6.priority='31'
+
+		# peer_ip
+		if peer_ip=$(uci -q get gateway.@gateway[0].peer_ip); then
+			uci set network.$name.ipaddr="$peer_ip"
+		elif ipaddr=$(uci -q get gateway.@client[0].ipaddr); then
+			# use ipaddr (without subnet) if no peer_ip set
+			uci set network.$name.ipaddr=$(echo $ipaddr | cut -d / -f1)
+		else
+			echo "FATAL: Neither peer_ip nor ipaddr set! No peering ipv4 set!"
+			exit 1
+		fi
+
+		# peer_ip6
+		if peer_ip6=$(uci -q get gateway.@gateway[0].peer_ip6); then
+			uci set network.$name.ip6addr="$peer_ip6"
+		fi
+
+		# add babel interface
+		uci set babeld.$name=interface
+		uci set babeld.$name.ifname=$iface
+		uci set babeld.$name.type=$type
+		uci set babeld.$name.rxcost=$rxcost
+	}
+
+	config_load gateway
+	config_foreach add_babelpeer babelpeer
+}
+
+apply() {
+	uci commit network
+	uci commit babeld
+}
+
+revert() {
+	uci revert network
+	uci revert babeld
+}

Comments

Fabian Blaese May 12, 2019, 2:03 p.m.
Aus einem mir noch nicht ganz ersichtlichem Grund hat git den Rest der Commit Message gefressen.
Daher hier, ich bitte den Applier das noch hinzuzufügen:


This adds a configuration script to allow configuration
of babel with configuregateway.

Signed-off-by: Fabian Bläse <fabian@blaese.de>


Fabian
Adrian Schmutzler May 14, 2019, 10:52 a.m.
Hallo Fabian,

zwei Anmerkungen und zwei Fragen unten.

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
> Fabian Bläse
> Sent: Sonntag, 12. Mai 2019 15:49
> To: franken-dev@freifunk.net
> Subject: [PATCH] fff-babel: add configuration scripts
> 
> ---
>  .../fff-babeld/files/etc/gateway.d/40-babel   | 117 ++++++++++++++++++
>  1 file changed, 117 insertions(+)
>  create mode 100644 src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
> 
> 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
> new file mode 100644
> index 0000000..9f458c6
> --- /dev/null
> +++ b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
> @@ -0,0 +1,117 @@
> +. /lib/functions.sh
> +
> +#load board specific properties
> +BOARD="$(uci get board.model.name)"
> +. /etc/network.$BOARD
> +
> +configure() {
> +	## babelpeer
> +	# 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
> +				uci -q del network.${name}_rule
> +				uci -q del network.${name}_rule6
> +				# remove babel interface
> +				uci -q del babeld.$name

Die vier uci del oberhalb kannst du ohne -q laufen lassen, da sollte man davon ausgehen können, dass die da sind.

> +				# remove wireguard config
> +				uci -q del network.@wireguard_$name[0]
> +			fi
> +		fi
> +	}
> +
> +	config_load babeld
> +	config_foreach remove_babelpeer interface
> +
> +	#add new peers
> +	add_babelpeer() {
> +		local name="$1"
> +		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"
> +		elif iface=$(uci -q get gateway.$name.iface); then
> +			iface="$iface"
> +		else
> +			echo "ERROR: No iface set for babelpeer $name!"
> +			exit 1
> +		fi
> +
> +		# get type
> +		if type=$(uci -q get gateway.$name.type); then
> +			type="$type"
> +		else
> +			type=wired
> +		fi
> +
> +		# get rxcost
> +		if rxcost=$(uci -q get gateway.$name.rxcost); then
> +			rxcost="$rxcost"
> +		else
> +			rxcost=96

Ist das "notwendig" oder Konvention?

> +		fi
> +
> +		# add interface
> +		uci set network.$name=interface
> +		uci set network.$name.proto=static
> +		uci set network.$name.ifname=$iface
> +
> +		# add iif-rules
> +		uci set network.${name}_rule=rule
> +		uci set network.${name}_rule.in="$name"
> +		uci set network.${name}_rule.lookup='10'
> +		uci set network.${name}_rule.priority='31'
> +
> +		uci set network.${name}_rule6=rule6
> +		uci set network.${name}_rule6.in="$name"
> +		uci set network.${name}_rule6.lookup='10'
> +		uci set network.${name}_rule6.priority='31'

Das könnte man in eine Funktion stecken, braucht wireguard ja auch:

add_iifrules() {
	local name="$1"
	local lookup="$2"
	local prio="$3"

	uci set network.${name}_rule=rule
	uci set network.${name}_rule.in="$name"
	uci set network.${name}_rule.lookup="$lookup"
	uci set network.${name}_rule.priority="$prio"

	uci set network.${name}_rule6=rule6
	uci set network.${name}_rule6.in="$name"
	uci set network.${name}_rule6.lookup="$lookup"
	uci set network.${name}_rule6.priority="$prio"
}

und

add_iifrules "$name" "10" "31"

> +
> +		# peer_ip
> +		if peer_ip=$(uci -q get gateway.@gateway[0].peer_ip); then
> +			uci set network.$name.ipaddr="$peer_ip"
> +		elif ipaddr=$(uci -q get gateway.@client[0].ipaddr); then
> +			# use ipaddr (without subnet) if no peer_ip set
> +			uci set network.$name.ipaddr=$(echo $ipaddr | cut -d / -
> f1)
> +		else
> +			echo "FATAL: Neither peer_ip nor ipaddr set! No peering
> ipv4 set!"
> +			exit 1
> +		fi
> +
> +		# peer_ip6
> +		if peer_ip6=$(uci -q get gateway.@gateway[0].peer_ip6); then
> +			uci set network.$name.ip6addr="$peer_ip6"
> +		fi
> +
> +		# add babel interface
> +		uci set babeld.$name=interface
> +		uci set babeld.$name.ifname=$iface

Ist das relevant ob $iface oder $name? Bei mir funktioniert $name, oder übersehe ich da was?

Grüße

Adrian

> +		uci set babeld.$name.type=$type
> +		uci set babeld.$name.rxcost=$rxcost
> +	}
> +
> +	config_load gateway
> +	config_foreach add_babelpeer babelpeer
> +}
> +
> +apply() {
> +	uci commit network
> +	uci commit babeld
> +}
> +
> +revert() {
> +	uci revert network
> +	uci revert babeld
> +}
> --
> 2.21.0
Fabian Blaese May 14, 2019, 12:14 p.m.
Hallo Adrian,

On 14.05.19 12:52, Adrian Schmutzler wrote:
>> +	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
>> +				uci -q del network.${name}_rule
>> +				uci -q del network.${name}_rule6
>> +				# remove babel interface
>> +				uci -q del babeld.$name
> 
> Die vier uci del oberhalb kannst du ohne -q laufen lassen, da sollte man davon ausgehen können, dass die da sind.
Joa. Aber da es an dieser Stelle kein Fehler ist, wenn es nicht da ist, auch keine Fehlermeldung ausgeben.

>> +		# get rxcost
>> +		if rxcost=$(uci -q get gateway.$name.rxcost); then
>> +			rxcost="$rxcost"
>> +		else
>> +			rxcost=96
> 
> Ist das "notwendig" oder Konvention?
Konvention. So hat man schonmal eine Stelle, an der man einen default festlegen kann.
Interessant wird das später für die Tunnel, da möchte ich einen höheren Default haben.

>> +		# add iif-rules
>> +		uci set network.${name}_rule=rule
>> +		uci set network.${name}_rule.in="$name"
>> +		uci set network.${name}_rule.lookup='10'
>> +		uci set network.${name}_rule.priority='31'
>> +
>> +		uci set network.${name}_rule6=rule6
>> +		uci set network.${name}_rule6.in="$name"
>> +		uci set network.${name}_rule6.lookup='10'
>> +		uci set network.${name}_rule6.priority='31'
> 
> Das könnte man in eine Funktion stecken, braucht wireguard ja auch:
> 
> add_iifrules() {
> 	local name="$1"
> 	local lookup="$2"
> 	local prio="$3"
> 
> 	uci set network.${name}_rule=rule
> 	uci set network.${name}_rule.in="$name"
> 	uci set network.${name}_rule.lookup="$lookup"
> 	uci set network.${name}_rule.priority="$prio"
> 
> 	uci set network.${name}_rule6=rule6
> 	uci set network.${name}_rule6.in="$name"
> 	uci set network.${name}_rule6.lookup="$lookup"
> 	uci set network.${name}_rule6.priority="$prio"
> }
> 
> und
> 
> add_iifrules "$name" "10" "31"
Stimmt. Ich würde noch meine Wireguard und Gre Patches mit hoch schicken und dann bei allen gemeinsam eine Funktion draus bauen.

>> +		# add babel interface
>> +		uci set babeld.$name=interface
>> +		uci set babeld.$name.ifname=$iface
> 
> Ist das relevant ob $iface oder $name? Bei mir funktioniert $name, oder übersehe ich da was?
Ja, das ist relevant.
Denn $name ist der Name des Konfigurationsblocks in /etc/config/gateway (der dann auch für den babeld und network Konfigurationsblock übernommen wird) und $iface ist der Name des Interfaces.
Letzteres kann entweder (wenn option vlan gesetzt ist) ein VLAN auf dem Hauptswitch (ethX.Y) oder ein konkret angegebenes Interface (e.g. ein WLAN peer, den man sich selbst konfiguriert, eine extra NIC, ...) sein.

Gruß
Fabian
Adrian Schmutzler May 15, 2019, 10:40 a.m.
Hallo Fabian,

>>> +            else 
>>> +                    rxcost=96 
>> 
>> Ist das "notwendig" oder Konvention? 
>Konvention. So hat man schonmal eine Stelle, an der man einen default festlegen kann. 
>Interessant wird das später für die Tunnel, da möchte ich einen höheren Default haben. 

Okay, dann werde ich das bei mir mal auch so einbauen.

>>> +            # add babel interface 
>>> +            uci set babeld.$name=interface 
>>> +            uci set babeld.$name.ifname=$iface 
>> 
>> Ist das relevant ob $iface oder $name? Bei mir funktioniert $name, oder übersehe ich da was? 
>Ja, das ist relevant. 
>Denn $name ist der Name des Konfigurationsblocks in /etc/config/gateway (der dann auch für den babeld und network Konfigurationsblock übernommen wird) und $iface ist der Name des Interfaces.
>Letzteres kann entweder (wenn option vlan gesetzt ist) ein VLAN auf dem Hauptswitch (ethX.Y) oder ein konkret angegebenes Interface (e.g. ein WLAN peer, den man sich selbst konfiguriert, eine extra NIC, ...) sein.

Aber der Konfigurationsblock, der in network angelegt wird, ist ja auch ein Interface. Wir haben also das interface $name (der Tunnel?) und das interface $iface, auf dem der Tunnel läuft (ethX.Y) . 
Mir ist völlig klar, dass das ifname in /etc/config/network entsprechend gesetzt werden muss. Aber ist das in /etc/config/babeld auch so? Dort geht es mir ja um den Tunnel?
(Entschuldige meine ggf. unpräzise Artikulation).

Grüße

Adrian
Fabian Blaese May 15, 2019, 9:46 p.m.
Hallo Adrian,

On 15.05.19 12:40, Adrian Schmutzler wrote:
> Hallo Fabian,
> 
>>>> +            else 
>>>> +                    rxcost=96 
>>>
>>> Ist das "notwendig" oder Konvention? 
>> Konvention. So hat man schonmal eine Stelle, an der man einen default festlegen kann. 
>> Interessant wird das später für die Tunnel, da möchte ich einen höheren Default haben. 
> 
> Okay, dann werde ich das bei mir mal auch so einbauen.
96 ist ja auch der default, daher ist das hier nicht sooo wichtig.
Aber so hat man eine definierte Stelle, an der die rxcost gesetzt wird.

>>>> +            # add babel interface 
>>>> +            uci set babeld.$name=interface 
>>>> +            uci set babeld.$name.ifname=$iface 
>>>
>>> Ist das relevant ob $iface oder $name? Bei mir funktioniert $name, oder übersehe ich da was? 
>> Ja, das ist relevant. 
>> Denn $name ist der Name des Konfigurationsblocks in /etc/config/gateway (der dann auch für den babeld und network Konfigurationsblock übernommen wird) und $iface ist der Name des Interfaces.
>> Letzteres kann entweder (wenn option vlan gesetzt ist) ein VLAN auf dem Hauptswitch (ethX.Y) oder ein konkret angegebenes Interface (e.g. ein WLAN peer, den man sich selbst konfiguriert, eine extra NIC, ...) sein.
> 
> Aber der Konfigurationsblock, der in network angelegt wird, ist ja auch ein Interface. Wir haben also das interface $name (der Tunnel?) und das interface $iface, auf dem der Tunnel läuft (ethX.Y) . 
> Mir ist völlig klar, dass das ifname in /etc/config/network entsprechend gesetzt werden muss. Aber ist das in /etc/config/babeld auch so? Dort geht es mir ja um den Tunnel?
> (Entschuldige meine ggf. unpräzise Artikulation).
Beim Erzeugen der babeld Konfiguration (siehe /var/etc/babeld.conf) werden logische Interfacenamen (die von OpenWRT aus /etc/config/network) aufgelöst, zumindest behauptet das die Doku [1].
Ist wohl Geschmackssache. Ich sehe in keiner der beiden Alternativen einen deutlichen Vor- oder Nachteil. Damals ist das wohl so entstanden, weil ich da meine babeld.conf direkt nach UCI übersetzt habe.

Gruß
Fabian

[1] https://github.com/openwrt-routing/packages/blob/lede-17.01/babeld/files/babeld.config#L29
Adrian Schmutzler May 15, 2019, 10:06 p.m.
Hallo Fabian,

> Beim Erzeugen der babeld Konfiguration (siehe /var/etc/babeld.conf) werden logische Interfacenamen (die von OpenWRT aus /etc/config/network) aufgelöst, zumindest behauptet das die Doku [1].

> Ist wohl Geschmackssache. Ich sehe in keiner der beiden Alternativen einen deutlichen Vor- oder Nachteil. Damals ist das wohl so entstanden, weil ich da meine babeld.conf direkt nach UCI übersetzt habe.

Ah, ich habe wohl die Frage nicht präzise genug formuliert. Ich wollte wissen, ob beides "funktioniert". Deine Erklärung lese ich als ja.

Ich wollte gar nicht deine Wahl kritisieren, sondern wissen, ob es mit $name auch geht.

Vielen Dank und beste Grüße

Adrian
Robert Langhammer May 21, 2019, 8:23 p.m.
Hi Fabian,

sieht soweit gut aus.

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

Am 12.05.19 um 15:48 schrieb Fabian Bläse:
> ---
>  .../fff-babeld/files/etc/gateway.d/40-babel   | 117 ++++++++++++++++++
>  1 file changed, 117 insertions(+)
>  create mode 100644 src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
>
> 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
> new file mode 100644
> index 0000000..9f458c6
> --- /dev/null
> +++ b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
> @@ -0,0 +1,117 @@
> +. /lib/functions.sh
> +
> +#load board specific properties
> +BOARD="$(uci get board.model.name)"
> +. /etc/network.$BOARD
> +
> +configure() {
> +	## babelpeer
> +	# 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
> +				uci -q del network.${name}_rule
> +				uci -q del network.${name}_rule6
> +				# remove babel interface
> +				uci -q del babeld.$name
> +				# remove wireguard config
> +				uci -q del network.@wireguard_$name[0]
> +			fi
> +		fi
> +	}
> +
> +	config_load babeld
> +	config_foreach remove_babelpeer interface
> +
> +	#add new peers
> +	add_babelpeer() {
> +		local name="$1"
> +		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"
> +		elif iface=$(uci -q get gateway.$name.iface); then
> +			iface="$iface"
> +		else
> +			echo "ERROR: No iface set for babelpeer $name!"
> +			exit 1
> +		fi
> +
> +		# get type
> +		if type=$(uci -q get gateway.$name.type); then
> +			type="$type"
> +		else
> +			type=wired
> +		fi
> +
> +		# get rxcost
> +		if rxcost=$(uci -q get gateway.$name.rxcost); then
> +			rxcost="$rxcost"
> +		else
> +			rxcost=96
> +		fi
> +
> +		# add interface
> +		uci set network.$name=interface
> +		uci set network.$name.proto=static
> +		uci set network.$name.ifname=$iface
> +
> +		# add iif-rules
> +		uci set network.${name}_rule=rule
> +		uci set network.${name}_rule.in="$name"
> +		uci set network.${name}_rule.lookup='10'
> +		uci set network.${name}_rule.priority='31'
> +
> +		uci set network.${name}_rule6=rule6
> +		uci set network.${name}_rule6.in="$name"
> +		uci set network.${name}_rule6.lookup='10'
> +		uci set network.${name}_rule6.priority='31'
> +
> +		# peer_ip
> +		if peer_ip=$(uci -q get gateway.@gateway[0].peer_ip); then
> +			uci set network.$name.ipaddr="$peer_ip"
> +		elif ipaddr=$(uci -q get gateway.@client[0].ipaddr); then
> +			# use ipaddr (without subnet) if no peer_ip set
> +			uci set network.$name.ipaddr=$(echo $ipaddr | cut -d / -f1)
> +		else
> +			echo "FATAL: Neither peer_ip nor ipaddr set! No peering ipv4 set!"
> +			exit 1
> +		fi
> +
> +		# peer_ip6
> +		if peer_ip6=$(uci -q get gateway.@gateway[0].peer_ip6); then
> +			uci set network.$name.ip6addr="$peer_ip6"
> +		fi
> +
> +		# add babel interface
> +		uci set babeld.$name=interface
> +		uci set babeld.$name.ifname=$iface
> +		uci set babeld.$name.type=$type
> +		uci set babeld.$name.rxcost=$rxcost
> +	}
> +
> +	config_load gateway
> +	config_foreach add_babelpeer babelpeer
> +}
> +
> +apply() {
> +	uci commit network
> +	uci commit babeld
> +}
> +
> +revert() {
> +	uci revert network
> +	uci revert babeld
> +}
Fabian Blaese May 25, 2019, 6:29 p.m.
On 14.05.19 14:14, Fabian Bläse wrote:
>>> +		# add iif-rules
>>> +		uci set network.${name}_rule=rule
>>> +		uci set network.${name}_rule.in="$name"
>>> +		uci set network.${name}_rule.lookup='10'
>>> +		uci set network.${name}_rule.priority='31'
>>> +
>>> +		uci set network.${name}_rule6=rule6
>>> +		uci set network.${name}_rule6.in="$name"
>>> +		uci set network.${name}_rule6.lookup='10'
>>> +		uci set network.${name}_rule6.priority='31'
>>
>> Das könnte man in eine Funktion stecken, braucht wireguard ja auch:
>>
>> add_iifrules() {
>> 	local name="$1"
>> 	local lookup="$2"
>> 	local prio="$3"
>>
>> 	uci set network.${name}_rule=rule
>> 	uci set network.${name}_rule.in="$name"
>> 	uci set network.${name}_rule.lookup="$lookup"
>> 	uci set network.${name}_rule.priority="$prio"
>>
>> 	uci set network.${name}_rule6=rule6
>> 	uci set network.${name}_rule6.in="$name"
>> 	uci set network.${name}_rule6.lookup="$lookup"
>> 	uci set network.${name}_rule6.priority="$prio"
>> }
>>
>> und
>>
>> add_iifrules "$name" "10" "31"
> Stimmt. Ich würde noch meine Wireguard und Gre Patches mit hoch schicken und dann bei allen gemeinsam eine Funktion draus bauen.

Ich habe meine Meinung hierzu geändert: Ich warte noch ab, bis dieser Patch ausreichend Reviewed ist und sende dann einen Patch, der die gemeinsamen Parts in sourcebare Funktionen steckt.
Dann gibts die wireguard & gre Patches, die dann extrem kurz werden.

Gruß
Fabian
Fabian Blaese June 11, 2019, 7:33 p.m.
Hallo zusammen,

bisher gab es nur wenig Rückmeldung zu diesem Patch.
Ich lass ihn nochmal etwas liegen, würde ihn aber demnächst dann auch mit einem Review applien, da bisher keine Einwände kamen.

Gruß
Fabian
Fabian Blaese June 22, 2019, 7:28 p.m.
Eine Kleinigkeit hab ich noch gefunden, verbessert, das Signed-off ergänzt (siehe ältere Anmerkung) und dann den Patch applied:

On 12.05.19 15:48, Fabian Bläse wrote:
> 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
> new file mode 100644
> index 0000000..9f458c6
> --- /dev/null
> +++ b/src/packages/fff/fff-babeld/files/etc/gateway.d/40-babel
> @@ -0,0 +1,117 @@
> +. /lib/functions.sh
> +
> +#load board specific properties
> +BOARD="$(uci get board.model.name)"
> +. /etc/network.$BOARD
> +
> +configure() {
> +	## babelpeer
> +	# 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
> +				uci -q del network.${name}_rule
> +				uci -q del network.${name}_rule6
> +				# remove babel interface
> +				uci -q del babeld.$name
> +				# remove wireguard config
> +				uci -q del network.@wireguard_$name[0]
Der Wireguard Kram gehört hier natürlich nicht hier hin, entsprechend habe ich die zwei Zeilen entfernt.

Fabian