6lowpan: ndisc: set invalid unicast short addr to unspec

When receiving neighbour information with short address option field we
should check the complete range of invalid short addresses and set it to
one invalid address setting which is the unspecified address. This
address is also used when by creating at first a new neighbour entry to
indicate no short address is set.

Signed-off-by: Alexander Aring <aar@pengutronix.de>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
Alexander Aring 2016-07-06 23:32:28 +02:00 коммит произвёл Marcel Holtmann
Родитель aaa7088eb2
Коммит 9e262f5037
1 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -97,10 +97,13 @@ static void lowpan_ndisc_802154_update(struct neighbour *n, u32 flags,
}
write_lock_bh(&n->lock);
if (lladdr_short)
if (lladdr_short) {
ieee802154_be16_to_le16(&neigh->short_addr, lladdr_short);
else
if (!lowpan_802154_is_valid_src_short_addr(neigh->short_addr))
neigh->short_addr = cpu_to_le16(IEEE802154_ADDR_SHORT_UNSPEC);
} else {
neigh->short_addr = cpu_to_le16(IEEE802154_ADDR_SHORT_UNSPEC);
}
write_unlock_bh(&n->lock);
}