[PATCH v2 1/2] fff-network/fff-hoods: Only use MAC address in network lib

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


Hi

Reviewed und applied.

Tim

Am Mittwoch, den 03.01.2018, 00:37 +0100 schrieb Adrian Schmutzler:
> Previously, IPv6 addresses were constructed by reading from
> the device config file in the function. To have more options,
> it is better to use the address itself as parameter.
> 
> By this way we can decide what we use for getting the MAC when
> calling.
> 
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> ---
>  .../fff/fff-hoods/files/usr/sbin/configurehood     |  5 ++--
>  .../fff-network/files/lib/functions/fff/network    | 28 +++++++++++-
> ----------
>  .../fff-network/files/usr/sbin/configurenetwork    |  5 ++--
>  3 files changed, 20 insertions(+), 18 deletions(-)
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index be81c48..3f74599 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -284,9 +284,10 @@ if [ -s "$hoodfile" ]; then
>  	# Set $prefix::MAC as IP
>  	if [ -n "$prefix" ] ; then
>  		prefix="$(echo "$prefix" | sed -e 's,\\,,')"
> -		addr="$(ipMacAssemble "$prefix" "br-mesh")"
> +		mac="$(cat "/sys/class/net/br-mesh/address")"
> +		addr="$(ipMacAssemble "$prefix" "$mac")"
>  		addr="$(ipTidyColon "$addr")"
> -		addr_eui="$(ipEUIAssemble "$prefix" "br-mesh")"
> +		addr_eui="$(ipEUIAssemble "$prefix" "$mac")"
>  		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 a8d53b3..61cf7f1 100644
> --- a/src/packages/fff/fff-network/files/lib/functions/fff/network
> +++ b/src/packages/fff/fff-network/files/lib/functions/fff/network
> @@ -4,29 +4,29 @@
>  
>  ipMacSuffix() {
>  	# Returns the lower 64 bits of an IPv6 address
> (0:aabb:ccdd:eeff)
> -	# based on the mac address (aa:bb:cc:bb:ee:ff) of a
> specified interface
> +	# based on the provided MAC address (aa:bb:cc:bb:ee:ff)
>  	#
> -	# Argument: name of interface (e.g. br-mesh)
> +	# Argument: MAC address (with colons)
>  
>  	[ $# -ne "1" ] && return 1
>  
> -	local iface=$1
> +	local mac=$1
>  
> -	awk -F: '{ print "0:"$1$2":"$3$4":"$5$6 }'
> "/sys/class/net/${iface}/address"
> +	echo "$mac" | awk -F: '{ print "0:"$1$2":"$3$4":"$5$6 }'
>  	return 0
>  }
>  
>  ipEUISuffix() {
>  	# Returns the EUI (interface ID, a8bb:ccff:fedd:eeff)
> -	# based on the mac address (aa:bb:cc:bb:ee:ff) of a
> specified interface
> +	# based on the provided MAC address (aa:bb:cc:bb:ee:ff)
>  	#
> -	# Argument: name of interface (e.g. br-mesh)
> +	# Argument: MAC address (with colons)
>  
>  	[ $# -ne "1" ] && return 1
>  
> -	local iface=$1
> +	local mac=$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"
> +	echo "$mac" | awk -F: '{ printf("%02x%s:%sff:fe%s:%s%s\n",
> xor(("0x"$1),2), $2, $3, $4, $5, $6) }'
>  	return 0
>  }
>  
> @@ -45,29 +45,29 @@ ipAssemble() {
>  }
>  
>  ipMacAssemble() {
> -	# Concatenates a prefix (1st argument) and a MAC-based
> suffix (interface as 2nd argument) to a merged IPv6 address
> +	# Concatenates a prefix (1st argument) and a MAC-based
> suffix (MAC address as 2nd argument) to a merged IPv6 address
>  	# (Details on prefix: Check ipAssemble(), details on suffix:
> Check ipMacSuffix())
>  
>  	[ $# -ne "2" ] && return 1
>  
>  	local prefix=$1
> -	local iface=$2
> +	local mac=$2
>  
> -	suffix="$(ipMacSuffix "$iface")"
> +	suffix="$(ipMacSuffix "$mac")"
>  	ipAssemble "$prefix" "$suffix"
>  	return 0
>  }
>  
>  ipEUIAssemble() {
> -	# Concatenates a prefix (1st argument) and an EUI-based
> suffix (interface as 2nd argument) to a merged IPv6 address
> +	# Concatenates a prefix (1st argument) and an EUI-based
> suffix (MAC address as 2nd argument) to a merged IPv6 address
>  	# (Details on prefix: Check ipAssemble(), details on suffix:
> Check ipEUISuffix())
>  
>  	[ $# -ne "2" ] && return 1
>  
>  	local prefix=$1
> -	local iface=$2
> +	local mac=$2
>  
> -	suffix="$(ipEUISuffix "$iface")"
> +	suffix="$(ipEUISuffix "$mac")"
>  	ipAssemble "$prefix" "$suffix"
>  	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 ef8dee1..ac17514 100755
> --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> @@ -166,7 +166,8 @@ else
>  
>      prefix="fdff:0::/64"
>      # Set $prefix::MAC as IP
> -    addr="$(ipMacAssemble "$prefix" "br-mesh")"
> +    mac="$(cat "/sys/class/net/br-mesh/address")"
> +    addr="$(ipMacAssemble "$prefix" "$mac")"
>      ip -6 addr add $addr dev br-mesh
>  
>      uci -q del network.globals
> @@ -181,7 +182,7 @@ else
>      uci -q add_list network.mesh.ip6addr=$addr
>  
>      # Set $prefix::link-local as IP
> -    addr="$(ipEUIAssemble "$prefix" "br-mesh")"
> +    addr="$(ipEUIAssemble "$prefix" "$mac")"
>      ip -6 addr add $addr dev br-mesh
>      uci -q add_list network.mesh.ip6addr=$addr
>  
> -- 
> 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/320bcc74/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev