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
std::pair< uint32_t, uint32_t > VersionPair
Pair containing major and minor versions.
Definition: lease_mgr.h:40
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:455
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:245
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::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:604
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:38
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:460
virtual void commit() override
Commit Transactions.
virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress &addr) const override
Basic lease access methods.
virtual bool deleteLease(const isc::asiolink::IOAddress &addr) override
Deletes a lease.
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