Kea 2.0.1
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
34namespace isc {
35namespace dhcp {
36
42class CqlLeaseMgr : public LeaseMgr {
43public:
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
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
605private:
606
609
611 mutable db::CqlConnection dbconn_;
612};
613
614} // namespace dhcp
615} // namespace isc
616
617#endif // CQL_LEASE_MGR_H
Common CQL connector pool.
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
Holds Client identifier or client IPv4 address.
Definition: duid.h:111
Cassandra Lease Manager.
Definition: cql_lease_mgr.h:42
virtual size_t wipeLeases6(const SubnetID &subnet_id) override
Removed specified IPv6 leases.
virtual std::string getType() const override
Return backend type.
virtual void getExpiredLeases4(Lease4Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv4 leases.
virtual LeaseStatsQueryPtr startLeaseStatsQuery4() override
Creates and runs the IPv4 lease stats query.
virtual Lease6Collection getLeases6() const override
Returns all IPv6 leases.
virtual void updateLease6(const Lease6Ptr &lease6) override
Updates IPv6 lease.
virtual std::string getDescription() const override
Returns description of the backend.
bool deleteLease(const Lease4Ptr &lease) override final
Deletes an IPv4 lease.
virtual Lease4Ptr getLease4(const isc::asiolink::IOAddress &addr) const override
Basic lease access methods.
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery6(const SubnetID &subnet_id) override
Creates and runs the IPv6 lease stats query for a single subnet.
virtual LeaseStatsQueryPtr startSubnetLeaseStatsQuery4(const SubnetID &subnet_id) override
Creates and runs the IPv4 lease stats query for a single subnet.
static std::string getDBVersion()
Local version of getDBVersion() class method.
virtual std::string getName() const override
Returns name of the database.
virtual size_t wipeLeases4(const SubnetID &subnet_id) override
Removes specified IPv4 leases.
virtual void getExpiredLeases6(Lease6Collection &expired_leases, const size_t max_leases) const override
Returns a collection of expired DHCPv6 leases.
virtual bool addLease(const Lease4Ptr &lease) override
Adds an IPv4 lease.
virtual Lease4Collection getLeases4() const override
Returns all IPv4 leases.
virtual VersionPair getVersion() const override
Returns backend version.
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 uint64_t deleteExpiredReclaimedLeases4(const uint32_t secs) override
Deletes all expired and reclaimed DHCPv4 leases.
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 rollback() override
Rollback Transactions.
virtual void updateLease4(const Lease4Ptr &lease4) override
Updates IPv4 lease.
virtual uint64_t deleteExpiredReclaimedLeases6(const uint32_t secs) override
Deletes all expired and reclaimed DHCPv6 leases.
CqlLeaseMgr(const db::DatabaseConnection::ParameterMap &parameters)
Constructor.
virtual ~CqlLeaseMgr()
Destructor (closes database)
virtual void commit() override
Commit Transactions.
virtual LeaseStatsQueryPtr startLeaseStatsQuery6() override
Creates and runs the IPv6 lease stats query.
virtual Lease6Ptr getLease6(Lease::Type type, const isc::asiolink::IOAddress &addr) const override
Returns existing IPv6 lease for a given IPv6 address.
Holds DUID (DHCPv6 Unique Identifier)
Definition: duid.h:27
Abstract Lease Manager.
Definition: lease_mgr.h:222
Wraps value holding size of the page with leases.
Definition: lease_mgr.h:43
An abstract API for lease database.
std::pair< uint32_t, uint32_t > VersionPair
Pair containing major and minor versions.
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Definition: lease.h:492
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:640
boost::shared_ptr< LeaseStatsQuery > LeaseStatsQueryPtr
Defines a pointer to a LeaseStatsQuery.
Definition: lease_mgr.h:207
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)
Definition: lease.h:24
std::vector< Lease4Ptr > Lease4Collection
A collection of IPv4 leases.
Definition: lease.h:487
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:283
Defines the logger used by the top-level component of kea-lfc.
Hardware type that represents information from DHCPv4 packet.
Definition: hwaddr.h:20
Type
Type of lease or pool.
Definition: lease.h:50