Kea 2.7.3
|
PostgreSQL Lease Manager. More...
#include <pgsql_lease_mgr.h>
Public Member Functions | |
PgSqlLeaseMgr (const db::DatabaseConnection::ParameterMap ¶meters) | |
Constructor. | |
virtual | ~PgSqlLeaseMgr () |
Destructor (closes database) | |
virtual bool | addLease (const Lease4Ptr &lease) override |
Adds an IPv4 lease. | |
virtual bool | addLease (const Lease6Ptr &lease) override |
Adds an IPv6 lease. | |
virtual size_t | byRelayId6size () const override |
Return the by-relay-id table size. | |
virtual size_t | byRemoteId6size () const override |
Return the by-remote-id table size. | |
virtual std::string | checkLimits4 (isc::data::ConstElementPtr const &user_context) const override |
Checks if the IPv4 lease limits set in the given user context are exceeded. | |
virtual std::string | checkLimits6 (isc::data::ConstElementPtr const &user_context) const override |
Checks if the IPv6 lease limits set in the given user context are exceeded. | |
virtual void | clearClassLeaseCounts () override |
Clears the class-lease count map. | |
virtual void | commit () override |
Commit Transactions. | |
PgSqlLeaseContextPtr | createContext () const |
Create a new context. | |
virtual uint64_t | deleteExpiredReclaimedLeases4 (const uint32_t secs) override |
Deletes all expired-reclaimed DHCPv4 leases. | |
virtual uint64_t | deleteExpiredReclaimedLeases6 (const uint32_t secs) override |
Deletes all expired-reclaimed DHCPv6 leases. | |
virtual bool | deleteLease (const Lease4Ptr &lease) override |
Deletes an IPv4 lease. | |
virtual bool | deleteLease (const Lease6Ptr &lease) override |
Deletes an IPv6 lease. | |
virtual size_t | getClassLeaseCount (const ClientClass &client_class, const Lease::Type <ype=Lease::TYPE_V4) const override |
Returns the class lease count for a given class and lease type. | |
virtual std::string | getDescription () const override |
Returns description of the backend. | |
virtual void | getExpiredLeases4 (Lease4Collection &expired_leases, const size_t max_leases) const override |
Returns a collection of expired DHCPv4 leases. | |
virtual void | getExpiredLeases6 (Lease6Collection &expired_leases, const size_t max_leases) const override |
Returns a collection of expired DHCPv6 leases. | |
virtual Lease4Collection | getLease4 (const ClientId &clientid) const override |
Returns existing IPv4 leases for specified client-id. | |
virtual Lease4Ptr | getLease4 (const ClientId &clientid, SubnetID subnet_id) const override |
Returns existing IPv4 lease for specified client-id. | |
virtual Lease4Ptr | getLease4 (const isc::asiolink::IOAddress &addr) const override |
Returns an IPv4 lease for specified IPv4 address. | |
virtual Lease4Collection | getLease4 (const isc::dhcp::HWAddr &hwaddr) const override |
Returns existing IPv4 leases for specified hardware address. | |
virtual Lease4Ptr | getLease4 (const isc::dhcp::HWAddr &hwaddr, SubnetID subnet_id) const override |
Returns existing IPv4 leases for specified hardware address and a subnet. | |
virtual Lease6Ptr | getLease6 (Lease::Type type, const isc::asiolink::IOAddress &addr) const override |
Returns existing IPv6 lease for a given IPv6 address. | |
virtual Lease4Collection | getLeases4 () const override |
Returns all IPv4 leases. | |
virtual Lease4Collection | getLeases4 (const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) const override |
Returns range of IPv4 leases using paging. | |
virtual Lease4Collection | getLeases4 (const std::string &hostname) const override |
Returns all IPv4 leases for the particular hostname. | |
virtual Lease4Collection | getLeases4 (SubnetID subnet_id) const override |
Returns all IPv4 leases for the particular subnet identifier. | |
virtual Lease4Collection | getLeases4ByRelayId (const OptionBuffer &relay_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size, const time_t &qry_start_time=0, const time_t &qry_end_time=0) override |
The following queries are used to fulfill Bulk Lease Query queries. | |
virtual Lease4Collection | getLeases4ByRemoteId (const OptionBuffer &remote_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size, const time_t &qry_start_time=0, const time_t &qry_end_time=0) override |
Returns existing IPv4 leases with a given remote-id. | |
virtual Lease6Collection | getLeases6 () const override |
Returns all IPv6 leases. | |
virtual Lease6Collection | getLeases6 (const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) const override |
Returns range of IPv6 leases using paging. | |
virtual Lease6Collection | getLeases6 (const DUID &duid) const override |
Returns all IPv6 leases for the DUID. | |
virtual Lease6Collection | getLeases6 (const std::string &hostname) const override |
Returns all IPv6 leases for the particular hostname. | |
virtual Lease6Collection | getLeases6 (Lease::Type type, const DUID &duid, uint32_t iaid) const override |
Returns existing IPv6 leases for a given DUID+IA combination. | |
virtual Lease6Collection | getLeases6 (Lease::Type type, const DUID &duid, uint32_t iaid, SubnetID subnet_id) const override |
Returns existing IPv6 lease for a given DUID+IA combination. | |
virtual Lease6Collection | getLeases6 (SubnetID subnet_id) const override |
Returns all IPv6 leases for the particular subnet identifier. | |
virtual Lease6Collection | getLeases6 (SubnetID subnet_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) const override |
Returns a page of IPv6 leases for a subnet identifier. | |
virtual Lease6Collection | getLeases6ByRelayId (const DUID &relay_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override |
Returns existing IPv6 leases with a given relay-id. | |
virtual Lease6Collection | getLeases6ByRemoteId (const OptionBuffer &remote_id, const asiolink::IOAddress &lower_bound_address, const LeasePageSize &page_size) override |
Returns existing IPv6 leases with a given remote-id. | |
virtual std::string | getName () const override |
Returns backend name. | |
virtual std::string | getType () const override |
Return backend type. | |
virtual std::pair< uint32_t, uint32_t > | getVersion (const std::string &timer_name=std::string()) const override |
Returns backend version. | |
virtual bool | isJsonSupported () const override |
Checks if JSON support is enabled in the database. | |
virtual void | recountClassLeases4 () override |
Recount the leases per class for V4 leases. | |
virtual void | recountClassLeases6 () override |
Recount the leases per class for V6 leases. | |
virtual void | rollback () override |
Rollback Transactions. | |
virtual LeaseStatsQueryPtr | startLeaseStatsQuery4 () override |
Creates and runs the IPv4 lease stats query. | |
virtual LeaseStatsQueryPtr | startLeaseStatsQuery6 () override |
Creates and runs the IPv6 lease stats query. | |
virtual LeaseStatsQueryPtr | startPoolLeaseStatsQuery4 () override |
Creates and runs the IPv4 lease stats query for all subnets and pools. | |
virtual LeaseStatsQueryPtr | startPoolLeaseStatsQuery6 () override |
Creates and runs the IPv6 lease stats query for all subnets and pools. | |
virtual LeaseStatsQueryPtr | startSubnetLeaseStatsQuery4 (const SubnetID &subnet_id) override |
Creates and runs the IPv4 lease stats query for a single subnet. | |
virtual LeaseStatsQueryPtr | startSubnetLeaseStatsQuery6 (const SubnetID &subnet_id) override |
Creates and runs the IPv6 lease stats query for a single subnet. | |
virtual LeaseStatsQueryPtr | startSubnetRangeLeaseStatsQuery4 (const SubnetID &first_subnet_id, const SubnetID &last_subnet_id) override |
Creates and runs the IPv4 lease stats query for a single subnet. | |
virtual LeaseStatsQueryPtr | startSubnetRangeLeaseStatsQuery6 (const SubnetID &first_subnet_id, const SubnetID &last_subnet_id) override |
Creates and runs the IPv6 lease stats query for a single subnet. | |
virtual void | updateLease4 (const Lease4Ptr &lease4) override |
Updates IPv4 lease. | |
virtual void | updateLease6 (const Lease6Ptr &lease6) override |
Updates IPv6 lease. | |
virtual size_t | upgradeExtendedInfo4 (const LeasePageSize &page_size) override |
Upgrade extended info (v4). | |
virtual size_t | upgradeExtendedInfo6 (const LeasePageSize &page_size) override |
Upgrade extended info (v6). | |
virtual void | wipeExtendedInfoTables6 () override |
Wipe extended info table (v6). | |
virtual size_t | wipeLeases4 (const SubnetID &subnet_id) override |
Removes specified IPv4 leases. | |
virtual size_t | wipeLeases6 (const SubnetID &subnet_id) override |
Removed specified IPv6 leases. | |
virtual void | writeLeases4 (const std::string &) override |
Write V4 leases to a file. | |
virtual void | writeLeases6 (const std::string &) override |
Write V6 leases to a file. | |
Public Member Functions inherited from isc::dhcp::TrackingLeaseMgr | |
bool | hasCallbacks () const |
Checks if any callbacks have been registered. | |
bool | isLocked (const LeasePtr &lease) |
Checks if the lease is locked. | |
void | registerCallback (CallbackType type, std::string owner, Lease::Type lease_type, CallbackFn callback_fn) |
Registers a callback function for all subnets. | |
void | registerCallback (CallbackType type, std::string owner, SubnetID subnet_id, Lease::Type lease_type, CallbackFn callback_fn) |
Registers a callback function for a subnet. | |
void | unregisterAllCallbacks () |
Unregisters all callbacks. | |
void | unregisterCallbacks (SubnetID subnet_id, Lease::Type lease_type) |
Unregisters all callbacks for a given subnet identifier. | |
Public Member Functions inherited from isc::dhcp::LeaseMgr | |
LeaseMgr () | |
Constructor. | |
virtual | ~LeaseMgr () |
Destructor. | |
bool | getExtendedInfoTablesEnabled () const |
Returns the setting indicating if lease6 extended info tables are enabled. | |
Lease6Ptr | getLease6 (Lease::Type type, const DUID &duid, uint32_t iaid, SubnetID subnet_id) const |
returns zero or one IPv6 lease for a given duid+iaid+subnet_id | |
void | recountLeaseStats4 () |
Recalculates per-subnet and global stats for IPv4 leases. | |
void | recountLeaseStats6 () |
Recalculates per-subnet and global stats for IPv6 leases. | |
void | setExtendedInfoTablesEnabled (const bool enabled) |
Modifies the setting whether the lease6 extended info tables are enabled. | |
Static Public Member Functions | |
static bool | dbReconnect (util::ReconnectCtlPtr db_reconnect_ctl) |
Attempts to reconnect the server to the lease DB backend manager. | |
static std::string | getDBVersion () |
Local version of getDBVersion() class method. | |
Static Public Member Functions inherited from isc::dhcp::LeaseMgr | |
static void | extractLease4ExtendedInfo (const Lease4Ptr &lease, bool ignore_errors=true) |
Extract relay and remote identifiers from the extended info. | |
static std::string | getDBVersion () |
Class method to return extended version info This class method must be redeclared and redefined in derived classes. | |
static bool | upgradeLease4ExtendedInfo (const Lease4Ptr &lease, CfgConsistency::ExtendedInfoSanity check=CfgConsistency::EXTENDED_INFO_CHECK_FIX) |
The following queries are used to fulfill Bulk Lease Query queries. | |
static bool | upgradeLease6ExtendedInfo (const Lease6Ptr &lease, CfgConsistency::ExtendedInfoSanity check=CfgConsistency::EXTENDED_INFO_CHECK_FIX) |
Upgrade a V6 lease user context to the new extended info entry. | |
Protected Member Functions | |
virtual void | addRelayId6 (const isc::asiolink::IOAddress &lease_addr, const std::vector< uint8_t > &relay_id) override |
Add lease6 extended info into by-relay-id table. | |
virtual void | addRemoteId6 (const isc::asiolink::IOAddress &lease_addr, const std::vector< uint8_t > &remote_id) override |
Add lease6 extended info into by-remote-id table. | |
virtual void | deleteExtendedInfo6 (const isc::asiolink::IOAddress &addr) override |
Extended information / Bulk Lease Query shared interface. | |
Protected Member Functions inherited from isc::dhcp::TrackingLeaseMgr | |
TrackingLeaseMgr () | |
Constructor. | |
void | runCallbacks (CallbackType type, const LeasePtr &lease) |
Runs registered callbacks of the particular type. | |
void | runCallbacksForSubnetID (CallbackType type, SubnetID subnet_id, const LeasePtr &lease) |
Runs registered callbacks of the particular type for a subnet id. | |
void | trackAddLease (const LeasePtr &lease) |
Invokes the callbacks when a new lease is added. | |
void | trackDeleteLease (const LeasePtr &lease) |
Invokes the callbacks when a lease is deleted. | |
void | trackUpdateLease (const LeasePtr &lease) |
Invokes the callbacks when a lease is updated. | |
bool | tryLock (const LeasePtr &lease) |
Attempts to lock a lease. | |
void | unlock (const LeasePtr &lease) |
Attempts to unlock a lease. | |
Protected Member Functions inherited from isc::dhcp::LeaseMgr | |
virtual bool | addExtendedInfo6 (const Lease6Ptr &lease) |
Extract extended info from a lease6 and add it into tables. | |
void | setExtendedInfoTablesEnabled (const db::DatabaseConnection::ParameterMap ¶meters) |
Extended information / Bulk Lease Query shared interface. | |
Additional Inherited Members | |
Protected Types inherited from isc::dhcp::TrackingLeaseMgr | |
typedef boost::multi_index_container< Callback, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::composite_key< Callback, boost::multi_index::member< Callback, CallbackType, &Callback::type >, boost::multi_index::member< Callback, SubnetID, &Callback::subnet_id >, boost::multi_index::member< Callback, Lease::Type, &Callback::lease_type > > >, boost::multi_index::ordered_non_unique< boost::multi_index::composite_key< Callback, boost::multi_index::member< Callback, SubnetID, &Callback::subnet_id >, boost::multi_index::member< Callback, Lease::Type, &Callback::lease_type > > > > > | CallbackContainer |
A multi-index container holding registered callbacks. | |
typedef boost::shared_ptr< CallbackContainer > | CallbackContainerPtr |
Pointer to the callback container. | |
Static Protected Member Functions inherited from isc::dhcp::TrackingLeaseMgr | |
static std::string | callbackTypeToString (CallbackType type) |
Converts callback type to string for logging purposes. | |
Protected Attributes inherited from isc::dhcp::TrackingLeaseMgr | |
CallbackContainerPtr | callbacks_ |
The multi-index container holding registered callbacks. | |
std::unordered_set< asiolink::IOAddress, asiolink::IOAddress::Hash > | locked_leases_ |
A set of locked leases. | |
PostgreSQL Lease Manager.
This class provides the isc::dhcp::LeaseMgr interface to the PostgreSQL database. Use of this backend presupposes that a PostgreSQL database is available and that the Kea schema has been created within it.
Definition at line 92 of file pgsql_lease_mgr.h.
Statement Tags.
The contents of the enum are indexes into the list of compiled SQL statements
Definition at line 709 of file pgsql_lease_mgr.h.
isc::dhcp::PgSqlLeaseMgr::PgSqlLeaseMgr | ( | const db::DatabaseConnection::ParameterMap & | parameters | ) |
Constructor.
Uses the following keywords in the parameters passed to it to connect to the database:
Check the schema version and create an initial context.
parameters | A data structure relating keywords and values concerned with the database. |
isc::dhcp::NoDatabaseName | Mandatory database name not given |
isc::db::DbOpenError | Error opening the database or the schema version is incorrect. |
isc::db::DbOperationError | An operation on the open database has failed. |
Definition at line 1614 of file pgsql_lease_mgr.cc.
References createContext(), dbReconnect(), isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_NO_TLS_SUPPORT, isc::dhcp::DHCPSRV_PGSQL_TLS_SUPPORT, isc::db::PgSqlConnection::ensureSchemaVersion(), isc_throw, LOG_ERROR, LOG_INFO, isc::db::DatabaseConnection::redactedAccessString(), isc::dhcp::LeaseMgr::setExtendedInfoTablesEnabled(), and isc::db::PgSqlConnection::warned_about_tls.
|
virtual |
Destructor (closes database)
Definition at line 1655 of file pgsql_lease_mgr.cc.
|
overridevirtual |
Adds an IPv4 lease.
lease | lease to be added |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 1794 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_ADD_ADDR4, isc::dhcp::TrackingLeaseMgr::hasCallbacks(), INSERT_LEASE4, LOG_DEBUG, and isc::dhcp::TrackingLeaseMgr::trackAddLease().
|
overridevirtual |
Adds an IPv6 lease.
lease | lease to be added |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 1819 of file pgsql_lease_mgr.cc.
References isc::dhcp::Lease6::ACTION_IGNORE, isc::dhcp::LeaseMgr::addExtendedInfo6(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_ADD_ADDR6, isc::dhcp::LeaseMgr::getExtendedInfoTablesEnabled(), isc::dhcp::TrackingLeaseMgr::hasCallbacks(), INSERT_LEASE6, LOG_DEBUG, and isc::dhcp::TrackingLeaseMgr::trackAddLease().
|
overrideprotectedvirtual |
Add lease6 extended info into by-relay-id table.
lease_addr | The address of the lease. |
relay_id | The relay id from the relay header options. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3109 of file pgsql_lease_mgr.cc.
References ADD_RELAY_ID6, and isc_throw.
|
overrideprotectedvirtual |
Add lease6 extended info into by-remote-id table.
lease_addr | The address of the lease. |
remote_id | The remote id from the relay header options. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3145 of file pgsql_lease_mgr.cc.
References ADD_REMOTE_ID6, and isc_throw.
|
overridevirtual |
Return the by-relay-id table size.
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 3655 of file pgsql_lease_mgr.cc.
References COUNT_RELAY_ID6, and isc::db::PgSqlExchange::getColumnValue().
|
overridevirtual |
Return the by-remote-id table size.
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 3671 of file pgsql_lease_mgr.cc.
References COUNT_REMOTE_ID6, and isc::db::PgSqlExchange::getColumnValue().
|
overridevirtual |
Checks if the IPv4 lease limits set in the given user context are exceeded.
PostgreSQL implementation.
user_context | all or part of the lease's user context which, for the intents and purposes of lease limiting should have the following format (not all nodes are mandatory and values are given only as examples): { "ISC": { "limits": { "client-classes": [ { "name": "foo", "address-limit": 2 } ], "subnet": { "id": 1, "address-limit": 2 } } } } |
Implements isc::dhcp::LeaseMgr.
Definition at line 2797 of file pgsql_lease_mgr.cc.
References CHECK_LEASE4_LIMITS.
|
overridevirtual |
Checks if the IPv6 lease limits set in the given user context are exceeded.
MySQL implementation.
user_context | all or part of the lease's user context which, for the intents and purposes of lease limiting should have the following format (not all nodes are mandatory and values are given only as examples): { "ISC": { "limits": { "client-classes": [ { "name": "foo", "address-limit": 2, "prefix-limit": 1 } ], "subnet": { "id": 1, "address-limit": 2, "prefix-limit": 1 } } } } |
Implements isc::dhcp::LeaseMgr.
Definition at line 2802 of file pgsql_lease_mgr.cc.
References CHECK_LEASE6_LIMITS.
|
overridevirtual |
Clears the class-lease count map.
Implements isc::dhcp::LeaseMgr.
Definition at line 2870 of file pgsql_lease_mgr.cc.
References isc_throw.
|
overridevirtual |
Commit Transactions.
Commits all pending database operations. On databases that don't support transactions, this is a no-op.
PostgreSQL supports transactions but this manager does not use them.
Implements isc::dhcp::LeaseMgr.
Definition at line 3037 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_COMMIT, and LOG_DEBUG.
PgSqlLeaseContextPtr isc::dhcp::PgSqlLeaseMgr::createContext | ( | ) | const |
Create a new context.
The database is opened with all the SQL commands pre-compiled.
isc::dhcp::NoDatabaseName | Mandatory database name not given. |
isc::db::DbOperationError | An operation on the open database has failed. |
Definition at line 1728 of file pgsql_lease_mgr.cc.
References dbReconnect(), isc::db::DatabaseConnection::getIOService(), isc_throw, and NUM_STATEMENTS.
Referenced by PgSqlLeaseMgr().
|
static |
Attempts to reconnect the server to the lease DB backend manager.
This is a self-rescheduling function that attempts to reconnect to the server's lease DB backends after connectivity to one or more have been lost. Upon entry it will attempt to reconnect via LeaseMgrFactory::create. If this is successful, DHCP servicing is re-enabled and server returns to normal operation.
If reconnection fails and the maximum number of retries has not been exhausted, it will schedule a call to itself to occur at the configured retry interval. DHCP service remains disabled.
If the maximum number of retries has been exhausted an error is logged and the server shuts down.
This function is passed to the connection recovery mechanism. It will be invoked when a connection loss is detected.
db_reconnect_ctl | pointer to the ReconnectCtl containing the configured reconnect parameters. |
Definition at line 1659 of file pgsql_lease_mgr.cc.
References dbReconnect(), isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_LEASE_DB_RECONNECT_ATTEMPT_FAILED, isc::dhcp::DHCPSRV_PGSQL_LEASE_DB_RECONNECT_ATTEMPT_SCHEDULE, isc::dhcp::DHCPSRV_PGSQL_LEASE_DB_RECONNECT_FAILED, isc::dhcp::CfgMgr::instance(), isc::dhcp::TimerMgr::instance(), isc::db::DatabaseConnection::invokeDbFailedCallback(), isc::db::DatabaseConnection::invokeDbLostCallback(), isc::db::DatabaseConnection::invokeDbRecoveredCallback(), LOG_ERROR, LOG_INFO, isc::asiolink::IntervalTimer::ONE_SHOT, and isc::dhcp::LeaseMgrFactory::recreate().
Referenced by PgSqlLeaseMgr(), createContext(), dbReconnect(), and getVersion().
|
overridevirtual |
Deletes all expired-reclaimed DHCPv4 leases.
secs | Number of seconds since expiration of leases before they can be removed. Leases which have expired later than this time will not be deleted. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2731 of file pgsql_lease_mgr.cc.
References DELETE_LEASE4_STATE_EXPIRED, isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_DELETE_EXPIRED_RECLAIMED4, and LOG_DEBUG.
|
overridevirtual |
Deletes all expired-reclaimed DHCPv6 leases.
secs | Number of seconds since expiration of leases before they can be removed. Leases which have expired later than this time will not be deleted. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2738 of file pgsql_lease_mgr.cc.
References DELETE_LEASE6_STATE_EXPIRED, isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_DELETE_EXPIRED_RECLAIMED6, and LOG_DEBUG.
|
overrideprotectedvirtual |
Extended information / Bulk Lease Query shared interface.
Delete lease6 extended info from tables.
addr | The address of the lease. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3047 of file pgsql_lease_mgr.cc.
Referenced by updateLease6().
|
overridevirtual |
Deletes an IPv4 lease.
lease | IPv4 lease being deleted. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2630 of file pgsql_lease_mgr.cc.
References isc::db::PgSqlExchange::convertToDatabaseTime(), DELETE_LEASE4, isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_DELETE_ADDR, isc::dhcp::TrackingLeaseMgr::hasCallbacks(), isc::dhcp::Lease::INFINITY_LFT, isc_throw, LOG_DEBUG, isc::asiolink::IOAddress::toText(), isc::asiolink::IOAddress::toUint32(), and isc::dhcp::TrackingLeaseMgr::trackDeleteLease().
|
overridevirtual |
Deletes an IPv6 lease.
lease | IPv6 lease being deleted. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2677 of file pgsql_lease_mgr.cc.
References isc::dhcp::Lease6::ACTION_IGNORE, isc::db::PgSqlExchange::convertToDatabaseTime(), DELETE_LEASE6, isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_DELETE_ADDR, isc::dhcp::TrackingLeaseMgr::hasCallbacks(), isc::dhcp::Lease::INFINITY_LFT, isc_throw, LOG_DEBUG, isc::asiolink::IOAddress::toText(), and isc::dhcp::TrackingLeaseMgr::trackDeleteLease().
|
overridevirtual |
Returns the class lease count for a given class and lease type.
client_class | client class for which the count is desired |
ltype | type of lease for which the count is desired. Defaults to Lease::TYPE_V4. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2824 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), GET_LEASE4_COUNT_BY_CLASS, GET_LEASE6_COUNT_BY_CLASS, isc::db::PgSqlExchange::getColumnValue(), and isc::dhcp::Lease::TYPE_V4.
|
static |
Local version of getDBVersion() class method.
Definition at line 1760 of file pgsql_lease_mgr.cc.
References isc::db::PGSQL_SCHEMA_VERSION_MAJOR, and isc::db::PGSQL_SCHEMA_VERSION_MINOR.
Referenced by isc::dhcp::Dhcpv4Srv::getVersion(), and isc::dhcp::Dhcpv6Srv::getVersion().
|
overridevirtual |
Returns description of the backend.
This description may be multiline text that describes the backend.
Implements isc::dhcp::LeaseMgr.
Definition at line 3022 of file pgsql_lease_mgr.cc.
|
overridevirtual |
Returns a collection of expired DHCPv4 leases.
This method returns at most max_leases
expired leases. The leases returned haven't been reclaimed, i.e. the database query must exclude reclaimed leases from the results returned.
[out] | expired_leases | A container to which expired leases returned by the database backend are added. |
max_leases | A maximum number of leases to be returned. If this value is set to 0, all expired (but not reclaimed) leases are returned. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2431 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_EXPIRED4, GET_LEASE4_EXPIRE, and LOG_DEBUG.
|
overridevirtual |
Returns a collection of expired DHCPv6 leases.
This method returns at most max_leases
expired leases. The leases returned haven't been reclaimed, i.e. the database query must exclude reclaimed leases from the results returned.
[out] | expired_leases | A container to which expired leases returned by the database backend are added. |
max_leases | A maximum number of leases to be returned. If this value is set to 0, all expired (but not reclaimed) leases are returned. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2439 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_EXPIRED6, GET_LEASE6_EXPIRE, and LOG_DEBUG.
|
overridevirtual |
Returns existing IPv4 leases for specified client-id.
Although in the usual case there will be only one lease, for mobile clients or clients with multiple static/fixed/reserved leases there can be more than one. Thus return type is a container, not a single pointer.
clientid | client identifier |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2006 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_CLIENTID, GET_LEASE4_CLIENTID, and LOG_DEBUG.
|
overridevirtual |
Returns existing IPv4 lease for specified client-id.
There can be at most one lease for a given HW address in a single pool, so this method with either return a single lease or NULL.
clientid | client identifier |
subnet_id | identifier of the subnet that lease must belong to |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2029 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_SUBID_CLIENTID, GET_LEASE4_CLIENTID_SUBID, and LOG_DEBUG.
|
overridevirtual |
Returns an IPv4 lease for specified IPv4 address.
This method return a lease that is associated with a given address. For other query types (by hardware addr, by Client ID) there can be several leases in different subnets (e.g. for mobile clients that got address in different subnets). However, for a single address there can be only one lease, so this method returns a pointer to a single lease, not a container of leases.
addr | address of the searched lease |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 1923 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_ADDR4, GET_LEASE4_ADDR, LOG_DEBUG, isc::asiolink::IOAddress::toText(), and isc::asiolink::IOAddress::toUint32().
|
overridevirtual |
Returns existing IPv4 leases for specified hardware address.
Although in the usual case there will be only one lease, for mobile clients or clients with multiple static/fixed/reserved leases there can be more than one. Thus return type is a container, not a single pointer.
hwaddr | hardware address of the client |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 1947 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_HWADDR, GET_LEASE4_HWADDR, isc::dhcp::HWAddr::hwaddr_, LOG_DEBUG, and isc::dhcp::HWAddr::toText().
|
overridevirtual |
Returns existing IPv4 leases for specified hardware address and a subnet.
There can be at most one lease for a given HW address in a single pool, so this method with either return a single lease or NULL.
hwaddr | hardware address of the client |
subnet_id | identifier of the subnet that lease must belong to |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 1974 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_SUBID_HWADDR, GET_LEASE4_HWADDR_SUBID, isc::dhcp::HWAddr::hwaddr_, LOG_DEBUG, and isc::dhcp::HWAddr::toText().
|
overridevirtual |
Returns existing IPv6 lease for a given IPv6 address.
For a given address, we assume that there will be only one lease. The assumption here is that there will not be site or link-local addresses used, so there is no way of having address duplication.
type | specifies lease type: (NA, TA or PD) |
addr | address of the searched lease |
isc::BadValue | record retrieved from database had an invalid lease type field. |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2159 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_ADDR6, GET_LEASE6_ADDR, LOG_DEBUG, and isc::asiolink::IOAddress::toText().
|
overridevirtual |
Returns all IPv4 leases.
Implements isc::dhcp::LeaseMgr.
Definition at line 2104 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET4, GET_LEASE4, and LOG_DEBUG.
|
overridevirtual |
Returns range of IPv4 leases using paging.
This method implements paged browsing of the lease database. The first parameter specifies a page size. The second parameter is optional and specifies the starting address of the range. This address is excluded from the returned range. The IPv4 zero address (default) denotes that the first page should be returned. There is no guarantee about the order of returned leases.
The typical usage of this method is as follows:
lower_bound_address | IPv4 address used as lower bound for the returned range. |
page_size | maximum size of the page returned. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2122 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_PAGE4, GET_LEASE4_PAGE, isc_throw, and LOG_DEBUG.
|
overridevirtual |
Returns all IPv4 leases for the particular hostname.
hostname | hostname in lower case. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2081 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_HOSTNAME4, GET_LEASE4_HOSTNAME, and LOG_DEBUG.
|
overridevirtual |
Returns all IPv4 leases for the particular subnet identifier.
subnet_id | subnet identifier. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2057 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_SUBID4, GET_LEASE4_SUBID, and LOG_DEBUG.
|
overridevirtual |
The following queries are used to fulfill Bulk Lease Query queries.
They rely on relay data contained in lease's user-context when the extended-store-info flag is enabled.
Returns existing IPv4 leases with a given relay-id.
relay_id | RAI Relay-ID sub-option value for relay_id of interest |
lower_bound_address | IPv4 address used as lower bound for the returned range. |
page_size | maximum size of the page returned. |
qry_start_time | when not zero, only leases whose CLTT is greater than or equal to this value will be included |
qry_end_time | when not zero, only leases whose CLTT is less than or equal to this value will be included |
Implements isc::dhcp::LeaseMgr.
Definition at line 3201 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_RELAYID4, GET_LEASE4_RELAYID, GET_LEASE4_RELAYID_QET, GET_LEASE4_RELAYID_QSET, GET_LEASE4_RELAYID_QST, isc_throw, and LOG_DEBUG.
|
overridevirtual |
Returns existing IPv4 leases with a given remote-id.
remote_id | RAI Remote-ID sub-option value for remote-id of interest |
lower_bound_address | IPv4 address used as lower bound for the returned range. |
page_size | maximum size of the page returned. |
qry_start_time | when not zero, only leases whose CLTT is greater than or equal to this value will be included. Defaults to zero. |
qry_end_time | when not zero, only leases whose CLTT is less than or equal to this value will be included. Defaults to zero. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3290 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_REMOTEID4, GET_LEASE4_REMOTEID, GET_LEASE4_REMOTEID_QET, GET_LEASE4_REMOTEID_QSET, GET_LEASE4_REMOTEID_QST, isc_throw, and LOG_DEBUG.
|
overridevirtual |
Returns all IPv6 leases.
Implements isc::dhcp::LeaseMgr.
Definition at line 2375 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET6, GET_LEASE6, and LOG_DEBUG.
|
overridevirtual |
Returns range of IPv6 leases using paging.
This method implements paged browsing of the lease database. The first parameter specifies a page size. The second parameter is optional and specifies the starting address of the range. This address is excluded from the returned range. The IPv6 zero address (default) denotes that the first page should be returned. There is no guarantee about the order of returned leases.
The typical usage of this method is as follows:
lower_bound_address | IPv6 address used as lower bound for the returned range. |
page_size | maximum size of the page returned. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2393 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_PAGE6, GET_LEASE6_PAGE, isc_throw, LOG_DEBUG, and isc::db::PsqlBindArray::toText().
|
overridevirtual |
Returns all IPv6 leases for the DUID.
Implements isc::dhcp::LeaseMgr.
Definition at line 2330 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_DUID, GET_LEASE6_DUID, isc::dhcp::DUID::getDuid(), LOG_DEBUG, and isc::dhcp::IdentifierType< min_size, max_size >::toText().
|
overridevirtual |
Returns all IPv6 leases for the particular hostname.
hostname | hostname in lower case. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2352 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_HOSTNAME6, GET_LEASE6_HOSTNAME, and LOG_DEBUG.
|
overridevirtual |
Returns existing IPv6 leases for a given DUID+IA combination.
Although in the usual case there will be only one lease, for mobile clients or clients with multiple static/fixed/reserved leases there can be more than one. Thus return type is a container, not a single pointer.
type | specifies lease type: (NA, TA or PD) |
duid | client DUID |
iaid | IA identifier |
isc::BadValue | record retrieved from database had an invalid lease type field. |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2189 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::PgSqlLease6Exchange::Uiaid::dbInputString(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_IAID_DUID, GET_LEASE6_DUID_IAID, isc::dhcp::DUID::getDuid(), LOG_DEBUG, and isc::dhcp::IdentifierType< min_size, max_size >::toText().
|
overridevirtual |
Returns existing IPv6 lease for a given DUID+IA combination.
type | specifies lease type: (NA, TA or PD) |
duid | client DUID |
iaid | IA identifier |
subnet_id | subnet id of the subnet the lease belongs to |
isc::BadValue | record retrieved from database had an invalid lease type field. |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2223 of file pgsql_lease_mgr.cc.
References isc::dhcp::PgSqlLease6Exchange::Uiaid::dbInputString(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_IAID_SUBID_DUID, GET_LEASE6_DUID_IAID_SUBID, isc::dhcp::DUID::getDuid(), LOG_DEBUG, and isc::dhcp::IdentifierType< min_size, max_size >::toText().
|
overridevirtual |
Returns all IPv6 leases for the particular subnet identifier.
subnet_id | subnet identifier. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2262 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_SUBID6, GET_LEASE6_SUBID, and LOG_DEBUG.
|
overridevirtual |
Returns a page of IPv6 leases for a subnet identifier.
subnet_id | subnet identifier. |
lower_bound_address | IPv6 address used as lower bound for the returned range. |
page_size | maximum size of the page returned. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2286 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_SUBID_PAGE6, GET_LEASE6_SUBID_PAGE, isc_throw, and LOG_DEBUG.
|
overridevirtual |
Returns existing IPv6 leases with a given relay-id.
relay_id | DUID for relay_id of interest. |
lower_bound_address | IPv4 address used as lower bound for the returned range. |
page_size | maximum size of the page returned. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3464 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_RELAYID6, GET_RELAY_ID6, isc_throw, and LOG_DEBUG.
|
overridevirtual |
Returns existing IPv6 leases with a given remote-id.
remote_id | remote-id option data of interest. |
lower_bound_address | IPv4 address used as lower bound for the returned range. |
page_size | maximum size of the page returned. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3510 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_REMOTEID6, GET_REMOTE_ID6, isc_throw, and LOG_DEBUG.
|
overridevirtual |
Returns backend name.
Each backend have specific name.
Implements isc::dhcp::LeaseMgr.
Definition at line 3007 of file pgsql_lease_mgr.cc.
|
inlineoverridevirtual |
Return backend type.
Returns the type of the backend (e.g. "mysql", "memfile" etc.)
Implements isc::dhcp::LeaseMgr.
Definition at line 661 of file pgsql_lease_mgr.h.
|
overridevirtual |
Returns backend version.
timer_name | The DB reconnect timer name. |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3027 of file pgsql_lease_mgr.cc.
References dbReconnect(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_GET_VERSION, isc::db::DatabaseConnection::getIOService(), isc::db::PgSqlConnection::getVersion(), and LOG_DEBUG.
|
overridevirtual |
Checks if JSON support is enabled in the database.
PostgreSQL implementation.
Implements isc::dhcp::LeaseMgr.
Definition at line 2807 of file pgsql_lease_mgr.cc.
References isc::db::PgSqlExchange::getColumnValue(), and IS_JSON_SUPPORTED.
|
overridevirtual |
Recount the leases per class for V4 leases.
Implements isc::dhcp::LeaseMgr.
Definition at line 2860 of file pgsql_lease_mgr.cc.
References isc_throw.
|
overridevirtual |
Recount the leases per class for V6 leases.
Implements isc::dhcp::LeaseMgr.
Definition at line 2865 of file pgsql_lease_mgr.cc.
References isc_throw.
|
overridevirtual |
Rollback Transactions.
Rolls back all pending database operations. On databases that don't support transactions, this is a no-op.
PostgreSQL supports transactions but this manager does not use them.
Implements isc::dhcp::LeaseMgr.
Definition at line 3042 of file pgsql_lease_mgr.cc.
References isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_ROLLBACK, and LOG_DEBUG.
|
overridevirtual |
Creates and runs the IPv4 lease stats query.
It creates an instance of a PgSqlLeaseStatsQuery4 and then invokes its start method, which fetches its statistical data result set by executing the ALL_LEASE_STATS4 query. The query object is then returned.
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2885 of file pgsql_lease_mgr.cc.
References ALL_LEASE4_STATS.
|
overridevirtual |
Creates and runs the IPv6 lease stats query.
It creates an instance of a PgSqlLeaseStatsQuery and then invokes its start method, which fetches its statistical data result set by executing the ALL_LEASE_STATS6 query. The query object is then returned.
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2941 of file pgsql_lease_mgr.cc.
References ALL_LEASE6_STATS.
|
overridevirtual |
Creates and runs the IPv4 lease stats query for all subnets and pools.
LeaseMgr derivations implement this method such that it creates and returns an instance of an LeaseStatsQuery whose result set has been populated with up to date IPv4 lease statistical data for all subnets and pools. Each row of the result set is an LeaseStatRow which ordered ascending by subnet ID and pool ID.
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2898 of file pgsql_lease_mgr.cc.
References ALL_POOL_LEASE4_STATS.
|
overridevirtual |
Creates and runs the IPv6 lease stats query for all subnets and pools.
LeaseMgr derivations implement this method such that it creates and returns an instance of an LeaseStatsQuery whose result set has been populated with up to date IPv6 lease statistical data for all subnets and pools. Each row of the result set is an LeaseStatRow which ordered ascending by subnet ID and pool ID.
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2954 of file pgsql_lease_mgr.cc.
References ALL_POOL_LEASE6_STATS.
|
overridevirtual |
Creates and runs the IPv4 lease stats query for a single subnet.
It creates an instance of a PgSqlLeaseStatsQuery4 for a single subnet query and then invokes its start method in which the query constructs its statistical data result set. The query object is then returned.
subnet_id | id of the subnet for which stats are desired |
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2911 of file pgsql_lease_mgr.cc.
References SUBNET_LEASE4_STATS.
|
overridevirtual |
Creates and runs the IPv6 lease stats query for a single subnet.
It creates an instance of a PgSqlLeaseStatsQuery6 for a single subnet query and then invokes its start method in which the query constructs its statistical data result set. The query object is then returned.
subnet_id | id of the subnet for which stats are desired |
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2967 of file pgsql_lease_mgr.cc.
References SUBNET_LEASE6_STATS.
|
overridevirtual |
Creates and runs the IPv4 lease stats query for a single subnet.
It creates an instance of a PgSqlLeaseStatsQuery4 for a subnet range query and then invokes its start method in which the query constructs its statistical data result set. The query object is then returned.
first_subnet_id | first subnet in the range of subnets |
last_subnet_id | last subnet in the range of subnets |
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2925 of file pgsql_lease_mgr.cc.
References SUBNET_RANGE_LEASE4_STATS.
|
overridevirtual |
Creates and runs the IPv6 lease stats query for a single subnet.
It creates an instance of a PgSqlLeaseStatsQuery6 for a subnet range query and then invokes its start method in which the query constructs its statistical data result set. The query object is then returned.
first_subnet_id | first subnet in the range of subnets |
last_subnet_id | last subnet in the range of subnets |
Reimplemented from isc::dhcp::LeaseMgr.
Definition at line 2981 of file pgsql_lease_mgr.cc.
References SUBNET_RANGE_LEASE6_STATS.
|
overridevirtual |
Updates IPv4 lease.
Updates the record of the lease in the database (as identified by the address) with the data in the passed lease object.
lease4 | The lease to be updated. |
isc::dhcp::NoSuchLease | Attempt to update a lease that did not exist. |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2510 of file pgsql_lease_mgr.cc.
References isc::db::PgSqlExchange::convertToDatabaseTime(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_UPDATE_ADDR4, isc::dhcp::TrackingLeaseMgr::hasCallbacks(), isc::dhcp::Lease::INFINITY_LFT, LOG_DEBUG, isc::dhcp::TrackingLeaseMgr::trackUpdateLease(), and UPDATE_LEASE4.
Referenced by upgradeExtendedInfo4().
|
overridevirtual |
Updates IPv6 lease.
Updates the record of the lease in the database (as identified by the address) with the data in the passed lease object.
lease6 | The lease to be updated. |
isc::dhcp::NoSuchLease | Attempt to update a lease that did not exist. |
isc::db::DbOperationError | An operation on the open database has failed. |
Implements isc::dhcp::LeaseMgr.
Definition at line 2551 of file pgsql_lease_mgr.cc.
References isc::dhcp::Lease6::ACTION_DELETE, isc::dhcp::Lease6::ACTION_IGNORE, isc::dhcp::Lease6::ACTION_UPDATE, isc::dhcp::LeaseMgr::addExtendedInfo6(), isc::db::PgSqlExchange::convertToDatabaseTime(), deleteExtendedInfo6(), isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_UPDATE_ADDR6, isc::dhcp::LeaseMgr::getExtendedInfoTablesEnabled(), isc::dhcp::TrackingLeaseMgr::hasCallbacks(), isc::dhcp::Lease::INFINITY_LFT, LOG_DEBUG, isc::db::PsqlBindArray::toText(), isc::dhcp::TrackingLeaseMgr::trackUpdateLease(), and UPDATE_LEASE6.
Referenced by upgradeExtendedInfo6().
|
overridevirtual |
Upgrade extended info (v4).
For all leases with a not null user context.
page_size | The page size used for retrieval. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3379 of file pgsql_lease_mgr.cc.
References isc::db::PsqlBindArray::add(), isc::dhcp::DHCPSRV_DBG_TRACE, isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_UPGRADE_EXTENDED_INFO4, isc::dhcp::DHCPSRV_PGSQL_UPGRADE_EXTENDED_INFO4_ERROR, isc::dhcp::DHCPSRV_PGSQL_UPGRADE_EXTENDED_INFO4_PAGE, isc::dhcp::LeaseMgr::extractLease4ExtendedInfo(), GET_LEASE4_UCTX_PAGE, isc::dhcp::CfgMgr::instance(), isc::asiolink::IOAddress::IPV4_ZERO_ADDRESS(), LOG_DEBUG, LOG_INFO, updateLease4(), and isc::dhcp::LeaseMgr::upgradeLease4ExtendedInfo().
|
overridevirtual |
Upgrade extended info (v6).
All leases with a not null user context.
page_size | The page size used for retrieval. |
Implements isc::dhcp::LeaseMgr.
Definition at line 3555 of file pgsql_lease_mgr.cc.
References isc::dhcp::LeaseMgr::addExtendedInfo6(), isc::dhcp::DHCPSRV_DBG_TRACE, isc::dhcp::DHCPSRV_DBG_TRACE_DETAIL, isc::dhcp::dhcpsrv_logger, isc::dhcp::DHCPSRV_PGSQL_UPGRADE_EXTENDED_INFO6, isc::dhcp::DHCPSRV_PGSQL_UPGRADE_EXTENDED_INFO6_ERROR, isc::dhcp::DHCPSRV_PGSQL_UPGRADE_EXTENDED_INFO6_PAGE, GET_LEASE6_UCTX_PAGE, isc::dhcp::LeaseMgr::getExtendedInfoTablesEnabled(), isc::dhcp::CfgMgr::instance(), isc::asiolink::IOAddress::IPV6_ZERO_ADDRESS(), LOG_DEBUG, LOG_INFO, isc::db::PsqlBindArray::toText(), updateLease6(), isc::dhcp::LeaseMgr::upgradeLease6ExtendedInfo(), and wipeExtendedInfoTables6().
|
overridevirtual |
Wipe extended info table (v6).
Implements isc::dhcp::LeaseMgr.
Definition at line 3636 of file pgsql_lease_mgr.cc.
References WIPE_RELAY_ID6, and WIPE_REMOTE_ID6.
Referenced by upgradeExtendedInfo6().
|
overridevirtual |
Removes specified IPv4 leases.
This rather dangerous method is able to remove all leases from specified subnet.
subnet_id | identifier of the subnet |
Implements isc::dhcp::LeaseMgr.
Definition at line 2997 of file pgsql_lease_mgr.cc.
References isc_throw.
|
overridevirtual |
Removed specified IPv6 leases.
This rather dangerous method is able to remove all leases from specified subnet.
subnet_id | identifier of the subnet |
Implements isc::dhcp::LeaseMgr.
Definition at line 3002 of file pgsql_lease_mgr.cc.
References isc_throw.
|
overridevirtual |
Write V4 leases to a file.
Implements isc::dhcp::LeaseMgr.
Definition at line 2875 of file pgsql_lease_mgr.cc.
References isc_throw.
|
overridevirtual |
Write V6 leases to a file.
Implements isc::dhcp::LeaseMgr.
Definition at line 2880 of file pgsql_lease_mgr.cc.
References isc_throw.