Parcourir la source

[3158] Added doxygen developer's guide page for D2

Added src/bin/d2/images to image path in doc/Doxyfile
Added d2 subpage to doc/devel/mainpage.dox
Added the following:
Thomas Markwalder il y a 11 ans
Parent
commit
e010525d24

+ 1 - 1
doc/Doxyfile

@@ -779,7 +779,7 @@ EXAMPLE_RECURSIVE      = NO
 # directories that contain image that are included in the documentation (see
 # directories that contain image that are included in the documentation (see
 # the \image command).
 # the \image command).
 
 
-IMAGE_PATH             = ../doc/images ../src/lib/hooks/images
+IMAGE_PATH             = ../doc/images ../src/lib/hooks/images ../src/bin/d2/images
 
 
 # The INPUT_FILTER tag can be used to specify a program that doxygen should
 # The INPUT_FILTER tag can be used to specify a program that doxygen should
 # invoke to filter for each input file. Doxygen will invoke the filter program
 # invoke to filter for each input file. Doxygen will invoke the filter program

+ 1 - 0
doc/devel/mainpage.dox

@@ -70,6 +70,7 @@
  *   - @subpage dhcpv6OptionsParse
  *   - @subpage dhcpv6OptionsParse
  *   - @subpage dhcpv6Classifier
  *   - @subpage dhcpv6Classifier
  *   - @subpage dhcpv6Other
  *   - @subpage dhcpv6Other
+ * - @subpage d2
  * - @subpage libdhcp
  * - @subpage libdhcp
  *   - @subpage libdhcpIntro
  *   - @subpage libdhcpIntro
  *   - @subpage libdhcpRelay
  *   - @subpage libdhcpRelay

+ 358 - 0
src/bin/d2/d2.dox

@@ -0,0 +1,358 @@
+// Copyright (C) 2014 Internet Systems Consortium, Inc. ("ISC")
+//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
+//
+// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+// PERFORMANCE OF THIS SOFTWARE.
+
+/**
+ @page d2 DHCP-DDNS Component
+
+Kea is capable of providing DDNS driven by changes to leases based on DHCP
+requests processed by Kea's DHCP servers.  When DDNS updating is enabled,
+the DHCP servers generate requests to update DNS as they make lease changes.
+These requests, implemented by isc::dhcp_ddns::NameChangeRequest (NCR), are sent
+to a separate process, informally known as D2. D2 processes these requests by
+carrying out DDNS conversations with the appropriate DNS servers such that they
+update the DNS data.
+
+The design documentation for D2 can be found here:
+<a href="http://kea.isc.org/wiki/DhcpDdnsDesign">D2 Design</a>).
+
+This document contains several UML diagrams, and a few conventions used within
+these diagrams are worth noting:
+
+- If a class is appearing on class diagram for the first time (within this
+document) its background color will be yellow.  If it has been presented
+already, its background color will be blue and/or its details may not be shown.
+
+- Associations between classes in D2 are implemented in most cases via typedefs,
+sometimes through a small chain of typedefs.  These typedefs are shown for
+accuracy but are unimportant to a general discussion.
+
+
+@section d2CPL Controllable Process Layer (CPL):
+
+D2 is built upon an abstract set of classes referred to as the Controllable
+Process Layer or CPL.  This layer provides the essentials for a controllable,
+configurable, asynchronous process.  They are the result of an effort to
+distill the common facets of process control currently duplicated in in Kea's
+DHCP servers into a reusable construct.  The classes which form this abstract
+base are shown in the following class diagram:
+
+@image html abstract_app_classes.svg  "Controllable Process Layer Classes"
+
+- isc::d2::DControllerBase - provides all of the services necessary to manage
+an application process class derived from DProcess. These services include:
+    - Command line argument handling
+    - Process instantiation and initialization
+    - Support for stand-alone execution
+    - Support for integrated operation as a BIND10 module (session management
+      and event handling)
+    - Process event loop invocation and shutdown
+
+It creates and manages an instance of DProcessBase.  The CPL is designed
+for asynchronous event processing applications.  It is constructed to use ASIO
+library for IO processing.  DControllerBase own an isc::asiolink::io_service instance and it passes this into the DProcessBase constructor and it is this
+service that is used drivel the process's event loop.
+
+DControllerBase also provides the ability to operate one of two modes:
+"stand-alone" mode or "managed" mode.  In stand-alone mode, the controller has
+ no IO of it's own, thus there is two-way control communication between the application and the outside world.
+
+@todo DControllerBase does yet support reading the configuration from a
+command line argument. It's command line argument processing can be very easily
+extended to do so.
+
+In "managed mode" the controller creates a BIND10 Session, allowing it to
+participate as a BIND10 module and therefore receive control commands such as
+configuration updates, status requests, and shutdown.  BIND10 modules are
+required to supply two callbacks: one for configuration events and one for
+command events.  DControllerBase supplies these callbacks which largely
+pass the information through to its DProcessBase instance.  The key aspect
+to take from this is that the controller handles the interface for receiving
+asynchronous commands and the invokes the appropriate services in the process's
+interface.
+
+@todo At the time of this writing Kea is being separated from the BIND10
+framework.  As such, use of the BIND10 Session will be removed but could
+readily be replaced with an authenticated socket connection for receiving and
+responding to directives asynchronously.
+
+- isc::d2::DProcessBase - defines an asynchronous-event processor (i.e.
+application) which provides a uniform interface to:
+    - Instantiate and initialize a process instance
+    - "Run" the application by starting its event loop
+    - Inject events to control the process
+It owns an instance of DCfgMgrBase.
+
+- isc::d2::DCfgMgrBase - provides the mechanisms for managing an application's
+configuration.  This includes services for parsing sets of configuration
+values, storing the parsed information in its converted form, and retrieving
+the information on demand.  It owns an instance of DCfgContextBase, which
+provides a "global" context for information that is accessible before, during,
+and after parsing.
+
+- isc::d2::DCfgContextBase - implements a container for configuration
+information or "context".  It provides a single enclosure for the storage of
+configuration parameters or any other information that needs to accessible
+within a given context.
+
+The following sequence diagram shows how a configuration update, received
+asynchronously through the session command channel, moves through the CPL:
+
+@image html config_sequence.svg "CPL Configuration Update Sequence"
+
+The CPL classes will likely move into a common library.
+
+@section d2ProcesDerivation D2 Application Core Classes
+
+D2's core application classes are DDNS-specific derivations of the CPL as show
+in the diagram below:
+
+@image html d2_app_classes.svg "D2's CPL Derivations"
+
+- isc::d2::D2Controller - entry point for running D2, it processes command line
+options, starts and controls the application process, D2Process.
+
+- isc::d2::D2Process - creates and manages D2's primary resources and implements
+the main event loop described in @ref d2EventLoop.
+
+- isc::d2::D2CfgMgr - creates, updates, and provides access to D2's application
+configuration which is embodied by D2Context.
+
+- isc::d2::D2CfgContext - warehouses D2's application configuration.
+
+@section d2ConfigMgt Configuration Management
+
+D2's configuration management uses the same underlying mechanisms as Kea's DHCP
+servers.  It's configuration information is organized into a hierarchical data
+model which is mirrored in the implementation by a hierarchy of parser classes
+and the runtime classes they instantiate.
+
+D2's data model is is organized as follows:
+
+- A set of application level values such as the D2's IP address, port
+
+- Two lists of "domains": one for Forward DNS and one for Reverse DNS. @n
+  Each domain is described by a zone name and a list of DNS servers that can
+  update that zone.
+
+- A list of TSIG keys for conducting signed DDNS exchanges with DNS servers
+
+The runtime classes that embody this model are shown in the following diagram:
+
+@image html config_data_classes.svg "D2's Configuration Data Classes"
+
+- isc::d2::D2CfgContext - D2-specific derivation of DCfgContextBase. It
+houses the "global" configuration for an instance of D2.
+- isc::d2::DdnsDomainListMgr - manages a list of domains.  Currently there is
+one manager instance for the list of forward domains,  and one for the list of
+reverse domains. In addition the domain list, it will may house other values
+ specific to that list of domains (e.g. enable flag)
+- isc::d2::DdnsDomain - represents a DNS domain (really a zone).  When requests
+are received they are matched to a domain by comparing their FQDN to the domain's name.
+- isc::d2::DnsServerInfo - describes a DNS server which supports DDNS for a
+given domain.
+- isc::d2::TSIGKeyInfo - describes a TSIG key used for authenticated DDNS for
+a given domain.
+
+The parsing classes, as one would expect, parallel the runtime classes quite
+closely. The parsers are named for the runtime class they instantiate and are
+either designed to parse a single occurrence of that class or list of that
+class.  The parser classes are shown in the diagram below:
+
+@image html config_parser_classes.svg "D2's Configuration Parsers"
+
+- isc::d2::DdnsDomainListMgrParser - parser for a domain list manager, it
+creates a domain list parser
+- isc::d2::DdnsDomainListParser - parser for a list of domains, it creates a
+domain parser for domain described in a list domains
+- isc::d2::DdnsDomainParser - Parser for a domain, it creates a DNS server list
+parser
+- isc::d2::DnsServerInfoListParser -  parser for a list of DNS servers, it
+creates a DNS server parser for server described in a list of servers
+- isc::d2::DnsServerInfoParser - parser for DNS server
+- isc::d2::TSIGKeyInfoListParser - parser for a list of TSIG keys, it creates a
+parser for key described in a list of keys
+- isc::d2::TSIGKeyInfoParser
+
+The underlying common libraries for configuration parsing support configuration
+input in JSON format, that complies with a fixed set of generic constructs that
+may be described by a spec file (also JSON).  This mechanism is subject to
+change, but in the meantime, the spec file describe D2's configuration may be
+found here: src/bin/d2/dhcp-ddns.spec
+
+@section d2NCRReceipt Request Reception and Queueing
+
+D2 is designed to receive requests from Kea's DHCP servers, asynchronously and
+store them in queue to be processed.  The classes responsible for this are
+shown in the diagram below:
+
+@image html request_mgt_classes.svg  "Request Management Classes"
+
+- isc::d2::D2QueueMgr - owned by D2Process, it listens for NameChangeRequests
+and queues them for processing. It also provides services for adding,
+finding, and removing queue entries.  It owns the interface used to receive
+requests and thus shields the remainder of D2 from any specific knowledge or
+interaction with this interface.
+- isc::d2::RequestQueue - storage container for the received requests.
+- isc::dhcp_ddns::NameChangeListener - Abstract asynchronous interface for
+receiving requests which uses ASIO to process IO and invoke a callback upon
+request receipt
+- isc::dhcp_ddns::NameChangeUDPListener - Derivation of NameChangeListener
+which supports receiving request via UDP socket
+- isc::dhcp_ddns::NameChangeRequest - embodies a request to update DNS entries
+based upon a DHCP lease change
+
+D2QueueMgr is state-driven, albeit with a very simple state model. The states
+are defined by isc::d2::D2QueueMgr::State, and described in detail in in
+@ref d2_queue_mgr.h.
+
+@section d2DDNSUpdateExecution Update Execution
+
+The DDNS protocol can lead to a multiple step conversation between the updater
+and the DNS server to update entries for a single client.  In addition,
+NameChangeRequests can request changes be made for both forward and reverse
+DNS.  In order to carry out the appropriate conversation, D2 wraps each request
+in a stateful, transaction.
+
+Working such transactions serially can be inefficient, especially if those
+requests involve different DNS servers. Therefore, D2 has been designed to
+work on more than one transaction at a time by creating and managing a list of
+transactions.
+
+The classes which are responsible for carrying out this work are shown in the
+following diagram:
+
+@image html update_exec_classes.svg "Update Execution Classes"
+
+- isc::d2::D2UpdateMgr owned by D2Process, orchestrates the fulfillment of
+each request by managing the execution of its transaction.  Its high level
+method @ref isc::d2::D2UpdateMgr::sweep() is meant to be called whenever IO
+events occur.  The following steps are performed each time the method is called:
+    - Any transaction which has been completed, is logged and culled from the
+    transaction list.
+    - Start a new transaction for the next queued request (if any)
+
+- isc::d2::NameChangeTransaction -  abstract state-driven class which carries
+out the steps necessary to fulfill a single request.  Fulfilling a request is
+achieved as IO events in response it DDNS requests drive the transaction
+through its state model.  The type of transaction is based on the nature of
+the request, this is discussed further on @ref d2TransDetail
+
+- isc::d2::DNSClient - an asynchronous worker which atomically performs a
+single DDNS packet exchange with a given server, providing the response via a
+callback mechanism.  Each time a transaction's state model calls for a packet
+exchange with a DNS server, it uses an instance of this class to do it.
+
+- isc::d2::D2UpdateMessage - container for sending and receiving DDNS packets
+
+@section d2EventLoop D2's Event Loop
+
+Now that all of the primary components have been introduced it is worth while
+discussing D2's main event loop.  As mentioned earlier D2 is constructed around
+the CPL which designed to be driven by asynchronous IO processed by a
+common IO service thread (isc::asiolink::io_service).  Any IO that needs to be
+performed by the application thread uses this service to do so. This organizes
+the IO event processing into a single event loop centered around the service.
+(This does not preclude spinning off worker threads to conduct other tasks,
+with their own io_service instances).  D2's main event loop, implemented in @ref isc::d2::D2Process::run() may be paraphrased as follows:
+
+@code
+    As long as we should not shutdown repeat the following steps:
+        1. Check on the state of the request queue. Take any actions necessary
+        regarding it.  For example, it may be in the process of shutting down
+        its listener prior to applying a configuration change.
+
+        2. Give update manager a "time slice" to cull finished transactions and
+        start new ones.
+
+        3. Block until one or more of the following IO events occur:
+            a. NCR message has been received
+            b. Transaction IO has completed
+            c. Interval timer expired
+            d. A process command has been received
+            e. Something has stopped the IO service (most likely a fatal error)
+@endcode
+
+@section d2TransDetail D2 Transactions
+
+There are two types of NameChangeRequests: an "Add" that is issued when DNS
+entries need to be added for new or updated lease, and a "Remove" that is
+issued when DNS entries need to be removed for obsolete or expired lease. The
+DDNS protocol dictates the steps that should be followed in both cases.
+
+D2's design addresses this by calling for two types of transactions: one for
+adding entries and one for removing them, each with their own state model.
+The transaction classes are shown in the following diagram:
+
+@image html trans_classes.svg "NameChangeTransaction Derviations"
+
+- isc::d2::NameAddTransaction - carries out a NameChangeRequest to add entries
+- isc::d2::NameRemoveTransaction - carries out a NameChangeRequest to remove entries
+- isc::d2::StateModel - abstract state model described in @ref d2StateModel
+
+The state models for these two transactions implement DDNS with conflict
+resolution as described in <a href="https://tools.ietf.org/html/rfc4703">RFC 4703</a>.
+
+The state model for isc::d2::NameAddTransaction is diagrammed below:
+
+@image html add_state_model.svg "State Model for NameAddTransaction"
+
+The state model for isc::d2::NameRemoveTransaction is depicted next:
+
+@image html remove_state_model.svg "State Model for NameRemoveTransaction"
+
+@subsection d2StateModel State Model Implementation
+
+D2 implements a abstract state-machine through a light weight set of classes.
+At construction, the model's dictionary of events and states is initialized.
+This allows, the deriving class the ability to bind a method of its choosing
+to each state as thats state's handler.  Each handler contains the knowledge
+of how to respond to the "posted" event and including posting other events and
+transitioning to other states.
+
+Executing the model consists of beginning at the current state with the posted
+event and continuing until the model needs to wait for an IO-based event or
+it has reached the end of the state model.  These classes will likely move to
+a common library.
+
+@image html state_model_classes.svg "State Model Classes"
+
+- isc::d2::StateModel - provides the mechanics for executing a state model
+described by a dictionary events and states.  It provides methods to:
+    - initialize the model - constructs the dictionary of events and states
+    - start the model - sets the model to its initial state, posts a "start"
+      event and starts the model "running"
+      "start event"
+    - run the model - process the posted event (if one) until the model reaches
+      a wait state or reaches the end state.
+    - transition from one state to another
+- isc::d2::Event - Defines an event used to stimulate the model
+- isc::d2::State - Defines a state with the model, each state has a handler
+method that is executed upon transition "into" that state from another
+- isc::d2::LabeledValue - An abstract that associates a integer value with a
+text label
+- isc::d2::LabeledValueSet - A collection of LabeledValues for which the integer
+values must be unique
+
+@subsection d2TransExecExample Transaction Execution Example
+
+The following sequence chart depicts the typically sequence of events that occur
+when D2UpdateMgr creates and starts executing a transaction:
+
+@image html nc_trans_sequence.svg "Transaction Execution Sequence"
+
+
+
+
+
+*/

