source: tools/tracereport/ttl_report.c @ 051618c

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

Lots of minor changes to the reports to make it look a bit nicer and tcp ss should be working.

  • Property mode set to 100644
File size: 1.5 KB
RevLine 
[d3ff1fb]1#include <netdb.h>
2#include <inttypes.h>
[e3b0188]3#include <lt_inttypes.h>
[d3ff1fb]4#include <stdio.h>
5#include "libtrace.h"
6#include "tracereport.h"
7
[b5dc60d]8static stat_t ttl_stat[3][256] = {{{0,0}}} ;
9static bool suppress[3] = {true,true,true};
[d3ff1fb]10
11void ttl_per_packet(struct libtrace_packet_t *packet)
12{
13        struct libtrace_ip *ip = trace_get_ip(packet);
[b5dc60d]14        libtrace_direction_t dir = trace_get_direction(packet);
15       
[d3ff1fb]16        if (!ip)
17                return;
[b5dc60d]18       
19        if (dir != TRACE_DIR_INCOMING && dir != TRACE_DIR_OUTGOING)
20                dir = TRACE_DIR_OTHER;
21       
[d4336d5]22        ttl_stat[dir][ip->ip_ttl].count++;
23        ttl_stat[dir][ip->ip_ttl].bytes+=trace_get_wire_length(packet);
24        suppress[dir] = false;
25}
[d3ff1fb]26
[d4336d5]27void ttl_suppress()
28{
29        int i;
30        printf("%-20s","Direction:");
[b5dc60d]31        for(i=0;i<3;i++){
[d4336d5]32                if(!suppress[i]){
33                        switch(i){
34                                case 0:
35                                        printf("\t%24s", "Outbound   ");
36                                        break;
37                                case 1:
38                                        printf("\t%24s", "Inbound   ");
39                                        break;
40                                case 2:
41                                        printf("\t%24s", "Undefined   ");
42                                        break;
43                                default:
44                                        break;
45                        }
46                }
47        }
48        printf("\n");
49        printf("%-20s","TTL");
[b5dc60d]50        for(i=0;i<3;i++){
[d4336d5]51                if(!suppress[i]){
52                        printf("\t%12s\t%12s", "bytes","packets");
53                }
54        }
55        printf("\n");
[d3ff1fb]56}
57
58void ttl_report(void)
59{
[d4336d5]60        int i,j;
[d3ff1fb]61        printf("# TTL breakdown:\n");
[d4336d5]62        ttl_suppress();
[d3ff1fb]63        for(i=0;i<256;++i) {
[d4336d5]64                if (ttl_stat[0][i].count==0 && 
65                        ttl_stat[1][i].count==0 && ttl_stat[2][i].count==0)
[d3ff1fb]66                        continue;
[d4336d5]67                printf("%20i:",i);
[b5dc60d]68                for(j=0;j<3;j++){
[d4336d5]69                        if (ttl_stat[j][i].count==0){
70                                if(!suppress[j])
71                                        printf("\t%24s"," ");
72                                continue;
73                        }
74                        printf("\t%12" PRIu64 "\t%12" PRIu64,
75                                ttl_stat[j][i].bytes,
76                                ttl_stat[j][i].count);
77                }
78                printf("\n");
79        }
[d3ff1fb]80}
Note: See TracBrowser for help on using the repository browser.