fff-network: Evaluate ETH0MAC based on ROUTERMAC

Submitted by Adrian Schmutzler on Nov. 14, 2017, 10:40 a.m.

Details

Message ID 1510656035-1989-1-git-send-email-freifunk@adrianschmutzler.de
State Superseded
Headers show

Commit Message

Adrian Schmutzler Nov. 14, 2017, 10:40 a.m.
All ONE_PORT devices except mr3020 use phy0 (w2mesh) for the
ROUTERMAC. Thus, instead of evaluating w2ap's MAC address,
we can just use the flipped ROUTERMAC for ETH0MAC.

This should also work for the mr3020, which uses eth0.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

---

UNTESTED.

This is an alternative to the other ETH0MAC, without having to store another MAC in the network.* files.
---
 src/packages/fff/fff-network/files/usr/sbin/configurenetwork | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
index 89dd239..8df7655 100755
--- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
+++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
@@ -150,7 +150,7 @@  if [ "$ONE_PORT" = "YES" ] && ( ! uci -q get network.$SWITCHDEV.ifname || [ "$FO
         uci set network.mesh.ifname="bat0"
         uci set network.wan.ifname="eth1" #eth1 because it is default in config file
         uci set network.ethmesh.ifname="$SWITCHDEV"
-        ETH0MAC="w2ap"
+        ETH0MAC=1
     fi
     uci commit
 fi
@@ -196,7 +196,7 @@  fi
 if [[ -n "$ETH0MAC" ]]; then
         echo "Fixing MAC on eth0"
         sleep 10
-        NEW_MACADDR=$(cat "/sys/class/net/${ETH0MAC}/address")
+        NEW_MACADDR=$(macFlipLocalBit "$ROUTERMAC")
         uci set network.eth0.macaddr=$NEW_MACADDR
         uci commit
         ifconfig eth0 down

Comments

Adrian Schmutzler Nov. 20, 2017, 10:30 a.m.
Tested-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Adrian Schmutzler
> Sent: Dienstag, 14. November 2017 11:41
> To: franken-dev@freifunk.net
> Subject: [PATCH] fff-network: Evaluate ETH0MAC based on ROUTERMAC
> 
> All ONE_PORT devices except mr3020 use phy0 (w2mesh) for the
> ROUTERMAC. Thus, instead of evaluating w2ap's MAC address, we can just
> use the flipped ROUTERMAC for ETH0MAC.
> 
> This should also work for the mr3020, which uses eth0.
> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> ---
> 
> UNTESTED.
> 
> This is an alternative to the other ETH0MAC, without having to store
another
> MAC in the network.* files.
> ---
>  src/packages/fff/fff-network/files/usr/sbin/configurenetwork | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> index 89dd239..8df7655 100755
> --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> @@ -150,7 +150,7 @@ if [ "$ONE_PORT" = "YES" ] && ( ! uci -q get
> network.$SWITCHDEV.ifname || [ "$FO
>          uci set network.mesh.ifname="bat0"
>          uci set network.wan.ifname="eth1" #eth1 because it is default in
config
> file
>          uci set network.ethmesh.ifname="$SWITCHDEV"
> -        ETH0MAC="w2ap"
> +        ETH0MAC=1
>      fi
>      uci commit
>  fi
> @@ -196,7 +196,7 @@ fi
>  if [[ -n "$ETH0MAC" ]]; then
>          echo "Fixing MAC on eth0"
>          sleep 10
> -        NEW_MACADDR=$(cat "/sys/class/net/${ETH0MAC}/address")
> +        NEW_MACADDR=$(macFlipLocalBit "$ROUTERMAC")
>          uci set network.eth0.macaddr=$NEW_MACADDR
>          uci commit
>          ifconfig eth0 down
> --
> 2.7.4
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Tim Niemeyer Dec. 22, 2017, 2:01 p.m.
Hi

Puh .. Das ist alles eine riesen XXASDASDSXXX .. :(

Am Dienstag, den 14.11.2017, 11:40 +0100 schrieb Adrian Schmutzler:
> All ONE_PORT devices except mr3020 use phy0 (w2mesh) for the
> ROUTERMAC. Thus, instead of evaluating w2ap's MAC address,
> we can just use the flipped ROUTERMAC for ETH0MAC.
> 
> This should also work for the mr3020, which uses eth0.
Oh man. Der hat sogar ein ETHMESHMAC gesetzt. Das sollte ja dann ohne
Switch gar nicht gehen?

Dieses ganze ONE_PORT geraffel ist Müll!

Kann mir keiner erzählen, dass das so richtig ist:
uci del uci set network.ethmesh.ifname


> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> ---
> 
> UNTESTED.
> 
> This is an alternative to the other ETH0MAC, without having to store
> another MAC in the network.* files.
> ---
>  src/packages/fff/fff-network/files/usr/sbin/configurenetwork | 4 ++-
> -
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/packages/fff/fff-
> network/files/usr/sbin/configurenetwork b/src/packages/fff/fff-
> network/files/usr/sbin/configurenetwork
> index 89dd239..8df7655 100755
> --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> @@ -150,7 +150,7 @@ if [ "$ONE_PORT" = "YES" ] && ( ! uci -q get
> network.$SWITCHDEV.ifname || [ "$FO
>          uci set network.mesh.ifname="bat0"
>          uci set network.wan.ifname="eth1" #eth1 because it is
> default in config file
>          uci set network.ethmesh.ifname="$SWITCHDEV"
> -        ETH0MAC="w2ap"
> +        ETH0MAC=1

Ich würde es besser finden, wenn hier nicht ne Variable auf 1 gesetzt
wird, sondern wenn gleich der entsprechende Code ausgeführt wird. Man
könnte ggfs auch in eine Funktion auslagern.

Generell stellt sich mir die Frage, ob man das ganze Thema nicht lieber
komplett über den Haufen wirft. Ich bin mir grad nicht ganz sicher, ob
man mit dem hin und her wirklich vorran kommt. Ich würde das zwar
irgendwie lieber erst nach einem Release angehen, aber die
Funktionalität von dem configurenetwork zu durchdringen ist echt
schwer!

Tim
>      fi
>      uci commit
>  fi
> @@ -196,7 +196,7 @@ fi
>  if [[ -n "$ETH0MAC" ]]; then
>          echo "Fixing MAC on eth0"
>          sleep 10
> -        NEW_MACADDR=$(cat "/sys/class/net/${ETH0MAC}/address")
> +        NEW_MACADDR=$(macFlipLocalBit "$ROUTERMAC")
>          uci set network.eth0.macaddr=$NEW_MACADDR
>          uci commit
>          ifconfig eth0 down
> -- 
> 2.7.4
>
Adrian Schmutzler Dec. 22, 2017, 2:27 p.m.
Hallo Tim,

ich finde das mit der Variable auf 1 jetzt nicht so schwierig, wenn man bedenkt, was wir in dem file sonst so machen.
Code direkt einsetzen geht nicht, weil wir zwischendurch noch andere sachen setzen müssen (glaube ich).

Man könnte ggf. den relevanten Teil von da, wo ETH0MAC gesetzt wird (also die ifs) nach hinten schieben.

Ich finde die jetzige Lösung aber eigentlich ganz okay, insbesondere nicht schlechter als den Rest der configurenetwork.

Auf jeden Fall funktioniert das Ganze so super und wir werden endlich die Dummy-Netzwerke los.

Grüße

Adrian

> -----Original Message-----
> From: Tim Niemeyer [mailto:tim@tn-x.org]
> Sent: Freitag, 22. Dezember 2017 15:01
> To: Adrian Schmutzler <freifunk@adrianschmutzler.de>; franken-
> dev@freifunk.net
> Subject: Re: [PATCH] fff-network: Evaluate ETH0MAC based on ROUTERMAC
> 
> Hi
> 
> Puh .. Das ist alles eine riesen XXASDASDSXXX .. :(
> 
> Am Dienstag, den 14.11.2017, 11:40 +0100 schrieb Adrian Schmutzler:
> > All ONE_PORT devices except mr3020 use phy0 (w2mesh) for the
> > ROUTERMAC. Thus, instead of evaluating w2ap's MAC address, we can just
> > use the flipped ROUTERMAC for ETH0MAC.
> >
> > This should also work for the mr3020, which uses eth0.
> Oh man. Der hat sogar ein ETHMESHMAC gesetzt. Das sollte ja dann ohne
> Switch gar nicht gehen?
> 
> Dieses ganze ONE_PORT geraffel ist Müll!
> 
> Kann mir keiner erzählen, dass das so richtig ist:
> uci del uci set network.ethmesh.ifname
> 
> 
> >
> > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> >
> > ---
> >
> > UNTESTED.
> >
> > This is an alternative to the other ETH0MAC, without having to store
> > another MAC in the network.* files.
> > ---
> >  src/packages/fff/fff-network/files/usr/sbin/configurenetwork | 4 ++-
> > -
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/packages/fff/fff-
> > network/files/usr/sbin/configurenetwork b/src/packages/fff/fff-
> > network/files/usr/sbin/configurenetwork
> > index 89dd239..8df7655 100755
> > --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> > +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> > @@ -150,7 +150,7 @@ if [ "$ONE_PORT" = "YES" ] && ( ! uci -q get
> > network.$SWITCHDEV.ifname || [ "$FO
> >          uci set network.mesh.ifname="bat0"
> >          uci set network.wan.ifname="eth1" #eth1 because it is default
> > in config file
> >          uci set network.ethmesh.ifname="$SWITCHDEV"
> > -        ETH0MAC="w2ap"
> > +        ETH0MAC=1
> 
> Ich würde es besser finden, wenn hier nicht ne Variable auf 1 gesetzt wird,
> sondern wenn gleich der entsprechende Code ausgeführt wird. Man könnte
> ggfs auch in eine Funktion auslagern.
> 
> Generell stellt sich mir die Frage, ob man das ganze Thema nicht lieber
> komplett über den Haufen wirft. Ich bin mir grad nicht ganz sicher, ob man
> mit dem hin und her wirklich vorran kommt. Ich würde das zwar irgendwie
> lieber erst nach einem Release angehen, aber die Funktionalität von dem
> configurenetwork zu durchdringen ist echt schwer!
> 
> Tim
> >      fi
> >      uci commit
> >  fi
> > @@ -196,7 +196,7 @@ fi
> >  if [[ -n "$ETH0MAC" ]]; then
> >          echo "Fixing MAC on eth0"
> >          sleep 10
> > -        NEW_MACADDR=$(cat "/sys/class/net/${ETH0MAC}/address")
> > +        NEW_MACADDR=$(macFlipLocalBit "$ROUTERMAC")
> >          uci set network.eth0.macaddr=$NEW_MACADDR
> >          uci commit
> >          ifconfig eth0 down
> > --
> > 2.7.4
> >
Adrian Schmutzler Dec. 22, 2017, 2:37 p.m.
Hallo nochmal,

habe jetzt erst ganz verstanden, worauf du hinauswillst.

Ich bau ne Funktion und lager das aus.
Die kann man auch gleich so bauen, dass sie für ROUTERMAC und ETHMESHMAC funktioniert, das ist fast der gleiche Code.

Anmerkung zum uci:
Ich glaube uci set gibt den namen zurück, den uci del dann benutzt. _Könnte_ funktionieren ...

Grüße

Adrian

> -----Original Message-----
> From: Tim Niemeyer [mailto:tim@tn-x.org]
> Sent: Freitag, 22. Dezember 2017 15:01
> To: Adrian Schmutzler <freifunk@adrianschmutzler.de>; franken-
> dev@freifunk.net
> Subject: Re: [PATCH] fff-network: Evaluate ETH0MAC based on ROUTERMAC
> 
> Hi
> 
> Puh .. Das ist alles eine riesen XXASDASDSXXX .. :(
> 
> Am Dienstag, den 14.11.2017, 11:40 +0100 schrieb Adrian Schmutzler:
> > All ONE_PORT devices except mr3020 use phy0 (w2mesh) for the
> > ROUTERMAC. Thus, instead of evaluating w2ap's MAC address, we can just
> > use the flipped ROUTERMAC for ETH0MAC.
> >
> > This should also work for the mr3020, which uses eth0.
> Oh man. Der hat sogar ein ETHMESHMAC gesetzt. Das sollte ja dann ohne
> Switch gar nicht gehen?
> 
> Dieses ganze ONE_PORT geraffel ist Müll!
> 
> Kann mir keiner erzählen, dass das so richtig ist:
> uci del uci set network.ethmesh.ifname
> 
> 
> >
> > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> >
> > ---
> >
> > UNTESTED.
> >
> > This is an alternative to the other ETH0MAC, without having to store
> > another MAC in the network.* files.
> > ---
> >  src/packages/fff/fff-network/files/usr/sbin/configurenetwork | 4 ++-
> > -
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/packages/fff/fff-
> > network/files/usr/sbin/configurenetwork b/src/packages/fff/fff-
> > network/files/usr/sbin/configurenetwork
> > index 89dd239..8df7655 100755
> > --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> > +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> > @@ -150,7 +150,7 @@ if [ "$ONE_PORT" = "YES" ] && ( ! uci -q get
> > network.$SWITCHDEV.ifname || [ "$FO
> >          uci set network.mesh.ifname="bat0"
> >          uci set network.wan.ifname="eth1" #eth1 because it is default
> > in config file
> >          uci set network.ethmesh.ifname="$SWITCHDEV"
> > -        ETH0MAC="w2ap"
> > +        ETH0MAC=1
> 
> Ich würde es besser finden, wenn hier nicht ne Variable auf 1 gesetzt wird,
> sondern wenn gleich der entsprechende Code ausgeführt wird. Man könnte
> ggfs auch in eine Funktion auslagern.
> 
> Generell stellt sich mir die Frage, ob man das ganze Thema nicht lieber
> komplett über den Haufen wirft. Ich bin mir grad nicht ganz sicher, ob man
> mit dem hin und her wirklich vorran kommt. Ich würde das zwar irgendwie
> lieber erst nach einem Release angehen, aber die Funktionalität von dem
> configurenetwork zu durchdringen ist echt schwer!
> 
> Tim
> >      fi
> >      uci commit
> >  fi
> > @@ -196,7 +196,7 @@ fi
> >  if [[ -n "$ETH0MAC" ]]; then
> >          echo "Fixing MAC on eth0"
> >          sleep 10
> > -        NEW_MACADDR=$(cat "/sys/class/net/${ETH0MAC}/address")
> > +        NEW_MACADDR=$(macFlipLocalBit "$ROUTERMAC")
> >          uci set network.eth0.macaddr=$NEW_MACADDR
> >          uci commit
> >          ifconfig eth0 down
> > --
> > 2.7.4
> >
Tim Niemeyer Dec. 31, 2017, 2:47 p.m.
Hi Adrian

Am Freitag, den 22.12.2017, 15:37 +0100 schrieb Adrian Schmutzler:
> Anmerkung zum uci:
> Ich glaube uci set gibt den namen zurück, den uci del dann benutzt.
> _Könnte_ funktionieren ...

Hm.. Nö..

# uci get nodewatcher.@script[0].error_level
0

# uci set nodewatcher.@script[0].error_level
uci: Invalid argument

# uci del uci set nodewatcher.@script[0].error_level
Usage: uci [<options>] <command> [<arguments>]
[..]

Ich bleib dabei... Alles doof ;) 

[..]fff/fff-network/files/usr/sbin/configurenetwork:134

Tim