configurehood: Provide options to disable AP and Mesh for WiFi

Submitted by Adrian Schmutzler on March 8, 2018, 8:43 p.m.

Details

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

Commit Message

Adrian Schmutzler March 8, 2018, 8:43 p.m.
By providing
uci set fff.wifi.disableap=1
and
uci set fff.wifi.disablemesh=1
one can disable wXap and wXmesh, respectively.

This affects all interfaces if 2.4 AND 5 GHz are present.

To apply the settings after having changed uci, one has to
uci commit fff
rm /www/hood/keyxchangev2data
configurehood

Fixes #97.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 .../fff/fff-hoods/files/usr/sbin/configurehood     | 26 ++++++++++++----------
 1 file changed, 14 insertions(+), 12 deletions(-)

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 76fdfd8..81228b9 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -264,24 +264,26 @@  if [ -s "$hoodfile" ]; then
 			radio5="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
 			[ -n "$radio5" ] && radio="$radio5"
 
-			if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
+			if ( ! [ "$(uci -q get 'fff.wifi.disableap')" = "1" ] ) && ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
 				echo "Can't add AP interface on $radio."
 				exit 1
 			fi
 
-			# add 802.11s mesh if type == "802.11s"
-			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
-				if ! wifiAddMesh "$radio" "$mesh_id"; then
-					echo "Can't add Mesh interface on $radio."
-					exit 1
+			if ( ! [ "$(uci -q get 'fff.wifi.disablemesh')" = "1" ] ) ; then
+				# add 802.11s mesh if type == "802.11s"
+				if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
+					if ! wifiAddMesh "$radio" "$mesh_id"; then
+						echo "Can't add Mesh interface on $radio."
+						exit 1
+					fi
 				fi
-			fi
 
-			# add IBSS mesh if type == "ibss"
-			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
-				if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
-					echo "Can't add AdHocMesh interface on $radio."
-					exit 1
+				# add IBSS mesh if type == "ibss"
+				if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
+					if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
+						echo "Can't add AdHocMesh interface on $radio."
+						exit 1
+					fi
 				fi
 			fi
 		done

Comments

Robert Langhammer March 9, 2018, 8:04 a.m.
Hi Adrian,

die beiden uci settings finde ich recht gut. Ich fände es schöner, wenn
man die beiden vorbelegen würde. Das wäre dann selbsterklärend und man
muss nicht im Wiki danach suchen.

Wenn man das für 2,4 und 5 GHz noch trennen würde, könnte man z.b über 5
nur meshen und über 2,4 AP machen. Ist das sinnvoll?

