shift
done
- assert isoneof type ibss managed __ap
+ assert isoneof type ibss managed monitor __ap
assert phy_exists ${phy}
isset address || address=$(mac_generate)
device_exists ${device} || return ${EXIT_ERROR}
+ log DEBUG "Setting wireless channel on device '${device}' to channel '${channel}'"
cmd_quiet iw dev ${device} set channel ${channel}
}
[[ ${frequency} -ge 5260 ]] && [[ ${frequency} -le 5700 ]]
}
+
+function wireless_monitor() {
+ local device="${1}"
+ assert isset device
+ shift
+
+ local monitor_device="mon$$"
+
+ # Create an 802.11 monitoring device
+ wireless_create "${monitor_device}" --phy="${device}" --type="monitor"
+ local ret=$?
+
+ case "${ret}" in
+ 0)
+ # Bring up the device
+ device_set_up "${monitor_device}"
+
+ # Starting tcpdump
+ tcpdump -i "${monitor_device}" "$@"
+
+ # Remove the monitoring interface.
+ wireless_remove "${monitor_device}"
+ ;;
+
+ *)
+ log ERROR "Could not create a monitoring interface on ${device}"
+ return ${EXIT_ERROR}
+ ;;
+ esac
+
+ return ${EXIT_OK}
+}
discover)
cli_device_discover ${device} $@
;;
+ monitor)
+ cli_device_monitor "${device}" $@
+ ;;
status)
cli_device_status ${device}
;;
exit $?
}
+function cli_device_monitor() {
+ local device="${1}"
+ assert isset device
+
+ if ! device_is_wireless "${device}"; then
+ error "This action only works with wireless devices. Exiting."
+ exit ${EXIT_ERROR}
+ fi
+
+ wireless_monitor "${device}"
+ exit $?
+}
+
function cli_hostname() {
if cli_help_requested $@; then
cli_show_man network