Changeset 72bfe20 for lib/format_pcap.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_pcap.c

    r9e2a109 r72bfe20  
    3333#include "libtrace.h"
    3434#include "libtrace_int.h"
     35#include "format_helper.h"
    3536#include <inttypes.h>
    3637#include <sys/types.h>
     
    5657
    5758#if HAVE_PCAP
     59
     60#define CONNINFO libtrace->format_data->conn_info
     61#define INPUT libtrace->format_data->input
    5862
    5963struct libtrace_format_data_t {
     
    7680        libtrace->format_data = (struct libtrace_format_data_t *)
    7781                malloc(sizeof(struct libtrace_format_data_t));
    78         libtrace->format_data->conn_info.path = libtrace->uridata;
    79         if (!strncmp(libtrace->format_data->conn_info.path,"-",1)) {
    80                 if ((libtrace->format_data->input.pcap =
    81                         pcap_open_offline(libtrace->format_data->conn_info.path,
     82        CONNINFO.path = libtrace->uridata;
     83
     84        libtrace->sourcetype = TRACE;
     85        if (!strncmp(CONNINFO.path,"-",1)) {
     86                if ((INPUT.pcap =
     87                        pcap_open_offline(CONNINFO.path,
    8288                                                errbuf)) == NULL) {
    8389                        fprintf(stderr,"%s\n",errbuf);
     
    8591                }               
    8692        } else {
    87                 if (stat(libtrace->format_data->conn_info.path,&buf) == -1) {
     93                if (stat(CONNINFO.path,&buf) == -1) {
    8894                        perror("stat");
    8995                        return 0;
    9096                }
    9197                if (S_ISCHR(buf.st_mode)) {
    92                         if ((libtrace->format_data->input.pcap =
    93                                 pcap_open_live(libtrace->format_data->conn_info.path,
     98                        if ((INPUT.pcap =
     99                                pcap_open_live(CONNINFO.path,
    94100                                        4096,
    95101                                        1,
     
    100106                        }
    101107                } else {
    102                         if ((libtrace->format_data->input.pcap =
    103                                 pcap_open_offline(libtrace->format_data->conn_info.path,
     108                        if ((INPUT.pcap =
     109                                pcap_open_offline(CONNINFO.path,
    104110                                        errbuf)) == NULL) {
    105111                                fprintf(stderr,"%s\n",errbuf);
     
    110116        fprintf(stderr,
    111117                        "Unsupported scheme (%s) for format pcap\n",
    112                         libtrace->format_data->conn_info.path);
     118                        CONNINFO.path);
    113119        return 0;
    114120       
     
    117123static int pcapint_init_input(struct libtrace_t *libtrace) {
    118124        char errbuf[PCAP_ERRBUF_SIZE];
    119         if ((libtrace->format_data->input.pcap =
    120                         pcap_open_live(libtrace->format_data->conn_info.path,
     125        libtrace->format_data = (struct libtrace_format_data_t *)
     126                malloc(sizeof(struct libtrace_format_data_t));
     127        CONNINFO.path = libtrace->uridata;
     128        libtrace->sourcetype = INTERFACE;
     129        if ((INPUT.pcap =
     130                        pcap_open_live(CONNINFO.path,
    121131                        4096,
    122132                        1,
     
    149159        int pcapbytes = 0;
    150160
    151         while ((pcapbytes = pcap_dispatch(libtrace->format_data->input.pcap,
     161        while ((pcapbytes = pcap_dispatch(INPUT.pcap,
    152162                                        1, /* number of packets */
    153163                                        &trace_pcap_handler,
     
    274284}
    275285
     286static int pcap_get_fd(struct libtrace_packet_t *packet) {
     287        return pcap_fileno(packet->trace->format_data->input.pcap);
     288}
     289
    276290static void pcap_help() {
    277291        printf("pcap format module: $Revision$\n");
     
    307321        pcap_fin_input,                 /* fin_input */
    308322        NULL,                           /* fin_output */
    309         NULL,                           /* read */
    310323        pcap_read_packet,               /* read_packet */
    311324        NULL,                           /* write_packet */
     
    320333        pcap_get_wire_length,           /* get_wire_length */
    321334        pcap_set_capture_length,        /* set_capture_length */
     335        NULL,                           /* get_fd */
     336        trace_event_trace,              /* trace_event */
    322337        pcap_help                       /* help */
    323338};
     
    331346        pcap_fin_input,                 /* fin_input */
    332347        NULL,                           /* fin_output */
    333         NULL,                           /* read */
    334348        pcap_read_packet,               /* read_packet */
    335349        NULL,                           /* write_packet */
     
    344358        pcap_get_wire_length,           /* get_wire_length */
    345359        pcap_set_capture_length,        /* set_capture_length */
     360        pcap_get_fd,                    /* get_fd */
     361        trace_event_device,             /* trace_event */
    346362        pcapint_help                    /* help */
    347363};
Note: See TracChangeset for help on using the changeset viewer.