Kea 2.7.5
isc::dhcp::ControlledDhcpv6Srv Class Reference

Controlled version of the DHCPv6 server. More...

#include <ctrl_dhcp6_srv.h>

+ Inheritance diagram for isc::dhcp::ControlledDhcpv6Srv:

Public Member Functions

 ControlledDhcpv6Srv (uint16_t server_port=DHCP6_SERVER_PORT, uint16_t client_port=0)
 Constructor.
 
virtual ~ControlledDhcpv6Srv ()
 Destructor.
 
void cleanup ()
 Performs cleanup, immediately before termination.
 
void init (const std::string &config_file)
 Initializes the server.
 
isc::data::ConstElementPtr loadConfigFile (const std::string &file_name)
 Configure DHCPv6 server using the configuration file specified.
 
virtual void shutdownServer (int exit_value)
 Initiates shutdown procedure for the whole DHCPv6 server.
 
- Public Member Functions inherited from isc::dhcp::Dhcpv6Srv
 Dhcpv6Srv (uint16_t server_port=DHCP6_SERVER_PORT, uint16_t client_port=0)
 Default constructor.
 
virtual ~Dhcpv6Srv ()
 Destructor. Used during DHCPv6 service shutdown.
 
CBControlDHCPv6Ptr getCBControl () const
 Returns an object which controls access to the configuration backends.
 
asiolink::IOServicePtrgetIOService ()
 Returns pointer to the IO service used by the server.
 
NetworkStatePtrgetNetworkState ()
 Returns pointer to the network state used by the server.
 
OptionPtr getServerID ()
 Returns server-identifier option.
 
bool inTestMode () const
 Checks if the server is running in unit test mode.
 
Pkt6Ptr processDhcp6Query (Pkt6Ptr query)
 Process a single incoming DHCPv6 query.
 
void processDhcp6QueryAndSendResponse (Pkt6Ptr query)
 Process a single incoming DHCPv6 query.
 
Pkt6Ptr processLocalizedQuery6 (AllocEngine::ClientContext6 &ctx)
 Process a localized incoming DHCPv6 query.
 
void processLocalizedQuery6AndSendResponse (Pkt6Ptr query)
 Process a localized incoming DHCPv6 query.
 
void processLocalizedQuery6AndSendResponse (Pkt6Ptr query, AllocEngine::ClientContext6 &ctx)
 Process a localized incoming DHCPv6 query.
 
Pkt6Ptr processPacket (Pkt6Ptr query)
 Process a single incoming DHCPv6 packet.
 
void processPacketAndSendResponse (Pkt6Ptr query)
 Process a single incoming DHCPv6 packet and sends the response.
 
void processPacketAndSendResponseNoThrow (Pkt6Ptr query)
 Process a single incoming DHCPv6 packet and sends the response.
 
int run ()
 Main server processing loop.
 
void runOne ()
 Main server processing step.
 
void sendResponseNoThrow (hooks::CalloutHandlePtr &callout_handle, Pkt6Ptr query, Pkt6Ptr &rsp, ConstSubnet6Ptr &subnet)
 Process an unparked DHCPv6 packet and sends the response.
 
void shutdown () override
 Instructs the server to shut down.
 
uint16_t getServerPort () const
 Get UDP port on which server should listen.
 
void startD2 ()
 Starts DHCP_DDNS client IO if DDNS updates are enabled.
 
void stopD2 ()
 Stops DHCP_DDNS client IO if DDNS updates are enabled.
 
virtual void d2ClientErrorHandler (const dhcp_ddns::NameChangeSender::Result result, dhcp_ddns::NameChangeRequestPtr &ncr)
 Implements the error handler for DHCP_DDNS IO errors.
 
void discardPackets ()
 Discards parked packets Clears the packet parking lots of all packets.
 
void initContext0 (const Pkt6Ptr &query, AllocEngine::ClientContext6 &ctx)
 Initialize client context (first part).
 
bool earlyGHRLookup (const Pkt6Ptr &query, AllocEngine::ClientContext6 &ctx)
 Initialize client context and perform early global reservations lookup.
 
void processPacketBufferSend (hooks::CalloutHandlePtr &callout_handle, Pkt6Ptr &rsp)
 Executes buffer6_send callout and sends the response.
 
std::list< std::list< std::string > > jsonPathsToRedact () const final override
 Return a list of all paths that contain passwords or secrets for kea-dhcp6.
 
- Public Member Functions inherited from isc::process::Daemon
 Daemon ()
 Default constructor.
 
virtual ~Daemon ()
 Destructor.
 
void checkConfigFile () const
 Checks the configuration file name.
 
void createPIDFile (int pid=0)
 Creates the PID file.
 
std::string getConfigFile () const
 Returns config file name.
 
int getExitValue ()
 Fetches the exit value.
 
std::string getPIDFileDir () const
 Returns the directory used when forming default PID file name.
 
std::string getPIDFileName () const
 Returns the current PID file name.
 
isc::data::ConstElementPtr redactConfig (isc::data::ConstElementPtr const &config)
 Redact a configuration.
 
void setConfigFile (const std::string &config_file)
 Sets the configuration file name.
 
void setExitValue (int value)
 Sets the exit value.
 
void setPIDFileDir (const std::string &pid_file_dir)
 Sets the PID file directory.
 
void setPIDFileName (const std::string &pid_file_name)
 Sets PID file name.
 
virtual size_t writeConfigFile (const std::string &config_file, isc::data::ConstElementPtr cfg=isc::data::ConstElementPtr()) const
 Writes current configuration to specified file.
 

Static Public Member Functions

static isc::data::ConstElementPtr checkConfig (isc::data::ConstElementPtr config)
 Configuration checker.
 
static isc::data::ConstElementPtr finishConfigHookLibraries (isc::data::ConstElementPtr config)
 Configuration checker for hook libraries.
 
static ControlledDhcpv6SrvgetInstance ()
 Returns pointer to the sole instance of Dhcpv6Srv.
 
static isc::data::ConstElementPtr processConfig (isc::data::ConstElementPtr config)
 Configuration processor.
 
- Static Public Member Functions inherited from isc::dhcp::Dhcpv6Srv
static std::string getVersion (bool extended)
 returns Kea version on stdout and exit.
 
static void setHostIdentifiers (AllocEngine::ClientContext6 &ctx)
 Set host identifiers within a context.
 
static uint16_t checkRelaySourcePort (const Pkt6Ptr &query)
 Used for DHCPv4-over-DHCPv6 too.
 
static void processStatsSent (const Pkt6Ptr &response)
 Updates statistics for transmitted packets.
 
static int getHookIndexBuffer6Send ()
 Returns the index of the buffer6_send hook.
 
- Static Public Member Functions inherited from isc::process::Daemon
static void configureLogger (const isc::data::ConstElementPtr &log_config, const isc::process::ConfigPtr &storage)
 Configures logger.
 
static std::string getDefaultLoggerName ()
 Returns default logger name.
 
static std::string getProcName ()
 returns the process name This value is used as when forming the default PID file name
 
static bool getVerbose ()
 Returns if running in verbose mode.
 
static std::string getVersion (bool extended)
 returns Kea version on stdout and exits.
 
static void loggerInit (const char *log_name, bool verbose)
 Initializes logger.
 
static void setDefaultLoggerName (const std::string &logger)
 Sets the default logger name.
 
static void setProcName (const std::string &proc_name)
 Sets the process name.
 
static void setVerbose (const bool verbose)
 Sets or clears verbose mode.
 

Additional Inherited Members

- Public Types inherited from isc::dhcp::Dhcpv6Srv
enum  RequirementLevel { FORBIDDEN , MANDATORY , OPTIONAL }
 defines if certain option may, must or must not appear More...
 
- Static Public Attributes inherited from isc::dhcp::Dhcpv6Srv
static const size_t MIN_MAC_LEN = 6
 Minimum length of a MAC address to be used in DUID generation.
 
- Protected Member Functions inherited from isc::dhcp::Dhcpv6Srv
void setPacketStatisticsDefaults ()
 This function sets statistics related to DHCPv6 packets processing to their initial values.
 
bool testServerID (const Pkt6Ptr &pkt)
 Compare received server id with our server id.
 
bool testUnicast (const Pkt6Ptr &pkt) const
 Check if the message can be sent to unicast.
 
bool sanityCheck (const Pkt6Ptr &pkt)
 Verifies if specified packet meets RFC requirements.
 
void sanityCheck (const Pkt6Ptr &pkt, RequirementLevel clientid, RequirementLevel serverid)
 verifies if specified packet meets RFC requirements
 
void sanityCheckDUID (const OptionPtr &opt, const std::string &opt_name)
 verifies if received DUID option (client-id or server-id) is sane
 
Pkt6Ptr processSolicit (AllocEngine::ClientContext6 &ctx)
 Processes incoming Solicit and returns response.
 
Pkt6Ptr processRequest (AllocEngine::ClientContext6 &ctx)
 Processes incoming Request and returns Reply response.
 
Pkt6Ptr processRenew (AllocEngine::ClientContext6 &ctx)
 Processes incoming Renew message.
 
Pkt6Ptr processRebind (AllocEngine::ClientContext6 &ctx)
 Processes incoming Rebind message.
 
Pkt6Ptr processConfirm (AllocEngine::ClientContext6 &ctx)
 Processes incoming Confirm message and returns Reply.
 
Pkt6Ptr processRelease (AllocEngine::ClientContext6 &ctx)
 Process incoming Release message.
 
Pkt6Ptr processDecline (AllocEngine::ClientContext6 &ctx)
 Process incoming Decline message.
 
Pkt6Ptr processInfRequest (AllocEngine::ClientContext6 &ctx)
 Processes incoming Information-request message.
 
void processDhcp4Query (const Pkt6Ptr &dhcp4_query)
 Processes incoming DHCPv4-query message.
 
isc::dhcp::ConstSubnet6Ptr selectSubnet (const Pkt6Ptr &question, bool &drop)
 Selects a subnet for a given client's packet.
 
OptionPtr assignIA_NA (const isc::dhcp::Pkt6Ptr &query, AllocEngine::ClientContext6 &ctx, Option6IAPtr ia)
 Processes IA_NA option (and assigns addresses if necessary).
 
OptionPtr assignIA_PD (const Pkt6Ptr &query, AllocEngine::ClientContext6 &ctx, boost::shared_ptr< Option6IA > ia)
 Processes IA_PD option (and assigns prefixes if necessary).
 
OptionPtr extendIA_NA (const Pkt6Ptr &query, AllocEngine::ClientContext6 &ctx, Option6IAPtr ia)
 Extends lifetime of the specific IA_NA option.
 
OptionPtr extendIA_PD (const Pkt6Ptr &query, AllocEngine::ClientContext6 &ctx, Option6IAPtr ia)
 Extends lifetime of the prefix.
 
OptionPtr releaseIA_NA (const DuidPtr &duid, const Pkt6Ptr &query, int &general_status, boost::shared_ptr< Option6IA > ia, Lease6Ptr &old_lease)
 Releases specific IA_NA option.
 
OptionPtr releaseIA_PD (const DuidPtr &duid, const Pkt6Ptr &query, int &general_status, boost::shared_ptr< Option6IA > ia, Lease6Ptr &old_lease)
 Releases specific IA_PD option.
 
void copyClientOptions (const Pkt6Ptr &question, Pkt6Ptr &answer)
 Copies required options from client message to server answer.
 
void buildCfgOptionList (const Pkt6Ptr &question, AllocEngine::ClientContext6 &ctx, CfgOptionList &co_list)
 Build the configured option list.
 
void appendDefaultOptions (const Pkt6Ptr &question, Pkt6Ptr &answer, const CfgOptionList &co_list)
 Appends default options to server's answer.
 
void appendRequestedOptions (const Pkt6Ptr &question, Pkt6Ptr &answer, const CfgOptionList &co_list)
 Appends requested options to server's answer.
 
void appendRequestedVendorOptions (const Pkt6Ptr &question, Pkt6Ptr &answer, AllocEngine::ClientContext6 &ctx, const CfgOptionList &co_list)
 Appends requested vendor options to server's answer.
 
void assignLeases (const Pkt6Ptr &question, Pkt6Ptr &answer, AllocEngine::ClientContext6 &ctx)
 Assigns leases.
 
void processClientFqdn (const Pkt6Ptr &question, const Pkt6Ptr &answer, AllocEngine::ClientContext6 &ctx)
 Processes Client FQDN Option.
 
void createNameChangeRequests (const Pkt6Ptr &answer, AllocEngine::ClientContext6 &ctx)
 Creates a number of isc::dhcp_ddns::NameChangeRequest objects based on the DHCPv6 Client FQDN Option.
 
