summaryrefslogtreecommitdiffstats
path: root/src/lib/dhcp_ddns/libdhcp_ddns.dox
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dhcp_ddns/libdhcp_ddns.dox')
-rw-r--r--src/lib/dhcp_ddns/libdhcp_ddns.dox61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/lib/dhcp_ddns/libdhcp_ddns.dox b/src/lib/dhcp_ddns/libdhcp_ddns.dox
new file mode 100644
index 0000000..c285fd8
--- /dev/null
+++ b/src/lib/dhcp_ddns/libdhcp_ddns.dox
@@ -0,0 +1,61 @@
+// Copyright (C) 2013-2020 Internet Systems Consortium, Inc. ("ISC")
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+/**
+@page libdhcp_ddns libkea-dhcp_ddns - DHCP_DDNS Request I/O Library
+
+@section libdhcp_ddnsIntro Introduction
+
+This is a library of classes (in the isc::dhcp_ddns namespace) for sending
+and receiving requests used by ISC's DHCP-DDNS (aka D2) service to carry
+out DHCP-driven DNS updates. Each request contains the following information:
+
+ - change-type - indicates if this is a request to add or remove DNS entries
+ - forward-change - indicates if the forward DNS zone (the one that
+ contains name to address mappings) should be updated
+ - reverse-change - indicates if reverse DNS zone (which contains the
+ address to name mappings) should be updated
+ - fqdn - the fully qualified domain name whose DNS entries should be updated
+ - ip-address - IP address (v4 or v6) leased to the client with the
+ given FQDN
+ - dhcid - DHCID (a form of identification) of the client to whom the IP
+ address is leased
+ - lease-expires-on - timestamp containing the date/time the lease expires
+ - lease-length - duration in seconds for which the lease is valid.
+
+These requests are implemented in this library by the class,
+isc::dhcp_ddns::NameChangeRequest. This class provides services for
+constructing the requests as well as marshalling them to and from various
+transport formats. Currently, the only format supported is JSON, however the
+design of the classes in this library is such that supporting additional
+formats will be easy to add. The JSON "schema" is documented here:
+isc::dhcp_ddns::NameChangeRequest::fromJSON().
+
+For sending and receiving NameChangeRequests, this library supplies an abstract
+pair of classes, isc::dhcp_ddns::NameChangeSender and
+isc::dhcp_ddns::NameChangeListener. NameChangeSender defines the public
+interface that DHCP_DDNS clients, such as DHCP servers, use for sending
+requests to DHCP_DDNS. NameChangeListener is used by request consumers,
+primarily the DHCP_DDNS service, for receiving the requests.
+
+By providing abstract interfaces, the implementation isolates the senders and
+listeners from any underlying details of request transportation. This was done
+to allow support for a variety of transportation mechanisms. Currently, the
+only transport supported is via UDP Sockets.
+
+The UDP implementation is provided by isc::dhcp_ddns::NameChangeUDPSender
+and isc::dhcp_ddns::NameChangeUDPListener. The implementation is strictly
+unidirectional: there is no explicit acknowledgment of receipt of a
+request so, as it is UDP, no guarantee of delivery.
+
+@section libdhcp_ddnsMTConsiderations Multi-Threading Consideration for DHCP_DDNS Request I/O Library
+
+By default this library is not thread safe (it uses asynchronous I/O) at
+the exception of the Name Change Request sender class (@c
+isc::dhcp_ddns::NameChangeSender) which is Kea thread safe (i.e. it is
+thread safe when the multi-threading mode is true).
+
+*/