source: tools/tracereport/tcpsegment_report.c @ 09be643

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 09be643 was 09be643, checked in by Josef Vodanovich <jjv4@…>, 14 years ago

removed unnecessary loops

  • Property mode set to 100644
File size: 1.6 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
23        tcpseg_stat[dir][a].count++;
24        tcpseg_stat[dir][a].bytes+=trace_get_wire_length(packet);
25        suppress[dir] = false;
26}
27
28void tcpseg_suppress()
29{
30        int i;
31        printf("%-20s","Direction:");
32        for(i=0;i<4;i++){
33                if(!suppress[i]){
34                        switch(i){
35                                case 0:
36                                        printf("\t%24s", "Outbound   ");
37                                        break;
38                                case 1:
39                                        printf("\t%24s", "Inbound   ");
40                                        break;
41                                case 2:
42                                        printf("\t%24s", "Undefined   ");
43                                        break;
44                                default:
45                                        break;
46                        }
47                }
48        }
49        printf("\n");
50        printf("%-20s","TCP SS");
51        for(i=0;i<4;i++){
52                if(!suppress[i]){
53                        printf("\t%12s\t%12s", "bytes","packets");
54                }
55        }
56        printf("\n");
57}
58
59void tcpseg_report(void)
60{
61        int i,j;
62        printf("# TCP Segment Size breakdown:\n");
63        tcpseg_suppress();
64        for(i=0;i<2048;++i) {
65                if (tcpseg_stat[0][i].count==0 && 
66                        tcpseg_stat[1][i].count==0 && tcpseg_stat[2][i].count==0)
67                        continue;
68                printf("%20i:",i);
69                for(j=0;j<4;j++){
70                        if (tcpseg_stat[j][i].count==0){
71                                if(!suppress[j])
72                                        printf("\t%24s"," ");
73                                continue;
74                        }
75                        printf("\t%12" PRIu64 "\t%12" PRIu64,
76                                tcpseg_stat[j][i].bytes,
77                                tcpseg_stat[j][i].count);
78                }
79                printf("\n");
80        }
81}
Note: See TracBrowser for help on using the repository browser.