38db906a24
* --list is still supported for backward compatability, but will neither have an entry in help output nor will have bash completion support
153 lines
4.1 KiB
Bash
153 lines
4.1 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
|
|
;;
|
|
--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:
|