Changeset 101aa76


Ignore:
Timestamp:
05/13/04 17:06:57 (17 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:
63a2713
Parents:
9263981
Message:

added new uris - pcapint and wagint for specifying pcap and wag interfaces

Location:
lib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lib/Makefile

    r9135f43 r101aa76  
    1010
    1111CURRENT=1
    12 REVISION=1
     12REVISION=2
    1313AGE=0
    1414
  • lib/trace.c

    r2c060e3 r101aa76  
    3838typedef enum {SOCKET, TRACE, STDIN, DEVICE, INTERFACE, RT } source_t;
    3939
    40 typedef enum {ERF, PCAP, DAG, RTCLIENT, WAG } format_t;
     40typedef enum {ERF, PCAP, PCAPINT, DAG, RTCLIENT, WAG, WAGINT } format_t;
    4141
    4242struct libtrace_t {
     
    8686        if (!strncasecmp(scan,"erf",3)) {
    8787                (*libtrace)->format=ERF;
     88        } else if (!strncasecmp(scan,"pcapint",7)) {
     89                (*libtrace)->format=PCAPINT;
    8890        } else if (!strncasecmp(scan,"pcap",4)) {
    8991                (*libtrace)->format=PCAP;
     
    9294        } else if (!strncasecmp(scan,"rtclient",7)) {
    9395                (*libtrace)->format=RTCLIENT;
     96        } else if (!strncasecmp(scan,"wagint",6)) {
     97                (*libtrace)->format=WAGINT;
    9498        } else if (!strncasecmp(scan,"wag",3)) {
    9599                (*libtrace)->format=WAG;
     
    106110       
    107111        switch((*libtrace)->format) {
     112                case PCAPINT:
     113                case WAGINT:
     114                        /* Can have uridata of the following format
     115                         * eth0
     116                         * etc
     117                         */
     118                        // We basically assume this is correct.
     119                        (*libtrace)->sourcetype = INTERFACE;   
     120                        (*libtrace)->conn_info.path = strdup(uridata);
     121                        break;
    108122                case PCAP:
    109123                case ERF:
     
    265279                        break;
    266280                case DEVICE:
     281                case INTERFACE:
    267282                        switch (libtrace->format) {
     283                                case PCAPINT:
    268284                                case PCAP:
    269285                                        libtrace->input.pcap = pcap_open_live(
     
    276292                                default:
    277293                                        fprintf(stderr,"Unknown format trace, hoping I can just read\n");
     294                                case WAGINT:
    278295                                case WAG:
    279296                                        libtrace->input.fd = open(
     
    296313void destroy_trace(struct libtrace_t *libtrace) {
    297314        assert(libtrace);
    298         if (libtrace->format == PCAP) {
     315        if (libtrace->format == PCAP || libtrace->format == PCAPINT) {
    299316                pcap_close(libtrace->input.pcap);
    300317        } else if (libtrace->sourcetype == SOCKET || libtrace->sourcetype == RT) {
     
    363380        assert(len > 104); // we know we see packets this big anyway. Don't be silly.
    364381       
    365         if (libtrace->format == PCAP) {
     382        if (libtrace->format == PCAP || libtrace->format == PCAPINT) {
    366383                if ((pcappkt = pcap_next(libtrace->input.pcap, &pcaphdr)) == NULL) {
    367384                        return -1;
     
    470487                                ethptr = ((uint8_t *)buffer + 16 + 2);
    471488                        break;
    472                 case PCAP:
     489                case PCAPINT:
     490                case PCAP:
    473491                        ethptr = (struct ether_header *)(buffer + sizeof(struct pcap_pkthdr));
    474492                        break;
     493                case WAGINT:
    475494                case WAG:
    476495                        switch (event->type) {
     
    633652                        timestamp = erfptr->ts;
    634653                        break;
     654                case PCAPINT:
    635655                case PCAP:
    636656                        pcapptr = (struct pcap_pkthdr *)buffer;
     
    638658                                (pcapptr->ts.tv_usec*UINT_MAX/1000000));
    639659                        break;
     660                case WAGINT:
    640661                case WAG:
    641662                        wagptr = buffer;
     
    665686        uint64_t ts;
    666687        switch (libtrace->format) {
     688                case PCAPINT:
    667689                case PCAP:
    668690                        pcapptr = (struct pcap_pkthdr *)buffer;
    669691                        tv = pcapptr->ts;
    670692                        break;
     693                case WAGINT:
    671694                case WAG:
    672695                case DAG:
     
    718741                        erfptr = (dag_record_t *)buffer;
    719742                        return ntohs(erfptr->rlen);
     743                case PCAPINT:
    720744                case PCAP:
    721745                        pcapptr = (struct pcap_pkthdr *)buffer;
    722746                        return ntohs(pcapptr->caplen);
     747                case WAGINT:
    723748                case WAG:
    724749                        wag_event = buffer;
     
    759784                        return ntohs(erfptr->wlen);
    760785                        break;
     786                case PCAPINT:
    761787                case PCAP:
    762788                        pcapptr = (struct pcap_pkthdr *)buffer;
    763789                        return ntohs(pcapptr->len);
    764790                        break;
     791                case WAGINT:
    765792                case WAG:
    766793                        wag_event = buffer;
     
    804831                       
    805832                        break;
     833                case PCAPINT:
    806834                case PCAP:
    807835                        pcapptr = (struct pcap_pkthdr *)buffer;
     
    816844                        }
    817845                        break;
     846                case WAGINT:
    818847                case WAG:
    819848                        return TRACE_TYPE_80211;
Note: See TracChangeset for help on using the changeset viewer.