Ignore:
Timestamp:
02/21/07 14:39:26 (15 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
09be643
Parents:
c14602f
Message:

Updated tracereport to include all the work Josef has done

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/tracereport/tos_report.c

    ra7282fb rd4336d5  
    55#include "libtrace.h"
    66#include "tracereport.h"
    7 #include "report.h"
    87
    9 static stat_t tos_stat[256] = { {0,0} } ;
     8static stat_t tos_stat[4][256] = {{{0,0}}} ;
     9static bool suppress[4] = {true,true,true,true};
    1010
    1111void tos_per_packet(struct libtrace_packet_t *packet)
    1212{
    1313        struct libtrace_ip *ip = trace_get_ip(packet);
     14       
    1415        if (!ip)
    1516                return;
     17        int dir = trace_get_direction(packet);
     18        if(dir < 0 || dir > 1)
     19                dir = 2;
     20        tos_stat[dir][ip->ip_tos].count++;
     21        tos_stat[dir][ip->ip_tos].bytes+=trace_get_wire_length(packet);
     22        suppress[dir] = false;
     23}
    1624
    17         tos_stat[ip->ip_tos].count++;
    18         tos_stat[ip->ip_tos].bytes+=trace_get_wire_length(packet);
     25void tos_suppress()
     26{
     27        int i;
     28        printf("%-20s","Direction:");
     29        //printf("%20s", " ");
     30        for(i=0;i<4;i++){
     31                if(!suppress[i]){
     32                        switch(i){
     33                                case 0:
     34                                        printf("\t%24s", "Outbound   ");
     35                                        break;
     36                                case 1:
     37                                        printf("\t%24s", "Inbound   ");
     38                                        break;
     39                                case 2:
     40                                        printf("\t%24s", "Undefined   ");
     41                                        break;
     42                                default:
     43                                        break;
     44                        }
     45                }
     46        }
     47        printf("\n");
     48        printf("%-20s","ToS");
     49        for(i=0;i<4;i++){
     50                if(!suppress[i]){
     51                        printf("\t%12s\t%12s", "bytes","packets");
     52                }
     53        }
     54        printf("\n");
    1955}
    2056
    2157void tos_report(void)
    2258{
    23         int i;
     59        int i,j;
    2460        printf("# TOS breakdown:\n");
    25         printf("%-20s \t%12s\t%12s\n","ToS","bytes","packets");
     61        tos_suppress();
    2662        for(i=0;i<256;++i) {
    27                 if (tos_stat[i].count==0)
     63                if (tos_stat[0][i].count==0 &&
     64                        tos_stat[1][i].count==0 && tos_stat[2][i].count==0)
    2865                        continue;
    29                 printf("%16s0x%02x:\t%12" PRIu64 ":\t%12" PRIu64 "\n",
    30                                 " ",
    31                                 i,
    32                                 tos_stat[i].bytes,
    33                                 tos_stat[i].count);
     66                printf("%20i:",i);
     67                for(j=0;j<4;j++){
     68                        if (tos_stat[j][i].count==0){
     69                                if(!suppress[j])
     70                                        printf("\t%24s"," ");
     71                                continue;
     72                        }
     73                        printf("\t%12" PRIu64 "\t%12" PRIu64,
     74                                tos_stat[j][i].bytes,
     75                                tos_stat[j][i].count);
     76                }
     77                printf("\n");
     78        }
     79       
     80        int total;
     81        for(i=0;i<4;i++){
     82                total = 0;
     83                for(j=0;j<256;j++)
     84                        total += tos_stat[i][j].count;
     85                //printf("%s: %i\n", "Total", total);
    3486        }
    3587}
Note: See TracChangeset for help on using the changeset viewer.