Kea: isc::dhcp::Pool6 Class Reference

| Kea 3.2.0-git

isc::dhcp::Pool6 Class Reference

Pool information for IPv6 addresses and prefixes. More...

`#include <pool.h>`

Inheritance diagram for isc::dhcp::Pool6:
[legend]

## 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 isc::dhcp::ClientClass &class_name)
| Adds class clas_name to the allowed client classes list.
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 ClientClasses & | getClientClasses () const
| Returns the list of allowed client classes.
util::Optional< std::string > | getDdnsConflictResolutionMode () const
| Returns ddns-conflict-resolution-mode.
util::Optional< std::string > | getDdnsGeneratedPrefix () const
| Returns ddns-generated-prefix.
util::Optional< bool > | getDdnsOverrideClientUpdate () const
| Returns ddns-override-client-update.
util::Optional< bool > | getDdnsOverrideNoUpdate () const
| Returns ddns-override-no-update.
util::Optional< std::string > | getDdnsQualifyingSuffix () const
| Returns ddns-qualifying-suffix.
util::Optional< D2ClientConfig::ReplaceClientNameMode > | getDdnsReplaceClientNameMode () const
| Returns ddns-replace-client-name-mode.
util::Optional< bool > | getDdnsSendUpdates () const
| Returns ddns-send-updates.
util::Optional< uint32_t > | getDdnsTtl () const
| Returns ddns-ttl.
util::Optional< uint32_t > | getDdnsTtlMax () const
| Returns ddns-ttl-max.
util::Optional< uint32_t > | getDdnsTtlMin () const
| Returns ddns-ttl-min.
util::Optional< double > | getDdnsTtlPercent () const
| Returns ddns-ttl-percent.
util::Optional< bool > | getDdnsUpdateOnRenew () const
| Returns ddns-update-on-renew.
const isc::asiolink::IOAddress & | getFirstAddress () const
| Returns the first address in a pool.
util::Optional< std::string > | getHostnameCharReplacement () const
| Return the invalid char replacement used to sanitize client hostnames.
util::Optional< std::string > | getHostnameCharSet () const
| Return the char set regexp used to sanitize client hostnames.
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.
ClientClasses & | getMutableClientClasses ()
| Returns the mutable list of allowed client classes.
Lease::Type | getType () const
| Returns pool type (v4, v6 non-temporary, v6 temp, v6 prefix).
bool | hasDdnsParameters () const
| Checks if any of the DDNS parameters has a value.
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 | setDdnsConflictResolutionMode (const util::Optional< std::string > &ddns_conflict_resolution_mode)
| Sets new ddns-conflict-resolution-mode.
void | setDdnsGeneratedPrefix (const util::Optional< std::string > &ddns_generated_prefix)
| Sets new ddns-generated-prefix.
void | setDdnsOverrideClientUpdate (const util::Optional< bool > &ddns_override_client_update)
| Sets new ddns-override-client-update.
void | setDdnsOverrideNoUpdate (const util::Optional< bool > &ddns_override_no_update)
| Sets new ddns-override-no-update.
void | setDdnsQualifyingSuffix (const util::Optional< std::string > &ddns_qualifying_suffix)
| Sets new ddns-qualifying-suffix.
void | setDdnsReplaceClientNameMode (const util::Optional< D2ClientConfig::ReplaceClientNameMode > &ddns_replace_client_name_mode)
| Sets new ddns-replace-client-name-mode.
void | setDdnsSendUpdates (const util::Optional< bool > &ddns_send_updates)
| Sets new ddns-send-updates.
void | setDdnsTtl (const util::Optional< uint32_t > &ddns_ttl)
| Sets new ddns-ttl.
void | setDdnsTtlMax (const util::Optional< uint32_t > &ddns_ttl_max)
| Sets new ddns-ttl-max.
void | setDdnsTtlMin (const util::Optional< uint32_t > &ddns_ttl_min)
| Sets new ddns-ttl-min.
void | setDdnsTtlPercent (const util::Optional< double > &ddns_ttl_percent)
| Sets new ddns-ttl-percent.
void | setDdnsUpdateOnRenew (const util::Optional< bool > &ddns_update_on_renew)
| Sets new ddns-update-on-renew.
void | setHostnameCharReplacement (const util::Optional< std::string > &hostname_char_replacement)
| Sets new hostname-char-replacement.
void | setHostnameCharSet (const util::Optional< std::string > &hostname_char_set)
| Sets new hostname-char-set.
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.
ClientClasses | client_classes_
| List of client classes allowed to use this pool.
util::Optional< std::string > | ddns_conflict_resolution_mode_
| DDNS conflict resolution mode.
util::Optional< std::string > | ddns_generated_prefix_
| Prefix Kea should use when generating domain-names.
util::Optional< bool > | ddns_override_client_update_
| Should Kea perform updates, even if client requested delegation.
util::Optional< bool > | ddns_override_no_update_
| Should Kea perform updates, even if client requested no updates.
util::Optional< std::string > | ddns_qualifying_suffix_
| Suffix Kea should use when to qualify partial domain-names.
util::Optional< D2ClientConfig::ReplaceClientNameMode > | ddns_replace_client_name_mode_
| How Kea should handle the domain-name supplied by the client.
util::Optional< bool > | ddns_send_updates_
| Should Kea perform DNS updates.
util::Optional< uint32_t > | ddns_ttl_
| Explicit value to use for DNS TTL.
util::Optional< uint32_t > | ddns_ttl_max_
| Maximum value to use for DNS TTL.
util::Optional< uint32_t > | ddns_ttl_min_
| Minimum value to use for DNS TTL.
util::Optional< double > | ddns_ttl_percent_
| Percentage of the lease lifetime to use for DNS TTL.
util::Optional< bool > | ddns_update_on_renew_
| Should Kea perform updates when leases are extended.
isc::asiolink::IOAddress | first_
| The first address in a pool.
util::Optional< std::string > | hostname_char_replacement_
| A string to replace invalid characters when scrubbing hostnames.
util::Optional< std::string > | hostname_char_set_
| Regular expression describing invalid characters for client hostnames.
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).