+ 225 - 0
src/bin/d2/images/abstract_app_classes.svg

@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="749" height="595" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="733" y="357" width="3" height="225" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="627" y="579" width="109" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="623" y="353" width="110" height="226" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="678" y="366">DCfgContextBase</text>
+	<line stroke="black" stroke-opacity="1" x1="623" y1="368" x2="733" y2="368" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="627" y="381">OPTIONAL</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="627" y="394">REQUIRED</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="407">boolean_values_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="420">uint32_values_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="433">string_values_</text>
+	<line stroke="black" stroke-opacity="1" x1="623" y1="435" x2="733" y2="435" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="448">DCfgContextBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="461">~DCfgContextBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="474">getParam()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="487">getParam()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="500">getParam()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="513">getBooleanStorage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="526">getUint32Storage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="539">getStringStorage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="627" y="552">clone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="565">DCfgContextBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="627" y="578">operator =()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="179" y="15" width="3" height="511" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="35" y="523" width="147" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="31" y="11" width="148" height="512" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="105" y="24">DControllerBase</text>
+	<line stroke="black" stroke-opacity="1" x1="31" y1="26" x2="179" y2="26" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="39">app_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="52">bin_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="65">stand_alone_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="78">verbose_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="91">spec_file_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="31" y1="93" x2="179" y2="93" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="106">DControllerBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="119">~DControllerBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="132">launch()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="35" y="145">dummyConfigHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="35" y="158">configHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="35" y="171">commandHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="184">updateConfig()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="197">executeCommand()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="210">customOption()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="35" y="223">createProcess()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="236">customControllerCommand()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="249">onSessionConnect()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="262">onSessionDisconnect()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="275">getUsageText()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="288">getCustomOpts()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="301">getAppName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="314">getBinName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="327">isStandAlone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="340">setStandAlone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="353">isVerbose()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="366">setVerbose()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="379">getIOService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="392">getSpecFileName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="405">setSpecFileName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="35" y="418">getController()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="35" y="431">setController()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="444">parseArgs()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="457">initProcess()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="470">establishSession()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="483">runProcess()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="496">disconnectSession()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="509">shutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="522">usage()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="420" y="119" width="3" height="213" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="324" y="329" width="99" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="320" y="115" width="100" height="214" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="370" y="128">DProcessBase</text>
+	<line stroke="black" stroke-opacity="1" x1="320" y1="130" x2="420" y2="130" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="143">app_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="156">shut_down_flag_</text>
+	<line stroke="black" stroke-opacity="1" x1="320" y1="158" x2="420" y2="158" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="171">DProcessBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="324" y="184">init()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="324" y="197">run()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="324" y="210">shutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="324" y="223">configure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="324" y="236">command()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="249">~DProcessBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="262">shouldShutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="275">setShutdownFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="288">getAppName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="301">getIoService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="314">stopIOService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="324" y="327">getCfgMgr()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="585" y="240" width="3" height="127" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="479" y="364" width="109" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="475" y="236" width="110" height="128" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="530" y="249">DCfgMgrBase</text>
+	<line stroke="black" stroke-opacity="1" x1="475" y1="251" x2="585" y2="251" />
+	<line stroke="black" stroke-opacity="1" x1="475" y1="259" x2="585" y2="259" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="479" y="272">DCfgMgrBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="479" y="285">~DCfgMgrBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="479" y="298">parseConfig()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="479" y="311">addToParseOrder()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="479" y="324">getParseOrder()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="479" y="337">getContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="479" y="350">createConfigParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="479" y="363">buildAndCommit()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="419" y="56" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="323" y="98" width="99" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="319" y="52" width="100" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="369" y="65">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="369" y="80">DProcessBasePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="319" y1="82" x2="419" y2="82" />
+	<line stroke="black" stroke-opacity="1" x1="319" y1="90" x2="419" y2="90" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="371" y1="114" x2="377" y2="108" />
+	<line stroke="black" stroke-opacity="1" x1="371" y1="114" x2="365" y2="108" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="371" y1="102" x2="371" y2="114" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="183" y1="34" x2="371" y2="34" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="183,34 189,28 195,34 189,40" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="371" y1="51" x2="377" y2="45" />
+	<line stroke="black" stroke-opacity="1" x1="371" y1="51" x2="365" y2="45" />
+	<line stroke="black" stroke-opacity="1" x1="371" y1="34" x2="371" y2="51" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="685" y="273">context_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="381" y="48">process_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="251" y="174">io_service_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="535" y="155">cfg_mgr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="250" y="244">io_service_</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="275" y="182" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="205" y="224" width="73" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="201" y="178" width="74" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="238" y="191">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="238" y="206">IOServicePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="201" y1="208" x2="275" y2="208" />
+	<line stroke="black" stroke-opacity="1" x1="201" y1="216" x2="275" y2="216" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="571" y="163" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="479" y="205" width="95" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="475" y="159" width="96" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="523" y="172">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="523" y="187">DCfgMgrBasePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="475" y1="189" x2="571" y2="189" />
+	<line stroke="black" stroke-opacity="1" x1="475" y1="197" x2="571" y2="197" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="731" y="281" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="619" y="323" width="115" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="615" y="277" width="116" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="673" y="290">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="673" y="305">DCfgContextBasePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="615" y1="307" x2="731" y2="307" />
+	<line stroke="black" stroke-opacity="1" x1="615" y1="315" x2="731" y2="315" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="319" y1="282" x2="240" y2="282" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="319,282 313,288 307,282 313,276" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="183" y1="154" x2="241" y2="154" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="183,154 189,148 195,154 189,160" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="424" y1="135" x2="525" y2="135" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="424,135 430,129 436,135 430,141" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="525" y1="158" x2="531" y2="152" />
+	<line stroke="black" stroke-opacity="1" x1="525" y1="158" x2="519" y2="152" />
+	<line stroke="black" stroke-opacity="1" x1="525" y1="135" x2="525" y2="158" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="675" y1="352" x2="681" y2="346" />
+	<line stroke="black" stroke-opacity="1" x1="675" y1="352" x2="669" y2="346" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="675" y1="327" x2="675" y2="352" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="589" y1="247" x2="675" y2="247" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="589,247 595,241 601,247 595,253" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="675" y1="276" x2="681" y2="270" />
+	<line stroke="black" stroke-opacity="1" x1="675" y1="276" x2="669" y2="270" />
+	<line stroke="black" stroke-opacity="1" x1="675" y1="247" x2="675" y2="276" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="526" y1="235" x2="531" y2="228" />
+	<line stroke="black" stroke-opacity="1" x1="526" y1="235" x2="519" y2="229" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="525" y1="209" x2="526" y2="235" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="240" y1="228" x2="234" y2="234" />
+	<line stroke="black" stroke-opacity="1" x1="240" y1="228" x2="246" y2="234" />
+	<line stroke="black" stroke-opacity="1" x1="240" y1="282" x2="240" y2="228" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="241" y1="177" x2="247" y2="171" />
+	<line stroke="black" stroke-opacity="1" x1="241" y1="177" x2="235" y2="171" />
+	<line stroke="black" stroke-opacity="1" x1="241" y1="154" x2="241" y2="177" />
+</g>
+</svg>

+ 301 - 0
src/bin/d2/images/add_state_model.svg

@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="840" height="777" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="365" y="49" width="74" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="361" y="45" width="74" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="398" y="61">READY_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="312" y="193" width="180" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="308" y="189" width="180" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="398" y="205">SELECTING_FWD_SERVER_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="46" y="527" width="178" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="42" y="523" width="178" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="131" y="539">SELECTING_REV_SERVER_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="324" y="299" width="156" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="320" y="295" width="156" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="398" y="311">ADDING_FWD_ADDRS_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="466" y="414" width="176" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="462" y="410" width="176" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="550" y="426">REPLACING_FWD_ADDRS_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="662" y="600" width="166" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="658" y="596" width="166" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="741" y="612">PROCESS_ADD_FAILED_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="233" y="735" width="151" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="229" y="731" width="151" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="305" y="747">PROCESSS_ADD_OK_ST</text>
+</g>
+<g>
+	<ellipse fill="white" stroke="black" stroke-width="1" stroke-opacity="1" cx="743" cy="746" rx="11.5" ry="11.5" />
+	<ellipse fill="black" cx="743" cy="746" rx="8.5" ry="8.5" />
+</g>
+<ellipse fill="black" cx="137" cy="57" rx="8.5" ry="8.5" />
+<polygon fill="white" stroke="black" stroke-opacity="1" points ="291,492 300,475 309,492 300,509" />
+<g>
+	<rect fill="none" stroke="black" stroke-width="1" stroke-opacity="1" x="575" y="473" width="118" height="43" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="634" y="489">&lt;&lt;DNS IO Callback&gt;&gt;</text>
+</g>
+<g>
+	<rect fill="none" stroke="black" stroke-width="1" stroke-opacity="1" x="178" y="244" width="118" height="43" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="237" y="260">&lt;&lt;DNS IO Callback&gt;&gt;</text>
+</g>
+<g>
+	<rect fill="none" stroke="black" stroke-width="1" stroke-opacity="1" x="12" y="722" width="118" height="43" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="71" y="738">&lt;&lt;DNS IO Callback&gt;&gt;</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="610" y1="436" x2="604" y2="442" />
+	<line stroke="black" stroke-opacity="1" x1="610" y1="436" x2="616" y2="441" />
+	<line stroke="black" stroke-opacity="1" x1="611" y1="472" x2="610" y2="436" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="360" y1="57" x2="354" y2="51" />
+	<line stroke="black" stroke-opacity="1" x1="360" y1="57" x2="354" y2="63" />
+	<line stroke="black" stroke-opacity="1" x1="146" y1="57" x2="360" y2="57" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="400" y1="294" x2="406" y2="288" />
+	<line stroke="black" stroke-opacity="1" x1="400" y1="294" x2="394" y2="288" />
+	<line stroke="black" stroke-opacity="1" x1="400" y1="215" x2="400" y2="294" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="355" y1="294" x2="323" y2="253" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="352" y1="215" x2="343" y2="216" />
+	<line stroke="black" stroke-opacity="1" x1="352" y1="215" x2="353" y2="223" />
+	<line stroke="black" stroke-opacity="1" x1="323" y1="253" x2="352" y2="215" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="492" y1="201" x2="743" y2="201" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="743" y1="595" x2="749" y2="589" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="595" x2="737" y2="589" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="201" x2="743" y2="595" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="480" y1="308" x2="743" y2="308" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="743" y1="595" x2="749" y2="589" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="595" x2="737" y2="589" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="308" x2="743" y2="595" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="642" y1="423" x2="743" y2="423" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="743" y1="595" x2="749" y2="589" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="595" x2="737" y2="589" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="423" x2="743" y2="595" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="370" y1="321" x2="370" y2="423" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="461" y1="423" x2="455" y2="417" />
+	<line stroke="black" stroke-opacity="1" x1="461" y1="423" x2="455" y2="429" />
+	<line stroke="black" stroke-opacity="1" x1="370" y1="423" x2="461" y2="423" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="523" y1="409" x2="522" y2="357" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="434" y1="321" x2="437" y2="328" />
+	<line stroke="black" stroke-opacity="1" x1="434" y1="321" x2="441" y2="317" />
+	<line stroke="black" stroke-opacity="1" x1="522" y1="357" x2="434" y2="321" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="587" y1="409" x2="587" y2="238" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="484" y1="215" x2="488" y2="222" />
+	<line stroke="black" stroke-opacity="1" x1="484" y1="215" x2="491" y2="210" />
+	<line stroke="black" stroke-opacity="1" x1="587" y1="238" x2="484" y2="215" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="319" y1="312" x2="300" y2="312" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="300" y1="473" x2="306" y2="467" />
+	<line stroke="black" stroke-opacity="1" x1="300" y1="473" x2="294" y2="467" />
+	<line stroke="black" stroke-opacity="1" x1="300" y1="312" x2="300" y2="473" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="506" y1="436" x2="506" y2="492" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="312" y1="492" x2="318" y2="498" />
+	<line stroke="black" stroke-opacity="1" x1="312" y1="492" x2="318" y2="486" />
+	<line stroke="black" stroke-opacity="1" x1="506" y1="492" x2="312" y2="492" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="298" y1="730" x2="304" y2="724" />
+	<line stroke="black" stroke-opacity="1" x1="298" y1="730" x2="292" y2="723" />
+	<line stroke="black" stroke-opacity="1" x1="300" y1="510" x2="298" y2="730" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="287" y1="491" x2="132" y2="491" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="132" y1="522" x2="138" y2="516" />
+	<line stroke="black" stroke-opacity="1" x1="132" y1="522" x2="126" y2="516" />
+	<line stroke="black" stroke-opacity="1" x1="132" y1="491" x2="132" y2="522" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="743" y1="733" x2="749" y2="727" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="733" x2="737" y2="727" />
+	<line stroke="black" stroke-opacity="1" x1="743" y1="622" x2="743" y2="733" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="730" y1="745" x2="724" y2="738" />
+	<line stroke="black" stroke-opacity="1" x1="730" y1="745" x2="723" y2="750" />
+	<line stroke="black" stroke-opacity="1" x1="384" y1="744" x2="730" y2="745" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="234" y1="287" x2="234" y2="303" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="319" y1="303" x2="313" y2="297" />
+	<line stroke="black" stroke-opacity="1" x1="319" y1="303" x2="313" y2="309" />
+	<line stroke="black" stroke-opacity="1" x1="234" y1="303" x2="319" y2="303" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="616" y="301">UPDATE_FAILED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="196" y="236">SERVER_IO_ERROR_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="336" y="440">FQDN_IN_USE_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="436" y="251">SERVER_IO_ERROR_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="378" y="374">FQDN_NOT_IN_USE_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="328" y="485">UPDATE_OK_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="309" y="540">No reverse change requested</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="286" y="51">START_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="530" y="740">END_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="197" y="455">UPDATE_OK_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="616" y="400">UPDATE_FAILED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="149" y="484">Reverse change requested</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="674" y="695">END_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="588" y="196">NO_MORE_SERVERS_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="420" y="291">SERVER_SELECTED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="168" y="324">IO_COMPLETED_EVT</text>
+</g>
+<polygon fill="white" stroke="black" stroke-opacity="1" points ="391,122 400,105 409,122 400,139" />
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="34" y="642" width="207" height="23" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="30" y="638" width="207" height="23" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="134" y="654">REPLACING_REV_PTRS_ST</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="400" y1="103" x2="406" y2="97" />
+	<line stroke="black" stroke-opacity="1" x1="400" y1="103" x2="394" y2="97" />
+	<line stroke="black" stroke-opacity="1" x1="400" y1="71" x2="400" y2="103" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="400" y1="188" x2="406" y2="182" />
+	<line stroke="black" stroke-opacity="1" x1="400" y1="188" x2="394" y2="182" />
+	<line stroke="black" stroke-opacity="1" x1="400" y1="140" x2="400" y2="188" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="387" y1="121" x2="132" y2="121" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="132" y1="522" x2="138" y2="516" />
+	<line stroke="black" stroke-opacity="1" x1="132" y1="522" x2="126" y2="516" />
+	<line stroke="black" stroke-opacity="1" x1="132" y1="121" x2="132" y2="522" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="410" y="156">Forward change requested</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="179" y="116">Only reverse change requested</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="175" y1="549" x2="208" y2="590" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="181" y1="637" x2="189" y2="634" />
+	<line stroke="black" stroke-opacity="1" x1="181" y1="637" x2="178" y2="628" />
+	<line stroke="black" stroke-opacity="1" x1="208" y1="590" x2="181" y2="637" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="83" y1="637" x2="52" y2="602" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="86" y1="549" x2="77" y2="550" />
+	<line stroke="black" stroke-opacity="1" x1="86" y1="549" x2="87" y2="557" />
+	<line stroke="black" stroke-opacity="1" x1="52" y1="602" x2="86" y2="549" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="147" y1="665" x2="147" y2="695" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="147" y1="695" x2="298" y2="695" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="298" y1="730" x2="304" y2="724" />
+	<line stroke="black" stroke-opacity="1" x1="298" y1="730" x2="292" y2="724" />
+	<line stroke="black" stroke-opacity="1" x1="298" y1="695" x2="298" y2="730" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="71" y1="665" x2="65" y2="671" />
+	<line stroke="black" stroke-opacity="1" x1="71" y1="665" x2="77" y2="671" />
+	<line stroke="black" stroke-opacity="1" x1="71" y1="721" x2="71" y2="665" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="31" y="577">SERVER_IO_ERROR_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="124" y="620">SERVER_SELECTED_ST</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="197" y="691">UPDATE_OK_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="714">IO_COMPLETED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="553" y="460">IO_COMPLETED_EVT</text>
+</g>
+</svg>

