Changeset ffc8c8d


Ignore:
Timestamp:
08/11/05 11:30:41 (15 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:
4d5a9a7
Parents:
a8ba977
Message:

better return codes in format_*.c, trace_perror stuff

Location:
lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • lib/format_erf.c

    r39b37d2 rffc8c8d  
    139139                // DEVICE
    140140                libtrace->sourcetype = DEVICE;
    141                 if((INPUT.fd =
    142                                 dag_open(CONNINFO.path)) < 0) {
     141                if((INPUT.fd = dag_open(CONNINFO.path)) < 0) {
    143142                        fprintf(stderr,"Cannot open DAG %s: %m\n",
    144143                                        CONNINFO.path,errno);
    145144                        exit(0);
    146145                }
    147                 if((DAG.buf = (void *)
    148                                 dag_mmap(INPUT.fd)) == MAP_FAILED) {
     146                if((DAG.buf = (void *)dag_mmap(INPUT.fd)) == MAP_FAILED) {
    149147                        fprintf(stderr,"Cannot mmap DAG %s: %m\n",
    150148                                        CONNINFO.path,errno);
     
    161159                return 0;
    162160        }
     161        return 1;
    163162}
    164163#endif
     
    225224                }
    226225        }
     226        return 1;
    227227}
    228228
     
    276276                return 0;
    277277        }
     278        return 1;
    278279}
    279280
     
    312313        }
    313314       
    314 
     315        return 1;
    315316}
    316317
     
    346347        if (!OUTPUT.rtserver)
    347348                return 0;
    348        
     349
     350        return 1;
    349351}
    350352
  • lib/format_pcap.c

    r72bfe20 rffc8c8d  
    3434#include "libtrace_int.h"
    3535#include "format_helper.h"
    36 #include <inttypes.h>
     36
     37#ifdef HAVE_INTTYPES_H
     38#  include <inttypes.h>
     39#else
     40#  error "Can't find inttypes.h - this needs to be fixed"
     41#endif
     42
    3743#include <sys/types.h>
    3844#include <sys/stat.h>
     
    114120                }       
    115121        }
    116         fprintf(stderr,
    117                         "Unsupported scheme (%s) for format pcap\n",
    118                         CONNINFO.path);
    119         return 0;
     122        //fprintf(stderr,       "Unsupported scheme (%s) for format pcap\n",
     123        //              CONNINFO.path);
     124        return 1;
    120125       
    121126}
     
    136141                return 0;
    137142        }
    138 
     143        return 1;
    139144}
    140145
     
    153158
    154159        packet->size = numbytes + sizeof(struct pcap_pkthdr);
    155 
    156 }
     160}
     161
    157162static int pcap_read_packet(struct libtrace_t *libtrace, struct libtrace_packet_t *packet) {
    158163        const u_char *pcappkt;
    159164        int pcapbytes = 0;
    160165
    161         while ((pcapbytes = pcap_dispatch(INPUT.pcap,
     166        pcapbytes = pcap_dispatch(INPUT.pcap,
    162167                                        1, /* number of packets */
    163168                                        &trace_pcap_handler,
    164                                         (u_char *)packet)) == 0);
    165 
    166         if (pcapbytes < 0) {
    167                 return -1;
     169                                        (u_char *)packet);
     170
     171        if (pcapbytes <= 0) {
     172                return pcapbytes;
    168173        }
    169174        return (packet->size - sizeof(struct pcap_pkthdr));
  • lib/format_template.c

    r39b37d2 rffc8c8d  
    3434#include "config.h"
    3535
    36 #include <inttypes.h>
     36#ifdef HAVE_INTTYPES_H
     37#  include <inttypes.h>
     38#else
     39# error "Can't find inttypes.h"
     40#endif
    3741
    3842struct libtrace_format_data_t {
  • lib/format_wag.c

    r39b37d2 rffc8c8d  
    4747#endif
    4848#include <sys/types.h>
     49#include <sys/time.h>
     50#include <time.h>
    4951#include <sys/socket.h>
    5052#include <sys/un.h>
     
    145147                }
    146148        }
     149        return 1;
    147150}
    148151
     
    239242
    240243                // wag isn't in network byte order yet
    241                 size = htons(size);
     244                //size = htons(size);
    242245                //printf("%d %d\n",size,htons(size));
    243246
     
    280283        uint64_t timestamp = 0;
    281284        timestamp = wagptr->ts.subsecs;
    282         timestamp |= (uint64_t)wagptr->ts.secs<<32;
     285        //timestamp |= (uint64_t)wagptr->ts.secs<<32;
    283286        timestamp = ((timestamp%44000000)*(UINT_MAX/44000000))
    284287                | ((timestamp/44000000)<<32);
     
    288291static int wag_get_capture_length(const struct libtrace_packet_t *packet) {
    289292        struct wag_data_frame *wagptr = (struct wag_data_frame *)packet->buffer;
    290         return (wagptr->hdr.size);
    291         //return ntohs(wagptr->hdr.size);
     293        //return (wagptr->hdr.size);
     294        return ntohs(wagptr->hdr.size);
    292295}
    293296
    294297static int wag_get_wire_length(const struct libtrace_packet_t *packet) {
    295298        struct wag_data_frame *wagptr = (struct wag_data_frame *)packet->buffer;
    296         return (wagptr->hdr.size);
    297         //return ntohs(wagptr->hdr.size);
     299        //return (wagptr->hdr.size);
     300        return ntohs(wagptr->hdr.size);
    298301}
    299302
     
    340343        wag_get_direction,              /* get_direction */
    341344        NULL,                           /* set_direction */
    342         wag_get_erf_timestamp,          /* get_wag_timestamp */
     345        wag_get_erf_timestamp,          /* get_erf_timestamp */
    343346        NULL,                           /* get_timeval */
    344347        NULL,                           /* get_seconds */
  • lib/libtrace.h

    ra114d8b5 rffc8c8d  
    3636
    3737/** API version as 3 byte hex digits */
    38 #define LIBTRACE_API_VERSION 0x010010
     38#define LIBTRACE_API_VERSION 0x010014
    3939
    4040#ifdef __cplusplus
     
    9494        uint8_t status;
    9595};
     96
     97/** Enumeration of error codes */
     98enum {E_NOERROR, E_BAD_FORMAT, E_NO_INIT, E_NO_INIT_OUT, E_URI_LONG, E_URI_NOCOLON, E_INIT_FAILED };
    9699
    97100/** Structure for dealing with IP packets */
     
    195198void trace_help();
    196199
    197 void trace_perror();
     200/** Prints error information
     201 *
     202 * Prints out a descriptive error message for the currently set trace_err value
     203 */
     204void trace_perror(char *caller);
    198205
    199206/** Create a trace file from a URI
  • lib/libtrace_int.h

    r72bfe20 rffc8c8d  
    7272
    7373typedef enum {SOCKET, TRACE, STDIN, DEVICE, INTERFACE, RT } source_t;
     74
     75
     76static struct {
     77        int err_num;    // error code
     78        char *problem;  // the format, uri etc that caused the error for reporting purposes
     79} trace_err;
     80
    7481
    7582#define RP_BUFSIZE 65536
  • lib/trace.c

    r3dcc2e2 rffc8c8d  
    113113#endif
    114114
    115 //#if HAVE_PCAP_H
    116 //#  include <pcap.h>
    117 //#  ifdef HAVE_PCAP_INT_H
    118 //#    include <pcap-int.h>
    119 //#  endif
    120 //#endif
    121 
    122 //#ifdef HAVE_ZLIB_H
    123 //#  include <zlib.h>
    124 //#endif
    125 
    126 
    127 //#include "wag.h"
    128 
    129 //#ifdef HAVE_DAG_API
    130 //#  include "dagnew.h"
    131 //#  include "dagapi.h"
    132 //#else
    133 //#  include "dagformat.h"
    134 //#endif
    135 
    136115#include "libtrace_int.h"
    137116#include "format_helper.h"
    138 //#include "format/format_list.h"
    139117#include <err.h>
    140118
    141119#define MAXOPTS 1024
    142120
    143 //typedef enum {SOCKET, TRACE, STDIN, DEVICE, INTERFACE, RT } source_t;
    144 
    145 //typedef enum {ERF, PCAP, PCAPINT, DAG, RTCLIENT, WAG, WAGINT } format_e_t;
    146 
    147 //typedef enum {RTSERVER, GZERF } output_t;
    148121#if HAVE_BPF
    149122/** A type encapsulating a bpf filter
     
    158131#endif
    159132
    160 // Error codes
    161 enum {E_NOERROR, E_BAD_FORMAT, E_NO_INIT, E_NO_INIT_OUT, E_URI_LONG, E_URI_NOCOLON };
    162 
    163 static struct {
    164         int err_num;    // error code
    165         char *problem;  // the format, uri etc that caused the error for reporting purposes
    166 } trace_err;
     133
    167134
    168135struct libtrace_format_t **format_list = 0;
     
    216183                        fprintf(stderr, "%s: A uri must contain at least one colon e.g. format:destination\n", caller);
    217184                        break;
     185                case E_INIT_FAILED:
     186                        fprintf(stderr, "%s: libtrace failed to initialise (%s)\n",caller,trace_err.problem);
     187                       
    218188                default:
    219189                        fprintf(stderr, "Unkown errcode %d\n",trace_err.err_num);
     
    310280       
    311281        if (libtrace->format->init_input) {
    312                 libtrace->format->init_input( libtrace);
     282                if (!libtrace->format->init_input( libtrace)) {
     283                        trace_err.err_num = E_INIT_FAILED;
     284                        trace_err.problem = scan;
     285                        return 0;
     286                }
    313287        } else {
    314288                trace_err.err_num = E_NO_INIT;
     
    382356
    383357        if (libtrace->format->init_output) {
    384                 libtrace->format->init_output( libtrace);
     358                if(!libtrace->format->init_output( libtrace)) {
     359                        return 0;
     360                }
    385361        } else {
    386362                trace_err.err_num = E_NO_INIT_OUT;
     
    460436
    461437        if (!libtrace) {
    462                 fprintf(stderr,"Oi! You called trace_read_packet() with a NULL libtrace parameter!\n");
     438                fprintf(stderr,"You called trace_read_packet() with a NULL libtrace parameter!\n");
    463439        }
    464440        assert(libtrace);
Note: See TracChangeset for help on using the changeset viewer.