[v5] Configure the Node a routable IPv6 ULA

Submitted by Adrian Schmutzler on Oct. 6, 2017, 10:48 a.m.

Details

Message ID 1507286913-1665-1-git-send-email-freifunk@adrianschmutzler.de
State Superseded
Headers show

Commit Message

Adrian Schmutzler Oct. 6, 2017, 10:48 a.m.
Signed-off-by: Christian Dresel <fff@chrisi01.de>
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>

Changes in v2:
 - Rebased onto keyXchange v2 patchset v15
 - correctly handle keyxchangev2data without reloading
 - added some quotes

Changes in v3:
 - Added route block
 - Inverted condition in address block
 - Changed if style to "grep -q"
 - Added some quotes

Changes in v4:
 - Optimized grep and sed

Changes in v5:
 - Only apply if ula_prefix is not empty
 - Remove escape sign from ula_prefix
---
 .../fff/fff-hoods/files/usr/sbin/configurehood     | 25 ++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
index 3886435..939aa57 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -184,6 +184,31 @@  if [ -s /tmp/keyxchangev2data ]; then
 			fi
 		done
 
+		# 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
+			suffix="$(awk -F: '{ print $1$2":"$3$4":"$5$6 }' /sys/class/net/br-mesh/address)"
+			addr="$(echo "$prefix" | sed -e 's,\\,,' | sed -e 's,/,'$suffix'/,')"
+			for ip in $(ip -6 addr show dev br-mesh | grep inet6 | grep -v -e "fe80::" -e "fdff::" | cut -f6 -d " "); do
+				ip -6 addr del "$ip" dev br-mesh
+			done
+			if ! ( ifconfig br-mesh | grep -q "$addr" ) ; then
+				ip -6 addr add "$addr" dev br-mesh
+				echo "Set ULA adress to br-mesh: $addr" 
+			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
+
 		echo "Loading wifi"
 		wifi
 

Comments

Fabian Blaese Oct. 6, 2017, 6:47 p.m.
Gibt es einen Grund, dass der Interface Identifier nicht im EUI-64 Format ist?

Fabian

> On 6. Oct 2017, at 12:48, Adrian Schmutzler <freifunk@adrianschmutzler.de> wrote:
> 
> Signed-off-by: Christian Dresel <fff@chrisi01.de>
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> Changes in v2:
> - Rebased onto keyXchange v2 patchset v15
> - correctly handle keyxchangev2data without reloading
> - added some quotes
> 
> Changes in v3:
> - Added route block
> - Inverted condition in address block
> - Changed if style to "grep -q"
> - Added some quotes
> 
> Changes in v4:
> - Optimized grep and sed
> 
> Changes in v5:
> - Only apply if ula_prefix is not empty
> - Remove escape sign from ula_prefix
> ---
> .../fff/fff-hoods/files/usr/sbin/configurehood     | 25 ++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 3886435..939aa57 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -184,6 +184,31 @@ if [ -s /tmp/keyxchangev2data ]; then
> 			fi
> 		done
> 
> +		# 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
> +			suffix="$(awk -F: '{ print $1$2":"$3$4":"$5$6 }' /sys/class/net/br-mesh/address)"
> +			addr="$(echo "$prefix" | sed -e 's,\\,,' | sed -e 's,/,'$suffix'/,')"
> +			for ip in $(ip -6 addr show dev br-mesh | grep inet6 | grep -v -e "fe80::" -e "fdff::" | cut -f6 -d " "); do
> +				ip -6 addr del "$ip" dev br-mesh
> +			done
> +			if ! ( ifconfig br-mesh | grep -q "$addr" ) ; then
> +				ip -6 addr add "$addr" dev br-mesh
> +				echo "Set ULA adress to br-mesh: $addr"
> +			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
> +
> 		echo "Loading wifi"
> 		wifi
> 
> --
> 2.7.4
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Adrian Schmutzler Oct. 6, 2017, 8:30 p.m.
Hallo,

die Frage habe ich auch schon gestellt.

Nachdem ich etwas drüber nachgedacht habe, sehe ich den Charme der kürzeren
Variante.

In meinen Augen am besten wäre aber, wie bei fdff beide Adressen anzubieten,
einmal die direkt aus der Mac und einmal die korrekte mit EUI-64.

Weiß aber nicht, ob das möglich ist.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Freitag, 6. Oktober 2017 20:47
> To: Adrian Schmutzler <freifunk@adrianschmutzler.de>; franken-
> dev@freifunk.net
> Subject: Re: [PATCH v5] Configure the Node a routable IPv6 ULA
> 
> Gibt es einen Grund, dass der Interface Identifier nicht im EUI-64 Format
ist?
> 
> Fabian
> 
> > On 6. Oct 2017, at 12:48, Adrian Schmutzler
> <freifunk@adrianschmutzler.de> wrote:
> >
> > Signed-off-by: Christian Dresel <fff@chrisi01.de>
> > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> >
> > Changes in v2:
> > - Rebased onto keyXchange v2 patchset v15
> > - correctly handle keyxchangev2data without reloading
> > - added some quotes
> >
> > Changes in v3:
> > - Added route block
> > - Inverted condition in address block
> > - Changed if style to "grep -q"
> > - Added some quotes
> >
> > Changes in v4:
> > - Optimized grep and sed
> >
> > Changes in v5:
> > - Only apply if ula_prefix is not empty
> > - Remove escape sign from ula_prefix
> > ---
> > .../fff/fff-hoods/files/usr/sbin/configurehood     | 25
> ++++++++++++++++++++++
> > 1 file changed, 25 insertions(+)
> >
> > diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > index 3886435..939aa57 100755
> > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -184,6 +184,31 @@ if [ -s /tmp/keyxchangev2data ]; then
> > 			fi
> > 		done
> >
> > +		# 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
> > +			suffix="$(awk -F: '{ print $1$2":"$3$4":"$5$6 }'
> /sys/class/net/br-mesh/address)"
> > +			addr="$(echo "$prefix" | sed -e 's,\\,,' | sed -e
> 's,/,'$suffix'/,')"
> > +			for ip in $(ip -6 addr show dev br-mesh | grep inet6
|
> grep -v -e "fe80::" -e "fdff::" | cut -f6 -d " "); do
> > +				ip -6 addr del "$ip" dev br-mesh
> > +			done
> > +			if ! ( ifconfig br-mesh | grep -q "$addr" ) ; then
> > +				ip -6 addr add "$addr" dev br-mesh
> > +				echo "Set ULA adress to br-mesh: $addr"
> > +			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
> > +
> > 		echo "Loading wifi"
> > 		wifi
> >
> > --
> > 2.7.4
> >
> > --
> > franken-dev mailing list
> > franken-dev@freifunk.net
> > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net