Kea  1.5.0
isc::dhcp::CfgHosts Class Reference

Represents the host reservations specified in the configuration file. More...

#include <cfg_hosts.h>

+ Inheritance diagram for isc::dhcp::CfgHosts:

Public Member Functions

virtual ~CfgHosts ()
 Destructor. More...
 
virtual void add (const HostPtr &host)
 Adds a new host to the collection. More...
 
virtual bool del (const SubnetID &subnet_id, const asiolink::IOAddress &addr)
 Attempts to delete a host by address. More...
 
virtual bool del4 (const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)
 Attempts to delete a host by (subnet4-id, identifier, identifier-type) More...
 
virtual bool del6 (const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)
 Attempts to delete a host by (subnet6-id, identifier, identifier-type) More...
 
virtual size_t delAll4 (const SubnetID &subnet_id)
 Attempts to delete all hosts for a given IPv4 subnet. More...
 
virtual size_t delAll6 (const SubnetID &subnet_id)
 Attempts to delete all hosts for a given IPv6 subnet. More...
 
virtual ConstHostPtr get4 (const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const
 Returns a host connected to the IPv4 subnet. More...
 
virtual HostPtr get4 (const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)
 Returns a host connected to the IPv4 subnet. More...
 
virtual ConstHostPtr get4 (const SubnetID &subnet_id, const asiolink::IOAddress &address) const
 Returns a host connected to the IPv4 subnet and having a reservation for a specified IPv4 address. More...
 
virtual ConstHostPtr get6 (const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const
 Returns a host connected to the IPv6 subnet. More...
 
virtual HostPtr get6 (const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)
 Returns a host connected to the IPv6 subnet. More...
 
virtual ConstHostPtr get6 (const asiolink::IOAddress &prefix, const uint8_t prefix_len) const
 Returns a host using the specified IPv6 prefix. More...
 
virtual HostPtr get6 (const asiolink::IOAddress &prefix, const uint8_t prefix_len)
 Returns a host using the specified IPv6 prefix. More...
 
virtual ConstHostPtr get6 (const SubnetID &subnet_id, const asiolink::IOAddress &address) const
 Returns a host connected to the IPv6 subnet and having a reservation for a specified IPv6 address. More...
 
virtual HostPtr get6 (const SubnetID &subnet_id, const asiolink::IOAddress &address)
 Returns a host connected to the IPv6 subnet and having a reservation for a specified IPv6 address. More...
 
virtual ConstHostCollection getAll (const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const
 Return all hosts connected to any subnet for which reservations have been made using a specified identifier. More...
 
virtual HostCollection getAll (const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)
 Non-const version of the getAll const method. More...
 
virtual ConstHostCollection getAll4 (const asiolink::IOAddress &address) const
 Returns a collection of hosts using the specified IPv4 address. More...
 
virtual HostCollection getAll4 (const asiolink::IOAddress &address)
 Returns a collection of hosts using the specified IPv4 address. More...
 
virtual ConstHostCollection getAll6 (const asiolink::IOAddress &address) const
 Returns a collection of hosts using the specified IPv6 address. More...
 
virtual HostCollection getAll6 (const asiolink::IOAddress &address)
 Returns a collection of hosts using the specified IPv6 address. More...
 
virtual std::string getType () const
 Return backend type. More...
 
isc::data::ElementPtr toElement () const
 Unparse a configuration object. More...
 
- Public Member Functions inherited from isc::dhcp::BaseHostDataSource
virtual ~BaseHostDataSource ()
 Default destructor implementation. More...
 
virtual void commit ()
 Commit Transactions. More...
 
virtual void rollback ()
 Rollback Transactions. More...
 
- Public Member Functions inherited from isc::dhcp::WritableHostDataSource
virtual ~WritableHostDataSource ()
 Default destructor implementation. More...
 
- Public Member Functions inherited from isc::data::CfgToElement
virtual ~CfgToElement ()
 Destructor. More...
 

Additional Inherited Members

- Public Types inherited from isc::dhcp::BaseHostDataSource
enum  IdType { ID_HWADDR = 0, ID_DUID = 1 }
 Specifies the type of an identifier. More...
 

Detailed Description

Represents the host reservations specified in the configuration file.

This class holds a collection of the host reservations (Host objects) which can be retrieved using different search criteria.

In the typical case the reservations are searched using the client's MAC address or DUID and a subnet that the client is connected to. The reservations can be also retrieved using other parameters, such as reserved IP address.

The reservations are added to this object by the configuration parsers, when the new configuration is applied for the server. The reservations are retrieved by the HostMgr class when the server is allocating or renewing an address or prefix for the particular client.

Definition at line 37 of file cfg_hosts.h.

Constructor & Destructor Documentation

◆ ~CfgHosts()

virtual isc::dhcp::CfgHosts::~CfgHosts ( )
inlinevirtual

Destructor.

Definition at line 42 of file cfg_hosts.h.

Member Function Documentation

◆ add()

void isc::dhcp::CfgHosts::add ( const HostPtr host)
virtual

Adds a new host to the collection.

Parameters
hostPointer to the new Host object being added.
Exceptions
DuplicateHostIf a host for a particular HW address or DUID has already been added to the IPv4 or IPv6 subnet.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 439 of file cfg_hosts.cc.

References isc::dhcp::HOSTS_DBG_TRACE, isc::dhcp::hosts_logger, isc_throw, and LOG_DEBUG.

◆ del()

bool isc::dhcp::CfgHosts::del ( const SubnetID subnet_id,
const asiolink::IOAddress addr 
)
virtual

Attempts to delete a host by address.

This method supports both v4 and v6.

Todo:
: Not implemented.
Parameters
subnet_idsubnet identifier.
addrspecified address.
Todo:
: Implement host removal

Implements isc::dhcp::BaseHostDataSource.

Definition at line 597 of file cfg_hosts.cc.

References isc_throw.

◆ del4()

bool isc::dhcp::CfgHosts::del4 ( const SubnetID subnet_id,
const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
)
virtual

Attempts to delete a host by (subnet4-id, identifier, identifier-type)

This method supports v4 only.

Todo:
: Not implemented.
Parameters
subnet_idIPv4 Subnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
true if deletion was successful, false otherwise.
Todo:
: Implement host removal

Implements isc::dhcp::BaseHostDataSource.

Definition at line 616 of file cfg_hosts.cc.

References isc_throw.

◆ del6()

bool isc::dhcp::CfgHosts::del6 ( const SubnetID subnet_id,
const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
)
virtual

Attempts to delete a host by (subnet6-id, identifier, identifier-type)

This method supports v6 only.

Todo:
: Not implemented.
Parameters
subnet_idIPv6 Subnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
true if deletion was successful, false otherwise.
Todo:
: Implement host removal

Implements isc::dhcp::BaseHostDataSource.

Definition at line 644 of file cfg_hosts.cc.

References isc_throw.

◆ delAll4()

size_t isc::dhcp::CfgHosts::delAll4 ( const SubnetID subnet_id)
virtual

Attempts to delete all hosts for a given IPv4 subnet.

Parameters
subnet_idIdentifier of the subnet for which reservation should be deleted.
Returns
Number of deleted hosts.

Definition at line 604 of file cfg_hosts.cc.

References isc::dhcp::HOSTS_DBG_TRACE, isc::dhcp::hosts_logger, and LOG_DEBUG.

◆ delAll6()

size_t isc::dhcp::CfgHosts::delAll6 ( const SubnetID subnet_id)
virtual

Attempts to delete all hosts for a given IPv6 subnet.

Parameters
subnet_idIdentifier of the subnet for which reservation should be deleted.
Returns
Number of deleted hosts.

Definition at line 626 of file cfg_hosts.cc.

References isc::dhcp::HOSTS_DBG_TRACE, isc::dhcp::hosts_logger, and LOG_DEBUG.

◆ get4() [1/3]

ConstHostPtr isc::dhcp::CfgHosts::get4 ( const SubnetID subnet_id,
const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
) const
virtual

Returns a host connected to the IPv4 subnet.

Parameters
subnet_idSubnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
Const Host object for which reservation has been made using the specified identifier.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 183 of file cfg_hosts.cc.

◆ get4() [2/3]

HostPtr isc::dhcp::CfgHosts::get4 ( const SubnetID subnet_id,
const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
)
virtual

Returns a host connected to the IPv4 subnet.

Parameters
subnet_idSubnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
Non-const Host object for which reservation has been made using the specified identifier.

Implements isc::dhcp::WritableHostDataSource.

Definition at line 192 of file cfg_hosts.cc.

◆ get4() [3/3]

ConstHostPtr isc::dhcp::CfgHosts::get4 ( const SubnetID subnet_id,
const asiolink::IOAddress address 
) const
virtual

Returns a host connected to the IPv4 subnet and having a reservation for a specified IPv4 address.

Parameters
subnet_idSubnet identifier.
addressreserved IPv4 address.
Returns
Const Host object using a specified IPv4 address.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 201 of file cfg_hosts.cc.

References isc::dhcp::HOSTS_DBG_RESULTS, isc::dhcp::HOSTS_DBG_TRACE, isc::dhcp::hosts_logger, LOG_DEBUG, and isc::asiolink::IOAddress::toText().

+ Here is the call graph for this function:

◆ get6() [1/6]

ConstHostPtr isc::dhcp::CfgHosts::get6 ( const SubnetID subnet_id,
const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
) const
virtual

Returns a host connected to the IPv6 subnet.

Parameters
subnet_idSubnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
Const Host object for which reservation has been made using the specified identifier.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 225 of file cfg_hosts.cc.

◆ get6() [2/6]

HostPtr isc::dhcp::CfgHosts::get6 ( const SubnetID subnet_id,
const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
)
virtual

Returns a host connected to the IPv6 subnet.

Parameters
subnet_idSubnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
Non-const Host object for which reservation has been made using the specified identifier.

Implements isc::dhcp::WritableHostDataSource.

Definition at line 234 of file cfg_hosts.cc.

◆ get6() [3/6]

ConstHostPtr isc::dhcp::CfgHosts::get6 ( const asiolink::IOAddress prefix,
const uint8_t  prefix_len 
) const
virtual

Returns a host using the specified IPv6 prefix.

Parameters
prefixIPv6 prefix for which the Host object is searched.
prefix_lenIPv6 prefix length.
Returns
Const Host object for which specified prefix is reserved.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 243 of file cfg_hosts.cc.

◆ get6() [4/6]

HostPtr isc::dhcp::CfgHosts::get6 ( const asiolink::IOAddress prefix,
const uint8_t  prefix_len 
)
virtual

Returns a host using the specified IPv6 prefix.

Parameters
prefixIPv6 prefix for which the Host object is searched.
prefix_lenIPv6 prefix length.
Returns
Non-const Host object for which specified prefix is reserved.

Implements isc::dhcp::WritableHostDataSource.

Definition at line 248 of file cfg_hosts.cc.

◆ get6() [5/6]

ConstHostPtr isc::dhcp::CfgHosts::get6 ( const SubnetID subnet_id,
const asiolink::IOAddress address 
) const
virtual

Returns a host connected to the IPv6 subnet and having a reservation for a specified IPv6 address.

Parameters
subnet_idSubnet identifier.
addressreserved IPv6 address.
Returns
Const Host object using a specified IPv6 address.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 253 of file cfg_hosts.cc.

◆ get6() [6/6]

HostPtr isc::dhcp::CfgHosts::get6 ( const SubnetID subnet_id,
const asiolink::IOAddress address 
)
virtual

Returns a host connected to the IPv6 subnet and having a reservation for a specified IPv6 address.

Parameters
subnet_idSubnet identifier.
addressreserved IPv6 address.
Returns
Const Host object using a specified IPv6 address.

Implements isc::dhcp::WritableHostDataSource.

Definition at line 260 of file cfg_hosts.cc.

◆ getAll() [1/2]

ConstHostCollection isc::dhcp::CfgHosts::getAll ( const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
) const
virtual

Return all hosts connected to any subnet for which reservations have been made using a specified identifier.

This method returns all Host objects which represent reservations for a specified identifier. This method may return multiple hosts because a particular client may have reservations in multiple subnets.

Parameters
identifier_typeOne of the supported identifier types.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
Collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 27 of file cfg_hosts.cc.

◆ getAll() [2/2]

HostCollection isc::dhcp::CfgHosts::getAll ( const Host::IdentifierType identifier_type,
const uint8_t *  identifier_begin,
const size_t  identifier_len 
)
virtual

Non-const version of the getAll const method.

This method returns all Host objects which represent reservations for a specified identifier. This method may return multiple hosts because a particular client may have reservations in multiple subnets.

Parameters
identifier_typeOne of the supported identifier types.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
Collection of non-const Host objects.

Implements isc::dhcp::WritableHostDataSource.

Definition at line 39 of file cfg_hosts.cc.

◆ getAll4() [1/2]

ConstHostCollection isc::dhcp::CfgHosts::getAll4 ( const asiolink::IOAddress address) const
virtual

Returns a collection of hosts using the specified IPv4 address.

This method may return multiple Host objects if they are connected to different subnets.

Parameters
addressIPv4 address for which the Host object is searched.
Returns
Collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 50 of file cfg_hosts.cc.

◆ getAll4() [2/2]

HostCollection isc::dhcp::CfgHosts::getAll4 ( const asiolink::IOAddress address)
virtual

Returns a collection of hosts using the specified IPv4 address.

This method may return multiple Host objects if they are connected to different subnets.

Parameters
addressIPv4 address for which the Host object is searched.
Returns
Collection of const Host objects.

Implements isc::dhcp::WritableHostDataSource.

Definition at line 59 of file cfg_hosts.cc.

◆ getAll6() [1/2]

ConstHostCollection isc::dhcp::CfgHosts::getAll6 ( const asiolink::IOAddress address) const
virtual

Returns a collection of hosts using the specified IPv6 address.

This method may return multiple Host objects if they are connected to different subnets.

Parameters
addressIPv6 address for which the Host object is searched.
Returns
Collection of const Host objects.

Definition at line 68 of file cfg_hosts.cc.

◆ getAll6() [2/2]

HostCollection isc::dhcp::CfgHosts::getAll6 ( const asiolink::IOAddress address)
virtual

Returns a collection of hosts using the specified IPv6 address.

This method may return multiple Host objects if they are connected to different subnets.

Parameters
addressIPv6 address for which the Host object is searched.
Returns
Collection of const Host objects.

Definition at line 77 of file cfg_hosts.cc.

◆ getType()

virtual std::string isc::dhcp::CfgHosts::getType ( ) const
inlinevirtual

Return backend type.

Returns the type of the backend (e.g. "mysql", "memfile" etc.)

Returns
Type of the backend.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 293 of file cfg_hosts.h.

◆ toElement()

ElementPtr isc::dhcp::CfgHosts::toElement ( ) const
virtual

Unparse a configuration object.

host reservation lists are not autonomous so they are not returned directly but with the subnet where they are declared as:

[
{ "id": 123, "reservations": [ <resv1>, <resv2> ] },
{ "id": 456, "reservations": [ <resv3 ] },
...
]

isc::dhcp::CfgHostsList can be used to handle this

Returns
a pointer to unparsed configuration

Implements isc::data::CfgToElement.

Definition at line 654 of file cfg_hosts.cc.

References isc_throw.


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