Kea  2.1.7-git
isc::dhcp::SharedNetwork6 Class Reference

Shared network holding IPv6 subnets. More...

#include <shared_network.h>

+ Inheritance diagram for isc::dhcp::SharedNetwork6:

Public Member Functions

 SharedNetwork6 (const std::string &name)
 Constructor. More...
 
void add (const Subnet6Ptr &subnet)
 Adds IPv6 subnet to a shared network. More...
 
void del (const SubnetID &subnet_id)
 Removes subnet from a shared network. More...
 
void delAll ()
 Removes all subnets from a shared network. More...
 
const Subnet6SimpleCollectiongetAllSubnets () const
 Returns a pointer to the collection of subnets within this shared network. More...
 
std::string getName () const
 Returns a name of the shared network. More...
 
Subnet6Ptr getNextSubnet (const Subnet6Ptr &first_subnet, const SubnetID &current_subnet) const
 Retrieves next available IPv6 subnet within shared network. More...
 
Subnet6Ptr getPreferredSubnet (const Subnet6Ptr &selected_subnet, const Lease::Type &lease_type) const
 Attempts to find a subnet which is more likely to include available leases than selected subnet. More...
 
Subnet6Ptr getSubnet (const SubnetID &subnet_id) const
 Returns a subnet for a specified subnet id. More...
 
Subnet6Ptr getSubnet (const std::string &subnet_prefix) const
 Returns a subnet for a specified subnet prefix. More...
 
bool replace (const Subnet6Ptr &subnet)
 Replaces IPv6 subnet in a shared network. More...
 
void setName (const std::string &name)
 Sets new name for the shared network. More...
 
virtual data::ElementPtr toElement () const
 Unparses shared network object. More...
 
- Public Member Functions inherited from isc::dhcp::Network6
 Network6 ()
 Constructor. More...
 
OptionPtr getInterfaceId (const Inheritance &inheritance=Inheritance::ALL) const
 Returns interface-id value (if specified) More...
 
isc::util::Triplet< uint32_t > getPreferred (const Inheritance &inheritance=Inheritance::ALL) const
 Returns preferred lifetime (in seconds) More...
 
util::Optional< bool > getRapidCommit (const Inheritance &inheritance=Inheritance::ALL) const
 Returns boolean value indicating that the Rapid Commit option is supported or unsupported for the subnet. More...
 
void setInterfaceId (const OptionPtr &ifaceid)
 sets interface-id option (if defined) More...
 
void setPreferred (const isc::util::Triplet< uint32_t > &preferred)
 Sets new preferred lifetime for a network. More...
 
void setRapidCommit (const util::Optional< bool > &rapid_commit)
 Enables or disables Rapid Commit option support for the subnet. More...
 
- Public Member Functions inherited from isc::dhcp::Network
 Network ()
 Constructor. More...
 
virtual ~Network ()
 Virtual destructor. More...
 
void addRelayAddress (const asiolink::IOAddress &addr)
 Adds an address to the list addresses in the network's relay info. More...
 
void allowClientClass (const isc::dhcp::ClientClass &class_name)
 Sets the supported class to class class_name. More...
 
virtual bool clientSupported (const isc::dhcp::ClientClasses &client_classes) const
 Checks whether this network supports client that belongs to specified classes. More...
 
util::Optional< uint32_t > getCacheMaxAge (const Inheritance &inheritance=Inheritance::ALL) const
 Returns value in seconds to use as cache maximum age. More...
 
util::Optional< double > getCacheThreshold (const Inheritance &inheritance=Inheritance::ALL) const
 Returns percentage to use as cache threshold. More...
 
util::Optional< bool > getCalculateTeeTimes (const Inheritance &inheritance=Inheritance::ALL) const
 Returns whether or not T1/T2 calculation is enabled. More...
 
CfgOptionPtr getCfgOption ()
 Returns pointer to the option data configuration for this network. More...
 
ConstCfgOptionPtr getCfgOption () const
 Returns const pointer to the option data configuration for this network. More...
 
