Merge pull request #9188 from miri64/gnrc_pktdump/enh/print-rest

gnrc_pktdump: print rest of snip as hex if available
This commit is contained in:
Cenk Gündoğan 2018-05-29 13:32:39 +02:00 committed by GitHub
commit 5230e7732c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -47,6 +47,8 @@ static char _stack[GNRC_PKTDUMP_STACKSIZE];
static void _dump_snip(gnrc_pktsnip_t *pkt) static void _dump_snip(gnrc_pktsnip_t *pkt)
{ {
size_t hdr_len = pkt->size;
switch (pkt->type) { switch (pkt->type) {
case GNRC_NETTYPE_UNDEF: case GNRC_NETTYPE_UNDEF:
printf("NETTYPE_UNDEF (%i)\n", pkt->type); printf("NETTYPE_UNDEF (%i)\n", pkt->type);
@ -68,24 +70,28 @@ static void _dump_snip(gnrc_pktsnip_t *pkt)
case GNRC_NETTYPE_IPV6: case GNRC_NETTYPE_IPV6:
printf("NETTYPE_IPV6 (%i)\n", pkt->type); printf("NETTYPE_IPV6 (%i)\n", pkt->type);
ipv6_hdr_print(pkt->data); ipv6_hdr_print(pkt->data);
hdr_len = sizeof(ipv6_hdr_t);
break; break;
#endif #endif
#ifdef MODULE_GNRC_ICMPV6 #ifdef MODULE_GNRC_ICMPV6
case GNRC_NETTYPE_ICMPV6: case GNRC_NETTYPE_ICMPV6:
printf("NETTYPE_ICMPV6 (%i)\n", pkt->type); printf("NETTYPE_ICMPV6 (%i)\n", pkt->type);
icmpv6_hdr_print(pkt->data); icmpv6_hdr_print(pkt->data);
hdr_len = sizeof(icmpv6_hdr_t);
break; break;
#endif #endif
#ifdef MODULE_GNRC_TCP #ifdef MODULE_GNRC_TCP
case GNRC_NETTYPE_TCP: case GNRC_NETTYPE_TCP:
printf("NETTYPE_TCP (%i)\n", pkt->type); printf("NETTYPE_TCP (%i)\n", pkt->type);
tcp_hdr_print(pkt->data); tcp_hdr_print(pkt->data);
hdr_len = sizeof(tcp_hdr_t);
break; break;
#endif #endif
#ifdef MODULE_GNRC_UDP #ifdef MODULE_GNRC_UDP
case GNRC_NETTYPE_UDP: case GNRC_NETTYPE_UDP:
printf("NETTYPE_UDP (%i)\n", pkt->type); printf("NETTYPE_UDP (%i)\n", pkt->type);
udp_hdr_print(pkt->data); udp_hdr_print(pkt->data);
hdr_len = sizeof(udp_hdr_t);
break; break;
#endif #endif
#ifdef MODULE_CCN_LITE_UTILS #ifdef MODULE_CCN_LITE_UTILS
@ -111,6 +117,11 @@ static void _dump_snip(gnrc_pktsnip_t *pkt)
od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT);
break; break;
} }
if (hdr_len < pkt->size) {
size_t size = pkt->size - hdr_len;
od_hex_dump(((uint8_t *)pkt->data) + hdr_len, size, OD_WIDTH_DEFAULT);
}
} }
static void _dump(gnrc_pktsnip_t *pkt) static void _dump(gnrc_pktsnip_t *pkt)