120 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
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)}'
 | 
						|
}
 |