7 #ifndef SHARED_NETWORK_H 8 #define SHARED_NETWORK_H 16 #include <boost/enable_shared_from_this.hpp> 17 #include <boost/multi_index/mem_fun.hpp> 18 #include <boost/multi_index/indexed_by.hpp> 19 #include <boost/multi_index/ordered_index.hpp> 20 #include <boost/multi_index/random_access_index.hpp> 21 #include <boost/multi_index_container.hpp> 22 #include <boost/shared_ptr.hpp> 41 public boost::enable_shared_from_this<SharedNetwork4>,
49 : name_(name), subnets_() {
121 const SubnetID& current_subnet)
const;
170 typedef boost::multi_index_container<
173 boost::multi_index::indexed_by<
176 boost::multi_index::random_access<
177 boost::multi_index::tag<SharedNetworkRandomAccessIndexTag>
180 boost::multi_index::ordered_unique<
181 boost::multi_index::tag<SharedNetworkNameIndexTag>,
187 boost::multi_index::ordered_non_unique<
188 boost::multi_index::tag<SharedNetworkServerIdIndexTag>,
200 public boost::enable_shared_from_this<SharedNetwork6>,
208 : name_(name), subnets_() {
280 const SubnetID& current_subnet)
const;
329 typedef boost::multi_index_container<
332 boost::multi_index::indexed_by<
335 boost::multi_index::random_access<
336 boost::multi_index::tag<SharedNetworkRandomAccessIndexTag>
339 boost::multi_index::ordered_unique<
340 boost::multi_index::tag<SharedNetworkNameIndexTag>,
350 #endif // SHARED_NETWORK_H Subnet4Ptr getSubnet(const SubnetID &subnet_id) const
Returns a subnet for a specified subnet id.
const Subnet4Collection * getAllSubnets() const
Returns a pointer to the collection of subnets within this shared network.
boost::shared_ptr< Network > NetworkPtr
Pointer to the Network object.
void setName(const std::string &name)
Sets new name for the shared network.
boost::multi_index_container< SharedNetwork6Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SharedNetworkRandomAccessIndexTag > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SharedNetworkNameIndexTag >, boost::multi_index::const_mem_fun< SharedNetwork6, std::string, &SharedNetwork6::getName > > >> SharedNetwork6Collection
Multi index container holding shared networks.
boost::multi_index_container< Subnet6Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SubnetRandomAccessIndexTag > >, 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 > > >> Subnet6Collection
A collection of Subnet6 objects.
void add(const Subnet6Ptr &subnet)
Adds IPv6 subnet to a shared network.
const Subnet6Collection * getAllSubnets() const
Returns a pointer to the collection of subnets within this shared network.
Subnet6Ptr getSubnet(const SubnetID &subnet_id) const
Returns a subnet for a specified subnet id.
boost::shared_ptr< Subnet4 > Subnet4Ptr
A pointer to a Subnet4 object.
Subnet6Ptr getNextSubnet(const Subnet6Ptr &first_subnet, const SubnetID ¤t_subnet) const
Retrieves next available IPv6 subnet within shared network.
std::string getName() const
Returns a name of the shared network.
boost::shared_ptr< Element > ElementPtr
virtual NetworkPtr sharedFromThis()
Returns shared pointer to this network.
boost::multi_index_container< SharedNetwork4Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SharedNetworkRandomAccessIndexTag > >, boost::multi_index::ordered_unique< boost::multi_index::tag< SharedNetworkNameIndexTag >, boost::multi_index::const_mem_fun< SharedNetwork4, std::string, &SharedNetwork4::getName > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< SharedNetworkServerIdIndexTag >, boost::multi_index::const_mem_fun< Network4, asiolink::IOAddress, &Network4::getServerId > > >> SharedNetwork4Collection
Multi index container holding shared networks.
virtual data::ElementPtr toElement() const
Unparses shared network object.
Shared network holding IPv4 subnets.
Specialization of the Network object for DHCPv6 case.
void del(const SubnetID &subnet_id)
Removes subnet from a shared network.
Subnet4Ptr getPreferredSubnet(const Subnet4Ptr &selected_subnet) const
Attempts to find a subnet which is more likely to include available leases than selected subnet.
A tag for accessing index by shared network name.
Represents a network that can be associated with a subnet.
SharedNetwork4(const std::string &name)
Constructor.
void delAll()
Removes all subnets from a shared network.
void add(const Subnet4Ptr &subnet)
Adds IPv4 subnet to a shared network.
std::string getName() const
Returns a name of the shared network.
boost::shared_ptr< SharedNetwork6 > SharedNetwork6Ptr
Pointer to SharedNetwork6 object.
virtual data::ElementPtr toElement() const
Unparses shared network object.
boost::shared_ptr< SharedNetwork4 > SharedNetwork4Ptr
Pointer to SharedNetwork4 object.
A tag for accessing index by server identifier.
Defines the logger used by the top-level component of kea-dhcp-ddns.
A tag for accessing random access index.
boost::multi_index_container< Subnet4Ptr, boost::multi_index::indexed_by< boost::multi_index::random_access< boost::multi_index::tag< SubnetRandomAccessIndexTag > >, 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 > > >> Subnet4Collection
A collection of Subnet4 objects.
Subnet6Ptr getPreferredSubnet(const Subnet6Ptr &selected_subnet, const Lease::Type &lease_type) const
Attempts to find a subnet which is more likely to include available leases than selected subnet.
Type
Type of lease or pool.
void delAll()
Removes all subnets from a shared network.
virtual asiolink::IOAddress getServerId() const
Returns binary representation of the dhcp-server-identifier option (54).
Shared network holding IPv6 subnets.
Specialization of the Network object for DHCPv4 case.
void del(const SubnetID &subnet_id)
Removes subnet from a shared network.
boost::shared_ptr< Subnet6 > Subnet6Ptr
A pointer to a Subnet6 object.
The IOAddress class represents an IP addresses (version agnostic)
virtual NetworkPtr sharedFromThis()
Returns shared pointer to this network.
Subnet4Ptr getNextSubnet(const Subnet4Ptr &first_subnet, const SubnetID ¤t_subnet) const
Retrieves next available IPv4 subnet within shared network.
SharedNetwork6(const std::string &name)
Constructor.
void setName(const std::string &name)
Sets new name for the shared network.
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)