net_if: proper u/l-bit inversion for short addresses
This commit is contained in:
parent
2aa031e7c7
commit
d6242360da
@ -433,21 +433,8 @@ int net_if_get_eui64(net_if_eui64_t *eui64, int if_id, int force_generation)
|
|||||||
* the local/universal bit to 1. */
|
* the local/universal bit to 1. */
|
||||||
eui64->uint32[0] = HTONL(0x020000ff);
|
eui64->uint32[0] = HTONL(0x020000ff);
|
||||||
eui64->uint16[2] = HTONS(0xfe00);
|
eui64->uint16[2] = HTONS(0xfe00);
|
||||||
|
|
||||||
if (sizeof(hwaddr) == 2) {
|
|
||||||
eui64->uint16[3] = HTONS(hwaddr);
|
eui64->uint16[3] = HTONS(hwaddr);
|
||||||
}
|
}
|
||||||
else if (sizeof(hwaddr) == 1) {
|
|
||||||
eui64->uint8[6] = 0;
|
|
||||||
eui64->uint8[7] = (uint8_t)hwaddr;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
DEBUG("Error on EUI-64 generation: do not know what to do with "
|
|
||||||
"hardware address of length %d\n", sizeof(hwaddr));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -690,15 +690,7 @@ ipv6_addr_t *ipv6_addr_set_by_eui64(ipv6_addr_t *out, int if_id,
|
|||||||
|
|
||||||
if (net_if_get_eui64((net_if_eui64_t *) &out->uint8[8], if_id,
|
if (net_if_get_eui64((net_if_eui64_t *) &out->uint8[8], if_id,
|
||||||
force_generation)) {
|
force_generation)) {
|
||||||
#ifdef MODULE_SIXLOWPAN
|
|
||||||
|
|
||||||
if (!sixlowpan_lowpan_eui64_to_short_addr((net_if_eui64_t *)&out->uint8[8])) {
|
|
||||||
out->uint8[8] ^= 0x02;
|
out->uint8[8] ^= 0x02;
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
out->uint8[8] ^= 0x02;
|
|
||||||
#endif
|
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user