23    : data_dir_checker_(new 
file::
PathChecker(DHCP_DATA_DIR, 
"KEA_DHCP_DATA_DIR")),
 
   25      configuration_(new 
SrvConfig()), family_(AF_INET) {
 
 
   36    return (data_dir_checker_->getPath(reset, explicit_path));
 
 
   41    return (data_dir_checker_->validatePath(data_path));
 
 
   49    d2_client_mgr_->setD2ClientConfig(new_config);
 
   55    configuration_->setD2ClientConfig(new_config);
 
 
   60    return (d2_client_mgr_->ddnsEnabled());
 
 
   65    return (d2_client_mgr_->getD2ClientConfig());
 
 
   70    return (*d2_client_mgr_);
 
 
   75    if (staging_configuration_) {
 
   76        staging_configuration_.reset();
 
   79        configuration_->removeStatistics();
 
   82    external_configs_.clear();
 
 
   89    staging_configuration_.reset();
 
 
   97    configuration_->removeStatistics();
 
   99    if (staging_configuration_ && !configuration_->sequenceEquals(*staging_configuration_)) {
 
  101        configuration_ = staging_configuration_;
 
  102        staging_configuration_.reset();
 
  106    auto now = boost::posix_time::second_clock::universal_time();
 
  107    configuration_->setLastCommitTime(now);
 
  110    configuration_->updateStatistics();
 
  112    configuration_->configureLowerLevelLibraries();
 
 
  117    return (configuration_);
 
 
  122    if (!staging_configuration_ || configuration_->sequenceEquals(*staging_configuration_)) {
 
  123        uint32_t sequence = configuration_->getSequence();
 
  126    return (staging_configuration_);
 
 
  133    if (!external_configs_.empty()) {
 
  134        seq = external_configs_.rbegin()->second->getSequence() + 1;
 
  138    external_configs_[seq] = srv_config;
 
 
  164CfgMgr::mergeIntoCfg(
const SrvConfigPtr& target_config, 
const uint32_t seq) {
 
  165    auto source_config = external_configs_.find(seq);
 
  166    if (source_config != external_configs_.end()) {
 
  167        target_config->merge(*source_config->second);
 
  168        external_configs_.erase(source_config);
 
  172                  "of " << seq << 
" was not found");
 
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
CfgMgr()
Protected constructor.
const D2ClientConfigPtr & getD2ClientConfig() const
Fetches the DHCP-DDNS configuration pointer.
D2ClientMgr & getD2ClientMgr()
Fetches the DHCP-DDNS manager.
std::string validatePath(const std::string data_path) const
Validates a file path against the supported directory for DHDP data.
void clear()
Remove current, staging, and external configurations.
SrvConfigPtr createExternalCfg()
Creates an external configuration and returns pointer to it.
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 mergeIntoStagingCfg(const uint32_t seq)
Merges external configuration with the given sequence number into the staging configuration.
void mergeIntoCurrentCfg(const uint32_t seq)
Merges external configuration with the given sequence number into the current configuration.
SrvConfigPtr getStagingCfg()
Returns a pointer to the staging configuration.
bool ddnsEnabled()
Convenience method for checking if DHCP-DDNS updates are enabled.
std::string getDataDir(bool reset=false, const std::string explicit_path="")
Fetches the supported DHCP data directory.
void commit()
Commits the staging configuration.
void clearStagingConfiguration()
Remove staging configuration.
SrvConfigPtr getCurrentCfg()
Returns a pointer to the current configuration.
Acts as a storage vault for D2 client configuration.
D2ClientMgr isolates Kea from the details of being a D2 client.
static void setRuntimeOptionDefs(const OptionDefSpaceContainer &defs)
Copies option definitions created at runtime.
Specifies current DHCP configuration.
Embodies a supported path against which file paths can be validated.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
boost::shared_ptr< D2ClientConfig > D2ClientConfigPtr
Defines a pointer for D2ClientConfig instances.
boost::shared_ptr< SrvConfig > SrvConfigPtr
Non-const pointer to the SrvConfig.
Defines the logger used by the top-level component of kea-lfc.