Kea
1.9.9-git
|
Holds information about DHCP service enabling status. More...
#include <network_state.h>
Public Types | |
typedef std::set< std::string > | Networks |
Type of the container holding collection of shared network names. More... | |
enum | Origin { Origin::USER_COMMAND, Origin::HA_COMMAND, Origin::DB_CONNECTION } |
Origin of the network state transition. More... | |
enum | ServerType { DHCPv4, DHCPv6 } |
DHCP server type. More... | |
typedef std::set< SubnetID > | Subnets |
Type of the container holding collection of subnet identifiers. More... | |
Public Member Functions | |
NetworkState (const ServerType &server_type) | |
Constructor. More... | |
void | delayedEnableAll (const unsigned int seconds, const NetworkState::Origin &origin) |
Schedules enabling DHCP service in the future. More... | |
void | disableService (const NetworkState::Origin &origin) |
Disable the DHCP service state for respective transition origin. More... | |
void | enableAll (const NetworkState::Origin &origin) |
Enables DHCP service globally and for scopes which have been disabled as a result of control command. More... | |
void | enableService (const NetworkState::Origin &origin) |
Enable the DHCP service state for respective transition origin. More... | |
bool | isDelayedEnableAll () const |
Checks if delayed enabling of DHCP services is scheduled. More... | |
bool | isServiceEnabled () const |
Checks if the DHCP service is globally enabled. More... | |
void | reset (const NetworkState::Origin &type) |
Reset internal counters. More... | |
Selective disabling/enabling DHCP service per scopes | |
void | selectiveDisable (const NetworkState::Subnets &subnets) |
Disable DHCP service for selected subnets. More... | |
void | selectiveDisable (const NetworkState::Networks &networks) |
Disable DHCP service for selected networks. More... | |
void | selectiveEnable (const NetworkState::Subnets &subnets) |
Enable DHCP service for selected subnets. More... | |
void | selectiveEnable (const NetworkState::Networks &networks) |
Enable DHCP service for selected networks. More... | |
Holds information about DHCP service enabling status.
When the DHCP server receives a command to disable DHCP service entirely or for specific networks, this has to be recorded to allow for re-enabling DHCP service for these networks as a result of receiving a command from the administrator or when the timeout for re-enabling the service occurs. Currently there are two types of command originating either from user or HA internal mechanism. The global state can also be altered by the DB recovery mechanism which disables the service on connection loss and re-enables it after the connection is restored. Because the server supports recovery for multiple connections, this is implemented using an internal counter. Combining all the origins of the alteration of the network state, the behavior is: a) the network state is disabled if any of the originators explicitly set the disabled flag. b) the network state is restored only if all originators explicitly clear the disabled flag. In the future, it will be possible to specify "disabled" parameter for a subnet (or network) in the configuration file to indicate that this subnet should be excluded from the service. When a command is subsequently sent to temporarily disable a service for some other subnets for a specified amount of time, only these subnets should be re-enabled when the time elapses. This class fulfills this requirement by recording the subnets disabled with a command and re-enabling them when required. The subnets specified as "disabled" in the configuration file should remain disabled until explicitly enabled with a control command.
This class also allows for disabling the DHCP service globally. In this case the server drops all received packets.
The "dhcp-disable" and "dhcp-enable" commands are used for globally disabling and enabling the DHCP service. The "dhcp-disable-scopes" and "dhcp-enable-scopes" commands are used to disable and enable DHCP service for subnets and networks. In case of the "dhcp-disable" and "dhcp-disable-scopes" commands, it is possible to specify "max-period" parameter which provides a timeout, after which the settings are reverted (service is re-enabled globally and/or for specific scopes).
Disabling DHCP service with a timeout is useful to guard against issues when the controlling client dies after disabling the DHCP service on the server, e.g. failover peers may instruct each other to disable the DHCP service while database synchronization takes place. If the peer subsequently dies, the surviving server must re-enable DHCP on its own.
Definition at line 70 of file network_state.h.
typedef std::set<std::string> isc::dhcp::NetworkState::Networks |
Type of the container holding collection of shared network names.
Definition at line 98 of file network_state.h.
typedef std::set<SubnetID> isc::dhcp::NetworkState::Subnets |
Type of the container holding collection of subnet identifiers.
Definition at line 95 of file network_state.h.
|
strong |
Origin of the network state transition.
The enumeration indicates the originator of the state transition of the network state: either user command, HA internal command or DB connection recovery mechanism.
Definition at line 84 of file network_state.h.
isc::dhcp::NetworkState::NetworkState | ( | const ServerType & | server_type | ) |
Constructor.
Definition at line 240 of file network_state.cc.
void isc::dhcp::NetworkState::delayedEnableAll | ( | const unsigned int | seconds, |
const NetworkState::Origin & | origin | ||
) |
Schedules enabling DHCP service in the future.
seconds | Number of seconds after which the service should be enabled unless enableAll is enabled before that time. |
origin | The origin of the state transition. |
Definition at line 285 of file network_state.cc.
void isc::dhcp::NetworkState::disableService | ( | const NetworkState::Origin & | origin | ) |
Disable the DHCP service state for respective transition origin.
origin | The origin of the state transition. |
Definition at line 245 of file network_state.cc.
void isc::dhcp::NetworkState::enableAll | ( | const NetworkState::Origin & | origin | ) |
Enables DHCP service globally and for scopes which have been disabled as a result of control command.
origin | The origin of the state transition. |
Definition at line 275 of file network_state.cc.
void isc::dhcp::NetworkState::enableService | ( | const NetworkState::Origin & | origin | ) |
Enable the DHCP service state for respective transition origin.
origin | The origin of the state transition. |
Definition at line 255 of file network_state.cc.
bool isc::dhcp::NetworkState::isDelayedEnableAll | ( | ) | const |
Checks if delayed enabling of DHCP services is scheduled.
It indicates that the timer is present which counts the time until enableAll
function will be called automatically.
Definition at line 306 of file network_state.cc.
References isc::dhcp::TimerMgr::instance().
bool isc::dhcp::NetworkState::isServiceEnabled | ( | ) | const |
Checks if the DHCP service is globally enabled.
Definition at line 296 of file network_state.cc.
void isc::dhcp::NetworkState::reset | ( | const NetworkState::Origin & | type | ) |
Reset internal counters.
Reset internal counters for a specific 'origin' after the server has been reconfigured or all the connections have been restored.
type | The origin for which the state flags need to be reset. |
Definition at line 265 of file network_state.cc.
void isc::dhcp::NetworkState::selectiveDisable | ( | const NetworkState::Subnets & | subnets | ) |
Disable DHCP service for selected subnets.
subnets | Collection of subnet identifiers for which the service should be disabled. |
isc::NotImplemented |
Definition at line 312 of file network_state.cc.
References isc_throw.
void isc::dhcp::NetworkState::selectiveDisable | ( | const NetworkState::Networks & | networks | ) |
Disable DHCP service for selected networks.
networks | Collection of shared network names for which the service should be disabled. |
isc::NotImplemented |
Definition at line 317 of file network_state.cc.
References isc_throw.
void isc::dhcp::NetworkState::selectiveEnable | ( | const NetworkState::Subnets & | subnets | ) |
Enable DHCP service for selected subnets.
subnets | Collection of subnet identifiers for which the service should be disabled. |
isc::NotImplemented |
Definition at line 322 of file network_state.cc.
References isc_throw.
void isc::dhcp::NetworkState::selectiveEnable | ( | const NetworkState::Networks & | networks | ) |
Enable DHCP service for selected networks.
networks | Collection of shared network names for which the service should be enabled. |
isc::NotImplemented |
Definition at line 327 of file network_state.cc.
References isc_throw.