#!/bin/bash
#
# contrary to ttcn3-tcpdump-start.sh, this version is dumpcap-only and
# needed when we want to capture from interfaces of different link
# types. It will also store the results as pcap-ng, not plain old pcap.

PIDFILE_PCAP=/tmp/pcap.pid
DUMPCAP=/usr/bin/dumpcap

PIDFILE_NETCAT=/tmp/netcat.pid
NETCAT=/bin/nc
GSMTAP_PORT=4729

TESTCASE=$1

kill_rm_pidfile() {
	if [ -e $1 ]; then
		kill "$(cat "$1")"
		rm $1
	fi
}

echo "------ $TESTCASE ------"
date

if [ "z$TTCN3_PCAP_PATH" = "z" ]; then
	TTCN3_PCAP_PATH=/tmp
fi

kill_rm_pidfile $PIDFILE_NETCAT
kill_rm_pidfile $PIDFILE_PCAP

if [ ! -x $DUMPCAP ]; then
	echo "Missing required dumpcap binary at ${DUMPCAP}"
	exit 31
fi

if [ "$(id -u)" = "0" ]; then
	CMD="$DUMPCAP -q"
else
    CAP_ERR="1"
    if [ -x /sbin/setcap ]; then
	# N. B: this check requires libcap2-bin package
	/sbin/setcap -q -v 'cap_net_admin,cap_net_raw=pie' $DUMPCAP
	CAP_ERR="$?"
    fi
    if [ -u $DUMPCAP -o "$CAP_ERR" = "0" ]; then
	CMD="$DUMPCAP -q"
    else
 	echo "NOTE: unable to use dumpcap due to missing capabilities or suid bit"
	exit 32
    fi
fi

# Create a dummy sink for GSMTAP packets
$NETCAT -l -u -k -p $GSMTAP_PORT >/dev/null 2>$TESTCASE.netcat.stderr &
PID=$!
echo $PID > $PIDFILE_NETCAT

# generate the list of interface arguments.  For capturing from
# interfaces of different link-layer types, we cannot use "-i all"
# but must use dumpcap with each individual interface name.  We also
# must write pcapng files, as only those can record the interface of
# each packet
ADDL_ARGS="-i lo"
for f in /sys/class/net/*; do
	DEV=`basename $f`
	if [[ "$DEV" == "hdlcnet"* ]]; then
		# skip these as we only want the hdlcX devices, avoid capturing twice on both sides
		continue
	elif [[ "$DEV" == "hdlc"* ]]; then
		# these are the user-side of the FR links, which is
		# what we interface with from our test suite, emulating
		# a BSS.
		ADDL_ARGS="${ADDL_ARGS} -i ${DEV}"
	elif [[ "$DEV" == "eth"* ]]; then
		# we blindly assume that "normal" docker network devices
		# are called ethXXX
		ADDL_ARGS="${ADDL_ARGS} -i ${DEV}"
	fi
done

$CMD -s 1500 -n ${ADDL_ARGS} -w "$TTCN3_PCAP_PATH/$TESTCASE.pcapng" >$TTCN3_PCAP_PATH/$TESTCASE.pcapng.stdout 2>&1 &
PID=$!
echo $PID > $PIDFILE_PCAP

# Wait until packet dumper creates the pcap file and starts recording.
# We generate some traffic until we see packet dumper catches it.
# Timeout is 10 seconds.
ping 127.0.0.1 >/dev/null 2>&1 &
PID=$!
i=0
while [ ! -f "$TTCN3_PCAP_PATH/$TESTCASE.pcapng" ] ||
      [ "$(stat -c '%s' "$TTCN3_PCAP_PATH/$TESTCASE.pcapng")" -eq 32 ]
do
	echo "Waiting for packet dumper to start... $i"
	sleep 1
	i=$((i+1))
	if [ $i -eq 10 ]; then
		break
	fi
done
kill $PID
