7#ifndef CONFIG_BACKEND_DHCP6_H
8#define CONFIG_BACKEND_DHCP6_H
23#include <boost/shared_ptr.hpp>
24#include <boost/date_time/posix_time/ptime.hpp>
103 const std::string& subnet_prefix)
const = 0;
137 const std::string& shared_network_name)
const = 0;
149 const boost::posix_time::ptime& modification_time)
const = 0;
161 const std::string& name)
const = 0;
185 const boost::posix_time::ptime& modification_time)
const = 0;
198 const std::string& space)
const = 0;
223 const boost::posix_time::ptime& modification_time)
const = 0;
237 const std::string& space)
const = 0;
261 const boost::posix_time::ptime& modification_time)
const = 0;
274 const std::string& name)
const = 0;
296 const boost::posix_time::ptime& modification_time)
const = 0;
320 const boost::posix_time::ptime& modification_time)
const = 0;
336 const boost::posix_time::ptime& modification_time,
337 const uint64_t& modification_id)
const = 0;
411 const std::string& shared_network_name,
458 const uint8_t pd_pool_prefix_length,
483 const std::string& follow_class_name) = 0;
501 const std::string& subnet_prefix) = 0;
535 const std::string& shared_network_name) = 0;
547 const std::string& name) = 0;
571 const std::string& space) = 0;
595 const std::string& space) = 0;
609 const std::string& shared_network_name,
611 const std::string& space) = 0;
628 const std::string& space) = 0;
648 const std::string& space) = 0;
666 const uint8_t pd_pool_prefix_length,
668 const std::string& space) = 0;
680 const std::string& name) = 0;
699 const std::string& name) = 0;
it forwards queries to a single upstream resolver and passes the answers back to the client It is constructed with the address of the forward server Queries are initiated with the question to ask the forward server
The IOAddress class represents an IP addresses (version agnostic)
Interface for Kea server specific configuration backend implementations.
Server selector for associating objects in a database with specific servers.
Maintains a list of ClientClassDef's.
Interface implemented by DHCPv6 configuration backends.
virtual ~ConfigBackendDHCPv6()
Virtual destructor.
virtual OptionDefinitionPtr getOptionDef6(const db::ServerSelector &server_selector, const uint16_t code, const std::string &space) const =0
Retrieves single option definition by code and space.
virtual data::StampedValueCollection getModifiedGlobalParameters6(const db::ServerSelector &selector, const boost::posix_time::ptime &modification_time) const =0
Retrieves global parameters modified after specified time.
virtual OptionDefContainer getAllOptionDefs6(const db::ServerSelector &server_selector) const =0
Retrieves all option definitions.
virtual uint64_t deleteAllSubnets6(const db::ServerSelector &server_selector)=0
Deletes all subnets.
virtual void createUpdateOption6(const db::ServerSelector &server_selector, const asiolink::IOAddress &pd_pool_prefix, const uint8_t pd_pool_prefix_length, const OptionDescriptorPtr &option)=0
Creates or updates prefix delegation pool level option.
virtual uint64_t deleteSubnet6(const db::ServerSelector &server_selector, const std::string &subnet_prefix)=0
Deletes subnet by prefix.
virtual void createUpdateOption6(const db::ServerSelector &server_selector, const asiolink::IOAddress &pool_start_address, const asiolink::IOAddress &pool_end_address, const OptionDescriptorPtr &option)=0
Creates or updates pool level option.
virtual data::StampedValueCollection getAllGlobalParameters6(const db::ServerSelector &selector) const =0
Retrieves all global parameters.
virtual ClientClassDefPtr getClientClass6(const db::ServerSelector &selector, const std::string &name) const =0
Retrieves a client class by name.
virtual uint64_t deleteClientClass6(const db::ServerSelector &server_selector, const std::string &name)=0
Deletes a client class.
virtual void createUpdateOption6(const db::ServerSelector &server_selector, const SubnetID &subnet_id, const OptionDescriptorPtr &option)=0
Creates or updates subnet level option.
virtual uint64_t deleteServer6(const data::ServerTag &server_tag)=0
Deletes a server from the backend.
virtual uint64_t deleteOption6(const db::ServerSelector &server_selector, const SubnetID &subnet_id, const uint16_t code, const std::string &space)=0
Deletes subnet level option.
virtual OptionDescriptorPtr getOption6(const db::ServerSelector &server_selector, const uint16_t code, const std::string &space) const =0
Retrieves single option by code and space.
virtual uint64_t deleteOption6(const db::ServerSelector &server_selector, const uint16_t code, const std::string &space)=0
Deletes global option.
virtual ClientClassDictionary getModifiedClientClasses6(const db::ServerSelector &selector, const boost::posix_time::ptime &modification_time) const =0
Retrieves client classes modified after specified time.
virtual SharedNetwork6Ptr getSharedNetwork6(const db::ServerSelector &server_selector, const std::string &name) const =0
Retrieves shared network by name.
virtual db::AuditEntryCollection getRecentAuditEntries(const db::ServerSelector &server_selector, const boost::posix_time::ptime &modification_time, const uint64_t &modification_id) const =0
Retrieves the most recent audit entries.
virtual SharedNetwork6Collection getAllSharedNetworks6(const db::ServerSelector &server_selector) const =0
Retrieves all shared networks.
virtual db::ServerPtr getServer6(const data::ServerTag &server_tag) const =0
Retrieves a server.
virtual ClientClassDictionary getAllClientClasses6(const db::ServerSelector &selector) const =0
Retrieves all client classes.
virtual void createUpdateClientClass6(const db::ServerSelector &server_selector, const ClientClassDefPtr &client_class, const std::string &follow_class_name)=0
Creates or updates a client class.
virtual uint64_t deleteSharedNetworkSubnets6(const db::ServerSelector &server_selector, const std::string &shared_network_name)=0
Deletes all subnets belonging to a specified shared network.
virtual uint64_t deleteOptionDef6(const db::ServerSelector &server_selector, const uint16_t code, const std::string &space)=0
Deletes option definition.
virtual uint64_t deleteGlobalParameter6(const db::ServerSelector &server_selector, const std::string &name)=0
Deletes global parameter.
virtual void createUpdateServer6(const db::ServerPtr &server)=0
Creates or updates a server.
virtual Subnet6Ptr getSubnet6(const db::ServerSelector &server_selector, const std::string &subnet_prefix) const =0
Retrieves a single subnet by subnet_prefix.
virtual uint64_t deleteSharedNetwork6(const db::ServerSelector &server_selector, const std::string &name)=0
Deletes shared network by name.
virtual uint64_t deleteAllClientClasses6(const db::ServerSelector &server_selector)=0
Deletes all client classes.
virtual uint64_t deleteAllSharedNetworks6(const db::ServerSelector &server_selector)=0
Deletes all shared networks.
virtual db::ServerCollection getAllServers6() const =0
Retrieves all servers.
virtual OptionContainer getModifiedOptions6(const db::ServerSelector &selector, const boost::posix_time::ptime &modification_time) const =0
Retrieves options modified after specified time.
virtual Subnet6Ptr getSubnet6(const db::ServerSelector &server_selector, const SubnetID &subnet_id) const =0
Retrieves a single subnet by subnet identifier.
virtual data::StampedValuePtr getGlobalParameter6(const db::ServerSelector &selector, const std::string &name) const =0
Retrieves global parameter value.
virtual void createUpdateSubnet6(const db::ServerSelector &server_selector, const Subnet6Ptr &subnet)=0
Creates or updates a subnet.
virtual void createUpdateGlobalParameter6(const db::ServerSelector &server_selector, const data::StampedValuePtr &value)=0
Creates or updates global parameter.
virtual OptionContainer getAllOptions6(const db::ServerSelector &server_selector) const =0
Retrieves all global options.
virtual uint64_t deleteSubnet6(const db::ServerSelector &server_selector, const SubnetID &subnet_id)=0
Deletes subnet by identifier.
virtual void createUpdateOption6(const db::ServerSelector &server_selector, const OptionDescriptorPtr &option)=0
Creates or updates global option.
virtual uint64_t deleteOption6(const db::ServerSelector &server_selector, const asiolink::IOAddress &pool_start_address, const asiolink::IOAddress &pool_end_address, const uint16_t code, const std::string &space)=0
Deletes pool level option.
virtual Subnet6Collection getSharedNetworkSubnets6(const db::ServerSelector &server_selector, const std::string &shared_network_name) const =0
Retrieves all subnets belonging to a specified shared network.
virtual uint64_t deleteOption6(const db::ServerSelector &server_selector, const asiolink::IOAddress &pd_pool_prefix, const uint8_t pd_pool_prefix_length, const uint16_t code, const std::string &space)=0
Deletes prefix delegation pool level option.
virtual OptionDefContainer getModifiedOptionDefs6(const db::ServerSelector &server_selector, const boost::posix_time::ptime &modification_time) const =0
Retrieves option definitions modified after specified time.
virtual void createUpdateOption6(const db::ServerSelector &selector, const std::string &shared_network_name, const OptionDescriptorPtr &option)=0
Creates or updates shared network level option.
virtual Subnet6Collection getModifiedSubnets6(const db::ServerSelector &server_selector, const boost::posix_time::ptime &modification_time) const =0
Retrieves subnets modified after specified time.
virtual uint64_t deleteAllOptionDefs6(const db::ServerSelector &server_selector)=0
Deletes all option definitions.
virtual uint64_t deleteOption6(const db::ServerSelector &selector, const std::string &shared_network_name, const uint16_t code, const std::string &space)=0
Deletes shared network level option.
virtual void createUpdateSharedNetwork6(const db::ServerSelector &server_selector, const SharedNetwork6Ptr &shared_network)=0
Creates or updates a shared network.
virtual Subnet6Collection getAllSubnets6(const db::ServerSelector &server_selector) const =0
Retrieves all subnets.
virtual uint64_t deleteAllGlobalParameters6(const db::ServerSelector &server_selector)=0
Deletes all global parameters.
virtual SharedNetwork6Collection getModifiedSharedNetworks6(const db::ServerSelector &server_selector, const boost::posix_time::ptime &modification_time) const =0
Retrieves shared networks modified after specified time.
virtual uint64_t deleteAllServers6()=0
Deletes all servers from the backend except the logical server 'all'.
virtual void createUpdateOptionDef6(const db::ServerSelector &server_selector, const OptionDefinitionPtr &option_def)=0
Creates or updates an option definition.
Defines classes for storing client class definitions.
boost::shared_ptr< StampedValue > StampedValuePtr
Pointer to the stamped value.
boost::multi_index_container< StampedValuePtr, boost::multi_index::indexed_by< boost::multi_index::hashed_non_unique< boost::multi_index::tag< StampedValueNameIndexTag >, boost::multi_index::const_mem_fun< StampedValue, std::string, &StampedValue::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< StampedValueModificationTimeIndexTag >, boost::multi_index::const_mem_fun< BaseStampedElement, boost::posix_time::ptime, &BaseStampedElement::getModificationTime > > > > StampedValueCollection
Multi index container for StampedValue.
boost::shared_ptr< Server > ServerPtr
Shared pointer to the Server class.
boost::multi_index_container< AuditEntryPtr, boost::multi_index::indexed_by< boost::multi_index::ordered_non_unique< boost::multi_index::tag< AuditEntryObjectTypeTag >, boost::multi_index::composite_key< AuditEntry, boost::multi_index::const_mem_fun< AuditEntry, std::string, &AuditEntry::getObjectType >, boost::multi_index::const_mem_fun< AuditEntry, AuditEntry::ModificationType, &AuditEntry::getModificationType > > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< AuditEntryModificationTimeIdTag >, boost::multi_index::composite_key< AuditEntry, boost::multi_index::const_mem_fun< AuditEntry, boost::posix_time::ptime, &AuditEntry::getModificationTime >, boost::multi_index::const_mem_fun< AuditEntry, uint64_t, &AuditEntry::getRevisionId > > >, boost::multi_index::hashed_non_unique< boost::multi_index::tag< AuditEntryObjectIdTag >, boost::multi_index::const_mem_fun< AuditEntry, uint64_t, &AuditEntry::getObjectId > > > > AuditEntryCollection
Multi index container holding AuditEntry instances.
boost::multi_index_container< ServerPtr, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< ServerTagIndexTag >, boost::multi_index::const_mem_fun< Server, std::string, &Server::getServerTagAsText > > > > ServerCollection
Multi index container for Server.
boost::shared_ptr< ConfigBackendDHCPv6 > ConfigBackendDHCPv6Ptr
Shared pointer to the ConfigBackendDHCPv6 instance.
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.
boost::shared_ptr< Subnet6 > Subnet6Ptr
A pointer to a Subnet6 object.
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.
boost::shared_ptr< ClientClassDef > ClientClassDefPtr
a pointer to an ClientClassDef
boost::shared_ptr< OptionDefinition > OptionDefinitionPtr
Pointer to option definition object.
boost::shared_ptr< SharedNetwork6 > SharedNetwork6Ptr
Pointer to SharedNetwork6 object.
boost::shared_ptr< OptionDescriptor > OptionDescriptorPtr
A pointer to option descriptor.
uint32_t SubnetID
Defines unique IPv4 or IPv6 subnet identifier.
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 > >, boost::multi_index::hashed_non_unique< boost::multi_index::member< OptionDescriptor, bool, &OptionDescriptor::cancelled_ > > > > OptionContainer
Multi index container for DHCP option descriptors.
boost::multi_index_container< OptionDefinitionPtr, boost::multi_index::indexed_by< boost::multi_index::sequenced<>, boost::multi_index::hashed_non_unique< boost::multi_index::const_mem_fun< OptionDefinition, uint16_t, &OptionDefinition::getCode > >, boost::multi_index::hashed_non_unique< boost::multi_index::const_mem_fun< OptionDefinition, std::string, &OptionDefinition::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::const_mem_fun< data::BaseStampedElement, boost::posix_time::ptime, &data::StampedElement::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 > > > > OptionDefContainer
Multi index container for DHCP option definitions.
Defines the logger used by the top-level component of kea-lfc.