Ignore:
Timestamp:
04/27/07 14:11:34 (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:
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/tcpsegment_report.c

    rb5dc60d rbd4bec9  
    1212{
    1313        struct libtrace_tcp *tcp = trace_get_tcp(packet);
     14        libtrace_ip_t *ip = trace_get_ip(packet);
    1415        libtrace_direction_t dir = trace_get_direction(packet);
    15         int payload, tcplen, ss;
     16        int ss;
     17        uint16_t ip_len ;
    1618       
    1719        if (!tcp)
     
    2123                dir = TRACE_DIR_OTHER;
    2224       
    23         payload = trace_get_wire_length(packet) - trace_get_capture_length(packet);
    24         tcplen = tcp->doff * 4;
    25         ss = payload + tcplen;
     25        ip_len = ntohs(ip->ip_len);
     26        ss = ip_len - (ip->ip_hl * 4);
    2627
    2728        tcpseg_stat[dir][ss].count++;
     
    6465{
    6566        int i,j;
    66         printf("# TCP Segment Size breakdown:\n");
    67         tcpseg_suppress();
     67        FILE *out = fopen("tcpseg.rpt", "w");
     68        if (!out) {
     69                perror("fopen");
     70                return;
     71        }
     72        fprintf(out, "%-16s\t%10s\t%16s %16s\n",
     73                        "SEGMENT SIZE",
     74                        "DIRECTION",
     75                        "BYTES",
     76                        "PACKETS");
     77       
    6878        for(i=0;i<2048;++i) {
    6979                if (tcpseg_stat[0][i].count==0 &&
    7080                        tcpseg_stat[1][i].count==0 && tcpseg_stat[2][i].count==0)
    7181                        continue;
    72                 printf("%20i:",i);
     82                fprintf(out, "%16i:",i);
    7383                for(j=0;j<3;j++){
    74                         if (tcpseg_stat[j][i].count==0){
    75                                 if(!suppress[j])
    76                                         printf("\t%24s"," ");
    77                                 continue;
     84                        if (j != 0) {
     85                                fprintf(out, "%16s", " ");
    7886                        }
    79                         printf("\t%12" PRIu64 "\t%12" PRIu64,
     87                        switch (j) {
     88                                case 0:
     89                                        fprintf(out, "\t%10s", "Outbound");
     90                                        break;
     91                                case 1:
     92                                        fprintf(out, "\t%10s", "Inbound");
     93                                        break;
     94                                case 2:
     95                                        fprintf(out, "\t%10s", "Unknown");
     96                                        break;
     97                        }
     98                        fprintf(out, "\t%16llu %16llu\n",
    8099                                tcpseg_stat[j][i].bytes,
    81                                 tcpseg_stat[j][i].count);
     100                                tcpseg_stat[j][i].count);       
    82101                }
    83                 printf("\n");
    84102        }
     103        fclose(out);
    85104}
Note: See TracChangeset for help on using the changeset viewer.