fff-gateway: Add script to load vlan defaults

Submitted by Christian Dresel on Dec. 10, 2020, 1:35 p.m.

Details

Message ID 20201210133537.799039-1-freifunk@dresel.systems
State Superseded
Headers show

Commit Message

Christian Dresel Dec. 10, 2020, 1:35 p.m.
With this script a user can load easy a vlan default setting to
/etc/config/gateway

We use the same port configuration as the node firmware except
the Batman-adv ports are use as Babel ports

With this script it is easier to use the layer 3 firmware for user
without knowledge for openwrt vlan settings

Signed-off-by: Christian Dresel <freifunk@dresel.systems>
---
 .../files/usr/sbin/loadvlandefault            | 49 +++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
new file mode 100644
index 0000000..1c2f1a4
--- /dev/null
+++ b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
@@ -0,0 +1,49 @@ 
+#!/bin/sh
+
+echo "This script might remove all existing vlans and babelpeers and load a default vlan setup."
+read -r -p "Do you really want to continue? (y/n) " response
+if ! ( [ "$response" == "y" ] || [ "$response" == "Y" ] ); then
+	exit 1
+fi
+
+# load uci functions
+. /lib/functions.sh
+
+# load board specific properties
+BOARD="$(uci get board.model.name)"
+. /etc/network.$BOARD
+
+remove_vlan() {
+	local name="$1"
+	uci del gateway.$name
+}
+remove_babelpeer() {
+	local name="$1"
+
+	# remove interface
+	uci -q del gateway.$name
+}
+
+config_load gateway
+config_foreach remove_vlan vlan
+
+config_load gateway
+config_foreach remove_babelpeer babelpeer
+
+uci batch <<EOF
+	set gateway.1=vlan
+	set gateway.1.comment='client'
+	set gateway.1.ports='$CLIENT_PORTS'
+	set gateway.2=vlan
+	set gateway.2.comment='wan'
+	set gateway.2.ports='$WAN_PORTS'
+	set gateway.3=vlan
+	set gateway.3.comment='babelpeer'
+	set gateway.3.ports='$BATMAN_PORTS'
+	set gateway.vlan3=babelpeer
+	set gateway.vlan3.vlan='3'
+	set gateway.vlan3.type='wired'
+	set gateway.vlan3.rxcost='96'
+EOF
+
+uci commit gateway

Comments

Robert Langhammer Dec. 10, 2020, 8:43 p.m.
Hi Cristian,

sehe ich das richtig, das ist doch so als kleines user-tool gedacht?
Oder gehört das zu einem "groesserem" Plan?

Wenn das richtig dokumentiert wird, kann das schon hilfreich sein.
Vielleicht kommt da auch noch mehr, was man dann unter "tools" irgendwie
sammeln kann.


Kleine Code-Anmerkung noch s.u.

Viele Grüße
Robert


Am 10.12.20 um 14:35 schrieb Christian Dresel:
> With this script a user can load easy a vlan default setting to
> /etc/config/gateway
>
> We use the same port configuration as the node firmware except
> the Batman-adv ports are use as Babel ports
>
> With this script it is easier to use the layer 3 firmware for user
> without knowledge for openwrt vlan settings
>
> Signed-off-by: Christian Dresel <freifunk@dresel.systems>
> ---
>  .../files/usr/sbin/loadvlandefault            | 49 +++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100644 src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>
> diff --git a/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
> new file mode 100644
> index 0000000..1c2f1a4
> --- /dev/null
> +++ b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
> @@ -0,0 +1,49 @@
> +#!/bin/sh
> +
> +echo "This script might remove all existing vlans and babelpeers and load a default vlan setup."
> +read -r -p "Do you really want to continue? (y/n) " response
> +if ! ( [ "$response" == "y" ] || [ "$response" == "Y" ] ); then
> +	exit 1
> +fi
Mach doch wegen so nem kleinen Test keine so grosse Sache mit extra
Subshell:

