MacAddress MacAddress::createMulticast(IPAddressV6 v6addr) { // This method should only be used for multicast addresses. DCHECK(v6addr.isMulticast()); uint8_t bytes[SIZE]; bytes[0] = 0x33; bytes[1] = 0x33; memcpy(bytes + 2, v6addr.bytes() + 12, 4); return fromBinary(ByteRange(bytes, SIZE)); }
// public bool IPAddressV6::inSubnetWithMask(const IPAddressV6& subnet, const ByteArray16& cidrMask) const { const ByteArray16 mask = detail::Bytes::mask(toByteArray(), cidrMask); const ByteArray16 subMask = detail::Bytes::mask(subnet.toByteArray(), cidrMask); return (mask == subMask); }
uint32_t IPv6Hdr::addrPartialCsum(const IPAddressV6& addr) { IOBuf buf(IOBuf::WRAP_BUFFER, addr.bytes(), 16); Cursor c(&buf); uint32_t sum = 0; for (uint8_t n = 0; n < 8; ++n) { sum += c.readBE<uint16_t>(); } return sum; }
void toAppend(IPAddressV6 addr, fbstring* result) { result->append(addr.str()); }