Changeset 8e11beb


Ignore:
Timestamp:
07/03/17 16:37:48 (3 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
cachetimestamps, develop, dpdk-ndag, etsilive, master, ndag_format, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance
Children:
568a341
Parents:
ed5b2ce
Message:

Update tools to properly ignore meta records and missing timestamps

pcapng introduces a lot of meta records that we should preserve as
long as possible. Since we aren't automatically discarding them,
we need to make sure that our tools do not try to treat them as
"real" packets, i.e. try to get a timestamp or capture length from
them.

Similarly, simple pcapng packet records do not have a timestamp
so we need to make sure the tools do the right thing when
trace_get_seconds() returns a timestamp of zero on a packet. For
starters, we don't want to set our "first" packet time to zero
in that case!

Location:
tools
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • tools/traceanon/traceanon.cc

    r684a21c r8e11beb  
    175175        Anonymiser *anon = (Anonymiser *)tls;
    176176        libtrace_generic_t result;
     177
     178        if (IS_LIBTRACE_META_PACKET(packet))
     179                return packet;
    177180
    178181        ipptr = trace_get_ip(packet);
  • tools/traceends/traceends.cc

    ree6e802 r8e11beb  
    309309        c->src_pbytes += plen;
    310310        c->src_bytes += ip->ip_len;
    311         c->last_active = ts;
     311        if (ts != 0)
     312                c->last_active = ts;
    312313       
    313314        key = ip->ip_dst.s_addr;
     
    324325        c->dst_pbytes += plen;
    325326        c->dst_bytes += ip_len;
    326         c->last_active = ts;
     327        if (ts != 0)
     328                c->last_active = ts;
    327329}
    328330
     
    455457
    456458                while (trace_read_packet(input,packet)>0) {
     459                        if (IS_LIBTRACE_META_PACKET(packet))
     460                                continue;
    457461                        if (per_packet(packet) < 1)
    458462                                done = 1;
  • tools/tracemerge/tracemerge.c

    ree6e802 r8e11beb  
    213213        while(1) {
    214214                uint64_t oldest_ts=0;
     215                uint64_t this_ts = 0;
    215216                int oldest=-1;
    216217                int curr_dir;
     
    234235                                        live[i]=true;
    235236                        }
    236                         if (live[i] &&
    237                                 (oldest==-1 ||
    238                                  oldest_ts>trace_get_erf_timestamp(packet[i]))) {
    239                                 oldest=i;
    240                                 oldest_ts=trace_get_erf_timestamp(packet[i]);
    241                         }
     237                        if (live[i]) {
     238                                this_ts = trace_get_erf_timestamp(packet[i]);
     239                                if (this_ts != 0 && (oldest==-1 ||
     240                                                oldest_ts>this_ts)) {
     241                                        oldest=i;
     242                                        oldest_ts=this_ts;
     243                                }
     244                        }
    242245                }
    243246                /* We have run out of packets! */
  • tools/tracereplay/tracereplay.c

    ree6e802 r8e11beb  
    9696        int i;
    9797
     98        if (IS_LIBTRACE_META_PACKET(packet))
     99                return NULL;
     100
    98101        pkt_buffer = trace_get_packet_buffer(packet,&linktype,&remaining);
    99102        remaining = 0;
     
    307310                new = per_packet(packet);
    308311
     312                if (!new)
     313                        continue;
     314
    309315                if (trace_write_packet(output, new) < 0) {
    310316                        trace_perror_output(output, "Writing packet");
  • tools/tracereport/misc_report.c

    ree6e802 r8e11beb  
    4646{
    4747        double ts = trace_get_seconds(packet);
    48         if (!has_starttime || starttime > ts)
     48        if (ts != 0 && (!has_starttime || starttime > ts))
    4949                starttime = ts;
    50         if (!has_endtime || endtime < ts)
     50        if (ts != 0 && (!has_endtime || endtime < ts))
    5151                endtime = ts;
    5252        has_starttime = has_endtime = true;
  • tools/tracereport/tracereport.c

    ree6e802 r8e11beb  
    9393                        break;
    9494                }
     95                if (IS_LIBTRACE_META_PACKET(packet))
     96                        continue;
     97
    9598                if (reports_required & REPORT_TYPE_MISC)
    9699                        misc_per_packet(packet);
  • tools/tracertstats/tracertstats.c

    r0b4b388 r8e11beb  
    188188        thread_data_t *td = (thread_data_t *)tls;
    189189        int i;
     190
     191        if (IS_LIBTRACE_META_PACKET(packet)) {
     192                return packet;
     193        }
    190194
    191195        key = trace_get_erf_timestamp(packet);
  • tools/tracesplit/tracesplit.c

    ree6e802 r8e11beb  
    190190 */
    191191static int per_packet(libtrace_packet_t **packet) {
     192        if (IS_LIBTRACE_META_PACKET((*packet))) {
     193                return 1;
     194        }
    192195
    193196        if (trace_get_link_type(*packet) == -1) {
     
    210213        if (firsttime==0) {
    211214                time_t now = trace_get_seconds(*packet);
    212                 if (starttime != 0) {
     215                if (now != 0 && starttime != 0) {
    213216                        firsttime=now-((now - starttime)%interval);
    214217                }
    215                 else {
     218                else if (now != 0) {
    216219                        firsttime=now;
    217220                }
  • tools/tracestats/tracestats.c

    ree6e802 r8e11beb  
    155155        int i, wlen;
    156156
     157        if (IS_LIBTRACE_META_PACKET(pkt))
     158                return pkt;
     159
    157160        /* Apply filters to every packet note the result */
    158161        wlen = trace_get_wire_length(pkt);
  • tools/tracetop/tracetop.cc

    ree6e802 r8e11beb  
    261261        flows_t::iterator it;
    262262
     263        if (IS_LIBTRACE_META_PACKET(packet))
     264                return;
     265
    263266        if (trace_get_source_address(packet,(struct sockaddr*)&flowkey.sip)==NULL)
    264267                flowkey.sip.ss_family = AF_UNSPEC;
     
    467470                                if (trace_get_seconds(packet) - last_report >= interval) {
    468471                                        do_report();
    469                                                
    470472                                        last_report=trace_get_seconds(packet);
    471473                                }
Note: See TracChangeset for help on using the changeset viewer.