Kea  1.9.9-git
cql_lease_mgr.h
Go to the documentation of this file.
1 // Copyright (C) 2018-2021 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:
44 
73  explicit CqlLeaseMgr(const db::DatabaseConnection::ParameterMap& parameters);
74 
76  virtual ~CqlLeaseMgr();
77 
79  static std::string getDBVersion();
80 
90  virtual bool addLease(const Lease4Ptr& lease) override;
91 
101  virtual bool addLease(const Lease6Ptr& lease) override;
102 
106 
122  virtual Lease4Ptr
123  getLease4(const isc::asiolink::IOAddress& addr) const override;
124 
138  virtual Lease4Collection
139  getLease4(const isc::dhcp::HWAddr& hwaddr) const override;
140 
154  virtual Lease4Ptr getLease4(const isc::dhcp::HWAddr& hwaddr,
155  SubnetID subnet_id) const override;
156 
170  virtual Lease4Collection getLease4(const ClientId& clientid) const override;
171 
184  virtual Lease4Ptr getLease4(const ClientId& clientid,
185  SubnetID subnet_id) const override;
186 
194  virtual Lease4Collection getLeases4(SubnetID subnet_id) const override;
195 
201  virtual Lease4Collection getLeases4(const std::string& hostname) const override;
202 
208  virtual Lease4Collection getLeases4() const override;
209 
234  virtual Lease4Collection
235  getLeases4(const asiolink::IOAddress& lower_bound_address,
236  const LeasePageSize& page_size) const override;
237 
253  virtual Lease6Ptr
254  getLease6(Lease::Type type,
255  const isc::asiolink::IOAddress& addr) const override;
256 
275  const DUID& duid,
276  uint32_t iaid) const override;
277 
292  const DUID& duid,
293  uint32_t iaid,
294  SubnetID subnet_id) const override;
295 
303  virtual Lease6Collection getLeases6(SubnetID subnet_id) const override;
304 
310  virtual Lease6Collection getLeases6(const std::string& hostname) const override;
311 
317  virtual Lease6Collection getLeases6() const override;
318 
322  virtual Lease6Collection getLeases6(const DUID& duid) const override;
323 
356  virtual Lease6Collection
357  getLeases6(const asiolink::IOAddress& lower_bound_address,
358  const LeasePageSize& page_size) const override;
359 
370  virtual void getExpiredLeases4(Lease4Collection& expired_leases,
371  const size_t max_leases) const override;
372 
383  virtual void getExpiredLeases6(Lease6Collection& expired_leases,
384  const size_t max_leases) const override;
386 
407  virtual void updateLease4(const Lease4Ptr& lease4) override;
408 
417 
429  virtual void updateLease6(const Lease6Ptr& lease6) override;
430 
445  bool deleteLease(const Lease4Ptr& lease) override final;
446 
461  bool deleteLease(const Lease6Ptr& lease) override final;
462 
470  virtual uint64_t
471  deleteExpiredReclaimedLeases4(const uint32_t secs) override;
472 
480  virtual uint64_t
481  deleteExpiredReclaimedLeases6(const uint32_t secs) override;
482 
491  virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override;
492 
501  virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID& subnet_id) override;
502 
512  virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery4(const SubnetID& first_subnet_id,
513  const SubnetID& last_subnet_id) override;
522  virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override;
523 
532  virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID& subnet_id) override;
533 
543  virtual LeaseStatsQueryPtr startSubnetRangeLeaseStatsQuery6(const SubnetID& first_subnet_id,
544  const SubnetID& last_subnet_id) override;
554  virtual size_t wipeLeases4(const SubnetID& subnet_id) override;
555 
565  virtual size_t wipeLeases6(const SubnetID& subnet_id) override;
566 
570  virtual std::string getType() const override {
571  return (std::string("cql"));
572  }
573 
577  virtual std::string getName() const override;
578 
584  virtual std::string getDescription() const override;
585 
593  virtual VersionPair getVersion() const override;
594 
598  virtual void commit() override;
599 
603  virtual void rollback() override;
604 
605 private:
606 
609 
611  mutable db::CqlConnection dbconn_;
612 };
613 
614 } // namespace dhcp
615 } // namespace isc
616 
617 #endif // CQL_LEASE_MGR_H
bool deleteLease(const Lease4Ptr &lease) overridefinal
Deletes an IPv4 lease.
virtual void rollback() override
Rollback Transactions.
virtual void getExpiredLeases6(Lease6Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv6 leases.
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Definition: lease_mgr.h:207
virtual uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override
Deletes all expired and reclaimed DHCPv4 leases.
virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override
Creates and runs the IPv4 lease stats query.
Abstract Lease Manager.
Definition: lease_mgr.h:222
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 bool addLease(const Lease4Ptr &lease) override
Adds an IPv4 lease.
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 LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID &subnet_id) override
Creates and runs the IPv6 lease stats query for a single subnet.
An abstract API for lease database.
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
Definition: lease.h:487
virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override
Deletes all expired and reclaimed DHCPv6 leases.
Holds DUID (DHCPv6 Unique Identifier)
Definition: duid.h:27
virtual void updateLease6(const Lease6Ptr &lease6) override
Updates IPv6 lease.
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID &subnet_id) override
Creates and runs the IPv4 lease stats query for a single subnet.
virtual Lease4Collection getLeases4() const override
Returns all IPv4 leases.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:283
virtual size_t wipeLeases4(const SubnetID &subnet_id) override
Removes specified IPv4 leases.
static std::string getDBVersion()
Local version of getDBVersion() class method.
virtual void updateLease4(const Lease4Ptr &lease4) override
Updates IPv4 lease.
virtual ~CqlLeaseMgr()
Destructor (closes database)
virtual size_t wipeLeases6(const SubnetID &subnet_id) override
Removed specified IPv6 leases.
virtual VersionPair getVersion() const override
Returns backend version.
std::pair< uint32_t, uint32_t > VersionPair
Pair containing major and minor versions.
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:640
virtual std::string getDescription() const override
Returns description of the backend.
virtual std::string getType() const override
Return backend type.
Defines the logger used by the top-level component of kea-dhcp-ddns.
CqlLeaseMgr(const db::DatabaseConnection::ParameterMap &parameters)
Constructor.
virtual Lease6Ptr getLease6(Lease::Type type, const isc::asiolink::IOAddress &addr) const override
Returns existing IPv6 lease for a given IPv6 address.
Type
Type of lease or pool.
Definition: lease.h:50
Holds Client identifier or client IPv4 address.
Definition: duid.h:111
Hardware type that represents information from DHCPv4 packet.
Definition: hwaddr.h:20
virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override
Creates and runs the IPv6 lease stats query.
Wraps value holding size of the page with leases.
Definition: lease_mgr.h:43
virtual std::string getName() const override
Returns name of the database.
Common CQL connector pool.
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
Cassandra Lease Manager.
Definition: cql_lease_mgr.h:42
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Definition: lease.h:492
virtual void commit() override
Commit Transactions.
virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress &addr) const override
Basic lease access methods.
virtual void getExpiredLeases4(Lease4Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv4 leases.
virtual Lease6Collection getLeases6() const override
Returns all IPv6 leases.
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)
Definition: lease.h:24