sc_fib.c: add shell command to flush the fib
This commit is contained in:
parent
2991addea8
commit
60f917b3d1
@ -49,6 +49,11 @@ static unsigned char tmp_ipv6_nxt[IN6ADDRSZ]; /**< buffer for ipv6 address conve
|
|||||||
static void _fib_usage(int info)
|
static void _fib_usage(int info)
|
||||||
{
|
{
|
||||||
switch (info) {
|
switch (info) {
|
||||||
|
case 0: {
|
||||||
|
puts("\nsee <fibroute [add|del]> for more information\n"
|
||||||
|
"<fibroute flush [interface]> removes all entries [associated with interface]\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 1: {
|
case 1: {
|
||||||
puts("\nbrief: adds a new entry to the FIB.\nusage: "
|
puts("\nbrief: adds a new entry to the FIB.\nusage: "
|
||||||
INFO1_TXT "\n" INFO3_TXT);
|
INFO1_TXT "\n" INFO3_TXT);
|
||||||
@ -131,21 +136,37 @@ int _fib_route_handler(int argc, char **argv)
|
|||||||
else if ((strcmp("del", argv[1]) == 0)) {
|
else if ((strcmp("del", argv[1]) == 0)) {
|
||||||
_fib_usage(3);
|
_fib_usage(3);
|
||||||
}
|
}
|
||||||
|
else if ((strcmp("flush", argv[1]) == 0)) {
|
||||||
|
fib_flush(&gnrc_ipv6_fib_table, KERNEL_PID_UNDEF);
|
||||||
|
puts("successfully flushed all entries");
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
puts("\nunrecognized parameter1.\nPlease enter fibroute [add|del] for more information.");
|
_fib_usage(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 2 && !((strcmp("add", argv[1]) == 0) || (strcmp("del", argv[1]) == 0))) {
|
if (argc > 2 && !((strcmp("add", argv[1]) == 0) ||
|
||||||
|
(strcmp("del", argv[1]) == 0) ||
|
||||||
|
(strcmp("flush", argv[1]) == 0))) {
|
||||||
puts("\nunrecognized parameter2.\nPlease enter fibroute [add|del] for more information.");
|
puts("\nunrecognized parameter2.\nPlease enter fibroute [add|del] for more information.");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* e.g. fibroute del <destination> */
|
/* e.g. fibroute del <destination> */
|
||||||
if (argc == 3) {
|
if (argc == 3) {
|
||||||
if (inet_pton(AF_INET6, argv[2], tmp_ipv6_dst)) {
|
if ((strcmp("flush", argv[1]) == 0)) {
|
||||||
|
kernel_pid_t iface = atoi(argv[2]);
|
||||||
|
if (gnrc_netif_exist(iface)) {
|
||||||
|
fib_flush(&gnrc_ipv6_fib_table, iface);
|
||||||
|
printf("successfully flushed all entries for interface %" PRIu16"\n", iface);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf("interface %" PRIu16" does not exist\n", iface);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (inet_pton(AF_INET6, argv[2], tmp_ipv6_dst)) {
|
||||||
fib_remove_entry(&gnrc_ipv6_fib_table, tmp_ipv6_dst, IN6ADDRSZ);
|
fib_remove_entry(&gnrc_ipv6_fib_table, tmp_ipv6_dst, IN6ADDRSZ);
|
||||||
}
|
}
|
||||||
else if (inet_pton(AF_INET, argv[2], tmp_ipv4_dst)) {
|
else if (inet_pton(AF_INET, argv[2], tmp_ipv4_dst)) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user