Skip to content
Snippets Groups Projects
Commit 0046d8ff authored by Martine Lenders's avatar Martine Lenders
Browse files

Merge pull request #3572 from cgundogan/pr/sc_ipv6_nc/iface_optional_and_reset

sc_ipv6_nc: make iface optional and add reset function
parents 16dcac24 c7f9bce6
No related branches found
No related tags found
No related merge requests found
...@@ -168,14 +168,46 @@ static int _ipv6_nc_del(char *ipv6_addr_str) ...@@ -168,14 +168,46 @@ 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];
size_t ifnum = ng_netif_get(ifs);
if (ifnum > 1) {
puts("error: multiple interfaces exist.");
return 1;
}
return _ipv6_nc_add(ifs[0], argv[2], argv[3]);
}
else if ((argc > 4) && (strcmp("add", argv[1]) == 0)) {
kernel_pid_t iface = (kernel_pid_t)atoi(argv[2]); kernel_pid_t iface = (kernel_pid_t)atoi(argv[2]);
if (!_is_iface(iface)) { if (!_is_iface(iface)) {
...@@ -189,11 +221,17 @@ int _ipv6_nc_manage(int argc, char **argv) ...@@ -189,11 +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"
" or: %s del <ipv6_addr>\n", argv[0], argv[0], argv[0]); " * <iface pid> is optional if only one interface exists.\n"
" or: %s del <ipv6_addr>\n"
" or: %s reset\n", argv[0], argv[0], argv[0], argv[0]);
return 1; return 1;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment