X-Git-Url: http://git.ipfire.org/?p=people%2Fstevee%2Fnetwork.git;a=blobdiff_plain;f=src%2Fhooks%2Fzones%2Fwireless;h=553d9171e21d48f2579eed00459413e639614b77;hp=962f5fc570fe8e357b6a6766268416ee57629471;hb=607481ace435c5ceaa40fcf9aa8820cbe0915560;hpb=97877f23899b0b66f32cc890d3725661eda9160a diff --git a/src/hooks/zones/wireless b/src/hooks/zones/wireless index 962f5fc5..553d9171 100644 --- a/src/hooks/zones/wireless +++ b/src/hooks/zones/wireless @@ -21,46 +21,21 @@ . /usr/lib/network/header-zone -HOOK_SETTINGS="HOOK PHY MAC SSID KEY ENCRYPTION_MODE" - -# Default values -ADDRESS=$(mac_generate) -PHY= -SSID= -KEY= -ENCRYPTION_MODE= +HOOK_SETTINGS="HOOK ADDRESS PHY" hook_check_settings() { - assert isset SSID - - if isset ADDRESS; then - assert ismac ADDRESS - fi - + assert ismac ADDRESS assert ismac PHY - - if [ -n "${ENCRYPTION_MODE}" ]; then - assert isset KEY - fi } hook_parse_cmdline() { while [ $# -gt 0 ]; do case "${1}" in - --phy=*|--parent-device=*) - PHY=$(cli_get_val ${1}) - ;; - --encryption-mode=*) - ENCRYPTION_MODE=$(cli_get_val ${1}) - ;; --address=*) - ADDRESS=$(cli_get_val ${1}) - ;; - --ssid=*) - SSID=$(cli_get_val ${1}) + ADDRESS=$(cli_get_val "${1}") ;; - --key=*) - KEY=$(cli_get_val ${1}) + --phy=*) + PHY=$(cli_get_val "${1}") ;; *) warning "Unrecognized option: ${1}" @@ -72,6 +47,11 @@ hook_parse_cmdline() { # Just save the MAC address of the phy. PHY=$(phy_get ${PHY}) PHY=$(phy_get_address ${PHY}) + + # Generate a random MAC address if none given + if ! isset ADDRESS; then + ADDRESS="$(mac_generate)" + fi } hook_up() { @@ -81,13 +61,19 @@ hook_up() { # Read zone configuration. zone_settings_read "${zone}" - if ! device_exists ${zone}; then - # Create the wireless interface. - wireless_create ${zone} \ + # Create the wireless interface + if ! device_exists "${zone}"; then + wireless_create "${zone}" \ --phy=${PHY} \ --type="managed" \ --address="${ADDRESS}" \ - || exit $? + || return $? + fi + + # Write WPA supplicant configuration + if ! wireless_networks_write_wpa_supplicant_configuration "${zone}"; then + log ERROR "Could not write WPA supplicant configuration for ${zone}" + return ${EXIT_ERROR} fi # Start the WPA supplicant daemon. @@ -95,7 +81,7 @@ hook_up() { zone_configs_up ${zone} - exit ${EXIT_OK} + return ${EXIT_OK} } hook_down() { @@ -111,6 +97,9 @@ hook_down() { wpa_supplicant_stop ${zone} + # Remove WPA supplicant configuration + wpa_supplicant_config_destroy "${zone}" + wireless_remove ${zone} exit ${EXIT_OK} @@ -129,33 +118,35 @@ hook_status() { exit ${EXIT_ERROR} fi - cli_headline 2 "Wireless network information" - cli_print_fmt1 2 "SSID" "$(wpa_cli_status_get ${zone} ssid)" - cli_space - - cli_headline 3 "Access Point" - local bssid=$(wpa_cli_status_get ${zone} bssid) - assert isset bssid - - local frequency=$(wpa_cli_bss_get_frequency "${zone}" "${bssid}") - cli_print_fmt1 3 "Channel" "$(wireless_frequency_to_channel ${frequency}) (${frequency} MHz)" - cli_print_fmt1 3 "BSSID" "${bssid}" - cli_print_fmt1 3 "Noise" \ - "$(wpa_cli_bss_get_noise ${zone} ${bssid})" - cli_print_fmt1 3 "Quality" \ - "$(wpa_cli_bss_get_quality ${zone} ${bssid})" - cli_print_fmt1 3 "Flags" \ - "$(wpa_cli_bss_get_flags ${zone} ${bssid})" - cli_space - - cli_headline 3 "Encryption" - cli_print_fmt1 3 "Mode" \ - "$(wpa_cli_status_get ${zone} key_mgmt)" - cli_print_fmt1 3 "Pairwise cipher" \ - "$(wpa_cli_status_get ${zone} pairwise_cipher)" - cli_print_fmt1 3 "Group cipher" \ - "$(wpa_cli_status_get ${zone} group_cipher)" - cli_space + if wireless_client_is_connected "${zone}"; then + cli_headline 2 "Wireless network information" + cli_print_fmt1 2 "SSID" "$(wpa_cli_status_get ${zone} ssid)" + cli_space + + cli_headline 3 "Access Point" + local bssid=$(wpa_cli_status_get ${zone} bssid) + assert isset bssid + + local frequency=$(wpa_cli_bss_get_frequency "${zone}" "${bssid}") + cli_print_fmt1 3 "Channel" "$(wireless_frequency_to_channel ${frequency}) (${frequency} MHz)" + cli_print_fmt1 3 "BSSID" "${bssid}" + cli_print_fmt1 3 "Noise" \ + "$(wpa_cli_bss_get_noise ${zone} ${bssid})" + cli_print_fmt1 3 "Quality" \ + "$(wpa_cli_bss_get_quality ${zone} ${bssid})%%" + cli_print_fmt1 3 "Flags" \ + "$(wpa_cli_bss_get_flags ${zone} ${bssid})" + cli_space + + cli_headline 3 "Encryption" + cli_print_fmt1 3 "Mode" \ + "$(wpa_cli_status_get ${zone} key_mgmt)" + cli_print_fmt1 3 "Pairwise cipher" \ + "$(wpa_cli_status_get ${zone} pairwise_cipher)" + cli_print_fmt1 3 "Group cipher" \ + "$(wpa_cli_status_get ${zone} group_cipher)" + cli_space + fi cli_headline 2 "Configurations" zone_configs_cmd status ${zone}