diff --git a/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c b/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c index d0c4bfb39e4c4efdb2b03cdc8635f0fd2ae8006a..0ebb3b560ffcc6b140f5251829177dad5d27e7e9 100644 --- a/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c +++ b/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.c @@ -36,47 +36,6 @@ static inline bool _is_iface_eui64(gnrc_netif_t *netif, const eui64_t *eui64) (memcmp(&netif->l2addr, eui64, netif->l2addr_len) == 0); } -static inline uint8_t _reverse_iid(const ipv6_addr_t *dst, - const gnrc_netif_t *netif, uint8_t *l2addr) -{ - switch (netif->device_type) { -#if defined(MODULE_NETDEV_ETH) || defined(MODULE_ESP_NOW) - case NETDEV_TYPE_ETHERNET: - case NETDEV_TYPE_ESP_NOW: - l2addr[0] = dst->u8[8] ^ 0x02; - l2addr[1] = dst->u8[9]; - l2addr[2] = dst->u8[10]; - l2addr[3] = dst->u8[13]; - l2addr[4] = dst->u8[14]; - l2addr[5] = dst->u8[15]; - return ETHERNET_ADDR_LEN; -#endif /* defined(MODULE_NETDEV_ETH) || defined(MODULE_ESP_NOW) */ -#if defined(MODULE_NETDEV_IEEE802154) || defined(MODULE_XBEE) - case NETDEV_TYPE_IEEE802154: - /* assume address was based on EUI-64 - * (see https://tools.ietf.org/html/rfc6775#section-5.2) */ - memcpy(l2addr, &dst->u64[1], sizeof(dst->u64[1])); - l2addr[0] ^= 0x02; - return sizeof(dst->u64[1]); -#endif /* defined(MODULE_NETDEV_IEEE802154) || defined(MODULE_XBEE) */ -#ifdef MODULE_NRFMIN - case NETDEV_TYPE_NRFMIN: - l2addr[0] = dst->u8[14]; - l2addr[1] = dst->u8[15]; - return sizeof(uint16_t); -#endif /* MODULE_NETDEV_IEEE802154 */ -#ifdef MODULE_CC110X - case NETDEV_TYPE_CC110X: - l2addr[0] = dst->u8[15]; - return sizeof(uint8_t); -#endif /* MODULE_CC110X */ - default: - (void)dst; - (void)l2addr; - return 0; - } -} - bool _resolve_addr_from_ipv6(const ipv6_addr_t *dst, gnrc_netif_t *netif, gnrc_ipv6_nib_nc_t *nce) { @@ -86,7 +45,9 @@ bool _resolve_addr_from_ipv6(const ipv6_addr_t *dst, gnrc_netif_t *netif, if (res) { uint8_t l2addr_len; - if ((l2addr_len = _reverse_iid(dst, netif, nce->l2addr)) > 0) { + if ((l2addr_len = gnrc_netif_ipv6_iid_to_addr(netif, + (eui64_t *)&dst->u64[1], + nce->l2addr)) > 0) { DEBUG("nib: resolve address %s%%%u by reverse translating to ", ipv6_addr_to_str(addr_str, dst, sizeof(addr_str)), (unsigned)netif->pid);