case $response in [!Yy]) exit 1 ;; esac


> +
> +# load uci functions
> +. /lib/functions.sh
> +
> +# load board specific properties
> +BOARD="$(uci get board.model.name)"
> +. /etc/network.$BOARD
> +
> +remove_vlan() {
> +	local name="$1"
> +	uci del gateway.$name
> +}
> +remove_babelpeer() {
> +	local name="$1"
> +
> +	# remove interface
> +	uci -q del gateway.$name
> +}
> +
> +config_load gateway
> +config_foreach remove_vlan vlan
> +
> +config_load gateway
> +config_foreach remove_babelpeer babelpeer
> +
> +uci batch <<EOF
> +	set gateway.1=vlan
> +	set gateway.1.comment='client'
> +	set gateway.1.ports='$CLIENT_PORTS'
> +	set gateway.2=vlan
> +	set gateway.2.comment='wan'
> +	set gateway.2.ports='$WAN_PORTS'
> +	set gateway.3=vlan
> +	set gateway.3.comment='babelpeer'
> +	set gateway.3.ports='$BATMAN_PORTS'
> +	set gateway.vlan3=babelpeer
> +	set gateway.vlan3.vlan='3'
> +	set gateway.vlan3.type='wired'
> +	set gateway.vlan3.rxcost='96'
> +EOF
> +
> +uci commit gateway
Christian Dresel Dec. 10, 2020, 9:39 p.m.
Hallo Robert

Am 10. Dezember 2020 21:43:06 MEZ schrieb Robert Langhammer <rlanghammer@web.de>:
>Hi Cristian,
>
>sehe ich das richtig, das ist doch so als kleines user-tool gedacht?

Erstmal dafür ja

>Oder gehört das zu einem "groesserem" Plan?

Theoretisch aber auch dafür ;) Aktuell ist das Problem das man keine fertige gateway-config File ausliefern kann da sie je nach Routermodell unterschiedlich sein muss. Hiermit könnte man nun eine fertige config einem User/Router übergeben (ohne jegliche vlan settings), danach das Script starten und ein User muss gar nichts mehr selbst anpassen.

Wie dieser größere Plan aber aussehen wird bin ich mir noch absolut unschlüssig. Hab da viele Ideen und muss noch viel nachdenken. Daher erstmal Grundlagen schaffen die vllt jetzt schon dem ein oder anderen helfen.

>
>Wenn das richtig dokumentiert wird, kann das schon hilfreich sein.
>Vielleicht kommt da auch noch mehr, was man dann unter "tools"
>irgendwie
>sammeln kann.

Auch da kamen mir noch Ideen, mal schauen. Theoretisch könnte man sowas auch für den Client Block und vllt auch für andere machen, ist mir vorhin so eingefallen, ob es nötig und sinnvoll ist muss ich mir noch überlegen. Vlan war aus dem oben genannten Grund halt wichtig, das es je nach Routermodell anders ist.

Ja so eine Sammlung wäre dann nett. Wenn das Zeug in der Firmware ist, dokumentiere ich es gerne im Wiki.

>
>
>Kleine Code-Anmerkung noch s.u.
>
>Viele Grüße
>Robert
>
>
>Am 10.12.20 um 14:35 schrieb Christian Dresel:
>> With this script a user can load easy a vlan default setting to
>> /etc/config/gateway
>>
>> We use the same port configuration as the node firmware except
>> the Batman-adv ports are use as Babel ports
>>
>> With this script it is easier to use the layer 3 firmware for user
>> without knowledge for openwrt vlan settings
>>
>> Signed-off-by: Christian Dresel <freifunk@dresel.systems>
>> ---
>>  .../files/usr/sbin/loadvlandefault            | 49
>+++++++++++++++++++
>>  1 file changed, 49 insertions(+)
>>  create mode 100644
>src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>>
>> diff --git
>a/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>> new file mode 100644
>> index 0000000..1c2f1a4
>> --- /dev/null
>> +++ b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>> @@ -0,0 +1,49 @@
>> +#!/bin/sh
>> +
>> +echo "This script might remove all existing vlans and babelpeers and
>load a default vlan setup."
>> +read -r -p "Do you really want to continue? (y/n) " response
>> +if ! ( [ "$response" == "y" ] || [ "$response" == "Y" ] ); then
>> +	exit 1
>> +fi
>Mach doch wegen so nem kleinen Test keine so grosse Sache mit extra
>Subshell:
>
>case $response in [!Yy]) exit 1 ;; esac

