[PATCH v2] configurehood: Provide options to disable AP and Mesh for WiFi

Fabian Bläse fabian at blaese.de
So Jun 24 11:38:24 CEST 2018


Moin,

ich glaube wir sollten das anders angehen. Mein Vorschlag:
Das permanente Ändern der Wifi Konfiguration sollte weg. Dazu:
- Nur die fürs Hoodfile interessanten Parameter (SSID, Kanal, ..) bei configurehood ändern.
- w2sta generell nur im RAM machen (uci set ohne commit, danach revert)

Dann kann man an die einzelnen Interfaces entweder disabled-Options dran setzen oder das ganze Interface löschen.
(Es sollte natürlich im configurehood beim setzen der Parameter entsprechend geprüft werden, ob das Interface existiert)

Gruß
Fabian

> On 9. Mar 2018, at 23:43, Adrian Schmutzler <freifunk at adrianschmutzler.de> wrote:
> 
> Each WiFi interface can be disabled individually.
> 
> To apply the settings after having changed uci, one has to
> uci commit fff
> rm /www/hood/keyxchangev2data
> configurehood
> 
> Fixes #97.
> 
> Fixes misconfiguration in case of mixed IBSS/802.11s.
> 
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> 
> ---
> 
> Changes in v2:
> - Use separate settings for 2.4 and 5 GHz (an no combined setting)
> - Add default values to fff-config
> - Add comments to fff-config setup script
> - Fix double equal sign in affected area of configurehood
> - Rewrite section to reduce ifs and logical operators
> ---
> .../files/etc/uci-defaults/98-configure-fff        |  9 +++++++
> .../fff/fff-hoods/files/usr/sbin/configurehood     | 31 ++++++++++++++--------
> 2 files changed, 29 insertions(+), 11 deletions(-)
> 
> diff --git a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> index aa6ac42..8433b7f 100644
> --- a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> +++ b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> @@ -4,11 +4,19 @@
> 
> touch /etc/config/fff
> 
> +# default config values
> if ! uci -q get fff.system > /dev/null ; then
> 	uci -q set fff.system=fff
> 	uci -q set "fff.system.hostname=FFF"
> fi
> 
> +uci -q set fff.wifi=fff
> +uci -q get fff.wifi.disablew2ap > /dev/null || uci -q set "fff.wifi.disablew2ap=0"
> +uci -q get fff.wifi.disablew5ap > /dev/null || uci -q set "fff.wifi.disablew5ap=0"
> +uci -q get fff.wifi.disablew2mesh > /dev/null || uci -q set "fff.wifi.disablew2mesh=0"
> +uci -q get fff.wifi.disablew5mesh > /dev/null || uci -q set "fff.wifi.disablew5mesh=0"
> +
> +# apply config to other uci entries
> FFF_hostname=$(uci -q get "fff.system.hostname")
> test -n "${FFF_hostname}" && uci -q set "system. at system[0].hostname=${FFF_hostname}"
> test -n "${FFF_hostname}" && echo "${FFF_hostname}" > /proc/sys/kernel/hostname
> @@ -24,6 +32,7 @@ uci -q set "simple-tc.example.limit_egress=${traffic_out}"
> 
> uci -q commit
> 
> +# run configuration scripts
> poe_passthrough=$(uci -q get "fff.poe_passthrough.active")
> if [ "$poe_passthrough" = "1" ] && [ -s /usr/lib/fff-support/activate_poe_passthrough.sh ] ; then
> 	/usr/lib/fff-support/activate_poe_passthrough.sh
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index fd4126e..ae92f96 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -260,26 +260,35 @@ if [ -s "$hoodfile" ]; then
> 		fi
> 
> 		for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
> -			radio="$(wifiAddPhyCond "$phy" "2" "$chan2ghz")"
> -			radio5="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
> -			[ -n "$radio5" ] && radio="$radio5"
> +			radio="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
> +
> +			if [ -n "$radio" ] ; then
> +				# 5 GHz
> +				mesh_type="$mesh_type5"
> +				disableap="fff.wifi.disablew5ap"
> +				disablemesh="fff.wifi.disablew5mesh"
> +			else
> +				# 2.4 GHz
> +				radio="$(wifiAddPhyCond "$phy" "2" "$chan2ghz")"
> +				mesh_type="$mesh_type2"
> +				disableap="fff.wifi.disablew2ap"
> +				disablemesh="fff.wifi.disablew2mesh"
> +			fi
> 
> -			if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
> +			if [ "$(uci -q get "$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
> +			if [ "$(uci -q get "$disablemesh")" != "1" ] ; then
> +				# add 802.11s mesh if type = "802.11s"
> +				if [ "$mesh_type" = "802.11s" ] && ! wifiAddMesh "$radio" "$mesh_id"; then
> 					echo "Can't add Mesh interface on $radio."
> 					exit 1
> 				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
> +				# add IBSS mesh if type = "ibss"
> +				if [ "$mesh_type" = "ibss" ] && ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
> 					echo "Can't add AdHocMesh interface on $radio."
> 					exit 1
> 				fi
> --
> 2.7.4
> 
> --
> franken-dev mailing list
> franken-dev at freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net

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


Mehr Informationen über die Mailingliste franken-dev