sc_ipv6_nc: add ncache reset functionality
This commit is contained in:
parent
fa0b1ba441
commit
c7f9bce644
@ -168,13 +168,35 @@ static int _ipv6_nc_del(char *ipv6_addr_str)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int _ipv6_nc_reset(void)
|
||||||
|
{
|
||||||
|
ng_ipv6_nc_t *tmp = NULL;
|
||||||
|
|
||||||
|
for (ng_ipv6_nc_t *entry = ng_ipv6_nc_get_next(NULL);
|
||||||
|
entry != NULL;
|
||||||
|
tmp = entry, entry = ng_ipv6_nc_get_next(entry)) {
|
||||||
|
if (tmp) {
|
||||||
|
ng_ipv6_nc_remove(tmp->iface, &tmp->ipv6_addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove last entry */
|
||||||
|
if (tmp) {
|
||||||
|
ng_ipv6_nc_remove(tmp->iface, &tmp->ipv6_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("success: reset neighbor cache\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int _ipv6_nc_manage(int argc, char **argv)
|
int _ipv6_nc_manage(int argc, char **argv)
|
||||||
{
|
{
|
||||||
if ((argc == 1) || (strcmp("list", argv[1]) == 0)) {
|
if ((argc == 1) || (strcmp("list", argv[1]) == 0)) {
|
||||||
return _ipv6_nc_list();
|
return _ipv6_nc_list();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 2) {
|
if (argc > 1) {
|
||||||
if ((argc == 4) && (strcmp("add", argv[1]) == 0)) {
|
if ((argc == 4) && (strcmp("add", argv[1]) == 0)) {
|
||||||
kernel_pid_t ifs[NG_NETIF_NUMOF];
|
kernel_pid_t ifs[NG_NETIF_NUMOF];
|
||||||
size_t ifnum = ng_netif_get(ifs);
|
size_t ifnum = ng_netif_get(ifs);
|
||||||
@ -199,12 +221,17 @@ int _ipv6_nc_manage(int argc, char **argv)
|
|||||||
if (strcmp("del", argv[1]) == 0) {
|
if (strcmp("del", argv[1]) == 0) {
|
||||||
return _ipv6_nc_del(argv[2]);
|
return _ipv6_nc_del(argv[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp("reset", argv[1]) == 0) {
|
||||||
|
return _ipv6_nc_reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("usage: %s [list]\n"
|
printf("usage: %s [list]\n"
|
||||||
" or: %s add [<iface pid>] <ipv6_addr> <l2_addr>\n"
|
" or: %s add [<iface pid>] <ipv6_addr> <l2_addr>\n"
|
||||||
" * <iface pid> is optional if only one interface exists.\n"
|
" * <iface pid> is optional if only one interface exists.\n"
|
||||||
" or: %s del <ipv6_addr>\n", argv[0], argv[0], argv[0]);
|
" or: %s del <ipv6_addr>\n"
|
||||||
|
" or: %s reset\n", argv[0], argv[0], argv[0], argv[0]);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user