Kea 2.7.5
|
Pool information for IPv6 addresses and prefixes. More...
#include <pool.h>
Public Member Functions | |
Pool6 (const asiolink::IOAddress &prefix, const uint8_t prefix_len, const uint8_t delegated_len, const asiolink::IOAddress &excluded_prefix, const uint8_t excluded_prefix_len) | |
Constructor for DHCPv6 prefix pool with an excluded prefix. | |
Pool6 (Lease::Type type, const isc::asiolink::IOAddress &first, const isc::asiolink::IOAddress &last) | |
the constructor for Pool6 "min-max" style definition | |
Pool6 (Lease::Type type, const isc::asiolink::IOAddress &prefix, uint8_t prefix_len, uint8_t delegated_len=128) | |
the constructor for Pool6 "prefix/len" style definition | |
uint8_t | getLength () const |
returns delegated prefix length | |
Option6PDExcludePtr | getPrefixExcludeOption () const |
Returns instance of the pool specific Prefix Exclude option. | |
Lease::Type | getType () const |
returns pool type | |
virtual data::ElementPtr | toElement () const |
Unparse a Pool6 object. | |
virtual std::string | toText () const |
returns textual representation of the pool | |
Public Member Functions inherited from isc::dhcp::Pool | |
virtual | ~Pool ()=default |
virtual destructor | |
void | addAdditionalClass (const ClientClass &class_name) |
Adds class class_name to the additional classes list. | |
void | allowClientClass (const ClientClass &class_name) |
Sets the supported class to class class_name. | |
bool | clientSupported (const ClientClasses &client_classes) const |
Checks whether this pool supports client that belongs to specified classes. | |
const ClientClasses & | getAdditionalClasses () const |
Returns the additional classes list. | |
AllocationStatePtr | getAllocationState () const |
Returns pool-specific allocation state. | |
isc::util::uint128_t | getCapacity () const |
Returns the number of all leases in this pool. | |
CfgOptionPtr | getCfgOption () |
Returns pointer to the option data configuration for this pool. | |
ConstCfgOptionPtr | getCfgOption () const |
Returns const pointer to the option data configuration for this pool. | |
const ClientClass & | getClientClass () const |
returns the client class | |
const isc::asiolink::IOAddress & | getFirstAddress () const |
Returns the first address in a pool. | |
uint64_t | getID () const |
Returns Pool-id. | |
const isc::asiolink::IOAddress & | getLastAddress () const |
Returns the last address in a pool. | |
ClientClasses & | getMutableAdditionalClasses () |
Returns the mutable additional classes list. | |
Lease::Type | getType () const |
Returns pool type (v4, v6 non-temporary, v6 temp, v6 prefix) | |
bool | inRange (const isc::asiolink::IOAddress &addr) const |
Checks if a given address is in the range. | |
void | setAllocationState (const AllocationStatePtr &allocation_state) |
Sets pool-specific allocation state. | |
void | setID (const uint64_t id) |
Sets Pool-id. | |
Public Member Functions inherited from isc::data::UserContext | |
void | contextToElement (data::ElementPtr map) const |
Merge unparse a user_context object. | |
data::ConstElementPtr | getContext () const |
Returns const pointer to the user context. | |
void | setContext (const data::ConstElementPtr &ctx) |
Sets user context. | |
Public Member Functions inherited from isc::data::CfgToElement | |
virtual | ~CfgToElement () |
Destructor. | |
Static Public Member Functions | |
static Pool6Ptr | create (const asiolink::IOAddress &prefix, const uint8_t prefix_len, const uint8_t delegated_len, const asiolink::IOAddress &excluded_prefix, const uint8_t excluded_prefix_len) |
Factory function for creating an instance of the Pool6 . | |
static Pool6Ptr | create (Lease::Type type, const isc::asiolink::IOAddress &first, const isc::asiolink::IOAddress &last) |
Factory function for creating an instance of the Pool6 . | |
static Pool6Ptr | create (Lease::Type type, const isc::asiolink::IOAddress &prefix, uint8_t prefix_len, uint8_t delegated_len=128) |
Factory function for creating an instance of the Pool6 . | |
Static Public Member Functions inherited from isc::data::UserContext | |
static data::ElementPtr | toElement (data::ConstElementPtr map) |
Copy an Element map. | |
Additional Inherited Members | |
Protected Member Functions inherited from isc::dhcp::Pool | |
Pool (Lease::Type type, const isc::asiolink::IOAddress &first, const isc::asiolink::IOAddress &last) | |
protected constructor | |
Protected Attributes inherited from isc::dhcp::Pool | |
ClientClasses | additional_classes_ |
Additional classes. | |
AllocationStatePtr | allocation_state_ |
Holds pool-specific allocation state. | |
isc::util::uint128_t | capacity_ |
Stores number of possible leases. | |
CfgOptionPtr | cfg_option_ |
Pointer to the option data configuration for this pool. | |
ClientClass | client_class_ |
Optional definition of a client class. | |
isc::asiolink::IOAddress | first_ |
The first address in a pool. | |
uint64_t | id_ |
pool-id | |
isc::asiolink::IOAddress | last_ |
The last address in a pool. | |
Lease::Type | type_ |
defines a lease type that will be served from this pool | |
data::ConstElementPtr | user_context_ |
Pointer to the user context (may be NULL) | |
Protected Attributes inherited from isc::data::UserContext | |
data::ConstElementPtr | user_context_ |
Pointer to the user context (may be NULL) | |
Pool information for IPv6 addresses and prefixes.
It holds information about pool6, i.e. a range of IPv6 address space that is configured for DHCP allocation.
isc::dhcp::Pool6::Pool6 | ( | Lease::Type | type, |
const isc::asiolink::IOAddress & | first, | ||
const isc::asiolink::IOAddress & | last ) |
the constructor for Pool6 "min-max" style definition
BadValue | if PD is define (PD can be only prefix/len) |
type | type of the pool (IA or TA) |
first | the first address in a pool |
last | the last address in a pool |
Definition at line 163 of file pool.cc.
References isc::asiolink::addrsInRange(), isc::dhcp::Pool::capacity_, isc_throw, isc::asiolink::IOAddress::isV6(), isc::dhcp::Lease::TYPE_NA, isc::dhcp::Lease::TYPE_PD, and isc::dhcp::Lease::TYPE_TA.
isc::dhcp::Pool6::Pool6 | ( | Lease::Type | type, |
const isc::asiolink::IOAddress & | prefix, | ||
uint8_t | prefix_len, | ||
uint8_t | delegated_len = 128 ) |
the constructor for Pool6 "prefix/len" style definition
For addressed, this is just a prefix/len definition. For prefixes, there is one extra additional parameter delegated_len. It specifies a size of delegated prefixes that the pool will be split into. For example pool 2001:db8::/56, delegated_len=64 means that there is a pool 2001:db8::/56. It will be split into 256 prefixes of length /64, e.g. 2001:db8:0:1::/64, 2001:db8:0:2::/64 etc.
Naming convention: A smaller prefix length yields a shorter prefix which describes a larger set of addresses. A larger length yields a longer prefix which describes a smaller set of addresses.
Obviously, prefix_len must define shorter or equal prefix length than delegated_len, so prefix_len <= delegated_len. Note that it is slightly confusing: bigger (larger) prefix actually has smaller prefix length, e.g. /56 is a bigger prefix than /64, but has shorter (smaller) prefix length.
BadValue | if delegated_len is defined for non-PD types or when delegated_len < prefix_len |
type | type of the pool (IA, TA or PD) |
prefix | specifies prefix of the pool |
prefix_len | specifies prefix length of the pool |
delegated_len | specifies length of the delegated prefixes |
Definition at line 205 of file pool.cc.
References isc::asiolink::IOAddress::IPV6_ZERO_ADDRESS().
isc::dhcp::Pool6::Pool6 | ( | const asiolink::IOAddress & | prefix, |
const uint8_t | prefix_len, | ||
const uint8_t | delegated_len, | ||
const asiolink::IOAddress & | excluded_prefix, | ||
const uint8_t | excluded_prefix_len ) |
Constructor for DHCPv6 prefix pool with an excluded prefix.
If excluded_prefix
is equal to '::' and the excluded_prefix_len
is equal to 0, the excluded prefix is assumed to be unspecified for the pool. In this case, the server will not send the Prefix Exclude option to a client.
prefix | specified a prefix of the pool. |
prefix_len | specifies prefix length of the pool. |
delegated_len | specifies length of the delegated prefixes. |
excluded_prefix | specifies an excluded prefix as per RFC6603. |
excluded_prefix_len | specifies length of an excluded prefix. |
Definition at line 214 of file pool.cc.
References isc_throw, and isc::dhcp::Lease::TYPE_PD.
|
static |
Factory function for creating an instance of the Pool6
.
If excluded_prefix
is equal to '::' and the excluded_prefix_len
is equal to 0, the excluded prefix is assumed to be unspecified for the pool. In this case, the server will not send the Prefix Exclude option to a client.
prefix | specifies a prefix of the pool. |
prefix_len | specifies prefix length of the pool. |
delegated_len | specifies length of the delegated prefixes. |
excluded_prefix | specifies an excluded prefix as per RFC6603. |
excluded_prefix_len | specifies length of an excluded prefix. |
Pool6
instance.
|
static |
Factory function for creating an instance of the Pool6
.
This function should be used to create an instance of the pool within a hooks library in cases when the library may be unloaded before the object is destroyed. This ensures that the ownership of the object by the Kea process is retained.
type | type of the pool (IA or TA) |
first | the first address in a pool |
last | the last address in a pool |
Pool6
instance.
|
static |
Factory function for creating an instance of the Pool6
.
This function should be used to create an instance of the pool within a hooks library in cases when the library may be unloaded before the object is destroyed. This ensures that the ownership of the object by the Kea process is retained.
type | type of the pool (IA, TA or PD) |
prefix | specifies prefix of the pool |
prefix_len | specifies prefix length of the pool |
delegated_len | specifies length of the delegated prefixes |
Pool6
instance.
|
inline |
returns delegated prefix length
This may be useful for "prefix/len" style definition for addresses, but is mostly useful for prefix pools.
Definition at line 430 of file pool.h.
Referenced by toElement().
|
inline |
Returns instance of the pool specific Prefix Exclude option.
Definition at line 438 of file pool.h.
Referenced by toElement().
|
inline |
returns pool type
Definition at line 421 of file pool.h.
References isc::dhcp::Pool::type_.
Referenced by toElement().
|
virtual |
Unparse a Pool6 object.
}
Reimplemented from isc::dhcp::Pool.
Definition at line 353 of file pool.cc.
References isc::data::Element::create(), isc::dhcp::Pool::getFirstAddress(), isc::dhcp::Pool::getLastAddress(), getLength(), getPrefixExcludeOption(), getType(), isc_throw, isc::asiolink::prefixLengthFromRange(), isc::dhcp::Pool::toElement(), isc::asiolink::IOAddress::toText(), isc::dhcp::Lease::TYPE_NA, and isc::dhcp::Lease::TYPE_PD.
|
virtual |
returns textual representation of the pool
Reimplemented from isc::dhcp::Pool.
Definition at line 423 of file pool.cc.
References isc::dhcp::Pool::first_, isc::dhcp::Pool::last_, isc::dhcp::Pool::type_, and isc::dhcp::Lease::typeToText().