diff --git a/sys/net/network_layer/ng_ndp/ng_ndp.c b/sys/net/network_layer/ng_ndp/ng_ndp.c index 0b0cb8fb04..655c9a49b4 100644 --- a/sys/net/network_layer/ng_ndp/ng_ndp.c +++ b/sys/net/network_layer/ng_ndp/ng_ndp.c @@ -415,13 +415,16 @@ kernel_pid_t ng_ndp_next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_len, #ifdef MODULE_FIB size_t next_hop_size; uint32_t next_hop_flags = 0; + ng_ipv6_addr_t next_hop_actual; /* FIB copies address into this variable */ + if ((next_hop_ip == NULL) && - ((fib_get_next_hop(&iface, (uint8_t *)next_hop_ip, &next_hop_size, + (fib_get_next_hop(&iface, next_hop_actual.u8, &next_hop_size, &next_hop_flags, (uint8_t *)dst, - sizeof(ng_ipv6_addr_t), 0) < 0) || - (next_hop_size != sizeof(ng_ipv6_addr_t)))) { - next_hop_ip = NULL; + sizeof(ng_ipv6_addr_t), 0) >= 0) && + (next_hop_size == sizeof(ng_ipv6_addr_t))) { + next_hop_ip = &next_hop_actual; } + #endif if ((next_hop_ip == NULL)) { /* no route to host */