Kea  1.5.0
base_host_data_source.h
Go to the documentation of this file.
1 // Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC")
2 //
3 // This Source Code Form is subject to the terms of the Mozilla Public
4 // License, v. 2.0. If a copy of the MPL was not distributed with this
5 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 
7 #ifndef BASE_HOST_DATA_SOURCE_H
8 #define BASE_HOST_DATA_SOURCE_H
9 
10 #include <asiolink/io_address.h>
11 #include <dhcpsrv/host.h>
12 #include <exceptions/exceptions.h>
13 #include <boost/shared_ptr.hpp>
14 
15 #include <vector>
16 
17 namespace isc {
18 namespace dhcp {
19 
21 class DuplicateHost : public Exception {
22 public:
23  DuplicateHost(const char* file, size_t line, const char* what) :
24  isc::Exception(file, line, what) { };
25 };
26 
29 class ReservedAddress : public Exception {
30 public:
31  ReservedAddress(const char* file, size_t line, const char* what) :
32  isc::Exception(file, line, what) { };
33 };
34 
37 class BadHostAddress : public isc::BadValue {
38 public:
39  BadHostAddress(const char* file, size_t line, const char* what) :
40  isc::BadValue(file, line, what) { };
41 };
42 
58 public:
59 
69  enum IdType {
70  ID_HWADDR = 0,
71  ID_DUID = 1
72  };
73 
75  virtual ~BaseHostDataSource() { }
76 
90  virtual ConstHostCollection
91  getAll(const Host::IdentifierType& identifier_type,
92  const uint8_t* identifier_begin,
93  const size_t identifier_len) const = 0;
94 
103  virtual ConstHostCollection
104  getAll4(const asiolink::IOAddress& address) const = 0;
105 
116  virtual ConstHostPtr
117  get4(const SubnetID& subnet_id,
118  const Host::IdentifierType& identifier_type,
119  const uint8_t* identifier_begin,
120  const size_t identifier_len) const = 0;
121 
138  virtual ConstHostPtr
139  get4(const SubnetID& subnet_id,
140  const asiolink::IOAddress& address) const = 0;
141 
152  virtual ConstHostPtr
153  get6(const SubnetID& subnet_id,
154  const Host::IdentifierType& identifier_type,
155  const uint8_t* identifier_begin,
156  const size_t identifier_len) const = 0;
157 
164  virtual ConstHostPtr
165  get6(const asiolink::IOAddress& prefix, const uint8_t prefix_len) const = 0;
166 
174  virtual ConstHostPtr
175  get6(const SubnetID& subnet_id, const asiolink::IOAddress& address) const =
176  0;
177 
188  virtual void add(const HostPtr& host) = 0;
189 
198  virtual bool del(const SubnetID& subnet_id, const asiolink::IOAddress& addr) = 0;
199 
211  virtual bool del4(const SubnetID& subnet_id,
212  const Host::IdentifierType& identifier_type,
213  const uint8_t* identifier_begin, const size_t identifier_len) = 0;
214 
226  virtual bool del6(const SubnetID& subnet_id,
227  const Host::IdentifierType& identifier_type,
228  const uint8_t* identifier_begin, const size_t identifier_len) = 0;
229 
235  virtual std::string getType() const = 0;
236 
241  virtual void commit() {};
242 
247  virtual void rollback() {};
248 };
249 
251 typedef boost::shared_ptr<BaseHostDataSource> HostDataSourcePtr;
252 
254 typedef std::vector<HostDataSourcePtr> HostDataSourceList;
255 
256 }
257 }
258 
259 #endif // BASE_HOST_DATA_SOURCE_H
host.h
isc::dhcp::BaseHostDataSource::get6
virtual ConstHostPtr get6(const SubnetID &subnet_id, const asiolink::IOAddress &address) const =0
Returns a host connected to the IPv6 subnet and having a reservation for a specified IPv6 address or ...
isc::dhcp::BaseHostDataSource::getType
virtual std::string getType() const =0
Return backend type.
isc::dhcp::Host::IdentifierType
IdentifierType
Type of the host identifier.
Definition: host.h:252
isc::dhcp::BaseHostDataSource::get6
virtual ConstHostPtr get6(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const =0
Returns a host connected to the IPv6 subnet.
isc::dhcp::DuplicateHost
Exception thrown when the duplicate Host object is detected.
Definition: base_host_data_source.h:21
io_address.h
isc::dhcp::BaseHostDataSource::add
virtual void add(const HostPtr &host)=0
Adds a new host to the collection.
isc::dhcp::BaseHostDataSource::~BaseHostDataSource
virtual ~BaseHostDataSource()
Default destructor implementation.
Definition: base_host_data_source.h:75
isc::dhcp::BaseHostDataSource::get4
virtual ConstHostPtr get4(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const =0
Returns a host connected to the IPv4 subnet.
isc::dhcp::BaseHostDataSource::IdType
IdType
Specifies the type of an identifier.
Definition: base_host_data_source.h:69
isc::dhcp::HostPtr
boost::shared_ptr< Host > HostPtr
Pointer to the Host object.
Definition: host.h:725
isc::dhcp::ReservedAddress::ReservedAddress
ReservedAddress(const char *file, size_t line, const char *what)
Definition: base_host_data_source.h:31
isc::Exception
This is a base class for exceptions thrown from the DNS library module.
Definition: exceptions/exceptions.h:23
isc
Defines the logger used by the top-level component of kea-dhcp-ddns.
Definition: agent_parser.cc:144
isc::dhcp::BadHostAddress
Exception thrown when invalid IP address has been specified for Host.
Definition: base_host_data_source.h:37
isc::Exception::what
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Definition: exceptions/exceptions.cc:32
isc::dhcp::BaseHostDataSource::getAll
virtual ConstHostCollection getAll(const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len) const =0
Return all hosts connected to any subnet for which reservations have been made using a specified iden...
isc::BadValue
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
Definition: exceptions/exceptions.h:132
isc::dhcp::HostDataSourceList
std::vector< HostDataSourcePtr > HostDataSourceList
HostDataSource list.
Definition: base_host_data_source.h:254
isc::dhcp::BaseHostDataSource
Base interface for the classes implementing simple data source for host reservations.
Definition: base_host_data_source.h:57
isc::dhcp::DuplicateHost::DuplicateHost
DuplicateHost(const char *file, size_t line, const char *what)
Definition: base_host_data_source.h:23
isc::dhcp::ReservedAddress
Exception thrown when an address is already reserved by a Host object (DuplicateHost is same identity...
Definition: base_host_data_source.h:29
isc::dhcp::BaseHostDataSource::get4
virtual ConstHostPtr get4(const SubnetID &subnet_id, const asiolink::IOAddress &address) const =0
Returns a host connected to the IPv4 subnet and having a reservation for a specified IPv4 address.
isc::dhcp::BaseHostDataSource::del4
virtual bool del4(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)=0
Attempts to delete a host by (subnet-id4, identifier, identifier-type)
isc::dhcp::BaseHostDataSource::ID_HWADDR
@ ID_HWADDR
Hardware address.
Definition: base_host_data_source.h:70
isc::dhcp::BaseHostDataSource::get6
virtual ConstHostPtr get6(const asiolink::IOAddress &prefix, const uint8_t prefix_len) const =0
Returns a host using the specified IPv6 prefix.
isc::dhcp::BaseHostDataSource::getAll4
virtual ConstHostCollection getAll4(const asiolink::IOAddress &address) const =0
Returns a collection of hosts using the specified IPv4 address.
isc::dhcp::BaseHostDataSource::rollback
virtual void rollback()
Rollback Transactions.
Definition: base_host_data_source.h:247
isc::dhcp::HostDataSourcePtr
boost::shared_ptr< BaseHostDataSource > HostDataSourcePtr
HostDataSource pointer.
Definition: base_host_data_source.h:251
isc::dhcp::ConstHostCollection
std::vector< ConstHostPtr > ConstHostCollection
Collection of the const Host objects.
Definition: host.h:731
exceptions.h
isc::dhcp::ConstHostPtr
boost::shared_ptr< const Host > ConstHostPtr
Const pointer to the Host object.
Definition: host.h:728
isc::dhcp::BaseHostDataSource::commit
virtual void commit()
Commit Transactions.
Definition: base_host_data_source.h:241
isc::dhcp::SubnetID
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)
Definition: lease.h:24
isc::dhcp::BaseHostDataSource::ID_DUID
@ ID_DUID
DUID/client-id.
Definition: base_host_data_source.h:71
isc::dhcp::BadHostAddress::BadHostAddress
BadHostAddress(const char *file, size_t line, const char *what)
Definition: base_host_data_source.h:39
isc::dhcp::BaseHostDataSource::del
virtual bool del(const SubnetID &subnet_id, const asiolink::IOAddress &addr)=0
Attempts to delete a host by (subnet-id, address)
isc::dhcp::BaseHostDataSource::del6
virtual bool del6(const SubnetID &subnet_id, const Host::IdentifierType &identifier_type, const uint8_t *identifier_begin, const size_t identifier_len)=0
Attempts to delete a host by (subnet-id6, identifier, identifier-type)