From 5414164119347f145848f189ac1760f08873dccc Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Tue, 5 May 2020 20:26:14 +0200 Subject: [PATCH 1/4] gnrc_pktdump: use gnrc_nettype_% module where appropriate --- sys/net/gnrc/pktdump/gnrc_pktdump.c | 36 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/sys/net/gnrc/pktdump/gnrc_pktdump.c b/sys/net/gnrc/pktdump/gnrc_pktdump.c index cea6b119af..e733799e2a 100644 --- a/sys/net/gnrc/pktdump/gnrc_pktdump.c +++ b/sys/net/gnrc/pktdump/gnrc_pktdump.c @@ -60,64 +60,64 @@ static void _dump_snip(gnrc_pktsnip_t *pkt) gnrc_netif_hdr_print(pkt->data); break; #endif -#ifdef MODULE_GNRC_SIXLOWPAN +#if IS_USED(MODULE_GNRC_NETTYPE_SIXLOWPAN) case GNRC_NETTYPE_SIXLOWPAN: printf("NETTYPE_SIXLOWPAN (%i)\n", pkt->type); sixlowpan_print(pkt->data, pkt->size); break; -#endif -#ifdef MODULE_GNRC_IPV6 +#endif /* IS_USED(MODULE_GNRC_NETTYPE_SIXLOWPAN) */ +#if IS_USED(MODULE_GNRC_NETTYPE_IPV6) 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_IPV6_EXT +#endif /* IS_USED(MODULE_GNRC_NETTYPE_IPV6) */ +#if IS_USED(MODULE_GNRC_NETTYPE_IPV6_EXT) case GNRC_NETTYPE_IPV6_EXT: printf("NETTYPE_IPV6_EXT (%i)\n", pkt->type); od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; -#endif -#ifdef MODULE_GNRC_ICMPV6 +#endif /* IS_USED(MODULE_GNRC_NETTYPE_IPV6_EXT) */ +#if IS_USED(MODULE_GNRC_NETTYPE_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 +#endif /* IS_USED(MODULE_GNRC_NETTYPE_ICMPV6) */ +#if IS_USED(MODULE_GNRC_NETTYPE_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 +#endif /* IS_USED(MODULE_GNRC_NETTYPE_TCP) */ +#if IS_USED(MODULE_GNRC_NETTYPE_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 +#endif /* IS_USED(MODULE_GNRC_NETTYPE_UDP) */ +#if IS_USED(MODULE_GNRC_NETTYPE_CCN) case GNRC_NETTYPE_CCN_CHUNK: printf("GNRC_NETTYPE_CCN_CHUNK (%i)\n", pkt->type); printf("Content is: %.*s\n", (int)pkt->size, (char*)pkt->data); break; -#endif -#ifdef MODULE_NDN_RIOT +#endif /* IS_USED(MODULE_GNRC_NETTYPE_CCN) */ +#if IS_USED(MODULE_GNRC_NETTYPE_NDN) case GNRC_NETTYPE_NDN: printf("NETTYPE_NDN (%i)\n", pkt->type); od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; -#endif -#ifdef MODULE_GNRC_LORAWAN +#endif /* IS_USED(MODULE_GNRC_NETTYPE_NDN) */ +#if IS_USED(MODULE_GNRC_NETTYPE_LORAWAN) case GNRC_NETTYPE_LORAWAN: printf("NETTYPE_LORAWAN (%i)\n", pkt->type); od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; -#endif +#endif /* IS_USED(MODULE_GNRC_NETTYPE_LORAWAN) */ #ifdef TEST_SUITES case GNRC_NETTYPE_TEST: printf("NETTYPE_TEST (%i)\n", pkt->type); From d43384d2384b7e2c58dda655face5fd24e069a11 Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Tue, 5 May 2020 20:29:14 +0200 Subject: [PATCH 2/4] gnrc_pktdump: remove some duplicate calls to od_hex_dump() `od_hex_dump()` is called if `hdr_len < pkt->size` to print the rest after `hdr_len` of `pkt`. So if we just leave `hdr_len = 0` instead of calling `od_hex_dump()` for every other NETTYPE, we achieve the same effect. As it is more effective (and already done in some cases) to re-set `hdr_len` when the header was printed, we initialize `hdr_len` first with 0 now. --- sys/net/gnrc/pktdump/gnrc_pktdump.c | 45 +++++++++++++++++------------ 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/sys/net/gnrc/pktdump/gnrc_pktdump.c b/sys/net/gnrc/pktdump/gnrc_pktdump.c index e733799e2a..ea0e0221f1 100644 --- a/sys/net/gnrc/pktdump/gnrc_pktdump.c +++ b/sys/net/gnrc/pktdump/gnrc_pktdump.c @@ -47,86 +47,93 @@ static char _stack[GNRC_PKTDUMP_STACKSIZE]; static void _dump_snip(gnrc_pktsnip_t *pkt) { - size_t hdr_len = pkt->size; + size_t hdr_len = 0; switch (pkt->type) { case GNRC_NETTYPE_UNDEF: printf("NETTYPE_UNDEF (%i)\n", pkt->type); - od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; -#ifdef MODULE_GNRC_NETIF case GNRC_NETTYPE_NETIF: printf("NETTYPE_NETIF (%i)\n", pkt->type); - gnrc_netif_hdr_print(pkt->data); + if (IS_USED(MODULE_GNRC_NETIF_HDR)) { + gnrc_netif_hdr_print(pkt->data); + hdr_len = pkt->size; + } break; -#endif #if IS_USED(MODULE_GNRC_NETTYPE_SIXLOWPAN) case GNRC_NETTYPE_SIXLOWPAN: printf("NETTYPE_SIXLOWPAN (%i)\n", pkt->type); - sixlowpan_print(pkt->data, pkt->size); + if (IS_USED(MODULE_SIXLOWPAN)) { + sixlowpan_print(pkt->data, pkt->size); + hdr_len = pkt->size; + } break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_SIXLOWPAN) */ #if IS_USED(MODULE_GNRC_NETTYPE_IPV6) case GNRC_NETTYPE_IPV6: printf("NETTYPE_IPV6 (%i)\n", pkt->type); - ipv6_hdr_print(pkt->data); - hdr_len = sizeof(ipv6_hdr_t); + if (IS_USED(MODULE_IPV6_HDR)) { + ipv6_hdr_print(pkt->data); + hdr_len = sizeof(ipv6_hdr_t); + } break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_IPV6) */ #if IS_USED(MODULE_GNRC_NETTYPE_IPV6_EXT) case GNRC_NETTYPE_IPV6_EXT: printf("NETTYPE_IPV6_EXT (%i)\n", pkt->type); - od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_IPV6_EXT) */ #if IS_USED(MODULE_GNRC_NETTYPE_ICMPV6) case GNRC_NETTYPE_ICMPV6: printf("NETTYPE_ICMPV6 (%i)\n", pkt->type); - icmpv6_hdr_print(pkt->data); - hdr_len = sizeof(icmpv6_hdr_t); + if (IS_USED(MODULE_ICMPV6)) { + icmpv6_hdr_print(pkt->data); + hdr_len = sizeof(icmpv6_hdr_t); + } break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_ICMPV6) */ #if IS_USED(MODULE_GNRC_NETTYPE_TCP) case GNRC_NETTYPE_TCP: printf("NETTYPE_TCP (%i)\n", pkt->type); - tcp_hdr_print(pkt->data); - hdr_len = sizeof(tcp_hdr_t); + if (IS_USED(MODULE_TCP)) { + tcp_hdr_print(pkt->data); + hdr_len = sizeof(tcp_hdr_t); + } break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_TCP) */ #if IS_USED(MODULE_GNRC_NETTYPE_UDP) case GNRC_NETTYPE_UDP: printf("NETTYPE_UDP (%i)\n", pkt->type); - udp_hdr_print(pkt->data); - hdr_len = sizeof(udp_hdr_t); + if (IS_USED(MODULE_UDP)) { + udp_hdr_print(pkt->data); + hdr_len = sizeof(udp_hdr_t); + } break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_UDP) */ #if IS_USED(MODULE_GNRC_NETTYPE_CCN) case GNRC_NETTYPE_CCN_CHUNK: printf("GNRC_NETTYPE_CCN_CHUNK (%i)\n", pkt->type); printf("Content is: %.*s\n", (int)pkt->size, (char*)pkt->data); + hdr_len = pkt->size; break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_CCN) */ #if IS_USED(MODULE_GNRC_NETTYPE_NDN) case GNRC_NETTYPE_NDN: printf("NETTYPE_NDN (%i)\n", pkt->type); - od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_NDN) */ #if IS_USED(MODULE_GNRC_NETTYPE_LORAWAN) case GNRC_NETTYPE_LORAWAN: printf("NETTYPE_LORAWAN (%i)\n", pkt->type); - od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; #endif /* IS_USED(MODULE_GNRC_NETTYPE_LORAWAN) */ #ifdef TEST_SUITES case GNRC_NETTYPE_TEST: printf("NETTYPE_TEST (%i)\n", pkt->type); - od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; #endif default: printf("NETTYPE_UNKNOWN (%i)\n", pkt->type); - od_hex_dump(pkt->data, pkt->size, OD_WIDTH_DEFAULT); break; } if (hdr_len < pkt->size) { From a349748354d9cf0cbcf8639a24b1c251652763c3 Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Tue, 5 May 2020 20:52:22 +0200 Subject: [PATCH 3/4] gnrc_pktdump: reorder switch-cases in accordance with enum order --- sys/net/gnrc/pktdump/gnrc_pktdump.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/net/gnrc/pktdump/gnrc_pktdump.c b/sys/net/gnrc/pktdump/gnrc_pktdump.c index ea0e0221f1..d5a8fb03e4 100644 --- a/sys/net/gnrc/pktdump/gnrc_pktdump.c +++ b/sys/net/gnrc/pktdump/gnrc_pktdump.c @@ -50,9 +50,6 @@ static void _dump_snip(gnrc_pktsnip_t *pkt) size_t hdr_len = 0; switch (pkt->type) { - case GNRC_NETTYPE_UNDEF: - printf("NETTYPE_UNDEF (%i)\n", pkt->type); - break; case GNRC_NETTYPE_NETIF: printf("NETTYPE_NETIF (%i)\n", pkt->type); if (IS_USED(MODULE_GNRC_NETIF_HDR)) { @@ -60,6 +57,9 @@ static void _dump_snip(gnrc_pktsnip_t *pkt) hdr_len = pkt->size; } break; + case GNRC_NETTYPE_UNDEF: + printf("NETTYPE_UNDEF (%i)\n", pkt->type); + break; #if IS_USED(MODULE_GNRC_NETTYPE_SIXLOWPAN) case GNRC_NETTYPE_SIXLOWPAN: printf("NETTYPE_SIXLOWPAN (%i)\n", pkt->type); From 8ff77f64449bb5b1be261bbcc6a370c5c9f6f6a4 Mon Sep 17 00:00:00 2001 From: "Martine S. Lenders" Date: Wed, 6 May 2020 10:46:59 +0200 Subject: [PATCH 4/4] tests/gnrc_netif: fix test script for empty payload With the rework of `gnrc_pktdump` it does not try to print packets with empty payload anymore. This needs to be reflected in the test script. --- tests/gnrc_netif/tests/01-run.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/gnrc_netif/tests/01-run.py b/tests/gnrc_netif/tests/01-run.py index b434a41023..77227b29b6 100755 --- a/tests/gnrc_netif/tests/01-run.py +++ b/tests/gnrc_netif/tests/01-run.py @@ -80,7 +80,7 @@ def testfunc(child): child.expect("pktdump dumping Ethernet packet with empty payload") child.expect("PKTDUMP: data received:") child.expect(r"~~ SNIP 0 - size: 0 byte, type: NETTYPE_UNDEF \(0\)") - child.expect(r"00000000~~ SNIP 1 - size: \d+ byte, type: NETTYPE_NETIF \(-1\)") + child.expect(r"~~ SNIP 1 - size: \d+ byte, type: NETTYPE_NETIF \(-1\)") child.expect(r"if_pid: (\d+) rssi: -?\d+ lqi: \d+") assert 0 < int(child.match.group(1)) child.expect("flags: 0x0") @@ -91,7 +91,7 @@ def testfunc(child): child.expect(r"pktdump dumping IEEE 802\.15\.4 packet with empty payload") child.expect("PKTDUMP: data received:") child.expect(r"~~ SNIP 0 - size: 0 byte, type: NETTYPE_UNDEF \(0\)") - child.expect(r"00000000~~ SNIP 1 - size: \d+ byte, type: NETTYPE_NETIF \(-1\)") + child.expect(r"~~ SNIP 1 - size: \d+ byte, type: NETTYPE_NETIF \(-1\)") child.expect(r"if_pid: (\d+) rssi: -?\d+ lqi: \d+") assert 0 < int(child.match.group(1)) child.expect("flags: 0x0")