[PATCH 1/2] fff-network: Get MAC from wifi device instead of wifi network

Adrian Schmutzler mail at adrianschmutzler.de
Mo Nov 6 11:11:43 CET 2017


Moin.

Ich kann noch beim wa860re und cpe210 Testen, die sind ja zu meiner
Überraschung als nicht verified markiert.

Der Code für die w2ap-Geräte ist so lang, dass da in meinen Augen eine
externe Funktion Sinn macht, auch wenn es im Moment nur vier Mal verwendet
wird. Ist ja eigtl eine allgemeine Funktionalität, die auch an anderer
Stelle relevant sein könnte.

Ggf. auch mal hier kucken:
https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff
-network/files/lib/functions/fff/network

Unter ipEUIsuffix: Der awk macht fast das gleiche, ist aber für mein Auge
geschmeidiger. Ich würde eine Funktion da mit reinbauen:

macShiftBit() { 
 	# Returns a MAC address with shifted bit (a8:bb:cc:dd:ee:ff) 
 	# based on the mac address (aa:bb:cc:bb:ee:ff) of a specified device
 	# 
 	# Argument: name of device (e.g. phy0) 
 
 	[ $# -ne "1" ] && return 1 
 
  	local dev=$1 
 
  	awk -F: '{ printf("%02x:%s:%s:%s:%s:%s\n", xor(("0x"$1),2), $2, $3,
$4, $5, $6) }' "sys/class/ieee80211/${dev}/macaddress" 
 	return 0 
 }

Beste Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Montag, 6. November 2017 10:53
> To: franken-dev at freifunk.net
> Subject: [PATCH 1/2] fff-network: Get MAC from wifi device instead of wifi
> network
> 
> Using wifi devices makes it possible to get mac address without having to
> configure wifi networks.
> 
> Signed-off-by: Fabian Bläse <fabian at blaese.de>
> ---
> This patch should be tested extensively.
> 
> It's important, that
>  - br-mesh has the mac address printed on the device
>  - w2mesh, w5mesh and ethmesh have unique mac addresses
> 
> The changes for the following devices have been verified:
>  - tl-wa850re-v1: Christian Dresel
>  - tl-wa901nd-v2: Fabian Bläse
>  - tl-wdr3500-v1: Tim Niemeyer
>  - tl-wdr3600-v1: Adrian Schmutzler
>  - tl-wdr4300-v1: Christian Dresel
>  - tl-wdr4900-v1: Fabian Bläse
>  - ubnt-bullet-m: Christian Dresel
>  - ubnt-nano-m: Christian Dresel
> 
> 
> Everything from here hasn't been verified on a real device.
> 
> The following devices only have one phy, so phy0 should have the same
> address as wXmesh:
>  - tl-wa860re-v1
>  - tl-wr740n-v4
>  - tl-wr741nd-v2
>  - tl-wr741nd-v4
>  - ubnt-loco-m-xw
>  - ubnt-unifi
> 
> The following devices have multiple phy, so it has been systematically
> guessed, which phy is the correct one:
>  - tl-wdr4310-v1
> 
> The following devices used wXap before, which should have the mac address
> of phyX with it's locally administered bit flipped:
>  - tl-wr1043nd-v1
>  - cpe210
>  - cpe510
> 
>  src/packages/fff/fff-network/ar71xx/network.cpe210         | 5 ++++-
>  src/packages/fff/fff-network/ar71xx/network.cpe510         | 5 ++++-
>  src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1 | 5 ++++-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4   | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4  | 2 +-
> src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m  | 2 +-
> src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m    | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.ubnt-unifi     | 2 +-
>  src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1 | 5 ++++-
>  18 files changed, 30 insertions(+), 18 deletions(-)
> 
> diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe210
> b/src/packages/fff/fff-network/ar71xx/network.cpe210
> index a7a91bc..4723d9a 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.cpe210
> +++ b/src/packages/fff/fff-network/ar71xx/network.cpe210
> @@ -6,8 +6,11 @@ CLIENT_PORTS="0t"
>  WAN_PORTS="0t"
>  BATMAN_PORTS="0t"
> 
> +# use mac address from phy0 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
>  ROUTERMAC=$(cat /sys/class/net/eth0/address) -ETHMESHMAC=$(cat
> /sys/class/net/w2ap/address)
> 
>  . /etc/network.mode
> 
> diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe510
> b/src/packages/fff/fff-network/ar71xx/network.cpe510
> index d5f946f..736e313 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.cpe510
> +++ b/src/packages/fff/fff-network/ar71xx/network.cpe510
> @@ -6,7 +6,10 @@ CLIENT_PORTS="0t"
>  WAN_PORTS="0t"
>  BATMAN_PORTS="0t"
> 
> -ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
> +# use mac address from phy0 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
> 
>  . /etc/network.mode
> 
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> b/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> index e859a9b..59b96df 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 1 2"
>  WAN_PORTS=
>  BATMAN_PORTS="0t 3 4"
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> index 1ba9c24..73e7703 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> index 1ba9c24..73e7703 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> index 1ba9c24..73e7703 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> index 12f49e2..97190bd 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> @@ -4,5 +4,8 @@ CLIENT_PORTS="3 4 5t"
>  WAN_PORTS="0 5t"
>  BATMAN_PORTS="1 2 5t"
> 
> -ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
> +# use mac address from phy0 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
>  ROUTERMAC=$(cat /sys/class/net/eth0/address) diff --git
> a/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> index 114ba49..334e498 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> @@ -6,4 +6,4 @@ WAN_PORTS=
>  BATMAN_PORTS="2 3 0t"
> 
>  ETHMESHMAC=$(cat /sys/class/net/eth1/address) -ROUTERMAC=$(cat
> /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> index 5f2300d..c8ddd0f 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> @@ -6,4 +6,4 @@ WAN_PORTS=
>  BATMAN_PORTS="3 4 0t"
> 
>  ETHMESHMAC=$(cat /sys/class/net/eth1/address) -ROUTERMAC=$(cat
> /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> index 114ba49..334e498 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> @@ -6,4 +6,4 @@ WAN_PORTS=
>  BATMAN_PORTS="2 3 0t"
> 
>  ETHMESHMAC=$(cat /sys/class/net/eth1/address) -ROUTERMAC=$(cat
> /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> b/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> index d293f06..452a2f0 100644
> --- a/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> +++ b/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> @@ -4,5 +4,8 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
> +# use mac address from phy1 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy1/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy1/macaddress | cut -d: -f2-6)
>  ROUTERMAC=$(cat /sys/class/net/eth0/address)
> --
> 2.14.2
> 
> --
> franken-dev mailing list
> franken-dev at freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net



Mehr Informationen über die Mailingliste franken-dev