| #!/bin/sh |
| |
| # Copyright 2018 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Script that turns on useful logging for wpa_supplicant |
| |
| |
| WPA_LEVEL_LIST="excessive msgdump debug info warning error" |
| |
| usage() { |
| echo " |
| Usage: wpa_debug [level]|[--reset]|[--help][--list_valid_levels] |
| |
| wpa_debug sets the debug level of wpa_supplicant. |
| Current debug level is displayed if no parameters are provided |
| |
| level: The level is the level we want to set the debugging level to. The valid |
| levels can be viewed by using the --list_valid_levels flag |
| |
| eg: wpa_debug msgdump |
| Sets the wpa_supplicant logging level to msgdump |
| |
| --reset : Resets the level to 'info' |
| |
| --help : Displays this output |
| |
| --list_valid_levels: Displays the valid levels wpa_supplicant can be set to |
| " |
| } |
| |
| CMD_FLAG="<<cmd>>" |
| |
| WPA_CMD="dbus-send --system --dest=fi.w1.wpa_supplicant1 --print-reply /fi/w1/wpa_supplicant1 org.freedesktop.DBus.Properties.${CMD_FLAG} string:fi.w1.wpa_supplicant1 string:DebugLevel" |
| |
| # Returns whether or not $2 exists in $1 where $1 is a space |
| # separated list of tags |
| is_valid_tag() { |
| expr " $1 " : ".* $2 .*"> /dev/null |
| } |
| |
| get_wpa_logging() { |
| set_cmd="$(echo "${WPA_CMD}" | sed "s/${CMD_FLAG}/Get/")" |
| ${set_cmd} | sed -e '/string/!d; s/[[:space:]]\+/ /g' | cut -d "\"" -f 2 |
| } |
| |
| set_wpa_logging() { |
| if ! is_valid_tag "${WPA_LEVEL_LIST}" "$1"; then |
| return 1 |
| fi |
| |
| if [ "$1" = "$(get_wpa_logging)" ]; then |
| return 1 |
| fi |
| |
| set_cmd="$(echo "${WPA_CMD}" | sed "s/${CMD_FLAG}/Set/") variant:string:$1" |
| ${set_cmd} |
| } |
| |
| |
| if [ $# -gt 0 ]; then |
| for param in "$@"; do |
| case $param in |
| --reset) |
| set_wpa_logging "info" |
| ;; |
| --list*) |
| echo "Valid levels are: $(echo "${WPA_LEVEL_LIST}" | sed 's/ /, /g')" |
| exit 0 |
| ;; |
| --help|--*) |
| usage |
| exit 0 |
| ;; |
| *) |
| old_level="$(get_wpa_logging)" |
| set_wpa_logging "$param" |
| echo "Old wpa level: ${old_level}" |
| ;; |
| esac |
| done |
| fi |
| |
| echo "Current wpa level: $(get_wpa_logging)" |
| |