HOOK_PORT_PATTERN="${PORT_PATTERN_ACCESSPOINT}"
-HOOK_SETTINGS="HOOK ADDRESS BROADCAST_SSID CHANNEL MODE PHY SSID"
-HOOK_SETTINGS="${HOOK_SETTINGS} ENCRYPTION KEY"
+HOOK_SETTINGS="ADDRESS BROADCAST_SSID CHANNEL CHANNEL_BANDWIDTH DFS MODE PHY"
+HOOK_SETTINGS="${HOOK_SETTINGS} ENCRYPTION KEY SSID"
ADDRESS=$(mac_generate)
BROADCAST_SSID=on
-CHANNEL=1
+CHANNEL=0
+CHANNEL_BANDWIDTH=
ENCRYPTION=""
KEY=""
SSID=
+# Perform radar detection by default when possible
+DFS="on"
+
hook_check_settings() {
assert isset ADDRESS
assert ismac ADDRESS
assert isset BROADCAST_SSID
assert isbool BROADCAST_SSID
assert isset CHANNEL
+ assert isbool DFS
assert isset MODE
assert isoneof MODE ${HOSTAPD_SUPPORTED_MODES}
assert isset PHY
--channel=*)
CHANNEL=$(cli_get_val "${1}")
;;
+ --channel-bandwidth=*)
+ CHANNEL_BANDWIDTH="$(cli_get_val "${1}")"
+ ;;
+ --dfs=*)
+ DFS="$(cli_get_val "${1}")"
+
+ if enabled DFS; then
+ DFS="on"
+ elif disabled DFS; then
+ DFS="off"
+ else
+ error "Invalid value for DFS: ${DFS}"
+ return ${EXIT_ERROR}
+ fi
+ ;;
--encryption=*)
ENCRYPTION=$(cli_get_val "${1}")
;;
shift
done
+ # Generate a random MAC address if none is set
+ if ! isset ADDRESS; then
+ ADDRESS="$(mac_generate)"
+ fi
+
# MODE must be set
if ! isset MODE; then
error "--mode is not set"
return ${EXIT_ERROR}
fi
+ # Channel bandwidth must match the mode
+ if isset CHANNEL_BANDWIDTH && ! wireless_channel_bandwidth_is_valid "${MODE}" "${CHANNEL_BANDWIDTH}"; then
+ error "Channel Bandwidth '${CHANNEL_BANDWIDTH}' is not supported for ${MODE}"
+ return ${EXIT_ERROR}
+ fi
+
# Save address of phy do identify it again
PHY=$(phy_get ${PHY})
PHY=$(phy_get_address ${PHY})