163 lines
4.4 KiB
Bash
163 lines
4.4 KiB
Bash
#
|
|
# Bash Completion routine for create_ap
|
|
#
|
|
|
|
_use_filedir() {
|
|
if [[ $(type -t _filedir) == "function" ]]; then
|
|
_filedir
|
|
return 0
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
_create_ap() {
|
|
local awk_cmd='
|
|
($1 ~ /^-/) {
|
|
for (i = 1; i <= NF; i++) {
|
|
if ($i ~ /,$/) {
|
|
print substr ($i, 0, length ($i)-1)
|
|
}
|
|
else {
|
|
print $i
|
|
break
|
|
}
|
|
}
|
|
}
|
|
'
|
|
|
|
local cur prev opts
|
|
COMPREPLY=()
|
|
cur="$2"
|
|
prev="$3"
|
|
opts=$("$1" --help | awk "$awk_cmd")
|
|
|
|
case "$prev" in
|
|
-h|--help)
|
|
# No Options
|
|
;;
|
|
--version)
|
|
# No Options
|
|
;;
|
|
-c)
|
|
# Refer http://en.wikipedia.org/wiki/List_of_WLAN_channels
|
|
opts=$(
|
|
iw list | grep ' MHz \[[[:digit:]]\+\] ' |
|
|
grep -v 'no IR\|disabled' |
|
|
sed 's/.*\[\(.*\)\].*/\1/' | sort -n | uniq
|
|
)
|
|
;;
|
|
-w)
|
|
opts="1 2 1+2"
|
|
;;
|
|
-n)
|
|
# No Options
|
|
;;
|
|
-m)
|
|
opts="nat bridge none"
|
|
;;
|
|
--psk)
|
|
# No Options
|
|
;;
|
|
--hidden)
|
|
# No Options
|
|
;;
|
|
--ieee80211n)
|
|
# No Options
|
|
;;
|
|
--ht_capab)
|
|
# Refer http://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
|
|
opts='
|
|
[LDPC] [HT40-] [HT40+] [SMPS-STATIC] [SMPS-DYNAMIC]
|
|
[GF] [SHORT-GI-20] [SHORT-GI-40] [TX-STBC]
|
|
[RX-STBC1] [RX-STBC12] [RX-STBC123] [DELAYED-BA]
|
|
[MAX-AMSDU-7935] [DSSS_CCK-40] [40-INTOLERANT]
|
|
[LSIG-TXOP-PROT]
|
|
'
|
|
;;
|
|
--country)
|
|
local reg_file=/usr/lib/crda/regulatory.bin
|
|
if command -v regdbdump > /dev/null && [[ -f "$reg_file" ]]; then
|
|
local country_awk_cmd='
|
|
($1 ~ /^country/) {
|
|
print substr ($2, 0, length ($2)-1)
|
|
}
|
|
'
|
|
opts=$(regdbdump "$reg_file" 2>/dev/null | awk "$country_awk_cmd")
|
|
else
|
|
opts='
|
|
AD AE AF AI AL AM AN AR AS AT AU AW AZ BA BB BD BE
|
|
BF BG BH BL BM BN BO BR BS BT BY BZ CA CF CH CI CL
|
|
CN CO CR CX CY CZ DE DK DM DO DZ EC EE EG ES ET FI
|
|
FM FR GB GD GE GF GH GL GP GR GT GU GY HK HN HR HT
|
|
HU ID IE IL IN IR IS IT JM JO JP KE KH KN KP KR KW
|
|
KY KZ LB LC LI LK LS LT LU LV MA MC MD ME MF MH MK
|
|
MN MO MP MQ MR MT MU MW MX MY NG NI NL NO NP NZ OM
|
|
PA PE PF PG PH PK PL PM PR PT PW PY QA RE RO RS RU
|
|
RW SA SE SG SI SK SN SR SV SY TC TD TG TH TN TR TT
|
|
TW TZ UA UG US UY UZ VC VE VI VN VU WF WS YE YT ZA
|
|
ZW 00
|
|
'
|
|
fi
|
|
;;
|
|
--freq-band)
|
|
opts="2.4 5"
|
|
;;
|
|
--driver)
|
|
# Refer http://w1.fi/cgit/hostap/tree/src/drivers
|
|
# Not going to implement
|
|
;;
|
|
--no-virt)
|
|
# No Options
|
|
;;
|
|
--no-haveged)
|
|
# No Options
|
|
;;
|
|
--fix-unmanaged)
|
|
# No Options
|
|
;;
|
|
--mac)
|
|
# Not going to implement
|
|
;;
|
|
--daemon)
|
|
# No Options
|
|
;;
|
|
--stop)
|
|
local stop_awk_cmd='$1 ~ /^[0-9]+$/'
|
|
opts=$("$1" --list-running | awk "$stop_awk_cmd")
|
|
;;
|
|
--list-running)
|
|
# No Options
|
|
;;
|
|
--list-clients)
|
|
local clients_awk_cmd='$1 ~ /^[0-9]+$/'
|
|
opts=$("$1" --list-running | awk "$clients_awk_cmd")
|
|
;;
|
|
--no-dns)
|
|
# No Options
|
|
;;
|
|
--dhcp-dns)
|
|
# Not going to implement
|
|
;;
|
|
--mkconfig)
|
|
_use_filedir && return 0
|
|
;;
|
|
--config)
|
|
_use_filedir && return 0
|
|
;;
|
|
-g)
|
|
# Not going to implement
|
|
;;
|
|
-d)
|
|
# No Options
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
COMPREPLY=( $(compgen -W "$opts" -- $cur) )
|
|
return 0
|
|
}
|
|
complete -F _create_ap create_ap
|
|
|
|
# vim: set ft=sh:
|