diff --git a/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c b/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c index 4297cfdd40..5279016474 100644 --- a/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c +++ b/sys/net/gnrc/network_layer/ipv6/gnrc_ipv6.c @@ -537,6 +537,15 @@ static inline kernel_pid_t _next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_len #endif #if defined(MODULE_GNRC_NDP_NODE) found_iface = gnrc_ndp_node_next_hop_l2addr(l2addr, l2addr_len, iface, dst, pkt); +#elif !defined(MODULE_GNRC_SIXLOWPAN_ND) && defined(MODULE_GNRC_IPV6_NC) + (void)pkt; + gnrc_ipv6_nc_t *nc = gnrc_ipv6_nc_get(iface, dst); + if ((nc == NULL) || !gnrc_ipv6_nc_is_reachable(nc)) { + return KERNEL_PID_UNDEF; + } + found_iface = nc->iface; + *l2addr_len = nc->l2_addr_len; + memcpy(l2addr, nc->l2_addr, nc->l2_addr_len); #elif !defined(MODULE_GNRC_SIXLOWPAN_ND) found_iface = KERNEL_PID_UNDEF; (void)l2addr;