libdhcp_ddns.dox 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright (C) 2013-2014 Internet Systems Consortium, Inc. ("ISC")
  2. //
  3. // Permission to use, copy, modify, and/or distribute this software for any
  4. // purpose with or without fee is hereby granted, provided that the above
  5. // copyright notice and this permission notice appear in all copies.
  6. //
  7. // THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
  8. // REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
  9. // AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
  10. // INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  11. // LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  12. // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  13. // PERFORMANCE OF THIS SOFTWARE.
  14. /**
  15. @page libdhcp_ddns libdhcp_ddns - DHCP_DDNS Request I/O Library
  16. @section libdhcp_ddnsIntro Introduction
  17. This is a library of classes (in the isc::dhcp_ddns namespace) for sending
  18. and receiving requests used by ISC's DHCP-DDNS (aka D2) service to carry
  19. out DHCP-driven DNS updates. Each request contains the following information:
  20. - change_type - indicates if this is a request to add or remove DNS entries
  21. - forward_change - indicates if the forward DNS zone (the one that
  22. contains name to address mappings) should be updated
  23. - reverse_change - indicates if reverse DNS zone (which contains the
  24. address to name mappings) should be updated
  25. - fqdn - the fully qualified domain name whose DNS entries should be updated
  26. - ip_address - IP address (v4 or v6) leased to the client with the
  27. given FQDN
  28. - dhcid - DHCID (a form of identification) of the client to whom the IP
  29. address is leased
  30. - lease_expires_on - timestamp containing the date/time the lease expires
  31. - lease_length - duration in seconds for which the lease is valid.
  32. These requests are implemented in this library by the class,
  33. isc::dhcp_ddns::NameChangeRequest. This class provides services for
  34. constructing the requests as well as marshalling them to and from various
  35. transport formats. Currently, the only format supported is JSON, however the
  36. design of the classes in this library is such that supporting additional
  37. formats will be easy to add. The JSON "schema" is documented here:
  38. isc::dhcp_ddns::NameChangeRequest::fromJSON().
  39. For sending and receiving NameChangeRequests, this library supplies an abstract
  40. pair of classes, isc::dhcp_ddns::NameChangeSender and
  41. isc::dhcp_ddns::NameChangeListener. NameChangeSender defines the public
  42. interface that DHCP_DDNS clients, such as DHCP servers, use for sending
  43. requests to DHCP_DDNS. NameChangeListener is used by request consumers,
  44. primarily the DHCP_DDNS service, for receiving the requests.
  45. By providing abstract interfaces, the implementation isolates the senders and
  46. listeners from any underlying details of request transportation. This was done
  47. to allow support for a variety of transportation mechanisms. Currently, the
  48. only transport supported is via UDP Sockets.
  49. The UDP implementation is provided by isc::dhcp_ddns::NameChangeUDPSender
  50. and isc::dhcp_ddns::NameChangeUDPListener. The implementation is strictly
  51. unidirectional: there is no explicit acknowledgement of receipt of a
  52. request so, as it is UDP, no guarantee of delivery.
  53. */