+ 299 - 0
src/bin/d2/images/config_data_classes.svg

@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="744" height="590" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="163" y="23" width="3" height="127" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="77" y="147" width="89" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="73" y="19" width="90" height="128" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="118" y="32">D2CfgContext</text>
+	<line stroke="black" stroke-opacity="1" x1="73" y1="34" x2="163" y2="34" />
+	<line stroke="black" stroke-opacity="1" x1="73" y1="42" x2="163" y2="42" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="55">D2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="68">~D2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="81">clone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="94">getForwardMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="107">getReverseMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="120">getKeys()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="133">D2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="77" y="146">operator =()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="728" y="342" width="3" height="213" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="600" y="552" width="131" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="596" y="338" width="132" height="214" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="662" y="351">DnsServerInfo</text>
+	<line stroke="black" stroke-opacity="1" x1="596" y1="353" x2="728" y2="353" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="600" y="366">STANDARD_DNS_PORT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="600" y="379">EMPTY_IP_STR</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="392">hostname_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="405">ip_address_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="418">port_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="431">enabled_</text>
+	<line stroke="black" stroke-opacity="1" x1="596" y1="433" x2="728" y2="433" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="446">DnsServerInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="459">~DnsServerInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="472">getHostname()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="485">getPort()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="498">getIpAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="511">isEnabled()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="524">enable()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="537">disable()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="600" y="550">toText()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="551" y="64" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="467" y="106" width="87" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="463" y="60" width="88" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="507" y="73">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="507" y="88">TSIGKeyInfoPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="463" y1="90" x2="551" y2="90" />
+	<line stroke="black" stroke-opacity="1" x1="463" y1="98" x2="551" y2="98" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="158" y="532" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="64" y="574" width="97" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="60" y="528" width="98" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="109" y="541">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="109" y="556">DdnsDomainMap</text>
+	<line stroke="black" stroke-opacity="1" x1="60" y1="558" x2="158" y2="558" />
+	<line stroke="black" stroke-opacity="1" x1="60" y1="566" x2="158" y2="566" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="437" y="460" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="303" y="502" width="137" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="299" y="456" width="138" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="368" y="469">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="368" y="484">DnsServerInfoStoragePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="299" y1="486" x2="437" y2="486" />
+	<line stroke="black" stroke-opacity="1" x1="299" y1="494" x2="437" y2="494" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="180" y="195" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="54" y="237" width="129" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="50" y="191" width="130" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="115" y="204">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="115" y="219">DdnsDomainListMgrPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="50" y1="221" x2="180" y2="221" />
+	<line stroke="black" stroke-opacity="1" x1="50" y1="229" x2="180" y2="229" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="548" y="355" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="454" y="397" width="97" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="450" y="351" width="98" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="499" y="364">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="499" y="379">DnsServerInfoPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="450" y1="381" x2="548" y2="381" />
+	<line stroke="black" stroke-opacity="1" x1="450" y1="389" x2="548" y2="389" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="666" y="63" width="3" height="121" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="586" y="181" width="83" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="582" y="59" width="84" height="122" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="624" y="72">TSIGKeyInfo</text>
+	<line stroke="black" stroke-opacity="1" x1="582" y1="74" x2="666" y2="74" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="87">name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="100">algorithm_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="113">secret_</text>
+	<line stroke="black" stroke-opacity="1" x1="582" y1="115" x2="666" y2="115" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="128">TSIGKeyInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="141">~TSIGKeyInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="154">getName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="167">getAlgorithm()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="586" y="180">getSecret()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="152" y1="190" x2="158" y2="184" />
+	<line stroke="black" stroke-opacity="1" x1="152" y1="190" x2="146" y2="184" />
+	<line stroke="black" stroke-opacity="1" x1="152" y1="151" x2="152" y2="190" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="152,151 158,157 152,163 146,157" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="85" y1="190" x2="91" y2="184" />
+	<line stroke="black" stroke-opacity="1" x1="85" y1="190" x2="79" y2="184" />
+	<line stroke="black" stroke-opacity="1" x1="85" y1="151" x2="85" y2="190" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="85,151 91,157 85,163 79,157" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="595" y1="369" x2="589" y2="362" />
+	<line stroke="black" stroke-opacity="1" x1="595" y1="369" x2="588" y2="374" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="552" y1="368" x2="595" y2="369" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="581" y1="72" x2="575" y2="65" />
+	<line stroke="black" stroke-opacity="1" x1="581" y1="72" x2="574" y2="77" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="555" y1="71" x2="581" y2="72" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="177" y="274" width="3" height="147" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="51" y="418" width="129" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="47" y="270" width="130" height="148" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="112" y="283">DdnsDomainListMgr</text>
+	<line stroke="black" stroke-opacity="1" x1="47" y1="285" x2="177" y2="285" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="51" y="298">wildcard_domain_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="311">name_</text>
+	<line stroke="black" stroke-opacity="1" x1="47" y1="313" x2="177" y2="313" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="326">DdnsDomainListMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="339">~DdnsDomainListMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="352">matchDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="365">getName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="378">size()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="391">getWildcardDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="404">getDomains()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="51" y="417">setDomains()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="428" y="527" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="308" y="569" width="123" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="304" y="523" width="124" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="366" y="536">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="366" y="551">DnsServerInfoStorage</text>
+	<line stroke="black" stroke-opacity="1" x1="304" y1="553" x2="428" y2="553" />
+	<line stroke="black" stroke-opacity="1" x1="304" y1="561" x2="428" y2="561" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="115" y1="269" x2="121" y2="263" />
+	<line stroke="black" stroke-opacity="1" x1="115" y1="269" x2="109" y2="262" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="116" y1="241" x2="115" y2="269" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="432" y1="548" x2="501" y2="548" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="501" y1="401" x2="495" y2="407" />
+	<line stroke="black" stroke-opacity="1" x1="501" y1="401" x2="507" y2="407" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="501" y1="548" x2="501" y2="401" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="368" y1="522" x2="374" y2="516" />
+	<line stroke="black" stroke-opacity="1" x1="368" y1="522" x2="362" y2="515" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="369" y1="506" x2="368" y2="522" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="295" y="316" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="209" y="358" width="89" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="205" y="312" width="90" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="250" y="325">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="250" y="340">DdnsDomainPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="205" y1="342" x2="295" y2="342" />
+	<line stroke="black" stroke-opacity="1" x1="205" y1="350" x2="295" y2="350" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="181" y1="297" x2="251" y2="297" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="181,297 187,291 193,297 187,303" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="251" y1="311" x2="257" y2="305" />
+	<line stroke="black" stroke-opacity="1" x1="251" y1="311" x2="245" y2="305" />
+	<line stroke="black" stroke-opacity="1" x1="251" y1="297" x2="251" y2="311" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="162" y1="553" x2="251" y2="553" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="251" y1="362" x2="245" y2="368" />
+	<line stroke="black" stroke-opacity="1" x1="251" y1="362" x2="257" y2="368" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="251" y1="553" x2="251" y2="362" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="414" y="318" width="3" height="109" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="334" y="424" width="83" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="330" y="314" width="84" height="110" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="372" y="327">DdnsDomain</text>
+	<line stroke="black" stroke-opacity="1" x1="330" y1="329" x2="414" y2="329" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="334" y="342">name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="334" y="355">key_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="330" y1="357" x2="414" y2="357" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="334" y="370">DdnsDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="334" y="383">~DdnsDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="334" y="396">getName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="334" y="409">getKeyName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="334" y="422">getServers()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="370" y1="455" x2="376" y2="449" />
+	<line stroke="black" stroke-opacity="1" x1="370" y1="455" x2="364" y2="448" />
+	<line stroke="black" stroke-opacity="1" x1="371" y1="428" x2="370" y2="455" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="371,428 376,434 370,439 364,433" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="329" y1="337" x2="323" y2="330" />
+	<line stroke="black" stroke-opacity="1" x1="329" y1="337" x2="322" y2="342" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="299" y1="336" x2="329" y2="337" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="9" y="183">reverse_mgr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="162" y="187">forward_mgr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="254" y="78">keys_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="229" y="285">wildcard_domain_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="380" y="452">servers_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="128" y="446">domains_</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="408" y="65" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="302" y="107" width="109" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="298" y="61" width="110" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="353" y="74">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="353" y="89">TSIGKeyInfoMapPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="298" y1="91" x2="408" y2="91" />
+	<line stroke="black" stroke-opacity="1" x1="298" y1="99" x2="408" y2="99" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="167" y="461" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="59" y="503" width="111" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="55" y="457" width="112" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="111" y="470">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="111" y="485">DdnsDomainMapPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="55" y1="487" x2="167" y2="487" />
+	<line stroke="black" stroke-opacity="1" x1="55" y1="495" x2="167" y2="495" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="297" y1="85" x2="291" y2="79" />
+	<line stroke="black" stroke-opacity="1" x1="297" y1="85" x2="291" y2="91" />
+	<line stroke="black" stroke-opacity="1" x1="167" y1="85" x2="297" y2="85" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="167,85 173,79 179,85 173,91" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="111" y1="527" x2="117" y2="521" />
+	<line stroke="black" stroke-opacity="1" x1="111" y1="527" x2="105" y2="520" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="112" y1="507" x2="111" y2="527" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="113" y1="456" x2="119" y2="450" />
+	<line stroke="black" stroke-opacity="1" x1="113" y1="456" x2="107" y2="450" />
+	<line stroke="black" stroke-opacity="1" x1="113" y1="422" x2="113" y2="456" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="113,422 119,428 113,434 107,428" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="395" y="136" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="303" y="178" width="95" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="299" y="132" width="96" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="347" y="145">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="347" y="160">TSIGKeyInfoMap</text>
+	<line stroke="black" stroke-opacity="1" x1="299" y1="162" x2="395" y2="162" />
+	<line stroke="black" stroke-opacity="1" x1="299" y1="170" x2="395" y2="170" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="399" y1="157" x2="509" y2="157" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="509" y1="110" x2="503" y2="116" />
+	<line stroke="black" stroke-opacity="1" x1="509" y1="110" x2="515" y2="116" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="509" y1="157" x2="509" y2="110" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="350" y1="131" x2="356" y2="125" />
+	<line stroke="black" stroke-opacity="1" x1="350" y1="131" x2="344" y2="124" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="352" y1="111" x2="350" y2="131" />
+</g>
+</svg>

+ 262 - 0
src/bin/d2/images/config_parser_classes.svg

