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
34namespace isc {
35namespace dhcp {
36
42class CqlLeaseMgr : public LeaseMgr {
43public:
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
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
564private:
566 mutable db::CqlConnection dbconn_;
567};
568
569} // namespace dhcp
570} // namespace isc
571
572#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.
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.
virtual bool deleteLease(const isc::asiolink::IOAddress &addr) override
Deletes a lease.
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.
Definition: lease_mgr.h:40
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Definition: lease.h:463
std::vector< Lease6Ptr > Lease6Collection
A collection of IPv6 leases.
Definition: lease.h:604
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:455
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:248
Defines the logger used by the top-level component of kea-dhcp-ddns.
Hardware type that represents information from DHCPv4 packet.
Definition: hwaddr.h:20
Type
Type of lease or pool.
Definition: lease.h:38