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

Submitted by Adrian Schmutzler on April 12, 2019, 11:23 a.m.

Details

Message ID 003601d4f122$296230f0$7c2692d0$@adrianschmutzler.de
State Not Applicable
Headers show

Commit Message

Adrian Schmutzler April 12, 2019, 11:23 a.m.
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:


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@freifunk.net] On Behalf Of
> Christian Dresel
> Sent: Freitag, 12. April 2019 13:12
> To: franken-dev@freifunk.net
> Subject: Re: [PATCH 3/8] fff-network: Reorganize network initialization
> 
> Hi
> 

[...]

Patch hide | download patch | download mbox

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
+}
+

Comments

Christian Dresel April 12, 2019, 11:36 a.m.
Hi

On 12.04.19 13:23, Adrian Schmutzler wrote:
> 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).
es geht gar nicht um die NSM2 :P Ich bin bei der Fritzbox 4040 die von
OpenWRT ohne den VLAN Treiber (der übrigens kaputt ist oder vllt. auch
kaputt von mir eingebaut wurde, wer weiß das schon..., das Ethernet
crasht wenn man zuviel Traffic drüber macht) ja auch als eth0 und eth1
konfiguriert wird und der eigentlich vorhandene Switch "umgangen" wird.
Die könnte man dann auch wunderbar hier mit rein packen. Dann sind zwar
alle gelben Ports immer gleich aber das ist etwas, womit ich leben kann
wenn wir das Teil endlich unterstützt bekommen ;)
>
> 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:
ah sehr gut :) Ich hab auch erst an eine 2. Funktion gedacht aber dann
kam mir die andere Idee. Naja ok die sollte es dann auch tun. Beim
Umschaltpatch bin ich erst nach meiner Mail angekommen ;)
>
> 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.

jupp klingt echt klasse, ich bin mal gespannt was raus kommt und werde
das ganze demnächst wenn ich mal bisschen Zeit habe auch testen.
Vielleicht kannst du (wegen mir auch als RFC) schon mal das setup2ndEth
Patch auch die Tage (muss nicht heute sein, vor Ende nächster Woche komm
ich wohl eh nicht wirklich dazu) mal schicken, dann könnte ich darauf
gleich mal die Fritzbox aufbauen und testen.

Gruß

Christian

>
> Beste Grüße
>
> Adrian
>
>
>
>> -----Original Message-----
>> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
>> Christian Dresel
>> Sent: Freitag, 12. April 2019 13:12
>> To: franken-dev@freifunk.net
>> Subject: Re: [PATCH 3/8] fff-network: Reorganize network initialization
>>
>> Hi
>>
> [...]
Adrian Schmutzler April 12, 2019, 11:50 a.m.
Hallo Christian,

so ist das immer wenn man denkt (und irgendwelche Sachen annimmt).

Muss ich nochmal drüber nachdenken, aber das klingt zunächst so, als ob klappen könnte. (K.a. was dann mit dem physischen Switch passiert)

Wenn das jetzt so weiter läuft, werde ich Anfang nächster Woche vll. nochmal was schicken, was dann auch etwas erwachsener ist.

Hab ja selbst noch die gespendete 4040, da kann ich dann ggf. gleich mittesten.

Grüße

Adrian

> -----Original Message-----
> From: Christian Dresel [mailto:fff@chrisi01.de]
> Sent: Freitag, 12. April 2019 13:36
> To: Adrian Schmutzler <mail@adrianschmutzler.de>; franken-dev@freifunk.net
> Subject: Re: [PATCH 3/8] fff-network: Reorganize network initialization
> 
> Hi
> 
> On 12.04.19 13:23, Adrian Schmutzler wrote:
> > 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).
> es geht gar nicht um die NSM2 :P Ich bin bei der Fritzbox 4040 die von
> OpenWRT ohne den VLAN Treiber (der übrigens kaputt ist oder vllt. auch
> kaputt von mir eingebaut wurde, wer weiß das schon..., das Ethernet
> crasht wenn man zuviel Traffic drüber macht) ja auch als eth0 und eth1
> konfiguriert wird und der eigentlich vorhandene Switch "umgangen" wird.
> Die könnte man dann auch wunderbar hier mit rein packen. Dann sind zwar
> alle gelben Ports immer gleich aber das ist etwas, womit ich leben kann
> wenn wir das Teil endlich unterstützt bekommen ;)
> >
> > 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:
> ah sehr gut :) Ich hab auch erst an eine 2. Funktion gedacht aber dann
> kam mir die andere Idee. Naja ok die sollte es dann auch tun. Beim
> Umschaltpatch bin ich erst nach meiner Mail angekommen ;)
> >
> > 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.
> 
> jupp klingt echt klasse, ich bin mal gespannt was raus kommt und werde
> das ganze demnächst wenn ich mal bisschen Zeit habe auch testen.
> Vielleicht kannst du (wegen mir auch als RFC) schon mal das setup2ndEth
> Patch auch die Tage (muss nicht heute sein, vor Ende nächster Woche komm
> ich wohl eh nicht wirklich dazu) mal schicken, dann könnte ich darauf
> gleich mal die Fritzbox aufbauen und testen.
> 
> Gruß
> 
> Christian
> 
> >
> > Beste Grüße
> >
> > Adrian
> >
> >
> >
> >> -----Original Message-----
> >> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of
> >> Christian Dresel
> >> Sent: Freitag, 12. April 2019 13:12
> >> To: franken-dev@freifunk.net
> >> Subject: Re: [PATCH 3/8] fff-network: Reorganize network initialization
> >>
> >> Hi
> >>
> > [...]