gnrc_ipv6_nib: use gnrc_netif_get_eui64() for ARO build and check
This commit is contained in:
parent
0fa8419c4a
commit
d680aeae07
@ -29,11 +29,12 @@ static char addr_str[IPV6_ADDR_MAX_STR_LEN];
|
||||
|
||||
extern void _handle_search_rtr(gnrc_netif_t *netif);
|
||||
|
||||
static inline bool _is_iface_eui64(gnrc_netif_t *netif, const eui64_t *eui64)
|
||||
static bool _is_iface_eui64(gnrc_netif_t *netif, const eui64_t *eui64)
|
||||
{
|
||||
/* TODO: adapt for short addresses */
|
||||
return (netif->l2addr_len == sizeof(eui64_t)) &&
|
||||
(memcmp(&netif->l2addr, eui64, netif->l2addr_len) == 0);
|
||||
eui64_t iface_eui64;
|
||||
int res = gnrc_netif_get_eui64(netif, &iface_eui64);
|
||||
return (res == sizeof(eui64_t)) &&
|
||||
(iface_eui64.uint64.u64 == eui64->uint64.u64);
|
||||
}
|
||||
|
||||
bool _resolve_addr_from_ipv6(const ipv6_addr_t *dst, gnrc_netif_t *netif,
|
||||
|
||||
@ -43,16 +43,15 @@ void _snd_ns(const ipv6_addr_t *tgt, gnrc_netif_t *netif,
|
||||
if ((src != NULL) && gnrc_netif_is_6ln(netif) &&
|
||||
(_nib_onl_get_if(dr->next_hop) == (unsigned)netif->pid) &&
|
||||
ipv6_addr_equal(&dr->next_hop->ipv6, dst)) {
|
||||
netdev_t *dev = netif->dev;
|
||||
uint8_t l2src[GNRC_NETIF_L2ADDR_MAXLEN];
|
||||
size_t l2src_len = (uint16_t)dev->driver->get(dev, NETOPT_ADDRESS_LONG,
|
||||
l2src, sizeof(l2src));
|
||||
if (l2src_len != sizeof(eui64_t)) {
|
||||
eui64_t eui64;
|
||||
int res = gnrc_netif_get_eui64(netif, &eui64);
|
||||
|
||||
if (res != sizeof(eui64_t)) {
|
||||
DEBUG("nib: can't get EUI-64 of the interface for ARO\n");
|
||||
return;
|
||||
}
|
||||
ext_opt = gnrc_sixlowpan_nd_opt_ar_build(0, GNRC_SIXLOWPAN_ND_AR_LTIME,
|
||||
(eui64_t *)l2src, NULL);
|
||||
&eui64, NULL);
|
||||
if (ext_opt == NULL) {
|
||||
DEBUG("nib: error allocating ARO.\n");
|
||||
return;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user