Changeset 91b72d3 for lib/format_duck.c


Ignore:
Timestamp:
01/05/09 11:29:11 (12 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:
ad36006
Parents:
9d0049cf
Message:

Try to autoguess the tracetype if the format uri specify is not present

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_duck.c

    r099d112 r91b72d3  
    4545#define DATAOUT(x) ((struct duck_format_data_out_t *)x->format_data)
    4646
    47 #define INPUT DATA(libtrace)
    4847#define OUTPUT DATAOUT(libtrace)
    4948
    5049struct duck_format_data_t {
    5150        char *path;
    52         io_t *file;
    5351        int dag_version;
    5452};
     
    6563        libtrace->format_data = malloc(sizeof(struct duck_format_data_t));
    6664
    67         INPUT->file = 0;
    68         INPUT->dag_version = 0;
     65        DATA(libtrace)->dag_version = 0;
    6966        return 0;
    7067}
     
    10097static int duck_start_input(libtrace_t *libtrace) {
    10198       
    102         if (INPUT->file)
     99        if (libtrace->io)
    103100                /* File already open */
    104101                return 0;
    105102       
    106         INPUT->file = trace_open_file(libtrace);
    107         if (!INPUT->file)
     103        libtrace->io = trace_open_file(libtrace);
     104        if (!libtrace->io)
    108105                return -1;
    109106
     
    121118
    122119static int duck_fin_input(libtrace_t *libtrace) {
    123         wandio_destroy(INPUT->file);
     120        wandio_destroy(libtrace->io);
    124121        free(libtrace->format_data);
    125122
     
    178175        flags |= TRACE_PREP_OWN_BUFFER;
    179176       
    180         if (INPUT->dag_version == 0) {
     177        if (DATA(libtrace)->dag_version == 0) {
    181178                /* Read in the duck version from the start of the trace */
    182                 if ((numbytes = wandio_read(INPUT->file, &version,
     179                if ((numbytes = wandio_read(libtrace->io, &version,
    183180                                        sizeof(version))) != sizeof(uint32_t)) {
    184181                        trace_set_err(libtrace, errno,
     
    189186                        return 0;
    190187                }
    191                 INPUT->dag_version = bswap_le_to_host32(version);
    192         }
    193        
    194 
    195         if (INPUT->dag_version == TRACE_RT_DUCK_2_4) {
     188                DATA(libtrace)->dag_version = bswap_le_to_host32(version);
     189        }
     190       
     191
     192        if (DATA(libtrace)->dag_version == TRACE_RT_DUCK_2_4) {
    196193                duck_size = sizeof(duck2_4_t);
    197194                packet->type = TRACE_RT_DUCK_2_4;
    198         } else if (INPUT->dag_version == TRACE_RT_DUCK_2_5) {
     195        } else if (DATA(libtrace)->dag_version == TRACE_RT_DUCK_2_5) {
    199196                duck_size = sizeof(duck2_5_t);
    200197                packet->type = TRACE_RT_DUCK_2_5;
     
    202199                trace_set_err(libtrace, TRACE_ERR_BAD_PACKET,
    203200                                "Unrecognised DUCK version %i",
    204                                 INPUT->dag_version);
    205                 return -1;
    206         }
    207 
    208         if ((numbytes = wandio_read(INPUT->file, packet->buffer,
     201                                DATA(libtrace)->dag_version);
     202                return -1;
     203        }
     204
     205        if ((numbytes = wandio_read(libtrace->io, packet->buffer,
    209206                                        (size_t)duck_size)) != (int)duck_size) {
    210207                if (numbytes == -1) {
     
    304301        "$Id$",
    305302        TRACE_FORMAT_DUCK,
     303        NULL,                           /* probe filename */
     304        NULL,                           /* probe magic */
    306305        duck_init_input,                /* init_input */
    307306        NULL,                           /* config_input */
Note: See TracChangeset for help on using the changeset viewer.