[PATCH v11] Configure the Node a routable IPv6 ULA

Christian Dresel fff at chrisi01.de
Di Okt 10 17:05:40 CEST 2017


hi

uff wurde das kompliziert... Ich muss gestehen ich versteh die hälfte
nich mehr ich kann aber sagen das es augenscheinlich tut, daher:

Tested-by: Christian Dresel <fff at chrisi01.de>
auf 1043v2 und c25

Was mich bisschen wundert:
root at Test:/www/public# ip -6 r s
[...]
fdff::/64 dev br-mesh  proto kernel  metric 256  pref medium
unreachable fdff::/64 dev lo  proto static  metric 2147483647  error
-148 pref medium
[...]

scheint nicht zu stören, ich komm problemlos über die fdff:: drauf (wie
man sieht ist die richtige route ja auch da) aber woher kommts? Gesehen
auf den 1043v2.


mfg

Christian

On 08.10.2017 18:28, Adrian Schmutzler wrote:
> Signed-off-by: Christian Dresel <fff at chrisi01.de>
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> Signed-off-by: Tim Niemeyer <tim at tn-x.org>
> 
> Changes in v11:
> - Evaluate ULA block more often
> 
> Changes in v10:
> - Replace zeros by :: in addresses
> - Use ip addresses as selector for deletion
> 
> Changes in v9:
> - Add '0:' to suffix
> - Do not delete ip addresses with same prefix
> 
> Changes in v8:
> - Do not delete new ip addresses (in case they don't differ)
> - Fixed typo in br-mesh
> - Fixed escape char in prefix
> 
> Changes in v7:
> - Add EUI64 address
> - Change ifconfig to ip
> 
> Changes in v6:
> - Typo in echo
> - Optimized sed
> 
> Changes in v5:
> - Only apply if ula_prefix is not empty
> - Remove escape sign from ula_prefix
> 
> Changes in v4:
> - Optimized grep and sed
> 
> Changes in v3:
> - Added route block
> - Inverted condition in address block
> - Changed if style to "grep -q"
> - Added some quotes
> 
> Changes in v2:
> - Rebased onto keyXchange v2 patchset v15
> - correctly handle keyxchangev2data without reloading
> - added some quotes
> ---
>  .../fff/fff-hoods/files/usr/sbin/configurehood     | 37 ++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index acac259..6ff7104 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -193,6 +193,43 @@ if [ -s /tmp/keyxchangev2data ]; then
>  	if hasInternet ; then
>  		sh /usr/sbin/vpn-select
>  	fi
> +
> +	# now we load the prefix from the hoodfile and set this to br-mesh
> +	json_select network
> +	json_get_var prefix ula_prefix
> +	# Set $prefix::MAC as IP
> +	if [ -n "$prefix" ] ; then
> +		prefix="$(echo "$prefix" | sed -e 's,\\,,')"
> +		suffix="$(awk -F: '{ print "0:"$1$2":"$3$4":"$5$6 }' /sys/class/net/br-mesh/address)"
> +		suffix_eui="$(awk -F: '{ printf("%02x%s:%sff:fe%s:%s%s\n", xor(("0x"$1),2), $2, $3, $4, $5, $6) }' /sys/class/net/br-mesh/address)"
> +		addr="$(echo "$prefix" | sed -e 's,/,'$suffix'/,')"
> +		echo $addr | grep -q "::" || addr="$(echo "$addr" | sed -e 's,:[0:]*:,::,')"
> +		addr_eui="$(echo "$prefix" | sed -e 's,/,'$suffix_eui'/,')"
> +		echo $addr_eui | grep -q "::" || addr_eui="$(echo "$addr_eui" | sed -e 's,:[0:]*:,::,')"
> +		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
> +		done
> +		if ! ( ip -6 addr show dev br-mesh | grep -q "$addr" ) ; then
> +			ip -6 addr add "$addr" dev br-mesh
> +			echo "Set ULA address to br-mesh: $addr"
> +		else
> +			echo "Address already set."
> +		fi
> +		# Set $prefix::link-local as IP
> +		if ! ( ip -6 addr show dev br-mesh | grep -q "$addr_eui" ) ; then
> +			ip -6 addr add "$addr_eui" dev br-mesh
> +			echo "Set ULA EUI-64 address to br-mesh: $addr_eui"
> +		else
> +			echo "Address already set."
> +		fi
> +		if ! ( ip -6 route show dev br-mesh | grep -q "fc00::" ) ; then
> +			ip -6 route add fc00::/7 via fe80::1 dev br-mesh
> +			echo "Set ULA route to br-mesh."
> +		else
> +			echo "Route already set."
> +		fi
> +	fi
> +	json_select ".." # back to root
>  else
>  	echo "We haven't got a file. We do nothing. We try it again in 5 minutes...";
>  	exit 0
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20171010/ffddf3f3/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev