• Jukka Rissanen's avatar
    Bluetooth: 6LoWPAN: Fix MAC address universal/local bit handling · ab4910d0
    Jukka Rissanen authored
    commit 62bbd5b3 upstream.
    
    The universal/local bit handling was incorrectly done in the code.
    
    So when setting EUI address from BD address we do this:
    - If BD address type is PUBLIC, then we clear the universal bit
      in EUI address. If the address type is RANDOM, then the universal
      bit is set (BT 6lowpan draft chapter 3.2.2)
    - After this we invert the universal/local bit according to RFC 2464
    
    When figuring out BD address we do the reverse:
    - Take EUI address from stateless IPv6 address, invert the
      universal/local bit according to RFC 2464
    - If universal bit is 1 in this modified EUI address, then address
      type is set to RANDOM, otherwise it is PUBLIC
    
    Note that 6lowpan_iphc.[ch] does the final toggling of U/L bit
    before sending or receiving the network packet.
    Signed-off-by: default avatarJukka Rissanen <jukka.rissanen@linux.intel.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ab4910d0
6lowpan.c 19.4 KB