Changeset 14cc9ce for lib


Ignore:
Timestamp:
07/15/11 16:21:27 (10 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:
44028d4
Parents:
29b93a5
Message:
  • Fixed very old bug with trace_get_layer2 that occurs when the packet has meta-data headers but no layer2 payload. The function used to return the last meta-data header instead of the expected NULL. Should resolve #263.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/protocols_l2.c

    r9cc1266 r14cc9ce  
    365365                void *nexthdr = trace_get_payload_from_meta(meta,
    366366                                linktype, remaining);
    367                 if (nexthdr == NULL)
    368                         return meta;
     367               
     368                if (nexthdr == NULL) {
     369                        switch (*linktype) {
     370                                /* meta points to a layer 2 header! */
     371                                case TRACE_TYPE_HDLC_POS:
     372                                case TRACE_TYPE_ETH:
     373                                case TRACE_TYPE_ATM:
     374                                case TRACE_TYPE_80211:
     375                                case TRACE_TYPE_NONE:
     376                                case TRACE_TYPE_POS:
     377                                case TRACE_TYPE_AAL5:
     378                                case TRACE_TYPE_DUCK:
     379                                case TRACE_TYPE_LLCSNAP:
     380                                case TRACE_TYPE_PPP:
     381                                case TRACE_TYPE_METADATA:
     382                                case TRACE_TYPE_NONDATA:
     383                                        return meta;
     384                                case TRACE_TYPE_LINUX_SLL:
     385                                case TRACE_TYPE_80211_RADIO:
     386                                case TRACE_TYPE_80211_PRISM:
     387                                case TRACE_TYPE_PFLOG:
     388                                        break;
     389                        }
     390                       
     391                        /* Otherwise, we must have hit the end of the packet */
     392                        return NULL;
     393                }
     394         
     395               
    369396                meta = nexthdr;
    370397        }
Note: See TracChangeset for help on using the changeset viewer.