X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FSocket%2FProtocols%2FINet%2FINet6Address.cci;h=290db51e0c15928bf26a2a6ce426eb607c005fe4;hb=ed7919f7207bdda00e275d9a6a31cd120d2e6afa;hp=9fc8dd7f5a082fb52f5d2a26401c0a479b57e7f7;hpb=874b9d37b59223d9b0dce3bddafa130045419750;p=senf.git diff --git a/senf/Socket/Protocols/INet/INet6Address.cci b/senf/Socket/Protocols/INet/INet6Address.cci index 9fc8dd7..290db51 100644 --- a/senf/Socket/Protocols/INet/INet6Address.cci +++ b/senf/Socket/Protocols/INet/INet6Address.cci @@ -77,7 +77,7 @@ prefix_ senf::INet6Address senf::INet6Address::from_mac(senf::MACAddress const & INet6Address addr; addr[0] = 0xfe; addr[1] = 0x80; - addr[8] = mac[0]; + addr[8] = mac[0] ^ 0x2; // invert the "u" (universal/local) bit; see RFC 4291 Appx. A addr[9] = mac[1]; addr[10] = mac[2]; addr[11] = 0xff; @@ -93,7 +93,8 @@ prefix_ senf::INet6Address senf::INet6Address::from_eui64(senf::EUI64 const & eu INet6Address addr; addr[0] = 0xfe; addr[1] = 0x80; - std::copy(eui.begin(), eui.end(), addr.begin()+8); + addr[8] = eui[0] ^ 0x2; // invert the "u" (universal/local) bit; see RFC 4291 Appx. A + std::copy(eui.begin()+1, eui.end(), addr.begin()+9); return addr; }