util::Optional< ClientClassgetClientClass (const Inheritance &inheritance=Inheritance::ALL) const
 returns the client class More...
 
util::Optional< std::string > getDdnsGeneratedPrefix (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-generated-prefix. More...
 
util::Optional< bool > getDdnsOverrideClientUpdate (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-override-client-update. More...
 
util::Optional< bool > getDdnsOverrideNoUpdate (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-override-no-update. More...
 
util::Optional< std::string > getDdnsQualifyingSuffix (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-qualifying-suffix. More...
 
util::Optional< D2ClientConfig::ReplaceClientNameModegetDdnsReplaceClientNameMode (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-replace-client-name-mode. More...
 
util::Optional< bool > getDdnsSendUpdates (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-send-updates. More...
 
util::Optional< bool > getDdnsUpdateOnRenew (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-update-on-renew. More...
 
util::Optional< bool > getDdnsUseConflictResolution (const Inheritance &inheritance=Inheritance::ALL) const
 Returns ddns-use-conflict-resolution. More...
 
util::Optional< std::string > getHostnameCharReplacement (const Inheritance &inheritance=Inheritance::ALL) const
 Return the invalid char replacement used to sanitize client hostnames. More...
 
util::Optional< std::string > getHostnameCharSet (const Inheritance &inheritance=Inheritance::ALL) const
 Return the char set regexp used to sanitize client hostnames. More...
 
util::Optional< std::string > getIface (const Inheritance &inheritance=Inheritance::ALL) const
 Returns name of the local interface for which this network is selected. More...
 
const IOAddressListgetRelayAddresses () const
 Returns the list of relay addresses from the network's relay info. More...
 
const RelayInfogetRelayInfo () const
 Returns const reference to relay information. More...
 
const ClientClassesgetRequiredClasses () const
 Returns classes which are required to be evaluated. More...
 
util::Optional< bool > getReservationsGlobal (const Inheritance &inheritance=Inheritance::ALL) const
 Returns whether global reservations should be fetched. More...
 
util::Optional< bool > getReservationsInSubnet (const Inheritance &inheritance=Inheritance::ALL) const
 Returns whether subnet reservations should be fetched. More...
 
util::Optional< bool > getReservationsOutOfPool (const Inheritance &inheritance=Inheritance::ALL) const
 Returns whether only out-of-pool reservations are allowed. More...
 
util::Optional< bool > getStoreExtendedInfo (const Inheritance &inheritance=Inheritance::ALL) const
 Returns store-extended-info. More...
 
isc::util::Triplet< uint32_t > getT1 (const Inheritance &inheritance=Inheritance::ALL) const
 Returns T1 (renew timer), expressed in seconds. More...
 
util::Optional< double > getT1Percent (const Inheritance &inheritance=Inheritance::ALL) const
 Returns percentage to use when calculating the T1 (renew timer). More...
 
isc::util::Triplet< uint32_t > getT2 (const Inheritance &inheritance=Inheritance::ALL) const
 Returns T2 (rebind timer), expressed in seconds. More...
 
util::Optional< double > getT2Percent (const Inheritance &inheritance=Inheritance::ALL) const
 Returns percentage to use when calculating the T2 (rebind timer). More...
 
isc::util::Triplet< uint32_t > getValid (const Inheritance &inheritance=Inheritance::ALL) const
 Return valid-lifetime for addresses in that prefix. More...
 
bool hasFetchGlobalsFn () const
 Checks if the network is associated with a function used to fetch globally configured parameters. More...
 
bool hasRelayAddress (const asiolink::IOAddress &address) const
 Tests if the network's relay info contains the given address. More...
 
bool hasRelays () const
 Indicates if network's relay info has relay addresses. More...
 
void requireClientClass (const isc::dhcp::ClientClass &class_name)
 Adds class class_name to classes required to be evaluated. More...
 
void setCacheMaxAge (const util::Optional< uint32_t > &cache_max_age)
 Sets cache max for a network. More...
 
void setCacheThreshold (const util::Optional< double > &cache_threshold)
 Sets cache threshold for a network. More...
 
void setCalculateTeeTimes (const util::Optional< bool > &calculate_tee_times)
 Sets whether or not T1/T2 calculation is enabled. More...
 
void setDdnsGeneratedPrefix (const util::Optional< std::string > &ddns_generated_prefix)
 Sets new ddns-generated-prefix. More...
 
void setDdnsOverrideClientUpdate (const util::Optional< bool > &ddns_override_client_update)
 Sets new ddns-override-client-update. More...
 
void setDdnsOverrideNoUpdate (const util::Optional< bool > &ddns_override_no_update)
 Sets new ddns-override-no-update. More...
 
void setDdnsQualifyingSuffix (const util::Optional< std::string > &ddns_qualifying_suffix)
 Sets new ddns-qualifying-suffix. More...
 
void setDdnsReplaceClientNameMode (const util::Optional< D2ClientConfig::ReplaceClientNameMode > &ddns_replace_client_name_mode)
 Sets new ddns-replace-client-name-mode. More...
 
void setDdnsSendUpdates (const util::Optional< bool > &ddns_send_updates)
 Sets new ddns-send-updates. More...
 
void setDdnsUpdateOnRenew (const util::Optional< bool > &ddns_update_on_renew)
 Sets new ddns-update-on-renew. More...
 
void setDdnsUseConflictResolution (const util::Optional< bool > &ddns_use_conflict_resolution)
 Sets new ddns-use-conflict-resolution. More...
 
void setFetchGlobalsFn (FetchNetworkGlobalsFn fetch_globals_fn)
 Sets the optional callback function used to fetch globally configured parameters. More...
 
void setHostnameCharReplacement (const util::Optional< std::string > &hostname_char_replacement)
 Sets new hostname-char-replacement. More...
 
void setHostnameCharSet (const util::Optional< std::string > &hostname_char_set)
 Sets new hostname-char-set. More...
 
void setIface (const util::Optional< std::string > &iface_name)
 Sets local name of the interface for which this network is selected. More...
 
void setRelayInfo (const RelayInfo &relay)
 Sets information about relay. More...
 
void setReservationsGlobal (const util::Optional< bool > &reservations_global)
 Sets whether global reservations should be fetched. More...
 
void setReservationsInSubnet (const util::Optional< bool > &reservations_in_subnet)
 Sets whether subnet reservations should be fetched. More...
 
void setReservationsOutOfPool (const util::Optional< bool > &reservations_out_of_pool)
 Sets whether only out-of-pool reservations are allowed. More...
 
void setStoreExtendedInfo (const util::Optional< bool > &store_extended_info)
 Sets new store-extended-info. More...
 
void setT1 (const isc::util::Triplet< uint32_t > &t1)
 Sets new renew timer for a network. More...
 
void setT1Percent (const util::Optional< double > &t1_percent)
 Sets new percentage for calculating T1 (renew timer). More...
 
void setT2 (const isc::util::Triplet< uint32_t > &t2)
 Sets new rebind timer for a network. More...
 
void setT2Percent (const util::Optional< double > &t2_percent)
 Sets new percentage for calculating T2 (rebind timer). More...
 
void setValid (const isc::util::Triplet< uint32_t > &valid)
 Sets new valid lifetime for a network. More...
 
- Public Member Functions inherited from isc::data::StampedElement
 StampedElement ()
 Constructor. More...
 
void delServerTag (const std::string &server_tag)
 Deletes server tag. More...
 
isc::data::ElementPtr getMetadata () const
 Returns an object representing metadata to be returned with objects from the configuration backend. More...
 
std::set< ServerTaggetServerTags () const
 Returns server tags. More...
 
bool hasAllServerTag () const
 Checks if the element has 'all' server tag. More...
 
bool hasServerTag (const ServerTag &server_tag) const
 Checks if the element has the given server tag. More...
 
void setServerTag (const std::string &server_tag)
 Adds new server tag. More...
 
- Public Member Functions inherited from isc::data::BaseStampedElement
 BaseStampedElement ()
 Constructor. More...
 
uint64_t getId () const
 Returns element's database identifier. More...
 
boost::posix_time::ptime getModificationTime () const
 Returns timestamp. More...
 
void setId (const uint64_t id)
 Sets element's database identifier. More...
 
void setModificationTime (const boost::posix_time::ptime &timestamp)
 Sets timestamp to the explicitly provided value. More...
 
void updateModificationTime ()
 Sets timestamp to the current time. 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 SharedNetwork6Ptr create (const std::string &name)
 Factory function creating an instance of the SharedNetwork6. 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

- Public Types inherited from isc::dhcp::Network
enum  Inheritance { Inheritance::NONE, Inheritance::PARENT_NETWORK, Inheritance::GLOBAL, Inheritance::ALL }
 Inheritance "mode" used when fetching an optional Network parameter. More...
 
typedef boost::shared_ptr< Network::RelayInfoRelayInfoPtr
 Pointer to the RelayInfo structure. More...
 
- Protected Member Functions inherited from isc::dhcp::Network
FetchNetworkGlobalsFn getFetchGlobalsFn () const
 Gets the optional callback function used to fetch globally configured parameters. More...
 
template<typename ReturnType >
ReturnType getGlobalProperty (ReturnType property, const int global_index, const int min_index=-1, const int max_index=-1) const
 Returns a value of global configuration parameter with a given index. More...
 
template<typename NumType >
isc::util::Triplet< NumType > getGlobalProperty (isc::util::Triplet< NumType > property, const int global_index, const int min_index=-1, const int max_index=-1) const
 The getGlobalProperty specialization for isc::util::Triplet<T>. More...
 
util::Optional< asiolink::IOAddressgetGlobalProperty (util::Optional< asiolink::IOAddress > property, const int global_index, const int min_index=-1, const int max_index=-1) const
 The getGlobalProperty specialization for Optional<IOAddress>. More...
 
template<typename BaseType >
OptionPtr getOptionProperty (OptionPtr(BaseType::*MethodPointer)(const Inheritance &inheritance) const, OptionPtr property, const Inheritance &inheritance) const
 Returns option pointer associated with a network using inheritance. More...
 
template<typename BaseType , typename ReturnType >
ReturnType getProperty (ReturnType(BaseType::*MethodPointer)(const Inheritance &) const, ReturnType property, const Inheritance &inheritance, const int global_index=-1, const int min_index=-1, const int max_index=-1) const
 Returns a value associated with a network using inheritance. More...
 
- Protected Attributes inherited from isc::dhcp::Network
util::Optional< uint32_t > cache_max_age_
 Value in seconds to use as cache maximal age. More...
 
util::Optional< double > cache_threshold_
 Percentage of the lease lifetime to use as cache threshold. More...
 
util::Optional< bool > calculate_tee_times_
 Enables calculation of T1 and T2 timers. More...
 
CfgOptionPtr cfg_option_
 Pointer to the option data configuration for this subnet. More...
 
util::Optional< ClientClassclient_class_
 Optional definition of a client class. More...
 
util::Optional< std::string > ddns_generated_prefix_
 Prefix Kea should use when generating domain-names. More...
 
util::Optional< bool > ddns_override_client_update_
 Should Kea perform updates, even if client requested delegation. More...
 
util::Optional< bool > ddns_override_no_update_
 Should Kea perform updates, even if client requested no updates. More...
 
util::Optional< std::string > ddns_qualifying_suffix_
 Suffix Kea should use when to qualify partial domain-names. More...
 
util::Optional< D2ClientConfig::ReplaceClientNameModeddns_replace_client_name_mode_
 How Kea should handle the domain-name supplied by the client. More...
 
util::Optional< bool > ddns_send_updates_
 Should Kea perform DNS updates. More...
 
util::Optional< bool > ddns_update_on_renew_
 Should Kea perform updates when leases are extended. More...
 
util::Optional< bool > ddns_use_conflict_resolution_
 Used to to tell kea-dhcp-ddns whether or not to use conflict resolution. More...
 
FetchNetworkGlobalsFn fetch_globals_fn_
 Pointer to the optional callback used to fetch globally configured parameters inherited to the Network object. More...
 
util::Optional< std::string > hostname_char_replacement_
 A string to replace invalid characters when scrubbing hostnames. More...
 
util::Optional< std::string > hostname_char_set_
 Regular expression describing invalid characters for client hostnames. More...
 
util::Optional< std::string > iface_name_
 Holds interface name for which this network is selected. More...
 
WeakNetworkPtr parent_network_
 Pointer to another network that this network belongs to. More...
 
RelayInfo relay_
 Relay information. More...
 
ClientClasses required_classes_
 Required classes. More...
 
util::Optional< bool > reservations_global_
 Enables global reservations. More...
 
util::Optional< bool > reservations_in_subnet_
 Enables subnet reservations. More...
 
util::Optional< bool > reservations_out_of_pool_
 Enables out-of-pool reservations optimization. More...
 
util::Optional< bool > store_extended_info_
 Should Kea store additional client query data (e.g. More...
 
isc::util::Triplet< uint32_t > t1_
 a isc::util::Triplet (min/default/max) holding allowed renew timer values More...
 
util::Optional< double > t1_percent_
 Percentage of the lease lifetime to use when calculating T1 timer. More...
 
isc::util::Triplet< uint32_t > t2_
 a isc::util::Triplet (min/default/max) holding allowed rebind timer values More...
 
util::Optional< double > t2_percent_
 Percentage of the lease lifetime to use when calculating T2 timer. More...
 
isc::util::Triplet< uint32_t > valid_
 a isc::util::Triplet (min/default/max) holding allowed valid lifetime values More...
 
- Protected Attributes inherited from isc::data::BaseStampedElement
uint64_t id_
 Database identifier of the configuration element. More...
 
boost::posix_time::ptime timestamp_
 Holds timestamp value. More...
 
- Protected Attributes inherited from isc::data::UserContext
data::ConstElementPtr user_context_
 Pointer to the user context (may be NULL) More...
 

Detailed Description

Shared network holding IPv6 subnets.

Specialization of the Network6 class for IPv6 shared networks.

Definition at line 263 of file shared_network.h.

Constructor & Destructor Documentation

◆ SharedNetwork6()

isc::dhcp::SharedNetwork6::SharedNetwork6 ( const std::string &  name)
inlineexplicit

Constructor.

Sets name of the shared network.

Definition at line 270 of file shared_network.h.

Member Function Documentation

◆ add()

void isc::dhcp::SharedNetwork6::add ( const Subnet6Ptr subnet)

Adds IPv6 subnet to a shared network.

Parameters
subnetPointer to a subnet being added to this shared network.
Exceptions
isc::BadValueif subnet is null.
isc::DuplicateSubnetIDif a subnet with the given subnet id already exists in this shared network.
InvalidOperationif a subnet is already associated with some shared network.

Definition at line 431 of file shared_network.cc.

References name_.

◆ create()

SharedNetwork6Ptr isc::dhcp::SharedNetwork6::create ( const std::string &  name)
static

Factory function creating an instance of the SharedNetwork6.

This function should be used to create an instance of the shared network 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
nameName of the shared network.
Returns
Pointer to the SharedNetwork6 instance.

Definition at line 426 of file shared_network.cc.

◆ del()

void isc::dhcp::SharedNetwork6::del ( const SubnetID subnet_id)

Removes subnet from a shared network.

Parameters
subnet_idIdentifier of a subnet to be removed.
Exceptions
BadValueWhen specified subnet doesn't exist.

Definition at line 459 of file shared_network.cc.

◆ delAll()

void isc::dhcp::SharedNetwork6::delAll ( )

Removes all subnets from a shared network.

Definition at line 466 of file shared_network.cc.

◆ getAllSubnets()

const Subnet6SimpleCollection* isc::dhcp::SharedNetwork6::getAllSubnets ( ) const
inline

Returns a pointer to the collection of subnets within this shared network.

Definition at line 334 of file shared_network.h.

References isc::data::BaseStampedElement::getModificationTime(), getName(), and name_.

+ Here is the call graph for this function:

◆ getName()

std::string isc::dhcp::SharedNetwork6::getName ( ) const
inline

Returns a name of the shared network.

Definition at line 287 of file shared_network.h.

References name_.

Referenced by getAllSubnets().

◆ getNextSubnet()

Subnet6Ptr isc::dhcp::SharedNetwork6::getNextSubnet ( const Subnet6Ptr first_subnet,
const SubnetID current_subnet 
) const

Retrieves next available IPv6 subnet within shared network.

See documentation for SharedNetwork6::getNextSubnet.

Parameters
first_subnetPointer to a subnet from which the caller is iterating over subnets within shared network. This is typically a subnet selected during "subnet selection" step.
current_subnetIdentifier of a subnet for which next subnet is to be found.
Returns
Pointer to next subnet or null pointer if no more subnets found.
Exceptions
isc::BadValueif invalid arguments specified, e.g. unable to find first or current subnet within shared network.

Definition at line 484 of file shared_network.cc.

◆ getPreferredSubnet()

Subnet6Ptr isc::dhcp::SharedNetwork6::getPreferredSubnet ( const Subnet6Ptr selected_subnet,
const Lease::Type lease_type 
) const

Attempts to find a subnet which is more likely to include available leases than selected subnet.

When allocating unreserved leases from a shared network it is important to remember from which subnet within the shared network we have been recently handing out leases. The allocation engine can use that information to start trying allocation of the leases from that subnet rather than from the default subnet selected for this client. Starting from the default subnet causes a risk of having to walk over many subnets with exhausted address pools before getting to the subnet with available leases. This method attempts to find such subnet by inspecting "last allocation" timestamps. The one with most recent timestamp is selected.

The preferred subnet must also fulfil the condition of equal client classes with the selected_subnet.

Parameters
selected_subnetPointer to a currently selected subnet.
lease_typeType of the lease for which preferred subnet should be returned.
Returns
Pointer to a preferred subnet. It may be the same as selected_subnet if no better subnet was found.

Definition at line 490 of file shared_network.cc.

◆ getSubnet() [1/2]

Subnet6Ptr isc::dhcp::SharedNetwork6::getSubnet ( const SubnetID subnet_id) const

Returns a subnet for a specified subnet id.

Parameters
subnet_idSubnet identifier.
Returns
Shared pointer to a subnet using this id or null pointer if such subnet doesn't exist within shared network.

Definition at line 474 of file shared_network.cc.

◆ getSubnet() [2/2]

Subnet6Ptr isc::dhcp::SharedNetwork6::getSubnet ( const std::string &  subnet_prefix) const

Returns a subnet for a specified subnet prefix.

Parameters
subnet_prefixSubnet prefix.
Returns
Shared pointer to a subnet using this prefix or null pointer if such subnet doesn't exist within shared network.

Definition at line 479 of file shared_network.cc.

◆ replace()

bool isc::dhcp::SharedNetwork6::replace ( const Subnet6Ptr subnet)

Replaces IPv6 subnet in a shared network.

This method replaces a subnet by another subnet with the same ID. The prefix should be the same too.

Parameters
subnetPointer to a subnet replacing the subnet with the same ID in this shared network.
Exceptions
isc::BadValueif subnet is null.
InvalidOperationif a subnet is already associated with some shared network.
Returns
true if the operation succeeded, false otherwise.

Definition at line 439 of file shared_network.cc.

References isc_throw, and name_.

◆ setName()

void isc::dhcp::SharedNetwork6::setName ( const std::string &  name)
inline

Sets new name for the shared network.

Parameters
nameNew name for the shared network.

Definition at line 294 of file shared_network.h.

References name_.

◆ toElement()

ElementPtr isc::dhcp::SharedNetwork6::toElement ( ) const
virtual

Unparses shared network object.

Returns
A pointer to unparsed shared network configuration.

Reimplemented from isc::dhcp::Network6.

Definition at line 496 of file shared_network.cc.

References isc::data::Element::create(), isc::data::Element::createList(), and name_.

+ Here is the call graph for this function:

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