diff --git a/sys/net/gnrc/pktdump/gnrc_pktdump.c b/sys/net/gnrc/pktdump/gnrc_pktdump.c index 56608cdadd04ba24d9f7568aaf49bc6f699ddc23..ae945d149c42a1da302128f0f0be38a800344720 100644 --- a/sys/net/gnrc/pktdump/gnrc_pktdump.c +++ b/sys/net/gnrc/pktdump/gnrc_pktdump.c @@ -47,6 +47,8 @@ static char _stack[GNRC_PKTDUMP_STACKSIZE]; static void _dump_snip(gnrc_pktsnip_t *pkt) { + size_t hdr_len = pkt->size; + switch (pkt->type) { case GNRC_NETTYPE_UNDEF: printf("NETTYPE_UNDEF (%i)\n", pkt->type); @@ -68,24 +70,28 @@ static void _dump_snip(gnrc_pktsnip_t *pkt) case GNRC_NETTYPE_IPV6: printf("NETTYPE_IPV6 (%i)\n", pkt->type); ipv6_hdr_print(pkt->data); + hdr_len = sizeof(ipv6_hdr_t); break; #endif #ifdef MODULE_GNRC_ICMPV6 case GNRC_NETTYPE_ICMPV6: printf("NETTYPE_ICMPV6 (%i)\n", pkt->type); icmpv6_hdr_print(pkt->data); + hdr_len = sizeof(icmpv6_hdr_t); break; #endif #ifdef MODULE_GNRC_TCP case GNRC_NETTYPE_TCP: printf("NETTYPE_TCP (%i)\n", pkt->type); tcp_hdr_print(pkt->data); + hdr_len = sizeof(tcp_hdr_t); break; #endif #ifdef MODULE_GNRC_UDP case GNRC_NETTYPE_UDP: printf("NETTYPE_UDP (%i)\n", pkt->type); udp_hdr_print(pkt->data); + hdr_len = sizeof(udp_hdr_t); break; #endif #ifdef MODULE_CCN_LITE_UTILS @@ -105,6 +111,11 @@ static void _dump_snip(gnrc_pktsnip_t *pkt) od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); 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)