Kea  1.5.0
isc::dhcp::Subnet6 Class Reference

A configuration holder for IPv6 subnet. More...

#include <subnet.h>

+ Inheritance diagram for isc::dhcp::Subnet6:

Public Member Functions

 Subnet6 (const isc::asiolink::IOAddress &prefix, uint8_t length, const Triplet< uint32_t > &t1, const Triplet< uint32_t > &t2, const Triplet< uint32_t > &preferred_lifetime, const Triplet< uint32_t > &valid_lifetime, const SubnetID id=0)
 Constructor with all parameters. More...
 
virtual bool clientSupported (const isc::dhcp::ClientClasses &client_classes) const
 Checks whether this subnet and parent shared network supports the client that belongs to specified classes. More...
 
Subnet6Ptr getNextSubnet (const Subnet6Ptr &first_subnet) const
 Returns next subnet within shared network. More...
 
Subnet6Ptr getNextSubnet (const Subnet6Ptr &first_subnet, const ClientClasses &client_classes) const
 Returns next subnet within shared network that matches client classes. More...
 
virtual data::ElementPtr toElement () const
 Unparse a subnet object. More...
 
- Public Member Functions inherited from isc::dhcp::Subnet
void addPool (const PoolPtr &pool)
 Adds a new pool for the subnet. More...
 
void delPools (Lease::Type type)
 Deletes all pools of specified type. More...
 
std::pair< isc::asiolink::IOAddress, uint8_t > get () const
 Returns subnet parameters (prefix and prefix length) More...
 
PoolPtr getAnyPool (Lease::Type type)
 Returns a pool without any address specified. More...
 
SubnetID getID () const
 Returns unique ID for that subnet. More...
 
isc::asiolink::IOAddress getLastAllocated (Lease::Type type) const
 returns the last address that was tried from this subnet More...
 
boost::posix_time::ptime getLastAllocatedTime (const Lease::Type &lease_type) const
 Returns the timestamp when the setLastAllocated function was called. More...
 
const PoolPtr getPool (Lease::Type type, const ClientClasses &client_classes, const isc::asiolink::IOAddress &addr) const
 Returns a pool that specified address belongs to with classes. More...
 
const PoolPtr getPool (Lease::Type type, const isc::asiolink::IOAddress &addr, bool anypool=true) const
 Returns a pool that specified address belongs to. More...
 
uint64_t getPoolCapacity (Lease::Type type) const
 Returns the number of possible leases for specified lease type. More...
 
uint64_t getPoolCapacity (Lease::Type type, const ClientClasses &client_classes) const
 Returns the number of possible leases for specified lease type allowed for a client which belongs to classes. More...
 
const PoolCollectiongetPools (Lease::Type type) const
 Returns all pools (const variant) More...
 
template<typename SharedNetworkPtrType >
void getSharedNetwork (SharedNetworkPtrType &shared_network) const
 Retrieves pointer to a shared network associated with a subnet. More...
 
std::string getSharedNetworkName () const
 Returns shared network name. More...
 
bool inPool (Lease::Type type, const isc::asiolink::IOAddress &addr) const
 checks if the specified address is in pools More...
 
bool inPool (Lease::Type type, const isc::asiolink::IOAddress &addr, const ClientClasses &client_classes) const
 checks if the specified address is in allowed pools More...
 
bool inRange (const isc::asiolink::IOAddress &addr) const
 checks if specified address is in range More...
 
void setLastAllocated (Lease::Type type, const isc::asiolink::IOAddress &addr)
 sets the last address that was tried from this subnet More...
 
void setSharedNetworkName (const std::string &shared_network_name)
 Sets new shared network name. More...
 
virtual std::string toText () const
 Returns textual representation of the subnet (e.g. More...
 
- Public Member Functions inherited from isc::data::UserContext
void contextToElement (data::ElementPtr map) const
 Merge unparse a user_context object. More...
 
data::ConstElementPtr getContext () const
 Returns const pointer to the user context. More...
 
void setContext (const data::ConstElementPtr &ctx)
 Sets user context. More...
 
- Public Member Functions inherited from isc::data::CfgToElement
virtual ~CfgToElement ()
 Destructor. More...
 
- Public Member Functions inherited from isc::dhcp::Network6
 Network6 ()
 Constructor. More...
 
OptionPtr getInterfaceId () const
 Returns interface-id value (if specified) More...
 
Triplet< uint32_t > getPreferred () const
 Returns preferred lifetime (in seconds) More...
 
bool getRapidCommit () const
 Returns boolean value indicating that the Rapid Commit option is supported or unsupported for the subnet. More...
 
void setInterfaceId (const OptionPtr &ifaceid)
 sets interface-id option (if defined) More...
 
void setPreferred (const Triplet< uint32_t > &preferred)
 Sets new preferred lifetime for a network. More...
 
void setRapidCommit (const bool rapid_commit)
 Enables or disables Rapid Commit option support for the subnet. More...
 
- Public Member Functions inherited from isc::dhcp::Network
 Network ()
 Constructor. More...
 
virtual ~Network ()
 Virtual destructor. More...
 
void addRelayAddress (const asiolink::IOAddress &addr)
 Adds an address to the list addresses in the network's relay info. More...
 
void allowClientClass (const isc::dhcp::ClientClass &class_name)
 Sets the supported class to class class_name. More...
 
CfgOptionPtr getCfgOption ()
 Returns pointer to the option data configuration for this subnet. More...
 
ConstCfgOptionPtr getCfgOption () const
 Returns const pointer to the option data configuration for this subnet. More...
 
const isc::dhcp::ClientClassgetClientClass () const
 returns the client class More...
 
HRMode getHostReservationMode () const
 Specifies what type of Host Reservations are supported. More...
 
std::string getIface () const
 Returns name of the local interface for which this network is selected. More...
 
const IOAddressListgetRelayAddresses () const
 Returns the list of relay addresses from the network's relay info. More...
 
const RelayInfogetRelayInfo () const
 Returns const reference to relay information. More...
 
const isc::dhcp::ClientClassesgetRequiredClasses () const
 Returns classes which are required to be evaluated. More...
 
Triplet< uint32_t > getT1 () const
 Returns T1 (renew timer), expressed in seconds. More...
 
Triplet< uint32_t > getT2 () const
 Returns T2 (rebind timer), expressed in seconds. More...
 
Triplet< uint32_t > getValid () const
 Return valid-lifetime for addresses in that prefix. More...
 
bool hasRelayAddress (const asiolink::IOAddress &address) const
 Tests if the network's relay info contains the given address. More...
 
bool hasRelays () const
 Indicates if network's relay info has relay addresses. More...
 
void requireClientClass (const isc::dhcp::ClientClass &class_name)
 Adds class class_name to classes required to be evaluated. More...
 
void setHostReservationMode (HRMode mode)
 Sets host reservation mode. More...
 
void setIface (const std::string &iface_name)
 Sets local name of the interface for which this network is selected. More...
 
void setRelayInfo (const RelayInfo &relay)
 Sets information about relay. More...
 
void setT1 (const Triplet< uint32_t > &t1)
 Sets new renew timer for a network. More...
 
void setT2 (const Triplet< uint32_t > &t2)
 Sets new rebind timer for a network. More...
 
void setValid (const Triplet< uint32_t > &valid)
 Sets new valid lifetime for a network. More...
 
- Public Member Functions inherited from isc::data::StampedElement
 StampedElement ()
 Constructor. More...
 
boost::posix_time::ptime getModificationTime () const
 Returns timestamp. More...
 
void setModificationTime (const boost::posix_time::ptime &timestamp)
 Sets timestamp to the explicitly provided value. More...
 
void updateModificationTime ()
 Sets timestmp to the current time. More...
 

Static Public Member Functions

static std::pair< asiolink::IOAddress, uint8_t > parsePrefix (const std::string &prefix)
 Converts subnet prefix to a pair of prefix/length pair. More...
 
- Static Public Member Functions inherited from isc::dhcp::Subnet
static void resetSubnetID ()
 Resets subnet-id counter to its initial value (1) More...
 
- Static Public Member Functions inherited from isc::data::UserContext
static data::ElementPtr toElement (data::ConstElementPtr map)
 Copy extracting comments an Element map. More...
 

Additional Inherited Members

- Public Types inherited from isc::dhcp::Network
enum  HRMode { HR_DISABLED, HR_OUT_OF_POOL, HR_GLOBAL, HR_ALL }
 Specifies allowed host reservation mode. More...
 
typedef boost::shared_ptr< Network::RelayInfoRelayInfoPtr
 Pointer to the RelayInfo structure. More...
 
- Protected Member Functions inherited from isc::dhcp::Subnet
 Subnet (const isc::asiolink::IOAddress &prefix, uint8_t len, const SubnetID id)
 Protected constructor. More...
 
virtual ~Subnet ()
 virtual destructor More...
 
PoolCollectiongetPoolsWritable (Lease::Type type)
 Returns all pools (non-const variant) More...
 
bool poolOverlaps (const Lease::Type &pool_type, const PoolPtr &pool) const
 Checks if the specified pool overlaps with an existing pool. More...
 
uint64_t sumPoolCapacity (const PoolCollection &pools) const
 Returns a sum of possible leases in all pools. More...
 
uint64_t sumPoolCapacity (const PoolCollection &pools, const ClientClasses &client_classes) const
 Returns a sum of possible leases in all pools allowing classes. More...
 
- Static Protected Member Functions inherited from isc::dhcp::Subnet
static SubnetID generateNextID ()
 returns the next unique Subnet-ID More...
 
static std::pair< asiolink::IOAddress, uint8_t > parsePrefixCommon (const std::string &prefix)
 Converts subnet prefix to a pair of prefix/length pair. More...
 
- Protected Attributes inherited from isc::dhcp::Subnet
SubnetID id_
 subnet-id More...
 
std::string iface_
 Name of the network interface (if connected directly) More...
 
isc::asiolink::IOAddress last_allocated_ia_
 last allocated address More...
 
isc::asiolink::IOAddress last_allocated_pd_
 last allocated IPv6 prefix More...
 
isc::asiolink::IOAddress last_allocated_ta_
 last allocated temporary address More...
 
std::map< Lease::Type, boost::posix_time::ptime > last_allocated_time_
 Timestamp indicating when a lease of a specified type has been last allocated from this subnet. More...
 
PoolCollection pools_
 collection of IPv4 or non-temporary IPv6 pools in that subnet More...
 
PoolCollection pools_pd_
 collection of IPv6 prefix pools in that subnet More...
 
PoolCollection pools_ta_
 collection of IPv6 temporary address pools in that subnet More...
 
isc::asiolink::IOAddress prefix_
 a prefix of the subnet More...
 
uint8_t prefix_len_
 a prefix length of the subnet More...
 
WeakNetworkPtr shared_network_
 Pointer to a shared network that subnet belongs to. More...
 
std::string shared_network_name_
 Shared network name. More...
 
- Protected Attributes inherited from isc::data::UserContext
data::ConstElementPtr user_context_
 Pointer to the user context (may be NULL) More...
 
- Protected Attributes inherited from isc::dhcp::Network
CfgOptionPtr cfg_option_
 Pointer to the option data configuration for this subnet. More...
 
ClientClass client_class_
 Optional definition of a client class. More...
 
HRMode host_reservation_mode_
 Specifies host reservation mode. More...
 
std::string iface_name_
 Holds interface name for which this network is selected. More...
 
RelayInfo relay_
 Relay information. More...
 
ClientClasses required_classes_
 Required classes. More...
 
Triplet< uint32_t > t1_
 a Triplet (min/default/max) holding allowed renew timer values More...
 
Triplet< uint32_t > t2_
 a Triplet (min/default/max) holding allowed rebind timer values More...
 
Triplet< uint32_t > valid_
 a Triplet (min/default/max) holding allowed valid lifetime values More...
 
- Static Protected Attributes inherited from isc::dhcp::Subnet
static SubnetID static_id_ = 1
 keeps the subnet-id value More...
 

Detailed Description

A configuration holder for IPv6 subnet.

This class represents an IPv6 subnet.

Note
Subnet and Network use virtual inheritance to avoid a diamond issue with UserContext

Definition at line 636 of file subnet.h.

Constructor & Destructor Documentation

◆ Subnet6()

isc::dhcp::Subnet6::Subnet6 ( const isc::asiolink::IOAddress prefix,
uint8_t  length,
const Triplet< uint32_t > &  t1,
const Triplet< uint32_t > &  t2,
const Triplet< uint32_t > &  preferred_lifetime,
const Triplet< uint32_t > &  valid_lifetime,
const SubnetID  id = 0 
)

Constructor with all parameters.

This constructor calls Subnet::Subnet, where subnet-id is generated.

Parameters
prefixSubnet6 prefix
lengthprefix length
t1renewal timer (in seconds)
t2rebind timer (in seconds)
preferred_lifetimepreferred lifetime of leases (in seconds)
valid_lifetimepreferred lifetime of leases (in seconds)
idarbitrary subnet id, default value of 0 triggers autogeneration of subnet id

Definition at line 613 of file subnet.cc.

References isc_throw, isc::asiolink::IOAddress::isV6(), isc::dhcp::Network6::setPreferred(), isc::dhcp::Network::setT1(), isc::dhcp::Network::setT2(), and isc::dhcp::Network::setValid().

+ Here is the call graph for this function:

Member Function Documentation

◆ clientSupported()

bool isc::dhcp::Subnet6::clientSupported ( const isc::dhcp::ClientClasses client_classes) const
virtual

Checks whether this subnet and parent shared network supports the client that belongs to specified classes.

This method extends the Network::clientSupported method with additional checks whether shared network owning this class supports the client belonging to specified classes. If the class doesn't belong to a shared network this method only checks if the subnet supports specified classes.

Parameters
client_classesList of classes the client belongs to.
Returns
true if client can be supported, false otherwise.

Reimplemented from isc::dhcp::Network.

Definition at line 680 of file subnet.cc.

References isc::dhcp::Network::clientSupported(), and isc::dhcp::Subnet::getSharedNetwork().

+ Here is the call graph for this function:

◆ getNextSubnet() [1/2]

Subnet6Ptr isc::dhcp::Subnet6::getNextSubnet ( const Subnet6Ptr first_subnet) const

Returns next subnet within shared network.

If the current subnet doesn't belong to any shared network or if the next subnet is the same as first subnet (specified in the arguments) a NULL pointer is returned.

Parameters
first_subnetPointer to the subnet from which iterations have started.
Returns
Pointer to the next subnet or NULL pointer if the next subnet is the first subnet or if the current subnet doesn't belong to a shared network.

Definition at line 642 of file subnet.cc.

References isc::dhcp::Subnet::getID(), and isc::dhcp::Subnet::getSharedNetwork().

+ Here is the call graph for this function:

◆ getNextSubnet() [2/2]

Subnet6Ptr isc::dhcp::Subnet6::getNextSubnet ( const Subnet6Ptr first_subnet,
const ClientClasses client_classes 
) const

Returns next subnet within shared network that matches client classes.

Parameters
first_subnetPointer to the subnet from which iterations have started.
client_classesList of classes that the client belongs to. The subnets not matching the classes aren't returned by this method.
Returns
Pointer to the next subnet or NULL pointer if the next subnet is the first subnet or if the current subnet doesn't belong to a shared network.

Definition at line 653 of file subnet.cc.

References isc::dhcp::Subnet::getID(), and isc::dhcp::Subnet::getSharedNetwork().

+ Here is the call graph for this function:

◆ parsePrefix()

std::pair< IOAddress, uint8_t > isc::dhcp::Subnet6::parsePrefix ( const std::string &  prefix)
static

Converts subnet prefix to a pair of prefix/length pair.

Parameters
prefixPrefix to be parsed.
Exceptions
BadValueif provided invalid IPv4 prefix.

Definition at line 783 of file subnet.cc.

References isc_throw, and isc::dhcp::Subnet::parsePrefixCommon().

+ Here is the call graph for this function:

◆ toElement()

data::ElementPtr isc::dhcp::Subnet6::toElement ( ) const
virtual

Unparse a subnet object.

Returns
A pointer to unparsed subnet configuration.

Reimplemented from isc::dhcp::Network6.

Definition at line 752 of file subnet.cc.

References isc::dhcp::Subnet::getPools(), isc::data::merge(), isc::dhcp::Subnet::toElement(), isc::dhcp::Network6::toElement(), isc::dhcp::Lease::TYPE_NA, and isc::dhcp::Lease::TYPE_PD.

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: