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

Tim Niemeyer tim at tn-x.org
Sa Jan 20 13:45:03 CET 2018


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/8375a629/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev