Kea 3.1.1
blq_service.h
Go to the documentation of this file.
1// Copyright (C) 2022-2025 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 BLQ_SERVICE_H
8#define BLQ_SERVICE_H
9
11#include <cc/data.h>
12#include <cc/simple_parser.h>
14#include <lease_query_impl.h>
15#include <mt_lease_query_mgr.h>
16#include <boost/noncopyable.hpp>
17
18namespace isc {
19namespace lease_query {
20
23
25typedef boost::shared_ptr<BulkLeaseQueryService> BulkLeaseQueryServicePtr;
26
27// @brief Multi-threaded Lease Query listener manager singleton class.
28class BulkLeaseQueryService : boost::noncopyable {
29public:
30
33 public:
39 AdvancedConfig(uint16_t family)
40 : family_(family),
44 lease_query_ip_(asiolink::IOAddress(family == AF_INET ?
45 "127.0.0.1" : "::1")),
46 lease_query_tcp_port_(family == AF_INET ? 67 : 547),
53 cert_file_(),
54 key_file_(),
55 cert_required_(true) {
56 }
57
62 void parse(isc::data::ConstElementPtr advanced);
63
66
68 uint16_t family_;
69
72
75
78
81
84
87
90
93
96
99
101 std::string trust_anchor_;
102
104 std::string cert_file_;
105
107 std::string key_file_;
108
111 };
112
114 virtual ~BulkLeaseQueryService();
115
117 static void reset();
118
124 static void create(LeaseQueryImpl* impl,
126
130
134 static void doStartListener();
135
138
140 uint16_t getFamily() const {
141 return (config_.family_);
142 }
143
145 bool getBulkQueryEnabled() const {
146 return (config_.bulk_query_enabled_);
147 }
148
151 return (config_.active_query_enabled_);
152 }
153
156 return (config_.extended_info_tables_enabled_);
157 }
158
161 return (config_.lease_query_ip_);
162 }
163
165 uint16_t getLeaseQueryTcpPort() const {
166 return (config_.lease_query_tcp_port_);
167 }
168
170 size_t getMaxBulkQueryThreads() const {
171 return (config_.max_bulk_query_threads_);
172 }
173
177 void setMaxBulkQueryThreads(size_t max_bulk_query_threads) {
178 config_.max_bulk_query_threads_ = max_bulk_query_threads;
179 }
180
183 return (config_.max_requester_connections_);
184 }
185
190 void setMaxRequesterConnections(size_t max_requester_connections);
191
193 size_t getMaxConcurrentQueries() const {
194 return (config_.max_concurrent_queries_);
195 }
196
200 void setMaxConcurrentQueries(size_t max_concurrent_queries) {
201 config_.max_concurrent_queries_ = max_concurrent_queries;
202 }
203
206 return (config_.max_requester_idle_time_);
207 }
208
210 size_t getMaxLeasePerFetch() const {
211 return (config_.max_leases_per_fetch_);
212 }
213
218 void setMaxLeasePerFetch(size_t max_leases_per_fetch);
220
227
233 void startListener();
234
239 void pauseListener();
240
245 void resumeListener();
246
251 void stopListener();
252
258 static bool acceptFilter(const boost::asio::ip::tcp::endpoint& endpoint);
259
260private:
266 const AdvancedConfig& config);
267
269 static BulkLeaseQueryServicePtr& getBulkLeaseQueryServicePtr();
270
272 LeaseQueryImpl* impl_;
273
275 AdvancedConfig config_;
276
278 MtLeaseQueryListenerMgrPtr mt_listener_mgr_;
279};
280
281} // namespace isc::lease_query
282} // namespace isc
283
284#endif // BLQ_SERVICE_H
bool bulk_query_enabled_
Bulk query flag (default false).
Definition blq_service.h:71
std::string cert_file_
TLS server certificate file name (not yet used).
size_t max_concurrent_queries_
Maximum number of concurrent queries per connection.
Definition blq_service.h:92
std::string key_file_
TLS server private key file name (not yet used).
size_t max_leases_per_fetch_
Maximum number of leases per fetch (default 100).
Definition blq_service.h:98
size_t max_bulk_query_threads_
Maximum number of bulk query processing threads (default 0).
Definition blq_service.h:86
std::string trust_anchor_
TLS trust anchor (not yet used).
isc::asiolink::IOAddress lease_query_ip_
Lease query IP (default 127.0.0.1 or ::1).
Definition blq_service.h:80
long max_requester_idle_time_
Maximum requester idle time (default 300 seconds).
Definition blq_service.h:95
bool extended_info_tables_enabled_
Extended info tables flag (default same as Bulk query).
Definition blq_service.h:77
bool active_query_enabled_
Active query flag (always false).
Definition blq_service.h:74
bool cert_required_
TLS client certificate required flag (not yet used).
static const isc::data::SimpleKeywords CONFIG_KEYWORDS
Keywords for advanced configuration.
Definition blq_service.h:65
size_t max_requester_connections_
Maximum number of requester connections (default 10).
Definition blq_service.h:89
void parse(isc::data::ConstElementPtr advanced)
Parse the advanced argument.
uint16_t lease_query_tcp_port_
Lease query TCP port (default 67 or 547).
Definition blq_service.h:83
uint16_t family_
Protocol family of the list (AF_INET or AF_INET6).
Definition blq_service.h:68
bool getActiveQueryEnabled() const
Returns the active query enabled flag.
void setMaxConcurrentQueries(size_t max_concurrent_queries)
Sets the maximum number of concurrent queries per connection.
bool getBulkQueryEnabled() const
Returns the bulk query enabled flag.
void checkListenerPausePermission()
Check listener current thread permissions to perform thread pool state transition.
const isc::asiolink::IOAddress & getLeaseQueryIp() const
Returns the lease query IP address.
bool getExtendedInfoTablesEnabled() const
Returns the extended info tables enabled flag.
virtual ~BulkLeaseQueryService()
Destructor.
uint16_t getLeaseQueryTcpPort() const
Returns the lease query TCP port.
static bool acceptFilter(const boost::asio::ip::tcp::endpoint &endpoint)
TCP connection accept filter.
void pauseListener()
Pauses listener thread pool operations.
static BulkLeaseQueryServicePtr instance()
Returns a pointer to the sole instance of the BulkLeaseQueryService, can return null.
size_t getMaxBulkQueryThreads() const
Returns the maximum number of bulk query processing threads.
size_t getMaxLeasePerFetch() const
Returns the maximum number of leases per fetch.
size_t getMaxRequesterConnections() const
Returns the maximum number of requester connections.
uint16_t getFamily() const
Configuration set/get methods.
static void reset()
Reset the sole instance of BulkLeaseQueryService.
void stopListener()
Stop the listener instance.
size_t getMaxConcurrentQueries() const
Returns the maximum number of concurrent queries per connection.
long getMaxRequesterIdleTime() const
Returns the maximum requester idle time.
void resumeListener()
Resumes listener thread pool operations.
void setMaxRequesterConnections(size_t max_requester_connections)
Sets the maximum number of requester connections.
static void create(LeaseQueryImpl *impl, isc::data::ConstElementPtr advanced)
Create a new instance of the BulkLeaseQueryService.
void setMaxLeasePerFetch(size_t max_leases_per_fetch)
Sets the maximum number of leases per fetch.
void setMaxBulkQueryThreads(size_t max_bulk_query_threads)
Sets the maximum number of bulk query processing threads.
void startListener()
Start the listener instance.
static void doStartListener()
Start the listener.
Provides configuration and control flow for processing queries.
boost::shared_ptr< const Element > ConstElementPtr
Definition data.h:29
std::map< std::string, isc::data::Element::types > SimpleKeywords
This specifies all accepted keywords with their types.
boost::shared_ptr< MtLeaseQueryListenerMgr > MtLeaseQueryListenerMgrPtr
Defines a shared pointer to MtLeaseQueryListenerMgr.
boost::shared_ptr< BulkLeaseQueryService > BulkLeaseQueryServicePtr
Defines a shared pointer to BulkLeaseQueryService.
Definition blq_service.h:25
Defines the logger used by the top-level component of kea-lfc.