1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-25 14:33:52 +01:00

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

sc_ipv6_nc: make iface optional and add reset function
This commit is contained in:
Martine Lenders 2015-08-07 17:37:58 +02:00
commit 0046d8fffb

View File

@ -168,14 +168,46 @@ static int _ipv6_nc_del(char *ipv6_addr_str)
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)
{
if ((argc == 1) || (strcmp("list", argv[1]) == 0)) {
return _ipv6_nc_list();
}
if (argc > 2) {
if ((argc > 4) && (strcmp("add", argv[1]) == 0)) {
if (argc > 1) {
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]);
if (!_is_iface(iface)) {
@ -189,11 +221,17 @@ int _ipv6_nc_manage(int argc, char **argv)
if (strcmp("del", argv[1]) == 0) {
return _ipv6_nc_del(argv[2]);
}
if (strcmp("reset", argv[1]) == 0) {
return _ipv6_nc_reset();
}
}
printf("usage: %s [list]\n"
" or: %s add <iface pid> <ipv6_addr> <l2_addr>\n"
" or: %s del <ipv6_addr>\n", argv[0], argv[0], argv[0]);
" or: %s add [<iface pid>] <ipv6_addr> <l2_addr>\n"
" * <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;
}