Kea 2.5.5
memfile_lease_storage.h
Go to the documentation of this file.
1// Copyright (C) 2015-2023 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef MEMFILE_LEASE_STORAGE_H
8#define MEMFILE_LEASE_STORAGE_H
9
10#include <asiolink/io_address.h>
11#include <dhcpsrv/lease.h>
12#include <dhcpsrv/subnet_id.h>
13
14#include <boost/multi_index/indexed_by.hpp>
15#include <boost/multi_index/member.hpp>
16#include <boost/multi_index/mem_fun.hpp>
17#include <boost/multi_index/hashed_index.hpp>
18#include <boost/multi_index/ordered_index.hpp>
19#include <boost/multi_index_container.hpp>
20#include <boost/multi_index/composite_key.hpp>
21
22#include <functional>
23#include <vector>
24
25namespace isc {
26namespace dhcp {
27
29struct AddressIndexTag { };
30
33
36
39
42
45
48
50struct DuidIndexTag { };
51
54
57
59struct RelayIdIndexTag { };
60
63
64
78typedef boost::multi_index_container<
79 // It holds pointers to Lease6 objects.
81 boost::multi_index::indexed_by<
82 // Specification of the first index starts here.
83 // This index sorts leases by IPv6 addresses represented as
84 // IOAddress objects.
85 boost::multi_index::ordered_unique<
86 boost::multi_index::tag<AddressIndexTag>,
87 boost::multi_index::member<Lease, isc::asiolink::IOAddress, &Lease::addr_>
88 >,
89
90 // Specification of the second index starts here.
91 boost::multi_index::ordered_non_unique<
92 boost::multi_index::tag<DuidIaidTypeIndexTag>,
93 // This is a composite index that will be used to search for
94 // the lease using three attributes: DUID, IAID and lease type.
95 boost::multi_index::composite_key<
96 Lease6,
97 // The DUID can be retrieved from the Lease6 object using
98 // a getDuidVector const function.
99 boost::multi_index::const_mem_fun<Lease6, const std::vector<uint8_t>&,
101 // The two other ingredients of this index are IAID and
102 // lease type.
103 boost::multi_index::member<Lease6, uint32_t, &Lease6::iaid_>,
104 boost::multi_index::member<Lease6, Lease::Type, &Lease6::type_>
105 >
106 >,
107
108 // Specification of the third index starts here.
109 boost::multi_index::ordered_non_unique<
110 boost::multi_index::tag<ExpirationIndexTag>,
111 // This is a composite index that is used to search for
112 // the expired leases. Depending on the value of the first component
113 // of the search key, the reclaimed or not reclaimed leases can
114 // be searched.
115 boost::multi_index::composite_key<
116 Lease6,
117 // The boolean value specifying if lease is reclaimed or not.
118 boost::multi_index::const_mem_fun<Lease, bool,
120 // Lease expiration time.
121 boost::multi_index::const_mem_fun<Lease, int64_t,
123 >
124 >,
125
126 // Specification of the fourth index starts here.
127 // This index sorts leases by SubnetID.
128 boost::multi_index::ordered_non_unique<
129 boost::multi_index::tag<SubnetIdIndexTag>,
130 boost::multi_index::member<Lease, isc::dhcp::SubnetID,
132 >,
133
134 // Specification of the fifth index starts here
135 // This index is used to retrieve leases for matching duid.
136 boost::multi_index::ordered_non_unique<
137 boost::multi_index::tag<DuidIndexTag>,
138 boost::multi_index::const_mem_fun<Lease6,
139 const std::vector<uint8_t>&,
141 >,
142
143 // Specification of the sixth index starts here
144 // This index is used to retrieve leases for matching hostname.
145 boost::multi_index::ordered_non_unique<
146 boost::multi_index::tag<HostnameIndexTag>,
147 boost::multi_index::member<Lease, std::string, &Lease::hostname_>
148 >,
149
150 // Specification of the seventh index starts here.
151 boost::multi_index::ordered_non_unique<
152 boost::multi_index::tag<SubnetIdPoolIdIndexTag>,
153 // This is a composite index that combines two attributes of the
154 // Lease6 object: subnet id and pool id.
155 boost::multi_index::composite_key<
156 Lease6,
157 // The subnet id is held in the subnet_id_ member of Lease6
158 // class. Note that the subnet_id_ is defined in the base
159 // class (Lease) so we have to point to this class rather
160 // than derived class: Lease6.
161 boost::multi_index::member<Lease, SubnetID, &Lease::subnet_id_>,
162 // The pool id is held in the pool_id_ member of Lease6
163 // class. Note that the pool_id_ is defined in the base
164 // class (Lease) so we have to point to this class rather
165 // than derived class: Lease6.
166 boost::multi_index::member<Lease, uint32_t, &Lease::pool_id_>
167 >
168 >
169 >
170> Lease6Storage; // Specify the type name of this container.
171
188typedef boost::multi_index_container<
189 // It holds pointers to Lease4 objects.
190 Lease4Ptr,
191 // Specification of search indexes starts here.
192 boost::multi_index::indexed_by<
193 // Specification of the first index starts here.
194 // This index sorts leases by IPv4 addresses represented as
195 // IOAddress objects.
196 boost::multi_index::ordered_unique<
197 boost::multi_index::tag<AddressIndexTag>,
198 // The IPv4 address are held in addr_ members that belong to
199 // Lease class.
200 boost::multi_index::member<Lease, isc::asiolink::IOAddress, &Lease::addr_>
201 >,
202
203 // Specification of the second index starts here.
204 boost::multi_index::ordered_non_unique<
205 boost::multi_index::tag<HWAddressSubnetIdIndexTag>,
206 // This is a composite index that combines two attributes of the
207 // Lease4 object: hardware address and subnet id.
208 boost::multi_index::composite_key<
209 Lease4,
210 // The hardware address is held in the hwaddr_ member of the
211 // Lease4 object, which is a HWAddr object. Boost does not
212 // provide a key extractor for getting a member of a member,
213 // so we need a simple method for that.
214 boost::multi_index::const_mem_fun<Lease, const std::vector<uint8_t>&,
216 // The subnet id is held in the subnet_id_ member of Lease4
217 // class. Note that the subnet_id_ is defined in the base
218 // class (Lease) so we have to point to this class rather
219 // than derived class: Lease4.
220 boost::multi_index::member<Lease, SubnetID, &Lease::subnet_id_>
221 >
222 >,
223
224 // Specification of the third index starts here.
225 boost::multi_index::ordered_non_unique<
226 boost::multi_index::tag<ClientIdSubnetIdIndexTag>,
227 // This is a composite index that uses two values to search for a
228 // lease: client id and subnet id.
229 boost::multi_index::composite_key<
230 Lease4,
231 // The client id can be retrieved from the Lease4 object by
232 // calling getClientIdVector const function.
233 boost::multi_index::const_mem_fun<Lease4, const std::vector<uint8_t>&,
235 // The subnet id is accessed through the subnet_id_ member.
236 boost::multi_index::member<Lease, uint32_t, &Lease::subnet_id_>
237 >
238 >,
239
240 // Specification of the fourth index starts here.
241 boost::multi_index::ordered_non_unique<
242 boost::multi_index::tag<ExpirationIndexTag>,
243 // This is a composite index that will be used to search for
244 // the expired leases. Depending on the value of the first component
245 // of the search key, the reclaimed or not reclaimed leases will can
246 // be searched.
247 boost::multi_index::composite_key<
248 Lease4,
249 // The boolean value specifying if lease is reclaimed or not.
250 boost::multi_index::const_mem_fun<Lease, bool,
252 // Lease expiration time.
253 boost::multi_index::const_mem_fun<Lease, int64_t,
255 >
256 >,
257
258 // Specification of the fifth index starts here.
259 // This index sorts leases by SubnetID.
260 boost::multi_index::ordered_non_unique<
261 boost::multi_index::tag<SubnetIdIndexTag>,
262 boost::multi_index::member<Lease, isc::dhcp::SubnetID, &Lease::subnet_id_>
263 >,
264
265 // Specification of the sixth index starts here.
266 // This index is used to retrieve leases for matching hostname.
267 boost::multi_index::ordered_non_unique<
268 boost::multi_index::tag<HostnameIndexTag>,
269 boost::multi_index::member<Lease, std::string, &Lease::hostname_>
270 >,
271
272 // Specification of the seventh index starts here.
273 // This index is used to retrieve leases for matching remote id
274 // for Bulk Lease Query.
275 boost::multi_index::hashed_non_unique<
276 boost::multi_index::tag<RemoteIdIndexTag>,
277 boost::multi_index::member<Lease4,
278 std::vector<uint8_t>,
280 >,
281
282 // Specification of the eighth index starts here.
283 // This index is used to retrieve leases for matching relay id
284 // for Bulk Lease Query.
285 boost::multi_index::ordered_non_unique<
286 boost::multi_index::tag<RelayIdIndexTag>,
287 boost::multi_index::composite_key<
288 Lease4,
289 // Relay id.
290 boost::multi_index::member<Lease4,
291 std::vector<uint8_t>,
293 // Address.
294 boost::multi_index::member<Lease,
297 >
298 >,
299
300 // Specification of the ninth index starts here.
301 boost::multi_index::ordered_non_unique<
302 boost::multi_index::tag<SubnetIdPoolIdIndexTag>,
303 // This is a composite index that combines two attributes of the
304 // Lease4 object: subnet id and pool id.
305 boost::multi_index::composite_key<
306 Lease4,
307 // The subnet id is held in the subnet_id_ member of Lease4
308 // class. Note that the subnet_id_ is defined in the base
309 // class (Lease) so we have to point to this class rather
310 // than derived class: Lease4.
311 boost::multi_index::member<Lease, SubnetID, &Lease::subnet_id_>,
312 // The pool id is held in the pool_id_ member of Lease4
313 // class. Note that the pool_id_ is defined in the base
314 // class (Lease) so we have to point to this class rather
315 // than derived class: Lease4.
316 boost::multi_index::member<Lease, uint32_t, &Lease::pool_id_>
317 >
318 >
319 >
320> Lease4Storage; // Specify the type name for this container.
321
323
326
327
329typedef Lease6Storage::index<AddressIndexTag>::type Lease6StorageAddressIndex;
330
332typedef Lease6Storage::index<DuidIaidTypeIndexTag>::type Lease6StorageDuidIaidTypeIndex;
333
335typedef Lease6Storage::index<ExpirationIndexTag>::type Lease6StorageExpirationIndex;
336
338typedef Lease6Storage::index<SubnetIdIndexTag>::type Lease6StorageSubnetIdIndex;
339
341typedef Lease6Storage::index<SubnetIdPoolIdIndexTag>::type Lease6StorageSubnetIdPoolIdIndex;
342
344typedef Lease6Storage::index<DuidIndexTag>::type Lease6StorageDuidIndex;
345
347typedef Lease6Storage::index<HostnameIndexTag>::type Lease6StorageHostnameIndex;
348
350typedef Lease4Storage::index<AddressIndexTag>::type Lease4StorageAddressIndex;
351
353typedef Lease4Storage::index<ExpirationIndexTag>::type Lease4StorageExpirationIndex;
354
356typedef Lease4Storage::index<HWAddressSubnetIdIndexTag>::type
358
360typedef Lease4Storage::index<ClientIdSubnetIdIndexTag>::type
362
364typedef Lease4Storage::index<SubnetIdIndexTag>::type Lease4StorageSubnetIdIndex;
365
367typedef Lease4Storage::index<SubnetIdPoolIdIndexTag>::type Lease4StorageSubnetIdPoolIdIndex;
368
370typedef Lease4Storage::index<HostnameIndexTag>::type Lease4StorageHostnameIndex;
371
373typedef Lease4Storage::index<RemoteIdIndexTag>::type Lease4StorageRemoteIdIndex;
374
376typedef std::pair<Lease4StorageRemoteIdIndex::const_iterator,
377 Lease4StorageRemoteIdIndex::const_iterator> Lease4StorageRemoteIdRange;
378
380typedef Lease4Storage::index<RelayIdIndexTag>::type Lease4StorageRelayIdIndex;
381
383
386
387
390public:
396 const std::vector<uint8_t>& id)
397 : lease_addr_(lease_addr), id_(id) {
398 }
399
402
404 std::vector<uint8_t> id_;
405};
406
408typedef boost::shared_ptr<Lease6ExtendedInfo> Lease6ExtendedInfoPtr;
409
412
425typedef boost::multi_index_container<
426 // It holds pointers to lease6 extended info.
428 boost::multi_index::indexed_by<
429 // First index is by relay id and lease address.
430 boost::multi_index::ordered_non_unique<
431 boost::multi_index::tag<RelayIdIndexTag>,
432 boost::multi_index::composite_key<
434 boost::multi_index::member<Lease6ExtendedInfo,
435 std::vector<uint8_t>,
437 boost::multi_index::member<Lease6ExtendedInfo,
440 >
441 >,
442
443 // Last index is by lease address.
444 boost::multi_index::hashed_non_unique<
445 boost::multi_index::tag<LeaseAddressIndexTag>,
446 boost::multi_index::member<Lease6ExtendedInfo,
449 >
450 >
452
466typedef boost::multi_index_container<
467 // It holds pointers to lease6 extended info.
469 boost::multi_index::indexed_by<
470 // First index is by remote id.
471 boost::multi_index::hashed_non_unique<
472 boost::multi_index::tag<RemoteIdIndexTag>,
473 boost::multi_index::member<Lease6ExtendedInfo,
474 std::vector<uint8_t>,
476 >,
477
478 // Last index is by lease address.
479 boost::multi_index::hashed_non_unique<
480 boost::multi_index::tag<LeaseAddressIndexTag>,
481 boost::multi_index::member<Lease6ExtendedInfo,
484 >
485 >
487
489typedef Lease6ExtendedInfoRelayIdTable::index<RelayIdIndexTag>::type
491
493typedef Lease6ExtendedInfoRelayIdTable::index<LeaseAddressIndexTag>::type
495
497typedef Lease6ExtendedInfoRemoteIdTable::index<RemoteIdIndexTag>::type
499
501typedef std::pair<RemoteIdIndex::const_iterator, RemoteIdIndex::const_iterator>
503
505typedef Lease6ExtendedInfoRemoteIdTable::index<LeaseAddressIndexTag>::type
507
509
510} // end of isc::dhcp namespace
511} // end of isc namespace
512
513#endif // MEMFILE_LEASE_STORAGE_H
Lease6 extended informations for Bulk Lease Query.
Lease6ExtendedInfo(const isc::asiolink::IOAddress &lease_addr, const std::vector< uint8_t > &id)
Constructor.
std::vector< uint8_t > id_
Remote or relay opaque identifier.
isc::asiolink::IOAddress lease_addr_
Lease address.
boost::multi_index_container< Lease4Ptr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< AddressIndexTag >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< HWAddressSubnetIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::const_mem_fun< Lease, const std::vector< uint8_t > &, &Lease::getHWAddrVector >, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ClientIdSubnetIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::const_mem_fun< Lease4, const std::vector< uint8_t > &, &Lease4::getClientIdVector >, boost::multi_index::member< Lease, uint32_t, &Lease::subnet_id_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ExpirationIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::const_mem_fun< Lease, bool, &Lease::stateExpiredReclaimed >, boost::multi_index::const_mem_fun< Lease, int64_t, &Lease::getExpirationTime > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdIndexTag >, boost::multi_index::member< Lease, isc::dhcp::SubnetID, &Lease::subnet_id_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< HostnameIndexTag >, boost::multi_index::member< Lease, std::string, &Lease::hostname_ > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< RemoteIdIndexTag >, boost::multi_index::member< Lease4, std::vector< uint8_t >, &Lease4::remote_id_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< RelayIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::member< Lease4, std::vector< uint8_t >, &Lease4::relay_id_ >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdPoolIdIndexTag >, boost::multi_index::composite_key< Lease4, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ >, boost::multi_index::member< Lease, uint32_t, &Lease::pool_id_ > > > > > Lease4Storage
A multi index container holding DHCPv4 leases.
boost::multi_index_container< Lease6Ptr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< AddressIndexTag >, boost::multi_index::member< Lease, isc::asiolink::IOAddress, &Lease::addr_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< DuidIaidTypeIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::const_mem_fun< Lease6, const std::vector< uint8_t > &, &Lease6::getDuidVector >, boost::multi_index::member< Lease6, uint32_t, &Lease6::iaid_ >, boost::multi_index::member< Lease6, Lease::Type, &Lease6::type_ > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ExpirationIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::const_mem_fun< Lease, bool, &Lease::stateExpiredReclaimed >, boost::multi_index::const_mem_fun< Lease, int64_t, &Lease::getExpirationTime > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdIndexTag >, boost::multi_index::member< Lease, isc::dhcp::SubnetID, &Lease::subnet_id_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< DuidIndexTag >, boost::multi_index::const_mem_fun< Lease6, const std::vector< uint8_t > &, &Lease6::getDuidVector > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< HostnameIndexTag >, boost::multi_index::member< Lease, std::string, &Lease::hostname_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetIdPoolIdIndexTag >, boost::multi_index::composite_key< Lease6, boost::multi_index::member< Lease, SubnetID, &Lease::subnet_id_ >, boost::multi_index::member< Lease, uint32_t, &Lease::pool_id_ > > > > > Lease6Storage
A multi index container holding DHCPv6 leases.
boost::multi_index_container< Lease6ExtendedInfoPtr, boost::multi_index::indexed_by< boost::multi_index::hashed_non_unique< boost::multi_index::tag< RemoteIdIndexTag >, boost::multi_index::member< Lease6ExtendedInfo, std::vector< uint8_t >, &Lease6ExtendedInfo::id_ > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< LeaseAddressIndexTag >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > > > Lease6ExtendedInfoRemoteIdTable
A multi index container holding lease6 extended info for by remote id.
Lease6Storage::index< ExpirationIndexTag >::type Lease6StorageExpirationIndex
DHCPv6 lease storage index by expiration time.
Lease6Storage::index< DuidIndexTag >::type Lease6StorageDuidIndex
DHCPv6 lease storage index by DUID.
boost::shared_ptr< Lease6 > Lease6Ptr
Pointer to a Lease6 structure.
Definition: lease.h:505
Lease6Storage::index< SubnetIdPoolIdIndexTag >::type Lease6StorageSubnetIdPoolIdIndex
DHCPv6 lease storage index subnet-id and pool-id.
Lease6Storage::index< DuidIaidTypeIndexTag >::type Lease6StorageDuidIaidTypeIndex
DHCPv6 lease storage index by DUID, IAID, lease type.
Lease4Storage::index< ExpirationIndexTag >::type Lease4StorageExpirationIndex
DHCPv4 lease storage index by expiration time.
Lease6Storage::index< AddressIndexTag >::type Lease6StorageAddressIndex
DHCPv6 lease storage index by address.
Lease4Storage::index< HostnameIndexTag >::type Lease4StorageHostnameIndex
DHCPv4 lease storage index by hostname.
std::pair< Lease4StorageRemoteIdIndex::const_iterator, Lease4StorageRemoteIdIndex::const_iterator > Lease4StorageRemoteIdRange
DHCPv4 lease storage range by remote-id.
Lease6Storage::index< HostnameIndexTag >::type Lease6StorageHostnameIndex
DHCPv6 lease storage index by hostname.
Lease4Storage::index< ClientIdSubnetIdIndexTag >::type Lease4StorageClientIdSubnetIdIndex
DHCPv4 lease storage index by client-id and subnet-id.
Lease4Storage::index< HWAddressSubnetIdIndexTag >::type Lease4StorageHWAddressSubnetIdIndex
DHCPv4 lease storage index by HW address and subnet-id.
Lease6ExtendedInfoRelayIdTable::index< LeaseAddressIndexTag >::type LeaseAddressRelayIdIndex
Lease6 extended information by lease address index of by relay id table.
Lease6ExtendedInfoRelayIdTable::index< RelayIdIndexTag >::type RelayIdIndex
Lease6 extended information by relay id index.
Lease4Storage::index< RemoteIdIndexTag >::type Lease4StorageRemoteIdIndex
DHCPv4 lease storage index by remote-id.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
Definition: subnet_id.h:25
std::pair< RemoteIdIndex::const_iterator, RemoteIdIndex::const_iterator > RemoteIdIndexRange
Lease6 extended information by remote id range.
Lease4Storage::index< SubnetIdIndexTag >::type Lease4StorageSubnetIdIndex
DHCPv4 lease storage index subnet-id.
Lease4Storage::index< AddressIndexTag >::type Lease4StorageAddressIndex
DHCPv4 lease storage index by address.
boost::shared_ptr< Lease4 > Lease4Ptr
Pointer to a Lease4 structure.
Definition: lease.h:292
Lease6ExtendedInfoRemoteIdTable::index< LeaseAddressIndexTag >::type LeaseAddressRemoteIdIndex
Lease6 extended information by lease address index of by remote id table.
Lease6Storage::index< SubnetIdIndexTag >::type Lease6StorageSubnetIdIndex
DHCPv6 lease storage index by subnet-id.
boost::multi_index_container< Lease6ExtendedInfoPtr, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::tag< RelayIdIndexTag >, boost::multi_index::composite_key< Lease6ExtendedInfo, boost::multi_index::member< Lease6ExtendedInfo, std::vector< uint8_t >, &Lease6ExtendedInfo::id_ >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< LeaseAddressIndexTag >, boost::multi_index::member< Lease6ExtendedInfo, isc::asiolink::IOAddress, &Lease6ExtendedInfo::lease_addr_ > > > > Lease6ExtendedInfoRelayIdTable
A multi index container holding lease6 extended info for by relay id.
boost::shared_ptr< Lease6ExtendedInfo > Lease6ExtendedInfoPtr
Pointer to a Lease6ExtendedInfo object.
Lease6ExtendedInfoRemoteIdTable::index< RemoteIdIndexTag >::type RemoteIdIndex
Lease6 extended information by remote id index.
Lease4Storage::index< SubnetIdPoolIdIndexTag >::type Lease4StorageSubnetIdPoolIdIndex
DHCPv4 lease storage index subnet-id and pool-id.
Lease4Storage::index< RelayIdIndexTag >::type Lease4StorageRelayIdIndex
DHCPv4 lease storage index by relay-id.
Defines the logger used by the top-level component of kea-lfc.
Tag for indexes by address.
Tag for indexes by client-id, subnet-id tuple.
Tag for indexes by DUID, IAID, lease type tuple.
Tag for index using DUID.
Tag for indexes by expiration time.
Tag for indexes by HW address, subnet-id tuple.
Tag for index using hostname.
Structure that holds a lease for IPv4 address.
Definition: lease.h:300
std::vector< uint8_t > remote_id_
Remote identifier for Bulk Lease Query.
Definition: lease.h:490
std::vector< uint8_t > relay_id_
Relay identifier for Bulk Lease Query.
Definition: lease.h:493
const std::vector< uint8_t > & getClientIdVector() const
Returns a client identifier.
Definition: lease.cc:338
Structure that holds a lease for IPv6 address and/or prefix.
Definition: lease.h:513
const std::vector< uint8_t > & getDuidVector() const
Returns a reference to a vector representing a DUID.
Definition: lease.cc:509
Tag for indexes by lease address.
a common structure for IPv4 and IPv6 leases
Definition: lease.h:31
bool stateExpiredReclaimed() const
Indicates if the lease is in the "expired-reclaimed" state.
Definition: lease.cc:115
SubnetID subnet_id_
Subnet identifier.
Definition: lease.h:154
const std::vector< uint8_t > & getHWAddrVector() const
Returns raw (as vector) hardware address.
Definition: lease.cc:348
int64_t getExpirationTime() const
Returns lease expiration time.
Definition: lease.cc:125
isc::asiolink::IOAddress addr_
IPv4 ot IPv6 address.
Definition: lease.h:120
Tag for index using relay-id.
Tag for index using remote-id.
Tag for indexes by subnet-id.
Tag for indexes by subnet-id and pool-id.