Ignore:
Timestamp:
02/22/07 13:48:08 (14 years ago)
Author:
Josef Vodanovich <jjv4@…>
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:
b5dc60d
Parents:
013d3692
Message:

Updated NLP and ECN reports with Shanes file output format and tidied up a bit of code so its readable, also added -t ttl to usage report.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/tracereport/ecn_report.c

    r09be643 r4eec8dc  
    66#include "tracereport.h"
    77
    8 static stat_t ecn_stat[4][4] = {{{0,0}}} ;
    9 static bool suppress[4] = {true,true,true,true};
     8static stat_t ecn_stat[3][4] = {{{0,0}}} ;
    109
    1110void ecn_per_packet(struct libtrace_packet_t *packet)
    1211{
    1312        struct libtrace_ip *ip = trace_get_ip(packet);
     13        libtrace_direction_t dir = trace_get_direction(packet);
     14        int ecn;
     15       
    1416        if (!ip)
    1517                return;
    16         int dir = trace_get_direction(packet);
    17         if(dir < 0 || dir > 1)
    18                 dir = 2;
    1918       
    20         int ecn = ip->ip_tos;
    21         ecn &= 3;
     19        if (dir != TRACE_DIR_INCOMING && dir != TRACE_DIR_OUTGOING)
     20                dir = TRACE_DIR_OTHER;
     21       
     22        ecn = ip->ip_tos & 0x2;
    2223        ecn_stat[dir][ecn].count++;
    2324        ecn_stat[dir][ecn].bytes+=trace_get_wire_length(packet);
    24         suppress[dir] = false;
    25 }
    26 
    27 void ecn_suppress()
    28 {
    29         int i;
    30         printf("%-20s","Direction:");
    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","ECN");
    50         for(i=0;i<4;i++){
    51                 if(!suppress[i]){
    52                         printf("\t%12s\t%12s", "bytes","packets");
    53                 }
    54         }
    55         printf("\n");
    5625}
    5726
     
    5928{
    6029        int i,j;
    61         printf("# ECN breakdown:\n");
    62         ecn_suppress();
     30       
     31        FILE *out = fopen("ecn.out", "w");
     32        if (!out) {
     33                perror("fopen");
     34                return;
     35        }
     36
     37        /* Put some headings up for human-readability */
     38        fprintf(out, "%-12s\t%8s\t%12s\t%12s\n",
     39                        "ECN",
     40                        "DIRECTION",
     41                        "BYTES",
     42                        "PACKETS");
     43       
    6344        for(i=0;i<4;++i) {
    6445                if (ecn_stat[0][i].count==0 &&
    6546                        ecn_stat[1][i].count==0 && ecn_stat[2][i].count==0)
    6647                        continue;
    67                 printf("%20i:",i);
    68                 for(j=0;j<4;j++){
    69                         if (ecn_stat[j][i].count==0){
    70                                 if(!suppress[j])
    71                                         printf("\t%24s"," ");
    72                                 continue;
     48                switch(i){
     49                        case 1:
     50                                fprintf(out, "%12s", "ECN CAPE |");
     51                                break;
     52                        case 2:
     53                                fprintf(out, "%12s", "ECN CAPE |");
     54                                break;
     55                        case 3:
     56                                fprintf(out, "%12s", "CONG EXP |");
     57                                break;
     58                        default:
     59                                fprintf(out, "%12s", "NO ECN |");       
     60                }
     61               
     62                for(j=0;j<3;j++){
     63                        if (j != 0) {
     64                                fprintf(out, "%12s", " |");
    7365                        }
    74                         printf("\t%12" PRIu64 "\t%12" PRIu64,
     66                       
     67                        switch (j) {
     68                                case 0:
     69                                        fprintf(out, "\t%8s", "Outbound");
     70                                        break;
     71                                case 1:
     72                                        fprintf(out, "\t%8s", "Inbound");
     73                                        break;
     74                                case 2:
     75                                        fprintf(out, "\t%8s", "Unknown");
     76                                        break;
     77                        }
     78                        fprintf(out, "\t%12llu %12llu\n",
    7579                                ecn_stat[j][i].bytes,
    7680                                ecn_stat[j][i].count);
    7781                }
    78                 printf("\n");
    7982        }
    8083       
     
    8487                        total += ecn_stat[i][j].count;
    8588        }
    86         printf("%s: %i\n", "Total ECN", total);
     89        fprintf(out, "%s: %i\n", "Total ECN", total);
     90        fclose(out);
    8791}
Note: See TracChangeset for help on using the changeset viewer.