[PATCH v8] fff-hoods: Use channel provided by gateway

Adrian Schmutzler freifunk at adrianschmutzler.de
Do Okt 26 08:57:12 CEST 2017


ALTERNATIVE PATCH: This prevents setup if a channel
is missing (json defective)

I personally however still prefer v7 with default channel

Changes in v2:
- rebase due to conflict with 802.11s

Changes in v3:
- Fix wrong variable name introduced in v2

Changes in v4:
- Fixed comment
- Fixed channel comparison for wXsta

Changes in v5:
- Make radio in wifiAddPhyCond local

Changes in v6:
- Rebase

Changes in v7:
- Check if channel set and default otherwise
- Remove obsolete channel variables at beginning of script

Changes in v8:
- Exit if channel missing

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
Signed-off-by: Fabian Bläse <fabian at blaese.de>
---
 .../fff/fff-hoods/files/usr/sbin/configurehood     | 27 ++++++++++++++--------
 .../fff-wireless/files/lib/functions/fff/wireless  | 17 +++++++-------
 2 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
index 88f6f53..b30e942 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -28,9 +28,6 @@ hasInternet() {
 	return 1
 }
 
-chan2ghz="1"
-chan5ghz="36"
-
 # Hidden AP check
 
 if [ -f /tmp/hiddenapflag ]; then
@@ -78,12 +75,17 @@ else
 		fi
 		#now we look for phy and add this
 		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" "2" "auto")"
+			radio5="$(wifiAddPhyCond "$phy" "5" "auto5")"
+			if [ -n "$radio5" ] ; then
+				radio="$radio5"
+				staiface="w5sta"
+			else
+				staiface="w2sta"
+			fi
 
 			#and here we add the station
-			if ! wifiAddSta "$radio" "config.franken.freifunk.net" "configSta"; then
+			if ! wifiAddSta "$radio" "config.franken.freifunk.net" "configSta" "$staiface" ; then
 				echo "Can't add Sta interface on $radio."
 				exit 1
 			else
@@ -128,17 +130,22 @@ if [ -s /tmp/keyxchangev2data ]; then
 		json_get_var mesh_essid mesh_essid
 		json_get_var essid essid
 		json_get_var ntpip ntp_ip
-		# i think the next things we don't active this in the first version! we can do it later
-		#json_get_var channel2 channel2
+		# Additional parameters may be activated in future versions
+		json_get_var chan2ghz channel2
 		#json_get_var mode2 mode2
 		json_get_var mesh_type2 mesh_type2
-		#json_get_var channel5 channel5
+		json_get_var chan5ghz channel5
 		#json_get_var mode5 mode5
 		json_get_var mesh_type5 mesh_type5
 		#json_get_var protocol protocol
 		
 		json_select ".." # back to root
 
+		if ! ([ -n "$chan2ghz" ] && [ -n "$chan5ghz" ]) ; then
+			# If channel is missing, do nothing
+			exit 0
+		fi
+
 		echo "Setting hood name: $hood"
 		uci set "system. at system[0].hood=$hood"
 
diff --git a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
index 7e418c2..b1ff5a9 100644
--- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
+++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
@@ -25,7 +25,10 @@ wifiAddPhy() {
 	local channel=$2
 	local radio="radio$(echo "$phy" | tr -d -C "0-9")"
 	local hwmode="11g"
-	if [ "$channel" -gt "14" ]; then
+	if [ "$channel" = "auto5" ] ; then
+		hwmode="11a"
+		channel="auto"
+	elif ( ! [ "$channel" = "auto" ] ) && [ "$channel" -gt "14" ]; then
 		hwmode="11a"
 	fi
 
@@ -60,7 +63,7 @@ wifiAddPhyCond() {
 	local freq=$2
 	local channel=$3
 	local radio=""
-	
+
 	if iw phy "$phy" info | grep -q -m1 "${freq}... MHz"; then
 		radio="$(wifiAddPhy "$phy" "$channel")"
 		if [ -z "$radio" ]; then
@@ -148,21 +151,17 @@ wifiAddAP() {
 }
 
 wifiAddSta() {
-	if [ $# -ne "3" ]
+	if [ $# -ne "4" ]
 	then
-		echo "Usage: wifiAddSta <radio> <essid> <network>"
+		echo "Usage: wifiAddSta <radio> <essid> <network> <iface>"
 		return 1
 	fi
 
 	local radio=$1
 	local essid=$2
 	local network=$3
+	local iface=$4
 
-	local channel=$(uci get "wireless.${radio}.channel")
-	local iface="w2sta"
-	if [ "$channel" -gt "14" ]; then
-		iface="w5sta"
-	fi
 	uci batch <<-__EOF__
 		set wireless.${iface}='wifi-iface'
 		set wireless.${iface}.device='${radio}'
-- 
2.7.4



Mehr Informationen über die Mailingliste franken-dev