source: tools/tracereport/ttl_report.c @ e991529

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

Updated some reports to output to files rather than stdout

  • Property mode set to 100644
File size: 1.4 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
[e991529]11FILE *out = NULL;
12
[d3ff1fb]13void ttl_per_packet(struct libtrace_packet_t *packet)
14{
15        struct libtrace_ip *ip = trace_get_ip(packet);
[b5dc60d]16        libtrace_direction_t dir = trace_get_direction(packet);
17       
[d3ff1fb]18        if (!ip)
19                return;
[b5dc60d]20       
21        if (dir != TRACE_DIR_INCOMING && dir != TRACE_DIR_OUTGOING)
22                dir = TRACE_DIR_OTHER;
23       
[d4336d5]24        ttl_stat[dir][ip->ip_ttl].count++;
25        ttl_stat[dir][ip->ip_ttl].bytes+=trace_get_wire_length(packet);
26        suppress[dir] = false;
27}
[d3ff1fb]28
[e991529]29       
[d3ff1fb]30
31void ttl_report(void)
32{
[d4336d5]33        int i,j;
[e991529]34        out = fopen("ttl.out", "w");
35        if (!out) {
36                perror("fopen");
37                return;
38        }
39        fprintf(out, "%-12s\t%10s\t%16s %16s\n",
40                        "TTL",
41                        "DIRECTION",
42                        "BYTES",
43                        "PACKETS");
[d3ff1fb]44        for(i=0;i<256;++i) {
[d4336d5]45                if (ttl_stat[0][i].count==0 && 
46                        ttl_stat[1][i].count==0 && ttl_stat[2][i].count==0)
[d3ff1fb]47                        continue;
[e991529]48                fprintf(out, "%12i:",i);
[b5dc60d]49                for(j=0;j<3;j++){
[e991529]50                        if (j != 0) {
51                                fprintf(out, "%12s", " ");
52                        }
53                        switch (j) {
54                                case 0:
55                                        fprintf(out, "\t%10s", "Outbound");
56                                        break;
57                                case 1:
58                                        fprintf(out, "\t%10s", "Inbound");
59                                        break;
60                                case 2:
61                                        fprintf(out, "\t%10s", "Unknown");
62                                        break;
[d4336d5]63                        }
[e991529]64                       
65                        fprintf(out, "\t%16llu %16llu\n",
66                                        ttl_stat[j][i].bytes,
67                                        ttl_stat[j][i].count);
[d4336d5]68                }
69        }
[e991529]70        fclose(out);
[d3ff1fb]71}
Note: See TracBrowser for help on using the repository browser.