Ich hab mir das nur aus configuregateway geklaut ;) schau mir deine Lösung aber mal an, eine v2 muss ich sowieso noch schicken ich hab das ausführbardings vergessen ;)

Gruß

Christian

>
>
>> +
>> +# load uci functions
>> +. /lib/functions.sh
>> +
>> +# load board specific properties
>> +BOARD="$(uci get board.model.name)"
>> +. /etc/network.$BOARD
>> +
>> +remove_vlan() {
>> +	local name="$1"
>> +	uci del gateway.$name
>> +}
>> +remove_babelpeer() {
>> +	local name="$1"
>> +
>> +	# remove interface
>> +	uci -q del gateway.$name
>> +}
>> +
>> +config_load gateway
>> +config_foreach remove_vlan vlan
>> +
>> +config_load gateway
>> +config_foreach remove_babelpeer babelpeer
>> +
>> +uci batch <<EOF
>> +	set gateway.1=vlan
>> +	set gateway.1.comment='client'
>> +	set gateway.1.ports='$CLIENT_PORTS'
>> +	set gateway.2=vlan
>> +	set gateway.2.comment='wan'
>> +	set gateway.2.ports='$WAN_PORTS'
>> +	set gateway.3=vlan
>> +	set gateway.3.comment='babelpeer'
>> +	set gateway.3.ports='$BATMAN_PORTS'
>> +	set gateway.vlan3=babelpeer
>> +	set gateway.vlan3.vlan='3'
>> +	set gateway.vlan3.type='wired'
>> +	set gateway.vlan3.rxcost='96'
>> +EOF
>> +
>> +uci commit gateway
Christian Dresel Dec. 12, 2020, 11:40 a.m.
Hallo

hab das jetzt mal überarbeitet und als ersten Test die v2 ins gitea 
gelegt, sie wird nicht mehr auf der Mailingliste erscheinen.

https://git.freifunk-franken.de/freifunk-franken/firmware/commit/7b167660cf95a7e15c8bf20e67edaf64c9ff0224

Hoffe das passt so, ist ein erster Versuch ;)

Gruß

Christian

