Changeset 7c8eacf for lib


Ignore:
Timestamp:
10/27/05 14:05:36 (16 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:
2458162
Parents:
0d82205
Message:

updated changelog
added trace_get_framing_length() to return the capture-format framing (eg, ERF or pcap headers).

Location:
lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • lib/format_erf.c

    rf1a1f5e r7c8eacf  
    8181#endif
    8282
    83 static struct libtrace_format_t *erf_ptr = 0;
    84 static struct libtrace_format_t *rtclient_ptr = 0;
     83extern struct libtrace_format_t erf;
     84extern struct libtrace_format_t rtclient;
    8585#if HAVE_DAG
    86 static struct libtrace_format_t *dag_ptr = 0;
     86extern struct libtrace_format_t dag;
    8787#endif
    88 static struct libtrace_format_t *legacypos_ptr = 0;
    89 static struct libtrace_format_t *legacyeth_ptr = 0;
    90 static struct libtrace_format_t *legacyatm_ptr = 0;
     88extern struct libtrace_format_t legacypos;
     89extern struct libtrace_format_t legacyeth;
     90extern struct libtrace_format_t legacyatm;
    9191
    9292#define CONNINFO libtrace->format_data->conn_info
     
    203203}
    204204
    205 static int erf_get_erf_headersize(const struct libtrace_packet_t *packet)
     205static int erf_get_framing_length(const struct libtrace_packet_t *packet)
    206206{
    207207        return dag_record_size + erf_get_padding(packet);
     
    521521         * with 00's if the packet is smaller, so this doesn't work.  Sigh.
    522522        assert(ntohs(((dag_record_t *)buffer)->rlen) <=
    523                         ntohs(((dag_record_t*)buffer)->wlen)+erf_get_erf_headersize(packet));
     523                        ntohs(((dag_record_t*)buffer)->wlen)+erf_get_framing_length(packet));
    524524        */
    525525        /* Unknown/corrupt */
     
    640640
    641641        pad = erf_get_padding(packet);
    642         if (packet->trace->format == erf_ptr ||
     642        if (packet->trace->format == &erf ||
    643643#if HAVE_DAG
    644                         packet->trace->format == dag_ptr ||
    645 #endif
    646                         packet->trace->format == rtclient_ptr ) {
     644                        packet->trace->format == &dag ||
     645#endif
     646                        packet->trace->format == &rtclient ) {
    647647                numbytes = erf_dump_packet(libtrace,
    648648                                (dag_record_t *)packet->buffer,
     
    658658                memset(&erfhdr.flags,1,1);
    659659                // Packet length (rlen includes format overhead)
    660                 erfhdr.rlen = trace_get_capture_length(packet) + erf_get_erf_headersize(packet);
     660                erfhdr.rlen = trace_get_capture_length(packet) + erf_get_framing_length(packet);
    661661                // loss counter. Can't do this
    662662                erfhdr.lctr = 0;
     
    669669                                pad,
    670670                                payload,
    671                                 erfhdr.rlen);
     671                                trace_get_capture_length(packet));
    672672        }
    673673        return numbytes;
     
    704704        }
    705705        ethptr = ((uint8_t *)packet->buffer +
    706                         erf_get_erf_headersize(packet));
     706                        erf_get_framing_length(packet));
    707707        return (void *)ethptr;
    708708}
     
    745745}
    746746
     747static int legacy_get_framing_length(const struct libtrace_packet_t *packet __attribute__((unused))) {
     748       
     749}
    747750static int legacypos_get_wire_length(const struct libtrace_packet_t *packet) {
    748751        legacy_pos_t *lpos = (legacy_pos_t *)packet->buffer;
     
    761764        dag_record_t *erfptr = 0;
    762765        erfptr = (dag_record_t *)packet->buffer;
    763         return (ntohs(erfptr->rlen) - erf_get_erf_headersize(packet));
     766        return (ntohs(erfptr->rlen) - erf_get_framing_length(packet));
    764767}
    765768
     
    773776        dag_record_t *erfptr = 0;
    774777        assert(packet);
    775         if((size + erf_get_erf_headersize(packet)) > packet->size) {
     778        if((size + erf_get_framing_length(packet)) > packet->size) {
    776779                // can't make a packet larger
    777                 return (packet->size - erf_get_erf_headersize(packet));
     780                return (packet->size - erf_get_framing_length(packet));
    778781        }
    779782        erfptr = (dag_record_t *)packet->buffer;
    780         erfptr->rlen = htons(size + erf_get_erf_headersize(packet));
    781         packet->size = size + erf_get_erf_headersize(packet);
     783        erfptr->rlen = htons(size + erf_get_framing_length(packet));
     784        packet->size = size + erf_get_framing_length(packet);
    782785        return size;
    783786}
     
    902905        legacy_get_capture_length,      /* get_capture_length */
    903906        legacyatm_get_wire_length,      /* get_wire_length */
     907        legacy_get_framing_length,      /* get_framing_length */
    904908        NULL,                           /* set_capture_length */
    905909        NULL,                           /* get_fd */
     
    928932        legacy_get_capture_length,      /* get_capture_length */
    929933        legacyeth_get_wire_length,      /* get_wire_length */
     934        legacy_get_framing_length,      /* get_framing_length */
    930935        NULL,                           /* set_capture_length */
    931936        NULL,                           /* get_fd */
     
    954959        legacy_get_capture_length,      /* get_capture_length */
    955960        legacypos_get_wire_length,      /* get_wire_length */
     961        legacy_get_framing_length,      /* get_framing_length */
    956962        NULL,                           /* set_capture_length */
    957963        NULL,                           /* get_fd */
     
    981987        erf_get_capture_length,         /* get_capture_length */
    982988        erf_get_wire_length,            /* get_wire_length */
     989        erf_get_framing_length,         /* get_framing_length */
    983990        erf_set_capture_length,         /* set_capture_length */
    984991        erf_get_fd,                     /* get_fd */
     
    10081015        erf_get_capture_length,         /* get_capture_length */
    10091016        erf_get_wire_length,            /* get_wire_length */
     1017        erf_get_framing_length,         /* get_framing_length */
    10101018        erf_set_capture_length,         /* set_capture_length */
    10111019        NULL,                           /* get_fd */
     
    10351043        erf_get_capture_length,         /* get_capture_length */
    10361044        erf_get_wire_length,            /* get_wire_length */
     1045        erf_get_framing_length,         /* get_framing_length */
    10371046        erf_set_capture_length,         /* set_capture_length */
    10381047        rtclient_get_fd,                /* get_fd */
     
    10421051
    10431052void __attribute__((constructor)) erf_constructor() {
    1044         erf_ptr = &erf;
    1045         register_format(erf_ptr);
     1053        register_format(&erf);
    10461054#ifdef HAVE_DAG
    1047         dag_ptr = &dag;
    1048         register_format(dag_ptr);
    1049 #endif
    1050         rtclient_ptr = &rtclient;
    1051         register_format(rtclient_ptr);
    1052 
    1053         legacypos_ptr = &legacypos;
    1054         register_format(legacypos_ptr);
    1055 
    1056         legacyeth_ptr = &legacyeth;
    1057         register_format(legacyeth_ptr);
    1058 
    1059         legacyatm_ptr = &legacyatm;
    1060         register_format(legacyatm_ptr);
    1061 
    1062 }
     1055        register_format(&dag);
     1056#endif
     1057        register_format(&rtclient);
     1058        register_format(&legacypos);
     1059        register_format(&legacyeth);
     1060        register_format(&legacyatm);
     1061}
  • lib/format_pcap.c

    r006bbf7 r7c8eacf  
    6565
    6666#if HAVE_PCAP
    67 
    68 static struct libtrace_format_t *pcap_ptr = 0;
    69 static struct libtrace_format_t *pcapint_ptr = 0;
     67extern struct libtrace_format_t pcap;
     68extern struct libtrace_format_t pcapint;
     69
    7070
    7171#define CONNINFO libtrace->format_data->conn_info
     
    243243                fflush((FILE *)OUTPUT.trace.dump);
    244244        }
    245         if (packet->trace->format == pcap_ptr ||
    246                         packet->trace->format == pcapint_ptr) {
    247         //if (!strncasecmp(packet->trace->format->name,"pcap",4)) {
    248                 // this is a pcap trace anyway
     245        if (packet->trace->format == &pcap ||
     246                        packet->trace->format == &pcapint) {
    249247               
    250248                pcap_dump((u_char*)OUTPUT.trace.dump,(struct pcap_pkthdr *)packet->buffer,link);
     
    366364}
    367365
     366static int pcap_get_framing_length(const struct libtrace_packet_t *packet) {
     367        return sizeof(struct pcap_pkthdr);
     368}
     369
    368370static size_t pcap_set_capture_length(struct libtrace_packet_t *packet,size_t size) {
    369371        struct pcap_pkthdr *pcapptr = 0;
     
    428430        pcap_get_capture_length,        /* get_capture_length */
    429431        pcap_get_wire_length,           /* get_wire_length */
     432        pcap_get_framing_length,        /* get_framing_length */
    430433        pcap_set_capture_length,        /* set_capture_length */
    431434        NULL,                           /* get_fd */
     
    454457        pcap_get_capture_length,        /* get_capture_length */
    455458        pcap_get_wire_length,           /* get_wire_length */
     459        pcap_get_framing_length,        /* get_framing_length */
    456460        pcap_set_capture_length,        /* set_capture_length */
    457461        pcap_get_fd,                    /* get_fd */
     
    464468
    465469void __attribute__((constructor)) pcap_constructor() {
    466         pcap_ptr = &pcap;
    467         pcapint_ptr = &pcapint;
    468         register_format(pcap_ptr);
    469         register_format(pcapint_ptr);
     470        register_format(&pcap);
     471        register_format(&pcapint);
    470472}
    471473
  • lib/format_template.c

    r8f4152b r7c8eacf  
    4040# error "Can't find inttypes.h"
    4141#endif
     42
     43extern struct libtrace_format_t template;
    4244
    4345struct libtrace_format_data_t {
     
    111113}
    112114
     115static int template_get_framing_length(const struct libtrace_packet_t *packet) {
     116        return -1;
     117}
     118
    113119static size_t template_set_capture_length(struct libtrace_packet_t *packet,size_t size) {
    114120        return -1;
     
    142148        template_get_capture_length,    /* get_capture_length */
    143149        template_get_wire_length,       /* get_wire_length */
     150        template_get_framing_length,    /* get_framing_length */
    144151        template_set_capture_length,    /* set_capture_length */
    145152        template_get_fd,                /* get_fd */
  • lib/format_wag.c

    r17ffb8a r7c8eacf  
    8888#endif
    8989
    90 static struct libtrace_format_t *wag_ptr = 0;
     90extern struct libtrace_format_t wag;
    9191
    9292#define CONNINFO libtrace->format_data->conn_info
     
    334334static int wag_write_packet(struct libtrace_out_t *libtrace, const struct libtrace_packet_t *packet) {
    335335        int numbytes =0 ;
    336         if (packet->trace->format != wag_ptr) {
     336        if (packet->trace->format != &wag) {
    337337                fprintf(stderr,"Cannot convert from wag to %s format yet\n",
    338338                                packet->trace->format->name);
     
    384384        //return (wagptr->hdr.size);
    385385        return ntohs(wagptr->hdr.size);
     386}
     387
     388static int wag_get_framing_length(const struct libtrace_packet_t *packet) {
     389        return sizeof(struct wag_data_frame);
    386390}
    387391
     
    433437        wag_get_capture_length,         /* get_capture_length */
    434438        wag_get_wire_length,            /* get_wire_length */
     439        wag_get_framing_length,         /* get_framing_length */
    435440        NULL,                           /* set_capture_length */
    436441        wag_get_fd,                     /* get_fd */
     
    440445
    441446void __attribute__((constructor)) wag_constructor() {
    442         wag_ptr = &wag;
    443         register_format(wag_ptr);
    444 }
     447        register_format(&wag);
     448}
  • lib/libtrace.h

    r0d82205 r7c8eacf  
    493493int trace_get_wire_length(const struct libtrace_packet_t *packet);
    494494
     495/** Get the length of the capture framing headers.
     496 * @param packet        the packet opaque pointer
     497 * @returns the size of the packet as it was on the wire.
     498 * @author Perry Lorier
     499 * @author Daniel Lawson
     500 * @note this length corresponds to the difference between the size of a
     501 * captured packet in memory, and the captured length of the packet
     502 */
     503SIMPLE_FUNCTION
     504int trace_get_framing_length(const struct libtrace_packet_t *packet);
     505
     506
    495507/** Link layer types
    496508 * This enumates the various different link types that libtrace understands
  • lib/libtrace_int.h

    rf1a1f5e r7c8eacf  
    165165        int (*get_capture_length)(const struct libtrace_packet_t *packet);
    166166        int (*get_wire_length)(const struct libtrace_packet_t *packet);
     167        int (*get_framing_length)(const struct libtrace_packet_t *packet);
    167168        size_t (*set_capture_length)(struct libtrace_packet_t *packet,size_t size);
    168169        int (*get_fd)(const struct libtrace_packet_t *packet);
  • lib/trace.c

    r6f75b9d r7c8eacf  
    10071007}
    10081008
     1009/* Get the length of the capture framing headers.
     1010 * @param packet        the packet opaque pointer
     1011 * @returns the size of the packet as it was on the wire.
     1012 * @author Perry Lorier
     1013 * @author Daniel Lawson
     1014 * @note this length corresponds to the difference between the size of a
     1015 * captured packet in memory, and the captured length of the packet
     1016 */
     1017SIMPLE_FUNCTION
     1018int trace_get_framing_length(const struct libtrace_packet_t *packet) {
     1019        if (packet->trace->format->get_framing_length) {
     1020                return packet->trace->format->get_framing_length(packet);
     1021        }
     1022        return -1;
     1023}
     1024
     1025
    10091026/* Get the type of the link layer
    10101027 * @param packet        a pointer to a libtrace_packet structure
Note: See TracChangeset for help on using the changeset viewer.