[PATCH 3/8] fff-network: Reorganize network initialization

Adrian Schmutzler mail at adrianschmutzler.de
Fr Apr 12 13:23:32 CEST 2019


Hallo Christian,

schön, dass du dir den Patch angesehen hast.

Zwecks DualPort (=Nanostation):
Der Vorteil dieser Lösung ist, dass nun genau solche Sachen möglich werden, ohne jedes Mal die komplette configurenetwork durchzudenken.

Ich habe inzwischen auch festgestellt, dass der Vorteil von uci-defaults ja ist, dass alles viel einfacher geht: Es reicht jetzt, die MAC-Adresse im uci zu setzen, das if down/set/if up und die ganzen restarts fallen alle weg. Das gleiche beim Setzen der IPv6-Adressen: uci setzen, fertig.

Zum Thema:
Ich habe schon einen Patch für den zweiten Port der Nanostation M gebaut, aber hier noch nicht mit reingesteckt, damit es nicht noch mehr wird (habe auch schon diverse andere Änderungen erstmal lokal vorgemerkt, die mir nach dem Senden aufgefallen sind).

Ganz so einfach wie von dir vorgeschlagen ist es nicht, da setOnePort an bestimmten Stellen wirklich annimmt, dass nur ein Port vorhanden ist (es würde u.U. die config für den zweiten Port dann mitgelöscht). Aber mit einer überschaubaren neuen Funktion geht es (man will ja dann auch umschalten können). Hier mal C&P:

diff --git a/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports b/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports
index bd70a8c8..1ea2f76d 100644
--- a/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports
+++ b/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports
@@ -74,6 +74,12 @@ case "$BOARD" in
                setupSwitch "eth0" "1 2 0t" "3 4 0t" "5 0t"
                setupWan "eth0.2"
                ;;
+       ubnt-nano-m|\
+       ubnt-nano-m-xw)
+               setupOnePort "eth0" "WAN"
+               setup2ndEth "eth1" "CLIENT"
+               uci -q set "fff.ui.portsetup=twoeth"
+               ;;
        cpe210-v2|\
        cpe210-v3|\
        tl-mr3020-v1|\
@@ -83,8 +89,6 @@ case "$BOARD" in
        ubnt-bullet-m|\
        ubnt-loco-m|\
        ubnt-loco-m-xw|\
-       ubnt-nano-m|\
-       ubnt-nano-m-xw|\
        ubnt-pico-m|\
        ubnt-power-m-xw|\
        ubnt-unifi|\
diff --git a/src/packages/fff/fff-network/files/lib/functions/fff/networksetup b/src/packages/fff/fff-network/files/lib/functions/fff/networksetup
index 265886ee..72b69725 100644
--- a/src/packages/fff/fff-network/files/lib/functions/fff/networksetup
+++ b/src/packages/fff/fff-network/files/lib/functions/fff/networksetup
@@ -153,3 +153,30 @@ setupOnePort() {
        fi
        uci commit network
 }
+
+setup2ndEth() {
+       # blabla, initial and update; setupOnePorts overwrites, call again
+       # Usage: setup2ndEth <DEV, e.g. eth0> <ETHMODE: BATMAN or CLIENT>
+
+       local DEV=$1
+       local ETHMODE=$2
+
+       uci set "network.$DEV=interface"
+       uci set "network.$DEV.ifname=$DEV"
+
+       local meshif="$(uci -q get network.mesh.ifname | sed "s/ *$DEV//")"
+       local ethmeshif="$(uci -q get network.ethmesh.ifname | sed "s/ *$DEV//")"
+       if [ "$ETHMODE" = "CLIENT" ] ; then
+               uci set network.mesh.ifname="$meshif $DEV"
+               if [ -n "$ethmesif" ]; then
+                       uci set network.ethmesh.ifname="$ethmesif"
+               else
+                       uci del network.ethmesh.ifname
+               fi
+       else # default=BATMAN
+               uci set network.mesh.ifname="$meshif"
+               uci set network.ethmesh.ifname="$ethmesif $DEV"
+       fi
+       uci commit network
+}
+

Ich bin gerade dabei, dass in meiner FW einfach mal fertig zu machen und dann mal etwas breiter zu testen. Dabei werde ich auch gleich das configurehood vorverlegen und /tmp/started loswerden. Das wird total cool.

Beste Grüße

Adrian



> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of
> Christian Dresel
> Sent: Freitag, 12. April 2019 13:12
> To: franken-dev at freifunk.net
> Subject: Re: [PATCH 3/8] fff-network: Reorganize network initialization
> 
> Hi
> 

[...]
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 834 bytes
Beschreibung: nicht verfügbar
URL         : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190412/73c0354b/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev