ipq8065: adjust SS USB PHY power settings
[openwrt/openwrt.git] / package / network / services / authsae / files / lib / wifi / authsae.sh
index daa43eb22a0d8a520b9bef8f98fa0387b6e468a0..75be48e47396842993fc8b8eb22c1ffec37f0d13 100644 (file)
@@ -1,28 +1,32 @@
 authsae_start_interface() {
-       local device="$1" # to use the correct channel
-       local vif="$2"
-       local band
-
-       cfgfile="/var/run/authsae-$vif.cfg"
-       config_get channel "$device" channel
-       config_get hwmode "$device" hwmode
-       config_get htmode "$device" htmode
-       config_get ifname "$vif" ifname
-       config_get key "$vif" key
-       config_get mesh_id "$vif" mesh_id
-       config_get mcast_rate "$vif" mcast_rate "12"
+       local mcast_rate
+       local mesh_htmode
+       local mesh_band
+       local authsae_conf_file="/var/run/authsae-$ifname.cfg"
+       local ret=1
+
+       json_get_vars mcast_rate mesh_id
+       set_default mcast_rate "12000"
 
        case "$htmode" in
-               HT20|HT40+|HT40-) htmode="$htmode";;
-               NOHT|none|*) htmode="none";;
+               HT20|HT40+|HT40-) mesh_htmode="$htmode";;
+               *) mesh_htmode="none";;
        esac
 
        case "$hwmode" in
-               *g*) band=11g;;
-               *a*) band=11a;;
+               *g*) mesh_band=11g;;
+               *a*) mesh_band=11a;;
        esac
 
-       cat > "$cfgfile" <<EOF
+       if [ "$mcast_rate" -gt 1000 ]; then
+               # authsae only allows integers as rates and not things like 5.5
+               mcval=$(($mcast_rate / 1000))
+       else
+               # compat: to still support mbit/s rates
+               mcval="$mcast_rate"
+       fi
+
+       cat > "$authsae_conf_file" <<EOF
 authsae:
 {
  sae:
@@ -41,13 +45,21 @@ authsae:
     passive = 0;
     debug = 0;
     mediaopt = 1;
-    band = "$band";
+    band = "$mesh_band";
     channel = $channel;
-    htmode = "$htmode";
-    mcast-rate = $mcast_rate;
+    htmode = "$mesh_htmode";
+    mcast-rate = $mcval;
   };
 };
 EOF
-       ifconfig "$ifname" up
-       meshd-nl80211 -i "$ifname" -s "$mesh_id" -c "$cfgfile" -B
+
+       /usr/bin/meshd-nl80211 -i "$ifname" -s "$mesh_id" -c "$authsae_conf_file" </dev/null >/dev/null 2>/dev/null &
+       authsae_pid="$!"
+       ret="$?"
+
+       echo $authsae_pid > /var/run/authsae-$ifname.pid
+       wireless_add_process "$authsae_pid" "/usr/bin/meshd-nl80211" 1
+
+       [ "$ret" != 0 ] && wireless_setup_vif_failed AUTHSAE_FAILED
+       return $ret
 }