return (extended_info_tables_enabled_);
}
+ /// @brief Upgrade binary address (v6).
+ ///
+ /// On SQL backends for all leases with null binary address set this
+ /// new column. Memfile uses IOAddress objets so does not need it.
+ /// This function implements the new BLQ hook command named
+ /// "binary-address6-upgrade".
+ ///
+ /// @param page_size The page size used for retrieval.
+ /// @return The number of updates in the database.
+ virtual size_t upgradeBinaryAddress6(const LeasePageSize& page_size) = 0;
+
/// @brief Build extended info v6 tables.
///
/// @param update Update extended info in database.
return (updated);
}
+size_t
+Memfile_LeaseMgr::upgradeBinaryAddress6(const LeasePageSize& /* page_size */) {
+ return (0);
+}
+
size_t
Memfile_LeaseMgr::buildExtendedInfoTables6(bool update, bool current) {
if (MultiThreadingMgr::instance().getMode()) {
/// @return The number of updates in the database or 0.
size_t extractExtendedInfo4(bool update, bool current);
- /// @brief Build extended info v6 tables.
+ /// @brief Upgrade binary address (v6).
+ ///
+ /// @note: this method is a nop for memfile which uses IOAddress objects.
///
- /// @note: this method is a nop for memfile when update is false
- /// as tables are built at start time.
+ /// @param page_size The page size used for retrieval.
+ /// @return Always return 0 as this function is a noop for not SQL backends.
+ virtual size_t upgradeBinaryAddress6(const LeasePageSize& page_size) override;
+
+ /// @brief Build extended info v6 tables.
///
/// @param update Update extended info in database.
/// @param current specify whether to use current (true) or staging
"WHERE address > ? AND user_context IS NOT NULL "
"ORDER BY address "
"LIMIT ?"},
+ {MySqlLeaseMgr::GET_LEASE6_BINADDR_PAGE,
+ "SELECT address, duid, valid_lifetime, "
+ "expire, subnet_id, pref_lifetime, "
+ "lease_type, iaid, prefix_len, "
+ "fqdn_fwd, fqdn_rev, hostname, "
+ "hwaddr, hwtype, hwaddr_source, "
+ "state, user_context "
+ "FROM lease6 "
+ "WHERE address > ? AND binaddr IS NULL "
+ "ORDER BY address "
+ "LIMIT ?"},
{MySqlLeaseMgr::GET_LEASE6_SUBID,
"SELECT address, duid, valid_lifetime, "
"expire, subnet_id, pref_lifetime, "
GET_LEASE6_DUID_IAID_SUBID, // Get lease6 by DUID, IAID and subnet ID
GET_LEASE6_PAGE, // Get page of leases beginning with an address
GET_LEASE6_UCTX_PAGE, // Get page of leases with user context
+ GET_LEASE6_BINADDR_PAGE, // Get page of leases with null binary address
GET_LEASE6_SUBID, // Get IPv6 leases by subnet ID
GET_LEASE6_DUID, // Get IPv6 leases by DUID
GET_LEASE6_HOSTNAME, // Get IPv6 leases by hostname
"ORDER BY address "
"LIMIT $2"},
+ // GET_LEASE6_BINADDR_PAGE
+ { 2, { OID_VARCHAR, OID_INT8 },
+ "get_lease6_binaddr_page",
+ "SELECT address, duid, valid_lifetime, "
+ "extract(epoch from expire)::bigint, subnet_id, pref_lifetime, "
+ "lease_type, iaid, prefix_len, fqdn_fwd, fqdn_rev, hostname, "
+ "hwaddr, hwtype, hwaddr_source, "
+ "state, user_context "
+ "FROM lease6 "
+ "WHERE address > $1 AND binaddr IS NULL "
+ "ORDER BY address "
+ "LIMIT $2"},
+
// GET_LEASE6_SUBID
{ 1, { OID_INT8 },
"get_lease6_subid",
GET_LEASE6_DUID_IAID_SUBID, // Get lease6 by DUID, IAID and subnet ID
GET_LEASE6_PAGE, // Get page of leases beginning with an address
GET_LEASE6_UCTX_PAGE, // Get page of leases with user context
+ GET_LEASE6_BINADDR_PAGE, // Get page of leases with null binary address
GET_LEASE6_SUBID, // Get IPv6 leases by subnet ID
GET_LEASE6_DUID, // Get IPv6 leases by DUID
GET_LEASE6_HOSTNAME, // Get IPv6 leases by hostname
return (0);
}
+size_t
+ConcreteLeaseMgr::upgradeBinaryAddress6(const LeasePageSize& /* page_size */) {
+ return (0);
+}
+
size_t
ConcreteLeaseMgr::buildExtendedInfoTables6(bool /* update */,
bool /* current */) {
virtual size_t
upgradeExtendedInfo4(const LeasePageSize& /* page_size */) override;
+ /// @brief Stub implementation.
+ virtual size_t
+ upgradeBinaryAddress6(const LeasePageSize& /* page_size */) override;
+
/// @brief Stub implementation.
virtual size_t buildExtendedInfoTables6(bool /* update */,
bool /* current */) override;