- Timestamp:
- 01/21/19 11:43:12 (2 years ago)
- Branches:
- develop
- Children:
- ddad48c
- Parents:
- c8171e5
- Location:
- lib
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
lib/format_erf.c
rd4eed70 rb27ed21 1002 1002 result->items[result->num-1].option = ntohs(sec->type); 1003 1003 result->items[result->num-1].len = ntohs(sec->len); 1004 result->items[result->num-1].data _type = 0;1004 result->items[result->num-1].datatype = TRACE_META_UNKNOWN; 1005 1005 result->items[result->num-1].data = malloc(ntohs(sec->len)); 1006 1006 memcpy(result->items[result->num-1].data, … … 1081 1081 result->items[result->num-1].option = ntohs(sec->type); 1082 1082 result->items[result->num-1].len = ntohs(sec->len); 1083 result->items[result->num-1].data _type = 0;1083 result->items[result->num-1].datatype = TRACE_META_UNKNOWN; 1084 1084 result->items[result->num-1].data = calloc(1, ntohs(sec->len)); 1085 1085 -
lib/format_pcapng.c
r66ffac4 rb27ed21 2232 2232 result->items[result->num-1].option = optcode; 2233 2233 result->items[result->num-1].len = len; 2234 result->items[result->num-1].data _type = 0;2234 result->items[result->num-1].datatype = TRACE_META_UNKNOWN; 2235 2235 result->items[result->num-1].data = calloc(1, len); 2236 2236 memcpy(result->items[result->num-1].data, … … 2344 2344 result->items[result->num-1].option = option; 2345 2345 result->items[result->num-1].len = len; 2346 result->items[result->num-1].data _type = 0;2346 result->items[result->num-1].datatype = TRACE_META_UNKNOWN; 2347 2347 result->items[result->num-1].data = calloc(1, len); 2348 2348 2349 memcpy(result->items->data, ptr+sizeof(struct pcapng_optheader), len); 2349 memcpy(result->items[result->num-1].data, 2350 ptr+sizeof(struct pcapng_optheader), len); 2350 2351 2351 2352 return (void *)result; -
lib/format_pktmeta.c
rc8171e5 rb27ed21 7 7 #include <stdlib.h> 8 8 #include <string.h> 9 9 #include <endian.h> 10 10 11 11 /* Internal Meta functions */ … … 22 22 } 23 23 24 static libtrace_meta_t *trace_meta_set_datatype(libtrace_meta_t *r, meta_datatype_t dt) { 25 if (r == NULL) { return NULL; } 26 27 int i; 28 for (i=0; i<r->num; i++) { 29 r->items[i].datatype = dt; 30 } 31 return r; 32 } 33 24 34 /* API functions to retrieve interface related packet data */ 25 35 … … 60 70 } 61 71 72 libtrace_meta_t *r = NULL; 73 62 74 /* get the result */ 63 75 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 64 r eturnpacket->trace->format->get_meta_section_option(packet,76 r = packet->trace->format->get_meta_section_option(packet, 65 77 ERF_PROV_SECTION_INTERFACE, ERF_PROV_NAME); 66 78 } 67 79 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 68 r eturnpacket->trace->format->get_meta_section_option(packet,80 r = packet->trace->format->get_meta_section_option(packet, 69 81 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_NAME); 70 82 } 71 83 72 return NULL;84 return trace_meta_set_datatype(r, TRACE_META_STRING); 73 85 } 74 86 /* Get the interface name for a meta packet. … … 112 124 } 113 125 114 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 115 return packet->trace->format->get_meta_section_option(packet, 126 libtrace_meta_t *r = NULL; 127 128 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 129 r = packet->trace->format->get_meta_section_option(packet, 116 130 ERF_PROV_SECTION_INTERFACE, ERF_PROV_IF_MAC); 117 131 } 118 132 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 119 r eturnpacket->trace->format->get_meta_section_option(packet,133 r = packet->trace->format->get_meta_section_option(packet, 120 134 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_MAC); 121 135 } 122 136 123 return NULL;137 return trace_meta_set_datatype(r, TRACE_META_STRING); 124 138 } 125 139 /* Get the interface MAC address for a meta packet. … … 160 174 } 161 175 162 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 163 return packet->trace->format->get_meta_section_option(packet, 176 libtrace_meta_t *r = NULL; 177 178 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 179 r = packet->trace->format->get_meta_section_option(packet, 164 180 ERF_PROV_SECTION_INTERFACE, ERF_PROV_IF_SPEED); 165 181 } 166 182 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 167 r eturnpacket->trace->format->get_meta_section_option(packet,183 r = packet->trace->format->get_meta_section_option(packet, 168 184 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_SPEED); 169 185 } 170 186 171 return NULL; 187 /* Flip from network to host byte ordering */ 188 int i; 189 if (r != NULL) { 190 for (i=0; i<r->num; i++) { 191 uint64_t d = be64toh(*(uint64_t *)r->items[i].data); 192 memcpy(r->items[i].data, &d, r->items[i].len); 193 } 194 } 195 196 return trace_meta_set_datatype(r, TRACE_META_UINT64_T); 172 197 } 173 198 /* Get the interface speed for a meta packet. … … 202 227 } 203 228 204 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 205 return packet->trace->format->get_meta_section_option(packet, 229 libtrace_meta_t *r = NULL; 230 231 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 232 r = packet->trace->format->get_meta_section_option(packet, 206 233 ERF_PROV_SECTION_INTERFACE, ERF_PROV_IF_IPV4); 207 234 } 208 235 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 209 r eturnpacket->trace->format->get_meta_section_option(packet,236 r = packet->trace->format->get_meta_section_option(packet, 210 237 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_IP4); 211 238 } 212 239 213 return NULL;240 return trace_meta_set_datatype(r, TRACE_META_UINT32_T); 214 241 } 215 242 /* Get the interface ipv4 address for a meta packet. … … 263 290 } 264 291 265 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 266 return packet->trace->format->get_meta_section_option(packet, 292 libtrace_meta_t *r = NULL; 293 294 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 295 r = packet->trace->format->get_meta_section_option(packet, 267 296 ERF_PROV_SECTION_INTERFACE, ERF_PROV_IF_IPV4); 268 297 } 269 298 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 270 r eturnpacket->trace->format->get_meta_section_option(packet,299 r = packet->trace->format->get_meta_section_option(packet, 271 300 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_IP4); 272 301 } 273 302 274 return NULL;303 return trace_meta_set_datatype(r, TRACE_META_UINT128_T); 275 304 } 276 305 /* Get the interface ipv6 address for a meta packet. … … 342 371 } 343 372 344 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 345 return packet->trace->format->get_meta_section_option(packet, 373 libtrace_meta_t *r = NULL; 374 375 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 376 r = packet->trace->format->get_meta_section_option(packet, 346 377 ERF_PROV_SECTION_INTERFACE, ERF_PROV_DESCR); 347 378 } 348 379 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 349 r eturnpacket->trace->format->get_meta_section_option(packet,380 r = packet->trace->format->get_meta_section_option(packet, 350 381 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_DESCR); 351 382 } 352 383 353 return NULL;384 return trace_meta_set_datatype(r, TRACE_META_STRING); 354 385 } 355 386 /* Get the interface description for a meta packet. … … 390 421 } 391 422 392 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 393 return packet->trace->format->get_meta_section_option(packet, 423 libtrace_meta_t *r = NULL; 424 425 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 426 r = packet->trace->format->get_meta_section_option(packet, 394 427 ERF_PROV_SECTION_HOST, ERF_PROV_OS); 395 428 } 396 429 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 397 r eturnpacket->trace->format->get_meta_section_option(packet,430 r = packet->trace->format->get_meta_section_option(packet, 398 431 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_OS); 399 432 } 400 433 401 return NULL;434 return trace_meta_set_datatype(r, TRACE_META_STRING); 402 435 } 403 436 /* Get the host OS for a meta packet. … … 432 465 } 433 466 434 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 435 return packet->trace->format->get_meta_section_option(packet, 467 libtrace_meta_t *r = NULL; 468 469 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 470 r = packet->trace->format->get_meta_section_option(packet, 436 471 ERF_PROV_SECTION_INTERFACE, ERF_PROV_FCS_LEN); 437 472 } 438 473 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 439 r eturnpacket->trace->format->get_meta_section_option(packet,474 r = packet->trace->format->get_meta_section_option(packet, 440 475 PCAPNG_INTERFACE_TYPE, PCAPNG_META_IF_FCSLEN); 441 476 } 442 477 443 return NULL;478 return trace_meta_set_datatype(r, TRACE_META_UINT32_T); 444 479 } 445 480 /* Get the interface frame check sequence length for a meta packet. … … 471 506 } 472 507 473 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 474 return packet->trace->format->get_meta_section_option(packet, 508 libtrace_meta_t *r = NULL; 509 510 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 511 r = packet->trace->format->get_meta_section_option(packet, 475 512 ERF_PROV_SECTION_INTERFACE, ERF_PROV_COMMENT); 476 513 } 477 514 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 478 r eturnpacket->trace->format->get_meta_section_option(packet,515 r = packet->trace->format->get_meta_section_option(packet, 479 516 PCAPNG_INTERFACE_TYPE, PCAPNG_OPTION_COMMENT); 480 517 } 481 518 482 return NULL;519 return trace_meta_set_datatype(r, TRACE_META_STRING); 483 520 } 484 521 /* Get the interface comment for a meta packet. … … 518 555 } 519 556 520 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 521 return packet->trace->format->get_meta_section_option(packet, 557 libtrace_meta_t *r = NULL; 558 559 if (packet->trace->format->type == TRACE_FORMAT_ERF) { 560 r = packet->trace->format->get_meta_section_option(packet, 522 561 ERF_PROV_SECTION_CAPTURE, ERF_PROV_APP_NAME); 523 562 } 524 563 if (packet->trace->format->type == TRACE_FORMAT_PCAPNG) { 525 r eturnpacket->trace->format->get_meta_section_option(packet,564 r = packet->trace->format->get_meta_section_option(packet, 526 565 PCAPNG_SECTION_TYPE, PCAPNG_META_SHB_USERAPPL); 527 566 } 528 567 529 return NULL;568 return trace_meta_set_datatype(r, TRACE_META_STRING); 530 569 } 531 570 /* Get the capture application for a meta packet. -
lib/libtrace.h.in
rc8171e5 rb27ed21 581 581 } libtrace_ethertype_t; 582 582 583 /** Enumeration of datatype returned inside libtrace_meta_item_t structure */ 584 typedef enum { 585 TRACE_META_UINT32_T = 1, 586 TRACE_META_UINT64_T = 2, 587 TRACE_META_STRING = 3, 588 TRACE_META_UNKNOWN = 4, 589 TRACE_META_UINT128_T = 5 590 } meta_datatype_t; 591 583 592 typedef struct libtrace_meta_result { 584 593 uint16_t type; … … 589 598 uint16_t option; 590 599 uint16_t len; 591 uint8_t data_type;600 meta_datatype_t datatype; 592 601 void *data; 593 602 } libtrace_meta_item_t; … … 3732 3741 /*@}*/ 3733 3742 3734 3735 3736 3743 DLLEXPORT int trace_destroy_meta(libtrace_meta_t *result); 3737 3744
Note: See TracChangeset
for help on using the changeset viewer.