nexmon – Rev 1

Subversion Repositories:
Rev:
BEGIN   {
        # we need to know (usual) packet size to convert byte numbers
        # to packet numbers
        if (packetsize <= 0)
                packetsize = 512
        }
$5 !~ /[SR]/    {
        # print out per-packet data in the form:
        #  <packet #>
        #  <start sequence #>
        #  <1st send time>
        #  <last send time>
        #  <1st ack time>
        #  <last ack time>
        #  <# sends>
        #  <# acks>

        n = split ($1,t,":")
        tim = t[1]*3600 + t[2]*60 + t[3]
        if ($6 != "ack") {
                i = index($6,":")
                strtSeq = substr($6,1,i-1)
                id = 1.5 + (strtSeq - 1) / packetsize
                id -= id % 1
                if (maxId < id)
                        maxId = id
                if (firstSend[id] == 0) {
                        firstSend[id] = tim
                        seqNo[id] = strtSeq
                }
                lastSend[id] = tim
                timesSent[id]++
                totalPackets++
        } else {
                id = 1 + ($7 - 2) / packetsize
                id -= id % 1
                timesAcked[id]++
                if (firstAck[id] == 0)
                        firstAck[id] = tim
                lastAck[id] = tim
                totalAcks++
        }
        }
END     {
        print "# " maxId " chunks.  " totalPackets " packets sent.  " \
                totalAcks " acks."
        # for packets that were implicitly acked, make the ack time
        # be the ack time of next explicitly acked packet.
        for (i = maxId-1; i > 0; --i)
                while (i > 0 && firstAck[i] == 0) {
                        lastAck[i] = firstAck[i] = firstAck[i+1]
                        --i
                }
        tzero = firstSend[1]
        for (i = 1; i <= maxId; i++)
                printf "%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",\
                        i, seqNo[i], \
                        firstSend[i] - tzero, lastSend[i] - tzero,\
                        firstAck[i] - tzero, lastAck[i] - tzero,\
                        timesSent[i], timesAcked[i]
        }