Kea  1.5.0
pgsql_host_data_source.h
Go to the documentation of this file.
1 // Copyright (C) 2016-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 PGSQL_HOST_DATA_SOURCE_H
8 #define PGSQL_HOST_DATA_SOURCE_H
9 
11 #include <pgsql/pgsql_connection.h>
12 #include <pgsql/pgsql_exchange.h>
13 
14 namespace isc {
15 namespace dhcp {
16 
18 class PgSqlHostDataSourceImpl;
19 
36 public:
37 
61 
65  virtual ~PgSqlHostDataSource();
66 
100  virtual void add(const HostPtr& host);
101 
110  virtual bool del(const SubnetID& subnet_id, const asiolink::IOAddress& addr);
111 
124  virtual bool del4(const SubnetID& subnet_id,
125  const Host::IdentifierType& identifier_type,
126  const uint8_t* identifier_begin, const size_t identifier_len);
127 
140  virtual bool del6(const SubnetID& subnet_id,
141  const Host::IdentifierType& identifier_type,
142  const uint8_t* identifier_begin, const size_t identifier_len);
143 
157  virtual ConstHostCollection
158  getAll(const Host::IdentifierType& identifier_type,
159  const uint8_t* identifier_begin, const size_t identifier_len) const;
160 
169  virtual ConstHostCollection
170  getAll4(const asiolink::IOAddress& address) const;
171 
182  virtual ConstHostPtr
183  get4(const SubnetID& subnet_id, const Host::IdentifierType& identifier_type,
184  const uint8_t* identifier_begin, const size_t identifier_len) const;
185 
200  virtual ConstHostPtr
201  get4(const SubnetID& subnet_id, const asiolink::IOAddress& address) const;
202 
213  virtual ConstHostPtr
214  get6(const SubnetID& subnet_id, const Host::IdentifierType& identifier_type,
215  const uint8_t* identifier_begin, const size_t identifier_len) const;
216 
223  virtual ConstHostPtr
224  get6(const asiolink::IOAddress& prefix, const uint8_t prefix_len) const;
225 
233  virtual ConstHostPtr
234  get6(const SubnetID& subnet_id, const asiolink::IOAddress& address) const;
235 
242  virtual std::string getType() const {
243  return (std::string("postgresql"));
244  }
245 
249  virtual std::string getName() const;
250 
256  virtual std::string getDescription() const;
257 
271  virtual std::pair<uint32_t, uint32_t> getVersion() const;
272 
276  virtual void commit();
277 
281  virtual void rollback();
282 
283 private:
286 };
287 
288 }
289 }
290 
291 #endif // PGSQL_HOST_DATA_SOURCE_H
isc::dhcp::Host::IdentifierType
IdentifierType
Type of the host identifier.
Definition: host.h:252
isc::dhcp::PgSqlHostDataSource::del
virtual bool del(const SubnetID &subnet_id, const asiolink::IOAddress &addr)
Attempts to delete a host by (subnet-id, address)
Definition: pgsql_host_data_source.cc:2018
isc::dhcp::PgSqlHostDataSource::getDescription
virtual std::string getDescription() const
Returns description of the backend.
Definition: pgsql_host_data_source.cc:2237
pgsql_exchange.h
isc::dhcp::PgSqlHostDataSource::~PgSqlHostDataSource
virtual ~PgSqlHostDataSource()
Virtual destructor.
Definition: pgsql_host_data_source.cc:1968
isc::dhcp::PgSqlHostDataSource::rollback
virtual void rollback()
Rollback Transactions.
Definition: pgsql_host_data_source.cc:2254
isc::dhcp::PgSqlHostDataSource::getAll
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 iden...
Definition: pgsql_host_data_source.cc:2081
isc::dhcp::HostPtr
boost::shared_ptr< Host > HostPtr
Pointer to the Host object.
Definition: host.h:725
isc::dhcp::PgSqlHostDataSourceImpl
Implementation of the PgSqlHostDataSource.
Definition: pgsql_host_data_source.cc:1272
isc::dhcp::PgSqlHostDataSource::getVersion
virtual std::pair< uint32_t, uint32_t > getVersion() const
Returns backend version.
Definition: pgsql_host_data_source.cc:2242
isc::dhcp::PgSqlHostDataSource::getType
virtual std::string getType() const
Return backend type.
Definition: pgsql_host_data_source.h:242
isc
Defines the logger used by the top-level component of kea-dhcp-ddns.
Definition: agent_parser.cc:144
isc::dhcp::PgSqlHostDataSource::commit
virtual void commit()
Commit Transactions.
Definition: pgsql_host_data_source.cc:2247
base_host_data_source.h
isc::dhcp::BaseHostDataSource
Base interface for the classes implementing simple data source for host reservations.
Definition: base_host_data_source.h:57
isc::dhcp::PgSqlHostDataSource::get6
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.
Definition: pgsql_host_data_source.cc:2159
isc::dhcp::PgSqlHostDataSource::PgSqlHostDataSource
PgSqlHostDataSource(const db::DatabaseConnection::ParameterMap &parameters)
Constructor.
Definition: pgsql_host_data_source.cc:1964
isc::dhcp::PgSqlHostDataSource::getName
virtual std::string getName() const
Returns the name of the open database.
Definition: pgsql_host_data_source.cc:2227
isc::dhcp::PgSqlHostDataSource::add
virtual void add(const HostPtr &host)
Adds a new host to the collection.
Definition: pgsql_host_data_source.cc:1973
isc::dhcp::PgSqlHostDataSource
PostgreSQL Host Data Source.
Definition: pgsql_host_data_source.h:35
isc::dhcp::ConstHostCollection
std::vector< ConstHostPtr > ConstHostCollection
Collection of the const Host objects.
Definition: host.h:731
pgsql_connection.h
isc::dhcp::ConstHostPtr
boost::shared_ptr< const Host > ConstHostPtr
Const pointer to the Host object.
Definition: host.h:728
isc::dhcp::PgSqlHostDataSource::del4
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 type, identifier)
Definition: pgsql_host_data_source.cc:2040
isc::dhcp::SubnetID
uint32_t SubnetID
Unique identifier for a subnet (both v4 and v6)
Definition: lease.h:24
isc::db::DatabaseConnection::ParameterMap
std::map< std::string, std::string > ParameterMap
Database configuration parameter map.
Definition: database_connection.h:152
isc::dhcp::PgSqlHostDataSource::get4
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.
Definition: pgsql_host_data_source.cc:2117
isc::dhcp::PgSqlHostDataSource::getAll4
virtual ConstHostCollection getAll4(const asiolink::IOAddress &address) const
Returns a collection of hosts using the specified IPv4 address.
Definition: pgsql_host_data_source.cc:2101
isc::dhcp::PgSqlHostDataSource::del6
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 type, identifier)
Definition: pgsql_host_data_source.cc:2061