#!/bin/bash
#
# lib/tcpdump
# Functions to start and stop a tcpdump

# Dependencies:
#
# - ``functions`` file

# ``stack.sh`` calls the entry points in this order:
#
# - start_tcpdump
# - stop_tcpdump

# Save trace setting
_XTRACE_TCPDUMP=$(set +o | grep xtrace)
set +o xtrace

TCPDUMP_OUTPUT=${TCPDUMP_OUTPUT:-$LOGDIR/tcpdump.pcap}

# e.g. for iscsi
#  "-i any tcp port 3260"
TCPDUMP_ARGS=${TCPDUMP_ARGS:-""}

# start_tcpdump() - Start running processes
function start_tcpdump {
    # Run a tcpdump with given arguments and save the packet capture
    if is_service_enabled tcpdump; then
        if [[ -z "${TCPDUMP_ARGS}" ]]; then
            die $LINENO "The tcpdump service requires TCPDUMP_ARGS to be set"
        fi
        touch ${TCPDUMP_OUTPUT}
        run_process tcpdump "/usr/sbin/tcpdump -w $TCPDUMP_OUTPUT $TCPDUMP_ARGS" root root
    fi
}

# stop_tcpdump() stop tcpdump process
function stop_tcpdump {
    stop_process tcpdump
}

# Restore xtrace
$_XTRACE_TCPDUMP
