1*621120a2SAndroid Build Coastguard Workerfunction freq_to_chan { 2*621120a2SAndroid Build Coastguard Worker local freq=$1 3*621120a2SAndroid Build Coastguard Worker 4*621120a2SAndroid Build Coastguard Worker if [[ $freq -ge 2412 && $freq -le 2472 ]]; then 5*621120a2SAndroid Build Coastguard Worker band="11g" 6*621120a2SAndroid Build Coastguard Worker chan=$(( ($freq - 2412) / 5 + 1 )) 7*621120a2SAndroid Build Coastguard Worker else 8*621120a2SAndroid Build Coastguard Worker band="11a" 9*621120a2SAndroid Build Coastguard Worker chan=$(( ($freq - 5000) / 5 )) 10*621120a2SAndroid Build Coastguard Worker fi 11*621120a2SAndroid Build Coastguard Worker echo "$chan $band" 12*621120a2SAndroid Build Coastguard Worker} 13*621120a2SAndroid Build Coastguard Worker 14*621120a2SAndroid Build Coastguard Worker 15*621120a2SAndroid Build Coastguard Workerfunction meshup-iw { 16*621120a2SAndroid Build Coastguard Worker local if=$1 17*621120a2SAndroid Build Coastguard Worker local meshid=$2 18*621120a2SAndroid Build Coastguard Worker local freq=$3 19*621120a2SAndroid Build Coastguard Worker local ip=$4 20*621120a2SAndroid Build Coastguard Worker 21*621120a2SAndroid Build Coastguard Worker ip link set $if down 22*621120a2SAndroid Build Coastguard Worker iw dev $if set type mp 23*621120a2SAndroid Build Coastguard Worker ip link set $if up 24*621120a2SAndroid Build Coastguard Worker iw dev $if mesh join $meshid freq $freq 25*621120a2SAndroid Build Coastguard Worker ip addr add $ip/24 dev $if 2>/dev/null 26*621120a2SAndroid Build Coastguard Worker} 27*621120a2SAndroid Build Coastguard Worker 28*621120a2SAndroid Build Coastguard Workerfunction meshup-wpas-open { 29*621120a2SAndroid Build Coastguard Worker local if=$1 30*621120a2SAndroid Build Coastguard Worker local meshid=$2 31*621120a2SAndroid Build Coastguard Worker local freq=$3 32*621120a2SAndroid Build Coastguard Worker local ip=$4 33*621120a2SAndroid Build Coastguard Worker 34*621120a2SAndroid Build Coastguard Worker ip link set $if down 35*621120a2SAndroid Build Coastguard Worker iw dev $if set type mp 36*621120a2SAndroid Build Coastguard Worker ip link set $if up 37*621120a2SAndroid Build Coastguard Worker 38*621120a2SAndroid Build Coastguard Worker cat<<EOM > /tmp/wpas-$if.conf 39*621120a2SAndroid Build Coastguard Workernetwork={ 40*621120a2SAndroid Build Coastguard Worker ssid="wmediumd-mesh" 41*621120a2SAndroid Build Coastguard Worker mode=5 42*621120a2SAndroid Build Coastguard Worker frequency=$freq 43*621120a2SAndroid Build Coastguard Worker key_mgmt=NONE 44*621120a2SAndroid Build Coastguard Worker} 45*621120a2SAndroid Build Coastguard WorkerEOM 46*621120a2SAndroid Build Coastguard Worker wpa_supplicant -i $if -c /tmp/wpas-$if.conf & 47*621120a2SAndroid Build Coastguard Worker ip addr add $ip/24 dev $if 2>/dev/null 48*621120a2SAndroid Build Coastguard Worker} 49*621120a2SAndroid Build Coastguard Worker 50*621120a2SAndroid Build Coastguard Workerfunction meshup-wpas { 51*621120a2SAndroid Build Coastguard Worker local if=$1; 52*621120a2SAndroid Build Coastguard Worker local meshid=$2; 53*621120a2SAndroid Build Coastguard Worker local freq=$3; 54*621120a2SAndroid Build Coastguard Worker local ip=$4; 55*621120a2SAndroid Build Coastguard Worker 56*621120a2SAndroid Build Coastguard Worker ip link set $if down 57*621120a2SAndroid Build Coastguard Worker iw dev $if set type mp 58*621120a2SAndroid Build Coastguard Worker ip link set $if up 59*621120a2SAndroid Build Coastguard Worker 60*621120a2SAndroid Build Coastguard Worker cat<<EOM > /tmp/wpas-$if.conf 61*621120a2SAndroid Build Coastguard Workernetwork={ 62*621120a2SAndroid Build Coastguard Worker ssid="wmediumd-mesh-sec" 63*621120a2SAndroid Build Coastguard Worker mode=5 64*621120a2SAndroid Build Coastguard Worker frequency=$freq 65*621120a2SAndroid Build Coastguard Worker key_mgmt=SAE 66*621120a2SAndroid Build Coastguard Worker psk="some passphrase" 67*621120a2SAndroid Build Coastguard Worker} 68*621120a2SAndroid Build Coastguard WorkerEOM 69*621120a2SAndroid Build Coastguard Worker wpa_supplicant -i $if -c /tmp/wpas-$if.conf & 70*621120a2SAndroid Build Coastguard Worker ip addr add $ip/24 dev $if 2>/dev/null 71*621120a2SAndroid Build Coastguard Worker} 72*621120a2SAndroid Build Coastguard Worker 73*621120a2SAndroid Build Coastguard Workerfunction meshup-authsae { 74*621120a2SAndroid Build Coastguard Worker local if=$1; 75*621120a2SAndroid Build Coastguard Worker local meshid=$2; 76*621120a2SAndroid Build Coastguard Worker local freq=$3; 77*621120a2SAndroid Build Coastguard Worker local ip=$4; 78*621120a2SAndroid Build Coastguard Worker 79*621120a2SAndroid Build Coastguard Worker ip link set $if down 80*621120a2SAndroid Build Coastguard Worker iw dev $if set type mp 81*621120a2SAndroid Build Coastguard Worker ip link set $if up 82*621120a2SAndroid Build Coastguard Worker 83*621120a2SAndroid Build Coastguard Worker chan_params=$(freq_to_chan $freq) 84*621120a2SAndroid Build Coastguard Worker read -ra ch <<< "$chan_params" 85*621120a2SAndroid Build Coastguard Worker 86*621120a2SAndroid Build Coastguard Worker cat<<EOM > /tmp/authsae-$if.conf 87*621120a2SAndroid Build Coastguard Workerauthsae: 88*621120a2SAndroid Build Coastguard Worker{ 89*621120a2SAndroid Build Coastguard Worker sae: 90*621120a2SAndroid Build Coastguard Worker { 91*621120a2SAndroid Build Coastguard Worker debug = 480; 92*621120a2SAndroid Build Coastguard Worker password = "some passphrase"; 93*621120a2SAndroid Build Coastguard Worker group = [19, 26, 21, 25, 20]; 94*621120a2SAndroid Build Coastguard Worker blacklist = 5; 95*621120a2SAndroid Build Coastguard Worker thresh = 5; 96*621120a2SAndroid Build Coastguard Worker lifetime = 3600; 97*621120a2SAndroid Build Coastguard Worker }; 98*621120a2SAndroid Build Coastguard Worker meshd: 99*621120a2SAndroid Build Coastguard Worker { 100*621120a2SAndroid Build Coastguard Worker meshid = "wmediumd-mesh-sec"; 101*621120a2SAndroid Build Coastguard Worker interface = "wlan0"; 102*621120a2SAndroid Build Coastguard Worker passive = 0; 103*621120a2SAndroid Build Coastguard Worker secured = 1; 104*621120a2SAndroid Build Coastguard Worker debug = 1; 105*621120a2SAndroid Build Coastguard Worker mediaopt = 1; 106*621120a2SAndroid Build Coastguard Worker band = "${ch[1]}"; 107*621120a2SAndroid Build Coastguard Worker channel = ${ch[0]}; 108*621120a2SAndroid Build Coastguard Worker }; 109*621120a2SAndroid Build Coastguard Worker}; 110*621120a2SAndroid Build Coastguard WorkerEOM 111*621120a2SAndroid Build Coastguard Worker meshd-nl80211 -i $if -c /tmp/authsae-$if.conf & 112*621120a2SAndroid Build Coastguard Worker ip addr add $ip/24 dev $if 2>/dev/null 113*621120a2SAndroid Build Coastguard Worker} 114*621120a2SAndroid Build Coastguard Worker 115*621120a2SAndroid Build Coastguard Workerfunction addr2phy { 116*621120a2SAndroid Build Coastguard Worker local addr=$1; 117*621120a2SAndroid Build Coastguard Worker grep -l $addr /sys/class/ieee80211/phy*/macaddress | \ 118*621120a2SAndroid Build Coastguard Worker awk -F '/' '{print $(NF-1)}' 119*621120a2SAndroid Build Coastguard Worker} 120