void extendLeases (const Pkt6Ptr &query, Pkt6Ptr &reply, AllocEngine::ClientContext6 &ctx)
 Attempts to extend the lifetime of IAs.
 
void setTeeTimes (uint32_t preferred_lft, const ConstSubnet6Ptr &subnet, Option6IAPtr &resp)
 Sets the T1 and T2 timers in the outbound IA.
 
void releaseLeases (const Pkt6Ptr &release, Pkt6Ptr &reply, AllocEngine::ClientContext6 &ctx)
 Attempts to release received addresses.
 
virtual Pkt6Ptr receivePacket (int timeout)
 dummy wrapper around IfaceMgr::receive6
 
virtual void sendPacket (const Pkt6Ptr &pkt)
 dummy wrapper around IfaceMgr::send()
 
void classifyPacket (const Pkt6Ptr &pkt)
 Assigns incoming packet to zero or more classes.
 
void evaluateClasses (const Pkt6Ptr &pkt, bool depend_on_known)
 Evaluate classes.
 
void setReservedClientClasses (const Pkt6Ptr &pkt, const AllocEngine::ClientContext6 &ctx)
 Assigns classes retrieved from host reservation database.
 
void conditionallySetReservedClientClasses (const Pkt6Ptr &pkt, const AllocEngine::ClientContext6 &ctx)
 Assigns classes retrieved from host reservation database if they haven't been yet set.
 
void evaluateAdditionalClasses (const Pkt6Ptr &pkt, AllocEngine::ClientContext6 &ctx)
 Evaluates classes in the additional classes lists.
 
void processRSOO (const Pkt6Ptr &query, const Pkt6Ptr &rsp)
 Processes Relay-supplied options, if present.
 
void initContext (AllocEngine::ClientContext6 &ctx, bool &drop)
 Initializes client context for specified packet.
 
bool declineLeases (const Pkt6Ptr &decline, Pkt6Ptr &reply, AllocEngine::ClientContext6 &ctx)
 Attempts to decline all leases in specified Decline message.
 
OptionPtr declineIA (const Pkt6Ptr &decline, const DuidPtr &duid, int &general_status, boost::shared_ptr< Option6IA > ia, Lease6Collection &new_leases)
 Declines leases in a single IA_NA option.
 
bool declineLease (const Pkt6Ptr &decline, const Lease6Ptr lease, boost::shared_ptr< Option6IA > ia_rsp)
 Declines specific IPv6 lease.
 
void setStatusCode (boost::shared_ptr< Option6IA > &container, const OptionPtr &status)
 A simple utility method that sets the status code.
 
void checkDynamicSubnetChange (const Pkt6Ptr &question, Pkt6Ptr &answer, AllocEngine::ClientContext6 &ctx, const ConstSubnet6Ptr orig_subnet)
 Iterates over new leases, update stale DNS entries.
 
OptionPtr getPDExclude (const AllocEngine::ClientContext6 &ctx, const Lease6Ptr &lease)
 Return the PD exclude option to include.
 
void processPacketPktSend (hooks::CalloutHandlePtr &callout_handle, Pkt6Ptr &query, Pkt6Ptr &rsp, ConstSubnet6Ptr &subnet)
 Executes pkt6_send callout.
 
- Protected Member Functions inherited from isc::process::Daemon
std::string makePIDFileName () const
 Manufacture the pid file name.
 
- Static Protected Member Functions inherited from isc::dhcp::Dhcpv6Srv
static std::string duidToString (const OptionPtr &opt)
 converts DUID to text Converts content of DUID option to a text representation, e.g.
 
static void removeDependentEvaluatedClasses (const Pkt6Ptr &pkt)
 Removed evaluated client classes.
 
static HWAddrPtr getMAC (const Pkt6Ptr &pkt)
 Attempts to get a MAC/hardware address using configured sources.
 
- Protected Attributes inherited from isc::dhcp::Dhcpv6Srv
uint16_t server_port_
 UDP port number on which server listens.
 
uint16_t client_port_
 UDP port number to which server sends all responses.
 
OptionPtr serverid_
 Server DUID (to be sent in server-identifier option)
 
volatile bool shutdown_
 Indicates if shutdown is in progress.
 
boost::shared_ptr< AllocEnginealloc_engine_
 Allocation Engine.
 
std::queue< isc::dhcp_ddns::NameChangeRequestname_change_reqs_
 Holds a list of isc::dhcp_ddns::NameChangeRequest objects, which are waiting for sending to kea-dhcp-ddns module.
 
NetworkStatePtr network_state_
 Holds information about disabled DHCP service and/or disabled subnet/network scopes.
 
CBControlDHCPv6Ptr cb_control_
 Controls access to the configuration backends.
 
- Protected Attributes inherited from isc::process::Daemon
isc::asiolink::IOSignalSetPtr signal_set_
 A pointer to the object installing custom signal handlers.
 
boost::posix_time::ptime start_
 Timestamp of the start of the daemon.
 
- Static Protected Attributes inherited from isc::dhcp::Dhcpv6Srv
static const std::string VENDOR_CLASS_PREFIX
 this is a prefix added to the content of vendor-class option
 

Detailed Description

Controlled version of the DHCPv6 server.

This is a class that is responsible for DHCPv6 server being controllable, by reading configuration file from disk.

Definition at line 25 of file ctrl_dhcp6_srv.h.

Constructor & Destructor Documentation

◆ ControlledDhcpv6Srv()

◆ ~ControlledDhcpv6Srv()

Member Function Documentation

◆ checkConfig()

isc::data::ConstElementPtr isc::dhcp::ControlledDhcpv6Srv::checkConfig ( isc::data::ConstElementPtr config)
static

Configuration checker.

This is a method for checking incoming configuration.

Parameters
configJSON representation of the new configuration
Returns
status of the config check

Definition at line 1203 of file ctrl_dhcp6_srv.cc.

References isc::dhcp::configureDhcp6Server(), isc::config::CONTROL_RESULT_ERROR, isc::config::createAnswer(), isc::dhcp::DBG_DHCP6_COMMAND, isc::dhcp::DHCP6_CONFIG_RECEIVED, isc::dhcp::dhcp6_logger, getInstance(), and LOG_DEBUG.

+ Here is the call graph for this function:

◆ cleanup()

void isc::dhcp::ControlledDhcpv6Srv::cleanup ( )
virtual

Performs cleanup, immediately before termination.

This method performs final clean up, just before the Dhcpv6Srv object is destroyed. Currently it is a no-op.

Reimplemented from isc::process::Daemon.

Definition at line 124 of file ctrl_dhcp6_srv.cc.

References isc::dhcp::Dhcpv6Srv::getIOService(), and isc::process::Daemon::signal_set_.

Referenced by ~ControlledDhcpv6Srv().

+ Here is the call graph for this function:

◆ finishConfigHookLibraries()

isc::data::ConstElementPtr isc::dhcp::ControlledDhcpv6Srv::finishConfigHookLibraries ( isc::data::ConstElementPtr config)
static

Configuration checker for hook libraries.

This is a method for checking incoming configuration in the hooks libraries. It calls dhcp4_srv_configured hook point for all hooks.

Parameters
configJSON representation of the new configuration
Returns
status of the config check

Definition at line 1169 of file ctrl_dhcp6_srv.cc.

References isc::hooks::HooksManager::callCallouts(), isc::hooks::HooksManager::calloutsPresent(), isc::config::CONTROL_RESULT_ERROR, isc::config::createAnswer(), isc::hooks::HooksManager::createCalloutHandle(), isc::db::error, getInstance(), Hooks, isc::dhcp::CfgMgr::instance(), and isc::hooks::CalloutHandle::NEXT_STEP_DROP.

Referenced by isc::dhcp::configureDhcp6Server(), and processConfig().

+ Here is the call graph for this function:

◆ getInstance()

static ControlledDhcpv6Srv * isc::dhcp::ControlledDhcpv6Srv::getInstance ( )
inlinestatic

Returns pointer to the sole instance of Dhcpv6Srv.

Returns
server instance (may return NULL, if called before server is spawned)

Definition at line 114 of file ctrl_dhcp6_srv.h.

Referenced by ControlledDhcpv6Srv(), checkConfig(), finishConfigHookLibraries(), and processConfig().

◆ init()

void isc::dhcp::ControlledDhcpv6Srv::init ( const std::string & config_file)

Initializes the server.

It reads the JSON file from disk or may perform any other setup operation. In particular, it also install signal handlers.

This method may throw if initialization fails.

Definition at line 99 of file ctrl_dhcp6_srv.cc.

