cvs commit: src/sys/kern kern_uuid.c

Ralf S. Engelschall rse at FreeBSD.org
Thu Jan 22 05:34:13 PST 2004


rse         2004/01/22 05:34:11 PST

  FreeBSD src repository

  Modified files:
    sys/kern             kern_uuid.c 
  Log:
  Fix generation of random multicast MAC address.
  
  In case no real/physical IEEE 802 address is available, both the expired
  "draft-leach-uuids-guids-01" (section "4. Node IDs when no IEEE 802
  network card is available") and RFC 2518 (section "6.4.1 Node Field
  Generation Without the IEEE 802 Address") recommend (quoted from RFC
  2518):
  
    "The ideal solution is to obtain a 47 bit cryptographic quality random
    number, and use it as the low 47 bits of the node ID, with the _most_
    significant bit of the first octet of the node ID set to 1. This bit
    is the unicast/multicast bit, which will never be set in IEEE 802
    addresses obtained from network cards; hence, there can never be a
    conflict between UUIDs generated by machines with and without network
    cards."
  
  Unfortunately, this incorrectly explains how to implement this and
  the FreeBSD UUID generator code inherited this generation bug from
  the broken reference code in the standards draft. They should instead
  specify the "_least_ significant bit of the first octet of the node ID"
  as the multicast bit in a memory and hexadecimal string representation
  of a 48-bit IEEE 802 MAC address.
  
  This standards bug arised from a false interpretation, as the multicast
  bit is actually the _most_ significant bit in IEEE 802.3 (Ethernet)
  _transmission order_ of an IEEE 802 MAC address. The standards authors
  forgot that the bitwise order of an _octet_ from a MAC address _memory_
  and hexadecimal string representation is still always from left (MSB,
  bit 7) to right (LSB, bit 0).
  
  Fortunately, this UUID generation bug could have occurred on systems
  without any Ethernet NICs only.
  
  Revision  Changes    Path
  1.7       +1 -1      src/sys/kern/kern_uuid.c


More information about the cvs-src mailing list