Shell: new command to show list of IPv6 nbrs
This commit is contained in:
parent
48c809a320
commit
2847a05e0a
@ -72,6 +72,25 @@ static struct process *curr_ping_process;
|
|||||||
static uint8_t curr_ping_ttl;
|
static uint8_t curr_ping_ttl;
|
||||||
static uint16_t curr_ping_datalen;
|
static uint16_t curr_ping_datalen;
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static const char *
|
||||||
|
ds6_nbr_state_to_str(uint8_t state)
|
||||||
|
{
|
||||||
|
switch(state) {
|
||||||
|
case NBR_INCOMPLETE:
|
||||||
|
return "Incomplete";
|
||||||
|
case NBR_REACHABLE:
|
||||||
|
return "Reachable";
|
||||||
|
case NBR_STALE:
|
||||||
|
return "Stale";
|
||||||
|
case NBR_DELAY:
|
||||||
|
return "Delay";
|
||||||
|
case NBR_PROBE:
|
||||||
|
return "Probe";
|
||||||
|
default:
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static const char *
|
static const char *
|
||||||
rpl_state_to_str(enum rpl_dag_state state)
|
rpl_state_to_str(enum rpl_dag_state state)
|
||||||
@ -331,6 +350,35 @@ PT_THREAD(cmd_ipaddr(struct pt *pt, shell_output_func output, char *args))
|
|||||||
|
|
||||||
PT_END(pt);
|
PT_END(pt);
|
||||||
|
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static
|
||||||
|
PT_THREAD(cmd_ip_neighbors(struct pt *pt, shell_output_func output, char *args))
|
||||||
|
{
|
||||||
|
uip_ds6_nbr_t *nbr;
|
||||||
|
|
||||||
|
PT_BEGIN(pt);
|
||||||
|
|
||||||
|
nbr = uip_ds6_nbr_head();
|
||||||
|
if(nbr == NULL) {
|
||||||
|
SHELL_OUTPUT(output, "Node IPv6 neighbors: none\n");
|
||||||
|
PT_EXIT(pt);
|
||||||
|
}
|
||||||
|
|
||||||
|
SHELL_OUTPUT(output, "Node IPv6 neighbors:\n");
|
||||||
|
while(nbr != NULL) {
|
||||||
|
SHELL_OUTPUT(output, "-- ");
|
||||||
|
shell_output_6addr(output, uip_ds6_nbr_get_ipaddr(nbr));
|
||||||
|
SHELL_OUTPUT(output, " <-> ");
|
||||||
|
shell_output_lladdr(output, (linkaddr_t *)uip_ds6_nbr_get_ll(nbr));
|
||||||
|
SHELL_OUTPUT(output, ", router %u, state %s ",
|
||||||
|
nbr->isrouter, ds6_nbr_state_to_str(nbr->state));
|
||||||
|
SHELL_OUTPUT(output, "\n");
|
||||||
|
nbr = uip_ds6_nbr_next(nbr);
|
||||||
|
}
|
||||||
|
|
||||||
|
PT_END(pt);
|
||||||
|
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static
|
static
|
||||||
@ -535,7 +583,8 @@ shell_commands_init(void)
|
|||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
struct shell_command_t shell_commands[] = {
|
struct shell_command_t shell_commands[] = {
|
||||||
{ "help", cmd_help, "'> help': Shows this help" },
|
{ "help", cmd_help, "'> help': Shows this help" },
|
||||||
{ "ipaddr", cmd_ipaddr, "'> ipaddr': Shows all IPv6 addresses" },
|
{ "ip-addr", cmd_ipaddr, "'> ip-addr': Shows all IPv6 addresses" },
|
||||||
|
{ "ip-nbr", cmd_ip_neighbors, "'> ip-nbr': Shows all IPv6 neighbors" },
|
||||||
{ "log", cmd_log, "'> log level': Sets log level (0--4). Level 4 also enables TSCH per-slot logging." },
|
{ "log", cmd_log, "'> log level': Sets log level (0--4). Level 4 also enables TSCH per-slot logging." },
|
||||||
{ "ping", cmd_ping, "'> ping addr': Pings the IPv6 address 'addr'" },
|
{ "ping", cmd_ping, "'> ping addr': Pings the IPv6 address 'addr'" },
|
||||||
{ "rpl-set-root", cmd_rpl_set_root, "'> rpl-set-root 0/1 [prefix]': Sets node as root (on) or not (off). A /64 prefix can be optionally specified." },
|
{ "rpl-set-root", cmd_rpl_set_root, "'> rpl-set-root 0/1 [prefix]': Sets node as root (on) or not (off). A /64 prefix can be optionally specified." },
|
||||||
|
@ -161,6 +161,18 @@ uip_ds6_nbr_num(void)
|
|||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
uip_ds6_nbr_t *
|
uip_ds6_nbr_t *
|
||||||
|
uip_ds6_nbr_head(void)
|
||||||
|
{
|
||||||
|
return nbr_table_head(ds6_neighbors);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
uip_ds6_nbr_t *
|
||||||
|
uip_ds6_nbr_next(uip_ds6_nbr_t *nbr)
|
||||||
|
{
|
||||||
|
return nbr_table_next(ds6_neighbors, nbr);
|
||||||
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
uip_ds6_nbr_t *
|
||||||
uip_ds6_nbr_lookup(const uip_ipaddr_t *ipaddr)
|
uip_ds6_nbr_lookup(const uip_ipaddr_t *ipaddr)
|
||||||
{
|
{
|
||||||
uip_ds6_nbr_t *nbr = nbr_table_head(ds6_neighbors);
|
uip_ds6_nbr_t *nbr = nbr_table_head(ds6_neighbors);
|
||||||
|
@ -97,6 +97,8 @@ const uip_lladdr_t *uip_ds6_nbr_lladdr_from_ipaddr(const uip_ipaddr_t *ipaddr);
|
|||||||
void uip_ds6_link_callback(int status, int numtx);
|
void uip_ds6_link_callback(int status, int numtx);
|
||||||
void uip_ds6_neighbor_periodic(void);
|
void uip_ds6_neighbor_periodic(void);
|
||||||
int uip_ds6_nbr_num(void);
|
int uip_ds6_nbr_num(void);
|
||||||
|
uip_ds6_nbr_t *uip_ds6_nbr_head(void);
|
||||||
|
uip_ds6_nbr_t *uip_ds6_nbr_next(uip_ds6_nbr_t *nbr);
|
||||||
|
|
||||||
#if UIP_ND6_SEND_NS
|
#if UIP_ND6_SEND_NS
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user