gnrc_ipv6: get l2addr from NC if no ND present

This commit is contained in:
Martine Lenders 2015-11-17 10:27:35 +01:00 committed by Martine Lenders
parent 4ad2689144
commit c7ebcbbda2

View File

@ -537,6 +537,15 @@ static inline kernel_pid_t _next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_len
#endif #endif
#if defined(MODULE_GNRC_NDP_NODE) #if defined(MODULE_GNRC_NDP_NODE)
found_iface = gnrc_ndp_node_next_hop_l2addr(l2addr, l2addr_len, iface, dst, pkt); 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) #elif !defined(MODULE_GNRC_SIXLOWPAN_ND)
found_iface = KERNEL_PID_UNDEF; found_iface = KERNEL_PID_UNDEF;
(void)l2addr; (void)l2addr;