@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="1126" height="713" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="146" y="343" width="3" height="147" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="20" y="487" width="129" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="16" y="339" width="130" height="148" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="81" y="352">DdnsDomainListMgr</text>
+	<line stroke="black" stroke-opacity="1" x1="16" y1="354" x2="146" y2="354" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="20" y="367">wildcard_domain_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="380">name_</text>
+	<line stroke="black" stroke-opacity="1" x1="16" y1="382" x2="146" y2="382" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="395">DdnsDomainListMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="408">~DdnsDomainListMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="421">matchDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="434">getName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="447">size()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="460">getWildcardDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="473">getDomains()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="20" y="486">setDomains()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="750" y="474" width="3" height="213" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="622" y="684" width="131" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="618" y="470" width="132" height="214" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="684" y="483">DnsServerInfo</text>
+	<line stroke="black" stroke-opacity="1" x1="618" y1="485" x2="750" y2="485" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="622" y="498">STANDARD_DNS_PORT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="622" y="511">EMPTY_IP_STR</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="524">hostname_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="537">ip_address_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="550">port_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="563">enabled_</text>
+	<line stroke="black" stroke-opacity="1" x1="618" y1="565" x2="750" y2="565" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="578">DnsServerInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="591">~DnsServerInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="604">getHostname()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="617">getPort()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="630">getIpAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="643">isEnabled()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="656">enable()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="669">disable()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="622" y="682">toText()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="422" y="422" width="3" height="109" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="342" y="528" width="83" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="338" y="418" width="84" height="110" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="380" y="431">DdnsDomain</text>
+	<line stroke="black" stroke-opacity="1" x1="338" y1="433" x2="422" y2="433" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="342" y="446">name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="342" y="459">key_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="338" y1="461" x2="422" y2="461" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="342" y="474">DdnsDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="342" y="487">~DdnsDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="342" y="500">getName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="342" y="513">getKeyName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="342" y="526">getServers()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="598" y="316" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="462" y="408" width="139" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="458" y="312" width="140" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="528" y="325">DnsServerInfoListParser</text>
+	<line stroke="black" stroke-opacity="1" x1="458" y1="327" x2="598" y2="327" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="462" y="340">list_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="462" y="353">parsers_</text>
+	<line stroke="black" stroke-opacity="1" x1="458" y1="355" x2="598" y2="355" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="462" y="368">DnsServerInfoListParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="462" y="381">~DnsServerInfoListParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="462" y="394">build()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="462" y="407">commit()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="738" y="348" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="618" y="440" width="123" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="614" y="344" width="124" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="676" y="357">DnsServerInfoParser</text>
+	<line stroke="black" stroke-opacity="1" x1="614" y1="359" x2="738" y2="359" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="618" y="372">entry_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="614" y1="374" x2="738" y2="374" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="618" y="387">DnsServerInfoParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="618" y="400">~DnsServerInfoParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="618" y="413">build()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="618" y="426">createConfigParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="618" y="439">commit()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="160" y="205" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="10" y="297" width="153" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="6" y="201" width="154" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="83" y="214">DdnsDomainListMgrParser</text>
+	<line stroke="black" stroke-opacity="1" x1="6" y1="216" x2="160" y2="216" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="10" y="229">entry_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="6" y1="231" x2="160" y2="231" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="10" y="244">DdnsDomainListMgrParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="10" y="257">~DdnsDomainListMgrParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="10" y="270">build()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="10" y="283">createConfigParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="10" y="296">commit()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="585" y="65" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="473" y="157" width="115" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="469" y="61" width="116" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="527" y="74">TSIGKeyInfoParser</text>
+	<line stroke="black" stroke-opacity="1" x1="469" y1="76" x2="585" y2="76" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="473" y="89">entry_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="469" y1="91" x2="585" y2="91" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="473" y="104">TSIGKeyInfoParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="473" y="117">~TSIGKeyInfoParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="473" y="130">build()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="473" y="143">createConfigParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="473" y="156">commit()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="680" y1="469" x2="686" y2="463" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="469" x2="674" y2="463" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="680" y1="444" x2="680" y2="469" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="602" y1="324" x2="675" y2="324" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="83" y1="338" x2="89" y2="332" />
+	<line stroke="black" stroke-opacity="1" x1="83" y1="338" x2="77" y2="331" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="84" y1="301" x2="83" y2="338" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="675" y1="343" x2="681" y2="337" />
+	<line stroke="black" stroke-opacity="1" x1="675" y1="343" x2="669" y2="337" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="675" y1="324" x2="675" y2="343" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="434" y="33" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="304" y="125" width="133" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="300" y="29" width="134" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="367" y="42">TSIGKeyInfoListParser</text>
+	<line stroke="black" stroke-opacity="1" x1="300" y1="44" x2="434" y2="44" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="57">list_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="70">parsers_</text>
+	<line stroke="black" stroke-opacity="1" x1="300" y1="72" x2="434" y2="72" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="85">TSIGKeyInfoListParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="98">~TSIGKeyInfoListParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="111">build()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="124">commit()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="443" y="276" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="329" y="368" width="117" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="325" y="272" width="118" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="384" y="285">DdnsDomainParser</text>
+	<line stroke="black" stroke-opacity="1" x1="325" y1="287" x2="443" y2="287" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="300">entry_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="325" y1="302" x2="443" y2="302" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="315">DdnsDomainParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="328">~DdnsDomainParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="341">build()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="354">createConfigParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="367">commit()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="311" y="241" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="181" y="333" width="133" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="177" y="237" width="134" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="244" y="250">DdnsDomainListParser</text>
+	<line stroke="black" stroke-opacity="1" x1="177" y1="252" x2="311" y2="252" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="181" y="265">list_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="181" y="278">parsers_</text>
+	<line stroke="black" stroke-opacity="1" x1="177" y1="280" x2="311" y2="280" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="181" y="293">DdnsDomainListParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="181" y="306">~DdnsDomainListParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="181" y="319">build()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="181" y="332">commit()</text>
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="315" y1="253" x2="386" y2="253" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="164" y1="220" x2="246" y2="220" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="383" y1="417" x2="389" y2="411" />
+	<line stroke="black" stroke-opacity="1" x1="383" y1="417" x2="377" y2="410" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="384" y1="372" x2="383" y2="417" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="447" y1="287" x2="530" y2="287" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="438" y1="41" x2="529" y2="41" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="529" y1="60" x2="535" y2="54" />
+	<line stroke="black" stroke-opacity="1" x1="529" y1="60" x2="523" y2="54" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="529" y1="41" x2="529" y2="60" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="530" y1="311" x2="536" y2="305" />
+	<line stroke="black" stroke-opacity="1" x1="530" y1="311" x2="524" y2="305" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="530" y1="287" x2="530" y2="311" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="246" y1="236" x2="252" y2="230" />
+	<line stroke="black" stroke-opacity="1" x1="246" y1="236" x2="240" y2="230" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="246" y1="220" x2="246" y2="236" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="386" y1="271" x2="392" y2="265" />
+	<line stroke="black" stroke-opacity="1" x1="386" y1="271" x2="380" y2="265" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="386" y1="253" x2="386" y2="271" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="723" y="99" width="3" height="121" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="643" y="217" width="83" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="639" y="95" width="84" height="122" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="681" y="108">TSIGKeyInfo</text>
+	<line stroke="black" stroke-opacity="1" x1="639" y1="110" x2="723" y2="110" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="123">name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="136">algorithm_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="149">secret_</text>
+	<line stroke="black" stroke-opacity="1" x1="639" y1="151" x2="723" y2="151" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="164">TSIGKeyInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="177">~TSIGKeyInfo()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="190">getName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="203">getAlgorithm()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="643" y="216">getSecret()</text>
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="589" y1="74" x2="683" y2="74" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="149" y="9" width="3" height="161" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="11" y="167" width="141" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="7" y="5" width="142" height="162" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="78" y="18">D2CfgMgr</text>
+	<line stroke="black" stroke-opacity="1" x1="7" y1="20" x2="149" y2="20" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="11" y="33">IPV4_REV_ZONE_SUFFIX</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="11" y="46">IPV6_REV_ZONE_SUFFIX</text>
+	<line stroke="black" stroke-opacity="1" x1="7" y1="48" x2="149" y2="48" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="61">D2CfgMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="74">~D2CfgMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="87">getD2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="100">matchForward()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="113">matchReverse()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="11" y="126">reverseIpAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="11" y="139">reverseV4Address()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="11" y="152">reverseV6Address()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="165">createConfigParser()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="683" y1="94" x2="689" y2="88" />
+	<line stroke="black" stroke-opacity="1" x1="683" y1="94" x2="677" y2="88" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="683" y1="74" x2="683" y2="94" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="82" y1="200" x2="88" y2="194" />
+	<line stroke="black" stroke-opacity="1" x1="82" y1="200" x2="76" y2="194" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="82" y1="171" x2="82" y2="200" />
+</g>
+</svg>

+ 94 - 0
src/bin/d2/images/config_sequence.svg

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="847" height="290" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="674" y="8" width="3" height="16" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="606" y="21" width="71" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="602" y="4" width="72" height="17" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-decoration="underline" text-anchor="middle" x="638" y="18">:DCfgMgrBase</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="116" y="8" width="3" height="16" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="28" y="21" width="91" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="24" y="4" width="92" height="17" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-decoration="underline" text-anchor="middle" x="70" y="18">:ModuleCCSession</text>
+</g>
+<g>
+	<line stroke="black" stroke-dasharray="18,6"  stroke-opacity="1" x1="72" y1="45" x2="72" y2="290" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="469" y="8" width="3" height="16" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="397" y="21" width="75" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="393" y="4" width="76" height="17" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-decoration="underline" text-anchor="middle" x="431" y="18">:DProcessBase</text>
+</g>
+<g>
+	<line stroke="black" stroke-dasharray="18,6"  stroke-opacity="1" x1="640" y1="45" x2="640" y2="290" />
+</g>
+<g>
+	<line stroke="black" stroke-dasharray="18,6"  stroke-opacity="1" x1="433" y1="45" x2="433" y2="290" />
+</g>
+<g>
+	<line stroke="black" stroke-dasharray="18,6"  stroke-opacity="1" x1="260" y1="45" x2="260" y2="290" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="300" y="8" width="3" height="16" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="221" y="21" width="82" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="217" y="4" width="83" height="17" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-decoration="underline" text-anchor="middle" x="259" y="18">:DControllerBase</text>
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="635" y="153" width="10" height="34" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="255" y="62" width="10" height="125" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="67" y="59" width="10" height="131" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="428" y="144" width="10" height="43" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="439" y1="182" x2="635" y2="182" />
+	<polygon fill="#000000" stroke="none" points="635,182 631,178 631,186" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="78" y1="67" x2="255" y2="67" />
+	<polygon fill="#000000" stroke="none" points="255,67 251,63 251,71" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="73" y="104" width="10" height="25" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="261" y="95" width="10" height="84" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="272" y1="152" x2="428" y2="152" />
+	<polygon fill="#000000" stroke="none" points="428,152 424,148 424,156" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 273 96 L 290 96 L 290 103 L 273 103" />
+	<polygon fill="#000000" stroke="none" points="273,103 277,107 277,99" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="84" y1="116" x2="261" y2="116" />
+	<polygon fill="#000000" stroke="none" points="84,116 88,112 88,120" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="446" y="206">parseConfig(in new_config : isc::data::ElementPtr) : isc::data::ConstElementPtr</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="277" y="89">updateConfig(in new_config : isc::data::ConstElementPtr) : isc::data::ConstElementPtr</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="96" y="113">getFullConfig() : ConstElementPtr</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="281" y="145">configure(in config_set : isc::data::ConstElementPtr) : isc::data::ConstElementPtr</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="79" y="59">configHandler(in new_config : isc::data::ConstElementPtr) : isc::data::ConstElementPtr</text>
+</g>
+</svg>

+ 342 - 0
src/bin/d2/images/d2_app_classes.svg

@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="755" height="774" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="731" y="569" width="3" height="127" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="645" y="693" width="89" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="641" y="565" width="90" height="128" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="686" y="578">D2CfgContext</text>
+	<line stroke="black" stroke-opacity="1" x1="641" y1="580" x2="731" y2="580" />
+	<line stroke="black" stroke-opacity="1" x1="641" y1="588" x2="731" y2="588" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="601">D2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="614">~D2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="627">clone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="640">getForwardMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="653">getReverseMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="666">getKeys()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="679">D2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="645" y="692">operator =()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="160" y="11" width="3" height="511" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="16" y="519" width="147" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="12" y="7" width="148" height="512" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="86" y="20">DControllerBase</text>
+	<line stroke="black" stroke-opacity="1" x1="12" y1="22" x2="160" y2="22" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="35">app_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="48">bin_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="61">stand_alone_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="74">verbose_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="87">spec_file_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="12" y1="89" x2="160" y2="89" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="102">DControllerBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="115">~DControllerBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="128">launch()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="16" y="141">dummyConfigHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="16" y="154">configHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="16" y="167">commandHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="180">updateConfig()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="193">executeCommand()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="206">customOption()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="16" y="219">createProcess()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="232">customControllerCommand()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="245">onSessionConnect()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="258">onSessionDisconnect()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="271">getUsageText()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="284">getCustomOpts()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="297">getAppName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="310">getBinName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="323">isStandAlone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="336">setStandAlone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="349">isVerbose()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="362">setVerbose()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="375">getIOService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="388">getSpecFileName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="401">setSpecFileName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="16" y="414">getController()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="16" y="427">setController()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="440">parseArgs()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="453">initProcess()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="466">establishSession()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="479">runProcess()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="492">disconnectSession()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="505">shutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="16" y="518">usage()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="389" y="120" width="3" height="213" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="293" y="330" width="99" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="289" y="116" width="100" height="214" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="339" y="129">DProcessBase</text>
+	<line stroke="black" stroke-opacity="1" x1="289" y1="131" x2="389" y2="131" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="144">app_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="157">shut_down_flag_</text>
+	<line stroke="black" stroke-opacity="1" x1="289" y1="159" x2="389" y2="159" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="172">DProcessBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="293" y="185">init()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="293" y="198">run()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="293" y="211">shutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="293" y="224">configure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="293" y="237">command()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="250">~DProcessBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="263">shouldShutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="276">setShutdownFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="289">getAppName()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="302">getIoService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="315">stopIOService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="293" y="328">getCfgMgr()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="739" y="314" width="3" height="225" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="633" y="536" width="109" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="629" y="310" width="110" height="226" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="684" y="323">DCfgContextBase</text>
+	<line stroke="black" stroke-opacity="1" x1="629" y1="325" x2="739" y2="325" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="633" y="338">OPTIONAL</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="633" y="351">REQUIRED</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="364">boolean_values_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="377">uint32_values_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="390">string_values_</text>
+	<line stroke="black" stroke-opacity="1" x1="629" y1="392" x2="739" y2="392" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="405">DCfgContextBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="418">~DCfgContextBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="431">getParam()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="444">getParam()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="457">getParam()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="470">getBooleanStorage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="483">getUint32Storage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="496">getStringStorage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="633" y="509">clone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="522">DCfgContextBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="633" y="535">operator =()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="604" y="542" width="3" height="161" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="466" y="700" width="141" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="462" y="538" width="142" height="162" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="533" y="551">D2CfgMgr</text>
+	<line stroke="black" stroke-opacity="1" x1="462" y1="553" x2="604" y2="553" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="466" y="566">IPV4_REV_ZONE_SUFFIX</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="466" y="579">IPV6_REV_ZONE_SUFFIX</text>
+	<line stroke="black" stroke-opacity="1" x1="462" y1="581" x2="604" y2="581" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="466" y="594">D2CfgMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="466" y="607">~D2CfgMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="466" y="620">getD2CfgContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="466" y="633">matchForward()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="466" y="646">matchReverse()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="466" y="659">reverseIpAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="466" y="672">reverseV4Address()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="466" y="685">reverseV6Address()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="466" y="698">createConfigParser()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="687" y1="564" x2="686" y2="545" />
+	<line stroke="black" stroke-opacity="1" x1="686" y1="540" x2="680" y2="546" />
+	<line stroke="black" stroke-opacity="1" x1="686" y1="540" x2="692" y2="545" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="546" x2="692" y2="545" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="640" y1="607" x2="634" y2="601" />
+	<line stroke="black" stroke-opacity="1" x1="640" y1="607" x2="634" y2="613" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="608" y1="607" x2="640" y2="607" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="418" y="470" width="3" height="291" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="260" y="758" width="161" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="256" y="466" width="162" height="292" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="337" y="479">D2Process</text>
+	<line stroke="black" stroke-opacity="1" x1="256" y1="481" x2="418" y2="481" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="260" y="494">QUEUE_RESTART_PERCENT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="507">reconf_queue_flag_</text>
+	<line stroke="black" stroke-opacity="1" x1="256" y1="509" x2="418" y2="509" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="522">D2Process()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="535">init()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="548">run()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="561">shutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="574">configure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="587">command()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="600">~D2Process()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="613">checkQueueStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="626">reconfigureQueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="639">runIO()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="652">canShutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="665">setReconfQueueFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="678">setShutdownType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="691">getD2CfgMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="704">getD2QueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="717">getD2UpdateMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="730">getReconfQueueFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="260" y="743">getShutdownType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="260" y="756">getShutdownTypeStr()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="590" y="219" width="3" height="127" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="484" y="343" width="109" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="480" y="215" width="110" height="128" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="535" y="228">DCfgMgrBase</text>
+	<line stroke="black" stroke-opacity="1" x1="480" y1="230" x2="590" y2="230" />
+	<line stroke="black" stroke-opacity="1" x1="480" y1="238" x2="590" y2="238" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="484" y="251">DCfgMgrBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="484" y="264">~DCfgMgrBase()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="484" y="277">parseConfig()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="484" y="290">addToParseOrder()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="484" y="303">getParseOrder()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="484" y="316">getContext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="484" y="329">createConfigParser()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="484" y="342">buildAndCommit()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="535" y1="537" x2="535" y2="352" />
+	<line stroke="black" stroke-opacity="1" x1="536" y1="347" x2="529" y2="352" />
+	<line stroke="black" stroke-opacity="1" x1="536" y1="347" x2="541" y2="353" />
+	<line stroke="black" stroke-opacity="1" x1="529" y1="352" x2="541" y2="353" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="339" y1="465" x2="339" y2="339" />
+	<line stroke="black" stroke-opacity="1" x1="340" y1="334" x2="333" y2="339" />
+	<line stroke="black" stroke-opacity="1" x1="340" y1="334" x2="345" y2="340" />
+	<line stroke="black" stroke-opacity="1" x1="333" y1="339" x2="345" y2="340" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="393" y="53" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="297" y="95" width="99" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="293" y="49" width="100" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="343" y="62">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="343" y="77">DProcessBasePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="293" y1="79" x2="393" y2="79" />
+	<line stroke="black" stroke-opacity="1" x1="293" y1="87" x2="393" y2="87" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="461" y1="607" x2="455" y2="601" />
+	<line stroke="black" stroke-opacity="1" x1="461" y1="607" x2="455" y2="613" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="422" y1="607" x2="461" y2="607" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="343" y1="115" x2="349" y2="109" />
+	<line stroke="black" stroke-opacity="1" x1="343" y1="115" x2="337" y2="108" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="344" y1="99" x2="343" y2="115" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="164" y1="30" x2="344" y2="30" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="164,30 170,24 176,30 170,36" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="344" y1="48" x2="350" y2="42" />
+	<line stroke="black" stroke-opacity="1" x1="344" y1="48" x2="338" y2="42" />
+	<line stroke="black" stroke-opacity="1" x1="344" y1="30" x2="344" y2="48" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="128" y="566" width="3" height="95" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="46" y="658" width="85" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="42" y="562" width="86" height="96" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="85" y="575">D2Controller</text>
+	<line stroke="black" stroke-opacity="1" x1="42" y1="577" x2="128" y2="577" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="46" y="590">d2_app_name_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="46" y="603">d2_bin_name_</text>
+	<line stroke="black" stroke-opacity="1" x1="42" y1="605" x2="128" y2="605" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="46" y="618">instance()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="46" y="631">~D2Controller()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="46" y="644">createProcess()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="46" y="657">D2Controller()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="87" y1="561" x2="87" y2="529" />
+	<line stroke="black" stroke-opacity="1" x1="87" y1="523" x2="81" y2="529" />
+	<line stroke="black" stroke-opacity="1" x1="87" y1="523" x2="93" y2="529" />
+	<line stroke="black" stroke-opacity="1" x1="81" y1="529" x2="93" y2="529" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="255" y1="610" x2="249" y2="604" />
+	<line stroke="black" stroke-opacity="1" x1="255" y1="610" x2="249" y2="616" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="132" y1="610" x2="255" y2="610" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="225" y="169">io_service_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="148">cfg_mgr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="355" y="45">process_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="690" y="242">context_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="225" y="239">io_service_</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="251" y="177" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="181" y="219" width="73" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="177" y="173" width="74" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="214" y="186">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="214" y="201">IOServicePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="177" y1="203" x2="251" y2="203" />
+	<line stroke="black" stroke-opacity="1" x1="177" y1="211" x2="251" y2="211" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="577" y="156" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="485" y="198" width="95" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="481" y="152" width="96" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="529" y="165">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="529" y="180">DCfgMgrBasePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="481" y1="182" x2="577" y2="182" />
+	<line stroke="black" stroke-opacity="1" x1="481" y1="190" x2="577" y2="190" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="737" y="250" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="625" y="292" width="115" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="621" y="246" width="116" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="679" y="259">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="679" y="274">DCfgContextBasePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="621" y1="276" x2="737" y2="276" />
+	<line stroke="black" stroke-opacity="1" x1="621" y1="284" x2="737" y2="284" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="164" y1="139" x2="215" y2="139" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="164,139 170,133 176,139 170,145" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="288" y1="281" x2="215" y2="281" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="288,281 282,287 276,281 282,275" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="393" y1="136" x2="530" y2="136" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="393,136 399,130 405,136 399,142" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="530" y1="151" x2="536" y2="145" />
+	<line stroke="black" stroke-opacity="1" x1="530" y1="151" x2="524" y2="145" />
+	<line stroke="black" stroke-opacity="1" x1="530" y1="136" x2="530" y2="151" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="531" y1="214" x2="537" y2="208" />
+	<line stroke="black" stroke-opacity="1" x1="531" y1="214" x2="525" y2="208" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="531" y1="202" x2="531" y2="214" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="681" y1="309" x2="687" y2="303" />
+	<line stroke="black" stroke-opacity="1" x1="681" y1="309" x2="675" y2="303" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="681" y1="296" x2="681" y2="309" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="594" y1="226" x2="680" y2="226" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="594,226 600,220 606,226 600,232" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="680" y1="245" x2="686" y2="239" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="245" x2="674" y2="239" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="226" x2="680" y2="245" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="215" y1="223" x2="209" y2="229" />
+	<line stroke="black" stroke-opacity="1" x1="215" y1="223" x2="221" y2="229" />
+	<line stroke="black" stroke-opacity="1" x1="215" y1="281" x2="215" y2="223" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="215" y1="172" x2="221" y2="166" />
+	<line stroke="black" stroke-opacity="1" x1="215" y1="172" x2="209" y2="166" />
+	<line stroke="black" stroke-opacity="1" x1="215" y1="139" x2="215" y2="172" />
+</g>
+</svg>

