Explicitly request literal mode after .Xr.
[netbsd-mini2440.git] / dist / tcpdump / packetdat.awk
blobe967699c1f5df60ac01a07cc5bba68f611b1dabf
1 # $NetBSD$
3 BEGIN {
4 # we need to know (usual) packet size to convert byte numbers
5 # to packet numbers
6 if (packetsize <= 0)
7 packetsize = 512
9 $5 !~ /[SR]/ {
10 # print out per-packet data in the form:
11 # <packet #>
12 # <start sequence #>
13 # <1st send time>
14 # <last send time>
15 # <1st ack time>
16 # <last ack time>
17 # <# sends>
18 # <# acks>
20 n = split ($1,t,":")
21 tim = t[1]*3600 + t[2]*60 + t[3]
22 if ($6 != "ack") {
23 i = index($6,":")
24 strtSeq = substr($6,1,i-1)
25 id = 1.5 + (strtSeq - 1) / packetsize
26 id -= id % 1
27 if (maxId < id)
28 maxId = id
29 if (firstSend[id] == 0) {
30 firstSend[id] = tim
31 seqNo[id] = strtSeq
33 lastSend[id] = tim
34 timesSent[id]++
35 totalPackets++
36 } else {
37 id = 1 + ($7 - 2) / packetsize
38 id -= id % 1
39 timesAcked[id]++
40 if (firstAck[id] == 0)
41 firstAck[id] = tim
42 lastAck[id] = tim
43 totalAcks++
46 END {
47 print "# " maxId " chunks. " totalPackets " packets sent. " \
48 totalAcks " acks."
49 # for packets that were implicitly acked, make the ack time
50 # be the ack time of next explicitly acked packet.
51 for (i = maxId-1; i > 0; --i)
52 while (i > 0 && firstAck[i] == 0) {
53 lastAck[i] = firstAck[i] = firstAck[i+1]
54 --i
56 tzero = firstSend[1]
57 for (i = 1; i <= maxId; i++)
58 printf "%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",\
59 i, seqNo[i], \
60 firstSend[i] - tzero, lastSend[i] - tzero,\
61 firstAck[i] - tzero, lastAck[i] - tzero,\
62 timesSent[i], timesAcked[i]