[BACK]Return to packetdat.awk CVS log [TXT][DIR] Up to [local] / src / usr.sbin / tcpdump

File: [local] / src / usr.sbin / tcpdump / packetdat.awk (download)

Revision 1.4, Thu Dec 12 16:22:44 1996 UTC (27 years, 6 months ago) by bitblt
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, OPENBSD_7_2_BASE, OPENBSD_7_2, OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7, OPENBSD_6_6_BASE, OPENBSD_6_6, OPENBSD_6_5_BASE, OPENBSD_6_5, OPENBSD_6_4_BASE, OPENBSD_6_4, OPENBSD_6_3_BASE, OPENBSD_6_3, OPENBSD_6_2_BASE, OPENBSD_6_2, OPENBSD_6_1_BASE, OPENBSD_6_1, OPENBSD_6_0_BASE, OPENBSD_6_0, OPENBSD_5_9_BASE, OPENBSD_5_9, OPENBSD_5_8_BASE, OPENBSD_5_8, OPENBSD_5_7_BASE, OPENBSD_5_7, OPENBSD_5_6_BASE, OPENBSD_5_6, OPENBSD_5_5_BASE, OPENBSD_5_5, OPENBSD_5_4_BASE, OPENBSD_5_4, OPENBSD_5_3_BASE, OPENBSD_5_3, OPENBSD_5_2_BASE, OPENBSD_5_2, OPENBSD_5_1_BASE, OPENBSD_5_1, OPENBSD_5_0_BASE, OPENBSD_5_0, OPENBSD_4_9_BASE, OPENBSD_4_9, OPENBSD_4_8_BASE, OPENBSD_4_8, OPENBSD_4_7_BASE, OPENBSD_4_7, OPENBSD_4_6_BASE, OPENBSD_4_6, OPENBSD_4_5_BASE, OPENBSD_4_5, OPENBSD_4_4_BASE, OPENBSD_4_4, OPENBSD_4_3_BASE, OPENBSD_4_3, OPENBSD_4_2_BASE, OPENBSD_4_2, OPENBSD_4_1_BASE, OPENBSD_4_1, OPENBSD_4_0_BASE, OPENBSD_4_0, OPENBSD_3_9_BASE, OPENBSD_3_9, OPENBSD_3_8_BASE, OPENBSD_3_8, OPENBSD_3_7_BASE, OPENBSD_3_7, OPENBSD_3_6_BASE, OPENBSD_3_6, OPENBSD_3_5_BASE, OPENBSD_3_5, OPENBSD_3_4_BASE, OPENBSD_3_4, OPENBSD_3_3_BASE, OPENBSD_3_3, OPENBSD_3_2_BASE, OPENBSD_3_2, OPENBSD_3_1_BASE, OPENBSD_3_1, OPENBSD_3_0_BASE, OPENBSD_3_0, OPENBSD_2_9_BASE, OPENBSD_2_9, OPENBSD_2_8_BASE, OPENBSD_2_8, OPENBSD_2_7_BASE, OPENBSD_2_7, OPENBSD_2_6_BASE, OPENBSD_2_6, OPENBSD_2_5_BASE, OPENBSD_2_5, OPENBSD_2_4_BASE, OPENBSD_2_4, OPENBSD_2_3_BASE, OPENBSD_2_3, OPENBSD_2_2_BASE, OPENBSD_2_2, OPENBSD_2_1_BASE, OPENBSD_2_1, HEAD
Changes since 1.3: +0 -3 lines

*** empty log message ***

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]
	}