Kea 3.3.3
blq_service.h
Go to the documentation of this file.
1// Copyright (C) 2022-2026 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>
16
17#include <boost/noncopyable.hpp>
18
19namespace isc {
20namespace lease_query {
21
24
26typedef boost::shared_ptr<BulkLeaseQueryService> BulkLeaseQueryServicePtr;
27
28// @brief Multi-threaded Lease Query listener manager singleton class.
29class BulkLeaseQueryService : boost::noncopyable {
30public:
31
34 public:
40 AdvancedConfig(uint16_t family)
41 : family_(family),
45 lease_query_ip_(asiolink::IOAddress(family == AF_INET ?
46 "127.0.0.1" : "::1")),
47 lease_query_tcp_port_(family == AF_INET ? 67 : 547),
54 cert_file_(),
55 key_file_(),
56 cert_required_(true) {
57 }
58
63 void parse(isc::data::ConstElementPtr advanced);
64
67
69 uint16_t family_;
70
73
76
79
82
85
88
91
94
97
100
102 std::string trust_anchor_;
103
105 std::string cert_file_;
106
108 std::string key_file_;
109
112 };
113
115 virtual ~BulkLeaseQueryService();
116
118 static void reset();
119
125 static void create(LeaseQueryImpl* impl,
127
131
135 static void doStartListener();
136
139
141 uint16_t getFamily() const {
142 return (config_.family_);
143 }
144
146 bool getBulkQueryEnabled() const {
147 return (config_.bulk_query_enabled_);
148 }
149
152 return (config_.active_query_enabled_);
153 }
154
157 return (config_.extended_info_tables_enabled_);
158 }
159
162 return (config_.lease_query_ip_);
163 }
164
166 uint16_t getLeaseQueryTcpPort() const {
167 return (config_.lease_query_tcp_port_);
168 }
169
171 size_t getMaxBulkQueryThreads() const {
172 return (config_.max_bulk_query_threads_);
173 }
174
178 void setMaxBulkQueryThreads(size_t max_bulk_query_threads) {
179 config_.max_bulk_query_threads_ = max_bulk_query_threads;
180 }
181
184 return (config_.max_requester_connections_);
185 }
186
191 void setMaxRequesterConnections(size_t max_requester_connections);
192
194 size_t getMaxConcurrentQueries() const {
195 return (config_.max_concurrent_queries_);
196 }
197
201 void setMaxConcurrentQueries(size_t max_concurrent_queries) {
202 config_.max_concurrent_queries_ = max_concurrent_queries;
203 }
204
207 return (config_.max_requester_idle_time_);
208 }
209
211 size_t getMaxLeasePerFetch() const {
212 return (config_.max_leases_per_fetch_);
213 }
214
219 void setMaxLeasePerFetch(size_t max_leases_per_fetch);
221
228
234 void startListener();
235
240 void pauseListener();
241
246 void resumeListener();
247
252 void stopListener();
253
259 static bool acceptFilter(const boost::asio::ip::tcp::endpoint& endpoint);
260
261private:
267 const AdvancedConfig& config);
268
270 static BulkLeaseQueryServicePtr& getBulkLeaseQueryServicePtr();
271
273 LeaseQueryImpl* impl_;
274
276 AdvancedConfig config_;
277
279 MtLeaseQueryListenerMgrPtr mt_listener_mgr_;
280};
281
282} // namespace isc::lease_query
283} // namespace isc
284
285#endif // BLQ_SERVICE_H
bool bulk_query_enabled_
Bulk query flag (default false).
Definition blq_service.h:72
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:93
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:99
size_t max_bulk_query_threads_
Maximum number of bulk query processing threads (default 0).
Definition blq_service.h:87
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:81
long max_requester_idle_time_
Maximum requester idle time (default 300 seconds).
Definition blq_service.h:96
bool extended_info_tables_enabled_
Extended info tables flag (default same as Bulk query).
Definition blq_service.h:78
bool active_query_enabled_
Active query flag (always false).
Definition blq_service.h:75
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:66
size_t max_requester_connections_
Maximum number of requester connections (default 10).
Definition blq_service.h:90
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:84
uint16_t family_
Protocol family of the list (AF_INET or AF_INET6).
Definition blq_service.h:69
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:30
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:26
Defines the logger used by the top-level component of kea-lfc.