| function freq_to_chan { |
| local freq=$1 |
| |
| if [[ $freq -ge 2412 && $freq -le 2472 ]]; then |
| band="11g" |
| chan=$(( ($freq - 2412) / 5 + 1 )) |
| else |
| band="11a" |
| chan=$(( ($freq - 5000) / 5 )) |
| fi |
| echo "$chan $band" |
| } |
| |
| |
| function meshup-iw { |
| local if=$1 |
| local meshid=$2 |
| local freq=$3 |
| local ip=$4 |
| |
| ip link set $if down |
| iw dev $if set type mp |
| ip link set $if up |
| iw dev $if mesh join $meshid freq $freq |
| ip addr add $ip/24 dev $if 2>/dev/null |
| } |
| |
| function meshup-wpas-open { |
| local if=$1 |
| local meshid=$2 |
| local freq=$3 |
| local ip=$4 |
| |
| ip link set $if down |
| iw dev $if set type mp |
| ip link set $if up |
| |
| cat<<EOM > /tmp/wpas-$if.conf |
| network={ |
| ssid="wmediumd-mesh" |
| mode=5 |
| frequency=$freq |
| key_mgmt=NONE |
| } |
| EOM |
| wpa_supplicant -i $if -c /tmp/wpas-$if.conf & |
| ip addr add $ip/24 dev $if 2>/dev/null |
| } |
| |
| function meshup-wpas { |
| local if=$1; |
| local meshid=$2; |
| local freq=$3; |
| local ip=$4; |
| |
| ip link set $if down |
| iw dev $if set type mp |
| ip link set $if up |
| |
| cat<<EOM > /tmp/wpas-$if.conf |
| network={ |
| ssid="wmediumd-mesh-sec" |
| mode=5 |
| frequency=$freq |
| key_mgmt=SAE |
| psk="some passphrase" |
| } |
| EOM |
| wpa_supplicant -i $if -c /tmp/wpas-$if.conf & |
| ip addr add $ip/24 dev $if 2>/dev/null |
| } |
| |
| function meshup-authsae { |
| local if=$1; |
| local meshid=$2; |
| local freq=$3; |
| local ip=$4; |
| |
| ip link set $if down |
| iw dev $if set type mp |
| ip link set $if up |
| |
| chan_params=$(freq_to_chan $freq) |
| read -ra ch <<< "$chan_params" |
| |
| cat<<EOM > /tmp/authsae-$if.conf |
| authsae: |
| { |
| sae: |
| { |
| debug = 480; |
| password = "some passphrase"; |
| group = [19, 26, 21, 25, 20]; |
| blacklist = 5; |
| thresh = 5; |
| lifetime = 3600; |
| }; |
| meshd: |
| { |
| meshid = "wmediumd-mesh-sec"; |
| interface = "wlan0"; |
| passive = 0; |
| secured = 1; |
| debug = 1; |
| mediaopt = 1; |
| band = "${ch[1]}"; |
| channel = ${ch[0]}; |
| }; |
| }; |
| EOM |
| meshd-nl80211 -i $if -c /tmp/authsae-$if.conf & |
| ip addr add $ip/24 dev $if 2>/dev/null |
| } |
| |
| function addr2phy { |
| local addr=$1; |
| grep -l $addr /sys/class/ieee80211/phy*/macaddress | \ |
| awk -F '/' '{print $(NF-1)}' |
| } |