Noch was Allgemeines; wenn im shebang #!/bin/sh steht, sollte man kein
bash Zeug verwenden. Kein == , auch kein [[ oder globbing patterns im test.

Robert


Am 08.03.2018 um 21:43 schrieb Adrian Schmutzler:
> By providing
> uci set fff.wifi.disableap=1
> and
> uci set fff.wifi.disablemesh=1
> one can disable wXap and wXmesh, respectively.
>
> This affects all interfaces if 2.4 AND 5 GHz are present.
>
> To apply the settings after having changed uci, one has to
> uci commit fff
> rm /www/hood/keyxchangev2data
> configurehood
>
> Fixes #97.
>
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> ---
>  .../fff/fff-hoods/files/usr/sbin/configurehood     | 26 ++++++++++++----------
>  1 file changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 76fdfd8..81228b9 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -264,24 +264,26 @@ if [ -s "$hoodfile" ]; then
>  			radio5="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
>  			[ -n "$radio5" ] && radio="$radio5"
>  
> -			if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
> +			if ( ! [ "$(uci -q get 'fff.wifi.disableap')" = "1" ] ) && ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
>  				echo "Can't add AP interface on $radio."
>  				exit 1
>  			fi
>  
> -			# add 802.11s mesh if type == "802.11s"
> -			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
> -				if ! wifiAddMesh "$radio" "$mesh_id"; then
> -					echo "Can't add Mesh interface on $radio."
> -					exit 1
> +			if ( ! [ "$(uci -q get 'fff.wifi.disablemesh')" = "1" ] ) ; then
> +				# add 802.11s mesh if type == "802.11s"
> +				if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
> +					if ! wifiAddMesh "$radio" "$mesh_id"; then
> +						echo "Can't add Mesh interface on $radio."
> +						exit 1
> +					fi
>  				fi
> -			fi
>  
> -			# add IBSS mesh if type == "ibss"
> -			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
> -				if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
> -					echo "Can't add AdHocMesh interface on $radio."
> -					exit 1
> +				# add IBSS mesh if type == "ibss"
> +				if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
> +					if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
> +						echo "Can't add AdHocMesh interface on $radio."
> +						exit 1
> +					fi
>  				fi
>  			fi
>  		done
Adrian Schmutzler March 9, 2018, 8:10 a.m.
Hallo Robert,

man könnte natürlich auch 2.4 und 5 GHz trennen. Das wird dann allerdings
etwas weniger schlank im Code. Deshalb habe ich (zunächst) darauf
verzichtet.

Zwecks == usw.: Das war vorher so und ich wollte es nicht ändern,
gelegentlich könnte man hier mal einen Cleanup-Patch machen (wenn der Rest
durch ist).

Bitte auch beachten, dass man beim ersten uci set vorher

uci set fff.wifi=fff

machen muss, um den Block anzulegen.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of robert
> Sent: Freitag, 9. März 2018 09:05
> To: franken-dev@freifunk.net
> Subject: Re: [PATCH] configurehood: Provide options to disable AP and Mesh
> for WiFi
> 
> Hi Adrian,
> 
> die beiden uci settings finde ich recht gut. Ich fände es schöner, wenn
man
> die beiden vorbelegen würde. Das wäre dann selbsterklärend und man muss
> nicht im Wiki danach suchen.
> 
> Wenn man das für 2,4 und 5 GHz noch trennen würde, könnte man z.b über
> 5 nur meshen und über 2,4 AP machen. Ist das sinnvoll?
> 
> Noch was Allgemeines; wenn im shebang #!/bin/sh steht, sollte man kein
> bash Zeug verwenden. Kein == , auch kein [[ oder globbing patterns im
test.
> 
> Robert
> 
> 
> Am 08.03.2018 um 21:43 schrieb Adrian Schmutzler:
> > By providing
> > uci set fff.wifi.disableap=1
> > and
> > uci set fff.wifi.disablemesh=1
> > one can disable wXap and wXmesh, respectively.
> >
> > This affects all interfaces if 2.4 AND 5 GHz are present.
> >
> > To apply the settings after having changed uci, one has to uci commit
> > fff rm /www/hood/keyxchangev2data configurehood
> >
> > Fixes #97.
> >
> > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> > ---
> >  .../fff/fff-hoods/files/usr/sbin/configurehood     | 26
++++++++++++-------
> ---
> >  1 file changed, 14 insertions(+), 12 deletions(-)
> >
> > diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > index 76fdfd8..81228b9 100755
> > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -264,24 +264,26 @@ if [ -s "$hoodfile" ]; then
> >  			radio5="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
> >  			[ -n "$radio5" ] && radio="$radio5"
> >
> > -			if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0";
then
> > +			if ( ! [ "$(uci -q get 'fff.wifi.disableap')" = "1"
] ) && !
> > +wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
> >  				echo "Can't add AP interface on $radio."
> >  				exit 1
> >  			fi
> >
> > -			# add 802.11s mesh if type == "802.11s"
> > -			if ( [ -n "$radio5" ] && [ "$mesh_type5" ==
"802.11s" ]
> ) || [ "$mesh_type2" == "802.11s" ]; then
> > -				if ! wifiAddMesh "$radio" "$mesh_id"; then
> > -					echo "Can't add Mesh interface on
> $radio."
> > -					exit 1
> > +			if ( ! [ "$(uci -q get 'fff.wifi.disablemesh')" =
"1" ] ) ;
> then
> > +				# add 802.11s mesh if type == "802.11s"
> > +				if ( [ -n "$radio5" ] && [ "$mesh_type5" ==
> "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
> > +					if ! wifiAddMesh "$radio"
"$mesh_id";
> then
> > +						echo "Can't add Mesh
> interface on $radio."
> > +						exit 1
> > +					fi
> >  				fi
> > -			fi
> >
> > -			# add IBSS mesh if type == "ibss"
> > -			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ]
) ||
> [ "$mesh_type2" == "ibss" ]; then
> > -				if ! wifiAddAdHocMesh "$radio"
> "$mesh_essid" "$mesh_bssid"; then
> > -					echo "Can't add AdHocMesh interface
> on $radio."
> > -					exit 1
> > +				# add IBSS mesh if type == "ibss"
> > +				if ( [ -n "$radio5" ] && [ "$mesh_type5" ==
> "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
> > +					if ! wifiAddAdHocMesh "$radio"
> "$mesh_essid" "$mesh_bssid"; then
> > +						echo "Can't add AdHocMesh
> interface on $radio."
> > +						exit 1
> > +					fi
> >  				fi
> >  			fi
> >  		done
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Adrian Schmutzler March 9, 2018, 10:04 a.m.
Hallo Robert,

Nachtrag:

Vorbelegen bei der fffconfig ist nicht trivial, da die Datei ja bei jedem
Update mitgenommen wird. Die alte fffconfig ohne Parameter würde also die
neue überschreiben.

Was man machen kann ist ein uci-default Skript, dass bei einem firstboot
diese Parameter und anlegt, wenn sie nicht da sind.

Ich werde mal einen Patch in diese Richtung bauen, dann kann man das
konkreter diskutieren.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of robert
> Sent: Freitag, 9. März 2018 09:05
> To: franken-dev@freifunk.net
> Subject: Re: [PATCH] configurehood: Provide options to disable AP and Mesh
> for WiFi
> 
> Hi Adrian,
> 
> die beiden uci settings finde ich recht gut. Ich fände es schöner, wenn
man
> die beiden vorbelegen würde. Das wäre dann selbsterklärend und man muss
> nicht im Wiki danach suchen.
> 
> Wenn man das für 2,4 und 5 GHz noch trennen würde, könnte man z.b über
> 5 nur meshen und über 2,4 AP machen. Ist das sinnvoll?
> 
> Noch was Allgemeines; wenn im shebang #!/bin/sh steht, sollte man kein
> bash Zeug verwenden. Kein == , auch kein [[ oder globbing patterns im
test.
> 
> Robert
> 
> 
> Am 08.03.2018 um 21:43 schrieb Adrian Schmutzler:
> > By providing
> > uci set fff.wifi.disableap=1
> > and
> > uci set fff.wifi.disablemesh=1
> > one can disable wXap and wXmesh, respectively.
> >
> > This affects all interfaces if 2.4 AND 5 GHz are present.
> >
> > To apply the settings after having changed uci, one has to uci commit
> > fff rm /www/hood/keyxchangev2data configurehood
> >
> > Fixes #97.
> >
> > Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> > ---
> >  .../fff/fff-hoods/files/usr/sbin/configurehood     | 26
++++++++++++-------
> ---
> >  1 file changed, 14 insertions(+), 12 deletions(-)
> >
> > diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > index 76fdfd8..81228b9 100755
> > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -264,24 +264,26 @@ if [ -s "$hoodfile" ]; then
> >  			radio5="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
> >  			[ -n "$radio5" ] && radio="$radio5"
> >
> > -			if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0";
then
> > +			if ( ! [ "$(uci -q get 'fff.wifi.disableap')" = "1"
] ) && !
> > +wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
> >  				echo "Can't add AP interface on $radio."
> >  				exit 1
> >  			fi
> >
> > -			# add 802.11s mesh if type == "802.11s"
> > -			if ( [ -n "$radio5" ] && [ "$mesh_type5" ==
"802.11s" ]
> ) || [ "$mesh_type2" == "802.11s" ]; then
> > -				if ! wifiAddMesh "$radio" "$mesh_id"; then
> > -					echo "Can't add Mesh interface on
> $radio."
> > -					exit 1
> > +			if ( ! [ "$(uci -q get 'fff.wifi.disablemesh')" =
"1" ] ) ;
> then
> > +				# add 802.11s mesh if type == "802.11s"
> > +				if ( [ -n "$radio5" ] && [ "$mesh_type5" ==
> "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
> > +					if ! wifiAddMesh "$radio"
"$mesh_id";
> then
> > +						echo "Can't add Mesh
> interface on $radio."
> > +						exit 1
> > +					fi
> >  				fi
> > -			fi
> >
> > -			# add IBSS mesh if type == "ibss"
> > -			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ]
) ||
> [ "$mesh_type2" == "ibss" ]; then
> > -				if ! wifiAddAdHocMesh "$radio"
> "$mesh_essid" "$mesh_bssid"; then
> > -					echo "Can't add AdHocMesh interface
> on $radio."
> > -					exit 1
> > +				# add IBSS mesh if type == "ibss"
> > +				if ( [ -n "$radio5" ] && [ "$mesh_type5" ==
> "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
> > +					if ! wifiAddAdHocMesh "$radio"
> "$mesh_essid" "$mesh_bssid"; then
> > +						echo "Can't add AdHocMesh
> interface on $radio."
> > +						exit 1
> > +					fi
> >  				fi
> >  			fi
> >  		done
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net