Kea: isc::ha::HAConfig Class Reference

| Kea 2.2.0

Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
isc::ha::HAConfig Class Reference

Storage for High Availability configuration. More...

`#include <ha_config.h>`

## Classes
class | PeerConfig
| HA peer configuration. More...
class | StateConfig
| Configuration specific to a single HA state. More...
class | StateMachineConfig
| State machine configuration information. More...

## Public Types
enum | HAMode { LOAD_BALANCING , HOT_STANDBY , PASSIVE_BACKUP }
| Mode of operation. More...
typedef std::map< std::string, PeerConfigPtr > | PeerConfigMap
| Map of the servers' configurations. More...
typedef boost::shared_ptr< PeerConfig > | PeerConfigPtr
| Pointer to the server's configuration. More...
typedef boost::shared_ptr< StateConfig > | StateConfigPtr
| Pointer to the state configuration. More...
typedef boost::shared_ptr< StateMachineConfig > | StateMachineConfigPtr
| Pointer to a state machine configuration. More...

## Public Member Functions
| HAConfig ()
| Constructor. More...
bool | amAllowingCommRecovery () const
| Convenience function checking if communication recovery is allowed. More...
bool | amSendingLeaseUpdates () const
| Returns boolean flag indicating whether lease updates should be sent to the partner. More...
bool | amSyncingLeases () const
| Returns boolean flag indicating whether the active servers should synchronize their lease databases upon startup. More...
bool | amWaitingBackupAck () const
| Checks if the server is configured to wait for the acknowledgments to the lease updates from the backup server or not. More...
PeerConfigMap | getAllServersConfig () const
| Returns configurations of all servers. More...
util::Optional< std::string > | getCertFile () const
| Returns global cert-file. More...
uint32_t | getDelayedUpdatesLimit () const
| Returns the maximum number of lease updates which can be held unsent in the communication-recovery state. More...
bool | getEnableMultiThreading ()
| Checks if the server is configured for multi-threaded operation. More...
PeerConfigPtr | getFailoverPeerConfig () const
| Returns configuration of the partner which takes part in failover. More...
HAMode | getHAMode () const
| Returns mode of operation. More...
uint32_t | getHeartbeatDelay () const
| Returns heartbeat delay in milliseconds. More...
uint32_t | getHttpClientThreads ()
| Fetches the number of threads the HTTP client should use. More...
bool | getHttpDedicatedListener ()
| Checks if the server is configured to use its own HTTP listener. More...
uint32_t | getHttpListenerThreads ()
| Fetches the number of threads the HTTP listener should use. More...
util::Optional< std::string > | getKeyFile () const
| Returns global key-file. More...
uint32_t | getMaxAckDelay () const
| Returns maximum time for a client trying to communicate with DHCP server to complete the transaction. More...
uint32_t | getMaxResponseDelay () const
| Returns max response delay. More...
uint32_t | getMaxUnackedClients () const
| Returns maximum number of clients which may fail to communicate with the DHCP server before entering partner down state. More...
PeerConfigMap | getOtherServersConfig () const
| Returns configuration of other servers. More...
PeerConfigPtr | getPeerConfig (const std::string &name) const
| Returns configuration of the specified server. More...
bool | getRequireClientCerts () const
| Returns require-client-certs. More...
bool | getRestrictCommands () const
| Returns restrict-commands. More...
StateMachineConfigPtr | getStateMachineConfig () const
| Returns state machine configuration. More...
uint32_t | getSyncPageLimit () const
| Returns maximum number of leases per page to be fetched during database synchronization. More...
uint32_t | getSyncTimeout () const
| Returns timeout for lease database synchronization. More...
PeerConfigPtr | getThisServerConfig () const
| Returns configuration of this server. More...
std::string | getThisServerName () const
| Returns name of this server. More...
util::Optional< std::string > | getTrustAnchor () const
| Returns global trust-anchor. More...
PeerConfigPtr | selectNextPeerConfig (const std::string &name)
| Creates and returns pointer to the new peer's configuration. More...
void | setCertFile (const util::Optional< std::string > &cert)
| Sets global cert-file. More...
void | setDelayedUpdatesLimit (const uint32_t delayed_updates_limit)
| Sets new limit for the number of lease updates to be held unsent in the communication-recovery state. More...
void | setEnableMultiThreading (bool enable_multi_threading)
| Sets whether or not server is configured for multi-threaded operation. More...
void | setHAMode (const std::string &ha_mode)
| Sets new mode of operation. More...
void | setHeartbeatDelay (const uint32_t heartbeat_delay)
| Sets new heartbeat delay in milliseconds. More...
void | setHttpClientThreads (uint32_t http_client_threads)
| Sets the number of threads the HTTP client should use. More...
void | setHttpDedicatedListener (bool http_dedicated_listener)
| Sets whether or not the server is configured to use its own HTTP listener. More...
void | setHttpListenerThreads (uint32_t http_listener_threads)
| Sets the number of threads the HTTP listener should use. More...
void | setKeyFile (const util::Optional< std::string > &key)
| Sets global key-file. More...
void | setMaxAckDelay (const uint32_t max_ack_delay)
| Sets maximum time for a client trying to communicate with DHCP server to completed the transaction. More...
void | setMaxResponseDelay (const uint32_t max_response_delay)
| Sets new max response delay. More...
void | setMaxUnackedClients (const uint32_t max_unacked_clients)
| Set maximum number of clients which may fail to communicate with the DHCP server before entering partner down state. More...
void | setRequireClientCerts (bool flag)
| Sets require-client-certs. More...
void | setRestrictCommands (bool flag)
| Sets restrict-commands. More...
void | setSendLeaseUpdates (const bool send_lease_updates)
| Sets boolean flag indicating whether lease updates should be sent to the partner. More...
void | setSyncLeases (const bool sync_leases)
| Sets boolean flag indicating whether the active servers should synchronize their lease databases upon startup. More...
void | setSyncPageLimit (const uint32_t sync_page_limit)
| Sets new page limit size for leases fetched from the partner during database synchronization. More...
void | setSyncTimeout (const uint32_t sync_timeout)
| Sets new lease database syncing timeout in milliseconds. More...
void | setThisServerName (const std::string &this_server_name)
| Sets name of this server. More...
void | setTrustAnchor (const util::Optional< std::string > &ca)
| Sets global trust-anchor. More...
void | setWaitBackupAck (const bool wait_backup_ack)
| Configures the server to wait/not wait for the lease update acknowledgments from the backup servers. More...
void | validate ()
| Validates configuration. More...

## Static Public Member Functions
static std::string | HAModeToString (const HAMode &ha_mode)
| Returns HA mode name. More...
static HAMode | stringToHAMode (const std::string &ha_mode)
| Decodes HA mode provided as string. More...

## Public Attributes
util::Optional< std::string > | cert_file_
| Certificate file. More...
uint32_t | delayed_updates_limit_
| Maximum number of lease updates held for later send in communication-recovery. More...
bool | enable_multi_threading_
| Enable multi-threading. More...
HAMode | ha_mode_
| Mode of operation. More...
uint32_t | heartbeat_delay_
| Heartbeat delay in milliseconds. More...
uint32_t | http_client_threads_
| Number of HTTP client threads. More...
bool | http_dedicated_listener_
| Enable use of own HTTP listener. More...
uint32_t | http_listener_threads_
| Number of HTTP listener threads. More...
util::Optional< std::string > | key_file_
| Private key file. More...
uint32_t | max_ack_delay_
| Maximum DHCP message ack delay. More...
uint32_t | max_response_delay_
| Max delay in response to heartbeats. More...
uint32_t | max_unacked_clients_
| Maximum number of unacked clients. More...
PeerConfigMap | peers_
| Map of peers' configurations. More...
bool | require_client_certs_
| Require client certs flag. More...
bool | restrict_commands_
| Restrict commands to HA flag. More...
bool | send_lease_updates_
| Send lease updates to partner? More...
StateMachineConfigPtr | state_machine_
| State machine configuration. More...
bool | sync_leases_
| Synchronize databases on startup? More...
uint32_t | sync_page_limit_
| Page size limit while synchronizing leases. More...
uint32_t | sync_timeout_
| Timeout for syncing lease database (ms) More...
std::string | this_server_name_
| This server name. More...
util::Optional< std::string > | trust_anchor_
| Trust anchor. More...
bool | wait_backup_ack_
| Wait for lease update ack from backup? More...

## Detailed Description

Storage for High Availability configuration.

Definition at line 33 of file ha_config.h.

## Member Typedef Documentation

## ◆ PeerConfigMap

typedef std::map<std::string, PeerConfigPtr> isc::ha::HAConfig::PeerConfigMap

Map of the servers' configurations.

Definition at line 232 of file ha_config.h.

## ◆ PeerConfigPtr

typedef boost::shared_ptr<PeerConfig> isc::ha::HAConfig::PeerConfigPtr

Pointer to the server's configuration.

Definition at line 229 of file ha_config.h.

## ◆ StateConfigPtr

typedef boost::shared_ptr<StateConfig> isc::ha::HAConfig::StateConfigPtr

Pointer to the state configuration.

Definition at line 280 of file ha_config.h.

