51#include <boost/algorithm/string.hpp>
52#include <boost/lexical_cast.hpp>
53#include <boost/scoped_ptr.hpp>
54#include <boost/shared_ptr.hpp>
59#include <netinet/in.h>
80void dirExists(
const string& dir_path) {
82 if (stat(dir_path.c_str(), &statbuf) < 0) {
84 <<
"': " << strerror(errno));
86 if ((statbuf.st_mode & S_IFMT) != S_IFDIR) {
111 for (
auto const& source_elem : value->listValue()) {
112 std::string option_str = source_elem->stringValue();
116 code = boost::lexical_cast<int64_t>(option_str);
120 << option_str <<
"', the option code must be a"
121 " non-negative value");
123 }
else if (code > std::numeric_limits<uint16_t>::max()) {
125 << option_str <<
"', the option code must not be"
126 " greater than '" << std::numeric_limits<uint16_t>::max()
130 }
catch (
const boost::bad_lexical_cast &) {
138 code = def->getCode();
141 " specified option name '" << option_str <<
"'"
142 " while parsing the list of enabled"
143 " relay-supplied-options");
146 cfg->getCfgRSOO()->enable(code);
148 }
catch (
const std::exception& ex) {
184 if (global->contains(
"data-directory")) {
190 uint32_t probation_period =
191 getUint32(global,
"decline-probation-period");
192 cfg->setDeclinePeriod(probation_period);
195 uint16_t dhcp4o6_port =
getUint16(global,
"dhcp4o6-port");
196 cfg->setDhcp4o6Port(dhcp4o6_port);
201 cfg->setContext(user_context);
205 std::string server_tag =
getString(global,
"server-tag");
206 cfg->setServerTag(server_tag);
222 bool ip_reservations_unique =
getBoolean(global,
"ip-reservations-unique");
223 cfg->setIPReservationsUnique(ip_reservations_unique);
235 if (!dest || !from) {
247 for (
auto const& net : *networks) {
258 for (
auto const& subnet : *subnets) {
276 cfg->sanityChecksLifetime(
"preferred-lifetime");
277 cfg->sanityChecksLifetime(
"valid-lifetime");
282 sharedNetworksSanityChecks(*networks, global->get(
"shared-networks"));
304 std::set<string> names;
307 for (
auto const& net : networks) {
312 string iface = net->getIface();
317 bool rapid_commit =
false;
321 if (subnets->size()) {
323 rapid_commit = (*subnets->begin())->getRapidCommit();
327 for (
auto const& subnet : *subnets) {
330 if (rapid_commit != subnet->getRapidCommit()) {
332 "must have the same rapid-commit value. Subnet "
334 <<
" has specified rapid-commit "
335 << (subnet->getRapidCommit() ?
"true" :
"false")
336 <<
", but earlier subnet in the same shared-network"
337 <<
" or the shared-network itself used rapid-commit "
338 << (rapid_commit ?
"true" :
"false"));
342 iface = subnet->getIface();
346 if (subnet->getIface().empty()) {
350 if (subnet->getIface() != iface) {
352 <<
" has specified interface " << subnet->getIface()
353 <<
", but earlier subnet in the same shared-network"
354 <<
" or the shared-network itself used " << iface);
359 txt += subnet->toText() +
" ";
364 if (net->getName().empty()) {
366 << txt <<
" is missing mandatory 'name' parameter");
370 if (names.find(net->getName()) != names.end()) {
372 "name " << net->getName() <<
" defined twice.");
374 names.insert(net->getName());
404 bool sock_changed = (sock_cfg && current_sock_cfg &&
405 !sock_cfg->equals(*current_sock_cfg));
412 if (!sock_cfg || !current_sock_cfg || sock_changed) {
449 string parameter_name;
459 mutable_cfg = boost::const_pointer_cast<Element>(config_set);
465 srv_config->moveDdnsParams(mutable_cfg);
484 Dhcp6ConfigParser global_parser;
487 global_parser.parseEarly(srv_config, mutable_cfg);
491 if (data_directory) {
492 parameter_name =
"data-directory";
493 dirExists(data_directory->stringValue());
499 parameter_name =
"option-def";
502 parser.
parse(cfg_option_def, option_defs);
507 parameter_name =
"option-data";
510 parser.
parse(cfg_option, option_datas);
515 parameter_name =
"mac-sources";
518 parser.
parse(mac_source, mac_sources);
522 if (control_socket) {
523 parameter_name =
"control-socket";
525 parser.
parse(*srv_config, control_socket);
529 if (multi_threading) {
530 parameter_name =
"multi-threading";
532 parser.
parse(*srv_config, multi_threading);
535 bool multi_threading_enabled =
true;
536 uint32_t thread_count = 0;
537 uint32_t queue_size = 0;
539 multi_threading_enabled, thread_count, queue_size);
542 ConstElementPtr queue_control = mutable_cfg->get(
"dhcp-queue-control");
544 parameter_name =
"dhcp-queue-control";
546 srv_config->setDHCPQueueControl(parser.
parse(queue_control, multi_threading_enabled));
550 ConstElementPtr reservations_lookup_first = mutable_cfg->get(
"reservations-lookup-first");
551 if (reservations_lookup_first) {
552 parameter_name =
"reservations-lookup-first";
553 if (multi_threading_enabled) {
556 srv_config->setReservationsLookupFirst(reservations_lookup_first->boolValue());
560 mutable_cfg->get(
"host-reservation-identifiers");
561 if (hr_identifiers) {
562 parameter_name =
"host-reservation-identifiers";
564 parser.
parse(hr_identifiers);
569 parameter_name =
"server-id";
571 const CfgDUIDPtr& cfg = srv_config->getCfgDUID();
572 parser.
parse(cfg, server_id);
577 parameter_name =
"sanity-checks";
579 parser.
parse(*srv_config, sanity_checks);
583 mutable_cfg->get(
"expired-leases-processing");
584 if (expiration_cfg) {
585 parameter_name =
"expired-leases-processing";
594 if (hooks_libraries) {
595 parameter_name =
"hooks-libraries";
597 HooksConfig& libraries = srv_config->getHooksConfig();
598 hooks_parser.
parse(libraries, hooks_libraries);
600 multi_threading_enabled);
609 parameter_name =
"dhcp-ddns";
613 d2_client_cfg = parser.
parse(dhcp_ddns);
617 if (client_classes) {
618 parameter_name =
"client-classes";
621 parser.
parse(client_classes, AF_INET6);
622 srv_config->setClientClassDictionary(dictionary);
627 if (lease_database) {
628 parameter_name =
"lease-database";
630 std::string access_string;
631 parser.
parse(access_string, lease_database);
633 cfg_db_access->setLeaseDbAccessString(access_string);
637 if (hosts_database) {
638 parameter_name =
"hosts-database";
640 std::string access_string;
641 parser.
parse(access_string, hosts_database);
643 cfg_db_access->setHostDbAccessString(access_string);
647 if (hosts_databases) {
648 parameter_name =
"hosts-databases";
650 for (
auto const& it : hosts_databases->listValue()) {
652 std::string access_string;
653 parser.
parse(access_string, it);
654 cfg_db_access->setHostDbAccessString(access_string);
660 if (shared_networks) {
661 parameter_name =
"shared-networks";
669 parser.
parse(cfg, shared_networks);
673 global_parser.copySubnets6(srv_config->getCfgSubnets6(), cfg);
678 parameter_name =
"subnet6";
681 subnets_parser.
parse(srv_config, subnet6);
686 parameter_name =
"reservations";
689 parser.
parse(SUBNET_ID_GLOBAL, reservations, hosts);
690 for (
auto const& h : hosts) {
691 srv_config->getCfgHosts()->add(h);
696 if (config_control) {
697 parameter_name =
"config-control";
703 ConstElementPtr rsoo_list = mutable_cfg->get(
"relay-supplied-options");
705 parameter_name =
"relay-supplied-options";
706 RSOOListConfigParser parser;
707 parser.parse(srv_config, rsoo_list);
717 const std::map<std::string, ConstElementPtr>& values_map =
718 mutable_cfg->mapValue();
720 for (
auto const& config_pair : values_map) {
721 parameter_name = config_pair.first;
724 if ((config_pair.first ==
"data-directory") ||
725 (config_pair.first ==
"option-def") ||
726 (config_pair.first ==
"option-data") ||
727 (config_pair.first ==
"mac-sources") ||
728 (config_pair.first ==
"control-socket") ||
729 (config_pair.first ==
"multi-threading") ||
730 (config_pair.first ==
"dhcp-queue-control") ||
731 (config_pair.first ==
"host-reservation-identifiers") ||
732 (config_pair.first ==
"server-id") ||
733 (config_pair.first ==
"interfaces-config") ||
734 (config_pair.first ==
"sanity-checks") ||
735 (config_pair.first ==
"expired-leases-processing") ||
736 (config_pair.first ==
"hooks-libraries") ||
737 (config_pair.first ==
"dhcp-ddns") ||
738 (config_pair.first ==
"client-classes") ||
739 (config_pair.first ==
"lease-database") ||
740 (config_pair.first ==
"hosts-database") ||
741 (config_pair.first ==
"hosts-databases") ||
742 (config_pair.first ==
"subnet6") ||
743 (config_pair.first ==
"shared-networks") ||
744 (config_pair.first ==
"reservations") ||
745 (config_pair.first ==
"config-control") ||
746 (config_pair.first ==
"relay-supplied-options") ||
747 (config_pair.first ==
"loggers") ||
748 (config_pair.first ==
"compatibility")) {
762 if ( (config_pair.first ==
"renew-timer") ||
763 (config_pair.first ==
"rebind-timer") ||
764 (config_pair.first ==
"preferred-lifetime") ||
765 (config_pair.first ==
"min-preferred-lifetime") ||
766 (config_pair.first ==
"max-preferred-lifetime") ||
767 (config_pair.first ==
"valid-lifetime") ||
768 (config_pair.first ==
"min-valid-lifetime") ||
769 (config_pair.first ==
"max-valid-lifetime") ||
770 (config_pair.first ==
"decline-probation-period") ||
771 (config_pair.first ==
"dhcp4o6-port") ||
772 (config_pair.first ==
"server-tag") ||
773 (config_pair.first ==
"reservation-mode") ||
774 (config_pair.first ==
"reservations-global") ||
775 (config_pair.first ==
"reservations-in-subnet") ||
776 (config_pair.first ==
"reservations-out-of-pool") ||
777 (config_pair.first ==
"calculate-tee-times") ||
778 (config_pair.first ==
"t1-percent") ||
779 (config_pair.first ==
"t2-percent") ||
780 (config_pair.first ==
"cache-threshold") ||
781 (config_pair.first ==
"cache-max-age") ||
782 (config_pair.first ==
"hostname-char-set") ||
783 (config_pair.first ==
"hostname-char-replacement") ||
784 (config_pair.first ==
"ddns-send-updates") ||
785 (config_pair.first ==
"ddns-override-no-update") ||
786 (config_pair.first ==
"ddns-override-client-update") ||
787 (config_pair.first ==
"ddns-replace-client-name") ||
788 (config_pair.first ==
"ddns-generated-prefix") ||
789 (config_pair.first ==
"ddns-qualifying-suffix") ||
790 (config_pair.first ==
"ddns-update-on-renew") ||
791 (config_pair.first ==
"ddns-use-conflict-resolution") ||
792 (config_pair.first ==
"ddns-conflict-resolution-mode") ||
793 (config_pair.first ==
"ddns-ttl-percent") ||
794 (config_pair.first ==
"store-extended-info") ||
795 (config_pair.first ==
"statistic-default-sample-count") ||
796 (config_pair.first ==
"statistic-default-sample-age") ||
797 (config_pair.first ==
"early-global-reservations-lookup") ||
798 (config_pair.first ==
"ip-reservations-unique") ||
799 (config_pair.first ==
"reservations-lookup-first") ||
800 (config_pair.first ==
"parked-packet-limit") ||
801 (config_pair.first ==
"allocator") ||
802 (config_pair.first ==
"pd-allocator") ) {
809 if (config_pair.first ==
"user-context") {
815 "unsupported global configuration parameter: " << config_pair.first
816 <<
" (" << config_pair.second->getPosition() <<
")");
820 parameter_name =
"<post parsing>";
823 global_parser.parse(srv_config, mutable_cfg);
828 global_parser.sanityChecks(srv_config, mutable_cfg);
831 if (!d2_client_cfg) {
834 d2_client_cfg->validateContents();
835 srv_config->setD2ClientConfig(d2_client_cfg);
838 .arg(parameter_name).arg(ex.
what());
849 "Control-socket, hook-libraries, and D2 configuration "
850 "were sanity checked, but not applied.");
858 bool check_only,
bool extra_checks) {
861 "Can't parse NULL config");
884 string params =
"universe=6 persist=false";
885 if (cfg_db->getExtendedInfoTablesEnabled()) {
886 params +=
" extended-info-tables=true";
888 cfg_db->setAppendedParameters(params);
889 cfg_db->createManagers();
890 }
catch (
const std::exception& ex) {
896 std::ostringstream err;
906 }
catch (
const std::exception& ex) {
907 err <<
"Error setting packet queue controls after server reconfiguration: "
931 string parameter_name;
940 mutable_cfg = boost::const_pointer_cast<Element>(config_set);
944 parameter_name =
"interfaces-config";
948 parser.
parse(cfg_iface, ifaces_config);
952 .arg(parameter_name).arg(ex.
what());
959 " processing error");
1019 bool multi_threading_enabled =
true;
1020 uint32_t thread_count = 0;
1021 uint32_t queue_size = 0;
1023 multi_threading_enabled, thread_count, queue_size);
1045 std::ostringstream err;
1046 err <<
"during update from config backend database: " << ex.
what();
1052 std::ostringstream err;
1053 err <<
"during update from config backend database: "
1054 <<
"undefined configuration parsing error";
1069 if (notify_libraries) {
1070 return (notify_libraries);
1077 }
catch (
const std::exception& ex) {
1078 std::ostringstream err;
1079 err <<
"Error initializing hooks: "
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
This is a base class for exceptions thrown from the DNS library module.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
void clearIOServices()
Clear the list of IOService objects.
static IOServiceMgr & instance()
Access the IOServiceMgr singleton instance.
void pollIOServices()
Poll IOService objects.
static std::string getHash(const isc::data::ConstElementPtr &config)
returns a hash of a given Element structure
void closeCommandSocket()
Shuts down any open control sockets.
static CommandMgr & instance()
CommandMgr is a singleton class.
void openCommandSocket(const isc::data::ConstElementPtr &socket_info)
Opens control socket with parameters specified in socket_info.
static ElementPtr create(const Position &pos=ZERO_POSITION())
static ElementPtr createMap(const Position &pos=ZERO_POSITION())
Creates an empty MapElement type ElementPtr.
static std::string getString(isc::data::ConstElementPtr scope, const std::string &name)
Returns a string parameter from a scope.
uint32_t getUint32(isc::data::ConstElementPtr scope, const std::string &name)
Returns a value converted to uint32_t.
static bool getBoolean(isc::data::ConstElementPtr scope, const std::string &name)
Returns a boolean parameter from a scope.
uint16_t getUint16(isc::data::ConstElementPtr scope, const std::string &name)
Returns a value converted to uint16_t.
Parse Database Parameters.
void parse(std::string &access_string, isc::data::ConstElementPtr database_config)
Parse configuration value.
static void moveReservationMode(isc::data::ElementPtr config)
Moves deprecated reservation-mode parameter to new reservations flags.
Wrapper class that holds MAC/hardware address sources.
void setD2ClientConfig(D2ClientConfigPtr &new_config)
Updates the DHCP-DDNS client configuration to the given value.
static CfgMgr & instance()
returns a single instance of Configuration Manager
void setDataDir(const std::string &datadir, bool unspecified=true)
Sets new data directory.
SrvConfigPtr getStagingCfg()
Returns a pointer to the staging configuration.
SrvConfigPtr getCurrentCfg()
Returns a pointer to the current configuration.
static void extract(data::ConstElementPtr value, bool &enabled, uint32_t &thread_count, uint32_t &queue_size)
Extract multi-threading parameters from a given configuration.
Parser for a list of client class definitions.
ClientClassDictionaryPtr parse(isc::data::ConstElementPtr class_def_list, uint16_t family, bool check_dependencies=true)
Parse configuration entries.
void parse(isc::data::ConstElementPtr cfg, isc::dhcp::SrvConfig &srv_cfg)
Parse compatibility flags.
Parser for the control-socket structure.
void parse(SrvConfig &srv_cfg, isc::data::ConstElementPtr value)
"Parses" control-socket structure
static isc::data::ConstElementPtr finishConfigHookLibraries(isc::data::ConstElementPtr config)
Configuration checker for hook libraries.
Parser for D2ClientConfig.
D2ClientConfigPtr parse(isc::data::ConstElementPtr d2_client_cfg)
Parses a given dhcp-ddns element into D2ClientConfig.
static size_t setAllDefaults(isc::data::ConstElementPtr d2_config)
Sets all defaults for D2 client configuration.
Acts as a storage vault for D2 client configuration.
Parser for the configuration of DHCP packet queue controls.
data::ElementPtr parse(const isc::data::ConstElementPtr &control_elem, bool multi_threading_enabled)
Parses content of the "dhcp-queue-control".
Parser for server DUID configuration.
void parse(const CfgDUIDPtr &cfg, isc::data::ConstElementPtr duid_configuration)
Parses DUID configuration.
To be removed. Please use ConfigError instead.
CBControlDHCPv6Ptr getCBControl() const
Returns an object which controls access to the configuration backends.
void discardPackets()
Discards parked packets Clears the packet parking lots of all packets.
Parser for the configuration parameters pertaining to the processing of expired leases.
void parse(isc::data::ConstElementPtr expiration_config, isc::dhcp::CfgExpirationPtr expiration)
Parses parameters in the JSON map, pertaining to the processing of the expired leases.
static void printRegistered()
Prints out all registered backends.
Parser for a list of host identifiers for DHCPv6.
void parse(isc::data::ConstElementPtr ids_list)
Parses a list of host identifiers.
Parser for a list of host reservations for a subnet.
void parse(const SubnetID &subnet_id, isc::data::ConstElementPtr hr_list, HostCollection &hosts_list)
Parses a list of host reservation entries for a subnet.
static IfaceMgr & instance()
IfaceMgr is a singleton class.
void closeSockets()
Closes all open sockets.
Parser for the configuration of interfaces.
void parse(const CfgIfacePtr &config, const isc::data::ConstElementPtr &values)
Parses content of the "interfaces-config".
static void setRuntimeOptionDefs(const OptionDefSpaceContainer &defs)
Copies option definitions created at runtime.
static OptionDefinitionPtr getOptionDef(const std::string &space, const uint16_t code)
Return the first option definition matching a particular option code.
static void revertRuntimeOptionDefs()
Reverts uncommitted changes to runtime option definitions.
parser for MAC/hardware acquisition sources
void parse(CfgMACSource &mac_sources, isc::data::ConstElementPtr value)
parses parameters value
Simple parser for multi-threading structure.
void parse(SrvConfig &srv_cfg, const isc::data::ConstElementPtr &value)
parses JSON structure.
Parser for option data values within a subnet.
void parse(const CfgOptionPtr &cfg, isc::data::ConstElementPtr option_data_list, bool encapsulate=true)
Parses a list of options, instantiates them and stores in cfg.
Parser for a list of option definitions.
void parse(CfgOptionDefPtr cfg, isc::data::ConstElementPtr def_list)
Parses a list of option definitions, create them and store in cfg.
Class of option definition space container.
Simple parser for sanity-checks structure.
void parse(SrvConfig &srv_cfg, const isc::data::ConstElementPtr &value)
parses JSON structure
Parser for a list of shared networks.
void parse(CfgSharedNetworksTypePtr &cfg, const data::ConstElementPtr &shared_networks_list_data)
Parses a list of shared networks.
static size_t deriveParameters(isc::data::ElementPtr global)
Derives (inherits) all parameters from global to more specific scopes.
static size_t setAllDefaults(isc::data::ElementPtr global)
Sets all defaults for DHCPv6 configuration.
static const uint32_t CFGSEL_ALL6
IPv6 related config.
static void resetSubnetID()
Resets subnet-id counter to its initial value (1).
this class parses a list of DHCP6 subnets
size_t parse(SrvConfigPtr cfg, data::ConstElementPtr subnets_list, bool encapsulate_options=true)
parses contents of the list
static const TimerMgrPtr & instance()
Returns pointer to the sole instance of the TimerMgr.
Wrapper class that holds hooks libraries configuration.
void verifyLibraries(const isc::data::Element::Position &position, bool multi_threading_enabled) const
Verifies that libraries stored in libraries_ are valid.
void loadLibraries(bool multi_threading_enabled) const
Commits hooks libraries configuration.
Parser for hooks library list.
void parse(HooksConfig &libraries, isc::data::ConstElementPtr value)
Parses parameters value.
static bool unloadLibraries()
Unload libraries.
static void prepareUnloadLibraries()
Prepare the unloading of libraries.
Implements parser for config control information, "config-control".
ConfigControlInfoPtr parse(const data::ConstElementPtr &config_control)
Parses a configuration control Element.
isc::data::ConstElementPtr redactConfig(isc::data::ConstElementPtr const &config)
Redact a configuration.
static MultiThreadingMgr & instance()
Returns a single instance of Multi Threading Manager.
void apply(bool enabled, uint32_t thread_count, uint32_t queue_size)
Apply the multi-threading related settings.
Parsers for client class definitions.
This file contains several functions and constants that are used for handling commands and responses ...
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
Logging initialization functions.
#define LOG_ERROR(LOGGER, MESSAGE)
Macro to conveniently test error output and log it.
#define LOG_INFO(LOGGER, MESSAGE)
Macro to conveniently test info output and log it.
#define LOG_WARN(LOGGER, MESSAGE)
Macro to conveniently test warn output and log it.
#define LOG_DEBUG(LOGGER, LEVEL, MESSAGE)
Macro to conveniently test debug output and log it.
const int CONTROL_RESULT_ERROR
Status code indicating a general failure.
ConstElementPtr createAnswer()
Creates a standard config/command level success answer message (i.e.
ConstElementPtr parseAnswer(int &rcode, const ConstElementPtr &msg)
const int CONTROL_RESULT_SUCCESS
Status code indicating a successful operation.
boost::shared_ptr< const Element > ConstElementPtr
boost::shared_ptr< Element > ElementPtr
void configureCommandChannel()
Initialize the command channel based on the staging configuration.
boost::shared_ptr< CfgDUID > CfgDUIDPtr
Pointer to the Non-const object.
const isc::log::MessageID DHCP6_PARSER_FAIL
const isc::log::MessageID DHCP6_PARSER_EXCEPTION
boost::shared_ptr< D2ClientConfig > D2ClientConfigPtr
Defines a pointer for D2ClientConfig instances.
boost::shared_ptr< CfgOption > CfgOptionPtr
Non-const pointer.
boost::multi_index_container< SharedNetwork6Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SharedNetworkRandomAccessIndexTag > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< SharedNetworkIdIndexTag >, boost::multi_index::const_mem_fun< data::BaseStampedElement, uint64_t, &data::BaseStampedElement::getId > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SharedNetworkNameIndexTag >, boost::multi_index::const_mem_fun< SharedNetwork6, std::string, &SharedNetwork6::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SharedNetworkModificationTimeIndexTag >, boost::multi_index::const_mem_fun< data::BaseStampedElement, boost::posix_time::ptime, &data::BaseStampedElement::getModificationTime > > > > SharedNetwork6Collection
Multi index container holding shared networks.
isc::data::ConstElementPtr configureDhcp6Server(Dhcpv6Srv &server, isc::data::ConstElementPtr config_set, bool check_only, bool extra_checks)
Configure DHCPv6 server (Dhcpv6Srv) with a set of configuration values.
boost::shared_ptr< CfgOptionDef > CfgOptionDefPtr
Non-const pointer.
boost::shared_ptr< CfgDbAccess > CfgDbAccessPtr
A pointer to the CfgDbAccess.
isc::data::ConstElementPtr processDhcp6Config(isc::data::ConstElementPtr config_set)
Process a DHCPv6 confguration and return an answer stating if the configuration is valid,...
const int DBG_DHCP6_COMMAND
Debug level used to log receiving commands.
const isc::log::MessageID DHCP6_CONFIG_COMPLETE
boost::shared_ptr< CfgIface > CfgIfacePtr
A pointer to the CfgIface .
boost::shared_ptr< SrvConfig > SrvConfigPtr
Non-const pointer to the SrvConfig.
boost::shared_ptr< CfgSubnets6 > CfgSubnets6Ptr
Non-const pointer.
std::vector< HostPtr > HostCollection
Collection of the Host objects.
const isc::log::MessageID DHCP6_RESERVATIONS_LOOKUP_FIRST_ENABLED
boost::shared_ptr< OptionDefinition > OptionDefinitionPtr
Pointer to option definition object.
boost::shared_ptr< ClientClassDictionary > ClientClassDictionaryPtr
Defines a pointer to a ClientClassDictionary.
boost::shared_ptr< CfgSharedNetworks6 > CfgSharedNetworks6Ptr
Pointer to the configuration of IPv6 shared networks.
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 > > > > Subnet6SimpleCollection
A simple collection of Subnet6 objects.
const isc::log::MessageID DHCP6_PARSER_COMMIT_EXCEPTION
const isc::log::MessageID DHCP6_CONFIG_START
const isc::log::MessageID DHCP6_PARSER_COMMIT_FAIL
isc::log::Logger dhcp6_logger(DHCP6_APP_LOGGER_NAME)
Base logger for DHCPv6 server.
const isc::log::MessageID DHCP6_CONFIG_PACKET_QUEUE
boost::shared_ptr< ConfigControlInfo > ConfigControlInfoPtr
Defines a pointer to a ConfigControlInfo.
Defines the logger used by the top-level component of kea-lfc.
#define DHCP6_OPTION_SPACE