12a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov#
2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
3c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# Copyright (C) 2012 The Android Open Source Project
4c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
5c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# Licensed under the Apache License, Version 2.0 (the "License");
6c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# you may not use this file except in compliance with the License.
7c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# You may obtain a copy of the License at
8c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
9c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#      http://www.apache.org/licenses/LICENSE-2.0
10c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
11c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# Unless required by applicable law or agreed to in writing, software
12c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# distributed under the License is distributed on an "AS IS" BASIS,
13c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# See the License for the specific language governing permissions and
15c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# limitations under the License.
16c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
172a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov#
182a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov# Script that turns on useful logging for wpa_supplicant
192a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
202a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
212a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin PetkovWPA_LEVEL_LIST="excessive msgdump debug info warning error"
222a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
232a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkovusage(){
242a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  echo "
252a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin PetkovUsage: wpa_debug [level]|[--reset]|[--help][--list_valid_levels]
262a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
272a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  wpa_debug sets the debug level of wpa_supplicant.
282a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  Current debug level is displayed if no parameters are provided
292a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
302a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  level: The level is the level we want to set the debugging level to. The valid
312a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov         levels can be viewed by using the --list_valid_levels flag
322a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
332a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov         eg: wpa_debug msgdump
342a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov           Sets the wpa_supplicant logging level to msgdump
352a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
362a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  --reset : Resets the level to 'info'
372a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
382a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  --help : Displays this output
392a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
402a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  --list_valid_levels: Displays the valid levels wpa_supplicant can be set to
412a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov"
422a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov}
432a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
442a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin PetkovCMD_FLAG="<<cmd>>"
452a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
462a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin PetkovWPA_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"
472a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
48596ca7048f12d67c438cd8c4540099d96cabe9b3Roshan Pius# Returns whether or not $2 exists in $1 where $1 is a space
492a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov# separated list of tags
502a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkovis_valid_tag(){
51596ca7048f12d67c438cd8c4540099d96cabe9b3Roshan Pius  expr " $1 " : ".* $2 .*"> /dev/null
522a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov}
532a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
542a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkovget_wpa_logging(){
552a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  set_cmd="`echo $WPA_CMD | sed "s/$CMD_FLAG/Get/"`"
56596ca7048f12d67c438cd8c4540099d96cabe9b3Roshan Pius  $set_cmd | sed -e '/string/!d; s/[[:space:]]\+/ /g' | cut -d "\"" -f 2
572a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov}
582a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
592a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkovset_wpa_logging(){
602a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  if ! is_valid_tag "$WPA_LEVEL_LIST" "$1"; then
612a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    return 1
622a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  fi
632a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
64453df54542b1f597b30d4f7ded66c6b161b0bc5cPaul Stewart  if [ $1 = `get_wpa_logging` ]; then
652a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    return 1
662a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  fi
672a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
682a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  set_cmd="`echo $WPA_CMD | sed "s/$CMD_FLAG/Set/"` variant:string:$1"
692a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  $set_cmd
702a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov}
712a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
722a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
732a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkovif [ $# -gt 0 ]; then
74453df54542b1f597b30d4f7ded66c6b161b0bc5cPaul Stewart  for param in "$@"; do
752a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    case $param in
762a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    --reset)
772a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      set_wpa_logging "info"
782a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      ;;
792a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    --list*)
802a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      echo "Valid levels are: `echo $WPA_LEVEL_LIST| sed 's/ /, /g'`"
812a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      exit 0
822a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      ;;
832a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    --help|--*)
842a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      usage
852a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      exit 0
862a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      ;;
872a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    *)
882a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      old_level="`get_wpa_logging`"
892a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      set_wpa_logging "$param"
902a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      echo "Old wpa level: $old_level"
912a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov      ;;
922a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov    esac
932a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov  done
942a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkovfi
952a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
962a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkovecho "Current wpa level: `get_wpa_logging`"
972a0614ea9d6d6406f8647a0d8dc4ed4c47cbb222Darin Petkov
98