Changeset 72bfe20 for lib/format_wag.c


Ignore:
Timestamp:
08/08/05 16:33:16 (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:
c3274c6
Parents:
8184acc
Message:

trace_event fixed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_wag.c

    r9e2a109 r72bfe20  
    3131#include "libtrace.h"
    3232#include "libtrace_int.h"
     33#include "format_helper.h"
    3334#include "wag.h"
    3435
     
    5960#endif
    6061
     62#define CONNINFO libtrace->format_data->conn_info
     63#define INPUT libtrace->format_data->input
    6164struct libtrace_format_data_t {
    6265        union {
     
    8689        libtrace->format_data = (struct libtrace_format_data_t *)
    8790                calloc(1,sizeof(struct libtrace_format_data_t));
    88         libtrace->format_data->conn_info.path = libtrace->uridata;
    89         if (!strncmp(libtrace->format_data->conn_info.path,"-",1)) {
     91        CONNINFO.path = libtrace->uridata;
     92        if (!strncmp(CONNINFO.path,"-",1)) {
     93                libtrace->sourcetype = STDIN;
    9094                // STDIN
    9195#if HAVE_ZLIB
    92                 libtrace->format_data->input.file = gzdopen(STDIN, "r");
     96                INPUT.file = gzdopen(STDIN, "r");
    9397#else   
    94                 libtrace->format_data->input.file = stdin;
     98                INPUT.file = stdin;
    9599#endif
    96100
    97101        } else {
    98                 if (stat(libtrace->format_data->conn_info.path,&buf) == -1 ) {
     102                if (stat(CONNINFO.path,&buf) == -1 ) {
    99103                        perror("stat");
    100104                        return 0;
    101105                }
    102106                if (S_ISSOCK(buf.st_mode)) {
     107                        libtrace->sourcetype = SOCKET;
    103108                        // SOCKET
    104                         if ((libtrace->format_data->input.fd = socket(
     109                        if ((INPUT.fd = socket(
    105110                                        AF_UNIX, SOCK_STREAM, 0)) == -1) {
    106111                                perror("socket");
     
    111116                        snprintf(unix_sock.sun_path,
    112117                                        108,"%s"
    113                                         ,libtrace->format_data->conn_info.path);
    114 
    115                         if (connect(libtrace->format_data->input.fd,
     118                                        ,CONNINFO.path);
     119
     120                        if (connect(INPUT.fd,
    116121                                        (struct sockaddr *)&unix_sock,
    117122                                        sizeof(struct sockaddr)) == -1) {
     
    121126                } else {
    122127                        // TRACE
     128                        libtrace->sourcetype = TRACE;
    123129#if HAVE_ZLIB
    124130                        // using gzdopen means we can set O_LARGEFILE
    125131                        // ourselves. However, this way is messy and
    126132                        // we lose any error checking on "open"
    127                         libtrace->format_data->input.file =
     133                        INPUT.file =
    128134                                gzdopen(open(
    129                                         libtrace->format_data->conn_info.path,
     135                                        CONNINFO.path,
    130136                                        O_LARGEFILE), "r");
    131137#else
    132                         libtrace->format_data->input.file =
     138                        INPUT.file =
    133139                                fdopen(open(
    134                                         libtrace->format_data->conn_info.path,
     140                                        CONNINFO.path,
    135141                                        O_LARGEFILE), "r");
    136142#endif
     
    142148static int wag_fin_input(struct libtrace_t *libtrace) {
    143149#if HAVE_ZLIB
    144         gzclose(libtrace->format_data->input.file);
     150        gzclose(INPUT.file);
    145151#else   
    146         fclose(libtrace->format_data->input.file);     
     152        fclose(INPUT.file);     
    147153#endif
    148154}
     
    161167                switch(libtrace->sourcetype) {
    162168                        case DEVICE:
    163                                 if ((numbytes=read(libtrace->format_data->input.fd,
     169                                if ((numbytes=read(INPUT.fd,
    164170                                                                buffer,
    165171                                                                len)) == -1) {
     
    170176                        default:
    171177#if HAVE_ZLIB
    172                                 if ((numbytes=gzread(libtrace->format_data->input.file,
     178                                if ((numbytes=gzread(INPUT.file,
    173179                                                                buffer,
    174180                                                                len)) == -1) {
     
    178184#else
    179185                                if ((numbytes=fread(buffer,len,1,
    180                                         libtrace->format_data->input.file)) == 0 ) {
    181                                         if(feof(libtrace->format_data->input.file)) {
     186                                        INPUT.file)) == 0 ) {
     187                                        if(feof(INPUT.file)) {
    182188                                                return 0;
    183189                                        }
    184                                         if(ferror(libtrace->format_data->input.file)) {
     190                                        if(ferror(INPUT.file)) {
    185191                                                perror("fread");
    186192                                                return -1;
     
    291297}
    292298
     299static int wag_get_fd(const struct libtrace_packet_t *packet) {
     300        return packet->trace->format_data->input.fd;
     301}
     302
     303static struct libtrace_eventobj_t wag_event_trace(struct libtrace_t *trace, struct libtrace_packet_t *packet) {
     304        switch(trace->sourcetype) {
     305                case DEVICE:
     306                        return trace_event_device(trace,packet);
     307                default:
     308                        return trace_event_trace(trace,packet);
     309        }
     310}
    293311static int wag_help() {
    294312        printf("wag format module: $Revision$\n");
     
    315333        wag_fin_input,                  /* fin_input */
    316334        NULL,                           /* fin_output */
    317         NULL,                           /* read */
    318335        wag_read_packet,                /* read_packet */
    319336        NULL,                           /* write_packet */
     
    328345        wag_get_wire_length,            /* get_wire_length */
    329346        NULL,                           /* set_capture_length */
     347        wag_get_fd,                     /* get_fd */
     348        wag_event_trace,                /* trace_event */
    330349        wag_help                        /* help */
    331350};
Note: See TracChangeset for help on using the changeset viewer.