+ 230 - 0
src/bin/d2/images/nc_trans_sequence.svg

@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="848" height="647" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="593" y="8" width="3" height="16" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="541" y="21" width="55" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="537" y="4" width="56" height="17" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-decoration="underline" text-anchor="middle" x="565" y="18">:DNSClient</text>
+</g>
+<g>
+	<line stroke="black" stroke-dasharray="18,6"  stroke-opacity="1" x1="567" y1="45" x2="567" y2="647" />
+</g>
+<g>
+	<line stroke="black" stroke-dasharray="18,6"  stroke-opacity="1" x1="143" y1="45" x2="143" y2="647" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="177" y="8" width="3" height="16" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="109" y="21" width="71" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="105" y="4" width="72" height="17" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-decoration="underline" text-anchor="middle" x="141" y="18">:D2UpdateMgr</text>
+</g>
+	<text font-family="Helvetica" font-size="20" fill="#000000" xml:space="preserve" x="603" y="71">Sequence depicting a</text>
+	<text font-family="Helvetica" font-size="20" fill="#000000" xml:space="preserve" x="603" y="91">simple state model which</text>
+	<text font-family="Helvetica" font-size="20" fill="#000000" xml:space="preserve" x="603" y="111">performs a single update.</text>
+<g>
+	<polygon fill="#c0ffff" stroke="black" stroke-opacity="1" points="6,115 120,115 120,125 130,125 130,185 6,185 6,115" />
+	<line stroke="black" stroke-opacity="1" x1="120" y1="115" x2="130" y2="125" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="16" y="135">As part of Update</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="16" y="145">Manager's sweep()</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="16" y="155">between events it</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="16" y="165">creates and starts the</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="16" y="175">transaction</text>
+</g>
+<g>
+	<polygon fill="#c0ffff" stroke="black" stroke-opacity="1" points="611,473 765,473 765,483 775,483 775,525 611,525 611,473" />
+	<line stroke="black" stroke-opacity="1" x1="765" y1="473" x2="775" y2="483" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="621" y="493">runStateModel() Iterates through</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="621" y="503">states until DONE_ST is</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="621" y="513">reached</text>
+</g>
+<g>
+	<line stroke="black" stroke-dasharray="18,6"  stroke-opacity="1" x1="336" y1="45" x2="336" y2="647" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="138" y="131" width="10" height="213" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="396" y="8" width="3" height="16" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="277" y="21" width="122" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="273" y="4" width="123" height="17" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" text-decoration="underline" text-anchor="middle" x="335" y="18">:NameChangeTransaction</text>
+</g>
+<g>
+	<polygon fill="#c0ffff" stroke="black" stroke-opacity="1" points="611,330 769,330 769,340 779,340 779,388 611,388 611,330" />
+	<line stroke="black" stroke-opacity="1" x1="769" y1="330" x2="779" y2="340" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="621" y="350">At some point later, DNSClient</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="621" y="360">invokes callback when IO</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="621" y="370">completes</text>
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="331" y="77" width="10" height="25" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="331" y="406" width="10" height="210" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="562" y="283" width="10" height="24" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="138" y="77" width="10" height="24" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="331" y="128" width="10" height="219" />
+</g>
+<g>
+	<polygon fill="#c0ffff" stroke="black" stroke-opacity="1" points="596,206 766,206 766,216 776,216 776,252 596,252 596,206" />
+	<line stroke="black" stroke-opacity="1" x1="766" y1="206" x2="776" y2="216" />
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="606" y="226">runStateModel() Iterates through</text>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="606" y="236">states until an update is initiated</text>
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="562" y="409" width="10" height="214" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="670" y1="388" x2="572" y2="417" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="149" y1="142" x2="331" y2="142" />
+	<polygon fill="#000000" stroke="none" points="331,142 327,138 327,146" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="342" y1="414" x2="562" y2="414" />
+	<polygon fill="#000000" stroke="none" points="342,414 346,410 346,418" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="149" y1="82" x2="331" y2="82" />
+	<polygon fill="#000000" stroke="none" points="331,82 327,78 327,86" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="337" y="221" width="10" height="115" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="337" y="424" width="10" height="24" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="337" y="175" width="10" height="24" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="337" y="136" width="10" height="24" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="337" y="466" width="10" height="126" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 349 467 L 366 467 L 366 474 L 349 474" />
+	<polygon fill="#000000" stroke="none" points="349,474 353,478 353,470" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 349 222 L 366 222 L 366 229 L 349 229" />
+	<polygon fill="#000000" stroke="none" points="349,229 353,233 353,225" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 349 425 L 366 425 L 366 432 L 349 432" />
+	<polygon fill="#000000" stroke="none" points="349,432 353,436 353,428" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 349 137 L 366 137 L 366 144 L 349 144" />
+	<polygon fill="#000000" stroke="none" points="349,144 353,148 353,140" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 349 176 L 366 176 L 366 183 L 349 183" />
+	<polygon fill="#000000" stroke="none" points="349,183 353,187 353,179" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" stroke-dasharray="4,4" x1="342" y1="611" x2="562" y2="611" />
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 558 607 L 562 611 L 558 615" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="595" y1="228" x2="367" y2="227" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="610" y1="492" x2="367" y2="472" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="343" y="491" width="10" height="95" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="343" y="247" width="10" height="83" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 355 248 L 372 248 L 372 255 L 355 255" />
+	<polygon fill="#000000" stroke="none" points="355,255 359,259 359,251" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 355 492 L 372 492 L 372 499 L 355 499" />
+	<polygon fill="#000000" stroke="none" points="355,499 359,503 359,495" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="354" y1="288" x2="562" y2="288" />
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 558 284 L 562 288 L 558 292" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" stroke-dasharray="4,4" x1="149" y1="339" x2="331" y2="339" />
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 153 335 L 149 339 L 153 343" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="349" y="515" width="10" height="24" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="349" y="556" width="10" height="24" />
+</g>
+<g>
+	<rect fill="#ffffff" stroke="black" stroke-width="1" stroke-opacity="1" x="349" y="300" width="10" height="24" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 361 516 L 378 516 L 378 523 L 361 523" />
+	<polygon fill="#000000" stroke="none" points="361,523 365,527 365,519" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 361 557 L 378 557 L 378 564 L 361 564" />
+	<polygon fill="#000000" stroke="none" points="361,564 365,568 365,560" />
+</g>
+<g>
+	<path fill="none" stroke="black" stroke-opacity="1" d="M 361 301 L 378 301 L 378 308 L 361 308" />
+	<polygon fill="#000000" stroke="none" points="361,308 365,312 365,304" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="439" y="283">doUpdate()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="361" y="173">setState(READY_ST)</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="352" y="216">runStateModel(START_TRANSACTION_EVT)</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="211" y="137">startTransaction()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="383" y="250">(getStateHandler())()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="363" y="410">operator ()()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="357" y="133">initStateHandlerMap()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="371" y="433">setDnsUpdateStatus()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="350" y="465">runStateModel(IO_COMPLETED_EVT)</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="183" y="77">NameChangeTransaction()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="377" y="499">(getStateHandler)()</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="374" y="579">setNextEvent(NOP_EVT)</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="382" y="521">setState(DONE_ST)</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="10" fill="#000000" xml:space="preserve" x="391" y="310">setNextEvent(NOP_EVT)</text>
+</g>
+</svg>

+ 304 - 0
src/bin/d2/images/remove_state_model.svg

