Kea 2.6.0
isc::dhcp::IterativeAllocator Class Reference

Address/prefix allocator that iterates over all addresses. More...

#include <iterative_allocator.h>

+ Inheritance diagram for isc::dhcp::IterativeAllocator:

Public Member Functions

 IterativeAllocator (Lease::Type type, const WeakSubnetPtr &subnet)
 Constructor.
 
virtual std::string getType () const
 Returns the allocator type string.
 
- Public Member Functions inherited from isc::dhcp::Allocator
 Allocator (Lease::Type type, const WeakSubnetPtr &subnet)
 Constructor.
 
virtual ~Allocator ()
 Virtual destructor.
 
virtual std::string getType () const =0
 Returns allocator type string.
 
void initAfterConfigure ()
 Performs allocator initialization after server's reconfiguration.
 
virtual isc::asiolink::IOAddress pickAddress (const ClientClasses &client_classes, const IdentifierBaseTypePtr &duid, const asiolink::IOAddress &hint)
 Picks an address.
 
virtual isc::asiolink::IOAddress pickPrefix (const ClientClasses &client_classes, Pool6Ptr &pool, const IdentifierBaseTypePtr &duid, PrefixLenMatchType prefix_length_match, const asiolink::IOAddress &hint, uint8_t hint_prefix_length)
 Picks a delegated prefix.
 

Static Protected Member Functions

static asiolink::IOAddress increaseAddress (const asiolink::IOAddress &address, bool prefix, const uint8_t prefix_len)
 Returns the next address or prefix.
 
static asiolink::IOAddress increasePrefix (const asiolink::IOAddress &prefix, const uint8_t prefix_len)
 Returns the next prefix.
 

Additional Inherited Members

- Public Types inherited from isc::dhcp::Allocator
enum  PrefixLenMatchType { PREFIX_LEN_EQUAL , PREFIX_LEN_LOWER , PREFIX_LEN_HIGHER }
 Type of preferred PD-pool prefix length selection criteria. More...
 
- Static Public Member Functions inherited from isc::dhcp::Allocator
static bool isValidPrefixPool (Allocator::PrefixLenMatchType prefix_length_match, PoolPtr pool, uint8_t hint_prefix_length)
 Check if the pool matches the selection criteria relative to the provided hint prefix length.
 
- Protected Member Functions inherited from isc::dhcp::Allocator
virtual void initAfterConfigureInternal ()
 Allocator-specific initialization function.
 
- Protected Attributes inherited from isc::dhcp::Allocator
bool inited_
 Indicates if the allocator has been initialized.
 
std::mutex mutex_
 The mutex to protect the allocated lease.
 
Lease::Type pool_type_
 Defines pool type allocation.
 
WeakSubnetPtr subnet_
 Weak pointer to the subnet owning the allocator.
 
SubnetID subnet_id_
 ID of a subnet to which the allocator belongs.
 

Detailed Description

Address/prefix allocator that iterates over all addresses.

This class implements an iterative algorithm that returns all addresses in a pool iteratively, one after another. Once the last address is reached, it starts allocating from the beginning of the first pool (i.e. it loops over).

Definition at line 25 of file iterative_allocator.h.

Constructor & Destructor Documentation

◆ IterativeAllocator()

isc::dhcp::IterativeAllocator::IterativeAllocator ( Lease::Type  type,
const WeakSubnetPtr subnet 
)

Constructor.

Parameters
typespecifies the type of allocated leases.
subnetweak pointer to the subnet owning the allocator.

Definition at line 20 of file iterative_allocator.cc.

Member Function Documentation

◆ getType()

virtual std::string isc::dhcp::IterativeAllocator::getType ( ) const
inlinevirtual

Returns the allocator type string.

Returns
iterative string.

Implements isc::dhcp::Allocator.

Definition at line 37 of file iterative_allocator.h.

◆ increaseAddress()

IOAddress isc::dhcp::IterativeAllocator::increaseAddress ( const asiolink::IOAddress address,
bool  prefix,
const uint8_t  prefix_len 
)
staticprotected

Returns the next address or prefix.

This method works for IPv4 addresses, IPv6 addresses and IPv6 prefixes.

Parameters
addressaddress or prefix to be increased
prefixtrue when the previous argument is a prefix.
prefix_lenlength of the prefix.
Returns
result address or prefix

Definition at line 79 of file iterative_allocator.cc.

References isc::asiolink::IOAddress::increase(), and increasePrefix().

+ Here is the call graph for this function:

◆ increasePrefix()

isc::asiolink::IOAddress isc::dhcp::IterativeAllocator::increasePrefix ( const asiolink::IOAddress prefix,
const uint8_t  prefix_len 
)
staticprotected

Returns the next prefix.

This method works for IPv6 addresses only. It increases the specified prefix by a given prefix_len. For example, 2001:db8:: increased by prefix length /32 will become 2001:db9::. This method is used to iterate over IPv6 prefix pools

Parameters
prefixprefix to be increased.
prefix_lenlength of the prefix to be increased.
Returns
next prefix.

Definition at line 26 of file iterative_allocator.cc.

References isc::asiolink::IOAddress::fromBytes(), isc_throw, isc::asiolink::IOAddress::isV6(), and isc::asiolink::IOAddress::toBytes().

Referenced by increaseAddress().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: