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/protocol_report.c

    r938dbd9 rd4336d5  
    77#include "report.h"
    88
    9 static stat_t prot_stat[256] = { {0,0} } ;
     9static stat_t prot_stat[4][256] = {{{0,0}}} ;
     10static bool suppress[4] = {true,true,true,true};
    1011
    1112void protocol_per_packet(struct libtrace_packet_t *packet)
    1213{
    1314        uint8_t proto;
     15        int dir = trace_get_direction(packet);
     16        if(dir < 0 || dir > 1)
     17                dir = 2;
    1418        if (trace_get_transport(packet,&proto,NULL)==NULL)
    1519                return;
    1620               
    17         prot_stat[proto].count++;
    18         prot_stat[proto].bytes+=trace_get_wire_length(packet);
     21        prot_stat[dir][proto].count++;
     22        prot_stat[dir][proto].bytes+=trace_get_wire_length(packet);
     23        suppress[dir] = false;
     24}
     25
     26void protocol_suppress()
     27{
     28        int i;
     29        printf("%-20s","Direction:");
     30        //printf("%20s", " ");
     31        for(i=0;i<4;i++){
     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","Protocol");
     50        for(i=0;i<4;i++){
     51                if(!suppress[i]){
     52                        printf("\t%12s\t%12s", "bytes","packets");
     53                }
     54        }
     55        printf("\n");
    1956}
    2057
    2158void protocol_report(void)
    2259{
    23         int i;
     60        int i,j;
    2461        printf("# Protocol breakdown:\n");
    25         printf("%-20s \t%12s\t%12s\n","Protocol","bytes","packets");
     62        protocol_suppress();
    2663        setprotoent(1);
    2764        for(i=0;i<256;++i) {
    2865                struct protoent *prot;
    29                 if (prot_stat[i].count==0)
     66                if (prot_stat[0][i].count==0 &&
     67                        prot_stat[1][i].count==0 && prot_stat[2][i].count==0)
    3068                        continue;
    3169                prot = getprotobynumber(i);
    3270                if (prot) {
    33                 printf("%20s:\t%12" PRIu64 "\t%12" PRIu64 "\n",
    34                                 prot->p_name,
    35                                 prot_stat[i].bytes,
    36                                 prot_stat[i].count);
     71                        printf("%20s",prot->p_name);
     72                        for(j=0;j<4;j++){
     73                                if (prot_stat[j][i].count==0){
     74                                        if(!suppress[j])
     75                                                printf("\t%24s"," ");
     76                                        continue;
     77                                }
     78                                printf("\t%12" PRIu64 "\t%12" PRIu64,
     79                                                prot_stat[j][i].bytes,
     80                                                prot_stat[j][i].count);
     81                        }
    3782                }
    3883                else {
    39                 printf("%20i:\t%12" PRIu64 "\t%12" PRIu64 "\n",
    40                                 i,
    41                                 prot_stat[i].bytes,
    42                                 prot_stat[i].count);
    43 
     84                        printf("%20i:",i);
     85                        for(j=0;j<4;j++){
     86                                if (prot_stat[j][i].count==0){
     87                                        if(!suppress[j])
     88                                                printf("\t%24s"," ");
     89                                        continue;
     90                                }
     91                                printf("\t%12" PRIu64 "\t%12" PRIu64,
     92                                                prot_stat[j][i].bytes,
     93                                                prot_stat[j][i].count);
     94                        }
    4495                }
     96                printf("\n");
    4597        }
    4698        setprotoent(0);
     99       
     100        int total;
     101        for(i=0;i<4;i++){
     102                total = 0;
     103                for(j=0;j<256;j++)
     104                        total += prot_stat[i][j].count;
     105                //printf("%s: %i\n", "Total", total);
     106        }
    47107}
Note: See TracChangeset for help on using the changeset viewer.