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

Specifies current DHCP configuration. More...

#include <srv_config.h>

+ Inheritance diagram for isc::dhcp::SrvConfig:

Public Member Functions

 SrvConfig ()
 Default constructor. More...
 
 SrvConfig (const uint32_t sequence)
 Constructor. More...
 
void addConfiguredGlobal (const std::string &name, isc::data::ConstElementPtr value)
 Adds a parameter to the collection configured globals. More...
 
void applyDefaultsConfiguredGlobals (const isc::data::SimpleDefaults &defaults)
 Applies defaults to global parameters. More...
 
void clearConfiguredGlobals ()
 Removes all configured global parameters. More...
 
void configureLowerLevelLibraries () const
 Convenience method to propagate configuration parameters through inversion of control. More...
 
void copy (SrvConfig &new_config) const
 Copies the current configuration to a new configuration. More...
 
void extractConfiguredGlobals (isc::data::ConstElementPtr config)
 Saves scalar elements from the global scope of a configuration. More...
 
CfgDbAccessPtr getCfgDbAccess ()
 Returns pointer to the object holding configuration of the lease and host database connection parameters. More...
 
ConstCfgDbAccessPtr getCfgDbAccess () const
 Returns const pointer to the object holding configuration of the lease and host database connection parameters. More...
 
CfgDUIDPtr getCfgDUID ()
 Returns pointer to the object holding configuration of the server identifier. More...
 
ConstCfgDUIDPtr getCfgDUID () const
 Returns const pointer to the object holding configuration of the server identifier. More...
 
CfgExpirationPtr getCfgExpiration ()
 Returns pointer to the object holding configuration pertaining to processing expired leases. More...
 
ConstCfgExpirationPtr getCfgExpiration () const
 Returns pointer to the const object holding configuration pertaining to processing expired leases. More...
 
CfgHostOperationsPtr getCfgHostOperations4 ()
 Returns pointer to the object holding general configuration for host reservations in DHCPv4. More...
 
ConstCfgHostOperationsPtr getCfgHostOperations4 () const
 Returns const pointer to the object holding general configuration for host reservations in DHCPv4. More...
 
CfgHostOperationsPtr getCfgHostOperations6 ()
 Returns pointer to the object holding general configuration for host reservations in DHCPv6. More...
 
ConstCfgHostOperationsPtr getCfgHostOperations6 () const
 Returns const pointer to the object holding general configuration for host reservations in DHCPv6. More...
 
CfgHostsPtr getCfgHosts ()
 Returns pointer to the non-const objects representing host reservations for different IPv4 and IPv6 subnets. More...
 
ConstCfgHostsPtr getCfgHosts () const
 Returns pointer to the const objects representing host reservations for different IPv4 and IPv6 subnets. More...
 
CfgIfacePtr getCfgIface ()
 Returns non-const pointer to interface configuration. More...
 
ConstCfgIfacePtr getCfgIface () const
 Returns const pointer to interface configuration. More...
 
CfgOptionPtr getCfgOption ()
 Returns pointer to the non-const object holding options. More...
 
const ConstCfgOptionPtr getCfgOption () const
 Returns pointer to the const object holding options. More...
 
CfgOptionDefPtr getCfgOptionDef ()
 Return pointer to non-const object representing user-defined option definitions. More...
 
ConstCfgOptionDefPtr getCfgOptionDef () const
 Returns pointer to the const object representing user-defined option definitions. More...
 
CfgRSOOPtr getCfgRSOO ()
 Returns pointer to the non-const object representing set of RSOO-enabled options. More...
 
ConstCfgRSOOPtr getCfgRSOO () const
 Returns pointer to the const object representing set of RSOO-enabled options. More...
 
CfgSharedNetworks4Ptr getCfgSharedNetworks4 () const
 Returns pointer to non-const object holding configuration of shared networks in DHCPv4;. More...
 
CfgSharedNetworks6Ptr getCfgSharedNetworks6 () const
 Returns pointer to non-const object holding configuration of shared networks in DHCPv6. More...
 
CfgSubnets4Ptr getCfgSubnets4 ()
 Returns pointer to non-const object holding subnets configuration for DHCPv4. More...
 
ConstCfgSubnets4Ptr getCfgSubnets4 () const
 Returns pointer to const object holding subnets configuration for DHCPv4. More...
 
CfgSubnets6Ptr getCfgSubnets6 ()
 Returns pointer to non-const object holding subnets configuration for DHCPv6. More...
 
ConstCfgSubnets6Ptr getCfgSubnets6 () const
 Returns pointer to const object holding subnets configuration for DHCPv6. More...
 
ClientClassDictionaryPtr getClientClassDictionary ()
 Returns pointer to the dictionary of global client class definitions. More...
 
const ClientClassDictionaryPtr getClientClassDictionary () const
 Returns pointer to const dictionary of global client class definitions. More...
 
std::string getConfigSummary (const uint32_t selection) const
 Returns summary of the configuration in the textual format. More...
 
isc::data::ConstElementPtr getConfiguredGlobal (std::string name) const
 Returns pointer to a given configured global parameter. More...
 
isc::data::ConstElementPtr getConfiguredGlobal (int index) const
 Returns pointer to a given configured global parameter. More...
 
CfgGlobalsPtr getConfiguredGlobals ()
 Returns non-const pointer to configured global parameters. More...
 
ConstCfgGlobalsPtr getConfiguredGlobals () const
 Returns const pointer to configured global parameters. More...
 
CfgConsistencyPtr getConsistency ()
 Returns const pointer to object holding sanity checks flags. More...
 
const isc::data::ConstElementPtr getControlSocketInfo () const
 Returns information about control socket. More...
 
D2ClientConfigPtr getD2ClientConfig ()
 Returns pointer to the D2 client configuration. More...
 
const D2ClientConfigPtr getD2ClientConfig () const
 Returns pointer to const D2 client configuration. More...
 
DdnsParamsPtr getDdnsParams (const Subnet4Ptr &subnet) const
 Fetches the DDNS parameters for a given DHCPv4 subnet. More...
 
DdnsParamsPtr getDdnsParams (const Subnet6Ptr &subnet) const
 Fetches the DDNS parameters for a given DHCPv6 subnet. More...
 
uint32_t getDeclinePeriod () const
 Returns probation-period. More...
 
uint16_t getDhcp4o6Port () const
 Returns DHCP4o6 IPC port. More...
 
const isc::data::ConstElementPtr getDHCPMultiThreading () const
 Returns DHCP multi threading information. More...
 
const isc::data::ConstElementPtr getDHCPQueueControl () const
 Returns DHCP queue control information. More...
 
bool getEchoClientId () const
 Returns whether server should send back client-id in DHCPv4. More...
 
isc::hooks::HooksConfiggetHooksConfig ()
 Returns non-const reference to configured hooks libraries. More...
 
const isc::hooks::HooksConfiggetHooksConfig () const
 Returns const reference to configured hooks libraries. More...
 
bool getLenientOptionParsing () const
 Get lenient option parsing compatibility flag. More...
 
CfgMACSourcegetMACSources ()
 Returns non-const reference to an array that stores MAC/hardware address sources. More...
 
const CfgMACSourcegetMACSources () const
 Returns const reference to an array that stores MAC/hardware address sources. More...
 
bool getReservationsLookupFirst () const
 Returns whether the server does host reservations lookup before lease lookup. More...
 
uint32_t getSequence () const
 Returns configuration sequence number. More...
 
virtual void merge (ConfigBase &other)
 Merges the configuration specified as a parameter into this configuration. More...
 
void removeStatistics ()
 Removes statistics. More...
 
void sanityChecksLifetime (const std::string &name) const
 Conducts sanity checks on global lifetime parameters. More...
 
void sanityChecksLifetime (const SrvConfig &target_config, const std::string &name) const
 Conducts sanity checks on global lifetime parameters before merge from the external configuration to the target one. More...
 
bool sequenceEquals (const SrvConfig &other)
 Compares configuration sequence with other sequence. More...
 
void setClientClassDictionary (const ClientClassDictionaryPtr &dictionary)
 Sets the client class dictionary. More...
 
void setControlSocketInfo (const isc::data::ConstElementPtr &control_socket)
 Sets information about the control socket. More...
 
void setD2ClientConfig (const D2ClientConfigPtr &d2_client_config)
 Sets the D2 client configuration. More...
 
void setDeclinePeriod (const uint32_t decline_timer)
 Sets decline probation-period. More...
 
void setDhcp4o6Port (uint16_t port)
 Sets DHCP4o6 IPC port. More...
 
void setDHCPMultiThreading (const isc::data::ConstElementPtr dhcp_multi_threading)
 Sets information about the dhcp multi threading. More...
 
void setDHCPQueueControl (const isc::data::ConstElementPtr dhcp_queue_control)
 Sets information about the dhcp queue control. More...
 
void setEchoClientId (const bool echo)
 Sets whether server should send back client-id in DHCPv4. More...
 
void setIPReservationsUnique (const bool unique)
 Configures the server to allow or disallow specifying multiple hosts with the same IP address/subnet. More...
 
void setLenientOptionParsing (bool const value)
 Set lenient option parsing compatibility flag. More...
 
void setReservationsLookupFirst (const bool first)
 Sets whether the server does host reservations lookup before lease lookup. More...
 
virtual isc::data::ElementPtr toElement () const
 Unparse a configuration object. More...
 
void updateStatistics ()
 Updates statistics. More...
 
Methods and operators used to compare configurations.
bool equals (const SrvConfig &other) const
 Compares two objects for equality. More...
 
bool nequals (const SrvConfig &other) const
 Compares two objects for inequality. More...
 
bool operator== (const SrvConfig &other) const
 Equality operator. More...
 
bool operator!= (const SrvConfig &other) const
 other An object to be compared with this object. More...
 
- Public Member Functions inherited from isc::process::ConfigBase
const process::LoggingInfoStoragegetLoggingInfo () const
 Returns logging specific configuration. More...
 
void addLoggingInfo (const process::LoggingInfo &logging_info)
 Sets logging specific configuration. More...
 
void applyLoggingCfg () const
 Apply logging configuration to log4cplus. More...
 
bool equals (const ConfigBase &other) const
 Compares two configuration. More...
 
virtual void merge (ConfigBase &other)
 Merges specified configuration into this configuration. More...
 
process::ConstConfigControlInfoPtr getConfigControlInfo () const
 Fetches a read-only copy of the configuration control information. More...
 
void setConfigControlInfo (const process::ConfigControlInfoPtr &config_ctl_info)
 Set the configuration control information. More...
 
void setServerTag (const util::Optional< std::string > &server_tag)
 Sets the server's logical name. More...
 
util::Optional< std::string > getServerTag () const
 Returns the server's logical name. More...
 
boost::posix_time::ptime getLastCommitTime () const
 Returns the last commit timestamp. More...
 
void setLastCommitTime (const boost::posix_time::ptime &last_commit_time)
 Sets the last commit timestamp. 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 void moveDdnsParams (isc::data::ElementPtr srv_elem)
 Moves deprecated parameters from dhcp-ddns element to global element. More...
 
- Static Public Member Functions inherited from isc::data::UserContext
static data::ElementPtr toElement (data::ConstElementPtr map)
 Copy an Element map. More...
 

Static Public Attributes

Constants for selection of parameters returned by @c getConfigSummary
static const uint32_t CFGSEL_NONE = 0x00000000
 Nothing selected. More...
 
static const uint32_t CFGSEL_SUBNET4 = 0x00000001
 Number of IPv4 subnets. More...
 
static const uint32_t CFGSEL_SUBNET6 = 0x00000002
 Number of IPv6 subnets. More...
 
static const uint32_t CFGSEL_IFACE4 = 0x00000004
 Number of enabled ifaces. More...
 
static const uint32_t CFGSEL_IFACE6 = 0x00000008
 Number of v6 ifaces. More...
 
static const uint32_t CFGSEL_DDNS = 0x00000010
 DDNS enabled/disabled. More...
 
static const uint32_t CFGSEL_SUBNET = 0x00000003
 Number of all subnets. More...
 
static const uint32_t CFGSEL_GLOBALS = 0x00000020
 Configured globals. More...
 
static const uint32_t CFGSEL_CFG_CTL = 0x00000040
 Config control info. More...
 
