Skip to content
Snippets Groups Projects
Commit 74254f5c authored by Lotte Steenbrink's avatar Lotte Steenbrink
Browse files

sixlowpan_netif: don't add duplicates

prevent ng_sixlowpan_netif_add() from adding duplicates as described in https://github.com/RIOT-OS/RIOT/issues/2965
parent 1d74a730
No related branches found
No related tags found
No related merge requests found
...@@ -29,17 +29,27 @@ void ng_sixlowpan_netif_init(void) ...@@ -29,17 +29,27 @@ void ng_sixlowpan_netif_init(void)
void ng_sixlowpan_netif_add(kernel_pid_t pid, uint16_t max_frag_size) void ng_sixlowpan_netif_add(kernel_pid_t pid, uint16_t max_frag_size)
{ {
ng_sixlowpan_netif_t *free_entry = NULL;
for (int i = 0; i < NG_NETIF_NUMOF; i++) { for (int i = 0; i < NG_NETIF_NUMOF; i++) {
if (sixlow_ifs[i].pid == pid) { if (sixlow_ifs[i].pid == pid) {
return; return;
} }
if (sixlow_ifs[i].pid == KERNEL_PID_UNDEF) { if ((sixlow_ifs[i].pid == KERNEL_PID_UNDEF) && !free_entry) {
sixlow_ifs[i].pid = pid; /* found the first free entry */
sixlow_ifs[i].max_frag_size = max_frag_size; free_entry = &sixlow_ifs[i];
return;
} }
} }
if (!free_entry) {
DEBUG("ng_sixlowpan_netif_add: couldn't add interface with PID %d: No space left.\n", pid);
return;
}
free_entry->pid = pid;
free_entry->max_frag_size = max_frag_size;
return;
} }
void ng_sixlowpan_netif_remove(kernel_pid_t pid) void ng_sixlowpan_netif_remove(kernel_pid_t pid)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment