gnrc_ipv6_nib: gnrc_netif_iid_to_addr() instead of _reverse_iid()
This commit is contained in:
parent
a44f7f7b38
commit
bc1b490086
@ -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);
|
(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,
|
bool _resolve_addr_from_ipv6(const ipv6_addr_t *dst, gnrc_netif_t *netif,
|
||||||
gnrc_ipv6_nib_nc_t *nce)
|
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) {
|
if (res) {
|
||||||
uint8_t l2addr_len;
|
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 ",
|
DEBUG("nib: resolve address %s%%%u by reverse translating to ",
|
||||||
ipv6_addr_to_str(addr_str, dst, sizeof(addr_str)),
|
ipv6_addr_to_str(addr_str, dst, sizeof(addr_str)),
|
||||||
(unsigned)netif->pid);
|
(unsigned)netif->pid);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user