Harald Welte | e057146 | 2018-02-14 15:42:14 +0100 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | PIDFILE=/tmp/tcpdump.pid |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 4 | TCPDUMP=/usr/sbin/tcpdump |
Harald Welte | e057146 | 2018-02-14 15:42:14 +0100 | [diff] [blame] | 5 | TESTCASE=$1 |
| 6 | |
| 7 | if [ "z$TTCN3_PCAP_PATH" = "z" ]; then |
| 8 | TTCN3_PCAP_PATH=/tmp |
| 9 | fi |
| 10 | |
| 11 | if [ -e $PIDFILE ]; then |
| 12 | kill "$(cat "$PIDFILE")" |
| 13 | rm $PIDFILE |
| 14 | fi |
| 15 | |
| 16 | # NOTE: This requires you to be root or something like |
| 17 | # "laforge ALL=NOPASSWD: /usr/sbin/tcpdump, /bin/kill" in your sudoers file |
| 18 | if [ "$(id -u)" = "0" ]; then |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 19 | CMD=$TCPDUMP |
Harald Welte | e057146 | 2018-02-14 15:42:14 +0100 | [diff] [blame] | 20 | else |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 21 | CMD="sudo $TCPDUMP" |
Harald Welte | e057146 | 2018-02-14 15:42:14 +0100 | [diff] [blame] | 22 | fi |
Alexander Couzens | d1f4095 | 2018-05-12 16:52:59 +0200 | [diff] [blame] | 23 | $CMD -U -s 1500 -n -i any -w "$TTCN3_PCAP_PATH/$TESTCASE.pcap" >$TTCN3_PCAP_PATH/$TESTCASE.pcap.stdout 2>&1 & |
Harald Welte | e057146 | 2018-02-14 15:42:14 +0100 | [diff] [blame] | 24 | PID=$! |
| 25 | echo $PID > $PIDFILE |
Pau Espin Pedrol | b01d313 | 2018-02-15 14:43:58 +0100 | [diff] [blame] | 26 | |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 27 | # Wait until tcpdump creates the pcap file and starts recording. |
| 28 | # We generate some traffic until we see tcpdump catches it. |
Pau Espin Pedrol | b01d313 | 2018-02-15 14:43:58 +0100 | [diff] [blame] | 29 | # Timeout is 10 seconds. |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 30 | ping 127.0.0.1 >/dev/null 2>&1 & |
| 31 | PID=$! |
Pau Espin Pedrol | b01d313 | 2018-02-15 14:43:58 +0100 | [diff] [blame] | 32 | i=0 |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 33 | while [ ! -f "$TTCN3_PCAP_PATH/$TESTCASE.pcap" ] || |
Alexander Couzens | d1f4095 | 2018-05-12 16:52:59 +0200 | [diff] [blame] | 34 | [ "$(stat -c '%s' "$TTCN3_PCAP_PATH/$TESTCASE.pcap")" -eq 32 ] |
Pau Espin Pedrol | b01d313 | 2018-02-15 14:43:58 +0100 | [diff] [blame] | 35 | do |
| 36 | echo "Waiting for tcpdump to start... $i" |
| 37 | sleep 1 |
| 38 | i=$((i+1)) |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 39 | if [ $i -eq 10 ]; then |
| 40 | break |
| 41 | fi |
Pau Espin Pedrol | b01d313 | 2018-02-15 14:43:58 +0100 | [diff] [blame] | 42 | done |
Pau Espin Pedrol | 8fdd313 | 2018-02-15 16:01:50 +0100 | [diff] [blame] | 43 | kill $PID |