From: Piotrek Zadroga Date: Thu, 22 Jun 2023 16:20:55 +0000 (+0200) Subject: [#2795] db inet type related changes X-Git-Tag: Kea-2.4.0~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf98ce6055d5b858a5a9fc496f0c291f49ce697d;p=thirdparty%2Fkea.git [#2795] db inet type related changes --- diff --git a/src/lib/dhcpsrv/mysql_host_data_source.cc b/src/lib/dhcpsrv/mysql_host_data_source.cc index 0b6b977afa..4ef86e091d 100644 --- a/src/lib/dhcpsrv/mysql_host_data_source.cc +++ b/src/lib/dhcpsrv/mysql_host_data_source.cc @@ -4014,14 +4014,17 @@ MySqlHostDataSource::getAll6(const IOAddress& address) const { MYSQL_BIND inbind[1]; memset(inbind, 0, sizeof(inbind)); - std::string addr6 = address.toText(); - unsigned long addr6_length = addr6.size(); + std::vectoraddr6 = address.toBytes(); + if (addr6.size() != isc::asiolink::V6ADDRESS_LEN) { + isc_throw(DbOperationError, "getAll6() - address is not " + << isc::asiolink::V6ADDRESS_LEN << " bytes long"); + } + unsigned long addr6_length = isc::asiolink::V6ADDRESS_LEN; inbind[0].buffer_type = MYSQL_TYPE_BLOB; - inbind[0].buffer = reinterpret_cast - (const_cast(addr6.c_str())); + inbind[0].buffer = reinterpret_cast(&addr6[0]); + inbind[0].buffer_length = isc::asiolink::V6ADDRESS_LEN; inbind[0].length = &addr6_length; - inbind[0].buffer_length = addr6_length; ConstHostCollection collection; impl_->getHostCollection(ctx, MySqlHostDataSourceImpl::GET_HOST_ADDR6, inbind, diff --git a/src/lib/dhcpsrv/pgsql_host_data_source.cc b/src/lib/dhcpsrv/pgsql_host_data_source.cc index f4934bc2a1..54770563cc 100644 --- a/src/lib/dhcpsrv/pgsql_host_data_source.cc +++ b/src/lib/dhcpsrv/pgsql_host_data_source.cc @@ -1840,7 +1840,7 @@ TaggedStatementArray tagged_statements = { { "LEFT JOIN ipv6_reservations AS r ON h.host_id = r.host_id " "WHERE h.host_id IN " " (SELECT host_id FROM ipv6_reservations " - " WHERE address = $1) " + " WHERE address = cast($1 as inet)) " "ORDER BY h.host_id, o.option_id, r.reservation_id" },