+bool IPAddressV4::validate(StringPiece ip) {
+ constexpr size_t kStrMaxLen = INET_ADDRSTRLEN;
+ std::array<char, kStrMaxLen + 1> ip_cstr;
+ const size_t len = std::min(ip.size(), kStrMaxLen);
+ std::memcpy(ip_cstr.data(), ip.data(), len);
+ ip_cstr[len] = 0;
+ struct in_addr addr;
+ return 1 == inet_pton(AF_INET, ip_cstr.data(), &addr);
+}