[v7] Configure the Node a routable IPv6 ULA

Submitted by Tim Niemeyer on Oct. 8, 2017, 1:28 p.m.

Details

Message ID 20171008132831.19308-1-tim@tn-x.org
State Superseded
Headers show

Commit Message

Tim Niemeyer Oct. 8, 2017, 1:28 p.m.
From: Adrian Schmutzler <freifunk@adrianschmutzler.de>

Signed-off-by: Christian Dresel <fff@chrisi01.de>
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Signed-off-by: Tim Niemeyer <tim@tn-x.org>

---

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     | 34 ++++++++++++++++++++++
 1 file changed, 34 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 62b3b3b..c4815b9 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -161,6 +161,40 @@  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,\\,,' -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 ! ( 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
+			suffix=$(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'\//')
+			if ! ( ip -6 addr show dev br-mesh | grep -q "$addr" ) ; then
+				ip -6 addr add $addr dev br-mesh
+				echo "Set ULA EUI-64 address 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

Adrian Schmutzler Oct. 8, 2017, 1:36 p.m.
Hallo,

siehe unten.

> -----Original Message-----
> From: Tim Niemeyer [mailto:tim@tn-x.org]
> Sent: Sonntag, 8. Oktober 2017 15:29
> To: franken-dev@freifunk.net
> Cc: Adrian Schmutzler <freifunk@adrianschmutzler.de>; Christian Dresel
> <fff@chrisi01.de>; Tim Niemeyer <tim@tn-x.org>
> Subject: [PATCH v7] Configure the Node a routable IPv6 ULA
> 
> From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> 
> Signed-off-by: Christian Dresel <fff@chrisi01.de>
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> 
> ---
> 
> 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     | 34
> ++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 62b3b3b..c4815b9 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -161,6 +161,40 @@ 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,\\,,' -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 ! ( ip -6 addr show dev br-mesh | grep -q "$addr"
) ;

Macht das hier überhaupt Sinn, zwei Zeilen vorher hätten wir die Adressen in
jedem Fall gelöscht, das if macht also keinen Sinn, oder?


> 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
> +			suffix=$(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)

Im br-mesh ist ein Leerzeichen!

> +			addr=$(echo $prefix | sed -e 's/\//'$suffix'\//')

Hier müsste man wieder das Prefix reparieren, also einfach meine Zeile
kopieren.

> +			if ! ( ip -6 addr show dev br-mesh | grep -q "$addr"
) ;

Hier gilt das gleiche wie fürs erste if?!

Grüße

Adrian

> then
> +				ip -6 addr add $addr dev br-mesh
> +				echo "Set ULA EUI-64 address 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.11.0
Tim Niemeyer Oct. 8, 2017, 1:49 p.m.
Hi

Am Sonntag, den 08.10.2017, 15:36 +0200 schrieb mail@adrianschmutzler.de:
> Hallo,
> 
> siehe unten.
> 
> > -----Original Message-----
> > > > From: Tim Niemeyer [mailto:tim@tn-x.org]
> > Sent: Sonntag, 8. Oktober 2017 15:29
> > To: franken-dev@freifunk.net
> > > > Cc: Adrian Schmutzler <freifunk@adrianschmutzler.de>; Christian Dresel
> > > > > > <fff@chrisi01.de>; Tim Niemeyer <tim@tn-x.org>
> > Subject: [PATCH v7] Configure the Node a routable IPv6 ULA
> > 
> > > > From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> > 
> > > > Signed-off-by: Christian Dresel <fff@chrisi01.de>
> > > > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> > > > Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> > 
> > ---
> > 
> > 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     | 34
> > ++++++++++++++++++++++
> >  1 file changed, 34 insertions(+)
> > 
> > diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > index 62b3b3b..c4815b9 100755
> > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -161,6 +161,40 @@ 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,\\,,' -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 ! ( ip -6 addr show dev br-mesh | grep -q "$addr"
> 
> ) ;
> 
> Macht das hier überhaupt Sinn, zwei Zeilen vorher hätten wir die Adressen in
> jedem Fall gelöscht, das if macht also keinen Sinn, oder?

Nö. Eigentlich nicht. ;)

Ich hatte das übernommen. :(

Aber ich werde dem einen Sinn geben, in dem ich die neuen Adressen beim
Löschen rausnehme. Das hat den Vorteil, dass das Gerät einfach
erreichbar bleibt.

> > 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
> > > > +			suffix=$(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)
> 
> Im br-mesh ist ein Leerzeichen!
Opsi..

> 
> > +			addr=$(echo $prefix | sed -e 's/\//'$suffix'\//')
> 
> Hier müsste man wieder das Prefix reparieren, also einfach meine Zeile
> kopieren.
Achja. Das Espace Zeichen..

> > +			if ! ( ip -6 addr show dev br-mesh | grep -q "$addr"
> 
> ) ;
> 
> Hier gilt das gleiche wie fürs erste if?!
Richtig.

Tim

> 
> Grüße
> 
> Adrian
> 
> > then
> > > > +				ip -6 addr add $addr dev br-mesh
> > > > +				echo "Set ULA EUI-64 address 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.11.0
> 
>