diff options
Diffstat (limited to 'src/lib/dhcp_ddns/libdhcp_ddns.dox')
-rw-r--r-- | src/lib/dhcp_ddns/libdhcp_ddns.dox | 61 |
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). + +*/ |