chiark / gitweb /
Add new `knock' protocol.
[tripe] / wireshark / capture-session
CommitLineData
3949f61c
MW
1#! /bin/sh -e
2###
3### A simple script for capturing TrIPE sessions, for testing the Wireshark
4### dissector.
5
6ty=${1?ty} param=${2-$ty}
7tripe=${TRIPE-tripe}
8rm -rf captmp
9mkdir captmp
10cd captmp
11
12cp ../keyring .
13for i in alice bob; do
14 key add -eforever -a$ty -t$i -pparam-$param tripe
15done
16cp keyring keyring.pub
17
18for i in alice bob; do
19 mkfifo $i.in $i.out
20 TRIPE_SLIPIF=/usr/bin/tripe-uslip \
21 $tripe -d. -as.$i -F -nslip -t$i -p0 <$i.in >$i.out 2>$i.err&
22done
23exec 3>alice.in 4<alice.out; alice_in=3 alice_out=4
24exec 5>bob.in 6<bob.out; bob_in=5 bob_out=6
25
26docmd () {
27 who=$1; shift
28 eval in=\$${who}_in out=\$${who}_out
29 echo "$*" >&$in
30 while read tag tail; do
31 : "$tag $tail"
32 case $tag in
33 INFO) echo $tail ;;
34 FAIL) echo >&2 "command \`$*' failed: $tail"; exit 10 ;;
35 OK) break ;;
36 esac
37 done <&$out
38}
39
40await () {
41 who=$1
42 eval out=\$${who}_out
43 while read tag kind rest; do
44 : "$tag $kind $rest"
45 case $tag,$kind in
46 NOTE,KXDONE) break ;;
47 esac
48 done <&$out
49}
50
51docmd alice watch n-tw
52docmd bob watch n-tw
53
54p_alice=$(docmd alice port)
55p_bob=$(docmd bob port)
56
57tshark -ilo -f"udp port $p_alice or udp port $p_bob" \
58 -w../cap.$param& shark=$!
59pause
60
61docmd alice add -cork bob 127.0.0.1 $p_bob
62c=$(docmd bob getchal)
63docmd alice greet bob $c
64docmd bob add alice 127.0.0.1 $p_alice
65await alice& walice=$!
66await bob& wbob=$!
67wait $walice
68wait $wbob
69
70echo ping | tripe-uslip -p bob
71x=$(tripe-uslip -g alice)
72
73pause
74
75exec 3>&- 4>&- 5>&- 6>&-
76kill $shark
77wait