static const uint32_t CFGSEL_ALL4 = 0x00000035
 IPv4 related config. More...
 
static const uint32_t CFGSEL_ALL6 = 0x0000003A
 IPv6 related config. More...
 
static const uint32_t CFGSEL_ALL = 0xFFFFFFFF
 Whole config. More...
 

Additional Inherited Members

- Protected Member Functions inherited from isc::process::ConfigBase
void copy (ConfigBase &new_config) const
 Copies the current configuration to a new configuration. More...
 
- Protected Attributes inherited from isc::data::UserContext
data::ConstElementPtr user_context_
 Pointer to the user context (may be NULL) More...
 

Detailed Description

Specifies current DHCP configuration.

Todo:
Migrate all other configuration parameters from cfgmgr.h here

Definition at line 177 of file srv_config.h.

Constructor & Destructor Documentation

◆ SrvConfig() [1/2]

isc::dhcp::SrvConfig::SrvConfig ( )

Default constructor.

This constructor sets configuration sequence number to 0.

Definition at line 35 of file srv_config.cc.

◆ SrvConfig() [2/2]

isc::dhcp::SrvConfig::SrvConfig ( const uint32_t  sequence)

Constructor.

Sets arbitrary configuration sequence number.

Parameters
sequenceThe configuration sequence.

Definition at line 53 of file srv_config.cc.

Member Function Documentation

◆ addConfiguredGlobal()

void isc::dhcp::SrvConfig::addConfiguredGlobal ( const std::string &  name,
isc::data::ConstElementPtr  value 
)
inline

Adds a parameter to the collection configured globals.

Parameters
namestd::string name of the global to add.
valueElementPtr containing the value of the global.

Definition at line 896 of file srv_config.h.

Referenced by applyDefaultsConfiguredGlobals(), extractConfiguredGlobals(), and merge().

◆ applyDefaultsConfiguredGlobals()

void isc::dhcp::SrvConfig::applyDefaultsConfiguredGlobals ( const isc::data::SimpleDefaults defaults)

Applies defaults to global parameters.

Parameters
defaultsvector of (name, type, value) defaults to apply.

Definition at line 324 of file srv_config.cc.

References addConfiguredGlobal(), getConfiguredGlobal(), and isc_throw.

+ Here is the call graph for this function:

◆ clearConfiguredGlobals()

void isc::dhcp::SrvConfig::clearConfiguredGlobals ( )
inline

Removes all configured global parameters.

Note
This removes the default values too so either applyDefaultsConfiguredGlobals and mergeGlobals, or isc::data::SimpleParser::setDefaults and extractConfiguredGlobals should be called after.

Definition at line 880 of file srv_config.h.

◆ configureLowerLevelLibraries()

void isc::dhcp::SrvConfig::configureLowerLevelLibraries ( ) const

Convenience method to propagate configuration parameters through inversion of control.

To be used as a last resort when CfgMgr::instance().getCurrentCfg() can't be easily called from where the configuration parameter is used, usually because that particular library is lower in the dependency tree. Happens on configuration commit.

Definition at line 900 of file srv_config.cc.

References isc::dhcp::Option::lenient_parsing_.

◆ copy()

void isc::dhcp::SrvConfig::copy ( SrvConfig new_config) const

Copies the current configuration to a new configuration.

This method copies the parameters stored in the configuration to an object passed as parameter. The configuration sequence is not copied.

Warning
Some of the configuration objects are not copied at this point, e.g. subnets. This is because they contain quite complex data structures and they make use of pointers, so in many cases the default copy constructors can't be used. Implementing this requires quite a lot of time so this is left as is for now. The lack of ability to copy the entire configuration makes revert function of the CfgMgr unusable.
Parameters
[out]new_configAn object to which the configuration will be copied.

Definition at line 118 of file srv_config.cc.

References isc::hooks::HooksConfig::add(), isc::hooks::HooksConfig::clear(), isc::data::copy(), getD2ClientConfig(), and setD2ClientConfig().

+ Here is the call graph for this function:

◆ equals()

bool isc::dhcp::SrvConfig::equals ( const SrvConfig other) const

Compares two objects for equality.

It ignores the configuration sequence number when checking for equality of objects.

Parameters
otherAn object to be compared with this object.
Returns
true if two objects are equal, false otherwise.

Definition at line 140 of file srv_config.cc.

References isc::hooks::HooksConfig::get().

+ Here is the call graph for this function:

◆ extractConfiguredGlobals()

void isc::dhcp::SrvConfig::extractConfiguredGlobals ( isc::data::ConstElementPtr  config)

Saves scalar elements from the global scope of a configuration.

Definition at line 394 of file srv_config.cc.

References addConfiguredGlobal(), and isc_throw.

+ Here is the call graph for this function:

◆ getCfgDbAccess() [1/2]

CfgDbAccessPtr isc::dhcp::SrvConfig::getCfgDbAccess ( )
inline

Returns pointer to the object holding configuration of the lease and host database connection parameters.

Returns
Pointer to the object holding configuration of the lease and host database connection parameters.

Definition at line 445 of file srv_config.h.

Referenced by setIPReservationsUnique().

◆ getCfgDbAccess() [2/2]

ConstCfgDbAccessPtr isc::dhcp::SrvConfig::getCfgDbAccess ( ) const
inline

Returns const pointer to the object holding configuration of the lease and host database connection parameters.

Returns
Const pointer to the object holding configuration of the lease and host database connection parameters.

Definition at line 454 of file srv_config.h.

◆ getCfgDUID() [1/2]

CfgDUIDPtr isc::dhcp::SrvConfig::getCfgDUID ( )
inline

Returns pointer to the object holding configuration of the server identifier.

Returns
Pointer to the object holding configuration of the server identifier.

Definition at line 427 of file srv_config.h.

◆ getCfgDUID() [2/2]

ConstCfgDUIDPtr isc::dhcp::SrvConfig::getCfgDUID ( ) const
inline

Returns const pointer to the object holding configuration of the server identifier.

Returns
Const pointer to the object holding configuration of the server identifier.

Definition at line 436 of file srv_config.h.

◆ getCfgExpiration() [1/2]

CfgExpirationPtr isc::dhcp::SrvConfig::getCfgExpiration ( )
inline

