This PR removes code depending on a routing table with an entries size > 0. Currently, all those functions and symbols are compiled into the binary, even when there is no effective space in the routing table (as it is the case for normal nodes in non-storing mode)
58 lines
1.7 KiB
C
58 lines
1.7 KiB
C
/*
|
|
* Copyright (C) 2014 Oliver Hahm <oliver.hahm@inria.fr>
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser
|
|
* General Public License v2.1. See the file LICENSE in the top level
|
|
* directory for more details.
|
|
*/
|
|
|
|
/**
|
|
* @ingroup shell_commands
|
|
* @{
|
|
* @file sc_rpl.c
|
|
* @brief provides shell commands to manage and query RPL
|
|
* @author Oliver Hahm <oliver.hahm@inria.fr>
|
|
* @}
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
#include "rpl.h"
|
|
|
|
#if RPL_MAX_ROUTING_ENTRIES != 0
|
|
static char addr_str[IPV6_MAX_ADDR_STR_LEN];
|
|
#endif
|
|
void _rpl_route_handler(int argc, char **argv)
|
|
{
|
|
(void) argc;
|
|
(void) argv;
|
|
|
|
#if RPL_MAX_ROUTING_ENTRIES != 0
|
|
rpl_routing_entry_t *rtable;
|
|
rtable = rpl_get_routing_table();
|
|
unsigned c = 0;
|
|
puts("--------------------------------------------------------------------");
|
|
puts("Routing table");
|
|
printf(" %-3s %-18s %-18s %s\n", "#", "target", "next hop", "lifetime");
|
|
puts("--------------------------------------------------------------------");
|
|
|
|
for (int i = 0; i < rpl_max_routing_entries; i++) {
|
|
if (rtable[i].used) {
|
|
c++;
|
|
printf(" %03d: %-18s ", i, ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN,
|
|
(&rtable[i].address)));
|
|
printf("%-18s ", ipv6_addr_to_str(addr_str, IPV6_MAX_ADDR_STR_LEN,
|
|
(&rtable[i].next_hop)));
|
|
printf("%d\n", rtable[i].lifetime);
|
|
|
|
}
|
|
}
|
|
puts("--------------------------------------------------------------------");
|
|
printf(" %u routing table entries\n", c);
|
|
#else
|
|
puts("No routing table available");
|
|
#endif
|
|
puts("$");
|
|
}
|