Kea  1.5.0
cql_lease_mgr.h
Go to the documentation of this file.
1 // Copyright (C) 2018 Internet Systems Consortium, Inc. ("ISC")
2 // Copyright (C) 2015-2018 Deutsche Telekom AG.
3 //
4 // Authors: Razvan Becheriu <razvan.becheriu@qualitance.com>
5 // Andrei Pavel <andrei.pavel@qualitance.com>
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 // http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 
19 #ifndef CQL_LEASE_MGR_H
20 #define CQL_LEASE_MGR_H
21 
22 #include <cql/cql_connection.h>
23 #include <cql/cql_exchange.h>
24 #include <dhcp/hwaddr.h>
26 #include <dhcpsrv/lease_mgr.h>
27 
28 #include <boost/scoped_ptr.hpp>
29 
30 #include <string>
31 #include <utility>
32 #include <vector>
33 
34 namespace isc {
35 namespace dhcp {
36 
42 class CqlLeaseMgr : public LeaseMgr {
43 public:
70  explicit CqlLeaseMgr(const db::DatabaseConnection::ParameterMap& parameters);
71 
73  virtual ~CqlLeaseMgr();
74 
76  static std::string getDBVersion();
77 
87  virtual bool addLease(const Lease4Ptr& lease) override;
88 
98  virtual bool addLease(const Lease6Ptr& lease) override;
99 
103 
119  virtual Lease4Ptr
120  getLease4(const isc::asiolink::IOAddress& addr) const override;
121 
135  virtual Lease4Collection
136  getLease4(const isc::dhcp::HWAddr& hwaddr) const override;
137 
151  virtual Lease4Ptr getLease4(const isc::dhcp::HWAddr& hwaddr,
152  SubnetID subnet_id) const override;
153 
167  virtual Lease4Collection getLease4(const ClientId& clientid) const override;
168 
180  virtual Lease4Ptr getLease4(const ClientId& client_id,
181  const HWAddr& hwaddr,
182  SubnetID subnet_id) const override;
183 
196  virtual Lease4Ptr getLease4(const ClientId& clientid,
197  SubnetID subnet_id) const override;
198 
206  virtual Lease4Collection getLeases4(SubnetID subnet_id) const override;
207 
213  virtual Lease4Collection getLeases4() const override;
214 
239  virtual Lease4Collection
240  getLeases4(const asiolink::IOAddress& lower_bound_address,
241  const LeasePageSize& page_size) const override;
242 
258  virtual Lease6Ptr
259  getLease6(Lease::Type type,
260  const isc::asiolink::IOAddress& addr) const override;
261 
280  const DUID& duid,
281  uint32_t iaid) const override;
282 
297  const DUID& duid,
298  uint32_t iaid,
299  SubnetID subnet_id) const override;
300 
308  virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
309 
315  virtual Lease6Collection getLeases6() const override;
316 
320  virtual Lease6Collection getLeases6(const DUID& duid) const override;
321 
354  virtual Lease6Collection
355  getLeases6(const asiolink::IOAddress& lower_bound_address,
356  const LeasePageSize& page_size) const override;
357 
368  virtual void getExpiredLeases4(Lease4Collection& expired_leases,
369  const size_t max_leases) const override;
370 
381  virtual void getExpiredLeases6(Lease6Collection& expired_leases,
382  const size_t max_leases) const override;
384 
396  virtual void updateLease4(const Lease4Ptr& lease4) override;
397 
406 
409  virtual void updateLease6(const Lease6Ptr& lease6) override;
410 
420  virtual bool deleteLease(const isc::asiolink::IOAddress& addr) override;
421 
429  virtual uint64_t
430  deleteExpiredReclaimedLeases4(const uint32_t secs) override;
431 
439  virtual uint64_t
440  deleteExpiredReclaimedLeases6(const uint32_t secs) override;
441 
450  virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
451 
460  virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
461 
471  virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
472  const SubnetID& last_subnet_id) override;
481  virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
482 
491  virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
492 
502  virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
503  const SubnetID& last_subnet_id) override;
513  virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
514 
524  virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
525 
529  virtual std::string getType() const override {
530  return (std::string("cql"));
531  }
532 
536  virtual std::string getName() const override;
537 
543  virtual std::string getDescription() const override;
544 
552  virtual VersionPair getVersion() const override;
553 
557  virtual void commit() override;
558 
562  virtual void rollback() override;
563 
564 private:
566  mutable db::CqlConnection dbconn_;
567 };
568 
569 } // namespace dhcp
570 } // namespace isc
571 
572 #endif // CQL_LEASE_MGR_H
isc::dhcp::LeasePageSize
Wraps value holding size of the page with leases.
Definition: lease_mgr.h:43
cql_connection.h
isc::dhcp::CqlLeaseMgr::getVersion
virtual VersionPair getVersion() const override
Returns backend version.
Definition: cql_lease_mgr.cc:2667
isc::dhcp::CqlLeaseMgr::getLeases6
virtual Lease6Collection getLeases6() const override
Returns all IPv6 leases.
Definition: cql_lease_mgr.cc:2382
isc::dhcp::Lease4Ptr
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:245
isc::dhcp::LeaseMgr
Abstract Lease Manager.
Definition: lease_mgr.h:222
isc::dhcp::Lease6Ptr
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Definition: lease.h:460
isc::dhcp::CqlLeaseMgr::wipeLeases4
virtual size_t wipeLeases4(const SubnetID &subnet_id) override
Removes specified IPv4 leases.
Definition: cql_lease_mgr.cc:2639
isc::dhcp::CqlLeaseMgr::getLease4
virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress &addr) const override
Basic lease access methods.
Definition: cql_lease_mgr.cc:2069
isc::dhcp::Lease::Type
Type
Type of lease or pool.
Definition: lease.h:38
isc::dhcp::CqlLeaseMgr::getDBVersion
static std::string getDBVersion()
Local version of getDBVersion() class method.
Definition: cql_lease_mgr.cc:2022
isc::dhcp::HWAddr
Hardware type that represents information from DHCPv4 packet.
Definition: hwaddr.h:20
isc::dhcp::CqlLeaseMgr::getDescription
virtual std::string getDescription() const override
Returns description of the backend.
Definition: cql_lease_mgr.cc:2662
isc::dhcp::CqlLeaseMgr::getLeases4
virtual Lease4Collection getLeases4() const override
Returns all IPv4 leases.
Definition: cql_lease_mgr.cc:2209
isc::dhcp::CqlLeaseMgr::startLeaseStatsQuery6
virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override
Creates and runs the IPv6 lease stats query.
Definition: cql_lease_mgr.cc:2611
isc::dhcp::CqlLeaseMgr::~CqlLeaseMgr
virtual ~CqlLeaseMgr()
Destructor (closes database)
Definition: cql_lease_mgr.cc:2016
isc::dhcp::VersionPair
std::pair< uint32_t, uint32_t > VersionPair
Pair containing major and minor versions.
Definition: lease_mgr.h:40
lease_mgr.h
An abstract API for lease database.
isc
Defines the logger used by the top-level component of kea-dhcp-ddns.
Definition: agent_parser.cc:144
isc::db::CqlConnection
Common CQL connector pool.
Definition: cql_connection.h:119
isc::dhcp::ClientId
Holds Client identifier or client IPv4 address.
Definition: duid.h:111
isc::dhcp::CqlLeaseMgr::deleteExpiredReclaimedLeases4
virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override
Deletes all expired and reclaimed DHCPv4 leases.
Definition: cql_lease_mgr.cc:2521
isc::dhcp::CqlLeaseMgr::startSubnetLeaseStatsQuery6
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID &subnet_id) override
Creates and runs the IPv6 lease stats query for a single subnet.
Definition: cql_lease_mgr.cc:2620
isc::dhcp::CqlLeaseMgr::startSubnetRangeLeaseStatsQuery4
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.
Definition: cql_lease_mgr.cc:2601
isc::dhcp::CqlLeaseMgr::getLease6
virtual Lease6Ptr getLease6(Lease::Type type, const isc::asiolink::IOAddress &addr) const override
Returns existing IPv6 lease for a given IPv6 address.
Definition: cql_lease_mgr.cc:2269
isc::dhcp::CqlLeaseMgr::updateLease6
virtual void updateLease6(const Lease6Ptr &lease6) override
Updates IPv6 lease.
Definition: cql_lease_mgr.cc:2476
isc::dhcp::CqlLeaseMgr::getExpiredLeases4
virtual void getExpiredLeases4(Lease4Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv4 leases.
Definition: cql_lease_mgr.cc:2440
isc::dhcp::CqlLeaseMgr::addLease
virtual bool addLease(const Lease4Ptr &lease) override
Adds an IPv4 lease.
Definition: cql_lease_mgr.cc:2031
hwaddr.h
isc::dhcp::CqlLeaseMgr
Cassandra Lease Manager.
Definition: cql_lease_mgr.h:42
isc::dhcp::CqlLeaseMgr::getType
virtual std::string getType() const override
Return backend type.
Definition: cql_lease_mgr.h:529
isc::dhcp::CqlLeaseMgr::startLeaseStatsQuery4
virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override
Creates and runs the IPv4 lease stats query.
Definition: cql_lease_mgr.cc:2583
isc::dhcp::CqlLeaseMgr::deleteLease
virtual bool deleteLease(const isc::asiolink::IOAddress &addr) override
Deletes a lease.
Definition: cql_lease_mgr.cc:2492
isc::dhcp::CqlLeaseMgr::commit
virtual void commit() override
Commit Transactions.
Definition: cql_lease_mgr.cc:2675
isc::dhcp::CqlLeaseMgr::rollback
virtual void rollback() override
Rollback Transactions.
Definition: cql_lease_mgr.cc:2681
isc::dhcp::Lease4Collection
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
Definition: lease.h:455
isc::dhcp::CqlLeaseMgr::updateLease4
virtual void updateLease4(const Lease4Ptr &lease4) override
Updates IPv4 lease.
Definition: cql_lease_mgr.cc:2460
isc::dhcp::CqlLeaseMgr::deleteExpiredReclaimedLeases6
virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override
Deletes all expired and reclaimed DHCPv6 leases.
Definition: cql_lease_mgr.cc:2552
isc::dhcp::CqlLeaseMgr::getName
virtual std::string getName() const override
Returns name of the database.
Definition: cql_lease_mgr.cc:2651
cql_exchange.h
isc::dhcp::CqlLeaseMgr::startSubnetRangeLeaseStatsQuery6
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.
Definition: cql_lease_mgr.cc:2629
isc::dhcp::LeaseStatsQueryPtr
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Definition: lease_mgr.h:207
isc::dhcp::DUID
Holds DUID (DHCPv6 Unique Identifier)
Definition: duid.h:27
isc::dhcp::CqlLeaseMgr::wipeLeases6
virtual size_t wipeLeases6(const SubnetID &subnet_id) override
Removed specified IPv6 leases.
Definition: cql_lease_mgr.cc:2645
isc::dhcp::SubnetID
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)
Definition: lease.h:24
isc::dhcp::Lease6Collection
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:604
isc::db::DatabaseConnection::ParameterMap
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
Definition: database_connection.h:152
dhcpsrv_exceptions.h
isc::dhcp::CqlLeaseMgr::getExpiredLeases6
virtual void getExpiredLeases6(Lease6Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv6 leases.
Definition: cql_lease_mgr.cc:2450
isc::dhcp::CqlLeaseMgr::startSubnetLeaseStatsQuery4
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID &subnet_id) override
Creates and runs the IPv4 lease stats query for a single subnet.
Definition: cql_lease_mgr.cc:2592
isc::dhcp::CqlLeaseMgr::CqlLeaseMgr
CqlLeaseMgr(const db::DatabaseConnection::ParameterMap &parameters)
Constructor.
Definition: cql_lease_mgr.cc:1992