@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="788" height="792" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="331" y="16" width="74" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="327" y="12" width="74" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="364" y="28">READY_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="280" y="138" width="180" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="276" y="134" width="180" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="366" y="150">SELECTING_FWD_SERVER_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="56" y="493" width="178" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="52" y="489" width="178" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="141" y="505">SELECTING_REV_SERVER_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="285" y="234" width="172" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="281" y="230" width="172" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="367" y="246">REMOVING_FWD_ADDRS_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="293" y="349" width="156" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="289" y="345" width="156" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="367" y="361">REMOVING_FWD_RRS_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="588" y="610" width="188" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="584" y="606" width="188" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="678" y="622">PROCESS_REMOVE_FAILED_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="277" y="687" width="166" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="273" y="683" width="166" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="356" y="699">PROCESS_REMOVE_OK_ST</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="62" y="608" width="160" height="22" rx="10" />
+	<rect fill="#ffffc0" stroke="black" stroke-opacity="1" x="58" y="604" width="160" height="22" rx="10" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="138" y="620">REMOVING_REV_PTRS_ST</text>
+</g>
+<polygon fill="white" stroke="black" stroke-opacity="1" points ="358,88 367,71 376,88 367,105" />
+<ellipse fill="black" cx="163" cy="26" rx="8.5" ry="8.5" />
+<g>
+	<ellipse fill="white" stroke="black" stroke-width="1" stroke-opacity="1" cx="531" cy="768" rx="11.5" ry="11.5" />
+	<ellipse fill="black" cx="531" cy="768" rx="8.5" ry="8.5" />
+</g>
+<polygon fill="white" stroke="black" stroke-opacity="1" points ="346,451 355,434 364,451 355,468" />
+<g>
+	<rect fill="none" stroke="black" stroke-width="1" stroke-opacity="1" x="153" y="255" width="118" height="43" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="212" y="271">&lt;&lt;DNS IO Callback&gt;&gt;</text>
+</g>
+<g>
+	<rect fill="none" stroke="black" stroke-width="1" stroke-opacity="1" x="11" y="666" width="118" height="43" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="70" y="682">&lt;&lt;DNS IO Callback&gt;&gt;</text>
+</g>
+<g>
+	<rect fill="none" stroke="black" stroke-width="1" stroke-opacity="1" x="154" y="368" width="118" height="43" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="213" y="384">&lt;&lt;DNS IO Callback&gt;&gt;</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="326" y1="25" x2="320" y2="19" />
+	<line stroke="black" stroke-opacity="1" x1="326" y1="25" x2="320" y2="31" />
+	<line stroke="black" stroke-opacity="1" x1="172" y1="25" x2="326" y2="25" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="366" y1="69" x2="372" y2="63" />
+	<line stroke="black" stroke-opacity="1" x1="366" y1="69" x2="360" y2="63" />
+	<line stroke="black" stroke-opacity="1" x1="366" y1="38" x2="366" y2="69" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="367" y1="133" x2="373" y2="127" />
+	<line stroke="black" stroke-opacity="1" x1="367" y1="133" x2="361" y2="127" />
+	<line stroke="black" stroke-opacity="1" x1="367" y1="106" x2="367" y2="133" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="354" y1="88" x2="143" y2="88" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="143" y1="488" x2="149" y2="482" />
+	<line stroke="black" stroke-opacity="1" x1="143" y1="488" x2="137" y2="482" />
+	<line stroke="black" stroke-opacity="1" x1="143" y1="88" x2="143" y2="488" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="368" y1="229" x2="374" y2="223" />
+	<line stroke="black" stroke-opacity="1" x1="368" y1="229" x2="362" y2="223" />
+	<line stroke="black" stroke-opacity="1" x1="368" y1="160" x2="368" y2="229" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="351" y1="229" x2="293" y2="190" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="340" y1="160" x2="331" y2="158" />
+	<line stroke="black" stroke-opacity="1" x1="340" y1="160" x2="338" y2="168" />
+	<line stroke="black" stroke-opacity="1" x1="293" y1="190" x2="340" y2="160" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="368" y1="344" x2="374" y2="338" />
+	<line stroke="black" stroke-opacity="1" x1="368" y1="344" x2="362" y2="337" />
+	<line stroke="black" stroke-opacity="1" x1="369" y1="256" x2="368" y2="344" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="460" y1="147" x2="680" y2="147" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="686" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="674" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="147" x2="680" y2="605" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="457" y1="243" x2="680" y2="243" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="686" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="674" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="243" x2="680" y2="605" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="449" y1="357" x2="680" y2="357" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="686" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="674" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="357" x2="680" y2="605" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="429" y1="371" x2="429" y2="398" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="429" y1="398" x2="679" y2="398" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="679" y1="605" x2="685" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="679" y1="605" x2="673" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="679" y1="398" x2="679" y2="605" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="680" y1="632" x2="680" y2="767" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="543" y1="767" x2="549" y2="773" />
+	<line stroke="black" stroke-opacity="1" x1="543" y1="767" x2="549" y2="761" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="767" x2="543" y2="767" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="358" y1="709" x2="358" y2="767" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="518" y1="767" x2="512" y2="761" />
+	<line stroke="black" stroke-opacity="1" x1="518" y1="767" x2="512" y2="773" />
+	<line stroke="black" stroke-opacity="1" x1="358" y1="767" x2="518" y2="767" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="161" y1="515" x2="219" y2="561" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="156" y1="603" x2="164" y2="604" />
+	<line stroke="black" stroke-opacity="1" x1="156" y1="603" x2="157" y2="594" />
+	<line stroke="black" stroke-opacity="1" x1="219" y1="561" x2="156" y2="603" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="125" y1="603" x2="72" y2="559" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="125" y1="515" x2="116" y2="514" />
+	<line stroke="black" stroke-opacity="1" x1="125" y1="515" x2="124" y2="523" />
+	<line stroke="black" stroke-opacity="1" x1="72" y1="559" x2="125" y2="515" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="342" y1="450" x2="143" y2="450" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="143" y1="488" x2="149" y2="482" />
+	<line stroke="black" stroke-opacity="1" x1="143" y1="488" x2="137" y2="482" />
+	<line stroke="black" stroke-opacity="1" x1="143" y1="450" x2="143" y2="488" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="354" y1="432" x2="360" y2="426" />
+	<line stroke="black" stroke-opacity="1" x1="354" y1="432" x2="348" y2="426" />
+	<line stroke="black" stroke-opacity="1" x1="354" y1="371" x2="354" y2="432" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="358" y1="682" x2="364" y2="676" />
+	<line stroke="black" stroke-opacity="1" x1="358" y1="682" x2="352" y2="676" />
+	<line stroke="black" stroke-opacity="1" x1="358" y1="469" x2="358" y2="682" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="234" y1="501" x2="680" y2="501" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="686" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="605" x2="674" y2="599" />
+	<line stroke="black" stroke-opacity="1" x1="680" y1="501" x2="680" y2="605" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="583" y1="618" x2="577" y2="611" />
+	<line stroke="black" stroke-opacity="1" x1="583" y1="618" x2="576" y2="623" />
+	<line stroke="black" stroke-opacity="1" x1="222" y1="617" x2="583" y2="618" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="163" y1="630" x2="163" y2="696" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="272" y1="696" x2="266" y2="690" />
+	<line stroke="black" stroke-opacity="1" x1="272" y1="696" x2="266" y2="702" />
+	<line stroke="black" stroke-opacity="1" x1="163" y1="696" x2="272" y2="696" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="213" y1="367" x2="213" y2="358" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="209" y1="254" x2="209" y2="243" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="73" y1="667" x2="74" y2="667" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="74" y1="630" x2="68" y2="636" />
+	<line stroke="black" stroke-opacity="1" x1="74" y1="630" x2="80" y2="636" />
+	<line stroke="black" stroke-opacity="1" x1="74" y1="667" x2="74" y2="630" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="527" y="497">NO_MORE_SERVERS_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="655" y="695">END_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="298" y="420">UPDATE_OK_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="551" y="352">UPDATE_FAILED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="374" y="202">SERVER_SELECTED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="176" y="688">UPDATE_OK_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="171" y="350">IO_COMPLETED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="133" y="580">SERVER_SELEGTED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="366" y="681">No reverse change requested</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="332" y="733">END_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="164" y="448">Reverse change requested</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="452" y="612">UPDATE_FAILED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="529" y="394">SERVER_IO_ERROR_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="525" y="140">NO_MORE_SERVERS_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="381" y="332">UPDATE_OK_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="548" y="234">UPDATE_FAILED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="213" y="192">SERVER_IO_ERROR_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="164" y="82">Only reverse change requested</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="203" y="14">START_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="384" y="115">Forward change requested</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="19" y="554">SERVER_IO_ERROR_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="156" y="237">IO_COMPLETED_EVT</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="655">IO_COMPLETED_EVT</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="288" y1="358" x2="282" y2="352" />
+	<line stroke="black" stroke-opacity="1" x1="288" y1="358" x2="282" y2="364" />
+	<line stroke="black" stroke-opacity="1" x1="213" y1="358" x2="288" y2="358" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="280" y1="243" x2="274" y2="237" />
+	<line stroke="black" stroke-opacity="1" x1="280" y1="243" x2="274" y2="249" />
+	<line stroke="black" stroke-opacity="1" x1="209" y1="243" x2="280" y2="243" />
+</g>
+</svg>

+ 316 - 0
src/bin/d2/images/request_mgt_classes.svg

@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="791" height="846" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="169" y="10" width="3" height="291" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="11" y="298" width="161" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="7" y="6" width="162" height="292" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="88" y="19">D2Process</text>
+	<line stroke="black" stroke-opacity="1" x1="7" y1="21" x2="169" y2="21" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="11" y="34">QUEUE_RESTART_PERCENT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="47">reconf_queue_flag_</text>
+	<line stroke="black" stroke-opacity="1" x1="7" y1="49" x2="169" y2="49" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="62">D2Process()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="75">init()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="88">run()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="101">shutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="114">configure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="127">command()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="140">~D2Process()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="153">checkQueueStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="166">reconfigureQueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="179">runIO()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="192">canShutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="205">setReconfQueueFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="218">setShutdownType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="231">getD2CfgMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="244">getD2QueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="257">getD2UpdateMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="270">getReconfQueueFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="11" y="283">getShutdownType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="11" y="296">getShutdownTypeStr()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="367" y="446" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="297" y="488" width="73" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="293" y="442" width="74" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="330" y="455">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="330" y="470">IOServicePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="293" y1="472" x2="367" y2="472" />
+	<line stroke="black" stroke-opacity="1" x1="293" y1="480" x2="367" y2="480" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="587" y="319" width="3" height="199" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="463" y="515" width="127" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="459" y="315" width="128" height="200" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" font-style="italic" text-anchor="middle" x="523" y="328">NameChangeListener</text>
+	<line stroke="black" stroke-opacity="1" x1="459" y1="330" x2="587" y2="330" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="343">listening_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="356">io_pending_</text>
+	<line stroke="black" stroke-opacity="1" x1="459" y1="358" x2="587" y2="358" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="371">NameChangeListener()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="384">~NameChangeListener()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="397">startListening()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="410">stopListening()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="423">receiveNext()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="436">invokeRecvHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="463" y="449">open()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="463" y="462">close()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-style="italic" x="463" y="475">doReceive()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="488">amListening()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="501">isIoPending()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="463" y="514">setListening()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="371" y1="464" x2="377" y2="470" />
+	<line stroke="black" stroke-opacity="1" x1="371" y1="464" x2="377" y2="458" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="458" y1="464" x2="371" y2="464" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="775" y="218" width="3" height="615" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="653" y="830" width="125" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="649" y="214" width="126" height="616" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="712" y="227">NameChangeRequest</text>
+	<line stroke="black" stroke-opacity="1" x1="649" y1="229" x2="775" y2="229" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="242">forward_change_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="255">reverse_change_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="268">fqdn_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="281">lease_expires_on_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="294">lease_length_</text>
+	<line stroke="black" stroke-opacity="1" x1="649" y1="296" x2="775" y2="296" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="309">NameChangeRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="322">NameChangeRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="653" y="335">fromFormat()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="348">toFormat()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="653" y="361">fromJSON()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="374">toJSON()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="387">validateContent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="400">getChangeType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="413">setChangeType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="426">setChangeType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="439">isForwardChange()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="452">setForwardChange()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="465">setForwardChange()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="478">isReverseChange()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="491">setReverseChange()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="504">setReverseChange()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="517">getFqdn()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="530">setFqdn()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="543">setFqdn()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="556">getIpAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="569">getIpIoAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="582">isV4()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="595">isV6()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="608">setIpAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="621">setIpAddress()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="634">getDhcid()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="647">setDhcid()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="660">setDhcid()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="673">getLeaseExpiresOn()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="686">getLeaseExpiresOnStr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="699">setLeaseExpiresOn()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="712">setLeaseExpiresOn()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="725">getLeaseLength()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="738">setLeaseLength()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="751">setLeaseLength()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="764">getStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="777">setStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="790">getElement()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="803">toText()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="816">operator ==()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="653" y="829">operator !=()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="377" y="113" width="3" height="277" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="249" y="387" width="131" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="245" y="109" width="132" height="278" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="311" y="122">D2QueueMgr</text>
+	<line stroke="black" stroke-opacity="1" x1="245" y1="124" x2="377" y2="124" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="137">MAX_QUEUE_DEFAULT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="150">max_queue_size_</text>
+	<line stroke="black" stroke-opacity="1" x1="245" y1="152" x2="377" y2="152" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="165">D2QueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="178">~D2QueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="191">initUDPListener()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="204">startListening()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="217">operator ()()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="230">stopListening()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="243">removeListener()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="256">getQueueSize()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="269">getMaxQueueSize()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="282">setMaxQueueSize()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="295">getMgrState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="308">peek()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="321">peekAt()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="334">dequeueAt()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="347">dequeue()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="360">enqueue()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="373">clearQueue()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="386">updateStopState()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="590" y="227" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="458" y="269" width="135" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="454" y="223" width="136" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="522" y="236">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="522" y="251">NameChangeListenerPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="454" y1="253" x2="590" y2="253" />
+	<line stroke="black" stroke-opacity="1" x1="454" y1="261" x2="590" y2="261" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="604" y="547" width="3" height="173" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="456" y="717" width="151" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="452" y="543" width="152" height="174" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="528" y="556">NameChangeUDPListener</text>
+	<line stroke="black" stroke-opacity="1" x1="452" y1="558" x2="604" y2="558" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="456" y="571">RECV_BUF_MAX</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="584">port_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="597">asio_socket_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="610">reuse_address_</text>
+	<line stroke="black" stroke-opacity="1" x1="452" y1="612" x2="604" y2="612" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="625">NameChangeUDPListener()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="638">~NameChangeUDPListener()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="651">open()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="664">close()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="677">doReceive()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="690">receiveCompletionHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="703">NameChangeUDPListener()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="456" y="716">operator =()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="331" y1="441" x2="337" y2="435" />
+	<line stroke="black" stroke-opacity="1" x1="331" y1="441" x2="325" y2="435" />
+	<line stroke="black" stroke-opacity="1" x1="331" y1="391" x2="331" y2="441" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="331,391 337,397 331,403 325,397" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="524" y1="314" x2="530" y2="308" />
+	<line stroke="black" stroke-opacity="1" x1="524" y1="314" x2="518" y2="308" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="524" y1="273" x2="524" y2="314" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="453" y1="245" x2="447" y2="239" />
+	<line stroke="black" stroke-opacity="1" x1="453" y1="245" x2="447" y2="251" />
+	<line stroke="black" stroke-opacity="1" x1="381" y1="245" x2="453" y2="245" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="381,245 387,239 393,245 387,251" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="527" y1="542" x2="526" y2="524" />
+	<line stroke="black" stroke-opacity="1" x1="526" y1="519" x2="520" y2="525" />
+	<line stroke="black" stroke-opacity="1" x1="526" y1="519" x2="532" y2="524" />
+	<line stroke="black" stroke-opacity="1" x1="520" y1="525" x2="532" y2="524" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="554" y="129" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="472" y="171" width="85" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="468" y="125" width="86" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="511" y="138">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="511" y="153">RequestQueue</text>
+	<line stroke="black" stroke-opacity="1" x1="468" y1="155" x2="554" y2="155" />
+	<line stroke="black" stroke-opacity="1" x1="468" y1="163" x2="554" y2="163" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="173" y="353" width="3" height="129" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="35" y="479" width="141" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="31" y="349" width="142" height="130" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="102" y="362">&lt;&lt;enum&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="102" y="377">State</text>
+	<line stroke="black" stroke-opacity="1" x1="31" y1="379" x2="173" y2="379" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="392">NOT_INITTED</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="405">INITTED</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="418">RUNNING</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="431">STOPPING</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="444">STOPPED_QUEUE_FULL</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="457">STOPPED_RECV_ERROR</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="35" y="470">STOPPED</text>
+	<line stroke="black" stroke-opacity="1" x1="31" y1="472" x2="173" y2="472" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="467" y1="150" x2="461" y2="144" />
+	<line stroke="black" stroke-opacity="1" x1="467" y1="150" x2="461" y2="156" />
+	<line stroke="black" stroke-opacity="1" x1="381" y1="150" x2="467" y2="150" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="381,150 387,144 393,150 387,156" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="244" y1="319" x2="102" y2="319" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="244,319 238,325 232,319 238,313" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="102" y1="348" x2="108" y2="342" />
+	<line stroke="black" stroke-opacity="1" x1="102" y1="348" x2="96" y2="342" />
+	<line stroke="black" stroke-opacity="1" x1="102" y1="319" x2="102" y2="348" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="285" y1="391" x2="285" y2="416" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="285,391 291,397 285,403 279,397" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="177" y1="416" x2="183" y2="422" />
+	<line stroke="black" stroke-opacity="1" x1="177" y1="416" x2="183" y2="410" />
+	<line stroke="black" stroke-opacity="1" x1="285" y1="416" x2="177" y2="416" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="177" y1="367" x2="232" y2="366" />
+<ellipse fill="none" stroke="black" stroke-width="1" stroke-opacity="1" cx="238" cy="366" rx="5" ry="5" />
+	<line stroke="black" stroke-opacity="1" x1="233" y1="366" x2="243" y2="366" />
+	<line stroke="black" stroke-opacity="1" x1="238" y1="361" x2="238" y2="371" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="774" y="129" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="642" y="171" width="135" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="638" y="125" width="136" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="706" y="138">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="706" y="153">NameChangeRequestPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="638" y1="155" x2="774" y2="155" />
+	<line stroke="black" stroke-opacity="1" x1="638" y1="163" x2="774" y2="163" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="708" y1="213" x2="714" y2="207" />
+	<line stroke="black" stroke-opacity="1" x1="708" y1="213" x2="702" y2="207" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="708" y1="175" x2="708" y2="213" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="637" y1="150" x2="631" y2="144" />
+	<line stroke="black" stroke-opacity="1" x1="637" y1="150" x2="631" y2="156" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="558" y1="150" x2="637" y2="150" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="187" y="54">queue_mgr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="341" y="438">io_service_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="187" y="413">target_stop_state_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="401" y="242">listener_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="112" y="345">mgr_state_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="399" y="147">ncr_queue_</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="352" y="36" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="264" y="78" width="91" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="260" y="32" width="92" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="306" y="45">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="306" y="60">D2QueueMgrPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="260" y1="62" x2="352" y2="62" />
+	<line stroke="black" stroke-opacity="1" x1="260" y1="70" x2="352" y2="70" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="259" y1="57" x2="252" y2="51" />
+	<line stroke="black" stroke-opacity="1" x1="259" y1="57" x2="253" y2="63" />
+	<line stroke="black" stroke-opacity="1" x1="173" y1="58" x2="259" y2="57" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="173,58 178,51 184,57 179,63" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="308" y1="108" x2="314" y2="102" />
+	<line stroke="black" stroke-opacity="1" x1="308" y1="108" x2="302" y2="102" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="308" y1="82" x2="308" y2="108" />
+</g>
+</svg>

