Changeset bb75d10 for lib/linktypes.c


Ignore:
Timestamp:
11/13/06 16:24:07 (15 years ago)
Author:
Perry Lorier <perry@…>
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:
6d977c9
Parents:
ef8358e
Message:
  • Support Demoting PoS traces
  • Ignore the (incorrect) ethertype field of the legacypos: traces
  • Correctly calculate the wire length for some of the legacy trace types
  • Support pausing and restarting legacy traces
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/linktypes.c

    r2f3a25e rbb75d10  
    215215        static libtrace_t *trace = NULL;
    216216        switch(trace_get_link_type(packet)) {
     217                case TRACE_TYPE_POS:
     218                        remaining=trace_get_capture_length(packet);
     219                        packet->payload=trace_get_payload_from_pos(
     220                                packet->payload,NULL,&remaining);
     221
     222                        tmp=malloc(
     223                                trace_get_capture_length(packet)
     224                                +sizeof(libtrace_pcapfile_pkt_hdr_t)
     225                                );
     226
     227                        tv=trace_get_timeval(packet);
     228                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->ts_sec=tv.tv_sec;
     229                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->ts_usec=tv.tv_usec;
     230                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->wirelen
     231                                = trace_get_wire_length(packet)-(trace_get_capture_length(packet)-remaining);
     232                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->caplen
     233                                = remaining;
     234
     235                        fprintf(stderr,"%i %i %i %i\n",
     236                                        trace_get_capture_length(packet),
     237                                        trace_get_wire_length(packet),
     238                                        remaining,
     239                                        trace_get_capture_length(packet)-remaining);
     240
     241                        memcpy(tmp+sizeof(libtrace_pcapfile_pkt_hdr_t),
     242                                        packet->payload,
     243                                        remaining);
     244                        if (packet->buf_control == TRACE_CTRL_EXTERNAL) {
     245                                packet->buf_control=TRACE_CTRL_PACKET;
     246                        }
     247                        else {
     248                                free(packet->buffer);
     249                        }
     250                        packet->buffer=tmp;
     251                        packet->header=tmp;
     252                        packet->payload=tmp+sizeof(libtrace_pcapfile_pkt_hdr_t);
     253                        packet->type=pcap_dlt_to_rt(TRACE_DLT_RAW);
     254                       
     255                        if (trace == NULL) {
     256                                trace = trace_create_dead("pcap:-");
     257                        }
     258
     259                        packet->trace=trace;
     260
     261                        return true;
    217262                case TRACE_TYPE_ATM:
    218263                        remaining=trace_get_capture_length(packet);
     
    228273                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->ts_sec=tv.tv_sec;
    229274                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->ts_usec=tv.tv_usec;
     275                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->wirelen
     276                                = trace_get_wire_length(packet)-(trace_get_capture_length(packet)-remaining);
    230277                        ((libtrace_pcapfile_pkt_hdr_t*)tmp)->caplen
    231278                                = remaining;
    232                         ((libtrace_pcapfile_pkt_hdr_t*)tmp)->wirelen
    233                                 = trace_get_capture_length(packet)-remaining;
    234279
    235280                        memcpy(tmp+sizeof(libtrace_pcapfile_pkt_hdr_t),
Note: See TracChangeset for help on using the changeset viewer.