Changeset 3fe7937 for lib/trace.c


Ignore:
Timestamp:
12/09/04 17:53:09 (17 years ago)
Author:
Daniel Lawson <dlawson@…>
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:
b49264a
Parents:
68d4cd7
Message:

check for fragmented packet- if so, don't return TCP header

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/trace.c

    r47801f2 r3fe7937  
    663663        if (libtrace->format == ERF) {
    664664                void *buffer2 = buffer;
     665                int rlen;
    665666                // read in the trace header
    666667                if ((numbytes=gzread(libtrace->input.file,
    667668                                                buffer,
    668                                                 sizeof(dag_record_t))) == -1) {
     669                                                dag_record_size)) == -1) {
    669670                        perror("gzread");
    670671                        return -1;
     
    673674                        return 0;
    674675                }
    675                 size = ntohs(((dag_record_t *)buffer)->rlen) - sizeof(dag_record_t);
     676                rlen = ntohs(((dag_record_t *)buffer)->rlen);
     677                size = rlen - dag_record_size;
    676678                assert(size < LIBTRACE_PACKET_BUFSIZE);
    677                 buffer2 = buffer +  sizeof(dag_record_t);
     679                buffer2 = buffer +  dag_record_size;
    678680
    679681                // read in the rest of the packet
     
    684686                        return -1;
    685687                }
    686                 packet->size = numbytes + sizeof(dag_record_t);
    687                 return sizeof(dag_record_t) + numbytes;
     688                if ((numbytes + dag_record_size) != rlen) {
     689                        printf("read %d wanted %d\n",numbytes +dag_record_size, rlen);
     690                }
     691                packet->size = rlen;
     692                       
     693                return rlen;
    688694        }
    689695
     
    739745
    740746                                /* FALL THRU */
    741                         //case ERF:
     747                        case ERF:
    742748                        //case DAG:
    743749                                // read in the erf header
     
    918924                return 0;
    919925        }
    920         if (ipptr->ip_p == 6) {
     926        if ((ipptr->ip_p == 6) && (ipptr->ip_off == 0 )) {
    921927                tcpptr = (struct libtrace_tcp *)((ptrdiff_t)ipptr + (ipptr->ip_hl * 4));
    922928        }
Note: See TracChangeset for help on using the changeset viewer.