Returns pointer to the object holding configuration pertaining to processing expired leases.

Returns
Pointer to the object holding configuration pertaining to processing expired leases.

Definition at line 409 of file srv_config.h.

◆ getCfgExpiration() [2/2]

ConstCfgExpirationPtr isc::dhcp::SrvConfig::getCfgExpiration ( ) const
inline

Returns pointer to the const object holding configuration pertaining to processing expired leases.

Returns
Pointer to the const object holding configuration pertaining to processing expired leases.

Definition at line 418 of file srv_config.h.

◆ getCfgHostOperations4() [1/2]

CfgHostOperationsPtr isc::dhcp::SrvConfig::getCfgHostOperations4 ( )
inline

Returns pointer to the object holding general configuration for host reservations in DHCPv4.

Returns
Pointer to the object holding general configuration for host reservations in DHCPv4.

Definition at line 463 of file srv_config.h.

◆ getCfgHostOperations4() [2/2]

ConstCfgHostOperationsPtr isc::dhcp::SrvConfig::getCfgHostOperations4 ( ) const
inline

Returns const pointer to the object holding general configuration for host reservations in DHCPv4.

Returns
Const pointer to the object holding general configuration for host reservations in DHCPv4.

Definition at line 472 of file srv_config.h.

◆ getCfgHostOperations6() [1/2]

CfgHostOperationsPtr isc::dhcp::SrvConfig::getCfgHostOperations6 ( )
inline

Returns pointer to the object holding general configuration for host reservations in DHCPv6.

Returns
Pointer to the object holding general configuration for host reservations in DHCPv6.

Definition at line 481 of file srv_config.h.

◆ getCfgHostOperations6() [2/2]

ConstCfgHostOperationsPtr isc::dhcp::SrvConfig::getCfgHostOperations6 ( ) const
inline

Returns const pointer to the object holding general configuration for host reservations in DHCPv6.

Returns
Const pointer to the object holding general configuration for host reservations in DHCPv6.

Definition at line 490 of file srv_config.h.

◆ getCfgHosts() [1/2]

CfgHostsPtr isc::dhcp::SrvConfig::getCfgHosts ( )
inline

Returns pointer to the non-const objects representing host reservations for different IPv4 and IPv6 subnets.

Returns
Pointer to the non-const object holding host reservations.

Definition at line 375 of file srv_config.h.

Referenced by setIPReservationsUnique().

◆ getCfgHosts() [2/2]

ConstCfgHostsPtr isc::dhcp::SrvConfig::getCfgHosts ( ) const
inline

Returns pointer to the const objects representing host reservations for different IPv4 and IPv6 subnets.

Returns
Pointer to the const object holding host reservations.

Definition at line 383 of file srv_config.h.

◆ getCfgIface() [1/2]

CfgIfacePtr isc::dhcp::SrvConfig::getCfgIface ( )
inline

Returns non-const pointer to interface configuration.

This function returns a non-const pointer to the interface configuration.

Returns
Object representing configuration of interfaces.

Definition at line 265 of file srv_config.h.

◆ getCfgIface() [2/2]

ConstCfgIfacePtr isc::dhcp::SrvConfig::getCfgIface ( ) const
inline

Returns const pointer to interface configuration.

This function returns a const pointer to the interface configuration.

Returns
Object representing configuration of interfaces.

Definition at line 275 of file srv_config.h.

◆ getCfgOption() [1/2]

CfgOptionPtr isc::dhcp::SrvConfig::getCfgOption ( )
inline

Returns pointer to the non-const object holding options.

This method returns a pointer to the object which holds instances of the options to be returned to the clients belonging to any subnet.

Returns
Pointer to the object holding options.

Definition at line 307 of file srv_config.h.

Referenced by merge().

◆ getCfgOption() [2/2]

const ConstCfgOptionPtr isc::dhcp::SrvConfig::getCfgOption ( ) const
inline

Returns pointer to the const object holding options.

This method returns a pointer to the object which holds instances of the options to be returned to the clients belonging to any subnet.

Returns
Pointer to the object holding options.

Definition at line 317 of file srv_config.h.

◆ getCfgOptionDef() [1/2]

CfgOptionDefPtr isc::dhcp::SrvConfig::getCfgOptionDef ( )
inline

Return pointer to non-const object representing user-defined option definitions.

This function returns a pointer to the object which represents the user defined option definitions grouped by option space name.

Returns
Pointer to an object holding option definitions.

Definition at line 286 of file srv_config.h.

Referenced by merge().

◆ getCfgOptionDef() [2/2]

ConstCfgOptionDefPtr isc::dhcp::SrvConfig::getCfgOptionDef ( ) const
inline

Returns pointer to the const object representing user-defined option definitions.

This function returns a pointer to the object which represents the user defined option definitions grouped by option space name.

Returns
Pointer to an object holding option definitions.

Definition at line 297 of file srv_config.h.

◆ getCfgRSOO() [1/2]

CfgRSOOPtr isc::dhcp::SrvConfig::getCfgRSOO ( )
inline

Returns pointer to the non-const object representing set of RSOO-enabled options.

Returns
Pointer to the non-const object holding RSOO-enabled options.

Definition at line 392 of file srv_config.h.

◆ getCfgRSOO() [2/2]

ConstCfgRSOOPtr isc::dhcp::SrvConfig::getCfgRSOO ( ) const
inline

Returns pointer to the const object representing set of RSOO-enabled options.

Returns
Pointer to the const object holding RSOO-enabled options.

Definition at line 400 of file srv_config.h.

◆ getCfgSharedNetworks4()

CfgSharedNetworks4Ptr isc::dhcp::SrvConfig::getCfgSharedNetworks4 ( ) const
inline

Returns pointer to non-const object holding configuration of shared networks in DHCPv4;.

Returns
Pointer to the object holding shared networks configuration for DHCPv4.

Definition at line 334 of file srv_config.h.

Referenced by merge().

◆ getCfgSharedNetworks6()

CfgSharedNetworks6Ptr isc::dhcp::SrvConfig::getCfgSharedNetworks6 ( ) const
inline

Returns pointer to non-const object holding configuration of shared networks in DHCPv6.

Returns
Pointer to the object holding shared networks configuration for DHCPv6.

Definition at line 343 of file srv_config.h.

