[PATCH] fff-gateway: Add script to load vlan defaults

Christian Dresel freifunk at dresel.systems
Sa Dez 12 12:40:59 CET 2020


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 at 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 at 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


Mehr Informationen über die Mailingliste franken-dev