## Detailed Description

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.

Definition at line 542 of file pool.h.

## Constructor & Destructor Documentation

## ◆ Pool6() [1/3]

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

Exceptions

  BadValue | if PD is define (PD can be only prefix/len)

Parameters

  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 249 of file pool.cc.

References isc::dhcp::Pool::Pool(), isc::asiolink::addrsInRange(), isc::dhcp::Pool::capacity_, if(), isc_throw, isc::asiolink::IOAddress::isV6(), isc::dhcp::Lease::TYPE_NA, and isc::dhcp::Lease::TYPE_PD.

Here is the call graph for this function:

## ◆ Pool6() [2/3]

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.

Exceptions

  BadValue | if delegated_len is defined for non-PD types or when delegated_len < prefix_len

Parameters

  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 290 of file pool.cc.

References isc::dhcp::Pool::Pool(), and isc::asiolink::IOAddress::IPV6_ZERO_ADDRESS().

Here is the call graph for this function:

## ◆ Pool6() [3/3]

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.

Parameters

  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.

Todo
  Check that the prefixes actually match. Theoretically, a user could specify a prefix which sets insignificant bits. We should clear insignificant bits based on the prefix length but this should be considered a part of the IOAddress class, perhaps and requires a bit of work (mainly in terms of testing).

Definition at line 299 of file pool.cc.

References isc::dhcp::Pool::Pool(), isc_throw, isc::asiolink::IOAddress::isV6(), isc::asiolink::IOAddress::isV6Zero(), and isc::dhcp::Lease::TYPE_PD.

Here is the call graph for this function:

## Member Function Documentation

## ◆ create() [1/3]

Pool6Ptr isc::dhcp::Pool6::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 )
| 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.

Parameters

  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.

Returns
  Pointer to the `Pool6` instance.

Definition at line 362 of file pool.cc.

## ◆ create() [2/3]

Pool6Ptr isc::dhcp::Pool6::create | ( | Lease::Type | type,
|  | const isc::asiolink::IOAddress & | first,
|  | const isc::asiolink::IOAddress & | last )
| 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.

Parameters

  type | type of the pool (IA or TA)
  first | the first address in a pool
  last | the last address in a pool

Returns
  Pointer to the `Pool6` instance.

Definition at line 351 of file pool.cc.

Referenced by isc::lease_query::PoolSet::insert().

## ◆ create() [3/3]

Pool6Ptr isc::dhcp::Pool6::create | ( | Lease::Type | type,
|  | const isc::asiolink::IOAddress & | prefix,
|  | uint8_t | prefix_len,
|  | uint8_t | delegated_len = 128 )
| 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.

Parameters

  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

Returns
  Pointer to the `Pool6` instance.

Definition at line 356 of file pool.cc.

## ◆ getLength()

uint8_t isc::dhcp::Pool6::getLength | ( |  | ) | const
| inline

returns delegated prefix length

This may be useful for "prefix/len" style definition for addresses, but is mostly useful for prefix pools.

Returns
  prefix length (1-128)

Definition at line 668 of file pool.h.

Referenced by toElement().

## ◆ getPrefixExcludeOption()

Option6PDExcludePtr isc::dhcp::Pool6::getPrefixExcludeOption | ( |  | ) | const
| inline

Returns instance of the pool specific Prefix Exclude option.

Returns
  An instance of the Prefix Exclude option (RFC 6603) or NULL if such option hasn't been specified for the pool.

Definition at line 676 of file pool.h.

Referenced by toElement().

## ◆ getType()

Lease::Type isc::dhcp::Pool6::getType | ( |  | ) | const
| inline

returns pool type

Returns
  pool type

Definition at line 659 of file pool.h.

References isc::dhcp::Pool::type_.

Referenced by toElement().

## ◆ toElement()

data::ElementPtr isc::dhcp::Pool6::toElement | ( |  | ) | const
| virtual

Unparse a Pool6 object.

Returns
  A pointer to unparsed Pool6 configuration.

}

Reimplemented from isc::dhcp::Pool.

Definition at line 438 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.

Here is the call graph for this function:

## ◆ toText()

std::string isc::dhcp::Pool6::toText | ( |  | ) | const
| virtual

returns textual representation of the pool

Returns
  textual representation

Reimplemented from isc::dhcp::Pool.

Definition at line 508 of file pool.cc.

References isc::dhcp::Pool::first_, isc::dhcp::Pool::last_, isc::dhcp::Pool::type_, and isc::dhcp::Lease::typeToText().

Here is the call graph for this function:

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

- pool.h
- pool.cc