mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-06 05:54:25 +00:00
d127539291
cfg80211 is the only supported wireless API Signed-off-by: Felix Fietkau <nbd@nbd.name>
95 lines
1.9 KiB
Bash
Executable File
95 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# Copyright (C) 2006 OpenWrt.org
|
|
|
|
. /lib/functions.sh
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
Usage: $0 [config|up|down|reconf|reload|status|isup]
|
|
enables (default), disables or configures devices not yet configured.
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
ubus_wifi_cmd() {
|
|
local cmd="$1"
|
|
local dev="$2"
|
|
|
|
json_init
|
|
[ -n "$dev" ] && json_add_string device "$dev"
|
|
ubus call network.wireless "$cmd" "$(json_dump)"
|
|
}
|
|
|
|
wifi_isup() {
|
|
local dev="$1"
|
|
|
|
json_load "$(ubus_wifi_cmd "status" "$dev")"
|
|
json_get_keys devices
|
|
|
|
for device in $devices; do
|
|
json_select "$device"
|
|
json_get_var up up
|
|
[ $up -eq 0 ] && return 1
|
|
json_select ..
|
|
done
|
|
|
|
return 0
|
|
}
|
|
|
|
wifi_updown() {
|
|
cmd=down
|
|
[ enable = "$1" ] && {
|
|
ubus_wifi_cmd "$cmd" "$2"
|
|
ubus call network reload
|
|
cmd=up
|
|
}
|
|
[ reconf = "$1" ] && {
|
|
ubus call network reload
|
|
cmd=reconf
|
|
}
|
|
ubus_wifi_cmd "$cmd" "$2"
|
|
}
|
|
|
|
wifi_reload() {
|
|
ubus call network reload
|
|
}
|
|
|
|
wifi_detect_notice() {
|
|
>&2 echo "WARNING: Wifi detect is deprecated. Use wifi config instead"
|
|
>&2 echo "For more information, see commit 5f8f8a366136a07df661e31decce2458357c167a"
|
|
exit 1
|
|
}
|
|
|
|
wifi_config() {
|
|
[ -e /tmp/.config_pending ] && return
|
|
ucode /usr/share/hostap/wifi-detect.uc
|
|
[ ! -f /etc/config/wireless ] && touch /etc/config/wireless
|
|
ucode /lib/wifi/mac80211.uc | uci -q batch
|
|
|
|
for driver in $DRIVERS; do (
|
|
if eval "type detect_$driver" 2>/dev/null >/dev/null; then
|
|
eval "detect_$driver" || echo "$driver: Detect failed" >&2
|
|
else
|
|
echo "$driver: Hardware detection not supported" >&2
|
|
fi
|
|
); done
|
|
}
|
|
|
|
DEVICES=
|
|
DRIVERS=
|
|
include /lib/wifi
|
|
|
|
case "$1" in
|
|
down) wifi_updown "disable" "$2";;
|
|
detect) wifi_detect_notice ;;
|
|
config) wifi_config ;;
|
|
status) ubus_wifi_cmd "status" "$2";;
|
|
isup) wifi_isup "$2"; exit $?;;
|
|
reload) wifi_reload "$2";;
|
|
--help|help) usage;;
|
|
reconf) wifi_updown "reconf" "$2";;
|
|
''|up) wifi_updown "enable" "$2";;
|
|
*) usage; exit 1;;
|
|
esac
|