Am 10.12.20 um 22:39 schrieb Christian Dresel:
> Hallo Robert
>
> Am 10. Dezember 2020 21:43:06 MEZ schrieb Robert Langhammer <rlanghammer@web.de>:
>> Hi Cristian,
>>
>> sehe ich das richtig, das ist doch so als kleines user-tool gedacht?
> Erstmal dafür ja
>
>> Oder gehört das zu einem "groesserem" Plan?
> Theoretisch aber auch dafür ;) Aktuell ist das Problem das man keine fertige gateway-config File ausliefern kann da sie je nach Routermodell unterschiedlich sein muss. Hiermit könnte man nun eine fertige config einem User/Router übergeben (ohne jegliche vlan settings), danach das Script starten und ein User muss gar nichts mehr selbst anpassen.
>
> Wie dieser größere Plan aber aussehen wird bin ich mir noch absolut unschlüssig. Hab da viele Ideen und muss noch viel nachdenken. Daher erstmal Grundlagen schaffen die vllt jetzt schon dem ein oder anderen helfen.
>
>> Wenn das richtig dokumentiert wird, kann das schon hilfreich sein.
>> Vielleicht kommt da auch noch mehr, was man dann unter "tools"
>> irgendwie
>> sammeln kann.
> Auch da kamen mir noch Ideen, mal schauen. Theoretisch könnte man sowas auch für den Client Block und vllt auch für andere machen, ist mir vorhin so eingefallen, ob es nötig und sinnvoll ist muss ich mir noch überlegen. Vlan war aus dem oben genannten Grund halt wichtig, das es je nach Routermodell anders ist.
>
> Ja so eine Sammlung wäre dann nett. Wenn das Zeug in der Firmware ist, dokumentiere ich es gerne im Wiki.
>
>>
>> Kleine Code-Anmerkung noch s.u.
>>
>> Viele Grüße
>> Robert
>>
>>
>> Am 10.12.20 um 14:35 schrieb Christian Dresel:
>>> With this script a user can load easy a vlan default setting to
>>> /etc/config/gateway
>>>
>>> We use the same port configuration as the node firmware except
>>> the Batman-adv ports are use as Babel ports
>>>
>>> With this script it is easier to use the layer 3 firmware for user
>>> without knowledge for openwrt vlan settings
>>>
>>> Signed-off-by: Christian Dresel <freifunk@dresel.systems>
>>> ---
>>>   .../files/usr/sbin/loadvlandefault            | 49
>> +++++++++++++++++++
>>>   1 file changed, 49 insertions(+)
>>>   create mode 100644
>> src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>>> diff --git
>> a/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>> b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>>> new file mode 100644
>>> index 0000000..1c2f1a4
>>> --- /dev/null
>>> +++ b/src/packages/fff/fff-gateway/files/usr/sbin/loadvlandefault
>>> @@ -0,0 +1,49 @@
>>> +#!/bin/sh
>>> +
>>> +echo "This script might remove all existing vlans and babelpeers and
>> load a default vlan setup."
>>> +read -r -p "Do you really want to continue? (y/n) " response
>>> +if ! ( [ "$response" == "y" ] || [ "$response" == "Y" ] ); then
>>> +	exit 1
>>> +fi
>> Mach doch wegen so nem kleinen Test keine so grosse Sache mit extra
>> Subshell:
>>
>> case $response in [!Yy]) exit 1 ;; esac
> Ich hab mir das nur aus configuregateway geklaut ;) schau mir deine Lösung aber mal an, eine v2 muss ich sowieso noch schicken ich hab das ausführbardings vergessen ;)
>
> Gruß
>
> Christian
>
>>
>>> +
>>> +# load uci functions
>>> +. /lib/functions.sh
>>> +
>>> +# load board specific properties
>>> +BOARD="$(uci get board.model.name)"
>>> +. /etc/network.$BOARD
>>> +
>>> +remove_vlan() {
>>> +	local name="$1"
>>> +	uci del gateway.$name
>>> +}
>>> +remove_babelpeer() {
>>> +	local name="$1"
>>> +
>>> +	# remove interface
>>> +	uci -q del gateway.$name
>>> +}
>>> +
>>> +config_load gateway
>>> +config_foreach remove_vlan vlan
>>> +
>>> +config_load gateway
>>> +config_foreach remove_babelpeer babelpeer
>>> +
>>> +uci batch <<EOF
>>> +	set gateway.1=vlan
>>> +	set gateway.1.comment='client'
>>> +	set gateway.1.ports='$CLIENT_PORTS'
>>> +	set gateway.2=vlan
>>> +	set gateway.2.comment='wan'
>>> +	set gateway.2.ports='$WAN_PORTS'
>>> +	set gateway.3=vlan
>>> +	set gateway.3.comment='babelpeer'
>>> +	set gateway.3.ports='$BATMAN_PORTS'
>>> +	set gateway.vlan3=babelpeer
>>> +	set gateway.vlan3.vlan='3'
>>> +	set gateway.vlan3.type='wired'
>>> +	set gateway.vlan3.rxcost='96'
>>> +EOF
>>> +
>>> +uci commit gateway