diff --git a/clickhouse/columns/ip4.cpp b/clickhouse/columns/ip4.cpp index fd78305e..5ea74d7c 100644 --- a/clickhouse/columns/ip4.cpp +++ b/clickhouse/columns/ip4.cpp @@ -25,11 +25,11 @@ ColumnIPv4::ColumnIPv4(ColumnRef data) } void ColumnIPv4::Append(const std::string& str) { - in_addr_t addr = inet_addr(str.c_str()); - if (addr == INADDR_NONE) { + struct in_addr addr; + if (inet_aton(str.c_str(),&addr) == 0) { throw std::runtime_error("invalid IPv4 format, ip: " + str); } - data_->Append(htonl(addr)); + data_->Append(htonl(addr.s_addr)); } void ColumnIPv4::Append(uint32_t ip) { diff --git a/tests/simple/main.cpp b/tests/simple/main.cpp index 41855514..1e7ec647 100644 --- a/tests/simple/main.cpp +++ b/tests/simple/main.cpp @@ -442,6 +442,7 @@ inline void IPExample(Client &client) { auto v4 = std::make_shared(); v4->Append("127.0.0.1"); + v4->Append("255.255.255.255"); v4->Append(3585395774); v4->Append(0);