blob: b8ad01acd0c4405f745601f3e1964ee279927723 [file] [log] [blame]
Harald Weltee0571462018-02-14 15:42:14 +01001#!/bin/sh
2
Maxe5214452019-03-14 18:15:27 +01003PIDFILE=/tmp/dumper.pid
Pau Espin Pedrol8fdd3132018-02-15 16:01:50 +01004TCPDUMP=/usr/sbin/tcpdump
Harald Weltee0571462018-02-14 15:42:14 +01005TESTCASE=$1
6
Neels Hofmeyrced8acf2019-02-26 05:03:22 +01007echo "------ $TESTCASE ------"
8date
9
Harald Weltee0571462018-02-14 15:42:14 +010010if [ "z$TTCN3_PCAP_PATH" = "z" ]; then
11 TTCN3_PCAP_PATH=/tmp
12fi
13
14if [ -e $PIDFILE ]; then
15 kill "$(cat "$PIDFILE")"
16 rm $PIDFILE
17fi
18
Maxe5214452019-03-14 18:15:27 +010019if [ "$(id -u)" = "0" ]; then
20 CMD="$TCPDUMP -U"
21else
Harald Weltee0571462018-02-14 15:42:14 +010022# NOTE: This requires you to be root or something like
23# "laforge ALL=NOPASSWD: /usr/sbin/tcpdump, /bin/kill" in your sudoers file
Maxe5214452019-03-14 18:15:27 +010024 CMD="sudo $TCPDUMP -U"
Harald Weltee0571462018-02-14 15:42:14 +010025fi
Maxe5214452019-03-14 18:15:27 +010026$CMD -s 1500 -n -i any -w "$TTCN3_PCAP_PATH/$TESTCASE.pcap" >$TTCN3_PCAP_PATH/$TESTCASE.pcap.stdout 2>&1 &
Harald Weltee0571462018-02-14 15:42:14 +010027PID=$!
28echo $PID > $PIDFILE
Pau Espin Pedrolb01d3132018-02-15 14:43:58 +010029
Maxe5214452019-03-14 18:15:27 +010030# Wait until packet dumper creates the pcap file and starts recording.
31# We generate some traffic until we see packet dumper catches it.
Pau Espin Pedrolb01d3132018-02-15 14:43:58 +010032# Timeout is 10 seconds.
Pau Espin Pedrol8fdd3132018-02-15 16:01:50 +010033ping 127.0.0.1 >/dev/null 2>&1 &
34PID=$!
Pau Espin Pedrolb01d3132018-02-15 14:43:58 +010035i=0
Pau Espin Pedrol8fdd3132018-02-15 16:01:50 +010036while [ ! -f "$TTCN3_PCAP_PATH/$TESTCASE.pcap" ] ||
Alexander Couzensd1f40952018-05-12 16:52:59 +020037 [ "$(stat -c '%s' "$TTCN3_PCAP_PATH/$TESTCASE.pcap")" -eq 32 ]
Pau Espin Pedrolb01d3132018-02-15 14:43:58 +010038do
Maxe5214452019-03-14 18:15:27 +010039 echo "Waiting for packet dumper to start... $i"
Pau Espin Pedrolb01d3132018-02-15 14:43:58 +010040 sleep 1
41 i=$((i+1))
Pau Espin Pedrol8fdd3132018-02-15 16:01:50 +010042 if [ $i -eq 10 ]; then
43 break
44 fi
Pau Espin Pedrolb01d3132018-02-15 14:43:58 +010045done
Pau Espin Pedrol8fdd3132018-02-15 16:01:50 +010046kill $PID