Skip to content
  • Lennert Buytenhek's avatar
    ieee802154: Fix generation of random EUI-64 addresses. · 3b369bd2
    Lennert Buytenhek authored
    
    
    Currently, ieee802154_random_extended_addr() has a 50% chance of
    generating a group (multicast) address, while this function is used
    for generating station addresses (which can't be group addresses)
    for interfaces that don't have a hardware-provided address.
    
    Also, in case get_random_bytes() generates the EUI-64 address
    00:00:00:00:00:00:00:00 (extremely unlikely), which is an invalid
    address, ieee802154_random_extended_addr() reacts by changing it
    to 01:00:00:00:00:00:00:00, which is an invalid station address as
    well, as it is a group address.
    
    This patch changes the address generation procedure to grab eight
    random bytes, treat that as an EUI-64, and then clear the Group
    address bit and set the Locally Administered bit, which is in
    line with how eth_random_addr() generates random EUI-48s.
    
    Signed-off-by: default avatarLennert Buytenhek <buytenh@wantstofly.org>
    Acked-by: default avatarAlexander Aring <alex.aring@gmail.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    3b369bd2