Kea 3.1.1
isc::radius::RadiusBackend Class Reference

Host backend for Radius. More...

#include <radius_backend.h>

+ Inheritance diagram for isc::radius::RadiusBackend:

Public Member Functions

 RadiusBackend ()
 Constructor.
 
virtual ~RadiusBackend ()
 Destructor.
 
virtual void add (const isc::dhcp::HostPtr &host) override
 Adds a new host to the collection.
 
virtual bool del (const isc::dhcp::SubnetID &subnet_id, const isc::asiolink::IOAddress &addr) override
 Attempts to delete a host by (subnet-id, address)
 
virtual bool del4 (const isc::dhcp::SubnetID &subnet_id, const isc::dhcp::Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) override
 Attempts to delete a host by (subnet-id4, identifier, identifier-type)
 
virtual bool del6 (const isc::dhcp::SubnetID &subnet_id, const isc::dhcp::Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) override
 Attempts to delete a host by (subnet-id6, identifier, identifier-type)
 
virtual isc::dhcp::ConstHostPtr get4 (const isc::dhcp::SubnetID &subnet_id, const isc::asiolink::IOAddress &address) const override
 Returns a host connected to the IPv4 subnet and having a reservation for a specified IPv4 address.
 
virtual isc::dhcp::ConstHostPtr get4 (const isc::dhcp::SubnetID &subnet_id, const isc::dhcp::Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const override
 Returns a host connected to the IPv4 subnet.
 
virtual isc::dhcp::ConstHostPtr get6 (const isc::asiolink::IOAddress &prefix, const uint8_t prefix_len) const override
 Returns a host using the specified IPv6 prefix.
 
virtual isc::dhcp::ConstHostPtr get6 (const isc::dhcp::SubnetID &subnet_id, const isc::asiolink::IOAddress &address) const override
 Returns a host connected to the IPv6 subnet and having a reservation for a specified IPv6 address or prefix.
 
virtual isc::dhcp::ConstHostPtr get6 (const isc::dhcp::SubnetID &subnet_id, const isc::dhcp::Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const override
 Returns a host connected to the IPv6 subnet.
 
virtual isc::dhcp::ConstHostCollection getAll (const isc::dhcp::Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const override
 From base class.
 
virtual isc::dhcp::ConstHostCollection getAll4 (const isc::asiolink::IOAddress &address) const override
 Returns a collection of hosts using the specified IPv4 address.
 
virtual isc::dhcp::ConstHostCollection getAll4 (const isc::dhcp::SubnetID &subnet_id) const override
 Return all hosts in a specified DHCPv4 subnet.
 
virtual isc::dhcp::ConstHostCollection getAll4 (const isc::dhcp::SubnetID &subnet_id, const isc::asiolink::IOAddress &address) const override
 Returns all hosts connected to the IPv4 subnet and having a reservation for a specified address.
 
virtual dhcp::ConstHostCollection getAll6 (const isc::asiolink::IOAddress &address) const override
 Returns a collection of hosts using the specified IPv6 address/prefix.
 
virtual isc::dhcp::ConstHostCollection getAll6 (const isc::dhcp::SubnetID &subnet_id) const override
 Return all hosts in a specified DHCPv6 subnet.
 
virtual isc::dhcp::ConstHostCollection getAll6 (const isc::dhcp::SubnetID &subnet_id, const isc::asiolink::IOAddress &address) const override
 Returns all hosts connected to the IPv6 subnet and having a reservation for a specified address or delegated prefix (lease).
 
virtual isc::dhcp::ConstHostCollection getAllbyHostname (const std::string &hostname) const override
 Return all hosts with a hostname.
 
virtual isc::dhcp::ConstHostCollection getAllbyHostname4 (const std::string &hostname, const isc::dhcp::SubnetID &subnet_id) const override
 Return all hosts with a hostname in a DHCPv4 subnet.
 
virtual isc::dhcp::ConstHostCollection getAllbyHostname6 (const std::string &hostname, const isc::dhcp::SubnetID &subnet_id) const override
 Return all hosts with a hostname in a DHCPv6 subnet.
 
virtual isc::dhcp::ConstHostCollection getPage4 (const isc::dhcp::SubnetID &subnet_id, size_t &source_index, uint64_t lower_host_id, const dhcp::HostPageSize &page_size) const override
 Return range of hosts in a specified DHCPv4 subnet.
 
virtual isc::dhcp::ConstHostCollection getPage4 (size_t &source_index, uint64_t lower_host_id, const dhcp::HostPageSize &page_size) const override
 Return range of hosts.
 
virtual isc::dhcp::ConstHostCollection getPage6 (const isc::dhcp::SubnetID &subnet_id, size_t &source_index, uint64_t lower_host_id, const dhcp::HostPageSize &page_size) const override
 Return range of hosts in a specified DHCPv6 subnet.
 
virtual isc::dhcp::ConstHostCollection getPage6 (size_t &source_index, uint64_t lower_host_id, const dhcp::HostPageSize &page_size) const override
 Return range of hosts.
 
virtual std::string getType () const override
 Return backend type.
 
size_t getUnexpected4 () const
 Return unexpected calls for IPv4.
 
size_t getUnexpected6 () const
 Return unexpected calls for IPv6.
 
virtual bool setIPReservationsUnique (const bool unique) override
 Controls whether IP reservations are unique or non-unique.
 
- Public Member Functions inherited from isc::dhcp::BaseHostDataSource
virtual ~BaseHostDataSource ()
 Default destructor implementation.
 
virtual void commit ()
 Commit Transactions.
 
virtual isc::db::DatabaseConnection::ParameterMap getParameters () const
 Return backend parameters.
 
virtual bool isUnusable ()
 Flag which indicates if the host manager has at least one unusable connection.
 
virtual void rollback ()
 Rollback Transactions.
 
virtual void update (HostPtr const &host)
 Attempts to update an existing host entry.
 

Protected Attributes

boost::shared_ptr< RadiusBackendImplimpl_
 Implementation.
 

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

Host backend for Radius.

This backend handles no data. It can be called when:

  • an identifier type other than the configured one is used
  • by the hook for a new client so not yet in the host cache It is a soft error to call it in another case.

Definition at line 23 of file radius_backend.h.

Constructor & Destructor Documentation

◆ RadiusBackend()

isc::radius::RadiusBackend::RadiusBackend ( )

Constructor.

Definition at line 23 of file radius_backend.cc.

References impl_.

◆ ~RadiusBackend()

isc::radius::RadiusBackend::~RadiusBackend ( )
virtual

Destructor.

Definition at line 26 of file radius_backend.cc.

Member Function Documentation

◆ add()

void isc::radius::RadiusBackend::add ( const isc::dhcp::HostPtr & host)
overridevirtual

Adds a new host to the collection.

The implementations of this method should guard against duplicate reservations for the same host, where possible. For example, when the reservation for the same HW address and subnet id is added twice, the implementation should throw an exception. Note, that usually it is impossible to guard against adding duplicated host, where one instance is identified by HW address, another one by DUID.

Not implemented.

Parameters
hostPointer to the new Host object being added.
Note
does nothing, in particular does not throw so the entry can be added to the host cache.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 152 of file radius_backend.cc.

◆ del()

bool isc::radius::RadiusBackend::del ( const isc::dhcp::SubnetID & subnet_id,
const isc::asiolink::IOAddress & addr )
overridevirtual

Attempts to delete a host by (subnet-id, address)

Not implemented for Radius.

Parameters
subnet_idsubnet identifier.
addrspecified address.
Returns
false.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 156 of file radius_backend.cc.

◆ del4()

bool isc::radius::RadiusBackend::del4 ( const isc::dhcp::SubnetID & subnet_id,
const isc::dhcp::Host::IdentifierType & identifier_type,
const uint8_t * identifier_begin,
const size_t identifier_len )
overridevirtual

Attempts to delete a host by (subnet-id4, identifier, identifier-type)

Not implemented for Radius.

Parameters
subnet_idIPv4 Subnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
false.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 162 of file radius_backend.cc.

◆ del6()

bool isc::radius::RadiusBackend::del6 ( const isc::dhcp::SubnetID & subnet_id,
const isc::dhcp::Host::IdentifierType & identifier_type,
const uint8_t * identifier_begin,
const size_t identifier_len )
overridevirtual

Attempts to delete a host by (subnet-id6, identifier, identifier-type)

Not implemented for Radius.

Parameters
subnet_idIPv6 Subnet identifier.
identifier_typeIdentifier type.
identifier_beginPointer to a beginning of a buffer containing an identifier.
identifier_lenIdentifier length.
Returns
false.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 170 of file radius_backend.cc.

◆ get4() [1/2]

ConstHostPtr isc::radius::RadiusBackend::get4 ( const isc::dhcp::SubnetID & subnet_id,
const isc::asiolink::IOAddress & address ) const
overridevirtual

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

Not implemented.

Parameters
subnet_idSubnet identifier.
addressreserved IPv4 address.
Returns
null.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 108 of file radius_backend.cc.

◆ get4() [2/2]

ConstHostPtr isc::radius::RadiusBackend::get4 ( const isc::dhcp::SubnetID & subnet_id,
const isc::dhcp::Host::IdentifierType & identifier_type,
const uint8_t * identifier_begin,
const size_t identifier_len ) const
overridevirtual

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 99 of file radius_backend.cc.

References impl_.

◆ get6() [1/3]

ConstHostPtr isc::radius::RadiusBackend::get6 ( const isc::asiolink::IOAddress & prefix,
const uint8_t prefix_len ) const
overridevirtual

Returns a host using the specified IPv6 prefix.

Not implemented.

Parameters
prefixIPv6 prefix for which the Host object is searched.
prefix_lenIPv6 prefix length.
Returns
null.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 129 of file radius_backend.cc.

◆ get6() [2/3]

ConstHostPtr isc::radius::RadiusBackend::get6 ( const isc::dhcp::SubnetID & subnet_id,
const isc::asiolink::IOAddress & address ) const
overridevirtual

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

Not implemented.

Parameters
subnet_idSubnet identifier.
addressreserved IPv6 address/prefix.
Returns
null.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 135 of file radius_backend.cc.

◆ get6() [3/3]

ConstHostPtr isc::radius::RadiusBackend::get6 ( const isc::dhcp::SubnetID & subnet_id,
const isc::dhcp::Host::IdentifierType & identifier_type,
const uint8_t * identifier_begin,
const size_t identifier_len ) const
overridevirtual

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 120 of file radius_backend.cc.

References impl_.

◆ getAll()

ConstHostCollection isc::radius::RadiusBackend::getAll ( const isc::dhcp::Host::IdentifierType & identifier_type,
const uint8_t * identifier_begin,
const size_t identifier_len ) const
overridevirtual

From base class.

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

Not supported.

Returns
Empty collection.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 30 of file radius_backend.cc.

◆ getAll4() [1/3]

ConstHostCollection isc::radius::RadiusBackend::getAll4 ( const isc::asiolink::IOAddress & address) const
overridevirtual

Returns a collection of hosts using the specified IPv4 address.

Not supported.

Parameters
addressIPv4 address for which the Host object is searched.
Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 94 of file radius_backend.cc.

◆ getAll4() [2/3]

ConstHostCollection isc::radius::RadiusBackend::getAll4 ( const isc::dhcp::SubnetID & subnet_id) const
overridevirtual

Return all hosts in a specified DHCPv4 subnet.

Not supported.

Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 37 of file radius_backend.cc.

◆ getAll4() [3/3]

ConstHostCollection isc::radius::RadiusBackend::getAll4 ( const isc::dhcp::SubnetID & subnet_id,
const isc::asiolink::IOAddress & address ) const
overridevirtual

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

Parameters
subnet_idSubnet identifier.
addressreserved IPv4 address.
Returns
Empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 114 of file radius_backend.cc.

◆ getAll6() [1/3]

ConstHostCollection isc::radius::RadiusBackend::getAll6 ( const isc::asiolink::IOAddress & address) const
overridevirtual

Returns a collection of hosts using the specified IPv6 address/prefix.

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
Empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 147 of file radius_backend.cc.

◆ getAll6() [2/3]

ConstHostCollection isc::radius::RadiusBackend::getAll6 ( const isc::dhcp::SubnetID & subnet_id) const
overridevirtual

Return all hosts in a specified DHCPv6 subnet.

Not supported.

Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 42 of file radius_backend.cc.

◆ getAll6() [3/3]

ConstHostCollection isc::radius::RadiusBackend::getAll6 ( const isc::dhcp::SubnetID & subnet_id,
const isc::asiolink::IOAddress & address ) const
overridevirtual

Returns all hosts connected to the IPv6 subnet and having a reservation for a specified address or delegated prefix (lease).

Parameters
subnet_idSubnet identifier.
addressreserved IPv6 address/prefix.
Returns
Empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 141 of file radius_backend.cc.

◆ getAllbyHostname()

ConstHostCollection isc::radius::RadiusBackend::getAllbyHostname ( const std::string & hostname) const
overridevirtual

Return all hosts with a hostname.

This method returns all Host objects which represent reservations using a specified hostname.

Parameters
hostnameThe lower case hostname.
Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 47 of file radius_backend.cc.

◆ getAllbyHostname4()

ConstHostCollection isc::radius::RadiusBackend::getAllbyHostname4 ( const std::string & hostname,
const isc::dhcp::SubnetID & subnet_id ) const
overridevirtual

Return all hosts with a hostname in a DHCPv4 subnet.

This method returns all Host objects which represent reservations using a specified hostname in a specified subnet.

Parameters
hostnameThe lower case hostname.
subnet_idSubnet identifier.
Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 52 of file radius_backend.cc.

◆ getAllbyHostname6()

ConstHostCollection isc::radius::RadiusBackend::getAllbyHostname6 ( const std::string & hostname,
const isc::dhcp::SubnetID & subnet_id ) const
overridevirtual

Return all hosts with a hostname in a DHCPv6 subnet.

This method returns all Host objects which represent reservations using a specified hostname in a specified subnet.

Parameters
hostnameThe lower case hostname.
subnet_idSubnet identifier.
Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 58 of file radius_backend.cc.

◆ getPage4() [1/2]

isc::dhcp::ConstHostCollection isc::radius::RadiusBackend::getPage4 ( const isc::dhcp::SubnetID & subnet_id,
size_t & source_index,
uint64_t lower_host_id,
const dhcp::HostPageSize & page_size ) const
overridevirtual

Return range of hosts in a specified DHCPv4 subnet.

Not supported.

Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 64 of file radius_backend.cc.

◆ getPage4() [2/2]

isc::dhcp::ConstHostCollection isc::radius::RadiusBackend::getPage4 ( size_t & source_index,
uint64_t lower_host_id,
const dhcp::HostPageSize & page_size ) const
overridevirtual

Return range of hosts.

Not supported.

Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 80 of file radius_backend.cc.

◆ getPage6() [1/2]

isc::dhcp::ConstHostCollection isc::radius::RadiusBackend::getPage6 ( const isc::dhcp::SubnetID & subnet_id,
size_t & source_index,
uint64_t lower_host_id,
const dhcp::HostPageSize & page_size ) const
overridevirtual

Return range of hosts in a specified DHCPv6 subnet.

Not supported.

Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 72 of file radius_backend.cc.

◆ getPage6() [2/2]

isc::dhcp::ConstHostCollection isc::radius::RadiusBackend::getPage6 ( size_t & source_index,
uint64_t lower_host_id,
const dhcp::HostPageSize & page_size ) const
overridevirtual

Return range of hosts.

Not supported.

Returns
Always returns an empty collection of const Host objects.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 87 of file radius_backend.cc.

◆ getType()

virtual std::string isc::radius::RadiusBackend::getType ( ) const
inlineoverridevirtual

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 315 of file radius_backend.h.

◆ getUnexpected4()

size_t isc::radius::RadiusBackend::getUnexpected4 ( ) const

Return unexpected calls for IPv4.

Definition at line 187 of file radius_backend.cc.

References impl_.

◆ getUnexpected6()

size_t isc::radius::RadiusBackend::getUnexpected6 ( ) const

Return unexpected calls for IPv6.

Definition at line 192 of file radius_backend.cc.

References impl_.

◆ setIPReservationsUnique()

bool isc::radius::RadiusBackend::setIPReservationsUnique ( const bool unique)
overridevirtual

Controls whether IP reservations are unique or non-unique.

In a typical case, the IP reservations are unique and backends verify prior to adding a host reservation to the database that the reservation for a given IP address does not exist. In some cases it may be required to allow non-unique IP reservations, e.g. in the case when a host has several interfaces and independently of which interface is used by this host to communicate with the DHCP server the same IP address should be assigned. In this case the unique value should be set to false to disable the checks for uniqueness on the backend side.

Parameters
uniqueboolean flag indicating if the IP reservations must be unique within the subnet or can be non-unique.
Returns
true when addresses must be unique, false otherwise because this backend does not support specifying the same IP address in multiple host reservations.

Implements isc::dhcp::BaseHostDataSource.

Definition at line 178 of file radius_backend.cc.

Member Data Documentation

◆ impl_

boost::shared_ptr<RadiusBackendImpl> isc::radius::RadiusBackend::impl_
protected

Implementation.

Definition at line 345 of file radius_backend.h.

Referenced by RadiusBackend(), get4(), get6(), getUnexpected4(), and getUnexpected6().


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