Changeset cd7eec7 for lib/format_rt.c


Ignore:
Timestamp:
05/16/06 14:37:22 (15 years ago)
Author:
Shane Alcock <salcock@…>
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:
abc66e7
Parents:
da34e20
Message:

Added a new format for reading and writing DUCK packets
Added corresponding test cases for DUCK
Removed references to RT_DUCK_* from format_rt
Added a configuration option for meta-data frequency (used solely for DUCK frequency at the moment) and updated other formats to ignore the option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_rt.c

    rda34e20 rcd7eec7  
    8484        int buf_filled;
    8585
    86        
     86        libtrace_t *dummy_duck;
    8787        libtrace_t *dummy_erf;
    8888        libtrace_t *dummy_pcap;
     
    192192        libtrace->format_data = malloc(sizeof(struct rt_format_data_t));
    193193
     194        RT_INFO->dummy_duck = NULL;
    194195        RT_INFO->dummy_erf = NULL;
    195196        RT_INFO->dummy_pcap = NULL;
     
    252253       
    253254        }
     255        if (RT_INFO->dummy_duck)
     256                trace_destroy_dead(RT_INFO->dummy_duck);
     257
    254258        if (RT_INFO->dummy_erf)
    255259                trace_destroy_dead(RT_INFO->dummy_erf);
     
    360364
    361365        switch (packet->type) {
     366                case RT_DUCK_2_4:
     367                case RT_DUCK_2_5:
     368                        if (!RT_INFO->dummy_duck) {
     369                                RT_INFO->dummy_duck = trace_create_dead("duck:dummy");
     370                        }
     371                        packet->trace = RT_INFO->dummy_duck;
     372                        break;
    362373                case RT_DATA_ERF:
    363374                        if (!RT_INFO->dummy_erf) {
     
    375386                case RT_DATA_LEGACY_ATM:
    376387                case RT_DATA_LEGACY_POS:
     388                case RT_DATA_LINUX_NATIVE:
    377389                        printf("Sending legacy over RT is currently not supported\n");
    378390                        trace_set_err(libtrace, TRACE_ERR_BAD_PACKET, "Legacy packet cannot be sent over rt");
     
    502514                switch(packet->type) {
    503515                        case RT_STATUS:
    504                         case RT_DUCK:
    505516                                if (rt_read(libtrace, &packet->buffer,
    506517                                                        pkt_size,1) !=
    507518                                                pkt_size) {
    508519                                        printf("Error receiving status packet\n");
     520                                        return -1;
     521                                }
     522                                packet->header = 0;
     523                                packet->payload = packet->buffer;
     524                                break;
     525                        case RT_DUCK_2_4:
     526                        case RT_DUCK_2_5:
     527                                if (rt_read(libtrace, &packet->buffer,
     528                                                        pkt_size, 1) !=
     529                                                pkt_size) {
     530                                        printf("Error receiving DUCK packet\n");
     531                                        return -1;
     532                                }
     533                                if (rt_set_format(libtrace, packet) < 0) {
    509534                                        return -1;
    510535                                }
     
    525550                                printf("Bad rt type for client receipt: %d\n",
    526551                                        packet->type);
     552                                return -1;
    527553                }
    528554        }
     
    539565static int rt_get_capture_length(const libtrace_packet_t *packet) {
    540566        switch (packet->type) {
    541                 case RT_DUCK_2_4:
    542                         return sizeof(duck2_4_t);
    543                 case RT_DUCK_2_5:
    544                         return sizeof(duck2_5_t);
    545567                case RT_STATUS:
    546568                        return sizeof(rt_status_t);
Note: See TracChangeset for help on using the changeset viewer.