Changeset b27ed21 for lib/format_pktmeta.c
- Timestamp:
- 01/21/19 11:43:12 (2 years ago)
- Branches:
- develop
- Children:
- ddad48c
- Parents:
- c8171e5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.
Note: See TracChangeset
for help on using the changeset viewer.