Changeset 1974620 for lib/format_pcap.c


Ignore:
Timestamp:
08/25/05 20:01:13 (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:
b5cd711
Parents:
3073c04
Message:

added format conversion into pcap and erf formats, and have tested the writers for these formats.

Added a 'type' field to the format_t structure, which specifies the type of trace we're dealing with - erf, pcap, wag.

updated munge to use the new functions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_pcap.c

    r3073c04 r1974620  
    8787                char *interface;
    8888        } conn_info;
    89         struct {
    90                 pcap_t *pcap;
    91                 pcap_dumper_t *dump;
     89        union {
     90                struct {
     91                        pcap_t *pcap;
     92                        pcap_dumper_t *dump;
     93                } trace;
     94
    9295        } output;
    9396};
     
    159162                malloc(sizeof(struct libtrace_format_data_out_t));
    160163        CONNINFO.path = libtrace->uridata;
    161         OUTPUT.pcap = NULL;
    162         OUTPUT.dump = NULL;
     164        OUTPUT.trace.pcap = NULL;
     165        OUTPUT.trace.dump = NULL;
     166        return 1;
    163167}
    164168
     
    181185}
    182186
     187static int pcapint_init_output(struct libtrace_out_t *libtrace) {
     188        return -1;
     189}
     190
    183191static int pcap_fin_input(struct libtrace_t *libtrace) {
    184192        pcap_close(INPUT.pcap);
     
    188196
    189197static int pcap_fin_output(struct libtrace_out_t *libtrace) {
    190         pcap_dump_flush(OUTPUT.dump);
    191         pcap_dump_close(OUTPUT.dump);
     198        pcap_dump_flush(OUTPUT.trace.dump);
     199        pcap_dump_close(OUTPUT.trace.dump);
    192200        return 0;
     201}
     202
     203static int pcapint_fin_output(struct libtrace_out_t *libtrace) {
     204        return -1;
    193205}
    194206
     
    224236        void *link = trace_get_link(packet);
    225237
    226         if (!OUTPUT.pcap) {
    227                 OUTPUT.pcap = pcap_open_dead(
     238        if (!OUTPUT.trace.pcap) {
     239                OUTPUT.trace.pcap = pcap_open_dead(
    228240                                linktype_to_dlt(trace_get_link_type(packet)),
    229241                                65536);
    230                 OUTPUT.dump = pcap_dump_open(OUTPUT.pcap,CONNINFO.path);
    231                 fflush((FILE *)OUTPUT.dump);
     242                OUTPUT.trace.dump = pcap_dump_open(OUTPUT.trace.pcap,CONNINFO.path);
     243                fflush((FILE *)OUTPUT.trace.dump);
    232244        }
    233245        if (packet->trace->format == pcap_ptr ||
     
    236248                // this is a pcap trace anyway
    237249               
    238                 pcap_dump((u_char*)OUTPUT.dump,(struct pcap_pkthdr *)packet->buffer,link);
     250                pcap_dump((u_char*)OUTPUT.trace.dump,(struct pcap_pkthdr *)packet->buffer,link);
    239251        } else {
    240252                pcap_pkt_hdr.ts = trace_get_timeval(packet);
     
    242254                pcap_pkt_hdr.len = trace_get_wire_length(packet);
    243255
    244                 pcap_dump((u_char*)OUTPUT.pcap, &pcap_pkt_hdr, link);
     256                pcap_dump((u_char*)OUTPUT.trace.dump, &pcap_pkt_hdr, link);
    245257        }
    246258        return 0;
     259}
     260
     261static int pcapint_write_packet(struct libtrace_out_t *libtrace, struct libtrace_packet_t *packet) {
     262        void *link = trace_get_link(packet);
     263
    247264}
    248265
     
    393410        "pcap",
    394411        "$Id$",
     412        "pcap",
    395413        pcap_init_input,                /* init_input */
    396414        pcap_init_output,               /* init_output */
     
    418436        "pcapint",
    419437        "$Id$",
     438        "pcap",
    420439        pcapint_init_input,             /* init_input */
    421         NULL,                           /* init_output */
     440        pcapint_init_output,            /* init_output */
    422441        NULL,                           /* config_output */
    423442        pcap_fin_input,                 /* fin_input */
    424         NULL,                           /* fin_output */
     443        pcapint_fin_output,             /* fin_output */
    425444        pcap_read_packet,               /* read_packet */
    426         NULL,                           /* write_packet */
     445        pcapint_write_packet,           /* write_packet */
    427446        pcap_get_link,                  /* get_link */
    428447        pcap_get_link_type,             /* get_link_type */
Note: See TracChangeset for help on using the changeset viewer.