Kea 3.2.0-git
ctrl_dhcp4_srv.h
Go to the documentation of this file.
1// Copyright (C) 2012-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 CTRL_DHCPV4_SRV_H
8#define CTRL_DHCPV4_SRV_H
9
11#include <asiolink/asiolink.h>
12#include <cc/data.h>
14#include <util/reconnect_ctl.h>
15#include <dhcpsrv/lease_mgr.h>
16#include <dhcpsrv/timer_mgr.h>
17#include <dhcp4/dhcp4_srv.h>
18
19namespace isc {
20namespace dhcp {
21
27public:
28
33 ControlledDhcpv4Srv(uint16_t server_port = DHCP4_SERVER_PORT,
34 uint16_t client_port = 0);
35
37 virtual ~ControlledDhcpv4Srv();
38
45 void init(const std::string& config_file);
46
64 loadConfigFile(const std::string& file_name);
65
70 void cleanup();
71
74 virtual void shutdownServer(int exit_value);
75
77 bool getShutdown() const;
78
93
103
114
119 return (server_);
120 }
121
122protected:
129 static void sessionReader(void);
130
140 commandShutdownHandler(const std::string& command,
142
153 commandConfigReloadHandler(const std::string& command,
155
165 commandConfigGetHandler(const std::string& command,
167
177 commandConfigHashGetHandler(const std::string& command,
179
194 commandConfigWriteHandler(const std::string& command,
196
207 commandConfigSetHandler(const std::string& command,
209
220 commandConfigTestHandler(const std::string& command,
222
231 commandDhcpDisableHandler(const std::string& command,
233
241 commandDhcpEnableHandler(const std::string& command,
243
253 commandInterfaceListHandler(const std::string& command,
255
265 commandInterfaceRedetectHandler(const std::string& command,
267
277 commandInterfaceAddHandler(const std::string& command,
279
290 commandVersionGetHandler(const std::string& command,
292
302 commandBuildReportHandler(const std::string& command,
304
319 commandLeasesReclaimHandler(const std::string& command,
321
332 commandSubnet4SelectTestHandler(const std::string& command,
334
345 commandSubnet4o6SelectTestHandler(const std::string& command,
347
357 commandServerTagGetHandler(const std::string& command,
359
370 commandConfigBackendPullHandler(const std::string& command,
372
382 commandStatusGetHandler(const std::string& command,
384
395 commandStatisticSetMaxSampleCountAllHandler(const std::string& command,
397
408 commandStatisticSetMaxSampleAgeAllHandler(const std::string& command,
410
421 commandLfcStartHandler(const std::string& command,
423
424private:
441 void reclaimExpiredLeases(const size_t max_leases, const uint16_t timeout,
442 const bool remove_lease,
443 const uint16_t max_unwarned_cycles);
444
453 void deleteExpiredReclaimedLeases(const uint32_t secs);
454
472 bool dbLostCallback(util::ReconnectCtlPtr db_reconnect_ctl);
473
485 bool dbRecoveredCallback(util::ReconnectCtlPtr db_reconnect_ctl);
486
497 bool dbFailedCallback(util::ReconnectCtlPtr db_reconnect_ctl);
498
506 void openSocketsFailedCallback(util::ReconnectCtlPtr reconnect_ctl);
507
519 void cbFetchUpdates(const SrvConfigPtr& srv_cfg,
520 boost::shared_ptr<unsigned> failure_count);
521
526 static ControlledDhcpv4Srv* server_;
527
532 TimerMgrPtr timer_mgr_;
533};
534
535} // namespace dhcp
536} // namespace isc
537
538#endif
isc::data::ConstElementPtr commandConfigReloadHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'config-reload' command.
isc::data::ConstElementPtr commandLeasesReclaimHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'leases-reclaim' command.
isc::data::ConstElementPtr commandLfcStartHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'kea-lfc-start' command
virtual ~ControlledDhcpv4Srv()
Destructor.
isc::data::ConstElementPtr commandConfigSetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-set' command
isc::data::ConstElementPtr commandStatusGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'status-get' command
isc::data::ConstElementPtr commandConfigGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-get' command
isc::data::ConstElementPtr commandInterfaceRedetectHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'interface-redetect' command.
bool getShutdown() const
Return the server shutdown flag value.
isc::data::ConstElementPtr commandConfigWriteHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-write' command
static isc::data::ConstElementPtr finishConfigHookLibraries(isc::data::ConstElementPtr config)
Configuration checker for hook libraries.
isc::data::ConstElementPtr commandInterfaceListHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'interface-list' command.
isc::data::ConstElementPtr commandShutdownHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'shutdown' command.
isc::data::ConstElementPtr loadConfigFile(const std::string &file_name)
Configure DHCPv4 server using the configuration file specified.
void cleanup()
Performs cleanup, immediately before termination.
isc::data::ConstElementPtr commandSubnet4o6SelectTestHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'subnet4o6-select-test' command.
isc::data::ConstElementPtr commandBuildReportHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'build-report' command
ControlledDhcpv4Srv(uint16_t server_port=DHCP4_SERVER_PORT, uint16_t client_port=0)
Constructor.
isc::data::ConstElementPtr commandConfigTestHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-test' command
isc::data::ConstElementPtr commandDhcpEnableHandler(const std::string &command, isc::data::ConstElementPtr args)
A handler for processing 'dhcp-enable' command.
isc::data::ConstElementPtr commandConfigBackendPullHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for config-backend-pull command
isc::data::ConstElementPtr commandVersionGetHandler(const std::string &command, isc::data::ConstElementPtr args)
@Brief handler for processing 'version-get' command
static isc::data::ConstElementPtr checkConfig(isc::data::ConstElementPtr config)
Configuration checker.
static void sessionReader(void)
Callback that will be called from iface_mgr when data is received over control socket.
isc::data::ConstElementPtr commandServerTagGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for server-tag-get command
void init(const std::string &config_file)
Initializes the server.
isc::data::ConstElementPtr commandStatisticSetMaxSampleCountAllHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'statistic-sample-count-set-all' command
isc::data::ConstElementPtr commandInterfaceAddHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'interface-add' command.
isc::data::ConstElementPtr commandSubnet4SelectTestHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'subnet4-select-test' command.
static isc::data::ConstElementPtr processConfig(isc::data::ConstElementPtr config)
Configuration processor.
static ControlledDhcpv4Srv * getInstance()
Returns pointer to the sole instance of Dhcpv4Srv.
virtual void shutdownServer(int exit_value)
Initiates shutdown procedure for the whole DHCPv4 server.
isc::data::ConstElementPtr commandConfigHashGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-hash-get' command
isc::data::ConstElementPtr commandStatisticSetMaxSampleAgeAllHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'statistic-sample-age-set-all' command
isc::data::ConstElementPtr commandDhcpDisableHandler(const std::string &command, isc::data::ConstElementPtr args)
A handler for processing 'dhcp-disable' command.
DHCPv4 server service.
Definition dhcp4_srv.h:267
This file contains several functions and constants that are used for handling commands and responses ...
An abstract API for lease database.
boost::shared_ptr< const Element > ConstElementPtr
Definition data.h:30
boost::shared_ptr< TimerMgr > TimerMgrPtr
Type definition of the shared pointer to TimerMgr.
Definition timer_mgr.h:27
boost::shared_ptr< SrvConfig > SrvConfigPtr
Non-const pointer to the SrvConfig.
boost::shared_ptr< ReconnectCtl > ReconnectCtlPtr
Pointer to an instance of ReconnectCtl.
Defines the logger used by the top-level component of kea-lfc.