Changeset eaa5529


Ignore:
Timestamp:
10/12/05 14:13:39 (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:
2cc187b
Parents:
57bbf89
Message:

legacy pos, atm, eth support

Location:
lib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • lib/dagformat.h

    rb5cd711 reaa5529  
    1111/* GPP Type 1 */
    1212typedef struct pos_rec {
    13         unsigned                hdlc;
    14         unsigned char           pload[1];
     13        uint32_t  hdlc;
     14        uint8_t   pload[1];
    1515}  pos_rec_t;
    1616
    1717/* GPP Type 2 */
    1818typedef struct eth_rec {
    19         unsigned char           offset;
    20         unsigned char           pad;
    21         unsigned char           dst[6];
    22         unsigned char           src[6];
    23         unsigned short          etype;
    24         unsigned char           pload[1];
     19        uint8_t   offset;
     20        uint8_t   pad;
     21        uint8_t   dst[6];
     22        uint8_t   src[6];
     23        uint16_t  etype;
     24        uint8_t   pload[1];
    2525}  eth_rec_t;
    2626
    2727/* GPP Type 3 */
    2828typedef struct atm_rec {
    29         unsigned                header;
    30         unsigned char           pload[1];
     29        uint32_t  header;
     30        uint8_t   pload[1];
    3131}  atm_rec_t;
    3232
    3333/* GPP Type 4 */
    3434typedef struct aal5_rec {
    35         unsigned                header;
    36         unsigned char           pload[1];
     35        uint32_t  header;
     36        uint8_t   pload[1];
    3737}  aal5_rec_t;
    3838
    3939typedef struct flags {
    40         unsigned char           iface:2;
    41         unsigned char           vlen:1;
    42         unsigned char           trunc:1;
    43         unsigned char           rxerror:1;
    44         unsigned char           dserror:1;
    45         unsigned char           pad:2;
     40        uint8_t   iface:2;
     41        uint8_t   vlen:1;
     42        uint8_t   trunc:1;
     43        uint8_t   rxerror:1;
     44        uint8_t   dserror:1;
     45        uint8_t   pad:2;
    4646} __attribute__((packed)) flags_t;
    4747
    4848/* GPP Global type */
    4949typedef struct dag_record {
    50         unsigned long long      ts;
    51         unsigned char           type;
    52         flags_t                 flags;
    53         unsigned short          rlen;
    54         unsigned short          lctr;
    55         unsigned short          wlen;
     50        uint64_t  ts;
     51        uint8_t   type;
     52        flags_t   flags;
     53        uint16_t  rlen;
     54        uint16_t  lctr;
     55        uint16_t  wlen;
    5656        union {
    5757                pos_rec_t       pos;
     
    6565typedef struct duck_inf
    6666{
    67         unsigned long   Command, Config, Clock_Inc, Clock_Wrap, DDS_Rate;
    68         unsigned long   Crystal_Freq;
    69         unsigned long   Synth_Freq, Sync_Rate;
    70         unsigned long   long Last_Ticks;
    71         unsigned long   Resyncs;
    72         unsigned long   Bad_Diffs, Bad_Offs, Bad_Pulses;
    73         unsigned long   Worst_Error, Worst_Off;
    74         unsigned long   Off_Limit, Off_Damp;
    75         unsigned long   Pulses, Single_Pulses_Missing, Longest_Pulse_Missing;
    76         unsigned long   Health, Sickness;
    77         long            Error, Offset;
    78         long            Stat_Start, Stat_End;   /* these are really time_t's */
    79         unsigned long   Set_Duck_Field;
     67        uint32_t  Command, Config, Clock_Inc, Clock_Wrap, DDS_Rate;
     68        uint32_t  Crystal_Freq;
     69        uint32_t  Synth_Freq, Sync_Rate;
     70        uint64_t Last_Ticks;
     71        uint32_t  Resyncs;
     72        uint32_t  Bad_Diffs, Bad_Offs, Bad_Pulses;
     73        uint32_t  Worst_Error, Worst_Off;
     74        uint32_t  Off_Limit, Off_Damp;
     75        uint32_t  Pulses, Single_Pulses_Missing, Longest_Pulse_Missing;
     76        uint32_t  Health, Sickness;
     77        int32_t   Error, Offset;
     78        int32_t   Stat_Start, Stat_End;   /* these are really time_t's */
     79        uint32_t  Set_Duck_Field;
    8080} duck_inf;
    8181
    8282#define dag_record_size         16
    8383
     84/*
     85typedef struct legacy_cell {
     86        uint64_t  ts;
     87        uint32_t  crc;
     88} legacy_cell_t;
     89
     90typedef struct legacy_ether {
     91        uint64_t  ts;
     92        uint16_t  wlen;
     93} legacy_ether_t;
     94
     95typedef struct legacy_pos {
     96        uint64_t  ts;
     97        uint32_t  slen;
     98        uint32_t  wlen;
     99} legacy_pos_t;
     100*/     
    84101
    85102#endif // _DAGFORMAT_H_
  • lib/format_erf.c

    r9c6aa95 reaa5529  
    7272static struct libtrace_format_t *dag_ptr = 0;
    7373#endif
     74static struct libtrace_format_t *legacypos_ptr = 0;
     75static struct libtrace_format_t *legacyeth_ptr = 0;
     76static struct libtrace_format_t *legacyatm_ptr = 0;
    7477
    7578#define CONNINFO libtrace->format_data->conn_info
     
    439442
    440443        if ( size  > LIBTRACE_PACKET_BUFSIZE) {
    441                 printf("%d\n",size);
    442444                assert( size < LIBTRACE_PACKET_BUFSIZE);
    443445        }
     
    457459#endif
    458460
     461static int legacy_read_packet(struct libtrace_t *libtrace, struct libtrace_packet_t *packet) {
     462        int numbytes;
     463        int size;
     464        void *buffer = packet->buffer;
     465        void *buffer2 = buffer;
     466        dag_record_t *erfptr = (dag_record_t *)buffer;
     467        int rlen;
     468
     469#if HAVE_ZLIB
     470        if ((numbytes=gzread(INPUT.file,
     471                                        buffer,
     472                                        dag_record_size)) == -1) {
     473                perror("gzread");
     474                return -1;
     475        }
     476#else
     477        if ((numbytes = read(INPUT.file, buffer, dag_record_size)) == -1) {
     478                perror("read");
     479                return -1;
     480        }
     481#endif
     482        if (numbytes == 0) {
     483                return 0;
     484        }
     485
     486        // legacy - 64byte captures
     487        // type is TYPE_LEGACY
     488        rlen = 64;
     489        size = rlen - dag_record_size;
     490        buffer2 = buffer + dag_record_size;
     491       
     492#ifdef HAVE_ZLIB
     493        if ((numbytes=gzread(INPUT.file,
     494                                        buffer2,
     495                                        size)) == -1) {
     496                perror("gzread");
     497                return -1;
     498        }
     499#else
     500        if ((numbytes = read(INPUT.file,buffer2,size)) == -1) {
     501                perror("gzread");
     502                return -1;
     503        }
     504#endif
     505        packet->status = 0;
     506        packet->size = rlen;
     507        return rlen;
     508}
    459509static int erf_read_packet(struct libtrace_t *libtrace, struct libtrace_packet_t *packet) {
    460510        int numbytes;
     
    485535       
    486536        // read in the rest of the packet
     537#ifdef HAVE_ZLIB
    487538        if ((numbytes=gzread(INPUT.file,
    488539                                        buffer2,
     
    491542                return -1;
    492543        }
     544#else
     545        if ((numbytes = read(INPUT.file,buffer2,size)) == -1) {
     546                perror("gzread");
     547                return -1;
     548        }
     549#endif
    493550        packet->status = 0;
    494551        packet->size = rlen;
     
    650707
    651708
     709static void *legacy_get_link(const struct libtrace_packet_t *packet) {
     710        const void *posptr = 0;
     711        posptr = ((uint8_t *)packet->buffer);
     712        return (void *)posptr;
     713}
     714
     715static libtrace_linktype_t legacy_get_link_type(const struct libtrace_packet_t *packet) {
     716        return TRACE_TYPE_LEGACY;
     717}
     718
     719static libtrace_linktype_t legacyeth_get_link_type(const struct libtrace_packet_t *packet) {
     720        return TRACE_TYPE_LEGACY_ETH;
     721}
     722
     723static libtrace_linktype_t legacyatm_get_link_type(const struct libtrace_packet_t *packet) {
     724        return TRACE_TYPE_LEGACY_ATM;
     725}
     726
     727static libtrace_linktype_t legacypos_get_link_type(const struct libtrace_packet_t *packet) {
     728        return TRACE_TYPE_LEGACY_POS;
     729}
     730
    652731static void *erf_get_link(const struct libtrace_packet_t *packet) {
    653732        const void *ethptr = 0;
     
    693772}
    694773
     774static int legacy_get_capture_length(const struct libtrace_packet_t *packet __attribute__((unused))) {
     775        return 64;
     776}
     777
     778static int legacypos_get_wire_length(const struct libtrace_packet_t *packet) {
     779       
     780}
    695781static int erf_get_capture_length(const struct libtrace_packet_t *packet) {
    696782        dag_record_t *erfptr = 0;
     
    740826#endif
    741827
     828static void legacypos_help() {
     829        printf("legacypos format module: $Revision$\n");
     830        printf("Supported input URIs:\n");
     831        printf("\tlegacypos:/path/to/file\t(uncompressed)\n");
     832        printf("\tlegacypos:/path/to/file.gz\t(gzip-compressed)\n");
     833        printf("\tlegacypos:-\t(stdin, either compressed or not)\n");
     834        printf("\n");
     835        printf("\te.g.: legacypos:/tmp/trace.gz\n");
     836        printf("\n");
     837}
     838
     839static void legacyatm_help() {
     840        printf("legacyatm format module: $Revision$\n");
     841        printf("Supported input URIs:\n");
     842        printf("\tlegacyatm:/path/to/file\t(uncompressed)\n");
     843        printf("\tlegacyatm:/path/to/file.gz\t(gzip-compressed)\n");
     844        printf("\tlegacyatm:-\t(stdin, either compressed or not)\n");
     845        printf("\n");
     846        printf("\te.g.: legacyatm:/tmp/trace.gz\n");
     847        printf("\n");
     848}
     849
     850static void legacyeth_help() {
     851        printf("legacyeth format module: $Revision$\n");
     852        printf("Supported input URIs:\n");
     853        printf("\tlegacyeth:/path/to/file\t(uncompressed)\n");
     854        printf("\tlegacyeth:/path/to/file.gz\t(gzip-compressed)\n");
     855        printf("\tlegacyeth:-\t(stdin, either compressed or not)\n");
     856        printf("\n");
     857        printf("\te.g.: legacyeth:/tmp/trace.gz\n");
     858        printf("\n");
     859}
    742860
    743861static void erf_help() {
     
    784902
    785903}
     904
     905static struct libtrace_format_t legacyatm = {
     906        "legacyatm",
     907        "$Id$",
     908        "legacyatm",
     909        erf_init_input,                 /* init_input */       
     910        NULL,                           /* init_output */
     911        NULL,                           /* config_output */
     912        erf_fin_input,                  /* fin_input */
     913        NULL,                           /* fin_output */
     914        legacy_read_packet,             /* read_packet */
     915        NULL,                           /* write_packet */
     916        legacy_get_link,                /* get_link */
     917        legacyatm_get_link_type,        /* get_link_type */
     918        NULL,                           /* get_direction */
     919        NULL,                           /* set_direction */
     920        erf_get_erf_timestamp,          /* get_erf_timestamp */
     921        NULL,                           /* get_timeval */
     922        NULL,                           /* get_seconds */
     923        legacy_get_capture_length,      /* get_capture_length */
     924        NULL,                           /* get_wire_length */
     925        NULL,                           /* set_capture_length */
     926        NULL,                           /* get_fd */
     927        trace_event_trace,              /* trace_event */
     928        legacyatm_help                  /* help */
     929};
     930
     931static struct libtrace_format_t legacyeth = {
     932        "legacyeth",
     933        "$Id$",
     934        "legacyeth",
     935        erf_init_input,                 /* init_input */       
     936        NULL,                           /* init_output */
     937        NULL,                           /* config_output */
     938        erf_fin_input,                  /* fin_input */
     939        NULL,                           /* fin_output */
     940        legacy_read_packet,             /* read_packet */
     941        NULL,                           /* write_packet */
     942        legacy_get_link,                /* get_link */
     943        legacyeth_get_link_type,        /* get_link_type */
     944        NULL,                           /* get_direction */
     945        NULL,                           /* set_direction */
     946        erf_get_erf_timestamp,          /* get_erf_timestamp */
     947        NULL,                           /* get_timeval */
     948        NULL,                           /* get_seconds */
     949        legacy_get_capture_length,      /* get_capture_length */
     950        NULL,                           /* get_wire_length */
     951        NULL,                           /* set_capture_length */
     952        NULL,                           /* get_fd */
     953        trace_event_trace,              /* trace_event */
     954        legacyatm_help                  /* help */
     955};
     956
     957static struct libtrace_format_t legacypos = {
     958        "legacypos",
     959        "$Id$",
     960        "legacypos",
     961        erf_init_input,                 /* init_input */       
     962        NULL,                           /* init_output */
     963        NULL,                           /* config_output */
     964        erf_fin_input,                  /* fin_input */
     965        NULL,                           /* fin_output */
     966        legacy_read_packet,             /* read_packet */
     967        NULL,                           /* write_packet */
     968        legacy_get_link,                /* get_link */
     969        legacypos_get_link_type,        /* get_link_type */
     970        NULL,                           /* get_direction */
     971        NULL,                           /* set_direction */
     972        erf_get_erf_timestamp,          /* get_erf_timestamp */
     973        NULL,                           /* get_timeval */
     974        NULL,                           /* get_seconds */
     975        legacy_get_capture_length,      /* get_capture_length */
     976        NULL,                           /* get_wire_length */
     977        NULL,                           /* set_capture_length */
     978        NULL,                           /* get_fd */
     979        trace_event_trace,              /* trace_event */
     980        legacypos_help                  /* help */
     981};
    786982
    787983       
     
    8751071        rtclient_ptr = &rtclient;
    8761072        register_format(rtclient_ptr);
    877 }
     1073
     1074        legacypos_ptr = &legacypos;
     1075        register_format(legacypos_ptr);
     1076
     1077        legacyeth_ptr = &legacyeth;
     1078        register_format(legacyeth_ptr);
     1079
     1080        legacyatm_ptr = &legacyatm;
     1081        register_format(legacyatm_ptr);
     1082
     1083}
  • lib/libtrace.h

    r8283f05 reaa5529  
    474474       TRACE_TYPE_NONE,
    475475       TRACE_TYPE_LINUX_SLL,
    476        TRACE_TYPE_PFLOG
     476       TRACE_TYPE_PFLOG,
     477       TRACE_TYPE_LEGACY_DEFAULT,
     478       TRACE_TYPE_LEGACY_POS,
     479       TRACE_TYPE_LEGACY_ATM,
     480       TRACE_TYPE_LEGACY_ETH
    477481     } libtrace_linktype_t;
    478482
  • lib/trace.c

    r9c6aa95 reaa5529  
    528528        return (void *)ethptr;
    529529}
     530
     531typedef struct legacy_framing {
     532        uint64_t        ts;
     533        uint32_t        crc;
     534        uint32_t        header;
     535        uint32_t        data[12]; /* pad to 64 bytes */
     536} legacy_framing_t;
    530537
    531538/* get a pointer to the IP header (if any)
     
    636643                                break;
    637644                        }
     645                case TRACE_TYPE_LEGACY_POS:
     646                        {
     647                                // 64 byte capture.
     648                                legacy_framing_t *cell =
     649                                        trace_get_link(packet);
     650                                // check ethertype
     651                                uint16_t *etype = (uint16_t *)cell->data + 1;
     652                                if (*etype == 0x0008) {
     653                                        ipptr = (void *)&cell->data[1];
     654                                } else {
     655                                        ipptr = NULL;
     656                                }
     657                                break;
     658                               
     659                        }
     660                case TRACE_TYPE_LEGACY_ATM:
     661                case TRACE_TYPE_LEGACY_ETH:
     662                case TRACE_TYPE_LEGACY:
     663                        {
     664                                // 64 byte capture.
     665                                legacy_framing_t *cell =
     666                                        trace_get_link(packet);
     667                                uint16_t *etype = (uint16_t *)cell->data + 3;
     668                                if (*etype == 0x0008) {
     669                                        ipptr = (void *)&cell->data[2];
     670                                } else {
     671                                        ipptr = NULL;
     672                                }
     673                        }
    638674                default:
    639675                        fprintf(stderr,"Don't understand link layer type %i in trace_get_ip()\n",
Note: See TracChangeset for help on using the changeset viewer.