diff --git a/sys/net/network_layer/ng_ndp/ng_ndp.c b/sys/net/network_layer/ng_ndp/ng_ndp.c index 655c9a49b435dce8076efaf222308e0b5779a8d2..6372db23c39b3579f1abb347c38c809c090d7591 100644 --- a/sys/net/network_layer/ng_ndp/ng_ndp.c +++ b/sys/net/network_layer/ng_ndp/ng_ndp.c @@ -330,6 +330,9 @@ void ng_ndp_retrans_nbr_sol(ng_ipv6_nc_t *nc_entry) ng_ipv6_addr_to_str(addr_str, &nc_entry->ipv6_addr, sizeof(addr_str)), nc_entry->iface); +#ifdef MODULE_FIB + fib_remove_entry((uint8_t *)&(nc_entry->ipv6_addr), sizeof(ng_ipv6_addr_t)); +#endif ng_ipv6_nc_remove(nc_entry->iface, &nc_entry->ipv6_addr); } } @@ -441,11 +444,25 @@ kernel_pid_t ng_ndp_next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_len, (ng_ipv6_netif_addr_get(prefix)->flags & NG_IPV6_NETIF_ADDR_FLAGS_NDP_ON_LINK)) { next_hop_ip = dst; +#ifdef MODULE_FIB + /* We don't care if FIB is full, this is just for efficiency + * for later sends */ + fib_add_entry(iface, (uint8_t *)dst, sizeof(ng_ipv6_addr_t), 0, + (uint8_t *)next_hop_ip, sizeof(ng_ipv6_addr_t), 0, + FIB_LIFETIME_NO_EXPIRE); +#endif } } if (next_hop_ip == NULL) { next_hop_ip = _default_router(); +#ifdef MODULE_FIB + /* We don't care if FIB is full, this is just for efficiency for later + * sends */ + fib_add_entry(iface, (uint8_t *)dst, sizeof(ng_ipv6_addr_t), 0, + (uint8_t *)next_hop_ip, sizeof(ng_ipv6_addr_t), 0, + FIB_LIFETIME_NO_EXPIRE); +#endif } if (next_hop_ip != NULL) {