Changeset e9f9ab3


Ignore:
Timestamp:
02/16/06 10:10:21 (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:
6561682
Parents:
643105b
Message:

Shifted setting packet->trace and packet->payload into separate functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_rt.c

    r49babe0 re9f9ab3  
    240240}
    241241
     242
     243static int rt_set_format(struct libtrace_t *libtrace,
     244                struct libtrace_packet_t *packet, uint16_t format) {
     245        switch (format) {
     246                case RT_FORMAT_ERF:
     247                        if (!RT_INFO->dummy_erf) {
     248                                RT_INFO->dummy_erf = trace_create_dead("erf:-");
     249                        }
     250                        packet->trace = RT_INFO->dummy_erf;
     251                        break;
     252                case RT_FORMAT_PCAP:
     253                        if (!RT_INFO->dummy_pcap) {
     254                                RT_INFO->dummy_pcap = trace_create_dead("pcap:-");
     255                        }
     256                        packet->trace = RT_INFO->dummy_pcap;
     257                        break;
     258                case RT_FORMAT_WAG:
     259                        if (!RT_INFO->dummy_wag) {
     260                                RT_INFO->dummy_wag = trace_create_dead("wtf:-");
     261                        }
     262                        packet->trace = RT_INFO->dummy_wag;
     263                        break;
     264                default:
     265                        printf("Unrecognised format: %d\n", format);
     266                        return -1;
     267        }
     268        return 1;
     269}               
     270
     271static void rt_set_payload(struct libtrace_packet_t *packet, uint16_t format) {
     272        dag_record_t *erfptr;
     273       
     274        switch (format) {
     275                case RT_FORMAT_ERF:
     276                        erfptr = (dag_record_t *)packet->header;
     277                       
     278                        if (erfptr->flags.rxerror == 1) {
     279                                packet->payload = NULL;
     280                        } else {
     281                                packet->payload = (char *)packet->buffer
     282                                        + trace_get_framing_length(packet);
     283                        }
     284                        break;
     285                default:
     286                        packet->payload = (char *)packet->buffer +
     287                                trace_get_framing_length(packet);
     288                        break;
     289        }
     290}
     291
    242292static int rt_read_packet(struct libtrace_t *libtrace, struct libtrace_packet_t *packet) {
    243293       
     
    249299        char msg_buf[RP_BUFSIZE];
    250300
    251         dag_record_t *erfptr;
    252301       
    253302        void *buffer = 0;
     
    303352                                }
    304353                                // set packet->trace
    305                                 switch (format) {
    306                                         case RT_FORMAT_ERF:
    307                                                 if (!RT_INFO->dummy_erf) {
    308                                                         RT_INFO->dummy_erf = trace_create_dead("erf:-");
    309                                                 }
    310                                                 packet->trace = RT_INFO->dummy_erf;
    311                                                 break;
    312                                         case RT_FORMAT_PCAP:
    313                                                 if (!RT_INFO->dummy_pcap) {
    314                                                         RT_INFO->dummy_pcap = trace_create_dead("pcap:-");
    315                                                 }
    316                                                 packet->trace = RT_INFO->dummy_pcap;
    317                                                 break;
    318                                         case RT_FORMAT_WAG:
    319                                                 if (!RT_INFO->dummy_wag) {
    320                                                         RT_INFO->dummy_wag = trace_create_dead("wtf:-");
    321                                                 }
    322                                                 packet->trace = RT_INFO->dummy_wag;
    323                                                 break;
    324                                         default:
    325                                                 printf("Unrecognised format: %d\n", format);
    326                                                 return -1;
     354                                if (rt_set_format(libtrace, packet, format) < 0) {
     355                                        return -1;
    327356                                }
    328                                
    329357                                // set packet->payload
    330                                 switch (format) {
    331                                         case RT_FORMAT_ERF:
    332                                                 erfptr = (dag_record_t *)packet->header;
    333                                                
    334                                                 if (erfptr->flags.rxerror == 1) {
    335                                                         packet->payload = NULL;
    336                                                 } else {
    337                                                         packet->payload = (char *)packet->buffer
    338                                                                 + trace_get_framing_length(packet);
    339                                                 }
    340                                                 break;
    341                                         default:
    342                                                 packet->payload = (char *)packet->buffer +
    343                                                         trace_get_framing_length(packet);
    344                                                 break;
    345                                 }
     358                                rt_set_payload(packet, format);
    346359                                // send ack
    347360                                break;
Note: See TracChangeset for help on using the changeset viewer.