local country_code="$(wireless_get_reg_domain)"
local dfs="on"
local encryption
+ local environment="${WIRELESS_DEFAULT_ENVIRONMENT}"
local key
local mode
local ssid
--encryption=*)
encryption=$(cli_get_val "${1}")
;;
+ --environment=*)
+ environment="$(cli_get_val "${1}")"
+ ;;
--key=*)
key=$(cli_get_val "${1}")
;;
assert isset key
fi
+ # Check wireless environment
+ if ! wireless_environment_is_valid "${environment}"; then
+ error "Invalid wireless environment: ${environment}"
+ return ${EXIT_ERROR}
+ fi
+
# With channel 0, ACS must be supported
if [ ${channel} -eq 0 ] && ! wireless_supports_acs "${device}"; then
error "ACS requested, but not supported by ${device}"
# Advertise country code and maximum transmission power
print "ieee80211d=1"
+ print "country_code=${country_code}"
+
+ # Wireless Environment
+ case "${environment}" in
+ indoor)
+ print "country3=0x49"
+ country3
+ ;;
+ outdoor)
+ print "country3=0x4f"
+ ;;
+ indoor+outdoor)
+ print "country3=0x20"
+ ;;
+ esac
# Enable Radar Detection
if enabled dfs && wireless_supports_dfs "${device}"; then
fi
print "channel=${channel}"
- print "country_code=${country_code}"
print "ignore_broadcast_ssid=${ignore_broadcast_ssid}"
if contains_spaces "${ssid}"; then
["802.11g"]="20 40"
)
+WIRELESS_ENVIRONMENTS=( "indoor+outdoor" "indoor" "outdoor" )
+WIRELESS_DEFAULT_ENVIRONMENT="${WIRELESS_ENVIRONMENTS[0]}"
+
cli_wireless() {
local action=${1}
shift 1
phy_supports_dfs "${phy}"
}
+
+wireless_environment_is_valid() {
+ local environment="${1}"
+
+ list_match "${environment}" "${WIRELESS_ENVIRONMENTS[@]}"
+}
--channel-bandwidth="${CHANNEL_BANDWIDTH}" \
--dfs="${DFS}" \
--encryption="${ENCRYPTION}" \
+ --environment="${ENVIRONMENT}" \
--key="${KEY}" \
--mode="${MODE}" \
--ssid="${SSID}" \
HOOK_PORT_PATTERN="${PORT_PATTERN_ACCESSPOINT}"
HOOK_SETTINGS="ADDRESS BROADCAST_SSID CHANNEL CHANNEL_BANDWIDTH DFS MODE PHY"
-HOOK_SETTINGS="${HOOK_SETTINGS} ENCRYPTION KEY SSID"
+HOOK_SETTINGS="${HOOK_SETTINGS} ENCRYPTION ENVIRONMENT KEY SSID"
ADDRESS=$(mac_generate)
BROADCAST_SSID=on
# Perform radar detection by default when possible
DFS="on"
+ENVIRONMENT="${WIRELESS_DEFAULT_ENVIRONMENT}"
+
hook_check_settings() {
assert isset ADDRESS
assert ismac ADDRESS
assert [ ${#KEY} -ge 8 ]
assert [ ${#KEY} -le 63 ]
fi
+
+ assert wireless_environment_is_valid "${ENVIRONMENT}"
}
hook_parse_cmdline() {
--encryption=*)
ENCRYPTION=$(cli_get_val "${1}")
;;
+ --environment=*)
+ ENVIRONMENT="$(cli_get_val "${1}")"
+
+ if ! wireless_environment_is_valid "${ENVIRONMENT}"; then
+ error "Invalid wireless environment: ${ENVIRONMENT}"
+ return ${EXIT_ERROR}
+ fi
+ ;;
--key=*)
KEY=$(cli_get_val "${1}")
;;