Exemplo n.º 1
0
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));
}
Exemplo n.º 2
0
// 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);
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
void toAppend(IPAddressV6 addr, fbstring* result) {
    result->append(addr.str());
}