Kea
1.9.9-git
|
Pool information for IPv6 addresses and prefixes. More...
#include <pool.h>
Public Member Functions | |
Pool6 (Lease::Type type, const isc::asiolink::IOAddress &first, const isc::asiolink::IOAddress &last) | |
the constructor for Pool6 "min-max" style definition More... | |
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 More... | |
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. More... | |
uint8_t | getLength () const |
returns delegated prefix length More... | |
Option6PDExcludePtr | getPrefixExcludeOption () const |
Returns instance of the pool specific Prefix Exclude option. More... | |
Lease::Type | getType () const |
returns pool type More... | |
virtual data::ElementPtr | toElement () const |
Unparse a Pool6 object. More... | |
virtual std::string | toText () const |
returns textual representation of the pool More... | |
Public Member Functions inherited from isc::dhcp::Pool | |
virtual | ~Pool () |
virtual destructor More... | |
void | allowClientClass (const ClientClass &class_name) |
Sets the supported class to class class_name. More... | |
bool | clientSupported (const ClientClasses &client_classes) const |
Checks whether this pool supports client that belongs to specified classes. More... | |
uint64_t | getCapacity () const |
Returns the number of all leases in this pool. More... | |
CfgOptionPtr | getCfgOption () |
Returns pointer to the option data configuration for this pool. More... | |
ConstCfgOptionPtr | getCfgOption () const |
Returns const pointer to the option data configuration for this pool. More... | |
const ClientClass & | getClientClass () const |
returns the client class More... | |
const isc::asiolink::IOAddress & | getFirstAddress () const |
Returns the first address in a pool. More... | |
uint32_t | getId () const |
returns Pool-id More... | |
const isc::asiolink::IOAddress & | getLastAddress () const |
Returns the last address in a pool. More... | |
isc::asiolink::IOAddress | getLastAllocated () const |
returns the last address that was tried from this pool More... | |
IPRangePermutationPtr | getPermutation () const |
Returns pointer to the permutation associated with the pool. More... | |
const ClientClasses & | getRequiredClasses () const |
Returns classes which are required to be evaluated. More... | |
Lease::Type | getType () const |
Returns pool type (v4, v6 non-temporary, v6 temp, v6 prefix) More... | |
bool | inRange (const isc::asiolink::IOAddress &addr) const |
Checks if a given address is in the range. More... | |
bool | isLastAllocatedValid () const |
checks if the last address is valid More... | |
void | requireClientClass (const ClientClass &class_name) |
Adds class class_name to classes required to be evaluated. More... | |
void | resetLastAllocated () |
resets the last address to invalid More... | |
void | setLastAllocated (const isc::asiolink::IOAddress &addr) |
sets the last address that was tried from this pool More... | |
Public Member Functions inherited from isc::data::UserContext | |
void | contextToElement (data::ElementPtr map) const |
Merge unparse a user_context object. More... | |
data::ConstElementPtr | getContext () const |
Returns const pointer to the user context. More... | |
void | setContext (const data::ConstElementPtr &ctx) |
Sets user context. More... | |
Public Member Functions inherited from isc::data::CfgToElement | |
virtual | ~CfgToElement () |
Destructor. More... | |
Static Public Member Functions | |
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 . More... | |
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 . More... | |
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 . More... | |
Static Public Member Functions inherited from isc::data::UserContext | |
static data::ElementPtr | toElement (data::ConstElementPtr map) |
Copy an Element map. More... | |
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 More... | |
Static Protected Member Functions inherited from isc::dhcp::Pool | |
static uint32_t | getNextID () |
returns the next unique Pool-ID More... | |
Protected Attributes inherited from isc::dhcp::Pool | |
uint64_t | capacity_ |
Stores number of possible leases. More... | |
CfgOptionPtr | cfg_option_ |
Pointer to the option data configuration for this pool. More... | |
ClientClass | client_class_ |
Optional definition of a client class. More... | |
isc::asiolink::IOAddress | first_ |
The first address in a pool. More... | |
uint32_t | id_ |
pool-id More... | |
isc::asiolink::IOAddress | last_ |
The last address in a pool. More... | |
isc::asiolink::IOAddress | last_allocated_ |
Last allocated address See isc::dhcp::Subnet::last_allocated_ia_ Initialized and reset to first. More... | |
bool | last_allocated_valid_ |
Status of last allocated address. More... | |
IPRangePermutationPtr | permutation_ |
Pointer to the permutation object. More... | |
ClientClasses | required_classes_ |
Required classes. More... | |
Lease::Type | type_ |
defines a lease type that will be served from this pool More... | |
data::ConstElementPtr | user_context_ |
Pointer to the user context (may be NULL) More... | |
Protected Attributes inherited from isc::data::UserContext | |
data::ConstElementPtr | user_context_ |
Pointer to the user context (may be NULL) More... | |
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 156 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 198 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 207 of file pool.cc.
References isc_throw, isc::asiolink::IOAddress::isV6(), isc::asiolink::IOAddress::isV6Zero(), and isc::dhcp::Lease::TYPE_PD.
|
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.
|
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.
|
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 447 of file pool.h.
Referenced by toElement().
|
inline |
Returns instance of the pool specific Prefix Exclude option.
Definition at line 455 of file pool.h.
Referenced by isc::dhcp::Dhcpv6Srv::assignIA_PD(), isc::dhcp::Dhcpv6Srv::extendIA_PD(), and toElement().
|
inline |
returns pool type
Definition at line 438 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 339 of file pool.cc.
References 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 410 of file pool.cc.
References isc::dhcp::Pool::first_, isc::dhcp::Pool::last_, isc::dhcp::Pool::type_, and isc::dhcp::Lease::typeToText().