[PATCH v2 1/2] fff-network: Get MAC from wifi device instead of wifi network
Fabian Bläse
fabian at blaese.de
So Nov 12 17:22:12 CET 2017
Geht auch aufm 1043v1.
Tested-By: Fabian Bläse <fabian at blaese.de>
Fabian
> On 11. Nov 2017, at 11:39, Fabian Bläse <fabian at blaese.de> wrote:
>
> From: Fabian Blaese <fabian at blaese.de>
>
> 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>
> ---
> Changes in v2:
> - function for flipping locally administered bit
> - use awk
>
> 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 | 7 ++++++-
> src/packages/fff/fff-network/ar71xx/network.cpe510 | 7 ++++++-
> 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 | 7 ++++++-
> 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/files/lib/functions/fff/network | 11 +++++++++++
> src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1 | 7 ++++++-
> 19 files changed, 49 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..7b00994 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.cpe210
> +++ b/src/packages/fff/fff-network/ar71xx/network.cpe210
> @@ -1,3 +1,5 @@
> +. /lib/functions/fff/network
> +
> PORTORDER="5 4"
>
> WANDEV=eth0
> @@ -6,8 +8,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=$(macFlipLocalBit "$(cat /sys/class/ieee80211/phy0/macaddress)")
> 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..597eb45 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.cpe510
> +++ b/src/packages/fff/fff-network/ar71xx/network.cpe510
> @@ -1,3 +1,5 @@
> +. /lib/functions/fff/network
> +
> PORTORDER="5 4"
>
> WANDEV=eth0
> @@ -6,7 +8,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=$(macFlipLocalBit "$(cat /sys/class/ieee80211/phy0/macaddress)")
>
> . /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..7caeaa1 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> @@ -1,8 +1,13 @@
> +. /lib/functions/fff/network
> +
> WANDEV=eth0
> SWITCHDEV=eth0
> 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=$(macFlipLocalBit "$(cat /sys/class/ieee80211/phy0/macaddress)")
> 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/files/lib/functions/fff/network b/src/packages/fff/fff-network/files/lib/functions/fff/network
> index 8dd9f77..dc26938 100644
> --- a/src/packages/fff/fff-network/files/lib/functions/fff/network
> +++ b/src/packages/fff/fff-network/files/lib/functions/fff/network
> @@ -85,3 +85,14 @@ ipTidyColon() {
> echo "$addr"
> return 0
> }
> +
> +macFlipLocalBit() {
> + # Returns given MAC-address with locally administered bit flipped
> + #
> + # Argument: MAC-address
> +
> + local mac=$1
> +
> + echo "$mac" | awk -F: '{ printf("%02x:%s:%s:%s:%s:%s\n", xor(("0x"$1),2), $2, $3, $4, $5, $6) }'
> + return 0
> +}
> 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..9caa6af 100644
> --- a/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> +++ b/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> @@ -1,8 +1,13 @@
> +. /lib/functions/fff/network
> +
> WANDEV=eth0
> SWITCHDEV=eth0
> 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=$(macFlipLocalBit "$(cat /sys/class/ieee80211/phy1/macaddress)")
> ROUTERMAC=$(cat /sys/class/net/eth0/address)
> --
> 2.14.2
>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 833 bytes
Beschreibung: Message signed with OpenPGP
URL : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20171112/f15a7b52/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev