27 #include <boost/shared_ptr.hpp>
54 template<
typename ValueType>
68 void setParam(
const std::string& name,
const ValueType& value,
70 values_[name] = value;
71 positions_[name] = position;
82 ValueType
getParam(
const std::string& name)
const {
83 typename std::map<std::string, ValueType>::const_iterator param
86 if (param == values_.end()) {
91 return (param->second);
110 typename std::map<std::string, data::Element::Position>::const_iterator
111 pos = positions_.find(name);
112 if (pos == positions_.end()) {
113 return (parent ? parent->getPosition() :
117 return (pos->second);
131 const ValueType& default_value)
const {
132 typename std::map<std::string, ValueType>::const_iterator param
133 = values_.find(name);
135 if (param == values_.end()) {
136 return (default_value);
139 return (param->second);
150 positions_.erase(name);
162 std::map<std::string, ValueType> values_;
169 std::map<std::string, data::Element::Position> positions_;
174 typedef std::pair<std::string, isc::data::ConstElementPtr>
ConfigPair;
244 uint16_t address_family_;
272 uint16_t address_family_;
305 virtual void parse(PoolStoragePtr pools,
307 const uint16_t address_family);
317 int32_t ptype = 0) = 0;
327 int32_t ptype = 0) = 0;
380 virtual void parse(PoolStoragePtr pools,
439 void addAddress(
const std::string& name,
const std::string& address_str,
902 #endif // DHCP_PARSERS_H
virtual PoolPtr poolMaker(isc::asiolink::IOAddress &addr, uint32_t len, int32_t ptype=0)=0
Creates a Pool object given a IPv4 prefix and the prefix length.
std::pair< std::string, isc::data::ConstElementPtr > ConfigPair
Combination of parameter name and configuration contents.
Defines the D2ClientConfig class.
const data::Element::Position & getPosition(const std::string &name, const data::ConstElementPtr parent=data::ConstElementPtr()) const
Returns position of the data element in the configuration string.
D2ClientConfigPtr parse(isc::data::ConstElementPtr d2_client_cfg)
Parses a given dhcp-ddns element into D2ClientConfig.
void setParam(const std::string &name, const ValueType &value, const data::Element::Position &position)
Stores the parameter, its value and the position in the store.
void validateResvs(const Subnet6Ptr &subnet, ConstHostPtr host)
Verifies host reservation addresses are in the subnet range.
virtual void duplicate_option_warning(uint32_t code, asiolink::IOAddress &addr)
Issues a DHCP6 server specific warning regarding duplicate subnet options.
boost::shared_ptr< CfgOption > CfgOptionPtr
Non-const pointer.
size_t parse(SrvConfigPtr cfg, data::ConstElementPtr subnets_list)
parses contents of the list
OptionSpaceContainer< OptionContainer, OptionDescriptor, std::string > OptionStorage
Collection of containers holding option spaces.
this class parses a list of DHCP6 subnets
static const Position & ZERO_POSITION()
Returns Position object with line_ and pos_ set to 0, and with an empty file name.
boost::shared_ptr< OptionStorage > OptionStoragePtr
Shared pointer to option storage.
this class parses a single subnet
ValueType getParam(const std::string &name) const
Returns the data value for the given parameter.
Parser for IPv4 pool definitions.
virtual ~PoolsListParser()
destructor.
boost::shared_ptr< StringStorage > StringStoragePtr
boost::shared_ptr< Pool6 > Pool6Ptr
a pointer an IPv6 Pool
Specialization of the pool list parser for DHCPv6.
static const isc::data::SimpleDefaults D2_CLIENT_CONFIG_DEFAULTS
Defaults for the D2 client configuration.
std::vector< SimpleDefault > SimpleDefaults
This specifies all default values in a given scope (e.g. a subnet).
Common configuration parser for shared networks and subnets.
boost::shared_ptr< Network::RelayInfo > RelayInfoPtr
Pointer to the RelayInfo structure.
boost::shared_ptr< Uint32Storage > Uint32StoragePtr
Subnets6ListConfigParser(bool check_iface=true)
constructor
boost::shared_ptr< SrvConfig > SrvConfigPtr
Non-const pointer to the SrvConfig.
boost::shared_ptr< Subnet4 > Subnet4Ptr
A pointer to a Subnet4 object.
This class parses a single IPv4 subnet.
Universe
defines option universe DHCPv4 or DHCPv6
CfgOptionPtr options_
Pointer to the options configuration.
Subnet4Ptr parse(data::ConstElementPtr subnet)
Parses a single IPv4 subnet configuration and adds to the Configuration Manager.
NameChangeFormat
Defines the list of data wire formats supported.
void clear()
Deletes all of the entries from the store.
this class parses list of DHCP4 subnets
virtual void parse(PoolStoragePtr pools, isc::data::ConstElementPtr pools_list)=0
parses the actual structure
boost::shared_ptr< CfgOptionDef > CfgOptionDefPtr
Non-const pointer.
virtual ~SubnetConfigParser()
virtual destructor (does nothing)
boost::shared_ptr< Pool > PoolPtr
a pointer to either IPv4 or IPv6 Pool
OptionDefinitionPtr parse(isc::data::ConstElementPtr option_def)
Parses an entry that describes single option definition.
Parser for D2ClientConfig.
ValueStorage< bool > BooleanStorage
Storage for parsed boolean values.
PdPoolParser()
Constructor.
Specialization of the pool list parser for DHCPv4.
PoolStoragePtr pools_
Storage for pools belonging to this subnet.
Parser for IPv6 prefix delegation definitions.
parser for MAC/hardware acquisition sources
OptionDefListParser(const uint16_t address_family)
Constructor.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
Subnets4ListConfigParser(bool check_iface=true)
constructor
void initSubnet(isc::data::ConstElementPtr params, isc::asiolink::IOAddress addr, uint8_t len)
Instantiates the IPv6 Subnet based on a given IPv6 address and prefix length.
void addAddress(const std::string &name, const std::string &address_str, isc::data::ConstElementPtr relay_elem, const isc::dhcp::Network::RelayInfoPtr &relay_info)
Attempts to add an IP address to list of relay addresses.
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.
Wrapper class that holds MAC/hardware address sources.
parser for additional relay information
To be removed. Please use ConfigError instead.
Parser for a single option definition.
virtual void initSubnet(isc::data::ConstElementPtr params, isc::asiolink::IOAddress addr, uint8_t len)=0
Instantiates the subnet based on a given IP prefix and prefix length.
parser for a single pool definition
boost::shared_ptr< const Element > ConstElementPtr
boost::shared_ptr< const Host > ConstHostPtr
Const pointer to the Host object.
Parser for a list of option definitions.
void parse(CfgMACSource &mac_sources, isc::data::ConstElementPtr value)
parses parameters value
void initSubnet(data::ConstElementPtr params, asiolink::IOAddress addr, uint8_t len)
Instantiates the IPv4 Subnet based on a given IPv4 address and prefix length.
A template class that stores named elements of a given data type.
size_t parse(SrvConfigPtr cfg, data::ConstElementPtr subnets_list)
parses contents of the list
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.
Specifies current DHCP configuration.
SubnetConfigParser(uint16_t family, bool check_iface=true)
constructor
Defines the logger used by the top-level component of kea-dhcp-ddns.
void parse(SrvConfig &srv_cfg, isc::data::ConstElementPtr value)
"Parses" control-socket structure
bool check_iface_
Check if the specified interface exists in the system.
Parser for a list of prefix delegation pools.
Parser for IPv6 pool definitions.
ReplaceClientNameMode
Defines the client name replacement modes.
uint16_t address_family_
Address family: AF_INET or AF_INET6.
PoolPtr poolMaker(asiolink::IOAddress &addr, uint32_t len, int32_t ignored)
Creates a Pool4 object given a IPv4 prefix and the prefix length.
Parser for a list of pools.
SubnetPtr parse(isc::data::ConstElementPtr subnet)
parses a subnet description and returns Subnet{4,6} structure
void delParam(const std::string &name)
Remove the parameter from the store.
bool check_iface_
Check if the specified interface exists in the system.
OptionDefParser(const uint16_t address_family)
Constructor.
Subnet6Ptr parse(data::ConstElementPtr subnet)
Parses a single IPv6 subnet configuration and adds to the Configuration Manager.
boost::multi_index_container< OptionDescriptor, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, boost::multi_index::hashed_non_unique< KeyFromKeyExtractor< boost::multi_index::const_mem_fun< Option, uint16_t,&Option::getType >, boost::multi_index::member< OptionDescriptor, OptionPtr,&OptionDescriptor::option_ > > >, boost::multi_index::hashed_non_unique< boost::multi_index::member< OptionDescriptor, bool,&OptionDescriptor::persistent_ > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< data::BaseStampedElement, boost::posix_time::ptime,&data::BaseStampedElement::getModificationTime > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< OptionIdIndexTag >, boost::multi_index::const_mem_fun< data::BaseStampedElement, uint64_t,&data::BaseStampedElement::getId > > >> OptionContainer
Multi index container for DHCP option descriptors.
void parse(const isc::dhcp::Network::RelayInfoPtr &relay_info, isc::data::ConstElementPtr relay_elem)
parses the actual relay parameters
isc::dhcp::SubnetPtr subnet_
Pointer to the created subnet object.
PoolPtr poolMaker(asiolink::IOAddress &addr, uint32_t len, int32_t ptype)
Creates a Pool6 object given a IPv6 prefix and the prefix length.
ValueStorage< std::string > StringStorage
a collection of elements that store string values
isc::dhcp::Network::RelayInfoPtr relay_info_
Pointer to relay information.
void parse(PoolStoragePtr pools, data::ConstElementPtr pools_list)
parses the actual structure
virtual ~PoolParser()
destructor.
NameChangeProtocol
Defines the list of socket protocols supported.
This class parses a single IPv6 subnet.
boost::shared_ptr< PoolStorage > PoolStoragePtr
ValueStorage< uint32_t > Uint32Storage
a collection of elements that store uint32 values
static size_t setAllDefaults(isc::data::ConstElementPtr d2_config)
Sets all defaults for D2 client configuration.
boost::shared_ptr< OptionDefinition > OptionDefinitionPtr
Pointer to option definition object.
Subnet4ConfigParser(bool check_iface=true)
Constructor.
boost::shared_ptr< Subnet6 > Subnet6Ptr
A pointer to a Subnet6 object.
void parse(CfgOptionDefPtr cfg, isc::data::ConstElementPtr def_list)
Parses a list of option definitions, create them and store in cfg.
Parser for the control-socket structure.
virtual void parse(PoolStoragePtr pools, isc::data::ConstElementPtr pool_structure, const uint16_t address_family)
parses the actual structure
The IOAddress class represents an IP addresses (version agnostic)
Subnet6ConfigParser(bool check_iface=true)
Constructor.
boost::shared_ptr< D2ClientConfig > D2ClientConfigPtr
Defines a pointer for D2ClientConfig instances.
bool check_iface_
Check if the specified interface exists in the system.
void parse(PoolStoragePtr pools, data::ConstElementPtr pd_pool_list)
Parse configuration entries.
void validateResv(const Subnet4Ptr &subnet, ConstHostPtr host)
Verifies the host reservation address is in the subnet range.
boost::shared_ptr< BooleanStorage > BooleanStoragePtr
void parse(PoolStoragePtr pools, data::ConstElementPtr pd_pool_)
Builds a prefix delegation pool from the given configuration.
std::vector< PoolPtr > PoolStorage
a collection of pools
boost::shared_ptr< Subnet > SubnetPtr
A generic pointer to either Subnet4 or Subnet6 object.
RelayInfoParser(const isc::dhcp::Option::Universe &family)
constructor
void parse(PoolStoragePtr pools, data::ConstElementPtr pools_list)
parses the actual structure
ValueType getOptionalParam(const std::string &name, const ValueType &default_value) const
Returns the data value for an optional parameter.