Referenced by merge().

◆ getCfgSubnets4() [1/2]

CfgSubnets4Ptr isc::dhcp::SrvConfig::getCfgSubnets4 ( )
inline

Returns pointer to non-const object holding subnets configuration for DHCPv4.

Returns
Pointer to the object holding subnets configuration for DHCPv4.

Definition at line 325 of file srv_config.h.

Referenced by getConfigSummary(), merge(), removeStatistics(), and updateStatistics().

◆ getCfgSubnets4() [2/2]

ConstCfgSubnets4Ptr isc::dhcp::SrvConfig::getCfgSubnets4 ( ) const
inline

Returns pointer to const object holding subnets configuration for DHCPv4.

Returns
Pointer to the object holding subnets configuration for DHCPv4.

Definition at line 351 of file srv_config.h.

◆ getCfgSubnets6() [1/2]

CfgSubnets6Ptr isc::dhcp::SrvConfig::getCfgSubnets6 ( )
inline

Returns pointer to non-const object holding subnets configuration for DHCPv6.

Returns
Pointer to the object holding subnets configuration for DHCPv6.

Definition at line 359 of file srv_config.h.

Referenced by getConfigSummary(), merge(), removeStatistics(), and updateStatistics().

◆ getCfgSubnets6() [2/2]

ConstCfgSubnets6Ptr isc::dhcp::SrvConfig::getCfgSubnets6 ( ) const
inline

Returns pointer to const object holding subnets configuration for DHCPv6.

Returns
Pointer to the object holding subnets configuration for DHCPv6.

Definition at line 367 of file srv_config.h.

◆ getClientClassDictionary() [1/2]

ClientClassDictionaryPtr isc::dhcp::SrvConfig::getClientClassDictionary ( )
inline

Returns pointer to the dictionary of global client class definitions.

Returns
Pointer to the dictionary of global client class definitions

Definition at line 565 of file srv_config.h.

Referenced by merge().

◆ getClientClassDictionary() [2/2]

const ClientClassDictionaryPtr isc::dhcp::SrvConfig::getClientClassDictionary ( ) const
inline

Returns pointer to const dictionary of global client class definitions.

Returns
Pointer to const dictionary of global client class definitions

Definition at line 573 of file srv_config.h.

◆ getConfigSummary()

std::string isc::dhcp::SrvConfig::getConfigSummary ( const uint32_t  selection) const

Returns summary of the configuration in the textual format.

This method returns the brief text describing the current configuration. It may be used for logging purposes, e.g. when the new configuration is committed to notify a user about the changes in configuration.

Todo:
Currently this method uses CfgMgr accessors to get the configuration parameters. Once these parameters are migrated from the CfgMgr this method will have to be modified accordingly.
Todo:
Implement reporting a summary of interfaces being used for receiving and sending DHCP messages. This will be implemented with ticket #3512.
Parameters
selectionIs a bitfield which describes the parts of the configuration to be returned.
Returns
Summary of the configuration in the textual format.

Definition at line 72 of file srv_config.cc.

References CFGSEL_DDNS, CFGSEL_SUBNET4, CFGSEL_SUBNET6, getCfgSubnets4(), getCfgSubnets6(), and getD2ClientConfig().

+ Here is the call graph for this function:

◆ getConfiguredGlobal() [1/2]

isc::data::ConstElementPtr isc::dhcp::SrvConfig::getConfiguredGlobal ( std::string  name) const
inline

Returns pointer to a given configured global parameter.

Parameters
nameName of the parameter to fetch.
Returns
Pointer to the parameter if it exists, otherwise an empty pointer.

Definition at line 861 of file srv_config.h.

Referenced by applyDefaultsConfiguredGlobals(), merge(), sanityChecksLifetime(), and updateStatistics().

◆ getConfiguredGlobal() [2/2]

isc::data::ConstElementPtr isc::dhcp::SrvConfig::getConfiguredGlobal ( int  index) const
inline

Returns pointer to a given configured global parameter.

Parameters
indexIndex of the parameter to fetch.
Returns
Pointer to the parameter if it exists, otherwise an empty pointer.

Definition at line 870 of file srv_config.h.

◆ getConfiguredGlobals() [1/2]

CfgGlobalsPtr isc::dhcp::SrvConfig::getConfiguredGlobals ( )
inline

Returns non-const pointer to configured global parameters.

This function returns a non-const pointer to the configured global parameters.

Returns
Object representing configured global parameters.

Definition at line 842 of file srv_config.h.

Referenced by merge().

◆ getConfiguredGlobals() [2/2]

ConstCfgGlobalsPtr isc::dhcp::SrvConfig::getConfiguredGlobals ( ) const
inline

Returns const pointer to configured global parameters.

This function returns a const pointer to the configured global parameters.

Returns
Object representing configured global parameters.

Definition at line 852 of file srv_config.h.

◆ getConsistency()

CfgConsistencyPtr isc::dhcp::SrvConfig::getConsistency ( )
inline

Returns const pointer to object holding sanity checks flags.

Returns
Const pointer to object holding sanity checks flags

Definition at line 497 of file srv_config.h.

Referenced by isc::dhcp::SanityChecksParser::parse().

◆ getControlSocketInfo()

const isc::data::ConstElementPtr isc::dhcp::SrvConfig::getControlSocketInfo ( ) const
inline

Returns information about control socket.

Returns
pointer to the Element that holds control-socket map

Definition at line 522 of file srv_config.h.

◆ getD2ClientConfig() [1/2]

D2ClientConfigPtr isc::dhcp::SrvConfig::getD2ClientConfig ( )
inline

Returns pointer to the D2 client configuration.

Returns
Pointer to the D2 client configuration

Definition at line 818 of file srv_config.h.

Referenced by copy(), getConfigSummary(), and getDdnsParams().

◆ getD2ClientConfig() [2/2]

const D2ClientConfigPtr isc::dhcp::SrvConfig::getD2ClientConfig ( ) const
inline

Returns pointer to const D2 client configuration.

Returns
Pointer to const D2 client configuration

Definition at line 825 of file srv_config.h.

◆ getDdnsParams() [1/2]

DdnsParamsPtr isc::dhcp::SrvConfig::getDdnsParams ( const Subnet4Ptr subnet) const

