Ignore:
Timestamp:
04/27/07 14:11:34 (14 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:
f3576f5
Parents:
e991529
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/tracereport/protocol_report.c

    rb5dc60d rbd4bec9  
    2626}
    2727
    28 void protocol_suppress()
    29 {
    30         int i;
    31         printf("%-20s","Direction:");
    32         for(i=0;i<3;i++){
    33                 if(!suppress[i]){
    34                         switch(i){
    35                                 case 0:
    36                                         printf("\t%24s", "Outbound   ");
    37                                         break;
    38                                 case 1:
    39                                         printf("\t%24s", "Inbound   ");
    40                                         break;
    41                                 case 2:
    42                                         printf("\t%24s", "Undefined   ");
    43                                         break;
    44                                 default:
    45                                         break;
    46                         }
    47                 }
    48         }
    49         printf("\n");
    50         printf("%-20s","Protocol");
    51         for(i=0;i<3;i++){
    52                 if(!suppress[i]){
    53                         printf("\t%12s\t%12s", "bytes","packets");
    54                 }
    55         }
    56         printf("\n");
    57 }
    58 
    5928void protocol_report(void)
    6029{
    6130        int i,j;
    62         printf("# Protocol breakdown:\n");
    63         protocol_suppress();
     31        FILE *out = fopen("protocol.rpt", "w");
     32        if (!out) {
     33                perror("fopen");
     34                return;
     35        }
     36        fprintf(out, "%-16s\t%10s\t%16s %16s\n",
     37                        "PROTOCOL",
     38                        "DIRECTION",
     39                        "BYTES",
     40                        "PACKETS");
     41       
    6442        setprotoent(1);
    6543        for(i=0;i<256;++i) {
     
    7048                prot = getprotobynumber(i);
    7149                if (prot) {
    72                         printf("%20s",prot->p_name);
    73                         for(j=0;j<3;j++){
    74                                 if (prot_stat[j][i].count==0){
    75                                         if(!suppress[j])
    76                                                 printf("\t%24s"," ");
    77                                         continue;
    78                                 }
    79                                 printf("\t%12" PRIu64 "\t%12" PRIu64,
    80                                                 prot_stat[j][i].bytes,
    81                                                 prot_stat[j][i].count);
    82                         }
     50                        fprintf(out, "%16s",prot->p_name);
    8351                }
    8452                else {
    85                         printf("%20i:",i);
    86                         for(j=0;j<3;j++){
    87                                 if (prot_stat[j][i].count==0){
    88                                         if(!suppress[j])
    89                                                 printf("\t%24s"," ");
    90                                         continue;
    91                                 }
    92                                 printf("\t%12" PRIu64 "\t%12" PRIu64,
    93                                                 prot_stat[j][i].bytes,
    94                                                 prot_stat[j][i].count);
     53                        fprintf(out, "%16i:",i);
     54                }
     55                for (j=0; j < 3; j++) {
     56                        if (j != 0) {
     57                                fprintf(out, "%16s", " ");
    9558                        }
    96                 }
    97                 printf("\n");
     59                        switch (j) {
     60                                case 0:
     61                                        fprintf(out, "\t%10s", "Outbound");
     62                                        break;
     63                                case 1:
     64                                        fprintf(out, "\t%10s", "Inbound");
     65                                        break;
     66                                case 2:
     67                                        fprintf(out, "\t%10s", "Unknown");
     68                                        break;
     69                        }
     70
     71                        fprintf(out, "\t%16llu %16llu\n",
     72                                        prot_stat[j][i].bytes,
     73                                        prot_stat[j][i].count);
     74                }
    9875        }
     76
    9977        setprotoent(0);
     78        fclose(out);
    10079}
Note: See TracChangeset for help on using the changeset viewer.