## ◆ StateMachineConfigPtr

typedef boost::shared_ptr<StateMachineConfig> isc::ha::HAConfig::StateMachineConfigPtr

Pointer to a state machine configuration.

Definition at line 312 of file ha_config.h.

## Member Enumeration Documentation

## ◆ HAMode

enum isc::ha::HAConfig::HAMode

Mode of operation.

Currently supported modes are:

- load-balancing
- hot-standby
- passive-backup

Enumerator
LOAD_BALANCING |
HOT_STANDBY |
PASSIVE_BACKUP |

Definition at line 42 of file ha_config.h.

## Constructor & Destructor Documentation

## ◆ HAConfig()

isc::ha::HAConfig::HAConfig | ( |  | ) |

Constructor.

Definition at line 162 of file ha_config.cc.

## Member Function Documentation

## ◆ amAllowingCommRecovery()

bool isc::ha::HAConfig::amAllowingCommRecovery | ( |  | ) | const
| inline

Convenience function checking if communication recovery is allowed.

Communication recovery is only allowed in load-balancing configurations. It is enabled by setting delayed-updates-limit to a value greater than 0.

Returns
  true if communication recovery is enabled, false otherwise.

Definition at line 475 of file ha_config.h.

References delayed_updates_limit_.

## ◆ amSendingLeaseUpdates()

bool isc::ha::HAConfig::amSendingLeaseUpdates | ( |  | ) | const
| inline

Returns boolean flag indicating whether lease updates should be sent to the partner.

Definition at line 370 of file ha_config.h.

References send_lease_updates_.

## ◆ amSyncingLeases()

bool isc::ha::HAConfig::amSyncingLeases | ( |  | ) | const
| inline

Returns boolean flag indicating whether the active servers should synchronize their lease databases upon startup.

Definition at line 389 of file ha_config.h.

References sync_leases_.

## ◆ amWaitingBackupAck()

bool isc::ha::HAConfig::amWaitingBackupAck | ( |  | ) | const
| inline

Checks if the server is configured to wait for the acknowledgments to the lease updates from the backup server or not.

Returns
  true if the server is configured to wait for the acknowledgments or false otherwise.

Definition at line 568 of file ha_config.h.

References wait_backup_ack_.

## ◆ getAllServersConfig()

PeerConfigMap isc::ha::HAConfig::getAllServersConfig | ( |  | ) | const
| inline

Returns configurations of all servers.

Returns
  Map of pointers to the servers' configurations.

Definition at line 731 of file ha_config.h.

References peers_.

## ◆ getCertFile()

util::Optional< std::string > isc::ha::HAConfig::getCertFile | ( |  | ) | const
| inline

Returns global cert-file.

Definition at line 648 of file ha_config.h.

References cert_file_.

## ◆ getDelayedUpdatesLimit()

uint32_t isc::ha::HAConfig::getDelayedUpdatesLimit | ( |  | ) | const
| inline

Returns the maximum number of lease updates which can be held unsent in the communication-recovery state.

If the server is in the communication-recovery state it is unable to send lease updates to the partner. Instead it keeps lease updates, hoping to send them when the communication is resumed. This value designates a limit of how many such updates can be held. If this number is exceeded the server continues to respond to the clients but will have to go through regular lease database synchronization when the communication is resumed.

Returns
  Limit of the lease backlog size in communication-recovery.

Definition at line 448 of file ha_config.h.

References delayed_updates_limit_.

## ◆ getEnableMultiThreading()

bool isc::ha::HAConfig::getEnableMultiThreading | ( |  | ) |
| inline

Checks if the server is configured for multi-threaded operation.

Returns
  true if the server is configured for multi-threaded operation

Definition at line 575 of file ha_config.h.

References enable_multi_threading_.

## ◆ getFailoverPeerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::getFailoverPeerConfig | ( |  | ) | const

Returns configuration of the partner which takes part in failover.

The server for which the configuration is returned is a "primary", "secondary" or "standby". This method is typically used to locate the configuration of the server to which heartbeat command is to be sent.

Returns
  Pointer to the partner's configuration.

Exceptions

  InvalidOperation | if there is no suitable configuration found.

Definition at line 250 of file ha_config.cc.

References isc::ha::HAConfig::PeerConfig::BACKUP, getOtherServersConfig(), getThisServerName(), and isc_throw.

Here is the call graph for this function:

## ◆ getHAMode()

HAMode isc::ha::HAConfig::getHAMode | ( |  | ) | const
| inline

Returns mode of operation.

Definition at line 341 of file ha_config.h.

References ha_mode_.

## ◆ getHeartbeatDelay()