+ 246 - 0
src/bin/d2/images/state_model_classes.svg

@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="645" height="712" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="212" y="431" width="3" height="63" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="170" y="491" width="45" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="166" y="427" width="46" height="64" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="189" y="440">State</text>
+	<line stroke="black" stroke-opacity="1" x1="166" y1="442" x2="212" y2="442" />
+	<line stroke="black" stroke-opacity="1" x1="166" y1="450" x2="212" y2="450" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="170" y="463">State()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="170" y="476">~State()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="170" y="489">run()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="227" y="531" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="161" y="573" width="69" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="157" y="527" width="70" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="192" y="540">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="192" y="555">StatePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="157" y1="557" x2="227" y2="557" />
+	<line stroke="black" stroke-opacity="1" x1="157" y1="565" x2="227" y2="565" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="191" y1="495" x2="185" y2="501" />
+	<line stroke="black" stroke-opacity="1" x1="191" y1="495" x2="197" y2="500" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="192" y1="526" x2="191" y2="495" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="403" y="271">states_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="255" y="125">map_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="108" y="458">handler_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="426" y="86">events_</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="94" y="441" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="22" y="483" width="75" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="18" y="437" width="76" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="56" y="450">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="56" y="465">StateHandler</text>
+	<line stroke="black" stroke-opacity="1" x1="18" y1="467" x2="94" y2="467" />
+	<line stroke="black" stroke-opacity="1" x1="18" y1="475" x2="94" y2="475" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="98" y1="461" x2="104" y2="467" />
+	<line stroke="black" stroke-opacity="1" x1="98" y1="461" x2="104" y2="455" />
+	<line stroke="black" stroke-opacity="1" x1="165" y1="461" x2="98" y2="461" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="165,461 159,467 153,461 159,455" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="84" y="302" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="18" y="344" width="69" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="14" y="298" width="70" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="49" y="311">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="49" y="326">Event</text>
+	<line stroke="black" stroke-opacity="1" x1="14" y1="328" x2="84" y2="328" />
+	<line stroke="black" stroke-opacity="1" x1="14" y1="336" x2="84" y2="336" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="84" y="183" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="18" y="225" width="69" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="14" y="179" width="70" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="49" y="192">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="49" y="207">EventPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="14" y1="209" x2="84" y2="209" />
+	<line stroke="black" stroke-opacity="1" x1="14" y1="217" x2="84" y2="217" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="629" y="32" width="3" height="667" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="485" y="696" width="147" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="481" y="28" width="148" height="668" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="555" y="41">StateModel</text>
+	<line stroke="black" stroke-opacity="1" x1="481" y1="43" x2="629" y2="43" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="56">NEW_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="69">END_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="82">SM_DERIVED_STATE_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="95">NOP_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="108">START_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="121">END_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="134">FAIL_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="485" y="147">SM_DERIVED_EVENT_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="160">dictionaries_initted_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="173">curr_state_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="186">prev_state_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="199">last_event_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="212">next_event_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="225">on_entry_flag_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="238">on_exit_flag_</text>
+	<line stroke="black" stroke-opacity="1" x1="481" y1="240" x2="629" y2="240" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="253">StateModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="266">~StateModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="279">startModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="292">runModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="305">endModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="318">nopStateHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="331">initDictionaries()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="344">defineEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="357">defineEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="370">getEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="383">verifyEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="396">defineStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="409">defineState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="422">getState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="435">verifyStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="448">onModelFailure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="461">transition()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="474">abortModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="487">setState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="500">postNextEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="513">doOnEntry()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="526">doOnExit()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="539">getCurrState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="552">getPrevState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="565">getLastEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="578">getNextEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="591">isModelNew()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="604">isModelRunning()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="617">isModelWaiting()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="630">isModelDone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="643">didModelFail()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="656">getEventLabel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="669">getStateLabel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="682">getContextStr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="485" y="695">getPrevContextStr()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="412" y="69" width="3" height="121" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="304" y="187" width="111" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="300" y="65" width="112" height="122" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="356" y="78">LabeledValueSet</text>
+	<line stroke="black" stroke-opacity="1" x1="300" y1="80" x2="412" y2="80" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="304" y="93">UNDEFINED_LABEL</text>
+	<line stroke="black" stroke-opacity="1" x1="300" y1="95" x2="412" y2="95" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="108">LabeledValueSet()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="121">~LabeledValueSet()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="134">add()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="147">add()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="160">get()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="173">isDefined()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="304" y="186">getLabel()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="416" y1="89" x2="422" y2="95" />
+	<line stroke="black" stroke-opacity="1" x1="416" y1="89" x2="422" y2="83" />
+	<line stroke="black" stroke-opacity="1" x1="480" y1="89" x2="416" y2="89" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="480,89 474,95 468,89 474,83" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="241" y="107" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="145" y="149" width="99" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="141" y="103" width="100" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="191" y="116">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="191" y="131">LabeledValueMap</text>
+	<line stroke="black" stroke-opacity="1" x1="141" y1="133" x2="241" y2="133" />
+	<line stroke="black" stroke-opacity="1" x1="141" y1="141" x2="241" y2="141" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="389" y="239" width="3" height="75" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="329" y="311" width="63" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="325" y="235" width="64" height="76" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="357" y="248">StateSet</text>
+	<line stroke="black" stroke-opacity="1" x1="325" y1="250" x2="389" y2="250" />
+	<line stroke="black" stroke-opacity="1" x1="325" y1="258" x2="389" y2="258" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="271">StateSet()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="284">~StateSet()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="297">add()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="329" y="310">getState()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="245" y1="128" x2="251" y2="134" />
+	<line stroke="black" stroke-opacity="1" x1="245" y1="128" x2="251" y2="122" />
+	<line stroke="black" stroke-opacity="1" x1="299" y1="128" x2="245" y2="128" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="299,128 293,134 287,128 293,122" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="358" y1="234" x2="358" y2="197" />
+	<line stroke="black" stroke-opacity="1" x1="358" y1="191" x2="352" y2="197" />
+	<line stroke="black" stroke-opacity="1" x1="358" y1="191" x2="364" y2="197" />
+	<line stroke="black" stroke-opacity="1" x1="352" y1="197" x2="364" y2="197" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="393" y1="274" x2="399" y2="280" />
+	<line stroke="black" stroke-opacity="1" x1="393" y1="274" x2="399" y2="268" />
+	<line stroke="black" stroke-opacity="1" x1="480" y1="274" x2="393" y2="274" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="480,274 474,280 468,274 474,268" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="240" y="185" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="150" y="227" width="93" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="146" y="181" width="94" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="193" y="194">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="193" y="209">LabeledValuePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="146" y1="211" x2="240" y2="211" />
+	<line stroke="black" stroke-opacity="1" x1="146" y1="219" x2="240" y2="219" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="145" y1="205" x2="139" y2="198" />
+	<line stroke="black" stroke-opacity="1" x1="145" y1="205" x2="138" y2="210" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="88" y1="204" x2="145" y2="205" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="194" y1="180" x2="199" y2="173" />
+	<line stroke="black" stroke-opacity="1" x1="194" y1="180" x2="187" y2="174" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="193" y1="153" x2="194" y2="180" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="234" y="260" width="3" height="135" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="150" y="392" width="87" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="146" y="256" width="88" height="136" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="190" y="269">LabeledValue</text>
+	<line stroke="black" stroke-opacity="1" x1="146" y1="271" x2="234" y2="271" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="284">value_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="297">label_</text>
+	<line stroke="black" stroke-opacity="1" x1="146" y1="299" x2="234" y2="299" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="312">LabeledValue()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="325">~LabeledValue()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="338">getValue()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="351">getLabel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="364">operator ==()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="377">operator !=()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="150" y="390">operator &lt;()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="191" y1="426" x2="191" y2="402" />
+	<line stroke="black" stroke-opacity="1" x1="191" y1="396" x2="185" y2="402" />
+	<line stroke="black" stroke-opacity="1" x1="191" y1="396" x2="197" y2="402" />
+	<line stroke="black" stroke-opacity="1" x1="185" y1="402" x2="197" y2="402" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="145" y1="324" x2="139" y2="317" />
+	<line stroke="black" stroke-opacity="1" x1="145" y1="324" x2="138" y2="329" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="88" y1="323" x2="145" y2="324" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="193" y1="255" x2="199" y2="249" />
+	<line stroke="black" stroke-opacity="1" x1="193" y1="255" x2="187" y2="248" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="194" y1="231" x2="193" y2="255" />
+</g>
+</svg>

+ 208 - 0
src/bin/d2/images/trans_classes.svg

@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="733" height="836" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="717" y="431" width="3" height="303" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="541" y="731" width="179" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="537" y="427" width="180" height="304" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="627" y="440">NameAddTransaction</text>
+	<line stroke="black" stroke-opacity="1" x1="537" y1="442" x2="717" y2="442" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="541" y="455">ADDING_FWD_ADDRS_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="541" y="468">REPLACING_FWD_ADDRS_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="541" y="481">REPLACING_REV_PTRS_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="541" y="494">FQDN_IN_USE_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="541" y="507">FQDN_NOT_IN_USE_EVT</text>
+	<line stroke="black" stroke-opacity="1" x1="537" y1="509" x2="717" y2="509" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="522">NameAddTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="535">~NameAddTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="548">defineEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="561">verifyEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="574">defineStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="587">verifyStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="600">readyHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="613">selectingFwdServerHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="626">selectingRevServerHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="639">addingFwdAddrsHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="652">replacingFwdAddrsHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="665">replacingRevPtrsHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="678">processAddOkHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="691">processAddFailedHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="704">buildAddFwdAddressRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="717">buildReplaceFwdAddressRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="541" y="730">buildReplaceRevPtrsRequest()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="445" y="12" width="3" height="811" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="249" y="820" width="199" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="245" y="8" width="200" height="812" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="345" y="21">NameChangeTransaction</text>
+	<line stroke="black" stroke-opacity="1" x1="245" y1="23" x2="445" y2="23" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="36">READY_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="49">SELECTING_FWD_SERVER_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="62">SELECTING_REV_SERVER_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="75">PROCESS_TRANS_OK_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="88">PROCESS_TRANS_FAILED_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="101">NCT_DERIVED_STATE_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="114">SELECT_SERVER_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="127">SERVER_SELECTED_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="140">SERVER_IO_ERROR_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="153">NO_MORE_SERVERS_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="166">IO_COMPLETED_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="179">UPDATE_OK_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="192">UPDATE_FAILED_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="205">NCT_DERIVED_EVENT_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="218">DNS_UPDATE_DEFAULT_TIMEOUT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="249" y="231">MAX_UPDATE_TRIES_PER_SERVER</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="244">forward_change_completed_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="257">reverse_change_completed_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="270">next_server_pos_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="283">update_attempts_</text>
+	<line stroke="black" stroke-opacity="1" x1="245" y1="285" x2="445" y2="285" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="298">NameChangeTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="311">~NameChangeTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="324">startTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="337">operator ()()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="350">sendUpdate()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="363">defineEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="376">verifyEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="389">defineStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="402">verifyStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="415">onModelFailure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="428">retryTransition()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="441">setDnsUpdateRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="454">clearDnsUpdateRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="467">setDnsUpdateStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="480">setDnsUpdateResponse()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="493">clearDnsUpdateResponse()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="506">setForwardChangeCompleted()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="519">setReverseChangeCompleted()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="532">setNcrStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="545">initServerSelection()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="558">selectNextServer()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="571">setUpdateAttempts()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="584">getIOService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="597">prepNewRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="610">addLeaseAddressRdata()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="623">addDhcidRdata()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="636">addPtrRdata()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="649">getNcr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="662">getTransactionKey()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="675">getNcrStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="688">getForwardDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="701">getReverseDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="714">getCurrentServer()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="727">getDNSClient()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="740">getDnsUpdateRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="753">getDnsUpdateStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="766">getDnsUpdateResponse()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="779">getForwardChangeCompleted()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="792">getReverseChangeCompleted()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="805">getUpdateAttempts()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="249" y="818">getAddressRRType()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="536" y1="596" x2="455" y2="596" />
+	<line stroke="black" stroke-opacity="1" x1="449" y1="596" x2="455" y2="602" />
+	<line stroke="black" stroke-opacity="1" x1="449" y1="596" x2="455" y2="590" />
+	<line stroke="black" stroke-opacity="1" x1="455" y1="602" x2="455" y2="590" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="716" y="87" width="3" height="277" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="540" y="361" width="179" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="536" y="83" width="180" height="278" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="626" y="96">NameRemoveTransaction</text>
+	<line stroke="black" stroke-opacity="1" x1="536" y1="98" x2="716" y2="98" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="540" y="111">REMOVING_FWD_ADDRS_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="540" y="124">REMOVING_FWD_RRS_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="540" y="137">REMOVING_REV_PTRS_ST</text>
+	<line stroke="black" stroke-opacity="1" x1="536" y1="139" x2="716" y2="139" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="152">NameRemoveTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="165">~NameRemoveTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="178">defineEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="191">verifyEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="204">defineStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="217">verifyStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="230">readyHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="243">selectingFwdServerHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="256">selectingRevServerHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="269">removingFwdAddrsHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="282">removingFwdRRsHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="295">removingRevPtrsHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="308">processRemoveOkHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="321">processRemoveFailedHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="334">buildRemoveFwdAddressRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="347">buildRemoveFwdRRsRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="540" y="360">buildRemoveRevPtrsRequest()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="177" y="87" width="3" height="667" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="33" y="751" width="147" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="29" y="83" width="148" height="668" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="103" y="96">StateModel</text>
+	<line stroke="black" stroke-opacity="1" x1="29" y1="98" x2="177" y2="98" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="111">NEW_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="124">END_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="137">SM_DERIVED_STATE_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="150">NOP_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="163">START_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="176">END_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="189">FAIL_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="33" y="202">SM_DERIVED_EVENT_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="215">dictionaries_initted_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="228">curr_state_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="241">prev_state_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="254">last_event_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="267">next_event_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="280">on_entry_flag_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="293">on_exit_flag_</text>
+	<line stroke="black" stroke-opacity="1" x1="29" y1="295" x2="177" y2="295" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="308">StateModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="321">~StateModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="334">startModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="347">runModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="360">endModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="373">nopStateHandler()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="386">initDictionaries()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="399">defineEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="412">defineEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="425">getEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="438">verifyEvents()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="451">defineStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="464">defineState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="477">getState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="490">verifyStates()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="503">onModelFailure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="516">transition()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="529">abortModel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="542">setState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="555">postNextEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="568">doOnEntry()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="581">doOnExit()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="594">getCurrState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="607">getPrevState()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="620">getLastEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="633">getNextEvent()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="646">isModelNew()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="659">isModelRunning()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="672">isModelWaiting()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="685">isModelDone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="698">didModelFail()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="711">getEventLabel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="724">getStateLabel()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="737">getContextStr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="33" y="750">getPrevContextStr()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="535" y1="228" x2="454" y2="227" />
+	<line stroke="black" stroke-opacity="1" x1="449" y1="227" x2="454" y2="233" />
+	<line stroke="black" stroke-opacity="1" x1="449" y1="227" x2="455" y2="221" />
+	<line stroke="black" stroke-opacity="1" x1="454" y1="233" x2="455" y2="221" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="244" y1="401" x2="187" y2="401" />
+	<line stroke="black" stroke-opacity="1" x1="181" y1="401" x2="187" y2="407" />
+	<line stroke="black" stroke-opacity="1" x1="181" y1="401" x2="187" y2="395" />
+	<line stroke="black" stroke-opacity="1" x1="187" y1="407" x2="187" y2="395" />
+</g>
+</svg>

