9#include <boost/make_shared.hpp>
18 return (boost::make_shared<PoolFreeLeaseQueueAllocationState>(pool->getType()));
24 free_lease4_queue_ = boost::make_shared<FreeLeaseQueue<uint32_t>>();
26 free_lease6_queue_ = boost::make_shared<FreeLeaseQueue<IOAddress>>();
32 return ((free_lease4_queue_ && free_lease4_queue_->empty()) ||
33 (free_lease6_queue_ && free_lease6_queue_->empty()));
38 if (free_lease4_queue_) {
39 free_lease4_queue_->push_back(address.
toUint32());
41 free_lease6_queue_->push_back(address);
47 if (free_lease4_queue_) {
48 auto& idx = free_lease4_queue_->get<1>();
51 auto& idx = free_lease6_queue_->get<1>();
58 if (free_lease4_queue_) {
59 if (free_lease4_queue_->empty()) {
62 uint32_t lease = free_lease4_queue_->front();
63 free_lease4_queue_->pop_front();
64 free_lease4_queue_->push_back(lease);
68 if (free_lease6_queue_->empty()) {
71 IOAddress lease = free_lease6_queue_->front();
72 free_lease6_queue_->pop_front();
73 free_lease6_queue_->push_back(lease);
79 if (free_lease4_queue_) {
80 return (free_lease4_queue_->size());
82 return (free_lease6_queue_->size());
The IOAddress class represents an IP addresses (version agnostic)
static const IOAddress & IPV4_ZERO_ADDRESS()
Returns an address set to all zeros.
uint32_t toUint32() const
Converts IPv4 address to uint32_t.
static const IOAddress & IPV6_ZERO_ADDRESS()
Returns an IPv6 zero address.
Base class for representing allocation state in pools and subnets.
asiolink::IOAddress offerFreeLease()
Returns next available lease.
PoolFreeLeaseQueueAllocationState(Lease::Type type)
Constructor.
bool exhausted() const
Checks if the pool has run out of free leases.
void deleteFreeLease(const asiolink::IOAddress &address)
Deletes free lease from the queue.
void addFreeLease(const asiolink::IOAddress &address)
Adds a free lease to the queue.
static PoolFreeLeaseQueueAllocationStatePtr create(const PoolPtr &pool)
Factory function creating the state instance from a pool.
size_t getFreeLeaseCount() const
Returns the current number of free leases in the queue.
boost::shared_ptr< PoolFreeLeaseQueueAllocationState > PoolFreeLeaseQueueAllocationStatePtr
Type of the pointer to the PoolFreeLeaseQueueAllocationState.
boost::shared_ptr< Pool > PoolPtr
a pointer to either IPv4 or IPv6 Pool
Defines the logger used by the top-level component of kea-lfc.
Type
Type of lease or pool.