Fetches the DDNS parameters for a given DHCPv4 subnet.

Creates a DdnsParams structure which retain and thereafter use the given subnet to fetch DDNS behavioral parameters. The values are fetched with the inheritance scope mode of Network::ALL.

Parameters
subnetDHCPv4 Subnet for which DDNS parameters are desired.
Returns
pointer to DddnParams instance

Definition at line 829 of file srv_config.cc.

References getD2ClientConfig().

+ Here is the call graph for this function:

◆ getDdnsParams() [2/2]

DdnsParamsPtr isc::dhcp::SrvConfig::getDdnsParams ( const Subnet6Ptr subnet) const

Fetches the DDNS parameters for a given DHCPv6 subnet.

Creates a DdnsParams structure which retain and thereafter use the given subnet to fetch DDNS behavioral parameters. The values are fetched with the inheritance scope mode of Network::ALL.

Parameters
subnetDHCPv6 Subnet for which DDNS parameters are desired.
Returns
pointer to DddnParams instance

Definition at line 835 of file srv_config.cc.

References getD2ClientConfig().

+ Here is the call graph for this function:

◆ getDeclinePeriod()

uint32_t isc::dhcp::SrvConfig::getDeclinePeriod ( ) const
inline

Returns probation-period.

See setDeclinePeriod for brief discussion.

Returns
value of probation-period, expressed in seconds

Definition at line 775 of file srv_config.h.

◆ getDhcp4o6Port()

uint16_t isc::dhcp::SrvConfig::getDhcp4o6Port ( ) const
inline

Returns DHCP4o6 IPC port.

See setDhcp4o6Port for brief discussion.

Returns
value of DHCP4o6 IPC port

Definition at line 811 of file srv_config.h.

◆ getDHCPMultiThreading()

const isc::data::ConstElementPtr isc::dhcp::SrvConfig::getDHCPMultiThreading ( ) const
inline

Returns DHCP multi threading information.

Returns
pointer to the DHCP multi threading information

Definition at line 550 of file srv_config.h.

Referenced by toElement().

◆ getDHCPQueueControl()

const isc::data::ConstElementPtr isc::dhcp::SrvConfig::getDHCPQueueControl ( ) const
inline

Returns DHCP queue control information.

Returns
pointer to the DHCP queue control information

Definition at line 536 of file srv_config.h.

Referenced by toElement().

◆ getEchoClientId()

bool isc::dhcp::SrvConfig::getEchoClientId ( ) const
inline

Returns whether server should send back client-id in DHCPv4.

Returns
true if client-id should be returned, false otherwise.

Definition at line 792 of file srv_config.h.

◆ getHooksConfig() [1/2]

isc::hooks::HooksConfig& isc::dhcp::SrvConfig::getHooksConfig ( )
inline

Returns non-const reference to configured hooks libraries.

Returns
non-const reference to configured hooks libraries.

Definition at line 587 of file srv_config.h.

◆ getHooksConfig() [2/2]

const isc::hooks::HooksConfig& isc::dhcp::SrvConfig::getHooksConfig ( ) const
inline

Returns const reference to configured hooks libraries.

Returns
const reference to configured hooks libraries.

Definition at line 594 of file srv_config.h.

References isc::data::copy().

+ Here is the call graph for this function:

◆ getLenientOptionParsing()

bool isc::dhcp::SrvConfig::getLenientOptionParsing ( ) const
inline

Get lenient option parsing compatibility flag.

Returns
the configured value for lenient option parsing

Definition at line 983 of file srv_config.h.

◆ getMACSources() [1/2]

CfgMACSource& isc::dhcp::SrvConfig::getMACSources ( )
inline

Returns non-const reference to an array that stores MAC/hardware address sources.

Returns
non-const reference to MAC/hardware address sources

Definition at line 507 of file srv_config.h.

◆ getMACSources() [2/2]

const CfgMACSource& isc::dhcp::SrvConfig::getMACSources ( ) const
inline

Returns const reference to an array that stores MAC/hardware address sources.

Returns
const reference to MAC/hardware address sources

Definition at line 515 of file srv_config.h.

◆ getReservationsLookupFirst()

bool isc::dhcp::SrvConfig::getReservationsLookupFirst ( ) const
inline

Returns whether the server does host reservations lookup before lease lookup.

Returns
Boolean value indicating if host reservations lookup should be performed before lease lookup.

Definition at line 963 of file srv_config.h.

◆ getSequence()

uint32_t isc::dhcp::SrvConfig::getSequence ( ) const
inline

Returns configuration sequence number.

Returns
The configuration sequence number.

Definition at line 243 of file srv_config.h.

Referenced by sequenceEquals().

◆ merge()

void isc::dhcp::SrvConfig::merge ( ConfigBase other)
virtual

Merges the configuration specified as a parameter into this configuration.

This method is used when two or more configurations held in the SrvConfig objects need to be combined into a single configuration. Specifically, when the configuration backend is used, then part of the server configuration comes from the configuration file and stored in the staging configuration. The other part of the configuration comes from the database. The configuration fetched from the database is stored in a separate SrvConfig instance and then merged into the staging configuration prior to committing it.

The merging strategy depends on the underlying data being merged. For example: subnets are merged using the algorithm implemented in the CfgSubnets4. Other data structures are merged using the algorithms implemented in their respective configuration containers.

The general rule is that the configuration data from the other object replaces configuration data held in this object instance. The data that do not overlap between the two objects is simply inserted into this configuration.

Due to the nature of the client classes, i.e. they are ordered and depend on each other, individual classes are not merged. Instead, the new list of classes entirely replaces the existing list. It implies that client classes should not be defined in a config file if there are classes defined in the config backend for this server.

Warning
The call to merge may modify the data in the other object. Therefore, the caller must not rely on the data held in the other object after the call to merge. Also, the data held in other must not be modified after the call to merge because it may affect the merged configuration.

The other parameter must be a SrvConfig or its derivation.

This method calls either merge4 or merge6 based on

Currently, the following parts of the configuration are merged:

  • globals
  • option definitions
  • options
  • client classes
  • via merge4 or merge6 depending on CfgMgr::family_:
    • shared networks
    • subnets