+ 387 - 0
src/bin/d2/images/update_exec_classes.svg

@@ -0,0 +1,387 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Bouml (http://bouml.free.fr/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="847" height="932" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="175" y="5" width="3" height="291" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="17" y="293" width="161" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="13" y="1" width="162" height="292" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="94" y="14">D2Process</text>
+	<line stroke="black" stroke-opacity="1" x1="13" y1="16" x2="175" y2="16" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="17" y="29">QUEUE_RESTART_PERCENT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="42">reconf_queue_flag_</text>
+	<line stroke="black" stroke-opacity="1" x1="13" y1="44" x2="175" y2="44" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="57">D2Process()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="70">init()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="83">run()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="96">shutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="109">configure()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="122">command()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="135">~D2Process()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="148">checkQueueStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="161">reconfigureQueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="174">runIO()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="187">canShutdown()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="200">setReconfQueueFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="213">setShutdownType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="226">getD2CfgMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="239">getD2QueueMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="252">getD2UpdateMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="265">getReconfQueueFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="17" y="278">getShutdownType()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="17" y="291">getShutdownTypeStr()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="332" y="412" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="262" y="454" width="73" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="258" y="408" width="74" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="295" y="421">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="295" y="436">IOServicePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="258" y1="438" x2="332" y2="438" />
+	<line stroke="black" stroke-opacity="1" x1="258" y1="446" x2="332" y2="446" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="617" y="285" width="3" height="511" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="421" y="793" width="199" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="417" y="281" width="200" height="512" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="517" y="294">NameChangeTransaction</text>
+	<line stroke="black" stroke-opacity="1" x1="417" y1="296" x2="617" y2="296" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="309">READY_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="322">SELECTING_FWD_SERVER_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="335">SELECTING_REV_SERVER_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="348">PROCESS_TRANS_OK_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="361">PROCESS_TRANS_FAILED_ST</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="374">NCT_DERIVED_STATE_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="387">SELECT_SERVER_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="400">SERVER_SELECTED_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="413">SERVER_IO_ERROR_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="426">NO_MORE_SERVERS_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="439">IO_COMPLETED_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="452">UPDATE_OK_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="465">UPDATE_FAILED_EVT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="478">NCT_DERIVED_EVENT_MIN</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="491">DNS_UPDATE_DEFAULT_TIMEOUT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="421" y="504">MAX_UPDATE_TRIES_PER_SERVER</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="517">forward_change_completed_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="530">reverse_change_completed_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="543">next_server_pos_</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="556">update_attempts_</text>
+	<line stroke="black" stroke-opacity="1" x1="417" y1="558" x2="617" y2="558" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="571">NameChangeTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="584">~NameChangeTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="597">startTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="610">operator ()()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="623">getNcr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="636">getTransactionKey()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="649">getNcrStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="662">getForwardDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="675">getReverseDomain()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="688">getCurrentServer()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="701">getDNSClient()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="714">getDnsUpdateRequest()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="727">getDnsUpdateStatus()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="740">getDnsUpdateResponse()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="753">getForwardChangeCompleted()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="766">getReverseChangeCompleted()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="779">getUpdateAttempts()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="421" y="792">getAddressRRType()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="336" y1="432" x2="342" y2="438" />
+	<line stroke="black" stroke-opacity="1" x1="336" y1="432" x2="342" y2="426" />
+	<line stroke="black" stroke-opacity="1" x1="416" y1="432" x2="336" y2="432" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="416,432 410,438 404,432 410,426" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="586" y="211" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="436" y="253" width="153" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="432" y="207" width="154" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="509" y="220">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="509" y="235">NameChangeTransactionPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="432" y1="237" x2="586" y2="237" />
+	<line stroke="black" stroke-opacity="1" x1="432" y1="245" x2="586" y2="245" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="511" y1="280" x2="517" y2="274" />
+	<line stroke="black" stroke-opacity="1" x1="511" y1="280" x2="505" y2="274" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="511" y1="257" x2="511" y2="280" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="361" y="487" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="229" y="529" width="135" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="225" y="483" width="136" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="293" y="496">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="293" y="511">NameChangeRequestPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="225" y1="513" x2="361" y2="513" />
+	<line stroke="black" stroke-opacity="1" x1="225" y1="521" x2="361" y2="521" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="365" y1="507" x2="371" y2="513" />
+	<line stroke="black" stroke-opacity="1" x1="365" y1="507" x2="371" y2="501" />
+	<line stroke="black" stroke-opacity="1" x1="416" y1="507" x2="365" y2="507" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="416,507 410,513 404,507 410,501" />
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="506" y="138">transaction_list_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="650" y="529">dns_update_request_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="312" y="650">reverse_domain_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="626" y="637">dns_update_response_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="312" y="580">forward_domain_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="714" y="313">dns_client_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="134" y="354">queue_mgr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="311" y="35">update_mgr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="375" y="504">ncr_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="303" y="404">io_service_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="346" y="429">io_service_</text>
+</g>
+<g>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="85" y="329">queue_mgr_</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="346" y="588" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="260" y="630" width="89" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="256" y="584" width="90" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="301" y="597">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="301" y="612">DdnsDomainPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="256" y1="614" x2="346" y2="614" />
+	<line stroke="black" stroke-opacity="1" x1="256" y1="622" x2="346" y2="622" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="120" y="337" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="32" y="379" width="91" height="3" />
+	<rect fill="#c0ffff" stroke="black" stroke-width="1" stroke-opacity="1" x="28" y="333" width="92" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="74" y="346">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="74" y="361">D2QueueMgrPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="28" y1="363" x2="120" y2="363" />
+	<line stroke="black" stroke-opacity="1" x1="28" y1="371" x2="120" y2="371" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="740" y="321" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="668" y="363" width="75" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="664" y="317" width="76" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="702" y="330">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="702" y="345">DNSClientPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="664" y1="347" x2="740" y2="347" />
+	<line stroke="black" stroke-opacity="1" x1="664" y1="355" x2="740" y2="355" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="760" y="553" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="644" y="595" width="119" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="640" y="549" width="120" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="700" y="562">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="700" y="577">D2UpdateMessagePtr</text>
+	<line stroke="black" stroke-opacity="1" x1="640" y1="579" x2="760" y2="579" />
+	<line stroke="black" stroke-opacity="1" x1="640" y1="587" x2="760" y2="587" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="416" y1="563" x2="302" y2="563" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="416,563 410,569 404,563 410,557" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="416" y1="656" x2="302" y2="656" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="416,656 410,662 404,656 410,650" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="75" y1="332" x2="80" y2="325" />
+	<line stroke="black" stroke-opacity="1" x1="75" y1="332" x2="68" y2="326" />
+	<line stroke="black" stroke-opacity="1" x1="74" y1="297" x2="75" y2="332" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="74,297 80,302 74,308 68,303" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="621" y1="295" x2="704" y2="295" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="621,295 627,289 633,295 627,301" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="621" y1="534" x2="682" y2="534" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="621,534 627,528 633,534 627,540" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="621" y1="618" x2="688" y2="618" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="621,618 627,612 633,618 627,624" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="688" y1="599" x2="682" y2="605" />
+	<line stroke="black" stroke-opacity="1" x1="688" y1="599" x2="694" y2="605" />
+	<line stroke="black" stroke-opacity="1" x1="688" y1="618" x2="688" y2="599" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="302" y1="634" x2="296" y2="640" />
+	<line stroke="black" stroke-opacity="1" x1="302" y1="634" x2="308" y2="640" />
+	<line stroke="black" stroke-opacity="1" x1="302" y1="656" x2="302" y2="634" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="302" y1="583" x2="308" y2="577" />
+	<line stroke="black" stroke-opacity="1" x1="302" y1="583" x2="296" y2="577" />
+	<line stroke="black" stroke-opacity="1" x1="302" y1="563" x2="302" y2="583" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="704" y1="316" x2="710" y2="310" />
+	<line stroke="black" stroke-opacity="1" x1="704" y1="316" x2="698" y2="310" />
+	<line stroke="black" stroke-opacity="1" x1="704" y1="295" x2="704" y2="316" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="682" y1="548" x2="688" y2="542" />
+	<line stroke="black" stroke-opacity="1" x1="682" y1="548" x2="676" y2="542" />
+	<line stroke="black" stroke-opacity="1" x1="682" y1="534" x2="682" y2="548" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="383" y="112" width="3" height="265" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="209" y="374" width="177" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="205" y="108" width="178" height="266" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="294" y="121">D2UpdateMgr</text>
+	<line stroke="black" stroke-opacity="1" x1="205" y1="123" x2="383" y2="123" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="209" y="136">MAX_TRANSACTIONS_DEFAULT</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="149">max_transactions_</text>
+	<line stroke="black" stroke-opacity="1" x1="205" y1="151" x2="383" y2="151" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="164">D2UpdateMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="177">~D2UpdateMgr()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="190">sweep()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="203">checkFinishedTransactions()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="216">pickNextJob()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="229">makeTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="242">getIOService()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="255">getMaxTransactions()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="268">setMaxTransactions()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="281">findTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="294">transactionListEnd()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="307">transactionListBegin()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="320">hasTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="333">removeTransaction()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="346">clearTransactionList()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="359">getQueueCount()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="209" y="372">getTransactionCount()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="756" y="385" width="3" height="115" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="670" y="497" width="89" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="666" y="381" width="90" height="116" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="711" y="394">DNSClient</text>
+	<line stroke="black" stroke-opacity="1" x1="666" y1="396" x2="756" y2="396" />
+	<line stroke="black" stroke-opacity="1" x1="666" y1="404" x2="756" y2="404" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="670" y="417">DNSClient()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="670" y="430">~DNSClient()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="670" y="443">DNSClient()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="670" y="456">operator =()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="670" y="469">getMaxTimeout()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="670" y="482">doUpdate()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="670" y="495">doUpdate()</text>
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="124" y1="357" x2="130" y2="362" />
+	<line stroke="black" stroke-opacity="1" x1="124" y1="357" x2="129" y2="350" />
+	<line stroke="black" stroke-opacity="1" x1="204" y1="356" x2="124" y2="357" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="204,356 198,362 192,356 197,350" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="706" y1="380" x2="712" y2="374" />
+	<line stroke="black" stroke-opacity="1" x1="706" y1="380" x2="700" y2="374" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="706" y1="367" x2="706" y2="380" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="293" y1="407" x2="298" y2="400" />
+	<line stroke="black" stroke-opacity="1" x1="293" y1="407" x2="286" y2="401" />
+	<line stroke="black" stroke-opacity="1" x1="292" y1="378" x2="293" y2="407" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="292,378 298,383 292,389 286,384" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="831" y="654" width="3" height="265" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="727" y="916" width="107" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="723" y="650" width="108" height="266" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="777" y="663">D2UpdateMessage</text>
+	<line stroke="black" stroke-opacity="1" x1="723" y1="665" x2="831" y2="665" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="678">message_</text>
+	<line stroke="black" stroke-opacity="1" x1="723" y1="680" x2="831" y2="680" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="693">D2UpdateMessage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="706">D2UpdateMessage()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="719">operator =()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="732">getQRFlag()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="745">getId()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="758">setId()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="771">getRcode()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="784">setRcode()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="797">getRRCount()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="810">beginSection()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="823">endSection()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="836">setZone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="849">getZone()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="862">addRRset()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="875">toWire()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="888">fromWire()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-decoration="underline" x="727" y="901">ddnsToDnsSection()</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" x="727" y="914">validateResponse()</text>
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="349" y="43" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="259" y="85" width="93" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="255" y="39" width="94" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="302" y="52">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="302" y="67">D2UpdateMgrPtr</text>
+	<line stroke="black" stroke-opacity="1" x1="255" y1="69" x2="349" y2="69" />
+	<line stroke="black" stroke-opacity="1" x1="255" y1="77" x2="349" y2="77" />
+</g>
+<g>
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="764" y1="574" x2="776" y2="574" />
+</g>
+<g>
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="539" y="146" width="3" height="45" />
+	<rect fill="#cbcbcb" stroke="none" stroke-opacity="1" x="455" y="188" width="87" height="3" />
+	<rect fill="#ffffc0" stroke="black" stroke-width="1" stroke-opacity="1" x="451" y="142" width="88" height="46" />
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" text-anchor="middle" x="495" y="155">&lt;&lt;typedef&gt;&gt;</text>
+	<text font-family="Helvetica" font-size="11" fill="#000000" xml:space="preserve" font-weight="bold" text-anchor="middle" x="495" y="170">TransactionList</text>
+	<line stroke="black" stroke-opacity="1" x1="451" y1="172" x2="539" y2="172" />
+	<line stroke="black" stroke-opacity="1" x1="451" y1="180" x2="539" y2="180" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="179" y1="17" x2="301" y2="17" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="179,17 185,11 191,17 185,23" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="504" y1="206" x2="509" y2="199" />
+	<line stroke="black" stroke-opacity="1" x1="504" y1="206" x2="497" y2="200" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="502" y1="192" x2="504" y2="206" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="301" y1="107" x2="307" y2="101" />
+	<line stroke="black" stroke-opacity="1" x1="301" y1="107" x2="295" y2="100" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="302" y1="89" x2="301" y2="107" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="387" y1="120" x2="497" y2="120" />
+	<polygon fill="#000000" stroke="black" stroke-opacity="1" points="387,120 393,114 399,120 393,126" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="776" y1="649" x2="782" y2="643" />
+	<line stroke="black" stroke-opacity="1" x1="776" y1="649" x2="770" y2="643" />
+	<line stroke-dasharray="4,4" stroke="black" stroke-opacity="1" x1="776" y1="574" x2="776" y2="649" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="497" y1="141" x2="503" y2="135" />
+	<line stroke="black" stroke-opacity="1" x1="497" y1="141" x2="491" y2="135" />
+	<line stroke="black" stroke-opacity="1" x1="497" y1="120" x2="497" y2="141" />
+</g>
+<g>
+	<line stroke="black" stroke-opacity="1" x1="301" y1="38" x2="307" y2="32" />
+	<line stroke="black" stroke-opacity="1" x1="301" y1="38" x2="295" y2="32" />
+	<line stroke="black" stroke-opacity="1" x1="301" y1="17" x2="301" y2="38" />
+</g>
+</svg>