Changeset 509ee47
- Timestamp:
- 12/10/18 14:52:43 (2 years ago)
- Branches:
- develop
- Children:
- 418c78d
- Parents:
- 54ef438
- Location:
- lib
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/format_erf.c
rc337c9f9 r509ee47 254 254 IN_OPTIONS.real_time = *(int *)value; 255 255 return 0; 256 case TRACE_OPTION_CONSTANT_ERF_FRAMING: 257 trace_set_err(libtrace, TRACE_ERR_OPTION_UNAVAIL, 258 "Setting constant framing length is not supported for %s:", libtrace->format->name); 259 return -1; 256 260 case TRACE_OPTION_SNAPLEN: 257 261 case TRACE_OPTION_PROMISC: … … 667 671 { 668 672 int numbytes = 0; 669 unsigned int pad = 0;670 673 dag_record_t *dag_hdr = (dag_record_t *)packet->header; 671 674 void *payload = packet->payload; … … 684 687 } 685 688 686 pad = erf_get_padding(packet);687 689 688 690 /* If we've had an rxerror, we have no payload to write - fix … … 692 694 * a way to write out the payload even if it is gibberish -- Perry */ 693 695 if (payload == NULL) { 696 unsigned int pad = 0; 697 pad = erf_get_padding(packet); 694 698 dag_hdr->rlen = htons(dag_record_size + pad); 695 699 … … 720 724 721 725 payload=packet->payload; 722 pad = erf_get_padding(packet);723 726 724 727 erfhdr.type = libtrace_to_erf_type(trace_get_link_type(packet)); -
lib/format_linux_common.c
r2193905 r509ee47 167 167 case TRACE_OPTION_REPLAY_SPEEDUP: 168 168 break; 169 case TRACE_OPTION_CONSTANT_ERF_FRAMING: 170 break; 169 171 /* Avoid default: so that future options will cause a warning 170 172 * here to remind us to implement it, or flag it as -
lib/format_ndag.c
r54ef438 r509ee47 125 125 pthread_t controlthread; 126 126 libtrace_message_queue_t controlqueue; 127 int consterfframing; 127 128 } ndag_format_data_t; 128 129 … … 296 297 FORMAT_DATA->nextthreadid = 0; 297 298 FORMAT_DATA->receivers = NULL; 299 FORMAT_DATA->consterfframing = -1; 298 300 299 301 scan = strchr(libtrace->uridata, ','); … … 316 318 FORMAT_DATA->portstr = strdup(scan + 1); 317 319 } 320 return 0; 321 } 322 323 static int ndag_config_input(libtrace_t *libtrace, trace_option_t option, 324 void *value) { 325 326 switch(option) { 327 case TRACE_OPTION_CONSTANT_ERF_FRAMING: 328 FORMAT_DATA->consterfframing = *(int *)value; 329 break; 330 case TRACE_OPTION_EVENT_REALTIME: 331 case TRACE_OPTION_SNAPLEN: 332 case TRACE_OPTION_PROMISC: 333 case TRACE_OPTION_FILTER: 334 case TRACE_OPTION_META_FREQ: 335 default: 336 trace_set_err(libtrace, TRACE_ERR_OPTION_UNAVAIL, 337 "Unsupported option"); 338 return -1; 339 } 340 318 341 return 0; 319 342 } … … 597 620 } 598 621 599 static int ndag_prepare_packet_stream(libtrace_t *libtrace, 600 recvstream_t *rt, 601 streamsock_t *ssock, libtrace_packet_t *packet, 602 uint32_t flags) { 622 static int ndag_get_framing_length(const libtrace_packet_t *packet) { 623 624 libtrace_t *libtrace = packet->trace; 625 626 if (FORMAT_DATA->consterfframing >= 0) { 627 return FORMAT_DATA->consterfframing; 628 } 629 return erf_get_framing_length(packet); 630 } 631 632 static int ndag_prepare_packet_stream(libtrace_t *restrict libtrace, 633 recvstream_t *restrict rt, 634 streamsock_t *restrict ssock, 635 libtrace_packet_t *restrict packet, 636 uint32_t flags UNUSED) { 637 638 /* XXX flags is constant, so we can tell the compiler to not 639 * bother copying over the parameter 640 */ 603 641 604 642 dag_record_t *erfptr; … … 608 646 uint16_t rlen; 609 647 648 /* 610 649 if ((flags & TRACE_PREP_OWN_BUFFER) == TRACE_PREP_OWN_BUFFER) { 611 650 packet->buf_control = TRACE_CTRL_PACKET; … … 613 652 packet->buf_control = TRACE_CTRL_EXTERNAL; 614 653 } 654 */ 655 packet->buf_control = TRACE_CTRL_EXTERNAL; 615 656 616 657 packet->trace = libtrace; … … 623 664 if (erfptr->flags.rxerror == 1) { 624 665 packet->payload = NULL; 625 erfptr->rlen = htons(erf_get_framing_length(packet)); 666 if (FORMAT_DATA->consterfframing >= 0) { 667 erfptr->rlen = htons(FORMAT_DATA->consterfframing & 0xffff); 668 } else { 669 erfptr->rlen = htons(erf_get_framing_length(packet)); 670 } 626 671 } else { 627 packet->payload = (char *)packet->buffer + 672 if (FORMAT_DATA->consterfframing >= 0) { 673 packet->payload = (char *)packet->buffer + 674 FORMAT_DATA->consterfframing; 675 } else { 676 packet->payload = (char *)packet->buffer + 628 677 erf_get_framing_length(packet); 678 } 629 679 } 630 680 … … 1453 1503 NULL, /* probe magic */ 1454 1504 ndag_init_input, /* init_input */ 1455 NULL,/* config_input */1505 ndag_config_input, /* config_input */ 1456 1506 ndag_start_input, /* start_input */ 1457 1507 ndag_pause_input, /* pause_input */ … … 1478 1528 erf_get_capture_length, /* get_capture_length */ 1479 1529 erf_get_wire_length, /* get_wire_length */ 1480 erf_get_framing_length, /* get_framing_length */1530 ndag_get_framing_length, /* get_framing_length */ 1481 1531 erf_set_capture_length, /* set_capture_length */ 1482 1532 NULL, /* get_received_packets */ -
lib/format_pcapfile.c
r2193905 r509ee47 267 267 case TRACE_OPTION_HASHER: 268 268 case TRACE_OPTION_REPLAY_SPEEDUP: 269 case TRACE_OPTION_CONSTANT_ERF_FRAMING: 269 270 /* All these are either unsupported or handled 270 271 * by trace_config */ -
lib/format_pcapng.c
r2193905 r509ee47 263 263 case TRACE_OPTION_HASHER: 264 264 case TRACE_OPTION_REPLAY_SPEEDUP: 265 case TRACE_OPTION_CONSTANT_ERF_FRAMING: 265 266 break; 266 267 } -
lib/libtrace.h.in
rf6f3ae5 r509ee47 1366 1366 /** Speed up trace file replays (via trace_event()) by this factor */ 1367 1367 TRACE_OPTION_REPLAY_SPEEDUP, 1368 1369 /** Always assume ERF framing length is the given value, rather than 1370 * trying to calculate it from the packet type. */ 1371 TRACE_OPTION_CONSTANT_ERF_FRAMING, 1368 1372 } trace_option_t; 1369 1373 -
lib/trace.c
r9c86dee r509ee47 674 674 /* Dealt with earlier */ 675 675 return -1; 676 case TRACE_OPTION_CONSTANT_ERF_FRAMING: 677 if (!trace_is_err(libtrace)) { 678 trace_set_err(libtrace, 679 TRACE_ERR_OPTION_UNAVAIL, 680 "This format does not feature an ERF header or does not support bypassing the framing length calculation"); 681 } 682 return -1; 683 676 684 677 685 }
Note: See TracChangeset
for help on using the changeset viewer.