[PATCH v2 1/2] fff-network: Introduce function to set MAC on device

Tim Niemeyer tim at tn-x.org
Sa Jan 20 14:39:24 CET 2018


Am Samstag, den 20.01.2018, 13:52 +0100 schrieb
mail at adrianschmutzler.de:
> Hallo Tim,
> 
> ich habe die Änderung bewusst nicht eingebaut, weil es mir so lieber
> ist.
Es wäre gut gewesen, dass zu kommunizieren. Ich habe mir extra Zeit
genommen den Patch anzuschauen und halt eine Anmerkung gefunden. Beim
zweiten anschauen das selbe wieder gefunden. Das ist dann halt echt
ärgerlich.

> Meine Lösung stellt eine Verbesserung der alten Lösung dar, aber eine
> weniger weitreichende als dir vorschwebt. Ich möchte aber bewusst die
> Devices (zunächst) separat festlegen. Deine automatische Bestimmung
> stellt dann eine weitere Verallgemeinerung dar, die ich in einem
> eigenen Patch sehen (probieren, testen, ...) möchte. Dies ist auf
> Basis dieses Patches dann relativ einfach möglich.
Ich sehe das als kleinere Verbesserung an. Das Ziel der Funktion sollte
sich ja damit decken.

Wie dem auch sei, durch den Patch 2/2 wird das dann eh obsolete.

> Da wir also hier zunächst ein effektive Verbesserung haben, und das
> von dir beschriebene Problem etwas ist, was vorher schon da war,
> möchte ich diesen Patch gerne so lassen. Danach können wir gerne
> separat über die allgemeinere Lösung diskutieren. Entsprechend bitte
> ich, auf dieser Basis zu reviewen.
> 
> Ob ich iface oder interface schreibe ist mir hingegen egal, das kann
> ich gerne noch ändern.
Dann müsstest du aber dev glaube ich noch umbenennen. Ich glaube das
wird dann ifname werden müssen.

Tim

