From c16a3ed51142e0b5a5e491c2d0b50b148bebb6ab Mon Sep 17 00:00:00 2001 From: Oleg Hahm Date: Thu, 21 Nov 2013 20:47:44 +0100 Subject: [PATCH 1/2] tiny debug improvement for RPL --- sys/net/rpl/rpl_dodag.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/net/rpl/rpl_dodag.c b/sys/net/rpl/rpl_dodag.c index fb254272ba..00199cacbe 100644 --- a/sys/net/rpl/rpl_dodag.c +++ b/sys/net/rpl/rpl_dodag.c @@ -23,6 +23,9 @@ #include "trickle.h" #include "rpl.h" +#define ENABLE_DEBUG (0) +#include "debug.h" + rpl_instance_t instances[RPL_MAX_INSTANCES]; rpl_dodag_t dodags[RPL_MAX_DODAGS]; rpl_parent_t parents[RPL_MAX_PARENTS]; @@ -225,11 +228,11 @@ rpl_parent_t *rpl_find_preferred_parent(void) for (uint8_t i = 0; i < RPL_MAX_PARENTS; i++) { if (parents[i].used) { if ((parents[i].rank == INFINITE_RANK) || (parents[i].lifetime <= 1)) { - puts("bad parent"); + DEBUG("Infinite rank, bad parent\n"); continue; } else if (best == NULL) { - puts("parent"); + DEBUG("possible parent\n"); best = &parents[i]; } else { From 7c95a1d44c52698584c923fbec07a64193ee792f Mon Sep 17 00:00:00 2001 From: Oleg Hahm Date: Fri, 22 Nov 2013 23:59:33 +0100 Subject: [PATCH 2/2] debug output when joining a dodag --- sys/net/rpl/rpl.c | 11 +++++++++++ sys/net/rpl/rpl_dodag.c | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/sys/net/rpl/rpl.c b/sys/net/rpl/rpl.c index d86ffb0fad..9e8df1a3f1 100644 --- a/sys/net/rpl/rpl.c +++ b/sys/net/rpl/rpl.c @@ -286,9 +286,13 @@ void send_DIO(ipv6_addr_t *destination) rpl_send_dio_buf = get_rpl_send_dio_buf(); memset(rpl_send_dio_buf, 0, sizeof(*rpl_send_dio_buf)); + + DEBUG("Sending DIO with "); rpl_send_dio_buf->rpl_instanceid = mydodag->instance->id; + DEBUG("instance %02X ", rpl_send_dio_buf->rpl_instanceid); rpl_send_dio_buf->version_number = mydodag->version; rpl_send_dio_buf->rank = mydodag->my_rank; + DEBUG("rank %04X\n", rpl_send_dio_buf->rank); rpl_send_dio_buf->g_mop_prf = (mydodag->grounded << RPL_GROUNDED_SHIFT) | (mydodag->mop << RPL_MOP_SHIFT) | mydodag->prf; rpl_send_dio_buf->dtsn = mydodag->dtsn; rpl_send_dio_buf->flags = 0; @@ -506,9 +510,12 @@ void rpl_process(void) void recv_rpl_dio(void) { + DEBUG("Received DIO with "); ipv6_buf = get_rpl_ipv6_buf(); rpl_dio_buf = get_rpl_dio_buf(); + DEBUG("instance %04X ", rpl_dio_buf->rpl_instanceid); + DEBUG("rank %04X\n", rpl_dio_buf->rank); int len = DIO_BASE_LEN; rpl_instance_t *dio_inst = rpl_get_instance(rpl_dio_buf->rpl_instanceid); @@ -517,12 +524,14 @@ void recv_rpl_dio(void) if (dio_inst == NULL) { if (my_inst != NULL) { /* already part of a DODAG -> impossible to join other instance */ + DEBUG("Not joining another DODAG!\n"); return; } dio_inst = rpl_new_instance(rpl_dio_buf->rpl_instanceid); if (dio_inst == NULL) { + DEBUG("Failed to create a new RPL instance!\n"); return; } } @@ -555,6 +564,7 @@ void recv_rpl_dio(void) * icmpv6 header, so only ICMPV6_HDR_LEN remains to be * subtracted. */ while (len < (ipv6_buf->length - ICMPV6_HDR_LEN)) { + DEBUG("parsing DIO options\n"); rpl_opt_buf = get_rpl_opt_buf(len); switch (rpl_opt_buf->type) { @@ -583,6 +593,7 @@ void recv_rpl_dio(void) has_dodag_conf_opt = 1; if (rpl_opt_buf->length != RPL_OPT_DODAG_CONF_LEN) { + DEBUG("DODAG configuration is malformed.\n"); /* error malformed */ return; } diff --git a/sys/net/rpl/rpl_dodag.c b/sys/net/rpl/rpl_dodag.c index 00199cacbe..edb4b02071 100644 --- a/sys/net/rpl/rpl_dodag.c +++ b/sys/net/rpl/rpl_dodag.c @@ -24,6 +24,9 @@ #include "rpl.h" #define ENABLE_DEBUG (0) +#if ENABLE_DEBUG +char addr_str[IPV6_MAX_ADDR_STR_LEN]; +#endif #include "debug.h" rpl_instance_t instances[RPL_MAX_INSTANCES]; @@ -324,6 +327,14 @@ void rpl_join_dodag(rpl_dodag_t *dodag, ipv6_addr_t *parent, uint16_t parent_ran my_dodag->my_rank = dodag->of->calc_rank(preferred_parent, dodag->my_rank); my_dodag->dao_seq = RPL_COUNTER_INIT; my_dodag->min_rank = my_dodag->my_rank; + DEBUG("Joint DODAG:\n"); + DEBUG("\tMOP:\t%02X\n", my_dodag->mop); + DEBUG("\tminhoprankincrease :\t%04X\n", my_dodag->minhoprankincrease); + DEBUG("\tdefault_lifetime:\t%02X\n", my_dodag->default_lifetime); + DEBUG("\tgrounded:\t%02X\n", my_dodag->grounded); + DEBUG("\tmy_preferred_parent:\t%s\n", ipv6_addr_to_str(addr_str, &my_dodag->my_preferred_parent->addr)); + DEBUG("\tmy_preferred_parent rank\t%02X\n", my_dodag->my_preferred_parent->rank); + DEBUG("\tmy_preferred_parent lifetime\t%04X\n", my_dodag->my_preferred_parent->lifetime); start_trickle(my_dodag->dio_min, my_dodag->dio_interval_doubling, my_dodag->dio_redundancy); delay_dao();