23 #include <boost/make_shared.hpp> 35 SrvConfig::SrvConfig()
36 : sequence_(0), cfg_iface_(new
CfgIface()),
47 decline_timer_(0), echo_v4_client_id_(true), dhcp4o6_port_(0),
50 lenient_option_parsing_(false), ignore_rai_link_selection_(false),
51 reservations_lookup_first_(false) {
55 : sequence_(sequence), cfg_iface_(new
CfgIface()),
66 decline_timer_(0), echo_v4_client_id_(true), dhcp4o6_port_(0),
69 lenient_option_parsing_(false), ignore_rai_link_selection_(false),
70 reservations_lookup_first_(false) {
79 if (subnets_num > 0) {
80 s <<
"added IPv4 subnets: " << subnets_num;
82 s <<
"no IPv4 subnets!";
89 if (subnets_num > 0) {
90 s <<
"added IPv6 subnets: " << subnets_num;
92 s <<
"no IPv6 subnets!";
99 s <<
"DDNS: " << (ddns_enabled ?
"enabled" :
"disabled") <<
"; ";
102 if (s.tellp() ==
static_cast<std::streampos
>(0)) {
103 s <<
"no config details available";
106 std::string summary = s.str();
107 size_t last_separator_pos = summary.find_last_of(
";");
108 if (last_separator_pos == summary.length() - 2) {
109 summary.erase(last_separator_pos);
124 new_config.cfg_iface_.reset(
new CfgIface(*cfg_iface_));
126 cfg_option_def_->copyTo(*new_config.cfg_option_def_);
127 cfg_option_->copyTo(*new_config.cfg_option_);
133 new_config.hooks_config_.
clear();
135 for (HookLibsCollection::const_iterator it = hooks_config_.get().begin();
136 it != hooks_config_.get().end(); ++it) {
137 new_config.hooks_config_.
add(it->first, it->second);
145 if (!ConfigBase::equals(other)) {
150 if ((*cfg_iface_ != *other.cfg_iface_) ||
151 (*cfg_option_def_ != *other.cfg_option_def_) ||
152 (*cfg_option_ != *other.cfg_option_) ||
153 (*class_dictionary_ != *other.class_dictionary_) ||
154 (*d2_client_config_ != *other.d2_client_config_)) {
160 if (hooks_config_.get().size() != other.hooks_config_.
get().size()) {
164 return (hooks_config_.equal(other.hooks_config_));
176 mergeGlobals(other_srv_config);
185 cfg_option_->merge(cfg_option_def_, (*other_srv_config.
getCfgOption()));
197 merge4(other_srv_config);
199 merge6(other_srv_config);
201 }
catch (
const std::bad_cast&) {
203 " of the SrvConfig as an argument of the call to" 204 " SrvConfig::merge()");
233 SrvConfig::mergeGlobals(
SrvConfig& other) {
254 std::string name = merged_global.first;
257 if (name ==
"decline-probation-period") {
259 }
else if (name ==
"echo-client-id") {
263 }
else if (name ==
"dhcp4o6-port") {
265 }
else if (name ==
"server-tag") {
267 }
else if (name ==
"ip-reservations-unique") {
269 }
else if (name ==
"reservations-lookup-first") {
272 }
catch(
const std::exception& ex) {
274 <<
" explicit global:" << name);
293 uint32_t max_samples = 0;
295 max_samples = samples->intValue();
297 if (max_samples != 0) {
304 int64_t time_duration = duration->intValue();
305 auto max_age = std::chrono::seconds(time_duration);
307 if (max_samples == 0) {
334 for (
auto def_value : defaults) {
346 switch (def_value.type_) {
353 int int_value = boost::lexical_cast<
int>(def_value.value_);
356 catch (
const std::exception& ex) {
358 "Internal error. Integer value expected for: " 359 << def_value.name_ <<
", value is: " 360 << def_value.value_ );
367 if (def_value.value_ == std::string(
"true")) {
369 }
else if (def_value.value_ == std::string(
"false")) {
373 "Internal error. Boolean value for " 374 << def_value.name_ <<
" specified as " 375 << def_value.value_ <<
", expected true or false");
381 double dbl_value = boost::lexical_cast<
double>(def_value.value_);
388 "Internal error. Incorrect default value type for " 401 const std::map<std::string, ConstElementPtr>& values = config->mapValue();
402 for (
auto value = values.begin(); value != values.end(); ++value) {
416 value = has_value->intValue();
419 uint32_t min_value = 0;
422 min_value = has_min->intValue();
425 uint32_t max_value = 0;
428 max_value = has_max->intValue();
431 if (!has_value && !has_min && !has_max) {
435 if (!has_min && !has_max) {
438 }
else if (!has_min) {
441 }
else if (!has_max) {
445 }
else if (has_min) {
452 << name <<
" but no " << name <<
" (default)");
460 if (min_value > max_value) {
461 if (has_min && has_max) {
463 << min_value <<
") is not less than max-" << name <<
" (" 464 << max_value <<
")");
465 }
else if (has_min) {
468 << min_value <<
") is not less than (default) " << name
469 <<
" (" << value <<
")");
473 <<
" (" << value <<
") is not less than max-" << name
474 <<
" (" << max_value <<
")");
479 if ((value < min_value) || (value > max_value)) {
481 << value <<
") is not between min-" << name <<
" (" 482 << min_value <<
") and max-" << name <<
" (" 483 << max_value <<
")");
489 const std::string& name)
const {
496 bool new_value =
true;
502 value = has_value->intValue();
505 uint32_t min_value = 0;
513 min_value = has_min->intValue();
516 uint32_t max_value = 0;
524 max_value = has_max->intValue();
527 if (!has_value && !has_min && !has_max) {
531 if (!has_min && !has_max) {
534 }
else if (!has_min) {
537 }
else if (!has_max) {
541 }
else if (has_min) {
548 << name <<
" but no " << name <<
" (default)");
556 if (min_value > max_value) {
557 if (has_min && has_max) {
558 std::string from_min = (new_min ?
"new" :
"previous");
559 std::string from_max = (new_max ?
"new" :
"previous");
561 <<
" min-" << name <<
" (" 562 << min_value <<
") is not less than " 563 << from_max <<
" max-" << name
564 <<
" (" << max_value <<
")");
565 }
else if (has_min) {
567 std::string from_min = (new_min ?
"new" :
"previous");
568 std::string from_value = (new_value ?
"new" :
"previous");
570 <<
" min-" << name <<
" (" 571 << min_value <<
") is not less than " << from_value
572 <<
" (default) " << name
573 <<
" (" << value <<
")");
576 std::string from_max = (new_max ?
"new" :
"previous");
577 std::string from_value = (new_value ?
"new" :
"previous");
579 <<
" (default) " << name
580 <<
" (" << value <<
") is not less than " << from_max
581 <<
" max-" << name <<
" (" << max_value <<
")");
586 if ((value < min_value) || (value > max_value)) {
587 std::string from_value = (new_value ?
"new" :
"previous");
588 std::string from_min = (new_min ?
"new" :
"previous");
589 std::string from_max = (new_max ?
"new" :
"previous");
591 <<
" (default) " << name <<
" (" 592 << value <<
") is not between " << from_min
593 <<
" min-" << name <<
" (" << min_value
594 <<
") and " << from_max <<
" max-" 595 << name <<
" (" << max_value <<
")");
608 ElementPtr dhcp = configured_globals_->toElement();
612 if (!loggers_info.empty()) {
615 for (LoggingInfoStorage::const_iterator
logger =
616 loggers_info.cbegin();
618 loggers->add(
logger->toElement());
620 dhcp->set(
"loggers", loggers);
627 if (family == AF_INET6) {
636 dhcp->set(
"decline-probation-period",
639 if (family == AF_INET) {
643 dhcp->set(
"dhcp4o6-port",
646 dhcp->set(
"dhcp-ddns", d2_client_config_->toElement());
648 dhcp->set(
"interfaces-config", cfg_iface_->toElement());
650 dhcp->set(
"option-def", cfg_option_def_->toElement());
652 dhcp->set(
"option-data", cfg_option_->toElement());
665 std::vector<ElementPtr> sn_list;
667 if (family == AF_INET) {
671 for (Subnet4Collection::const_iterator subnet = subnets->cbegin();
672 subnet != subnets->cend(); ++subnet) {
675 (*subnet)->getSharedNetwork(network);
679 ElementPtr subnet_cfg = (*subnet)->toElement();
680 sn_list.push_back(subnet_cfg);
681 plain_subnets->add(subnet_cfg);
683 dhcp->set(
"subnet4", plain_subnets);
686 ElementPtr shared_networks = cfg_shared_networks4_->toElement();
687 dhcp->set(
"shared-networks", shared_networks);
690 const std::vector<ElementPtr> networks = shared_networks->listValue();
691 for (
auto network = networks.cbegin();
692 network != networks.cend(); ++network) {
693 const std::vector<ElementPtr> sh_list =
694 (*network)->get(
"subnet4")->listValue();
695 for (
auto subnet = sh_list.cbegin();
696 subnet != sh_list.cend(); ++subnet) {
697 sn_list.push_back(*subnet);
705 for (Subnet6Collection::const_iterator subnet = subnets->cbegin();
706 subnet != subnets->cend(); ++subnet) {
709 (*subnet)->getSharedNetwork(network);
713 ElementPtr subnet_cfg = (*subnet)->toElement();
714 sn_list.push_back(subnet_cfg);
715 plain_subnets->add(subnet_cfg);
717 dhcp->set(
"subnet6", plain_subnets);
720 ElementPtr shared_networks = cfg_shared_networks6_->toElement();
721 dhcp->set(
"shared-networks", shared_networks);
724 const std::vector<ElementPtr> networks = shared_networks->listValue();
725 for (
auto network = networks.cbegin();
726 network != networks.cend(); ++network) {
727 const std::vector<ElementPtr> sh_list =
728 (*network)->get(
"subnet6")->listValue();
729 for (
auto subnet = sh_list.cbegin();
730 subnet != sh_list.cend(); ++subnet) {
731 sn_list.push_back(*subnet);
742 if (global_resvs->size() > 0) {
743 dhcp->set(
"reservations", global_resvs);
747 for (std::vector<ElementPtr>::const_iterator subnet = sn_list.cbegin();
748 subnet != sn_list.cend(); ++subnet) {
753 SubnetID subnet_id =
id->intValue();
755 (*subnet)->set(
"reservations", resvs);
760 dhcp->set(
"expired-leases-processing", expired);
761 if (family == AF_INET6) {
763 dhcp->set(
"server-id", cfg_duid_->toElement());
766 dhcp->set(
"relay-supplied-options", cfg_rsoo_->toElement());
770 dhcp->set(
"lease-database", lease_db.
toElement());
774 if (hosts_databases->size() > 0) {
775 dhcp->set(
"hosts-databases", hosts_databases);
779 if (family == AF_INET) {
780 host_ids = cfg_host_operations4_->toElement();
782 host_ids = cfg_host_operations6_->toElement();
784 dhcp->set(
"host-reservation-identifiers", host_ids);
786 if (family == AF_INET6) {
787 dhcp->set(
"mac-sources", cfg_mac_source_.toElement());
790 if (!
isNull(control_socket_)) {
796 if (!client_classes->empty()) {
797 dhcp->set(
"client-classes", client_classes);
801 dhcp->set(
"hooks-libraries", hooks_libs);
803 result->set(family == AF_INET ?
"Dhcp4" :
"Dhcp6", dhcp);
806 dhcp->set(
"sanity-checks", cfg_consist);
812 dhcp->set(
"config-control", info_elem);
817 if (dhcp_queue_control) {
818 dhcp->set(
"dhcp-queue-control", dhcp_queue_control);
823 if (dhcp_multi_threading) {
824 dhcp->set(
"multi-threading", dhcp_multi_threading);
844 if (!srv_elem || (srv_elem->getType() !=
Element::map)) {
848 if (!srv_elem->contains(
"dhcp-ddns")) {
853 ElementPtr d2_elem = boost::const_pointer_cast<
Element>(srv_elem->get(
"dhcp-ddns"));
859 std::string from_name;
863 std::vector<Param> params {
864 {
"override-no-update",
"ddns-override-no-update" },
865 {
"override-client-update",
"ddns-override-client-update" },
866 {
"replace-client-name",
"ddns-replace-client-name" },
867 {
"generated-prefix",
"ddns-generated-prefix" },
868 {
"qualifying-suffix",
"ddns-qualifying-suffix" },
869 {
"hostname-char-set",
"hostname-char-set" },
870 {
"hostname-char-replacement",
"hostname-char-replacement" }
873 for (
auto param : params) {
874 if (d2_elem->contains(param.from_name)) {
875 if (!srv_elem->contains(param.to_name)) {
877 srv_elem->set(param.to_name, d2_elem->get(param.from_name));
879 .arg(param.from_name).arg(param.to_name);
883 .arg(param.from_name).arg(param.to_name);
887 d2_elem->remove(param.from_name);
912 return (d2_client_enabled_ && subnet_->getDdnsSendUpdates().get());
921 return (subnet_->getDdnsOverrideNoUpdate().get());
929 return (subnet_->getDdnsOverrideClientUpdate().get());
938 return (subnet_->getDdnsReplaceClientNameMode().get());
947 return (subnet_->getDdnsGeneratedPrefix().get());
956 return (subnet_->getDdnsQualifyingSuffix().get());
965 return (subnet_->getHostnameCharSet().get());
974 return (subnet_->getHostnameCharReplacement().get());
981 std::string char_set = getHostnameCharSet();
982 if (!char_set.empty()) {
985 getHostnameCharReplacement()));
986 }
catch (
const std::exception& ex) {
988 "' is not a valid regular expression");
1002 return (subnet_->getDdnsUpdateOnRenew().get());
1011 return (subnet_->getDdnsUseConflictResolution().get());
const isc::log::MessageID DHCPSRV_CFGMGR_IP_RESERVATIONS_UNIQUE_DUPLICATES_POSSIBLE
#define LOG_WARN(LOGGER, MESSAGE)
Macro to conveniently test warn output and log it.
Represents configuration of the RSOO options for the DHCP server.
D2ClientConfigPtr getD2ClientConfig()
Returns pointer to the D2 client configuration.
void unspecified(bool unspecified)
Modifies the flag that indicates whether the value is specified or unspecified.
void internalize(isc::data::ConstElementPtr list)
Internalize a list Element.
uint32_t getSequence() const
Returns configuration sequence number.
util::Optional< std::string > getDataDir() const
returns path do the data directory
SrvConfig()
Default constructor.
bool getOverrideClientUpdate() const
Returns whether or not Kea should perform updates, even if client requested delegation.
D2ClientConfig::ReplaceClientNameMode getReplaceClientNameMode() const
Returns how Kea should handle the domain-name supplied by the client.
#define LOG_INFO(LOGGER, MESSAGE)
Macro to conveniently test info output and log it.
Utility class to represent host reservation configurations internally as a map keyed by subnet IDs...
Holds subnets configured for the DHCPv6 server.
std::string getQualifyingSuffix() const
Returns the suffix Kea should use when to qualify partial domain-names.
void setMaxSampleCountDefault(uint32_t max_samples)
Set default count limit.
std::vector< SimpleDefault > SimpleDefaults
This specifies all default values in a given scope (e.g. a subnet).
static void moveDdnsParams(isc::data::ElementPtr srv_elem)
Moves deprecated parameters from dhcp-ddns element to global element.
Represents configuration of IPv4 shared networks.
static CfgMgr & instance()
returns a single instance of Configuration Manager
Base class for all configurations.
void removeStatistics()
Removes statistics.
const isc::data::ConstElementPtr getDHCPMultiThreading() const
Returns DHCP multi threading information.
boost::shared_ptr< Subnet4 > Subnet4Ptr
A pointer to a Subnet4 object.
boost::shared_ptr< Element > ElementPtr
std::string getHostnameCharSet() const
Returns the regular expression describing invalid characters for client hostnames.
void setMaxSampleCountAll(uint32_t max_samples)
Set count limit for all collected statistics.
CfgSubnets6Ptr getCfgSubnets6()
Returns pointer to non-const object holding subnets configuration for DHCPv6.
Holds configuration parameters pertaining to lease expiration and lease affinity. ...
bool isNull(ConstElementPtr p)
Checks whether the given ElementPtr is a NULL pointer.
void updateStatistics()
Updates statistics.
const isc::data::ConstElementPtr getDHCPQueueControl() const
Returns DHCP queue control information.
static ElementPtr createMap(const Position &pos=ZERO_POSITION())
Creates an empty MapElement type ElementPtr.
void setIPReservationsUnique(const bool unique)
Configures the server to allow or disallow specifying multiple hosts with the same IP address/subnet...
Maintains a list of ClientClassDef's.
static ElementPtr createList(const Position &pos=ZERO_POSITION())
Creates an empty ListElement type ElementPtr.
isc::data::ConstElementPtr getConfiguredGlobal(std::string name) const
Returns pointer to a given configured global parameter.
static StatsMgr & instance()
Statistics Manager accessor method.
Statistics Manager class.
process::ConstConfigControlInfoPtr getConfigControlInfo() const
Fetches a read-only copy of the configuration control information.
boost::shared_ptr< DdnsParams > DdnsParamsPtr
Defines a pointer for DdnsParams instances.
void clear()
Removes all configured hooks libraries.
void setMaxSampleAgeAll(const StatsDuration &duration)
Set duration limit for all collected statistics.
CfgOptionDefPtr getCfgOptionDef()
Return pointer to non-const object representing user-defined option definitions.
void configureLowerLevelLibraries() const
Convenience method to propagate configuration parameters through inversion of control.
std::string getConfigSummary(const uint32_t selection) const
Returns summary of the configuration in the textual format.
void setEchoClientId(const bool echo)
Sets whether server should send back client-id in DHCPv4.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
bool getUseConflictResolution() const
Returns whether or not keah-dhcp-ddns should use conflict resolution.
Parameters for various consistency checks.
CfgSharedNetworks6Ptr getCfgSharedNetworks6() const
Returns pointer to non-const object holding configuration of shared networks in DHCPv6.
Represents option data configuration for the DHCP server.
boost::multi_index_container< Subnet4Ptr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetSubnetIdIndexTag >, boost::multi_index::const_mem_fun< Subnet, SubnetID, &Subnet::getID > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetPrefixIndexTag >, boost::multi_index::const_mem_fun< Subnet, std::string, &Subnet::toText > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetServerIdIndexTag >, boost::multi_index::const_mem_fun< Network4, asiolink::IOAddress, &Network4::getServerId > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetModificationTimeIndexTag >, boost::multi_index::const_mem_fun< data::BaseStampedElement, boost::posix_time::ptime, &data::BaseStampedElement::getModificationTime > > >> Subnet4Collection
A collection of Subnet4 objects.
ElementPtr copy(ConstElementPtr from, int level)
Copy the data up to a nesting level.
virtual isc::data::ElementPtr toElement() const
Unparse.
bool getEnableUpdates() const
Returns whether or not DHCP DDNS updating is enabled.
void setDeclinePeriod(const uint32_t decline_timer)
Sets decline probation-period.
void setReservationsLookupFirst(const bool first)
Sets whether the server does host reservations lookup before lease lookup.
Acts as a storage vault for D2 client configuration.
uint16_t getFamily() const
Returns address family.
Notes: IntElement type is changed to int64_t.
void addConfiguredGlobal(const std::string &name, isc::data::ConstElementPtr value)
Adds a parameter to the collection configured globals.
Class to store configured global parameters.
static void moveReservationMode(isc::data::ElementPtr config)
Moves deprecated reservation-mode parameter to new reservations flags.
boost::shared_ptr< const Element > ConstElementPtr
Represents option definitions used by the DHCP server.
Holds access parameters and the configuration of the lease and hosts database connection.
CfgDbAccessPtr getCfgDbAccess()
Returns pointer to the object holding configuration of the lease and host database connection paramet...
static data::ElementPtr toElement(data::ConstElementPtr map)
Copy an Element map.
void contextToElement(data::ElementPtr map) const
Merge unparse a user_context object.
Represents global configuration for host reservations.
Holds subnets configured for the DHCPv4 server.
boost::shared_ptr< SharedNetwork6 > SharedNetwork6Ptr
Pointer to SharedNetwork6 object.
Convenience container for conveying DDNS behavioral parameters It is intended to be created per Packe...
bool getOverrideNoUpdate() const
Returns whether or not Kea should perform updates, even if client requested no updates.
Implements a regular expression based string scrubber.
isc::util::str::StringSanitizerPtr getHostnameSanitizer() const
Returns a regular expression string sanitizer.
boost::shared_ptr< SharedNetwork4 > SharedNetwork4Ptr
Pointer to SharedNetwork4 object.
Represents the position of the data element within a configuration string.
boost::multi_index_container< Subnet6Ptr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetSubnetIdIndexTag >, boost::multi_index::const_mem_fun< Subnet, SubnetID, &Subnet::getID > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SubnetPrefixIndexTag >, boost::multi_index::const_mem_fun< Subnet, std::string, &Subnet::toText > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SubnetModificationTimeIndexTag >, boost::multi_index::const_mem_fun< data::BaseStampedElement, boost::posix_time::ptime, &data::BaseStampedElement::getModificationTime > > >> Subnet6Collection
A collection of Subnet6 objects.
utility class for unparsing
Represents configuration of IPv6 shared networks.
Specifies current DHCP configuration.
Defines the logger used by the top-level component of kea-lfc.
void add(std::string libname, isc::data::ConstElementPtr parameters)
Adds additional hooks libraries.
isc::log::Logger logger("asiodns")
Use the ASIO logger.
bool equals(const SrvConfig &other) const
Compares two objects for equality.
virtual void merge(ConfigBase &other)
Merges the configuration specified as a parameter into this configuration.
void merge(ElementPtr element, ConstElementPtr other)
Merges the data from other into element.
const isc::log::MessageID DHCPSRV_CFGMGR_DDNS_PARAMETER_MOVED
const isc::log::MessageID DHCPSRV_CFGMGR_DDNS_PARAMETER_IGNORED
ReplaceClientNameMode
Defines the client name replacement modes.
static const uint32_t CFGSEL_SUBNET4
Number of IPv4 subnets.
static ElementPtr create(const Position &pos=ZERO_POSITION())
const isc::hooks::HookLibsCollection & get() const
Provides access to the configured hooks libraries.
void setClientClassDictionary(const ClientClassDictionaryPtr &dictionary)
Sets the client class dictionary.
void setServerTag(const util::Optional< std::string > &server_tag)
Sets the server's logical name.
A generic exception that is thrown if a function is called in a prohibited way.
bool sequenceEquals(const SrvConfig &other)
Compares configuration sequence with other sequence.
void extractConfiguredGlobals(isc::data::ConstElementPtr config)
Saves scalar elements from the global scope of a configuration.
The Element class represents a piece of data, used by the command channel and configuration parts...
Represents the host reservations specified in the configuration file.
static const uint32_t CFGSEL_DDNS
DDNS enabled/disabled.
std::string getHostnameCharReplacement() const
Returns the string to replace invalid characters when scrubbing hostnames.
DdnsParamsPtr getDdnsParams(const Subnet4Ptr &subnet) const
Fetches the DDNS parameters for a given DHCPv4 subnet.
ClientClassDictionaryPtr getClientClassDictionary()
Returns pointer to the dictionary of global client class definitions.
void setMaxSampleAgeDefault(const StatsDuration &duration)
Set default duration limit.
bool getUpdateOnRenew() const
Returns whether or not DNS should be updated when leases renew.
static bool haveInstance()
Indicates if the lease manager has been instantiated.
CfgHostsPtr getCfgHosts()
Returns pointer to the non-const objects representing host reservations for different IPv4 and IPv6 s...
void sanityChecksLifetime(const std::string &name) const
Conducts sanity checks on global lifetime parameters.
CfgSubnets4Ptr getCfgSubnets4()
Returns pointer to non-const object holding subnets configuration for DHCPv4.
isc::data::ConstElementPtr get(SubnetID id) const
Return the host reservations for a subnet ID.
isc::log::Logger dhcpsrv_logger("dhcpsrv")
DHCP server library Logger.
boost::shared_ptr< Subnet6 > Subnet6Ptr
A pointer to a Subnet6 object.
boost::shared_ptr< StringSanitizer > StringSanitizerPtr
Type representing the pointer to the StringSanitizer.
void copy(SrvConfig &new_config) const
Copies the current configuration to a new configuration.
CfgOptionPtr getCfgOption()
Returns pointer to the non-const object holding options.
static const uint32_t CFGSEL_SUBNET6
Number of IPv6 subnets.
CfgSharedNetworks4Ptr getCfgSharedNetworks4() const
Returns pointer to non-const object holding configuration of shared networks in DHCPv4;.
void applyDefaultsConfiguredGlobals(const isc::data::SimpleDefaults &defaults)
Applies defaults to global parameters.
const process::LoggingInfoStorage & getLoggingInfo() const
Returns logging specific configuration.
virtual isc::data::ElementPtr toElement() const
Unparse.
std::string getGeneratedPrefix() const
Returns the Prefix Kea should use when generating domain-names.
void setDhcp4o6Port(uint16_t port)
Sets DHCP4o6 IPC port.
static bool lenient_parsing_
Governs whether options should be parsed less strictly.
Holds manual configuration of the server identifier (DUID).
void setD2ClientConfig(const D2ClientConfigPtr &d2_client_config)
Sets the D2 client configuration.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
CfgGlobalsPtr getConfiguredGlobals()
Returns non-const pointer to configured global parameters.
virtual isc::data::ElementPtr toElement() const
Unparse a configuration object.
boost::shared_ptr< const ConfigControlInfo > ConstConfigControlInfoPtr
Defines a pointer to a const ConfigControlInfo.