mirror of https://gitee.com/openkylin/linux.git
ieee802154: add ieee802154_random_extended_addr
This patch adds a new function to generate a random IEEE 802.15.4 extended address. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
1906bbbddb
commit
35d5a374a5
|
@ -24,6 +24,7 @@
|
|||
#define LINUX_IEEE802154_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/random.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#define IEEE802154_MTU 127
|
||||
|
@ -215,4 +216,17 @@ static inline bool ieee802154_is_valid_extended_addr(const __le64 addr)
|
|||
(addr != cpu_to_le64(0xffffffffffffffffULL)));
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee802154_random_extended_addr - generates a random extended address
|
||||
* @addr: extended addr pointer to place the random address
|
||||
*/
|
||||
static inline void ieee802154_random_extended_addr(__le64 *addr)
|
||||
{
|
||||
get_random_bytes(addr, IEEE802154_EXTENDED_ADDR_LEN);
|
||||
|
||||
/* toggle some bit if we hit an invalid extended addr */
|
||||
if (!ieee802154_is_valid_extended_addr(*addr))
|
||||
((u8 *)addr)[IEEE802154_EXTENDED_ADDR_LEN - 1] ^= 0x01;
|
||||
}
|
||||
|
||||
#endif /* LINUX_IEEE802154_H */
|
||||
|
|
Loading…
Reference in New Issue