uint32_t isc::ha::HAConfig::getHeartbeatDelay | ( |  | ) | const
| inline

Returns heartbeat delay in milliseconds.

This value indicates the delay in sending a heartbeat command after last heartbeat or some other command to the partner. A value of zero disables the heartbeat.

Returns
  Heartbeat delay in milliseconds.

Definition at line 486 of file ha_config.h.

References heartbeat_delay_.

## ◆ getHttpClientThreads()

uint32_t isc::ha::HAConfig::getHttpClientThreads | ( |  | ) |
| inline

Fetches the number of threads the HTTP client should use.

Returns
  number of threads the client is configured to use.

Definition at line 624 of file ha_config.h.

References http_client_threads_.

## ◆ getHttpDedicatedListener()

bool isc::ha::HAConfig::getHttpDedicatedListener | ( |  | ) |
| inline

Checks if the server is configured to use its own HTTP listener.

When this is true, the server should instantiate an HTTP listener instance which listens on this server's URL. If false, this server will rely on a kea-control-agent.

Returns
  true if the server is configured to use its own HTTP listener.

Definition at line 594 of file ha_config.h.

References http_dedicated_listener_.

## ◆ getHttpListenerThreads()

uint32_t isc::ha::HAConfig::getHttpListenerThreads | ( |  | ) |
| inline

Fetches the number of threads the HTTP listener should use.

Returns
  number of threads the listener is configured to use.

Definition at line 610 of file ha_config.h.

References http_listener_threads_.

## ◆ getKeyFile()

util::Optional< std::string > isc::ha::HAConfig::getKeyFile | ( |  | ) | const
| inline

Returns global key-file.

Definition at line 660 of file ha_config.h.

References key_file_.

## ◆ getMaxAckDelay()

uint32_t isc::ha::HAConfig::getMaxAckDelay | ( |  | ) | const
| inline

Returns maximum time for a client trying to communicate with DHCP server to complete the transaction.

Returns
  Maximum delay in milliseconds.

Definition at line 525 of file ha_config.h.

References max_ack_delay_.

## ◆ getMaxResponseDelay()

uint32_t isc::ha::HAConfig::getMaxResponseDelay | ( |  | ) | const
| inline

Returns max response delay.

Max response delay is the maximum time that the server is waiting for its partner to respond to the heartbeats (and lease updates) before it assumes the communications interrupted state.

Definition at line 506 of file ha_config.h.

References max_response_delay_.

## ◆ getMaxUnackedClients()

uint32_t isc::ha::HAConfig::getMaxUnackedClients | ( |  | ) | const
| inline

Returns maximum number of clients which may fail to communicate with the DHCP server before entering partner down state.

Returns
  Maximum number of clients.

Definition at line 541 of file ha_config.h.

References max_unacked_clients_.

## ◆ getOtherServersConfig()

HAConfig::PeerConfigMap isc::ha::HAConfig::getOtherServersConfig | ( |  | ) | const

Returns configuration of other servers.

Returns a map of pointers to the configuration of all servers except this.

Returns
  Map of pointers to the servers' configurations.

Definition at line 268 of file ha_config.cc.

References isc::data::copy(), getThisServerName(), and peers_.

Referenced by getFailoverPeerConfig().

Here is the call graph for this function:

## ◆ getPeerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::getPeerConfig | ( | const std::string & | name | ) | const

Returns configuration of the specified server.

Parameters

  name | Server name.

Returns
  Pointer to the partner's configuration.

Exceptions

  InvalidOperation | if there is no suitable configuration found.

Definition at line 240 of file ha_config.cc.

References isc_throw, and peers_.

Referenced by getThisServerConfig().

## ◆ getRequireClientCerts()

bool isc::ha::HAConfig::getRequireClientCerts | ( |  | ) | const
| inline

Returns require-client-certs.

Definition at line 672 of file ha_config.h.

References require_client_certs_.

Referenced by validate().

## ◆ getRestrictCommands()

bool isc::ha::HAConfig::getRestrictCommands | ( |  | ) | const
| inline

Returns restrict-commands.

Definition at line 684 of file ha_config.h.

References restrict_commands_.

## ◆ getStateMachineConfig()

StateMachineConfigPtr isc::ha::HAConfig::getStateMachineConfig | ( |  | ) | const
| inline

Returns state machine configuration.

Returns
  Pointer to the state machine configuration.

Definition at line 738 of file ha_config.h.

References state_machine_.

## ◆ getSyncPageLimit()

uint32_t isc::ha::HAConfig::getSyncPageLimit | ( |  | ) | const
| inline

Returns maximum number of leases per page to be fetched during database synchronization.

Returns
  Maximum number of leases per page.

Definition at line 424 of file ha_config.h.

References sync_page_limit_.

## ◆ getSyncTimeout()

uint32_t isc::ha::HAConfig::getSyncTimeout | ( |  | ) | const
| inline

Returns timeout for lease database synchronization.

Returns
  Timeout in milliseconds.

Definition at line 409 of file ha_config.h.

References sync_timeout_.

## ◆ getThisServerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::getThisServerConfig | ( |  | ) | const

Returns configuration of this server.

Returns
  Pointer to the configuration of this server.

Definition at line 263 of file ha_config.cc.

References getPeerConfig(), and getThisServerName().

Here is the call graph for this function:

## ◆ getThisServerName()

std::string isc::ha::HAConfig::getThisServerName | ( |  | ) | const
| inline

Returns name of this server.

Definition at line 330 of file ha_config.h.

References this_server_name_.

Referenced by getFailoverPeerConfig(), getOtherServersConfig(), getThisServerConfig(), and validate().

## ◆ getTrustAnchor()

util::Optional< std::string > isc::ha::HAConfig::getTrustAnchor | ( |  | ) | const
| inline

Returns global trust-anchor.

Definition at line 636 of file ha_config.h.

References trust_anchor_.

## ◆ HAModeToString()

std::string isc::ha::HAConfig::HAModeToString | ( | const HAMode & | ha_mode | ) |
| static

Returns HA mode name.

Parameters

  ha_mode | HA mode which name should be returned.

Returns
  HA mode name.

Definition at line 225 of file ha_config.cc.

References HOT_STANDBY, LOAD_BALANCING, and PASSIVE_BACKUP.

Referenced by isc::ha::HAService::HAService(), and isc::ha::HAImpl::commandProcessed().

## ◆ selectNextPeerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::selectNextPeerConfig | ( | const std::string & | name | ) |

Creates and returns pointer to the new peer's configuration.

This method is called during peers configuration parsing, when the parser starts reading configuration of the next peer on the list. It will store parsed values into this object.

Parameters

  name | Name of the server for which new configuration should be created.

Exceptions

  BadValue | if there is already a configuration for the given server name.

Definition at line 175 of file ha_config.cc.

References isc_throw, and peers_.

## ◆ setCertFile()

void isc::ha::HAConfig::setCertFile | ( | const util::Optional< std::string > & | cert | ) |
| inline

Sets global cert-file.

Parameters

  cert | Certificate file name.

Definition at line 655 of file ha_config.h.

References cert_file_.

## ◆ setDelayedUpdatesLimit()

void isc::ha::HAConfig::setDelayedUpdatesLimit | ( | const uint32_t | delayed_updates_limit | ) |
| inline

Sets new limit for the number of lease updates to be held unsent in the communication-recovery state.

If the server is in the communication-recovery state it is unable to send lease updates to the partner. Instead it keeps lease updates, hoping to send them when the communication is resumed. This value designates a limit of how many such updates can be held. If this number is exceeded the server continues to respond to the clients but will have to go through regular lease database synchronization when the communication is resumed.

Parameters

  delayed_updates_limit | new limit.

Definition at line 464 of file ha_config.h.

References delayed_updates_limit_.

## ◆ setEnableMultiThreading()

void isc::ha::HAConfig::setEnableMultiThreading | ( | bool | enable_multi_threading | ) |
| inline

Sets whether or not server is configured for multi-threaded operation.

Parameters

  enable_multi_threading | boolean flag that enables multi-threaded operation when true.

Definition at line 583 of file ha_config.h.

References enable_multi_threading_.

## ◆ setHAMode()

void isc::ha::HAConfig::setHAMode | ( | const std::string & | ha_mode | ) |

Sets new mode of operation.

The following modes of operation are supported:

- load-balancing
- hot-standby

Parameters

  ha_mode | High Availability mode operation in textual form.

Exceptions

  BadValue | if non-supported mode of operation has been specified.

Definition at line 205 of file ha_config.cc.

References ha_mode_, and stringToHAMode().

Here is the call graph for this function:

## ◆ setHeartbeatDelay()

void isc::ha::HAConfig::setHeartbeatDelay | ( | const uint32_t | heartbeat_delay | ) |
| inline

Sets new heartbeat delay in milliseconds.

This value indicates the delay in sending a heartbeat command after last heartbeat or some other command to the partner. A value of zero disables the heartbeat.

Parameters

  heartbeat_delay | new heartbeat delay value.

Definition at line 497 of file ha_config.h.

References heartbeat_delay_.

## ◆ setHttpClientThreads()

void isc::ha::HAConfig::setHttpClientThreads | ( | uint32_t | http_client_threads | ) |
| inline

Sets the number of threads the HTTP client should use.

Parameters

  http_client_threads | number of threads the client should use.

Definition at line 631 of file ha_config.h.

References http_client_threads_.

## ◆ setHttpDedicatedListener()

void isc::ha::HAConfig::setHttpDedicatedListener | ( | bool | http_dedicated_listener | ) |
| inline

Sets whether or not the server is configured to use its own HTTP listener.

Parameters

  http_dedicated_listener | flag that enables the use of a dedicated listener when true.

Definition at line 603 of file ha_config.h.

References http_dedicated_listener_.

## ◆ setHttpListenerThreads()

void isc::ha::HAConfig::setHttpListenerThreads | ( | uint32_t | http_listener_threads | ) |
| inline

Sets the number of threads the HTTP listener should use.

Parameters

  http_listener_threads | number of threads the listener should use.

Definition at line 617 of file ha_config.h.

References http_listener_threads_.

## ◆ setKeyFile()

void isc::ha::HAConfig::setKeyFile | ( | const util::Optional< std::string > & | key | ) |
| inline

Sets global key-file.

Parameters

  key | Private key file name.

Definition at line 667 of file ha_config.h.

References key_file_.

## ◆ setMaxAckDelay()

void isc::ha::HAConfig::setMaxAckDelay | ( | const uint32_t | max_ack_delay | ) |
| inline

Sets maximum time for a client trying to communicate with DHCP server to completed the transaction.

Parameters

  max_ack_delay | maximum time in milliseconds.

Definition at line 533 of file ha_config.h.

References max_ack_delay_.

## ◆ setMaxResponseDelay()

void isc::ha::HAConfig::setMaxResponseDelay | ( | const uint32_t | max_response_delay | ) |
| inline

Sets new max response delay.

Max response delay is the maximum time that the server is waiting for its partner to respond to the heartbeats (and lease updates) before it assumes the communications interrupted state.

Parameters

  max_response_delay |

Definition at line 517 of file ha_config.h.

References max_response_delay_.

## ◆ setMaxUnackedClients()

void isc::ha::HAConfig::setMaxUnackedClients | ( | const uint32_t | max_unacked_clients | ) |
| inline

Set maximum number of clients which may fail to communicate with the DHCP server before entering partner down state.

Parameters

  max_unacked_clients | maximum number of clients.

Definition at line 549 of file ha_config.h.

References max_unacked_clients_.

## ◆ setRequireClientCerts()

void isc::ha::HAConfig::setRequireClientCerts | ( | bool | flag | ) |
| inline

Sets require-client-certs.

Parameters

  flag | Require client certs flag value.

Definition at line 679 of file ha_config.h.

References require_client_certs_.

## ◆ setRestrictCommands()

void isc::ha::HAConfig::setRestrictCommands | ( | bool | flag | ) |
| inline

Sets restrict-commands.

Parameters

  flag | Restrict commands to HA flag value.

Definition at line 691 of file ha_config.h.

References restrict_commands_.

## ◆ setSendLeaseUpdates()

void isc::ha::HAConfig::setSendLeaseUpdates | ( | const bool | send_lease_updates | ) |
| inline

Sets boolean flag indicating whether lease updates should be sent to the partner.

Disabling lease updates is useful in cases when lease database replication is enabled, e.g. MySQL database replication. The database itself takes care of updating the backup database with new data. Sending lease updates is enabled by default.

Parameters

  send_lease_updates | new value for the flag.

Definition at line 383 of file ha_config.h.

References send_lease_updates_.

## ◆ setSyncLeases()

void isc::ha::HAConfig::setSyncLeases | ( | const bool | sync_leases | ) |
| inline

Sets boolean flag indicating whether the active servers should synchronize their lease databases upon startup.

Disabling lease database synchronization is useful in cases when lease database replication is enabled. See the description of the `setSendLeaseUpdates`. Lease database synchronization is enabled by default on active HA servers.

Parameters

  sync_leases | new value for the flag.

Definition at line 402 of file ha_config.h.

References sync_leases_.

## ◆ setSyncPageLimit()

void isc::ha::HAConfig::setSyncPageLimit | ( | const uint32_t | sync_page_limit | ) |
| inline

Sets new page limit size for leases fetched from the partner during database synchronization.

Parameters

  sync_page_limit | New page limit value.

Definition at line 432 of file ha_config.h.

References sync_page_limit_.

## ◆ setSyncTimeout()

void isc::ha::HAConfig::setSyncTimeout | ( | const uint32_t | sync_timeout | ) |
| inline

Sets new lease database syncing timeout in milliseconds.

Parameters

  sync_timeout | new timeout for lease database synchronization.

Definition at line 416 of file ha_config.h.

References sync_timeout_.

## ◆ setThisServerName()

void isc::ha::HAConfig::setThisServerName | ( | const std::string & | this_server_name | ) |

Sets name of this server.

Parameters

  this_server_name | This server name.

Exceptions

  BadValue | If the provided server name is empty.

Definition at line 193 of file ha_config.cc.

References isc_throw, this_server_name_, and isc::util::str::trim().

Here is the call graph for this function:

## ◆ setTrustAnchor()

void isc::ha::HAConfig::setTrustAnchor | ( | const util::Optional< std::string > & | ca | ) |
| inline

Sets global trust-anchor.

Parameters

  ca | Trust anchor aka Certificate Authority.

Definition at line 643 of file ha_config.h.

References trust_anchor_.

## ◆ setWaitBackupAck()

void isc::ha::HAConfig::setWaitBackupAck | ( | const bool | wait_backup_ack | ) |
| inline

Configures the server to wait/not wait for the lease update acknowledgments from the backup servers.

Parameters

  wait_backup_ack | indicates that the server should wait for the lease update acknowledgments from the backup servers (if true) or that it should not (if false).

Definition at line 559 of file ha_config.h.

References wait_backup_ack_.

## ◆ stringToHAMode()

HAConfig::HAMode isc::ha::HAConfig::stringToHAMode | ( | const std::string & | ha_mode | ) |
| static

Decodes HA mode provided as string.

Parameters

  ha_mode | HA mode as string.

Returns
  HA mode converted from string.

Exceptions

  BadValue | if specified HA mode name is unsupported.

Definition at line 210 of file ha_config.cc.

References HOT_STANDBY, isc_throw, LOAD_BALANCING, and PASSIVE_BACKUP.

Referenced by setHAMode().

## ◆ validate()

void isc::ha::HAConfig::validate | ( |  | ) |

Validates configuration.

In addition to sanity checking the configuration, it will check HA+MT configuration against Core multi-threading configuration add adjust HA+MT values as follows:

1. If DHCP multi-threading is disabled, HA+MT will be disabled.
2. If http-listener-threads is 0, it will be replaced with the number of DHCP threads
3. If http-client-threads is 0, it will be replaced with the number of DHCP threads

As a side effect it fills the TLS context of peers when TLS is enabled.

Exceptions

  HAConfigValidationError | if configuration is invalid.

Definition at line 275 of file ha_config.cc.

References cert_file_, isc::asiolink::CLIENT, delayed_updates_limit_, enable_multi_threading_, isc::util::Optional< T >::get(), getRequireClientCerts(), getThisServerName(), isc::ha::HA_CONFIG_DHCP_MT_DISABLED, isc::ha::HA_CONFIG_SYSTEM_MT_UNSUPPORTED, isc::ha::ha_logger, ha_mode_, HOT_STANDBY, http_client_threads_, http_listener_threads_, isc_throw, key_file_, LOAD_BALANCING, LOG_INFO, PASSIVE_BACKUP, peers_, isc::ha::HAConfig::PeerConfig::PRIMARY, isc::ha::HAConfig::PeerConfig::SECONDARY, isc::asiolink::SERVER, isc::ha::HAConfig::PeerConfig::STANDBY, trust_anchor_, isc::util::Optional< T >::unspecified(), wait_backup_ack_, and isc::Exception::what().

Here is the call graph for this function:

## Member Data Documentation

## ◆ cert_file_

util::Optional<std::string> isc::ha::HAConfig::cert_file_

Certificate file.

Definition at line 777 of file ha_config.h.

Referenced by getCertFile(), setCertFile(), and validate().

## ◆ delayed_updates_limit_

uint32_t isc::ha::HAConfig::delayed_updates_limit_

Maximum number of lease updates held for later send in communication-recovery.

Definition at line 765 of file ha_config.h.

Referenced by amAllowingCommRecovery(), getDelayedUpdatesLimit(), setDelayedUpdatesLimit(), and validate().

## ◆ enable_multi_threading_

bool isc::ha::HAConfig::enable_multi_threading_

Enable multi-threading.

Definition at line 772 of file ha_config.h.

Referenced by getEnableMultiThreading(), setEnableMultiThreading(), and validate().

## ◆ ha_mode_

HAMode isc::ha::HAConfig::ha_mode_

Mode of operation.

Definition at line 759 of file ha_config.h.

Referenced by getHAMode(), setHAMode(), and validate().

## ◆ heartbeat_delay_

uint32_t isc::ha::HAConfig::heartbeat_delay_

Heartbeat delay in milliseconds.

Definition at line 767 of file ha_config.h.

Referenced by getHeartbeatDelay(), and setHeartbeatDelay().

## ◆ http_client_threads_

uint32_t isc::ha::HAConfig::http_client_threads_

Number of HTTP client threads.

Definition at line 775 of file ha_config.h.

Referenced by getHttpClientThreads(), setHttpClientThreads(), and validate().

## ◆ http_dedicated_listener_

bool isc::ha::HAConfig::http_dedicated_listener_

Enable use of own HTTP listener.

Definition at line 773 of file ha_config.h.

Referenced by getHttpDedicatedListener(), and setHttpDedicatedListener().

## ◆ http_listener_threads_

uint32_t isc::ha::HAConfig::http_listener_threads_

Number of HTTP listener threads.

Definition at line 774 of file ha_config.h.

Referenced by getHttpListenerThreads(), setHttpListenerThreads(), and validate().

## ◆ key_file_

util::Optional<std::string> isc::ha::HAConfig::key_file_

Private key file.

Definition at line 778 of file ha_config.h.

Referenced by getKeyFile(), setKeyFile(), and validate().

## ◆ max_ack_delay_

uint32_t isc::ha::HAConfig::max_ack_delay_

Maximum DHCP message ack delay.

Definition at line 769 of file ha_config.h.

Referenced by getMaxAckDelay(), and setMaxAckDelay().

## ◆ max_response_delay_

uint32_t isc::ha::HAConfig::max_response_delay_

Max delay in response to heartbeats.

Definition at line 768 of file ha_config.h.

Referenced by getMaxResponseDelay(), and setMaxResponseDelay().

## ◆ max_unacked_clients_

uint32_t isc::ha::HAConfig::max_unacked_clients_

Maximum number of unacked clients.

Definition at line 770 of file ha_config.h.

Referenced by getMaxUnackedClients(), and setMaxUnackedClients().

## ◆ peers_

PeerConfigMap isc::ha::HAConfig::peers_

Map of peers' configurations.

Definition at line 781 of file ha_config.h.

Referenced by getAllServersConfig(), getOtherServersConfig(), getPeerConfig(), selectNextPeerConfig(), and validate().

## ◆ require_client_certs_

bool isc::ha::HAConfig::require_client_certs_

Require client certs flag.

Definition at line 779 of file ha_config.h.

Referenced by getRequireClientCerts(), and setRequireClientCerts().

## ◆ restrict_commands_

bool isc::ha::HAConfig::restrict_commands_

Restrict commands to HA flag.

Definition at line 780 of file ha_config.h.

Referenced by getRestrictCommands(), and setRestrictCommands().

## ◆ send_lease_updates_

bool isc::ha::HAConfig::send_lease_updates_

Send lease updates to partner?

Definition at line 760 of file ha_config.h.

Referenced by amSendingLeaseUpdates(), and setSendLeaseUpdates().

## ◆ state_machine_

StateMachineConfigPtr isc::ha::HAConfig::state_machine_

State machine configuration.

Definition at line 782 of file ha_config.h.

Referenced by getStateMachineConfig().

## ◆ sync_leases_

bool isc::ha::HAConfig::sync_leases_

Synchronize databases on startup?

Definition at line 761 of file ha_config.h.

Referenced by amSyncingLeases(), and setSyncLeases().

## ◆ sync_page_limit_

uint32_t isc::ha::HAConfig::sync_page_limit_

Page size limit while synchronizing leases.

Definition at line 763 of file ha_config.h.

Referenced by getSyncPageLimit(), and setSyncPageLimit().

## ◆ sync_timeout_

uint32_t isc::ha::HAConfig::sync_timeout_

Timeout for syncing lease database (ms)

Definition at line 762 of file ha_config.h.

Referenced by getSyncTimeout(), and setSyncTimeout().

## ◆ this_server_name_

std::string isc::ha::HAConfig::this_server_name_

This server name.

Definition at line 758 of file ha_config.h.

Referenced by getThisServerName(), and setThisServerName().

## ◆ trust_anchor_

util::Optional<std::string> isc::ha::HAConfig::trust_anchor_

Trust anchor.

Definition at line 776 of file ha_config.h.

Referenced by getTrustAnchor(), setTrustAnchor(), and validate().

## ◆ wait_backup_ack_

bool isc::ha::HAConfig::wait_backup_ack_

Wait for lease update ack from backup?

Definition at line 771 of file ha_config.h.

Referenced by amWaitingBackupAck(), setWaitBackupAck(), and validate().

The documentation for this class was generated from the following files:

- ha_config.h
- ha_config.cc