References isc::config::CONTROL_RESULT_SUCCESS, isc::dhcp::Dhcpv6Srv::getIOService(), isc_throw, loadConfigFile(), isc::config::parseAnswer(), isc::process::Daemon::signal_set_, and isc::process::Daemon::start_.

+ Here is the call graph for this function:

◆ loadConfigFile()

ConstElementPtr isc::dhcp::ControlledDhcpv6Srv::loadConfigFile ( const std::string & file_name)

Configure DHCPv6 server using the configuration file specified.

This function is used to both configure the DHCP server on its startup and dynamically reconfigure the server when SIGHUP signal is received.

It fetches DHCPv6 server's configuration from the 'Dhcp6' section of the JSON configuration file.

This utility method is called whenever we know a filename of the config and need to load it. It calls config-set command once the content of the file has been loaded and verified to be a sane JSON configuration. config-set handler will process the config file (apply it as current configuration).

Parameters
file_namename of the file to be loaded
Returns
status of the file loading and outcome of config-set

Definition at line 130 of file ctrl_dhcp6_srv.cc.

References isc::config::CONTROL_RESULT_SUCCESS, isc::config::createCommand(), isc::dhcp::DHCP6_CONFIG_LOAD_FAIL, isc::dhcp::dhcp6_logger, isc::dhcp::DHCP6_MULTI_THREADING_INFO, isc::config::CommandMgr::instance(), isc::dhcp::CfgMgr::instance(), isc::util::MultiThreadingMgr::instance(), isc_throw, LOG_ERROR, LOG_WARN, isc::data::Element::map, isc::config::parseAnswer(), isc::dhcp::Parser6Context::parseFile(), isc::dhcp::Parser6Context::PARSER_DHCP6, and isc::Exception::what().

Referenced by init().

+ Here is the call graph for this function:

◆ processConfig()

isc::data::ConstElementPtr isc::dhcp::ControlledDhcpv6Srv::processConfig ( isc::data::ConstElementPtr config)
static

Configuration processor.

This is a method for handling incoming configuration updates. This method should be called by all configuration backends when the server is starting up or when configuration has changed.

As pointer to this method is used a callback in ASIO used in ModuleCCSession, it has to be static.

Parameters
configtextual representation of the new configuration
Returns
status of the config update

Definition at line 958 of file ctrl_dhcp6_srv.cc.

References isc::dhcp::CfgMultiThreading::apply(), isc::dhcp::LibDHCP::commitRuntimeOptionDefs(), isc::dhcp::configureDhcp6Server(), isc::config::CONTROL_RESULT_ERROR, isc::dhcp::HostMgr::create(), isc::config::createAnswer(), D6O_SERVERID, isc::db::DatabaseConnection::db_failed_callback_, isc::db::DatabaseConnection::db_lost_callback_, isc::db::DatabaseConnection::db_recovered_callback_, isc::dhcp::DBG_DHCP6_COMMAND, isc::dhcp::LeaseMgrFactory::destroy(), isc::dhcp::DHCP6_CONFIG_PACKET_QUEUE, isc::dhcp::DHCP6_CONFIG_RECEIVED, isc::dhcp::dhcp6_logger, isc::dhcp::DHCP6_USING_SERVERID, finishConfigHookLibraries(), getInstance(), isc::dhcp::Dhcp6to4Ipc::instance(), isc::dhcp::IfaceMgr::instance(), isc::dhcp::CfgMgr::instance(), isc::dhcp::TimerMgr::instance(), LOG_DEBUG, LOG_INFO, isc::asiolink::IntervalTimer::ONE_SHOT, isc::dhcp::CfgIface::open_sockets_failed_callback_, isc::config::parseAnswer(), and isc::dhcp::Option::V6.

+ Here is the call graph for this function:

◆ shutdownServer()

void isc::dhcp::ControlledDhcpv6Srv::shutdownServer ( int exit_value)
virtual

Initiates shutdown procedure for the whole DHCPv6 server.

Parameters
exit_valueinteger value to the process should exit with.

Definition at line 1328 of file ctrl_dhcp6_srv.cc.

References isc::dhcp::Dhcpv6Srv::getIOService(), isc::process::Daemon::setExitValue(), and isc::dhcp::Dhcpv6Srv::shutdown().

+ Here is the call graph for this function:

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