From 0465b83b7ce717d511f1ed13a14ef10192c17a15 Mon Sep 17 00:00:00 2001 From: Martine Lenders Date: Tue, 2 Jun 2015 22:26:53 +0200 Subject: [PATCH] ng_ndp: cache determined next-hop in FIB --- sys/net/network_layer/ng_ndp/ng_ndp.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sys/net/network_layer/ng_ndp/ng_ndp.c b/sys/net/network_layer/ng_ndp/ng_ndp.c index 655c9a49b435..6372db23c39b 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) {