On 2017-07-11, Florian Obser <flor...@openbsd.org> wrote:

> +     SHA512Final(digest, &ctx);
> +
> +     /* assumes sizeof(digest) > sizeof(ifid) */
> +     bcopy(digest, &in6->s6_addr[8], 8);

... and we're finished here.

> +     /* make sure to set "u" bit to local, and "g" bit to individual. */
> +     in6->s6_addr[8] &= ~EUI64_GBIT; /* g bit to "individual" */
> +     in6->s6_addr[8] |= EUI64_UBIT;  /* u bit to "local" */
> +
> +     /* convert EUI64 into IPv6 interface identifier */
> +     EUI64_TO_IFID(in6);

Not according to RFC7217 (page 11):

   We note that all of the bits in the resulting Interface IDs are
   treated as "opaque" bits [RFC7136].  For example, the universal/local
   bit of Modified EUI-64 format identifiers is treated as any other bit
   of such an identifier.  In theory, this might result in IPv6 address
   collisions and DAD failures that would otherwise not be encountered.
   However, this is not deemed as a likely issue because of the
   following considerations:

-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to