source: tools/tracereport/ttl_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.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 ttl_stat[4][256] = {{{0,0}}} ;
9static bool suppress[4] = {true,true,true,true};
10
11void ttl_per_packet(struct libtrace_packet_t *packet)
12{
13        struct libtrace_ip *ip = trace_get_ip(packet);
14        if (!ip)
15                return;
16        int dir = trace_get_direction(packet);
17        if(dir < 0 || dir > 1)
18                dir = 2;
19        ttl_stat[dir][ip->ip_ttl].count++;
20        ttl_stat[dir][ip->ip_ttl].bytes+=trace_get_wire_length(packet);
21        suppress[dir] = false;
22}
23
24void ttl_suppress()
25{
26        int i;
27        printf("%-20s","Direction:");
28        //printf("%20s", " ");
29        for(i=0;i<4;i++){
30                if(!suppress[i]){
31                        switch(i){
32                                case 0:
33                                        printf("\t%24s", "Outbound   ");
34                                        break;
35                                case 1:
36                                        printf("\t%24s", "Inbound   ");
37                                        break;
38                                case 2:
39                                        printf("\t%24s", "Undefined   ");
40                                        break;
41                                default:
42                                        break;
43                        }
44                }
45        }
46        printf("\n");
47        printf("%-20s","TTL");
48        for(i=0;i<4;i++){
49                if(!suppress[i]){
50                        printf("\t%12s\t%12s", "bytes","packets");
51                }
52        }
53        printf("\n");
54}
55
56void ttl_report(void)
57{
58        int i,j;
59        printf("# TTL breakdown:\n");
60        ttl_suppress();
61        for(i=0;i<256;++i) {
62                if (ttl_stat[0][i].count==0 && 
63                        ttl_stat[1][i].count==0 && ttl_stat[2][i].count==0)
64                        continue;
65                printf("%20i:",i);
66                for(j=0;j<4;j++){
67                        if (ttl_stat[j][i].count==0){
68                                if(!suppress[j])
69                                        printf("\t%24s"," ");
70                                continue;
71                        }
72                        printf("\t%12" PRIu64 "\t%12" PRIu64,
73                                ttl_stat[j][i].bytes,
74                                ttl_stat[j][i].count);
75                }
76                printf("\n");
77        }
78       
79        int total;
80        for(i=0;i<4;i++){
81                total = 0;
82                for(j=0;j<256;j++)
83                        total += ttl_stat[i][j].count;
84                //printf("%s: %i\n", "Total", total);
85        }
86}
Note: See TracBrowser for help on using the repository browser.