51 #include <boost/algorithm/string.hpp>
52 #include <boost/foreach.hpp>
53 #include <boost/lexical_cast.hpp>
54 #include <boost/scoped_ptr.hpp>
55 #include <boost/shared_ptr.hpp>
60 #include <netinet/in.h>
81 void dirExists(
const string& dir_path) {
83 if (stat(dir_path.c_str(), &statbuf) < 0) {
85 <<
"': " << strerror(errno));
87 if ((statbuf.st_mode & S_IFMT) != S_IFDIR) {
113 std::string option_str = source_elem->stringValue();
117 code = boost::lexical_cast<int64_t>(option_str);
121 << option_str <<
"', the option code must be a"
122 " non-negative value");
124 }
else if (code > std::numeric_limits<uint16_t>::max()) {
126 << option_str <<
"', the option code must not be"
127 " greater than '" << std::numeric_limits<uint16_t>::max()
131 }
catch (
const boost::bad_lexical_cast &) {
139 code = def->getCode();
142 " specified option name '" << option_str <<
"'"
143 " while parsing the list of enabled"
144 " relay-supplied-options");
147 cfg->getCfgRSOO()->enable(code);
149 }
catch (
const std::exception& ex) {
185 if (global->contains(
"data-directory")) {
186 CfgMgr::instance().setDataDir(getString(global,
"data-directory"),
191 uint32_t probation_period =
192 getUint32(global,
"decline-probation-period");
193 cfg->setDeclinePeriod(probation_period);
196 uint16_t dhcp4o6_port = getUint16(global,
"dhcp4o6-port");
197 cfg->setDhcp4o6Port(dhcp4o6_port);
202 cfg->setContext(user_context);
206 std::string server_tag = getString(global,
"server-tag");
207 cfg->setServerTag(server_tag);
223 bool ip_reservations_unique = getBoolean(global,
"ip-reservations-unique");
224 cfg->setIPReservationsUnique(ip_reservations_unique);
236 if (!dest || !from) {
248 for (
auto net = networks->begin(); net != networks->end(); ++net) {
259 for (
auto subnet = subnets->begin(); subnet != subnets->end(); ++subnet) {
277 cfg->sanityChecksLifetime(
"preferred-lifetime");
278 cfg->sanityChecksLifetime(
"valid-lifetime");
283 sharedNetworksSanityChecks(*networks, global->get(
"shared-networks"));
305 std::set<string> names;
308 for (
auto net = networks.begin(); net != networks.end(); ++net) {
313 string iface = (*net)->getIface();
318 bool rapid_commit =
false;
321 for (
auto subnet = subnets->begin(); subnet != subnets->end(); ++subnet) {
325 if (subnet == subnets->begin()) {
327 rapid_commit = (*subnet)->getRapidCommit();
331 if (rapid_commit != (*subnet)->getRapidCommit()) {
333 "must have the same rapid-commit value. Subnet "
334 << (*subnet)->toText()
335 <<
" has specified rapid-commit "
336 << ( (*subnet)->getRapidCommit() ?
"true" :
"false")
337 <<
", but earlier subnet in the same shared-network"
338 <<
" or the shared-network itself used rapid-commit "
339 << (rapid_commit ?
"true" :
"false"));
344 iface = (*subnet)->getIface();
348 if ((*subnet)->getIface().empty()) {
352 if ((*subnet)->getIface() != iface) {
354 <<
" has specified interface " << (*subnet)->getIface()
355 <<
", but earlier subnet in the same shared-network"
356 <<
" or the shared-network itself used " << iface);
361 txt += (*subnet)->toText() +
" ";
366 if ((*net)->getName().empty()) {
368 << txt <<
" is missing mandatory 'name' parameter");
372 if (names.find((*net)->getName()) != names.end()) {
374 "name " << (*net)->getName() <<
" defined twice.");
376 names.insert((*net)->getName());
397 CfgMgr::instance().getStagingCfg()->getControlSocketInfo();
401 CfgMgr::instance().getCurrentCfg()->getControlSocketInfo();
406 bool sock_changed = (sock_cfg && current_sock_cfg &&
407 !sock_cfg->equals(*current_sock_cfg));
414 if (!sock_cfg || !current_sock_cfg || sock_changed) {
432 Subnet::resetSubnetID();
435 LibDHCP::revertRuntimeOptionDefs();
441 HostDataSourceFactory::printRegistered();
447 string parameter_name;
452 srv_config = CfgMgr::instance().getStagingCfg();
457 mutable_cfg = boost::const_pointer_cast<Element>(config_set);
463 srv_config->moveDdnsParams(mutable_cfg);
467 BaseNetworkParser::moveReservationMode(mutable_cfg);
470 SimpleParser6::setAllDefaults(mutable_cfg);
473 SimpleParser6::deriveParameters(mutable_cfg);
482 Dhcp6ConfigParser global_parser;
485 global_parser.parseEarly(srv_config, mutable_cfg);
489 if (data_directory) {
490 parameter_name =
"data-directory";
491 dirExists(data_directory->stringValue());
497 parameter_name =
"option-def";
500 parser.
parse(cfg_option_def, option_defs);
505 parameter_name =
"option-data";
508 parser.
parse(cfg_option, option_datas);
513 parameter_name =
"mac-sources";
516 parser.
parse(mac_source, mac_sources);
520 if (control_socket) {
521 parameter_name =
"control-socket";
523 parser.
parse(*srv_config, control_socket);
527 if (multi_threading) {
528 parameter_name =
"multi-threading";
530 parser.
parse(*srv_config, multi_threading);
533 bool multi_threading_enabled =
true;
534 uint32_t thread_count = 0;
535 uint32_t queue_size = 0;
536 CfgMultiThreading::extract(CfgMgr::instance().getStagingCfg()->getDHCPMultiThreading(),
537 multi_threading_enabled, thread_count, queue_size);
540 ConstElementPtr queue_control = mutable_cfg->get(
"dhcp-queue-control");
542 parameter_name =
"dhcp-queue-control";
544 srv_config->setDHCPQueueControl(parser.
parse(queue_control, multi_threading_enabled));
548 ConstElementPtr reservations_lookup_first = mutable_cfg->get(
"reservations-lookup-first");
549 if (reservations_lookup_first) {
550 parameter_name =
"reservations-lookup-first";
551 if (multi_threading_enabled) {
554 srv_config->setReservationsLookupFirst(reservations_lookup_first->boolValue());
558 mutable_cfg->get(
"host-reservation-identifiers");
559 if (hr_identifiers) {
560 parameter_name =
"host-reservation-identifiers";
562 parser.
parse(hr_identifiers);
567 parameter_name =
"server-id";
569 const CfgDUIDPtr& cfg = srv_config->getCfgDUID();
570 parser.
parse(cfg, server_id);
575 parameter_name =
"interfaces-config";
578 parser.
parse(cfg_iface, ifaces_config);
583 parameter_name =
"sanity-checks";
585 parser.
parse(*srv_config, sanity_checks);
589 mutable_cfg->get(
"expired-leases-processing");
590 if (expiration_cfg) {
591 parameter_name =
"expired-leases-processing";
593 parser.
parse(expiration_cfg);
600 if (hooks_libraries) {
601 parameter_name =
"hooks-libraries";
603 HooksConfig& libraries = srv_config->getHooksConfig();
604 hooks_parser.
parse(libraries, hooks_libraries);
606 multi_threading_enabled);
615 parameter_name =
"dhcp-ddns";
617 D2ClientConfigParser::setAllDefaults(dhcp_ddns);
619 d2_client_cfg = parser.
parse(dhcp_ddns);
623 if (client_classes) {
624 parameter_name =
"client-classes";
627 parser.
parse(client_classes, AF_INET6);
628 srv_config->setClientClassDictionary(dictionary);
633 if (lease_database) {
634 parameter_name =
"lease-database";
636 std::string access_string;
637 parser.
parse(access_string, lease_database);
639 cfg_db_access->setLeaseDbAccessString(access_string);
643 if (hosts_database) {
644 parameter_name =
"hosts-database";
646 std::string access_string;
647 parser.
parse(access_string, hosts_database);
649 cfg_db_access->setHostDbAccessString(access_string);
653 if (hosts_databases) {
654 parameter_name =
"hosts-databases";
656 for (
auto it : hosts_databases->listValue()) {
658 std::string access_string;
659 parser.
parse(access_string, it);
660 cfg_db_access->setHostDbAccessString(access_string);
666 if (shared_networks) {
667 parameter_name =
"shared-networks";
675 parser.
parse(cfg, shared_networks);
679 global_parser.copySubnets6(srv_config->getCfgSubnets6(), cfg);
684 parameter_name =
"subnet6";
687 subnets_parser.
parse(srv_config, subnet6);
692 parameter_name =
"reservations";
695 parser.
parse(SUBNET_ID_GLOBAL, reservations, hosts);
696 for (
auto h = hosts.begin(); h != hosts.end(); ++h) {
697 srv_config->getCfgHosts()->add(*h);
702 if (config_control) {
703 parameter_name =
"config-control";
706 CfgMgr::instance().getStagingCfg()->setConfigControlInfo(config_ctl_info);
709 ConstElementPtr rsoo_list = mutable_cfg->get(
"relay-supplied-options");
711 parameter_name =
"relay-supplied-options";
712 RSOOListConfigParser parser;
713 parser.parse(srv_config, rsoo_list);
718 for (
auto kv : compatibility->mapValue()) {
719 if (!kv.second || (kv.second->getType() != Element::boolean)) {
721 "compatibility parameter values must be "
722 <<
"boolean (" << kv.first <<
" at "
723 << kv.second->getPosition() <<
")");
725 if (kv.first ==
"lenient-option-parsing") {
726 CfgMgr::instance().getStagingCfg()->setLenientOptionParsing(
727 kv.second->boolValue());
730 "unsupported compatibility parameter: "
731 << kv.first <<
" (" << kv.second->getPosition()
739 const std::map<std::string, ConstElementPtr>& values_map =
740 mutable_cfg->mapValue();
742 BOOST_FOREACH(config_pair, values_map) {
744 parameter_name = config_pair.first;
747 if ((config_pair.first ==
"data-directory") ||
748 (config_pair.first ==
"option-def") ||
749 (config_pair.first ==
"option-data") ||
750 (config_pair.first ==
"mac-sources") ||
751 (config_pair.first ==
"control-socket") ||
752 (config_pair.first ==
"multi-threading") ||
753 (config_pair.first ==
"dhcp-queue-control") ||
754 (config_pair.first ==
"host-reservation-identifiers") ||
755 (config_pair.first ==
"server-id") ||
756 (config_pair.first ==
"interfaces-config") ||
757 (config_pair.first ==
"sanity-checks") ||
758 (config_pair.first ==
"expired-leases-processing") ||
759 (config_pair.first ==
"hooks-libraries") ||
760 (config_pair.first ==
"dhcp-ddns") ||
761 (config_pair.first ==
"client-classes") ||
762 (config_pair.first ==
"lease-database") ||
763 (config_pair.first ==
"hosts-database") ||
764 (config_pair.first ==
"hosts-databases") ||
765 (config_pair.first ==
"subnet6") ||
766 (config_pair.first ==
"shared-networks") ||
767 (config_pair.first ==
"reservations") ||
768 (config_pair.first ==
"config-control") ||
769 (config_pair.first ==
"relay-supplied-options") ||
770 (config_pair.first ==
"loggers") ||
771 (config_pair.first ==
"compatibility")) {
785 if ( (config_pair.first ==
"renew-timer") ||
786 (config_pair.first ==
"rebind-timer") ||
787 (config_pair.first ==
"preferred-lifetime") ||
788 (config_pair.first ==
"min-preferred-lifetime") ||
789 (config_pair.first ==
"max-preferred-lifetime") ||
790 (config_pair.first ==
"valid-lifetime") ||
791 (config_pair.first ==
"min-valid-lifetime") ||
792 (config_pair.first ==
"max-valid-lifetime") ||
793 (config_pair.first ==
"decline-probation-period") ||
794 (config_pair.first ==
"dhcp4o6-port") ||
795 (config_pair.first ==
"server-tag") ||
796 (config_pair.first ==
"reservation-mode") ||
797 (config_pair.first ==
"reservations-global") ||
798 (config_pair.first ==
"reservations-in-subnet") ||
799 (config_pair.first ==
"reservations-out-of-pool") ||
800 (config_pair.first ==
"calculate-tee-times") ||
801 (config_pair.first ==
"t1-percent") ||
802 (config_pair.first ==
"t2-percent") ||
803 (config_pair.first ==
"cache-threshold") ||
804 (config_pair.first ==
"cache-max-age") ||
805 (config_pair.first ==
"hostname-char-set") ||
806 (config_pair.first ==
"hostname-char-replacement") ||
807 (config_pair.first ==
"ddns-send-updates") ||
808 (config_pair.first ==
"ddns-override-no-update") ||
809 (config_pair.first ==
"ddns-override-client-update") ||
810 (config_pair.first ==
"ddns-replace-client-name") ||
811 (config_pair.first ==
"ddns-generated-prefix") ||
812 (config_pair.first ==
"ddns-qualifying-suffix") ||
813 (config_pair.first ==
"ddns-update-on-renew") ||
814 (config_pair.first ==
"ddns-use-conflict-resolution") ||
815 (config_pair.first ==
"ddns-ttl-percent") ||
816 (config_pair.first ==
"store-extended-info") ||
817 (config_pair.first ==
"statistic-default-sample-count") ||
818 (config_pair.first ==
"statistic-default-sample-age") ||
819 (config_pair.first ==
"early-global-reservations-lookup") ||
820 (config_pair.first ==
"ip-reservations-unique") ||
821 (config_pair.first ==
"reservations-lookup-first") ||
822 (config_pair.first ==
"parked-packet-limit") ||
823 (config_pair.first ==
"allocator") ||
824 (config_pair.first ==
"pd-allocator") ) {
825 CfgMgr::instance().getStagingCfg()->addConfiguredGlobal(config_pair.first,
831 if (config_pair.first ==
"user-context") {
837 "unsupported global configuration parameter: " << config_pair.first
838 <<
" (" << config_pair.second->getPosition() <<
")");
842 parameter_name =
"<post parsing>";
845 global_parser.parse(srv_config, mutable_cfg);
850 global_parser.sanityChecks(srv_config, mutable_cfg);
853 if (!d2_client_cfg) {
856 d2_client_cfg->validateContents();
857 srv_config->setD2ClientConfig(d2_client_cfg);
860 .arg(parameter_name).arg(ex.
what());
871 "Control-socket, hook-libraries, and D2 configuration "
872 "were sanity checked, but not applied.");
880 bool check_only,
bool extra_checks) {
883 "Can't parse NULL config");
903 srv_config = CfgMgr::instance().getStagingCfg();
905 CfgDbAccessPtr cfg_db = CfgMgr::instance().getStagingCfg()->getCfgDbAccess();
906 string params =
"universe=6 persist=false";
907 if (cfg_db->getExtendedInfoTablesEnabled()) {
908 params +=
" extended-info-tables=true";
910 cfg_db->setAppendedParameters(params);
911 cfg_db->createManagers();
912 }
catch (
const std::exception& ex) {
918 std::ostringstream err;
922 qc = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl();
923 if (IfaceMgr::instance().configureDHCPPacketQueue(AF_INET6, qc)) {
925 .arg(IfaceMgr::instance().getPacketQueue6()->getInfoStr());
928 }
catch (
const std::exception& ex) {
929 err <<
"Error setting packet queue controls after server reconfiguration: "
937 string parameter_name;
946 MultiThreadingMgr::instance().apply(
false, 0, 0);
949 IfaceMgr::instance().closeSockets();
950 TimerMgr::instance()->unregisterTimers();
957 srv_config = CfgMgr::instance().getStagingCfg();
962 mutable_cfg = boost::const_pointer_cast<Element>(config_set);
966 parameter_name =
"interfaces-config";
970 parser.
parse(cfg_iface, ifaces_config);
974 .arg(parameter_name).arg(ex.
what());
981 " processing error");
1016 cfg = CfgMgr::instance().getStagingCfg()->getD2ClientConfig();
1017 CfgMgr::instance().setD2ClientConfig(cfg);
1036 HooksManager::prepareUnloadLibraries();
1037 static_cast<void>(HooksManager::unloadLibraries());
1039 CfgMgr::instance().getStagingCfg()->getHooksConfig();
1040 bool multi_threading_enabled =
true;
1041 uint32_t thread_count = 0;
1042 uint32_t queue_size = 0;
1043 CfgMultiThreading::extract(CfgMgr::instance().getStagingCfg()->getDHCPMultiThreading(),
1044 multi_threading_enabled, thread_count, queue_size);
1064 CBControlDHCPv6::FetchMode::FETCH_ALL);
1066 std::ostringstream err;
1067 err <<
"during update from config backend database: " << ex.
what();
1073 std::ostringstream err;
1074 err <<
"during update from config backend database: "
1075 <<
"undefined configuration parsing error";
1086 LibDHCP::revertRuntimeOptionDefs();
1089 auto notify_libraries = ControlledDhcpv6Srv::finishConfigHookLibraries(config_set);
1090 if (notify_libraries) {
1091 return (notify_libraries);
1099 .arg(CfgMgr::instance().getStagingCfg()->
1100 getConfigSummary(SrvConfig::CFGSEL_ALL6));
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 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.
Parse Database Parameters.
void parse(std::string &access_string, isc::data::ConstElementPtr database_config)
Parse configuration value.
Wrapper class that holds MAC/hardware address sources.
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.
Parser for the control-socket structure.
void parse(SrvConfig &srv_cfg, isc::data::ConstElementPtr value)
"Parses" control-socket structure
Parser for D2ClientConfig.
D2ClientConfigPtr parse(isc::data::ConstElementPtr d2_client_cfg)
Parses a given dhcp-ddns element into D2ClientConfig.
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)
Parses parameters in the JSON map, pertaining to the processing of the expired leases.
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.
Parser for the configuration of interfaces.
void parse(const CfgIfacePtr &config, const isc::data::ConstElementPtr &values)
Parses content of the "interfaces-config".
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)
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.
this class parses a list of DHCP6 subnets
size_t parse(SrvConfigPtr cfg, data::ConstElementPtr subnets_list)
parses contents of the list
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.
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.
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(const int status_code, const std::string &text, const ConstElementPtr &arg)
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.
std::pair< std::string, isc::data::ConstElementPtr > ConfigPair
Combination of parameter name and configuration contents.
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)
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