Todo:
Add support for merging other configuration elements.
Parameters
otherAn object holding the configuration to be merged into this configuration.

Definition at line 166 of file srv_config.cc.

References addConfiguredGlobal(), getCfgOption(), getCfgOptionDef(), getCfgSharedNetworks4(), getCfgSharedNetworks6(), getCfgSubnets4(), getCfgSubnets6(), getClientClassDictionary(), getConfiguredGlobal(), getConfiguredGlobals(), isc::dhcp::CfgMgr::instance(), isc_throw, isc::data::merge(), isc::dhcp::BaseNetworkParser::moveReservationMode(), isc::dhcp::CfgGlobals::RESERVATION_MODE, isc::dhcp::CfgGlobals::RESERVATIONS_GLOBAL, isc::dhcp::CfgGlobals::RESERVATIONS_IN_SUBNET, isc::dhcp::CfgGlobals::RESERVATIONS_OUT_OF_POOL, setClientClassDictionary(), setDeclinePeriod(), setDhcp4o6Port(), setEchoClientId(), setIPReservationsUnique(), setReservationsLookupFirst(), and isc::process::ConfigBase::setServerTag().

+ Here is the call graph for this function:

◆ moveDdnsParams()

void isc::dhcp::SrvConfig::moveDdnsParams ( isc::data::ElementPtr  srv_elem)
static

Moves deprecated parameters from dhcp-ddns element to global element.

Given a server configuration element map, the following parameters are moved from dhcp-ddns to top-level (i.e. global) element if they do not already exist there:

From dhcp-ddns: To (global):
------------------------------------------------------
override-no-update ddns-override-no-update
override-client-update ddns-override-client-update
replace-client-name ddns-replace-client-name
generated-prefix ddns-generated-prefix
qualifying-suffix ddns-qualifying-suffix
hostname-char-set hostname-char-set
hostname-char-replacement hostname-char-replacement

Note that the whether or not the deprecated parameters are added to the global element, they are always removed from the dhcp-ddns element.

Parameters
srv_elemserver top level map to alter

Definition at line 841 of file srv_config.cc.

References isc::dhcp::DHCPSRV_CFGMGR_DDNS_PARAMETER_IGNORED, isc::dhcp::DHCPSRV_CFGMGR_DDNS_PARAMETER_MOVED, isc::dhcp::dhcpsrv_logger, isc_throw, and LOG_INFO.

◆ nequals()

bool isc::dhcp::SrvConfig::nequals ( const SrvConfig other) const
inline

Compares two objects for inequality.

It ignores the configuration sequence number when checking for inequality of objects.

Parameters
otherAn object to be compared with this object.
Returns
true if two objects are not equal, false otherwise.

Definition at line 660 of file srv_config.h.

◆ operator!=()

bool isc::dhcp::SrvConfig::operator!= ( const SrvConfig other) const
inline

other An object to be compared with this object.

It ignores the configuration sequence number when checking for inequality of objects.

Parameters
otherAn object to be compared with this object.
Returns
true if two objects are not equal, false otherwise.

Definition at line 684 of file srv_config.h.

References isc::data::merge().

+ Here is the call graph for this function:

◆ operator==()

bool isc::dhcp::SrvConfig::operator== ( const SrvConfig other) const
inline

Equality operator.

It ignores the configuration sequence number when checking for equality of objects.

Parameters
otherAn object to be compared with this object.
Returns
true if two objects are equal, false otherwise.

Definition at line 672 of file srv_config.h.

◆ removeStatistics()

void isc::dhcp::SrvConfig::removeStatistics ( )

Removes statistics.

This method calls appropriate methods in child objects that remove related statistics. See CfgSubnets4::removeStatistics and CfgSubnets6::removeStatistics for details.

Definition at line 278 of file srv_config.cc.

References getCfgSubnets4(), and getCfgSubnets6().

+ Here is the call graph for this function:

◆ sanityChecksLifetime() [1/2]

void isc::dhcp::SrvConfig::sanityChecksLifetime ( const std::string &  name) const

Conducts sanity checks on global lifetime parameters.

Parameters
nameBase name of the lifetime parameter.

Definition at line 409 of file srv_config.cc.

References getConfiguredGlobal(), and isc_throw.

+ Here is the call graph for this function:

◆ sanityChecksLifetime() [2/2]

void isc::dhcp::SrvConfig::sanityChecksLifetime ( const SrvConfig target_config,
const std::string &  name 
) const

Conducts sanity checks on global lifetime parameters before merge from the external configuration to the target one.

Parameters
target_configTarget configuration.
nameBase name of the lifetime parameter.

Definition at line 486 of file srv_config.cc.

References getConfiguredGlobal(), and isc_throw.

+ Here is the call graph for this function:

◆ sequenceEquals()

bool isc::dhcp::SrvConfig::sequenceEquals ( const SrvConfig other)

Compares configuration sequence with other sequence.

This method compares sequence numbers of two configurations for equality. The sequence numbers are meant to be unique, so if they are equal it means that they point to the same configuration.

Parameters
otherConfiguration which sequence number should be compared with the sequence number of this configuration.
Returns
true if sequence numbers are equal.

Definition at line 113 of file srv_config.cc.

References getSequence().

+ Here is the call graph for this function:

◆ setClientClassDictionary()

void isc::dhcp::SrvConfig::setClientClassDictionary ( const ClientClassDictionaryPtr dictionary)
inline

Sets the client class dictionary.

Parameters
dictionarypointer to the new class dictionary

Definition at line 580 of file srv_config.h.

Referenced by merge().

◆ setControlSocketInfo()

void isc::dhcp::SrvConfig::setControlSocketInfo ( const isc::data::ConstElementPtr control_socket)
inline

Sets information about the control socket.

Parameters
control_socketElement that holds control-socket map

Definition at line 529 of file srv_config.h.

Referenced by isc::dhcp::ControlSocketParser::parse().

◆ setD2ClientConfig()

void isc::dhcp::SrvConfig::setD2ClientConfig ( const D2ClientConfigPtr d2_client_config)
inline

Sets the D2 client configuration.

Parameters
d2_client_configpointer to the new D2 client configuration

Definition at line 832 of file srv_config.h.

Referenced by copy().

◆ setDeclinePeriod()

