Kea 3.2.0-git
ctrl_dhcp6_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_DHCPV6_SRV_H
8#define CTRL_DHCPV6_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 <dhcp6/dhcp6_srv.h>
18
19namespace isc {
20namespace dhcp {
21
27public:
28
33 ControlledDhcpv6Srv(uint16_t server_port = DHCP6_SERVER_PORT,
34 uint16_t client_port = 0);
35
37 virtual ~ControlledDhcpv6Srv();
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 commandSubnet6SelectTestHandler(const std::string& command,
334
344 commandServerTagGetHandler(const std::string& command,
346
357 commandConfigBackendPullHandler(const std::string& command,
359
369 commandStatusGetHandler(const std::string& command,
371
382 commandStatisticSetMaxSampleCountAllHandler(const std::string& command,
384
395 commandStatisticSetMaxSampleAgeAllHandler(const std::string& command,
397
408 commandLfcStartHandler(const std::string& command,
410
411private:
428 void reclaimExpiredLeases(const size_t max_leases, const uint16_t timeout,
429 const bool remove_lease,
430 const uint16_t max_unwarned_cycles);
431
440 void deleteExpiredReclaimedLeases(const uint32_t secs);
441
459 bool dbLostCallback(util::ReconnectCtlPtr db_reconnect_ctl);
460
472 bool dbRecoveredCallback(util::ReconnectCtlPtr db_reconnect_ctl);
473
484 bool dbFailedCallback(util::ReconnectCtlPtr db_reconnect_ctl);
485
493 void openSocketsFailedCallback(util::ReconnectCtlPtr reconnect_ctl);
494
506 void cbFetchUpdates(const SrvConfigPtr& srv_cfg,
507 boost::shared_ptr<unsigned> failure_count);
508
513 static ControlledDhcpv6Srv* server_;
514
519 TimerMgrPtr timer_mgr_;
520};
521
522} // namespace dhcp
523} // namespace isc
524
525#endif
bool getShutdown() const
Return the server shutdown flag value.
isc::data::ConstElementPtr commandVersionGetHandler(const std::string &command, isc::data::ConstElementPtr args)
@Brief handler for processing 'version-get' command
void init(const std::string &config_file)
Initializes the server.
void cleanup()
Performs cleanup, immediately before termination.
isc::data::ConstElementPtr commandConfigSetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-set' command
isc::data::ConstElementPtr commandInterfaceAddHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'interface-add' command.
isc::data::ConstElementPtr commandInterfaceRedetectHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'interface-redetect' command.
isc::data::ConstElementPtr commandShutdownHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'shutdown' command.
isc::data::ConstElementPtr commandConfigBackendPullHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for config-backend-pull command
isc::data::ConstElementPtr commandLfcStartHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'kea-lfc-start' command
static void sessionReader(void)
Callback that will be called from iface_mgr when data is received over control socket.
isc::data::ConstElementPtr commandConfigHashGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-hash-get' command
isc::data::ConstElementPtr commandServerTagGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for server-tag-get command
isc::data::ConstElementPtr commandStatisticSetMaxSampleCountAllHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'statistic-sample-count-set-all' 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 commandStatusGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'status-get' command
isc::data::ConstElementPtr commandDhcpEnableHandler(const std::string &command, isc::data::ConstElementPtr args)
A handler for processing 'dhcp-enable' command.
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 commandConfigWriteHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-write' command
isc::data::ConstElementPtr commandBuildReportHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'build-report' command
static isc::data::ConstElementPtr finishConfigHookLibraries(isc::data::ConstElementPtr config)
Configuration checker for hook libraries.
virtual ~ControlledDhcpv6Srv()
Destructor.
static isc::data::ConstElementPtr processConfig(isc::data::ConstElementPtr config)
Configuration processor.
isc::data::ConstElementPtr commandConfigGetHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-get' command
virtual void shutdownServer(int exit_value)
Initiates shutdown procedure for the whole DHCPv6 server.
static ControlledDhcpv6Srv * getInstance()
Returns pointer to the sole instance of Dhcpv6Srv.
isc::data::ConstElementPtr loadConfigFile(const std::string &file_name)
Configure DHCPv6 server using the configuration file specified.
static isc::data::ConstElementPtr checkConfig(isc::data::ConstElementPtr config)
Configuration checker.
isc::data::ConstElementPtr commandInterfaceListHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'interface-list' command.
isc::data::ConstElementPtr commandSubnet6SelectTestHandler(const std::string &command, isc::data::ConstElementPtr args)
Handler for processing 'subnet6-select-test' command.
ControlledDhcpv6Srv(uint16_t server_port=DHCP6_SERVER_PORT, uint16_t client_port=0)
Constructor.
isc::data::ConstElementPtr commandDhcpDisableHandler(const std::string &command, isc::data::ConstElementPtr args)
A handler for processing 'dhcp-disable' command.
isc::data::ConstElementPtr commandConfigTestHandler(const std::string &command, isc::data::ConstElementPtr args)
handler for processing 'config-test' command
DHCPv6 server service.
Definition dhcp6_srv.h:66
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.