Changeset 6561682
- Timestamp:
- 02/16/06 10:43:03 (15 years ago)
- 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:
- 70b38dc
- Parents:
- e9f9ab3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/format_rt.c
re9f9ab3 r6561682 290 290 } 291 291 292 static int rt_read_packet(struct libtrace_t *libtrace, struct libtrace_packet_t *packet) { 292 static int rt_send_ack(struct libtrace_t *libtrace, 293 struct libtrace_packet_t *packet) { 294 295 static char *ack_buffer = 0; 296 char *buf_ptr; 297 int numbytes = 0; 298 int to_write = 0; 299 rt_header_t *hdr; 300 rt_ack_t *ack_hdr; 301 302 if (!ack_buffer) { 303 ack_buffer = malloc(sizeof(rt_header_t) + sizeof(rt_ack_t)); 304 } 305 306 hdr = (rt_header_t) ack_buffer; 307 ack_hdr = (rt_ack_t) (ack_buffer + sizeof(rt_header_t)); 308 309 hdr->type = RT_ACK; 310 hdr->length = sizeof(rt_header_t) + sizeof(rt_ack_t); 311 312 ack_hdr->ts = trace_get_erf_timestamp(packet); 313 314 to_write = hdr->length; 315 buf_ptr = ack_buffer; 316 317 while (to_write > 0) { 318 numbytes = send(RT_INFO.input_fd, buf_ptr, to_write); 319 if (numbytes == -1) { 320 if (errno == EINTR || errno == EAGAIN) { 321 continue; 322 } 323 else { 324 printf("Error sending ack\n"); 325 return -1; 326 } 327 } 328 to_write = to_write - numbytes; 329 buf_ptr = buf_ptr + to_write; 330 331 } 332 333 return 1; 334 } 335 336 static int rt_read_packet(struct libtrace_t *libtrace, 337 struct libtrace_packet_t *packet) { 293 338 294 339 int numbytes = 0; … … 344 389 } 345 390 if (tracefifo_out_read(libtrace->fifo, buffer, 346 packet->size - 347 sizeof(uint16_t)) == 0) 391 packet->size - sizeof(uint16_t))== 0) 348 392 { 349 393 tracefifo_out_reset(libtrace->fifo); … … 357 401 // set packet->payload 358 402 rt_set_payload(packet, format); 403 359 404 // send ack 405 if (rt_send_ack(libtrace, packet) == -1) { 406 return -1; 407 } 408 360 409 break; 361 410 case RT_STATUS: … … 395 444 396 445 default: 397 printf("Bad rt type: %d\n", packet->type);446 printf("Bad rt client type: %d\n", packet->type); 398 447 return -1; 399 448
Note: See TracChangeset
for help on using the changeset viewer.