source: tools/tracereport/tos_report.c @ bd4bec9

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

tcpsegment, protocol and tos reports all now write to files.
Changed the output filenames to be *.rpt rather than *.out

  • Property mode set to 100644
File size: 1.4 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 tos_stat[3][256] = {{{0,0}}} ;
9static bool suppress[3] = {true,true,true};
10
11void tos_per_packet(struct libtrace_packet_t *packet)
12{
13        struct libtrace_ip *ip = trace_get_ip(packet);
14        libtrace_direction_t dir = trace_get_direction(packet);
15       
16        if (!ip)
17                return;
18       
19        if (dir != TRACE_DIR_INCOMING && dir != TRACE_DIR_OUTGOING)
20                dir = TRACE_DIR_OTHER;
21       
22        tos_stat[dir][ip->ip_tos].count++;
23        tos_stat[dir][ip->ip_tos].bytes+=trace_get_wire_length(packet);
24        suppress[dir] = false;
25}
26
27
28void tos_report(void)
29{
30        int i,j;
31        FILE *out = fopen("tos.rpt", "w");
32        if (!out) {
33                perror("fopen");
34                return;
35        }
36       
37        fprintf(out, "%-12s\t%10s\t%16s %16s\n",
38                        "TOS",
39                        "DIRECTION",
40                        "BYTES",
41                        "PACKETS");
42       
43       
44        for(i=0;i<256;++i) {
45                if (tos_stat[0][i].count==0 && 
46                        tos_stat[1][i].count==0 && tos_stat[2][i].count==0)
47                        continue;
48                fprintf(out, "%12i:",i);
49                for(j=0;j<3;j++){
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;
63                        }
64                        fprintf(out, "\t%16llu %16llu\n",
65                                tos_stat[j][i].bytes,
66                                tos_stat[j][i].count);
67                }
68        }
69        fclose(out);
70}
Note: See TracBrowser for help on using the repository browser.