Kea  2.1.7-git
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>
20 #include <exceptions/exceptions.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 
29 namespace isc {
30 namespace dhcp {
31 
34 class D2ClientError : public isc::Exception {
35 public:
36 
42  D2ClientError(const char* file, size_t line, const char* what)
43  : isc::Exception(file, line, what) {}
44 };
45 
48 typedef std::function<ConstCfgGlobalsPtr()> FetchNetworkGlobalsFn;
49 
50 
58 public:
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;
73  static const char* DFT_HOSTNAME_CHAR_REPLACEMENT;
74 
80  RCM_WHEN_NOT_PRESENT
81  };
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 
109  D2ClientConfig();
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 
204 private:
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 
232 std::ostream&
233 operator<<(std::ostream& os, const D2ClientConfig& config);
234 
236 typedef boost::shared_ptr<D2ClientConfig> D2ClientConfigPtr;
237 
238 } // namespace isc
239 } // namespace dhcp
240 
241 #endif
static const char * DFT_NCR_PROTOCOL
Definition: d2_client_cfg.h:66
static const char * DFT_SERVER_IP
Default configuration constants.
Definition: d2_client_cfg.h:60
const isc::asiolink::IOAddress & getServerIp() const
Return the IP address of kea-dhcp-ddns (IPv4 or IPv6).
static const char * DFT_REPLACE_CLIENT_NAME_MODE
Definition: d2_client_cfg.h:70
static const char * DFT_V6_SENDER_IP
Definition: d2_client_cfg.h:63
This file defines abstract classes for exchanging NameChangeRequests.
static const char * DFT_HOSTNAME_CHAR_SET
Definition: d2_client_cfg.h:72
Base class for user context.
Definition: user_context.h:22
static const size_t DFT_MAX_QUEUE_SIZE
Definition: d2_client_cfg.h:65
size_t getServerPort() const
Return the IP port of kea-dhcp-ddns.
static const size_t DFT_SERVER_PORT
Definition: d2_client_cfg.h:61
bool operator!=(const Element &a, const Element &b)
Definition: data.cc:214
static const char * DFT_NCR_FORMAT
Definition: d2_client_cfg.h:67
static const bool DFT_OVERRIDE_CLIENT_UPDATE
Definition: d2_client_cfg.h:69
boost::shared_ptr< Element > ElementPtr
Definition: data.h:24
static const bool DFT_OVERRIDE_NO_UPDATE
Definition: d2_client_cfg.h:68
NameChangeFormat
Defines the list of data wire formats supported.
Definition: ncr_msg.h:60
const dhcp_ddns::NameChangeProtocol & getNcrProtocol() const
Return the socket protocol to use with kea-dhcp-ddns.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
size_t getSenderPort() const
Return the IP port client should use to send.
bool operator==(const Element &a, const Element &b)
Definition: data.cc:210
size_t getMaxQueueSize() const
Return Maximum sender queue size.
std::function< ConstCfgGlobalsPtr()> FetchNetworkGlobalsFn
Callback function for D2ClientConfig that retrieves globally configured parameters.
Definition: d2_client_cfg.h:48
An exception that is thrown if an error occurs while configuring the D2 DHCP DDNS client...
Definition: d2_client_cfg.h:34
static const char * DFT_V4_SENDER_IP
Definition: d2_client_cfg.h:62
Acts as a storage vault for D2 client configuration.
Definition: d2_client_cfg.h:57
static const char * DFT_GENERATED_PREFIX
Definition: d2_client_cfg.h:71
Abstract class for configuration Cfg_* classes.
static const char * DFT_HOSTNAME_CHAR_REPLACEMENT
Definition: d2_client_cfg.h:73
const isc::asiolink::IOAddress & getSenderIp() const
Return the IP address client should use to send.
const dhcp_ddns::NameChangeFormat & getNcrFormat() const
Return the kea-dhcp-ddns request format.
This is a base class for exceptions thrown from the DNS library module.
Defines the logger used by the top-level component of kea-lfc.
ReplaceClientNameMode
Defines the client name replacement modes.
Definition: d2_client_cfg.h:76
std::ostream & operator<<(std::ostream &os, const OpaqueDataTuple &tuple)
Inserts the OpaqueDataTuple as a string into stream.
static const size_t DFT_SENDER_PORT
Definition: d2_client_cfg.h:64
bool getEnableUpdates() const
Return whether or not DHCP-DDNS updating is enabled.
NameChangeProtocol
Defines the list of socket protocols supported.
Definition: ncr_io.h:68
D2ClientError(const char *file, size_t line, const char *what)
constructor
Definition: d2_client_cfg.h:42
boost::shared_ptr< D2ClientConfig > D2ClientConfigPtr
Defines a pointer for D2ClientConfig instances.