Changeset c259635 for lib/protocols_l3.c


Ignore:
Timestamp:
11/24/10 10:34:17 (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:
08c56ac
Parents:
5f329ab
Message:
  • IPv6 fragment extension headers use a rather different header format than other extensions.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/protocols_l3.c

    r4bbe9bd rc259635  
    141141        void *payload = (char*)ipptr+sizeof(libtrace_ip6_t);
    142142        uint8_t nxt;
     143        uint16_t len;
    143144
    144145        assert (ipptr != NULL);
     
    156157                        case 0: /* hop by hop options */
    157158                        case TRACE_IPPROTO_ROUTING:
    158                         case TRACE_IPPROTO_FRAGMENT:
    159159                        case TRACE_IPPROTO_ESP:
    160160                        case TRACE_IPPROTO_AH:
    161161                        case TRACE_IPPROTO_DSTOPTS:
    162162                                {
    163                                         uint16_t len=((libtrace_ip6_ext_t*)payload)->len
     163                                        len=((libtrace_ip6_ext_t*)payload)->len
    164164                                        +sizeof(libtrace_ip6_ext_t);
    165165
     
    177177                                        continue;
    178178                                }
     179                        case TRACE_IPPROTO_FRAGMENT:
     180                                {
     181                                        len = sizeof(libtrace_ip6_frag_t);
     182                                        if (remaining) {
     183                                                if (*remaining < len) {
     184                                                        /* Snap too short */
     185                                                        *remaining = 0;
     186                                                        return NULL;
     187                                                }
     188                                                *remaining-=len;
     189                                        }
     190                                        payload=(char*)payload+len;
     191                                        nxt=((libtrace_ip6_frag_t*)payload)->nxt;
     192                                        continue;
     193                                }
     194
    179195                        default:
    180196                                if (prot) *prot=nxt;
Note: See TracChangeset for help on using the changeset viewer.