[PATCH] fff-network/fff-hoods: Calculate fdff IPs based on uci

Adrian Schmutzler mail at adrianschmutzler.de
Fr Nov 24 12:05:48 CET 2017


Tested on WA860RE.

Also fixes the missing fdff addresses there in 2 of 2 test cases.

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> Of Adrian Schmutzler
> Sent: Donnerstag, 23. November 2017 21:26
> To: franken-dev at freifunk.net
> Subject: [PATCH] fff-network/fff-hoods: Calculate fdff IPs based on uci
> 
> If the mac is read from /sys/class/net/${iface}/address, some devices
> (WA860RE, Picostation) will not set the fdff addresses.
> 
> This can be fixed by using the uci value instead of the br-mesh device, as
uci
> is available instantly.
> 
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> 
> Tested-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> 
> ---
> 
> I don't believe it myself, but it seems to be this tiny change making the
> difference.
> ---
>  src/packages/fff/fff-hoods/files/usr/sbin/configurehood      | 4 ++--
>  src/packages/fff/fff-network/files/lib/functions/fff/network | 4 ++--
> src/packages/fff/fff-network/files/usr/sbin/configurenetwork | 4 ++--
>  3 files changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 822e5fc..7d86247 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -251,9 +251,9 @@ if [ -s "$hoodfile" ]; then
>  	# Set $prefix::MAC as IP
>  	if [ -n "$prefix" ] ; then
>  		prefix="$(echo "$prefix" | sed -e 's,\\,,')"
> -		addr="$(ipMacAssemble "$prefix" "br-mesh")"
> +		addr="$(ipMacAssemble "$prefix" "mesh")"
>  		addr="$(ipTidyColon "$addr")"
> -		addr_eui="$(ipEUIAssemble "$prefix" "br-mesh")"
> +		addr_eui="$(ipEUIAssemble "$prefix" "mesh")"
>  		addr_eui="$(ipTidyColon "$addr_eui")"
>  		for ip in $(ip -6 addr show dev br-mesh | grep inet6 | grep
-v -
> e " $addr" -e " $addr_eui" -e " fe80::" -e " fdff::" | cut -f6 -d " "); do
>  			ip -6 addr del "$ip" dev br-mesh
> 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..e76351b 100644
> --- a/src/packages/fff/fff-network/files/lib/functions/fff/network
> +++ b/src/packages/fff/fff-network/files/lib/functions/fff/network
> @@ -12,7 +12,7 @@ ipMacSuffix() {
> 
>  	local iface=$1
> 
> -	awk -F: '{ print "0:"$1$2":"$3$4":"$5$6 }'
> "/sys/class/net/${iface}/address"
> +	uci -q get "network.${iface}.macaddr" | awk -F: '{ print
> "0:"$1$2":"$3$4":"$5$6 }'
>  	return 0
>  }
> 
> @@ -26,7 +26,7 @@ ipEUISuffix() {
> 
>  	local iface=$1
> 
> -	awk -F: '{ printf("%02x%s:%sff:fe%s:%s%s\n", xor(("0x"$1),2), $2,
> $3, $4, $5, $6) }' "/sys/class/net/${iface}/address"
> +	uci -q get "network.${iface}.macaddr" | awk -F: '{
> printf("%02x%s:%sff:fe%s:%s%s\n", xor(("0x"$1),2), $2, $3, $4, $5, $6) }'
>  	return 0
>  }
> 
> diff --git a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> index 30787b2..8ff91b4 100755
> --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> @@ -218,7 +218,7 @@ else
> 
>      prefix="fdff:0::/64"
>      # Set $prefix::MAC as IP
> -    addr="$(ipMacAssemble "$prefix" "br-mesh")"
> +    addr="$(ipMacAssemble "$prefix" "mesh")"
>      ip -6 addr add $addr dev br-mesh
> 
>      uci -q del network.globals
> @@ -233,7 +233,7 @@ else
>      uci -q add_list network.mesh.ip6addr=$addr
> 
>      # Set $prefix::link-local as IP
> -    addr="$(ipEUIAssemble "$prefix" "br-mesh")"
> +    addr="$(ipEUIAssemble "$prefix" "mesh")"
>      ip -6 addr add $addr dev br-mesh
>      uci -q add_list network.mesh.ip6addr=$addr
> 
> --
> 2.7.4
> 
> --
> 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