void isc::dhcp::SrvConfig::setDeclinePeriod ( const uint32_t  decline_timer)
inline

Sets decline probation-period.

Probation-period is the timer, expressed, in seconds, that specifies how long a lease is unavailable after reported as declined.

Parameters
decline_timernumber of seconds after declined lease is restored

Definition at line 766 of file srv_config.h.

Referenced by merge().

◆ setDhcp4o6Port()

void isc::dhcp::SrvConfig::setDhcp4o6Port ( uint16_t  port)
inline

Sets DHCP4o6 IPC port.

DHCPv4-over-DHCPv6 uses a UDP socket for inter-server communication, this socket is bound and connected to this port and port + 1

Parameters
portport and port + 1 to use

Definition at line 802 of file srv_config.h.

Referenced by merge().

◆ setDHCPMultiThreading()

void isc::dhcp::SrvConfig::setDHCPMultiThreading ( const isc::data::ConstElementPtr  dhcp_multi_threading)
inline

Sets information about the dhcp multi threading.

Parameters
dhcp_multi_threadingnew dhcp multi threading information

Definition at line 557 of file srv_config.h.

Referenced by isc::dhcp::MultiThreadingConfigParser::parse().

◆ setDHCPQueueControl()

void isc::dhcp::SrvConfig::setDHCPQueueControl ( const isc::data::ConstElementPtr  dhcp_queue_control)
inline

Sets information about the dhcp queue control.

Parameters
dhcp_queue_controlnew dhcp queue control information

Definition at line 543 of file srv_config.h.

◆ setEchoClientId()

void isc::dhcp::SrvConfig::setEchoClientId ( const bool  echo)
inline

Sets whether server should send back client-id in DHCPv4.

This is a compatibility flag. The default (true) is compliant with RFC6842. False is for backward compatibility.

Parameters
echoshould the client-id be sent or not

Definition at line 785 of file srv_config.h.

Referenced by merge().

◆ setIPReservationsUnique()

void isc::dhcp::SrvConfig::setIPReservationsUnique ( const bool  unique)

Configures the server to allow or disallow specifying multiple hosts with the same IP address/subnet.

This setting is applied in CfgDbAccess and CfgHosts. This function should be called when the server is being configured using the configuration file, config-set command or via the configuration backend.

Parameters
uniqueBoolean value indicating if it is allowed (when false) or disallowed to specify multiple hosts with the same IP reservation.

Definition at line 891 of file srv_config.cc.

References isc::dhcp::DHCPSRV_CFGMGR_IP_RESERVATIONS_UNIQUE_DUPLICATES_POSSIBLE, isc::dhcp::dhcpsrv_logger, getCfgDbAccess(), getCfgHosts(), and LOG_WARN.

Referenced by merge().

+ Here is the call graph for this function:

◆ setLenientOptionParsing()

void isc::dhcp::SrvConfig::setLenientOptionParsing ( bool const  value)
inline

Set lenient option parsing compatibility flag.

Parameters
valuethe boolean value to be set when configuring lenient option parsing

Definition at line 976 of file srv_config.h.

◆ setReservationsLookupFirst()

void isc::dhcp::SrvConfig::setReservationsLookupFirst ( const bool  first)
inline

Sets whether the server does host reservations lookup before lease lookup.

Parameters
firstBoolean value indicating if host reservations lookup should be performed before lease lookup.

Definition at line 954 of file srv_config.h.

Referenced by merge().

◆ toElement()

◆ updateStatistics()

void isc::dhcp::SrvConfig::updateStatistics ( )

Member Data Documentation

◆ CFGSEL_ALL

const uint32_t isc::dhcp::SrvConfig::CFGSEL_ALL = 0xFFFFFFFF
static

Whole config.

Definition at line 205 of file srv_config.h.

◆ CFGSEL_ALL4

const uint32_t isc::dhcp::SrvConfig::CFGSEL_ALL4 = 0x00000035
static

IPv4 related config.

Definition at line 201 of file srv_config.h.

◆ CFGSEL_ALL6

const uint32_t isc::dhcp::SrvConfig::CFGSEL_ALL6 = 0x0000003A
static

IPv6 related config.

Definition at line 203 of file srv_config.h.

◆ CFGSEL_CFG_CTL

const uint32_t isc::dhcp::SrvConfig::CFGSEL_CFG_CTL = 0x00000040
static

Config control info.

Definition at line 199 of file srv_config.h.

◆ CFGSEL_DDNS

const uint32_t isc::dhcp::SrvConfig::CFGSEL_DDNS = 0x00000010
static

DDNS enabled/disabled.

Definition at line 193 of file srv_config.h.

Referenced by getConfigSummary().

◆ CFGSEL_GLOBALS

const uint32_t isc::dhcp::SrvConfig::CFGSEL_GLOBALS = 0x00000020
static

Configured globals.

Definition at line 197 of file srv_config.h.

◆ CFGSEL_IFACE4

const uint32_t isc::dhcp::SrvConfig::CFGSEL_IFACE4 = 0x00000004
static

Number of enabled ifaces.

Definition at line 189 of file srv_config.h.

◆ CFGSEL_IFACE6

const uint32_t isc::dhcp::SrvConfig::CFGSEL_IFACE6 = 0x00000008
static

Number of v6 ifaces.

Definition at line 191 of file srv_config.h.

◆ CFGSEL_NONE

const uint32_t isc::dhcp::SrvConfig::CFGSEL_NONE = 0x00000000
static

Nothing selected.

Definition at line 183 of file srv_config.h.

◆ CFGSEL_SUBNET

const uint32_t isc::dhcp::SrvConfig::CFGSEL_SUBNET = 0x00000003
static

Number of all subnets.

Definition at line 195 of file srv_config.h.

◆ CFGSEL_SUBNET4

const uint32_t isc::dhcp::SrvConfig::CFGSEL_SUBNET4 = 0x00000001
static

Number of IPv4 subnets.

Definition at line 185 of file srv_config.h.

Referenced by getConfigSummary().

◆ CFGSEL_SUBNET6

const uint32_t isc::dhcp::SrvConfig::CFGSEL_SUBNET6 = 0x00000002
static

Number of IPv6 subnets.

Definition at line 187 of file srv_config.h.

Referenced by getConfigSummary().


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