diff --git a/sys/shell/commands/sc_netif.c b/sys/shell/commands/sc_netif.c index adbb72bc6729..9dfefa902da8 100644 --- a/sys/shell/commands/sc_netif.c +++ b/sys/shell/commands/sc_netif.c @@ -103,7 +103,7 @@ static void _hl_usage(char *cmd_name) static void _flag_usage(char *cmd_name) { - printf("usage: %s [-]{promisc|autoack|csma|autocca|preload|iphc}\n", cmd_name); + printf("usage: %s [-]{promisc|autoack|csma|autocca|preload|iphc|rtr_adv}\n", cmd_name); } static void _add_usage(char *cmd_name) @@ -315,10 +315,16 @@ static void _netif_list(kernel_pid_t dev) #ifdef MODULE_GNRC_IPV6_NETIF if (entry != NULL) { printf("MTU:%" PRIu16 " ", entry->mtu); - printf("HL:%" PRIu8 " ", entry->cur_hl); + printf("HL:%" PRIu8 " ", entry->cur_hl); if (entry->flags & GNRC_IPV6_NETIF_FLAGS_SIXLOWPAN) { printf("6LO "); } + if (entry->flags & GNRC_IPV6_NETIF_FLAGS_ROUTER) { + printf("RTR "); + } + if (entry->flags & GNRC_IPV6_NETIF_FLAGS_RTR_ADV) { + printf("RTR_ADV "); + } linebreak = true; } @@ -633,6 +639,30 @@ static int _netif_flag(char *cmd, kernel_pid_t dev, char *flag) return 1; #endif } + else if (strcmp(flag, "rtr_adv") == 0) { +#if defined(MODULE_GNRC_NDP_ROUTER) || defined(MODULE_GNRC_SIXLOWPAN_ND_ROUTER) + gnrc_ipv6_netif_t *entry = gnrc_ipv6_netif_get(dev); + + if (entry == NULL) { + puts("error: unable to (un)set router advertisement flag."); + return 1; + } + + if (set) { + gnrc_ipv6_netif_set_rtr_adv(entry, true); + printf("success: enable router advertisements on interface %" PRIkernel_pid "\n", dev); + } + else { + gnrc_ipv6_netif_set_rtr_adv(entry, false); + printf("success: disable router advertisements on interface %" PRIkernel_pid "\n", + dev); + } + return 0; +#else + puts("error: unable to (un)set router advertisement flag."); + return 1; +#endif + } _flag_usage(cmd); return 1;