]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2795] db inet type related changes
authorPiotrek Zadroga <piotrek@isc.org>
Thu, 22 Jun 2023 16:20:55 +0000 (18:20 +0200)
committerPiotrek Zadroga <piotrek@isc.org>
Mon, 26 Jun 2023 15:30:59 +0000 (15:30 +0000)
src/lib/dhcpsrv/mysql_host_data_source.cc
src/lib/dhcpsrv/pgsql_host_data_source.cc

index 0b6b977afab82a011154ba21c9779b8b2d5b6fc7..4ef86e091de30158f31bbe3a6d233d3d7937200e 100644 (file)
@@ -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::vector<uint8_t>addr6 = 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<char*>
-        (const_cast<char*>(addr6.c_str()));
+    inbind[0].buffer = reinterpret_cast<char*>(&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,
index f4934bc2a1ce8a86ee20d0d1ec3df9b6f3043047..54770563cca8ef7050f0c2072ee33f401b11384f 100644 (file)
@@ -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"
     },