13#include <boost/enable_shared_from_this.hpp>
22const std::string NETWORK_STATE_TIMER_NAME_USER_CMD =
"network-state-timer-user-cmd";
23const std::string NETWORK_STATE_TIMER_NAME_HA_CMD =
"network-state-timer-ha-cmd";
77 "disabling the network state");
97 "enabling the network state");
126 "resetting the network state");
161 std::string timer_name = NETWORK_STATE_TIMER_NAME_USER_CMD;
164 timer_name = NETWORK_STATE_TIMER_NAME_USER_CMD;
167 timer_name = NETWORK_STATE_TIMER_NAME_HA_CMD;
174 "a timer for delayed enable");
179 shared_from_this(), origin),
189 std::string timer_name = NETWORK_STATE_TIMER_NAME_USER_CMD;
192 timer_name = NETWORK_STATE_TIMER_NAME_USER_CMD;
195 timer_name = NETWORK_STATE_TIMER_NAME_HA_CMD;
201 "a timer for delayed enable");
204 if (
timer_mgr_->isTimerRegistered(timer_name)) {
246 if (MultiThreadingMgr::instance().getMode()) {
247 std::lock_guard<std::mutex> lk(*mutex_);
248 impl_->setDisableService(
true, origin);
250 impl_->setDisableService(
true, origin);
256 if (MultiThreadingMgr::instance().getMode()) {
257 std::lock_guard<std::mutex> lk(*mutex_);
258 impl_->setDisableService(
false, origin);
260 impl_->setDisableService(
false, origin);
266 if (MultiThreadingMgr::instance().getMode()) {
267 std::lock_guard<std::mutex> lk(*mutex_);
268 impl_->reset(origin);
270 impl_->reset(origin);
276 if (MultiThreadingMgr::instance().getMode()) {
277 std::lock_guard<std::mutex> lk(*mutex_);
278 impl_->enableAll(origin);
280 impl_->enableAll(origin);
287 if (MultiThreadingMgr::instance().getMode()) {
288 std::lock_guard<std::mutex> lk(*mutex_);
289 impl_->createTimer(seconds, origin);
291 impl_->createTimer(seconds, origin);
297 if (MultiThreadingMgr::instance().getMode()) {
298 std::lock_guard<std::mutex> lk(*mutex_);
299 return (!impl_->globally_disabled_);
301 return (!impl_->globally_disabled_);
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
A generic exception that is thrown when a function is not implemented.
Implementation of the NetworkState class.
NetworkState::ServerType server_type_
Server type.
void enableAll(const NetworkState::Origin &origin)
Enables DHCP service globally and per scopes.
NetworkState::Subnets disabled_subnets_
A list of subnets for which the DHCP service has been disabled.
NetworkStateImpl(const NetworkState::ServerType &server_type)
Constructor.
bool disabled_by_ha_command_
Flag which indicates the state has been disabled by the HA command.
bool disabled_by_user_command_
Flag which indicates the state has been disabled by an user command.
bool globally_disabled_
A flag indicating if DHCP service is globally disabled.
void destroyTimer(const NetworkState::Origin &origin)
Destroys a timer if present.
TimerMgrPtr timer_mgr_
A pointer to the common timer manager.
uint32_t disabled_by_db_connection_
Flag which indicates the state has been disabled by a DB connection loss.
void reset(const NetworkState::Origin &origin)
Reset internal counters for a specific origin.
NetworkState::Networks disabled_networks_
A list of networks for which the DHCP service has been disabled.
void createTimer(const unsigned int seconds, const NetworkState::Origin &origin)
Creates a timer counting the time when enableAll should be automatically called.
~NetworkStateImpl()
Destructor.
void setDisableService(const bool disable, const NetworkState::Origin &origin)
Sets appropriate disabled or enabled DHCP service state for the respective origin.
void enableService(const NetworkState::Origin &origin)
Enable the DHCP service state for respective transition origin.
void selectiveDisable(const NetworkState::Subnets &subnets)
Disable DHCP service for selected subnets.
std::set< SubnetID > Subnets
Type of the container holding collection of subnet identifiers.
void disableService(const NetworkState::Origin &origin)
Disable the DHCP service state for respective transition origin.
void delayedEnableAll(const unsigned int seconds, const NetworkState::Origin &origin)
Schedules enabling DHCP service in the future.
std::set< std::string > Networks
Type of the container holding collection of shared network names.
void enableAll(const NetworkState::Origin &origin)
Enables DHCP service globally and for scopes which have been disabled as a result of control command.
void reset(const NetworkState::Origin &type)
Reset internal counters.
bool isDelayedEnableAll() const
Checks if delayed enabling of DHCP services is scheduled.
void selectiveEnable(const NetworkState::Subnets &subnets)
Enable DHCP service for selected subnets.
Origin
Origin of the network state transition.
@ USER_COMMAND
The network state is being altered by a user command.
@ DB_CONNECTION
The network state is being altered by the DB connection recovery mechanics.
@ HA_COMMAND
The network state is being altered by a HA internal command.
NetworkState(const ServerType &server_type)
Constructor.
ServerType
DHCP server type.
bool isServiceEnabled() const
Checks if the DHCP service is globally enabled.
Manages a pool of asynchronous interval timers.
static const TimerMgrPtr & instance()
Returns pointer to the sole instance of the TimerMgr.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
boost::shared_ptr< TimerMgr > TimerMgrPtr
Type definition of the shared pointer to TimerMgr.
Defines the logger used by the top-level component of kea-lfc.