Changeset 4a207b8 for lib/linktypes.c


Ignore:
Timestamp:
03/23/07 16:41:03 (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:
dbdc23f
Parents:
83f2cbf
Message:

Endace POS traces are in fact PPP traces. Deal with this correctly, even when
converting between trace formats

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/linktypes.c

    r4746c71 r4a207b8  
    4242                case TRACE_DLT_IEEE802_11_RADIO: return TRACE_TYPE_80211_RADIO;
    4343                case TRACE_DLT_ATM_RFC1483: return TRACE_TYPE_LLCSNAP;
     44                case TRACE_DLT_PPP: return TRACE_TYPE_PPP;
    4445                /* Unhandled */
    4546                case TRACE_DLT_NULL:    /* Raw IP frame with a BSD specific
     
    6768                case TRACE_TYPE_80211_RADIO: return TRACE_DLT_IEEE802_11_RADIO;
    6869                case TRACE_TYPE_LLCSNAP: return TRACE_DLT_ATM_RFC1483;
     70                case TRACE_TYPE_PPP:    return TRACE_DLT_PPP;
    6971                /* Below here are unsupported conversions */
    7072                /* Dispite hints to the contrary, there is no DLT
     
    8082                /* Used for test traces within WAND */
    8183                case TRACE_TYPE_80211_PRISM:   
     84                /* Probably == PPP */
     85                case TRACE_TYPE_POS:
    8286                /* TODO: We haven't researched these yet */
    83                 case TRACE_TYPE_POS:
     87                case TRACE_TYPE_AAL5:
    8488                case TRACE_TYPE_HDLC_POS:
    85                 case TRACE_TYPE_AAL5:
    8689                        break;
    8790        }
     
    125128                case TRACE_TYPE_80211_PRISM:
    126129                case TRACE_TYPE_80211:
    127                 case TRACE_TYPE_POS:
    128130                case TRACE_TYPE_PFLOG:
    129131                case TRACE_TYPE_NONE:
    130132                case TRACE_TYPE_LINUX_SLL:
     133                case TRACE_TYPE_PPP:
     134                case TRACE_TYPE_POS:
    131135                        break;
    132136        }
     
    241245        static libtrace_t *trace = NULL;
    242246        switch(trace_get_link_type(packet)) {
    243                 case TRACE_TYPE_POS:
    244                         remaining=trace_get_capture_length(packet);
    245                         packet->payload=trace_get_payload_from_pos(
    246                                 packet->payload,NULL,&remaining);
    247 
    248                         tmp=(char*)malloc(
    249                                 trace_get_capture_length(packet)
    250                                 +sizeof(libtrace_pcapfile_pkt_hdr_t)
    251                                 );
    252 
    253                         tv=trace_get_timeval(packet);
    254                         ((libtrace_pcapfile_pkt_hdr_t*)tmp)->ts_sec=tv.tv_sec;
    255                         ((libtrace_pcapfile_pkt_hdr_t*)tmp)->ts_usec=tv.tv_usec;
    256                         ((libtrace_pcapfile_pkt_hdr_t*)tmp)->wirelen
    257                                 = trace_get_wire_length(packet)-(trace_get_capture_length(packet)-remaining);
    258                         ((libtrace_pcapfile_pkt_hdr_t*)tmp)->caplen
    259                                 = remaining;
    260 
    261                         memcpy(tmp+sizeof(libtrace_pcapfile_pkt_hdr_t),
    262                                         packet->payload,
    263                                         (size_t)remaining);
    264                         if (packet->buf_control == TRACE_CTRL_EXTERNAL) {
    265                                 packet->buf_control=TRACE_CTRL_PACKET;
    266                         }
    267                         else {
    268                                 free(packet->buffer);
    269                         }
    270                         packet->buffer=tmp;
    271                         packet->header=tmp;
    272                         packet->payload=tmp+sizeof(libtrace_pcapfile_pkt_hdr_t);
    273                         packet->type=pcap_dlt_to_rt(TRACE_DLT_RAW);
    274                        
    275                         if (trace == NULL) {
    276                                 trace = trace_create_dead("pcap:-");
    277                         }
    278 
    279                         packet->trace=trace;
    280 
    281                         return true;
    282247                case TRACE_TYPE_ATM:
    283248                        remaining=trace_get_capture_length(packet);
Note: See TracChangeset for help on using the changeset viewer.