From f34df829dc8ff28275bce67c8c84f39673a3438d Mon Sep 17 00:00:00 2001 From: Martine Lenders <mlenders@inf.fu-berlin.de> Date: Tue, 24 Mar 2015 02:53:06 +0100 Subject: [PATCH] pktdump: dump data of packet snips structured --- Makefile.dep | 1 + sys/net/crosslayer/ng_pktdump/ng_pktdump.c | 56 +++++++++++++++++----- 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/Makefile.dep b/Makefile.dep index df021cfa94..5e40df93ee 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -71,6 +71,7 @@ endif ifneq (,$(filter ng_pktdump,$(USEMODULE))) USEMODULE += ng_pktbuf + USEMODULE += od endif ifneq (,$(filter aodvv2,$(USEMODULE))) diff --git a/sys/net/crosslayer/ng_pktdump/ng_pktdump.c b/sys/net/crosslayer/ng_pktdump/ng_pktdump.c index 2e794ca178..e1f22acd89 100644 --- a/sys/net/crosslayer/ng_pktdump/ng_pktdump.c +++ b/sys/net/crosslayer/ng_pktdump/ng_pktdump.c @@ -25,6 +25,7 @@ #include "kernel.h" #include "net/ng_pktdump.h" #include "net/ng_netbase.h" +#include "od.h" /** * @brief PID of the pktdump thread @@ -36,45 +37,74 @@ static kernel_pid_t _pid = KERNEL_PID_UNDEF; */ static char _stack[NG_PKTDUMP_STACKSIZE]; -static void _dump_type(ng_nettype_t type) +#define ADDR_STR_MAX (24) + +#ifdef MODULE_NG_NETIF +static void _dump_netif_hdr(ng_netif_hdr_t *hdr) +{ + char addr_str[ADDR_STR_MAX]; + + printf("if_pid: %" PRIkernel_pid " ", hdr->if_pid); + printf("rssi: %" PRIu8 " ", hdr->rssi); + printf("lqi: %" PRIu8 "\n", hdr->lqi); + printf("src_l2addr: %s\n", + ng_netif_addr_to_str(addr_str, sizeof(addr_str), + ng_netif_hdr_get_src_addr(hdr), + (size_t)hdr->src_l2addr_len)); + printf("dst_l2addr: %s\n", + ng_netif_addr_to_str(addr_str, sizeof(addr_str), + ng_netif_hdr_get_dst_addr(hdr), + (size_t)hdr->dst_l2addr_len)); +} +#endif + +static void _dump_snip(ng_pktsnip_t *pkt) { - switch (type) { + switch (pkt->type) { case NG_NETTYPE_UNDEF: - printf("NETTYPE_UNDEF (%i)", type); + printf("NETTYPE_UNDEF (%i)\n", pkt->type); + od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; - +#ifdef MODULE_NG_NETIF + case NG_NETTYPE_NETIF: + printf("NETTYPE_NETIF (%i)\n", pkt->type); + _dump_netif_hdr(pkt->data); + break; +#endif #ifdef MODULE_NG_SIXLOWPAN case NG_NETTYPE_SIXLOWPAN: - printf("NETTYPE_SIXLOPAN (%i)", type); + printf("NETTYPE_SIXLOWPAN (%i)", pkt->type); break; #endif #ifdef MODULE_NG_IPV6 case NG_NETTYPE_IPV6: - printf("NETTYPE_IPV6 (%i)", type); + printf("NETTYPE_IPV6 (%i)", pkt->type); break; #endif #ifdef MODULE_NG_ICMPV6 case NG_NETTYPE_ICMPV6: - printf("NETTYPE_ICMPV6 (%i)", type); + printf("NETTYPE_ICMPV6 (%i)", pkt->type); break; #endif #ifdef MODULE_NG_TCP case NG_NETTYPE_TCP: - printf("NETTYPE_TCP (%i)", type); + printf("NETTYPE_TCP (%i)", pkt->type); break; #endif #ifdef MODULE_NG_UDP case NG_NETTYPE_UDP: - printf("NETTYPE_UDP (%i)", type); + printf("NETTYPE_UDP (%i)", pkt->type); break; #endif #ifdef TEST_SUITES case NG_NETTYPE_TEST: - printf("NETTYPE_TEST (%i)", type); + printf("NETTYPE_TEST (%i)", pkt->type); + od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; #endif default: - printf("NETTYPE_UNKNOWN (%i)", type); + printf("NETTYPE_UNKNOWN (%i)", pkt->type); + od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; } } @@ -87,12 +117,12 @@ static void _dump(ng_pktsnip_t *pkt) while (snip != NULL) { printf("~~ SNIP %2i - size: %3i byte, type: ", snips, snip->size); - _dump_type(snip->type); - puts(""); + _dump_snip(snip); ++snips; size += snip->size; snip = snip->next; } + printf("~~ PKT - %2i snips, total size: %3i byte\n", snips, size); ng_pktbuf_release(pkt); } -- GitLab