Ignore:
Timestamp:
08/01/07 16:58:15 (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:
82b26ab
Parents:
646aca1
Message:
  • Updated a number of formats to not set the libtrace error for config options they didn't understand. trace_config will attempt to set the option upon their return and should be trusted to set the error appropriately if it also fails.
  • Updated the synopt report to report percentages of option combos in SYNs and SYNACKs separately
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/tracereport/synopt_report.c

    r466aed6 r708f9ae  
    3535};
    3636
    37 struct opt_counter counts = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
     37struct opt_counter syn_counts = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
     38struct opt_counter synack_counts = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
     39
    3840uint64_t total_syns = 0;
    39 
    40 static void classify_packet(struct tcp_opts opts) {
     41uint64_t total_synacks = 0;
     42
     43static void classify_packet(struct tcp_opts opts, struct opt_counter *counts) {
    4144        if (!opts.mss && !opts.sack && !opts.winscale && !opts.ts && !opts.ttcp && !opts.other)
    4245        {
    43                 counts.no_options ++;
     46                counts->no_options ++;
    4447                return;
    4548        }
     
    4750        if (opts.mss && !opts.sack && !opts.winscale && !opts.ts && !opts.ttcp && !opts.other)
    4851        {
    49                 counts.mss_only ++;
     52                counts->mss_only ++;
    5053                return;
    5154        }
     
    5356        if (!opts.mss && !opts.sack && !opts.winscale && opts.ts && !opts.ttcp && !opts.other)
    5457        {
    55                 counts.ts_only ++;
     58                counts->ts_only ++;
    5659                return;
    5760        }
    5861
    5962        if (opts.mss && opts.sack && !opts.winscale && !opts.ts)
    60                 counts.ms ++;
     63                counts->ms ++;
    6164
    6265        if (opts.mss && opts.winscale && !opts.sack && !opts.ts)
    63                 counts.mw ++;
     66                counts->mw ++;
    6467
    6568        if (opts.mss && opts.winscale && opts.sack && !opts.ts)
    66                 counts.msw ++;
     69                counts->msw ++;
    6770       
    6871        if (opts.mss && opts.ts && !opts.winscale && !opts.sack)
    69                 counts.mt ++;
     72                counts->mt ++;
    7073        if (opts.ts && opts.sack && !opts.mss && !opts.winscale)
    71                 counts.ts_and_sack ++;
     74                counts->ts_and_sack ++;
    7275
    7376        if (opts.ts && opts.winscale && !opts.mss && !opts.sack)
    74                 counts.wt ++;
     77                counts->wt ++;
    7578
    7679        if (opts.ts && opts.mss && opts.winscale && !opts.sack)
    77                 counts.tmw ++;
     80                counts->tmw ++;
    7881        if (opts.ts && opts.mss && opts.sack && !opts.winscale)
    79                 counts.tms ++;
     82                counts->tms ++;
    8083        if (opts.ts && opts.sack && opts.winscale && !opts.mss)
    81                 counts.tws ++;
     84                counts->tws ++;
    8285       
    8386       
    8487        if (opts.mss && opts.sack && opts.winscale && opts.ts) {
    85                 counts.all_four ++;
     88                counts->all_four ++;
    8689        }
    8790
    8891        if (opts.ts && (opts.mss || opts.winscale || opts.sack)) {
    89                 counts.ts_and_another ++;
     92                counts->ts_and_another ++;
    9093        }
    9194       
    9295        if (opts.ttcp)
    93                 counts.ttcp ++;
     96                counts->ttcp ++;
    9497        if (opts.other)
    95                 counts.other ++;       
     98                counts->other ++;       
    9699}
    97100
     
    111114                return;
    112115       
    113         total_syns += 1;
    114116        if (dir != TRACE_DIR_INCOMING && dir != TRACE_DIR_OUTGOING)
    115117                dir = TRACE_DIR_OTHER;
     
    152154                }
    153155        }
    154        
    155         classify_packet(opts_seen);
     156
     157        if (tcp->ack) {
     158                total_synacks ++;
     159                classify_packet(opts_seen, &synack_counts);
     160        } else {
     161                total_syns ++;
     162                classify_packet(opts_seen, &syn_counts);
     163        }
    156164}
    157165
     
    167175
    168176
    169         fprintf(out, "%-20s\t%.2f%%\n",
     177       
     178        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    170179                        "No Options",
    171                         (double)(counts.no_options) / total_syns * 100.0);
    172         fprintf(out, "%-20s\t%.2f%%\n",
     180                        (double)(syn_counts.no_options) / total_syns * 100.0,
     181                        (double)(synack_counts.no_options) / total_synacks * 100.0);
     182        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    173183                        "M Only",
    174                         (double)(counts.mss_only) / total_syns * 100.0);
    175         fprintf(out, "%-20s\t%.2f%%\n",
     184                        (double)(syn_counts.mss_only) / total_syns * 100.0,
     185                        (double)(synack_counts.mss_only) / total_synacks * 100.0);
     186        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    176187                        "T Only",
    177                         (double)(counts.ts_only) / total_syns * 100.0);
    178         fprintf(out, "%-20s\t%.2f%%\n",
     188                        (double)(syn_counts.ts_only) / total_syns * 100.0,
     189                        (double)(synack_counts.ts_only) / total_synacks * 100.0);
     190        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    179191                        "M and S",
    180                         (double)(counts.ms) / total_syns * 100.0);
    181         fprintf(out, "%-20s\t%.2f%%\n",
     192                        (double)(syn_counts.ms) / total_syns * 100.0,
     193                        (double)(synack_counts.ms) / total_synacks * 100.0);
     194        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    182195                        "M and W",
    183                         (double)(counts.mw) / total_syns * 100.0);
    184         fprintf(out, "%-20s\t%.2f%%\n",
     196                        (double)(syn_counts.mw) / total_syns * 100.0,
     197                        (double)(synack_counts.mw) / total_synacks * 100.0);
     198        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    185199                        "M, S and W",
    186                         (double)(counts.msw) / total_syns * 100.0);
    187         fprintf(out, "%-20s\t%.2f%%\n",
     200                        (double)(syn_counts.msw) / total_syns * 100.0,
     201                        (double)(synack_counts.msw) / total_synacks * 100.0);
     202        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    188203                        "M, T",
    189                         (double)(counts.mt) / total_syns * 100.0);
    190         fprintf(out, "%-20s\t%.2f%%\n",
     204                        (double)(syn_counts.mt) / total_syns * 100.0,
     205                        (double)(synack_counts.mt) / total_synacks * 100.0);
     206        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    191207                        "W, T",
    192                         (double)(counts.wt) / total_syns * 100.0);
    193         fprintf(out, "%-20s\t%.2f%%\n",
     208                        (double)(syn_counts.wt) / total_syns * 100.0,
     209                        (double)(synack_counts.wt) / total_synacks * 100.0);
     210        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    194211                        "S, T",
    195                         (double)(counts.ts_and_sack) / total_syns * 100.0);
    196         fprintf(out, "%-20s\t%.2f%%\n",
     212                        (double)(syn_counts.ts_and_sack) / total_syns * 100.0,
     213                        (double)(synack_counts.ts_and_sack) / total_synacks * 100.0);
     214        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    197215                        "S, M, T",
    198                         (double)(counts.tms) / total_syns * 100.0);
    199         fprintf(out, "%-20s\t%.2f%%\n",
     216                        (double)(syn_counts.tms) / total_syns * 100.0,
     217                        (double)(synack_counts.tms) / total_synacks * 100.0);
     218        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    200219                        "W, M, T",
    201                         (double)(counts.tmw) / total_syns * 100.0);
    202         fprintf(out, "%-20s\t%.2f%%\n",
     220                        (double)(syn_counts.tmw) / total_syns * 100.0,
     221                        (double)(synack_counts.tmw) / total_synacks * 100.0);
     222        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    203223                        "S, W, T",
    204                         (double)(counts.tws) / total_syns * 100.0);
    205         fprintf(out, "%-20s\t%.2f%%\n",
     224                        (double)(syn_counts.tws) / total_syns * 100.0,
     225                        (double)(synack_counts.tws) / total_synacks * 100.0);
     226        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    206227                        "M, S, W and T",
    207                         (double)(counts.all_four) / total_syns * 100.0);
     228                        (double)(syn_counts.all_four) / total_syns * 100.0,
     229                        (double)(synack_counts.all_four) / total_synacks * 100.0);
    208230        //fprintf(out, "%-20s\t%.2f%%\n",
    209231        //              "T and (M or S or W)",
    210232        //              (double)(counts.ts_and_another) / total_syns * 100.0);
    211         fprintf(out, "%-20s\t%.2f%%\n",
     233        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    212234                        "T/TCP",
    213                         (double)(counts.ttcp) / total_syns * 100.0);
    214         fprintf(out, "%-20s\t%.2f%%\n",
     235                        (double)(syn_counts.ttcp) / total_syns * 100.0,
     236                        (double)(synack_counts.ttcp) / total_synacks * 100.0);
     237        fprintf(out, "%-20s\t%.2f%%\t%.2f%%\n",
    215238                        "Other options",
    216                         (double)(counts.other) / total_syns * 100.0);
     239                        (double)(syn_counts.other) / total_syns * 100.0,
     240                        (double)(synack_counts.other) / total_synacks * 100.0);
    217241       
    218242       
Note: See TracChangeset for help on using the changeset viewer.