source: tools/tracereport/tcpsegment_report.c @ d4336d5

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since d4336d5 was d4336d5, checked in by Shane Alcock <salcock@…>, 15 years ago

Updated tracereport to include all the work Josef has done

  • Property mode set to 100644
File size: 1.7 KB
Line 
1#include <netdb.h>
2#include <inttypes.h>
3#include <lt_inttypes.h>
4#include <stdio.h>
5#include "libtrace.h"
6#include "tracereport.h"
7
8static stat_t tcpseg_stat[4][2048] = {{{0,0}}} ;
9static bool suppress[4] = {true,true,true,true};
10
11void tcpseg_per_packet(struct libtrace_packet_t *packet)
12{
13        struct libtrace_tcp *tcp = trace_get_tcp(packet);
14        if (!tcp)
15                return;
16        int dir = trace_get_direction(packet);
17        if(dir < 0 || dir > 1)
18                dir = 2;
19       
20        int a = trace_get_wire_length(packet);
21        a -= 34;
22        //int b = tcp->doff*4;
23        //if(b == 20)
24        //      printf("Wire: %i\n", a);
25        tcpseg_stat[dir][a].count++;
26        tcpseg_stat[dir][a].bytes+=trace_get_wire_length(packet);
27        suppress[dir] = false;
28}
29
30void tcpseg_suppress()
31{
32        int i;
33        printf("%-20s","Direction:");
34        //printf("%20s", " ");
35        for(i=0;i<4;i++){
36                if(!suppress[i]){
37                        switch(i){
38                                case 0:
39                                        printf("\t%24s", "Outbound   ");
40                                        break;
41                                case 1:
42                                        printf("\t%24s", "Inbound   ");
43                                        break;
44                                case 2:
45                                        printf("\t%24s", "Undefined   ");
46                                        break;
47                                default:
48                                        break;
49                        }
50                }
51        }
52        printf("\n");
53        printf("%-20s","TCP SS");
54        for(i=0;i<4;i++){
55                if(!suppress[i]){
56                        printf("\t%12s\t%12s", "bytes","packets");
57                }
58        }
59        printf("\n");
60}
61
62void tcpseg_report(void)
63{
64        int i,j;
65        printf("# TCP Segment Size breakdown:\n");
66        tcpseg_suppress();
67        for(i=0;i<2048;++i) {
68                if (tcpseg_stat[0][i].count==0 && 
69                        tcpseg_stat[1][i].count==0 && tcpseg_stat[2][i].count==0)
70                        continue;
71                printf("%20i:",i);
72                for(j=0;j<4;j++){
73                        if (tcpseg_stat[j][i].count==0){
74                                if(!suppress[j])
75                                        printf("\t%24s"," ");
76                                continue;
77                        }
78                        printf("\t%12" PRIu64 "\t%12" PRIu64,
79                                tcpseg_stat[j][i].bytes,
80                                tcpseg_stat[j][i].count);
81                }
82                printf("\n");
83        }
84}
Note: See TracBrowser for help on using the repository browser.