|
@@ -97,10 +97,13 @@ static void lowpan_ndisc_802154_update(struct neighbour *n, u32 flags,
|
|
}
|
|
}
|
|
|
|
|
|
write_lock_bh(&n->lock);
|
|
write_lock_bh(&n->lock);
|
|
- if (lladdr_short)
|
|
|
|
|
|
+ if (lladdr_short) {
|
|
ieee802154_be16_to_le16(&neigh->short_addr, 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);
|
|
neigh->short_addr = cpu_to_le16(IEEE802154_ADDR_SHORT_UNSPEC);
|
|
|
|
+ }
|
|
write_unlock_bh(&n->lock);
|
|
write_unlock_bh(&n->lock);
|
|
}
|
|
}
|
|
|
|
|