> Beste Grüße
> 
> Adrian
> 
> 
> > -----Original Message-----
> > From: Tim Niemeyer [mailto:tim at tn-x.org]
> > Sent: Samstag, 20. Januar 2018 13:45
> > To: Adrian Schmutzler <freifunk at adrianschmutzler.de>; franken-
> > dev at freifunk.net
> > Subject: Re: [PATCH v2 1/2] fff-network: Introduce function to set
> > MAC on
> > device
> > 
> > Moin Adrian
> > 
> > Von meinen bisherigen Review-Anmerkungen wurde offenbar nichts
> > umgesetzt, vielleicht vergessen/übersehen. Daher hier nochmal.
> > 
> > Am Mittwoch, den 03.01.2018, 00:34 +0100 schrieb Adrian Schmutzler:
> > > > Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> > > 
> > > ---
> > > 
> > > Changes in v2:
> > > - Suppress output
> > > ---
> > >  .../fff-network/files/lib/functions/fff/network    | 31
> > > +++++++++++++++++++
> > >  .../fff-network/files/usr/sbin/configurenetwork    | 36
> > > +++-------------------
> > >  2 files changed, 35 insertions(+), 32 deletions(-)
> > > 
> > > diff --git
> > > a/src/packages/fff/fff-network/files/lib/functions/fff/network
> > > b/src/packages/fff/fff-network/files/lib/functions/fff/network
> > > index dc26938..a8d53b3 100644
> > > --- a/src/packages/fff/fff-
> > > network/files/lib/functions/fff/network
> > > +++ b/src/packages/fff/fff-
> > > network/files/lib/functions/fff/network
> > > @@ -96,3 +96,34 @@ macFlipLocalBit() {
> > > >  	echo "$mac" | awk -F: '{
> > > > printf("%02x:%s:%s:%s:%s:%s\n",
> > 
> > xor(("0x"$1),2), $2, $3, $4, $5, $6) }'
> > > >  	return 0
> > > 
> > >  }
> > > +
> > > +fixMac() {
> > > > +	# Update MAC address on device/interface
> > > > +	#
> > > 
> > > +	# fixMac <newmac> <dev> <iface> <overwrite (optional)>
> > 
> > <iface> würde ich in <interface> (entsprechend UCI) umbenennen
> > <dev>
> > hier ganz raus
> > 
> > > +	#
> > > > +	# newmac: MAC address to be set
> > > > +	# dev: Device to be updated (e.g. br-mesh)
> > > > +	# iface: Interface to be updated (e.g. mesh)
> > > > +	# overwrite: If non-zero, the MAC is always replaced;
> > > > if not set,
> > > > +the MAC is only written if none is present
> > > 
> > > +
> > > > +	local newmac=$1
> > > 
> > > +	local dev=$2
> > 
> > dev raus.
> > 
> > > +	local iface=$3
> > > +	local overwrite=$4
> > 
> > Hier dann:
> > network_get_physdev dev $interface
> > 
> > Und natürlich im Header noch ergänzen:
> > . /lib/functions/network.sh
> > 
> > > +
> > > > +	if uci -q get "network.${iface}.macaddr" > /dev/null
> > > > && [ ! -n
> > 
> > "$overwrite" ] ; then
> > > > +		echo "MAC for ${iface} is already set"
> > > > +	else
> > > > +		echo "Fixing MAC on ${dev} (${iface})"
> > > > +		sleep 10
> > > 
> > > +
> > > > +		uci set "network.${iface}.macaddr=$newmac"
> > > > +		uci -q commit network
> > > 
> > > +
> > > > +		ifconfig "$dev" down
> > > > +		ifconfig "$dev" hw ether "$newmac"
> > > > +		ifconfig "$dev" up
> > > > +		/etc/init.d/network restart
> > > > +	fi
> > > 
> > > +}
> > > diff --git
> > > a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> > > b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> > > index df50540..281f4d4 100755
> > > --- a/src/packages/fff/fff-
> > > network/files/usr/sbin/configurenetwork
> > > +++ b/src/packages/fff/fff-
> > > network/files/usr/sbin/configurenetwork
> > > @@ -159,40 +159,12 @@ fi
> > > 
> > >  /etc/init.d/network restart
> > > 
> > > -if [[ -n "$ETHMESHMAC" ]]; then
> > > -    if uci get network.ethmesh.macaddr
> > > -    then
> > > -        echo "MAC for ethmesh is set already"
> > > -    else
> > > -        echo "Fixing MAC on $SWITCHDEV.3 (ethmesh)"
> > > -        sleep 10
> > > -
> > > -        uci set network.ethmesh.macaddr=$ETHMESHMAC
> > > -        uci commit network
> > > -
> > > -        ifconfig $SWITCHDEV.3 down
> > > -        ifconfig $SWITCHDEV.3 hw ether $ETHMESHMAC
> > > -        ifconfig $SWITCHDEV.3 up
> > > -        /etc/init.d/network restart
> > > -    fi
> > > +if [ -n "$ETHMESHMAC" ]; then
> > > +    fixMac "$ETHMESHMAC" "${SWITCHDEV}.3" "ethmesh"
> > 
> > Da durch, dass wir hier das harte Interface dann nicht mehr
> > brauchen,
> > könnten wir bei den ONE_PORT's auch einfach die ETHMESHMAC auf
> > "$(macFlipLocalBit "$ROUTERMAC")"
> > setzen.
> > 
> > Tim
> > 
> > >  fi
> > > 
> > > -if [[ -n "$ROUTERMAC" ]]; then
> > > -    if uci get network.mesh.macaddr
> > > -    then
> > > -        echo "MAC for mesh is set already"
> > > -    else
> > > -        echo "Fixing MAC on br-mesh (mesh)"
> > > -        sleep 10
> > > -
> > > -        uci set network.mesh.macaddr=$ROUTERMAC
> > > -        uci commit network
> > > -
> > > -        ifconfig br-mesh down
> > > -        ifconfig br-mesh hw ether $ROUTERMAC
> > > -        ifconfig br-mesh up
> > > -        /etc/init.d/network restart
> > > -    fi
> > > +if [ -n "$ROUTERMAC" ]; then
> > > +    fixMac "$ROUTERMAC" "br-mesh" "mesh"
> > >  fi
> > > 
> > >  if [[ -n "$ETH0MAC" ]]; then
> > > --
> > > 2.7.4
> > > 
> 
> 
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 488 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180120/32a31805/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev