Kea 2.7.1
d2_client_cfg.h
Go to the documentation of this file.
1// Copyright (C) 2013-2022 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 D2_CLIENT_CFG_H
8#define D2_CLIENT_CFG_H
9
14
15#include <asiolink/io_address.h>
16#include <cc/cfg_to_element.h>
17#include <cc/user_context.h>
18#include <dhcp_ddns/ncr_io.h>
19#include <dhcpsrv/cfg_globals.h>
21#include <util/optional.h>
22
23#include <boost/shared_ptr.hpp>
24
25#include <stdint.h>
26#include <string>
27#include <vector>
28
29namespace isc {
30namespace dhcp {
31
35public:
36
42 D2ClientError(const char* file, size_t line, const char* what)
43 : isc::Exception(file, line, what) {}
44};
45
49
50
58public:
60 static const char* DFT_SERVER_IP;
61 static const size_t DFT_SERVER_PORT;
62 static const char* DFT_V4_SENDER_IP;
63 static const char* DFT_V6_SENDER_IP;
64 static const size_t DFT_SENDER_PORT;
65 static const size_t DFT_MAX_QUEUE_SIZE;
66 static const char* DFT_NCR_PROTOCOL;
67 static const char* DFT_NCR_FORMAT;
68 static const bool DFT_OVERRIDE_NO_UPDATE;
69 static const bool DFT_OVERRIDE_CLIENT_UPDATE;
70 static const char* DFT_REPLACE_CLIENT_NAME_MODE;
71 static const char* DFT_GENERATED_PREFIX;
72 static const char* DFT_HOSTNAME_CHAR_SET;
74
82
98 D2ClientConfig(const bool enable_updates,
99 const isc::asiolink::IOAddress& server_ip,
100 const size_t server_port,
101 const isc::asiolink::IOAddress& sender_ip,
102 const size_t sender_port,
103 const size_t max_queue_size,
104 const dhcp_ddns::NameChangeProtocol& ncr_protocol,
105 const dhcp_ddns::NameChangeFormat& ncr_format);
106
110
112 virtual ~D2ClientConfig();
113
115 bool getEnableUpdates() const {
116 return(enable_updates_);
117 }
118
121 return(server_ip_);
122 }
123
125 size_t getServerPort() const {
126 return(server_port_);
127 }
128
131 return(sender_ip_);
132 }
133
135 size_t getSenderPort() const {
136 return(sender_port_);
137 }
138
140 size_t getMaxQueueSize() const {
141 return(max_queue_size_);
142 }
143
146 return(ncr_protocol_);
147 }
148
151 return(ncr_format_);
152 }
153
155 bool operator == (const D2ClientConfig& other) const;
156
158 bool operator != (const D2ClientConfig& other) const;
159
161 std::string toText() const;
162
170 void enableUpdates(bool enable);
171
182 static ReplaceClientNameMode stringToReplaceClientNameMode(const std::string& mode_str);
183
190 static std::string replaceClientNameModeToString(const ReplaceClientNameMode& mode);
191
195 virtual isc::data::ElementPtr toElement() const;
196
202 virtual void validateContents();
203
204private:
206 bool enable_updates_;
207
209 isc::asiolink::IOAddress server_ip_;
210
212 size_t server_port_;
213
215 isc::asiolink::IOAddress sender_ip_;
216
218 size_t sender_port_;
219
221 size_t max_queue_size_;
222
225 dhcp_ddns::NameChangeProtocol ncr_protocol_;
226
229 dhcp_ddns::NameChangeFormat ncr_format_;
230};
231
232std::ostream&
233operator<<(std::ostream& os, const D2ClientConfig& config);
234
236typedef boost::shared_ptr<D2ClientConfig> D2ClientConfigPtr;
237
238} // namespace isc
239} // namespace dhcp
240
241#endif
This is a base class for exceptions thrown from the DNS library module.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
Acts as a storage vault for D2 client configuration.
std::string toText() const
Generates a string representation of the class contents.
bool getEnableUpdates() const
Return whether or not DHCP-DDNS updating is enabled.
size_t getServerPort() const
Return the IP port of kea-dhcp-ddns.
static const bool DFT_OVERRIDE_CLIENT_UPDATE
static const char * DFT_NCR_FORMAT
static ReplaceClientNameMode stringToReplaceClientNameMode(const std::string &mode_str)
Converts labels to ReplaceClientNameMode enum values.
ReplaceClientNameMode
Defines the client name replacement modes.
static std::string replaceClientNameModeToString(const ReplaceClientNameMode &mode)
Converts NameChangeFormat enums to text labels.
static const char * DFT_V4_SENDER_IP
static const size_t DFT_SENDER_PORT
const dhcp_ddns::NameChangeProtocol & getNcrProtocol() const
Return the socket protocol to use with kea-dhcp-ddns.
virtual void validateContents()
Validates member values.
size_t getMaxQueueSize() const
Return Maximum sender queue size.
const dhcp_ddns::NameChangeFormat & getNcrFormat() const
Return the kea-dhcp-ddns request format.
bool operator==(const D2ClientConfig &other) const
Compares two D2ClientConfigs for equality.
static const char * DFT_HOSTNAME_CHAR_REPLACEMENT
const isc::asiolink::IOAddress & getServerIp() const
Return the IP address of kea-dhcp-ddns (IPv4 or IPv6).
static const char * DFT_NCR_PROTOCOL
void enableUpdates(bool enable)
Sets enable-updates flag to the given value.
static const bool DFT_OVERRIDE_NO_UPDATE
virtual ~D2ClientConfig()
Destructor.
static const char * DFT_SERVER_IP
Default configuration constants.
size_t getSenderPort() const
Return the IP port client should use to send.
static const char * DFT_V6_SENDER_IP
const isc::asiolink::IOAddress & getSenderIp() const
Return the IP address client should use to send.
bool operator!=(const D2ClientConfig &other) const
Compares two D2ClientConfigs for inequality.
virtual isc::data::ElementPtr toElement() const
Unparse a configuration object.
static const size_t DFT_SERVER_PORT
static const char * DFT_GENERATED_PREFIX
static const char * DFT_REPLACE_CLIENT_NAME_MODE
static const char * DFT_HOSTNAME_CHAR_SET
static const size_t DFT_MAX_QUEUE_SIZE
D2ClientConfig()
Default constructor The default constructor creates an instance that has updates disabled.
An exception that is thrown if an error occurs while configuring the D2 DHCP DDNS client.
D2ClientError(const char *file, size_t line, const char *what)
constructor
boost::shared_ptr< Element > ElementPtr
Definition data.h:28
NameChangeFormat
Defines the list of data wire formats supported.
Definition ncr_msg.h:59
NameChangeProtocol
Defines the list of socket protocols supported.
Definition ncr_io.h:69
boost::shared_ptr< const CfgGlobals > ConstCfgGlobalsPtr
Const shared pointer to a CfgGlobals instance.
boost::shared_ptr< D2ClientConfig > D2ClientConfigPtr
Defines a pointer for D2ClientConfig instances.
std::function< ConstCfgGlobalsPtr()> FetchNetworkGlobalsFn
Callback function for D2ClientConfig that retrieves globally configured parameters.
Defines the logger used by the top-level component of kea-lfc.
This file defines abstract classes for exchanging NameChangeRequests.
Abstract class for configuration Cfg_* classes.
Base class for user context.