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