mirror of
https://github.com/apache/nuttx.git
synced 2026-10-09 23:35:47 +00:00
net/sixlowpan: The logic that extracts interface identifier from the IP address needs to be generalized to handle cases where the address is not a link local address.
This commit is contained in:
parent
003a37e37f
commit
35a54d7a1e
1 changed files with 7 additions and 6 deletions
|
|
@ -250,14 +250,15 @@ int sixlowpan_destaddrfromip(FAR struct radio_driver_s *radio,
|
|||
return OK;
|
||||
}
|
||||
|
||||
/* Otherwise, the destination MAC address is encoded in the IP address */
|
||||
/* Otherwise, the destination MAC address is encoded in the IP address */
|
||||
|
||||
/* Check for compressible link-local address.
|
||||
* REVISIT: This should not restrict us to link-local addresses.
|
||||
*/
|
||||
/* If the address is link-local, or matches the prefix of the local address,
|
||||
* the interface identifier can be extracted from the lower bits of the address.
|
||||
*/
|
||||
|
||||
if (ipaddr[0] != HTONS(0xfe80) || ipaddr[1] != 0 ||
|
||||
ipaddr[2] != 0 || ipaddr[3] != 0)
|
||||
if (!sixlowpan_islinklocal(ipaddr) &&
|
||||
!net_ipv6addr_maskcmp(radio->r_dev.d_ipv6addr, ipaddr,
|
||||
radio->r_dev.d_ipv6netmask))
|
||||
{
|
||||
return -EADDRNOTAVAIL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue