diff mbox

[OpenWrt-Devel,1/2] hostapd/netifd: encrypted mesh with wpa_supplicant

Message ID 20150409235615.GA18944@makrotopia.org
State Accepted
Delegated to: Felix Fietkau
Headers show

Commit Message

Daniel Golle April 9, 2015, 11:56 p.m. UTC
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 package/network/services/hostapd/files/netifd.sh | 47 +++++++++++++++---------
 1 file changed, 29 insertions(+), 18 deletions(-)
diff mbox

Patch

diff --git a/package/network/services/hostapd/files/netifd.sh b/package/network/services/hostapd/files/netifd.sh
index 6e4b23b..b345a57 100644
--- a/package/network/services/hostapd/files/netifd.sh
+++ b/package/network/services/hostapd/files/netifd.sh
@@ -545,7 +545,7 @@  wpa_supplicant_add_network() {
 	local T="	"
 
 	local wpa_key_mgmt="WPA-PSK"
-	local scan_ssid="1"
+	local scan_ssid="scan_ssid=1"
 	local freq
 
 	[[ "$_w_mode" = "adhoc" ]] && {
@@ -556,12 +556,22 @@  wpa_supplicant_add_network() {
 			append network_data "frequency=$freq" "$N$T"
 		}
 
-		scan_ssid=0
+		scan_ssid="scan_ssid=0"
 
 		[ "$_w_driver" = "nl80211" ] ||	wpa_key_mgmt="WPA-NONE"
 	}
 
-	[[ "$_w_mode" = adhoc ]] && append network_data "$_w_modestr" "$N$T"
+	[[ "$_w_mode" = "mesh" ]] && {
+		append network_data "mode=5" "$N$T"
+		[ -n "$channel" ] && {
+			freq="$(get_freq "$phy" "$channel")"
+			append network_data "frequency=$freq" "$N$T"
+		}
+		wpa_key_mgmt="SAE"
+		scan_ssid=""
+	}
+
+	[[ "$_w_mode" = "adhoc" -o "$_w_mode" = "mesh" ]] && append network_data "$_w_modestr" "$N$T"
 
 	case "$auth_type" in
 		none) ;;
@@ -605,21 +615,22 @@  wpa_supplicant_add_network() {
 		;;
 	esac
 
-	case "$wpa" in
-		1)
-			append network_data "proto=WPA" "$N$T"
-		;;
-		2)
-			append network_data "proto=RSN" "$N$T"
-		;;
-	esac
-
-	case "$ieee80211w" in
-		[012])
-			[ "$wpa" -ge 2 ] && append network_data "ieee80211w=$ieee80211w" "$N$T"
-		;;
-	esac
+	[ "$mode" = mesh ] || {
+		case "$wpa" in
+			1)
+				append network_data "proto=WPA" "$N$T"
+			;;
+			2)
+				append network_data "proto=RSN" "$N$T"
+			;;
+		esac
 
+		case "$ieee80211w" in
+			[012])
+				[ "$wpa" -ge 2 ] && append network_data "ieee80211w=$ieee80211w" "$N$T"
+			;;
+		esac
+	}
 	local beacon_int brates mrate
 	[ -n "$bssid" ] && append network_data "bssid=$bssid" "$N$T"
 	[ -n "$beacon_int" ] && append network_data "beacon_int=$beacon_int" "$N$T"
@@ -651,7 +662,7 @@  wpa_supplicant_add_network() {
 
 	cat >> "$_config" <<EOF
 network={
-	scan_ssid=$scan_ssid
+	$scan_ssid
 	ssid="$ssid"
 	key_mgmt=$key_mgmt
 	$network_data