usbmodeswitch: Updated to v.1.2.6 from shibby's branch.
[tomato.git] / release / src / router / tcpdump / packetdat.awk
blob292e21910a673a76269b9beb1e370d99941497bf
1 BEGIN {
2 # we need to know (usual) packet size to convert byte numbers
3 # to packet numbers
4 if (packetsize <= 0)
5 packetsize = 512
7 $5 !~ /[SR]/ {
8 # print out per-packet data in the form:
9 # <packet #>
10 # <start sequence #>
11 # <1st send time>
12 # <last send time>
13 # <1st ack time>
14 # <last ack time>
15 # <# sends>
16 # <# acks>
18 n = split ($1,t,":")
19 tim = t[1]*3600 + t[2]*60 + t[3]
20 if ($6 != "ack") {
21 i = index($6,":")
22 strtSeq = substr($6,1,i-1)
23 id = 1.5 + (strtSeq - 1) / packetsize
24 id -= id % 1
25 if (maxId < id)
26 maxId = id
27 if (firstSend[id] == 0) {
28 firstSend[id] = tim
29 seqNo[id] = strtSeq
31 lastSend[id] = tim
32 timesSent[id]++
33 totalPackets++
34 } else {
35 id = 1 + ($7 - 2) / packetsize
36 id -= id % 1
37 timesAcked[id]++
38 if (firstAck[id] == 0)
39 firstAck[id] = tim
40 lastAck[id] = tim
41 totalAcks++
44 END {
45 print "# " maxId " chunks. " totalPackets " packets sent. " \
46 totalAcks " acks."
47 # for packets that were implicitly acked, make the ack time
48 # be the ack time of next explicitly acked packet.
49 for (i = maxId-1; i > 0; --i)
50 while (i > 0 && firstAck[i] == 0) {
51 lastAck[i] = firstAck[i] = firstAck[i+1]
52 --i
54 tzero = firstSend[1]
55 for (i = 1; i <= maxId; i++)
56 printf "%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",\
57 i, seqNo[i], \
58 firstSend[i] - tzero, lastSend[i] - tzero,\
59 firstAck[i] - tzero, lastAck[i] - tzero,\
60 timesSent[i], timesAcked[i]