Пример #1
0
// public
bool IPAddressV4::inSubnet(StringPiece cidrNetwork) const {
  auto subnetInfo = IPAddress::createNetwork(cidrNetwork);
  auto addr = subnetInfo.first;
  if (!addr.isV4()) {
    throw IPAddressFormatException("Address '", addr.toJson(), "' ",
                                   "is not a V4 address");
  }
  return inSubnetWithMask(addr.asV4(), fetchMask(subnetInfo.second));
}
Пример #2
0
// public
IPAddressV4 IPAddressV4::mask(size_t numBits) const {
  static const auto bits = bitCount();
  if (numBits > bits) {
    throw IPAddressFormatException("numBits(", numBits,
                                   ") > bitsCount(", bits, ")");
  }

  ByteArray4 ba = detail::Bytes::mask(fetchMask(numBits), addr_.bytes_);
  return IPAddressV4(ba);
}
Пример #3
0
// public
bool IPAddressV4::isLinkLocal() const {
  static IPAddressV4 linklocal_addr("169.254.0.0");
  return inSubnetWithMask(linklocal_addr, fetchMask(16));
}
Пример #4
0
// public
bool IPAddressV4::isLoopback() const {
  static IPAddressV4 loopback_addr("127.0.0.0");
  return inSubnetWithMask(loopback_addr, fetchMask(8));
}