Changeset d242ea8


Ignore:
Timestamp:
02/07/07 16:46:43 (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:
43ab7b3
Parents:
205809b
Message:

Some of tracesummary's bpf filters were incorrect - however the new correct filters don't work so well with the output format so that will need fixing at some point
Improved error reporting for bpf filters
tracestats will now ignore a filter that fails and print a single warning. It also no longer increments the counter for filters that fail.

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lib/trace.c

    r205809b rd242ea8  
    975975       
    976976        if (filter->filterstring && ! filter->flag) {
    977                 pcap_t *pcap;
     977                pcap_t *pcap = NULL;
    978978                libtrace_linktype_t linktype=trace_get_link_type(packet);
    979979                if (linktype==(libtrace_linktype_t)-1) {
     
    985985                if (libtrace_to_pcap_dlt(linktype) == ~1U) {
    986986                        trace_set_err(packet->trace,TRACE_ERR_BAD_PACKET,
    987                                         "Unknown pcap equivilent linktype");
     987                                        "Unknown pcap equivalent linktype");
    988988                        return -1;
    989989                }
     
    992992                                1500U);
    993993                /* build filter */
     994                assert(pcap);
    994995                if (pcap_compile( pcap, &filter->filter, filter->filterstring,
    995996                                        1, 0)) {
     997                        trace_set_err(packet->trace,TRACE_ERR_BAD_PACKET,
     998                                        "Unable to compile the filter \"%s\": %s",
     999                                        filter->filterstring,
     1000                                        pcap_geterr(pcap));
    9961001                        pcap_close(pcap);
    997                         trace_set_err(packet->trace,TRACE_ERR_BAD_PACKET,
    998                                         "Packet has no payload");
    9991002                        return -1;
    10001003                }
  • tools/tracestats/tracestats.c

    rd5a27e8 rd242ea8  
    100100
    101101                for(i=0;i<filter_count;++i) {
    102                         if(trace_apply_filter(filters[i].filter,packet)) {
     102                        if (filters[i].filter == NULL)
     103                                continue;
     104                        if(trace_apply_filter(filters[i].filter,packet) > 0) {
    103105                                ++filters[i].count;
    104106                                filters[i].bytes+=trace_get_wire_length(packet);
     107                        }
     108                        if (trace_is_err(trace)) {
     109                                trace_perror(trace, "trace_apply_filter");
     110                                fprintf(stderr, "Removing filter from filterlist\n");
     111                                filters[i].filter = NULL;
    105112                        }
    106113                }
     
    110117        }
    111118
     119        printf("%-30s\t%12s\t%12s\t%7s\n","filter","count","bytes","%");
    112120        for(i=0;i<filter_count;++i) {
    113121                printf("%30s:\t%12"PRIu64"\t%12"PRIu64"\t%7.03f\n",filters[i].expr,filters[i].count,filters[i].bytes,filters[i].count*100.0/count);
     
    165173        }
    166174
    167         printf("%-30s\t%12s\t%12s\t%7s\n","filter","count","bytes","%");
    168175        for(i=optind;i<argc;++i) {
    169176                run_trace(argv[i]);
  • tools/tracestats/tracesummary

    r130a0e4 rd242ea8  
    55fi
    66
    7 exec tracestats --filter 'not ip and not ip6' \
    8                 --filter 'ip6' \
    9                 --filter 'ip' \
     7exec tracestats
     8                # XXX: Fix the formatting for these filters
     9                --filter 'not ether proto \ip and not ether proto 0x86dd' \
     10                --filter 'ether proto 0x86dd' \
     11                --filter 'ether proto \ip' \
    1012                --filter tcp \
    1113                --filter udp \
Note: See TracChangeset for help on using the changeset viewer.