Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Kea
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Sebastian Schrader
Kea
Commits
4563925f
Commit
4563925f
authored
Dec 02, 2016
by
Marcin Siodelski
Browse files
Options
Browse Files
Download
Plain Diff
[master] Merge branch 'trac5074'
parents
cbba4ee6
bd7aa52f
Changes
51
Hide whitespace changes
Inline
Side-by-side
Showing
51 changed files
with
732 additions
and
462 deletions
+732
-462
configure.ac
configure.ac
+4
-1
doc/Doxyfile
doc/Doxyfile
+1
-0
doc/devel/mainpage.dox
doc/devel/mainpage.dox
+3
-1
doc/guide/logging.xml
doc/guide/logging.xml
+9
-3
src/bin/d2/.gitignore
src/bin/d2/.gitignore
+0
-2
src/bin/d2/Makefile.am
src/bin/d2/Makefile.am
+3
-10
src/bin/d2/d2.dox
src/bin/d2/d2.dox
+1
-160
src/bin/d2/d2_cfg_mgr.cc
src/bin/d2/d2_cfg_mgr.cc
+3
-1
src/bin/d2/d2_cfg_mgr.h
src/bin/d2/d2_cfg_mgr.h
+7
-7
src/bin/d2/d2_config.cc
src/bin/d2/d2_config.cc
+3
-1
src/bin/d2/d2_config.h
src/bin/d2/d2_config.h
+5
-5
src/bin/d2/d2_controller.cc
src/bin/d2/d2_controller.cc
+4
-2
src/bin/d2/d2_controller.h
src/bin/d2/d2_controller.h
+5
-5
src/bin/d2/d2_log.cc
src/bin/d2/d2_log.cc
+2
-2
src/bin/d2/d2_log.h
src/bin/d2/d2_log.h
+1
-1
src/bin/d2/d2_messages.mes
src/bin/d2/d2_messages.mes
+1
-121
src/bin/d2/d2_process.cc
src/bin/d2/d2_process.cc
+17
-15
src/bin/d2/d2_process.h
src/bin/d2/d2_process.h
+3
-3
src/bin/d2/d2_queue_mgr.cc
src/bin/d2/d2_queue_mgr.cc
+3
-3
src/bin/d2/main.cc
src/bin/d2/main.cc
+1
-0
src/bin/d2/tests/Makefile.am
src/bin/d2/tests/Makefile.am
+3
-6
src/bin/d2/tests/d2_cfg_mgr_unittests.cc
src/bin/d2/tests/d2_cfg_mgr_unittests.cc
+3
-2
src/bin/d2/tests/d2_controller_unittests.cc
src/bin/d2/tests/d2_controller_unittests.cc
+5
-4
src/bin/d2/tests/d2_process_tests.sh.in
src/bin/d2/tests/d2_process_tests.sh.in
+4
-4
src/bin/d2/tests/d2_process_unittests.cc
src/bin/d2/tests/d2_process_unittests.cc
+3
-2
src/bin/d2/tests/d2_update_mgr_unittests.cc
src/bin/d2/tests/d2_update_mgr_unittests.cc
+4
-3
src/bin/keactrl/tests/keactrl_tests.sh.in
src/bin/keactrl/tests/keactrl_tests.sh.in
+5
-5
src/lib/Makefile.am
src/lib/Makefile.am
+1
-1
src/lib/process/.gitignore
src/lib/process/.gitignore
+5
-0
src/lib/process/Makefile.am
src/lib/process/Makefile.am
+72
-0
src/lib/process/d_cfg_mgr.cc
src/lib/process/d_cfg_mgr.cc
+4
-4
src/lib/process/d_cfg_mgr.h
src/lib/process/d_cfg_mgr.h
+3
-3
src/lib/process/d_controller.cc
src/lib/process/d_controller.cc
+20
-21
src/lib/process/d_controller.h
src/lib/process/d_controller.h
+5
-5
src/lib/process/d_log.cc
src/lib/process/d_log.cc
+19
-0
src/lib/process/d_log.h
src/lib/process/d_log.h
+23
-0
src/lib/process/d_process.h
src/lib/process/d_process.h
+4
-4
src/lib/process/io_service_signal.cc
src/lib/process/io_service_signal.cc
+6
-6
src/lib/process/io_service_signal.h
src/lib/process/io_service_signal.h
+11
-10
src/lib/process/libprocess.dox
src/lib/process/libprocess.dox
+176
-0
src/lib/process/process_messages.mes
src/lib/process/process_messages.mes
+137
-0
src/lib/process/spec_config.h.pre.in
src/lib/process/spec_config.h.pre.in
+0
-0
src/lib/process/tests/.gitignore
src/lib/process/tests/.gitignore
+1
-0
src/lib/process/tests/Makefile.am
src/lib/process/tests/Makefile.am
+50
-0
src/lib/process/tests/d_cfg_mgr_unittests.cc
src/lib/process/tests/d_cfg_mgr_unittests.cc
+4
-4
src/lib/process/tests/d_controller_unittests.cc
src/lib/process/tests/d_controller_unittests.cc
+22
-18
src/lib/process/tests/io_service_signal_unittests.cc
src/lib/process/tests/io_service_signal_unittests.cc
+5
-5
src/lib/process/tests/run_unittests.cc
src/lib/process/tests/run_unittests.cc
+22
-0
src/lib/process/testutils/Makefile.am
src/lib/process/testutils/Makefile.am
+27
-0
src/lib/process/testutils/d_test_stubs.cc
src/lib/process/testutils/d_test_stubs.cc
+6
-6
src/lib/process/testutils/d_test_stubs.h
src/lib/process/testutils/d_test_stubs.h
+6
-6
No files found.
configure.ac
View file @
4563925f
...
...
@@ -1513,7 +1513,6 @@ AC_CONFIG_FILES([compatcheck/Makefile
src/Makefile
src/bin/Makefile
src/bin/d2/Makefile
src/bin/d2/spec_config.h.pre
src/bin/d2/tests/Makefile
src/bin/d2/tests/d2_process_tests.sh
src/bin/d2/tests/test_data_files_config.h
...
...
@@ -1600,6 +1599,10 @@ AC_CONFIG_FILES([compatcheck/Makefile
src/lib/log/tests/logger_lock_test.sh
src/lib/log/tests/severity_test.sh
src/lib/log/tests/tempdir.h
src/lib/process/Makefile
src/lib/process/spec_config.h.pre
src/lib/process/tests/Makefile
src/lib/process/testutils/Makefile
src/lib/testutils/Makefile
src/lib/testutils/dhcp_test_lib.sh
src/lib/stats/Makefile
...
...
doc/Doxyfile
View file @
4563925f
...
...
@@ -784,6 +784,7 @@ INPUT = ../src/bin/d2 \
../src/lib/log \
../src/lib/log/compiler \
../src/lib/log/interprocess \
../src/lib/process \
../src/lib/stats \
../src/lib/testutils \
../src/lib/util \
...
...
doc/devel/mainpage.dox
View file @
4563925f
...
...
@@ -71,8 +71,10 @@
* - @subpage dhcpv6SignalBasedReconfiguration
* - @subpage dhcpv6Other
* - @subpage dhcpv4o6Dhcp6
* - @subpage libprocess
* - @subpage cpl
* - @subpage cplSignals
* - @subpage d2
* - @subpage d2CPL
* - @subpage d2ProcessDerivation
* - @subpage d2ConfigMgt
* - @subpage d2NCRReceipt
...
...
doc/guide/logging.xml
View file @
4563925f
...
...
@@ -439,12 +439,18 @@
</simpara>
</listitem>
<listitem>
<simpara>
<command>
kea-dhcp-ddns.dctl
</command>
- the logger used by the
kea-dhcp-ddns daemon for logging basic information about the
process, received signals and triggered reconfigurations.
</simpara>
</listitem>
<listitem>
<simpara>
<command>
kea-dhcp-ddns.dhcpddns
</command>
- the logger used by the
kea-dhcp-ddns daemon for logging configuration and global event
information. This logger does not specify logging settings for
libraries used by the daemon.
kea-dhcp-ddns daemon for logging events related to DDNS operations.
</simpara>
</listitem>
...
...
src/bin/d2/.gitignore
View file @
4563925f
...
...
@@ -2,6 +2,4 @@
/kea-dhcp-ddns.8
/d2_messages.cc
/d2_messages.h
/spec_config.h
/spec_config.h.pre
/s-messages
src/bin/d2/Makefile.am
View file @
4563925f
...
...
@@ -19,7 +19,7 @@ if USE_STATIC_LINK
AM_LDFLAGS
=
-static
endif
CLEANFILES
=
*
.gcno
*
.gcda
spec_config.h
d2_messages.h d2_messages.cc s-messages
CLEANFILES
=
*
.gcno
*
.gcda d2_messages.h d2_messages.cc s-messages
man_MANS
=
kea-dhcp-ddns.8
DISTCLEANFILES
=
$(man_MANS)
...
...
@@ -47,25 +47,19 @@ $(man_MANS):
endif
spec_config.h
:
spec_config.h.pre
$(SED)
-e
"s|@@LOCALSTATEDIR@@|
$(localstatedir)
|"
spec_config.h.pre
>
$@
d2_messages.h d2_messages.cc
:
s-messages
s-messages
:
d2_messages.mes
$(top_builddir)
/src/lib/log/compiler/kea-msg-compiler
$(top_srcdir)
/src/bin/d2/d2_messages.mes
touch
$@
BUILT_SOURCES
=
spec_config.h
d2_messages.h d2_messages.cc
BUILT_SOURCES
=
d2_messages.h d2_messages.cc
# convenience archive
noinst_LTLIBRARIES
=
libd2.la
libd2_la_SOURCES
=
libd2_la_SOURCES
+=
d_process.h
libd2_la_SOURCES
+=
d_controller.cc d_controller.h
libd2_la_SOURCES
+=
d_cfg_mgr.cc d_cfg_mgr.h
libd2_la_SOURCES
+=
d2_log.cc d2_log.h
libd2_la_SOURCES
+=
d2_process.cc d2_process.h
libd2_la_SOURCES
+=
d2_config.cc d2_config.h
...
...
@@ -75,13 +69,11 @@ libd2_la_SOURCES += d2_update_message.cc d2_update_message.h
libd2_la_SOURCES
+=
d2_update_mgr.cc d2_update_mgr.h
libd2_la_SOURCES
+=
d2_zone.cc d2_zone.h
libd2_la_SOURCES
+=
dns_client.cc dns_client.h
libd2_la_SOURCES
+=
io_service_signal.cc io_service_signal.h
libd2_la_SOURCES
+=
labeled_value.cc labeled_value.h
libd2_la_SOURCES
+=
nc_add.cc nc_add.h
libd2_la_SOURCES
+=
nc_remove.cc nc_remove.h
libd2_la_SOURCES
+=
nc_trans.cc nc_trans.h
libd2_la_SOURCES
+=
state_model.cc state_model.h
libd2_la_SOURCES
+=
d2_controller.cc d2_controller.h
nodist_libd2_la_SOURCES
=
d2_messages.h d2_messages.cc
...
...
@@ -93,6 +85,7 @@ kea_dhcp_ddns_SOURCES = main.cc
kea_dhcp_ddns_LDADD
=
libd2.la
kea_dhcp_ddns_LDADD
+=
$(top_builddir)
/src/lib/cfgrpt/libcfgrpt.la
kea_dhcp_ddns_LDADD
+=
$(top_builddir)
/src/lib/process/libkea-process.la
kea_dhcp_ddns_LDADD
+=
$(top_builddir)
/src/lib/dhcpsrv/libkea-dhcpsrv.la
kea_dhcp_ddns_LDADD
+=
$(top_builddir)
/src/lib/eval/libkea-eval.la
kea_dhcp_ddns_LDADD
+=
$(top_builddir)
/src/lib/dhcp_ddns/libkea-dhcp_ddns.la
...
...
src/bin/d2/d2.dox
View file @
4563925f
//
Copyright
(
C
)
2014
-
201
5
Internet
Systems
Consortium
,
Inc
.
(
"ISC"
)
//
Copyright
(
C
)
2014
-
201
6
Internet
Systems
Consortium
,
Inc
.
(
"ISC"
)
//
//
This
Source
Code
Form
is
subject
to
the
terms
of
the
Mozilla
Public
//
License
,
v
.
2.0
.
If
a
copy
of
the
MPL
was
not
distributed
with
this
...
...
@@ -29,165 +29,6 @@ already, its background color will be blue and/or its details may not be shown.
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 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
isc
::
d2
::
DProcess
.
These
services
include
:
-
Command
line
argument
handling
-
Process
instantiation
and
initialization
-
Support
for
stand
-
alone
execution
-
Process
event
loop
invocation
and
shutdown
It
creates
and
manages
an
instance
of
isc
::
d2
::
DProcessBase
.
The
CPL
is
designed
for
asynchronous
event
processing
applications
.
It
is
constructed
to
use
ASIO
library
for
IO
processing
.
@
c
DControllerBase
owns
an
isc
::
asiolink
::
IOService
instance
and
it
passes
this
into
the
@
c
DProcessBase
constructor
.
It
is
this
@
c
IOService
that
is
used
to
drive
the
process
's event loop. The controller is designed to provide any interfaces
between the process it controls and the outside world.
@c DControllerBase provides configuration for its process via a JSON file
specified as a mandatory command line argument. The file structure is
expected be as follows:
{ "<module-name>": {<module-config>} }
where:
- module-name : is a label which uniquely identifies the
configuration data for the (i.e. the controlled process.)
It is the value returned by @ref
isc::d2::DControllerBase::getAppName()
- module-config: a set of zero or more JSON elements which comprise
application'
s
configuration
values
.
Element
syntax
is
governed
by
those
elements
supported
in
isc
::
cc
.
The
file
may
contain
an
arbitrary
number
of
other
modules
.
@
todo
Eventually
,
some
sort
of
secure
socket
interface
which
supports
remote
control
operations
such
as
configuration
changes
or
status
reporting
will
likely
be
implemented
.
-
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
@
c
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 @c 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 from file moves
through the CPL layer:
@image html config_from_file_sequence.svg "CPL Configuration From File Sequence"
The CPL classes will likely move into a common library.
@subsection cplSignals CPL Signal Handling
CPL supports interaction with the outside world via OS signals. The default
implementation supports the following signal driven behavior:
- SIGHUP receipt of this signal will cause a reloading of the configuration
file.
- SIGINT/SIGTERM receipt of either of these signals will initiate an
orderly shutdown.
CPL applications wait for for process asynchronous IO events through
isc::asiolink::IOService::run() or its variants. These calls are not
interrupted upon signal receipt as is the select() function and while
boost::asio provides a signal mechanism it requires linking in additional
libraries. Therefore, CPL provides its own signal handling mechanism to
propagate an OS signal such as SIGHUP to an IOSerivce as a ready event with a
callback.
isc::d2::DControllerBase uses two mechanisms to carry out signal handling. It
uses isc::util::SignalSet to catch OS signals, and isc::d2:IOSignalQueue to
propagate them to its isc::asiolink::IOService as instances of
isc::d2::IOSignal.
This CPL signaling class hierarchy is illustrated in the following diagram:
@image html cpl_signal_classes.svg "CPL Signal Classes"
The mechanics of isc::d2::IOSignal are straight forward. Upon construction it
is given the target isc::asiolink::IOService, the value of the OS signal to
send (e.g. SIGINT, SIGHUP...), and an isc::d2::IOSignalHandler. This handler
should contain the logic the caller would normally execute in its OS signal
handler. Each isc::d2::IOSignal instance has a unique identifier called its
sequence_id.
Internally, IOSignal creates a 1 ms, one-shot timer, on the given
IOService. When the timer expires its event handler invokes the caller'
s
IOSignalHandler
passing
it
the
sequence_id
of
the
IOSignal
.
Sending
IOSignals
is
done
through
an
isc
::
d2
::
IOSignalQueue
.
This
class
is
used
to
create
the
signals
,
house
them
until
they
are
delivered
,
and
dequeue
them
so
they
can
be
been
handled
.
To
generate
an
IOSignal
when
an
OS
signal
arrives
,
the
process
's OS signal handler need only call
isc::d2::IOSignalQueue::pushSignal() with the appropriate values.
To dequeue the IOSignal inside the caller'
s
IOSignalHandler
,
one
simply
invokes
isc
::
d2
::
IOSignalQueue
::
popSignal
()
passing
it
the
sequence_id
parameter
passed
to
the
handler
.
This
method
returns
a
pointer
to
instigating
IOSignal
from
which
the
value
of
OS
signal
(
i
.
e
.
SIGINT
,
SIGUSR1
...)
can
be
obtained
.
Note
that
calling
popSignal
()
removes
the
IOSignalPtr
from
the
queue
,
which
should
reduce
its
reference
count
to
zero
upon
exiting
the
handler
(
unless
a
deliberate
copy
of
it
is
made
).
A
typical
isc
::
d2
::
IOSignalHandler
might
be
structured
as
follows
:
@
code
void
processSignal
(
IOSignalId
sequence_id
)
{
//
Pop
the
signal
instance
off
the
queue
.
IOSignalPtr
signal
=
io_signal_queue_
->
popSignal
(
sequence_id
);
int
os_signal_value
=
signal
->
getSignum
();
:
//
logic
based
on
the
signal
value
:
}
@
endcode
IOSignal
's handler invocation code will catch, log ,and then swallow any
exceptions thrown by an IOSignalHandler. This is done to protect the integrity
IOService context.
CPL integrates the use of the two mechanisms by registering the method,
isc::d2::DControllerBase::osSignalHandler(), as the
isc::util::SignalSet::onreceipt_handler_. This configures SignalSet'
s
internal
handler
to
invoke
the
method
each
time
a
signal
arrives
.
When
invoked
,
this
method
will
call
isc
::
d2
::
IOSignalQueue
::
pushSignal
()
to
create
an
isc
::
d2
::
IOSignal
,
passing
in
the
OS
signal
received
and
isc
::
d2
::
DControllerBase
::
ioSignalHandler
()
to
use
as
the
IOSignal
's
ready event handler
The following sequence diagram depicts the initialization of signal handling
during startup and the subsequent receipt of a SIGHUP:
@image html cpl_signal_sequence.svg "CPL Signal Handling Sequence"
@section d2ProcessDerivation D2'
s
CPL
Derivations
D2
's core application classes are DDNS-specific derivations of the CPL as show
...
...
src/bin/d2/d2_cfg_mgr.cc
View file @
4563925f
// Copyright (C) 2014-201
5
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2014-201
6
Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -12,6 +12,8 @@
#include <boost/foreach.hpp>
using
namespace
isc
::
process
;
namespace
isc
{
namespace
d2
{
...
...
src/bin/d2/d2_cfg_mgr.h
View file @
4563925f
// Copyright (C) 2014-201
5
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2014-201
6
Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -10,8 +10,8 @@
#include <asiolink/io_service.h>
#include <cc/data.h>
#include <exceptions/exceptions.h>
#include <d2/d_cfg_mgr.h>
#include <d2/d2_config.h>
#include <process/d_cfg_mgr.h>
#include <stdint.h>
#include <string>
...
...
@@ -30,7 +30,7 @@ typedef boost::shared_ptr<D2CfgContext> D2CfgContextPtr;
/// and any other DHCP-DDNS specific information that needs to be accessible
/// during configuration parsing as well as to the application as a whole.
/// It is derived from the context base class, DCfgContextBase.
class
D2CfgContext
:
public
DCfgContextBase
{
class
D2CfgContext
:
public
process
::
DCfgContextBase
{
public:
/// @brief Constructor
D2CfgContext
();
...
...
@@ -41,8 +41,8 @@ public:
/// @brief Creates a clone of this context object.
///
/// @return returns a pointer to the new clone.
virtual
DCfgContextBasePtr
clone
()
{
return
(
DCfgContextBasePtr
(
new
D2CfgContext
(
*
this
)));
virtual
process
::
DCfgContextBasePtr
clone
()
{
return
(
process
::
DCfgContextBasePtr
(
new
D2CfgContext
(
*
this
)));
}
/// @brief Fetches a reference to the D2Params
...
...
@@ -103,7 +103,7 @@ typedef boost::shared_ptr<DdnsDomainListMgr> DdnsDomainListMgrPtr;
/// configuration. This includes services for parsing sets of configuration
/// values, storing the parsed information in its converted form,
/// and retrieving the information on demand.
class
D2CfgMgr
:
public
DCfgMgrBase
{
class
D2CfgMgr
:
public
process
::
DCfgMgrBase
{
public:
/// @brief Reverse zone suffix added to IPv4 addresses for reverse lookups
/// @todo This should be configurable.
...
...
@@ -294,7 +294,7 @@ protected:
/// error.
///
/// @return Returns a DCfgContextBasePtr to the new context instance.
virtual
DCfgContextBasePtr
createNewContext
();
virtual
process
::
DCfgContextBasePtr
createNewContext
();
};
/// @brief Defines a shared pointer to D2CfgMgr.
...
...
src/bin/d2/d2_config.cc
View file @
4563925f
// Copyright (C) 2013-201
5
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2013-201
6
Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -20,6 +20,8 @@
#include <sstream>
#include <string>
using
namespace
isc
::
process
;
namespace
isc
{
namespace
d2
{
...
...
src/bin/d2/d2_config.h
View file @
4563925f
// Copyright (C) 2013-201
5
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2013-201
6
Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -9,10 +9,10 @@
#include <asiolink/io_service.h>
#include <cc/data.h>
#include <d2/d_cfg_mgr.h>
#include <dhcpsrv/parsers/dhcp_parsers.h>
#include <dns/tsig.h>
#include <exceptions/exceptions.h>
#include <process/d_cfg_mgr.h>
#include <boost/foreach.hpp>
...
...
@@ -701,7 +701,7 @@ typedef boost::shared_ptr<DdnsDomainListMgr> DdnsDomainListMgrPtr;
///
/// This class implements a concrete version of the base class by supplying a
/// "clone" method.
class
DScalarContext
:
public
DCfgContextBase
{
class
DScalarContext
:
public
process
::
DCfgContextBase
{
public:
/// @brief Constructor
...
...
@@ -715,8 +715,8 @@ public:
/// @brief Creates a clone of a DStubContext.
///
/// @return returns a pointer to the new clone.
virtual
DCfgContextBasePtr
clone
()
{
return
(
DCfgContextBasePtr
(
new
DScalarContext
(
*
this
)));
virtual
process
::
DCfgContextBasePtr
clone
()
{
return
(
process
::
DCfgContextBasePtr
(
new
DScalarContext
(
*
this
)));
}
protected:
...
...
src/bin/d2/d2_controller.cc
View file @
4563925f
// Copyright (C) 2013-201
5
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2013-201
6
Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -8,10 +8,12 @@
#include <d2/d2_controller.h>
#include <d2/d2_process.h>
#include <
d2
/spec_config.h>
#include <
process
/spec_config.h>
#include <stdlib.h>
using
namespace
isc
::
process
;
namespace
isc
{
namespace
d2
{
...
...
src/bin/d2/d2_controller.h
View file @
4563925f
// Copyright (C) 2013-201
5
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2013-201
6
Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -7,7 +7,7 @@
#ifndef D2_CONTROLLER_H
#define D2_CONTROLLER_H
#include <
d2
/d_controller.h>
#include <
process
/d_controller.h>
namespace
isc
{
namespace
d2
{
...
...
@@ -22,14 +22,14 @@ namespace d2 {
/// DControllerBase a templated class but the labor savings versus the
/// potential number of virtual methods which may be overridden didn't seem
/// worth the clutter at this point.
class
D2Controller
:
public
DControllerBase
{
class
D2Controller
:
public
process
::
DControllerBase
{
public:
/// @brief Static singleton instance method. This method returns the
/// base class singleton instance member. It instantiates the singleton
/// and sets the base class instance member upon first invocation.
///
/// @return returns the pointer reference to the singleton instance.
static
DControllerBasePtr
&
instance
();
static
process
::
DControllerBasePtr
&
instance
();
/// @brief Destructor.
virtual
~
D2Controller
();
...
...
@@ -51,7 +51,7 @@ private:
/// Note the caller is responsible for destructing the process. This
/// is handled by the base class, which wraps this pointer with a smart
/// pointer.
virtual
DProcessBase
*
createProcess
();
virtual
process
::
DProcessBase
*
createProcess
();
/// @brief Constructor is declared private to maintain the integrity of
/// the singleton instance.
...
...
src/bin/d2/d2_log.cc
View file @
4563925f
// Copyright (C) 2013-201
5
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2013-201
6
Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -12,7 +12,7 @@ namespace isc {
namespace
d2
{
/// @brief Defines the logger used within D2.
isc
::
log
::
Logger
d
ctl
_logger
(
"dhcpddns"
);
isc
::
log
::
Logger
d
2
_logger
(
"dhcpddns"
);
isc
::
log
::
Logger
dhcp_to_d2_logger
(
"dhcp-to-d2"
);
isc
::
log
::
Logger
d2_to_dns_logger
(
"d2-to-dns"
);
...
...
src/bin/d2/d2_log.h
View file @
4563925f
...
...
@@ -15,7 +15,7 @@ namespace isc {
namespace
d2
{
/// Define the loggers for the "d2" logging.
extern
isc
::
log
::
Logger
d
ctl
_logger
;
extern
isc
::
log
::
Logger
d
2
_logger
;
extern
isc
::
log
::
Logger
dhcp_to_d2_logger
;
extern
isc
::
log
::
Logger
d2_to_dns_logger
;
...
...
src/bin/d2/d2_messages.mes
View file @
4563925f
# Copyright (C) 2013-201
5
Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2013-201
6
Internet Systems Consortium, Inc. ("ISC")
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
...
...
@@ -6,83 +6,6 @@
$NAMESPACE isc::d2
% DCTL_CCSESSION_ENDING %1 ending control channel session
This debug message is issued just before the controller attempts
to disconnect from its session with the Kea control channel.
% DCTL_CCSESSION_STARTING %1 starting control channel session, specfile: %2
This debug message is issued just before the controller attempts
to establish a session with the Kea control channel.
% DCTL_COMMAND_RECEIVED %1 received command: %2, arguments: %3
A debug message listing the command (and possible arguments) received
from the Kea control system by the controller.
% DCTL_CONFIG_COMPLETE server has completed configuration: %1
This is an informational message announcing the successful processing of a
new configuration. It is output during server startup, and when an updated
configuration is committed by the administrator. Additional information
may be provided.
% DCTL_CONFIG_FILE_LOAD_FAIL %1 reason: %2
This fatal error message indicates that the application attempted to load its
initial configuration from file and has failed. The service will exit.
% DCTL_CONFIG_LOAD_FAIL %1 configuration failed to load: %2
This critical error message indicates that the initial application
configuration has failed. The service will start, but will not
process requests until the configuration has been corrected.
% DCTL_CONFIG_START parsing new configuration: %1
A debug message indicating that the application process has received an
updated configuration and has passed it to its configuration manager
for parsing.
% DCTL_CONFIG_STUB %1 configuration stub handler called
This debug message is issued when the dummy handler for configuration
events is called. This only happens during initial startup.
% DCTL_CONFIG_UPDATE %1 updated configuration received: %2
A debug message indicating that the controller has received an
updated configuration from the Kea configuration system.
% DCTL_INIT_PROCESS %1 initializing the application
This debug message is issued just before the controller attempts
to create and initialize its application instance.
% DCTL_INIT_PROCESS_FAIL %1 application initialization failed: %2
This error message is issued if the controller could not initialize the
application and will exit.
% DCTL_NOT_RUNNING %1 application instance is not running
A warning message is issued when an attempt is made to shut down the
application when it is not running.
% DCTL_PARSER_FAIL : %1
On receipt of a new configuration, the server failed to create a parser to
decode the contents of the named configuration element, or the creation
succeeded but the parsing actions and committal of changes failed.
The reason for the failure is given in the message.
% DCTL_PROCESS_FAILED %1 application execution failed: %2
The controller has encountered a fatal error while running the
application and is terminating. The reason for the failure is
included in the message.
% DCTL_RUN_PROCESS %1 starting application event loop
This debug message is issued just before the controller invokes
the application run method.
% DCTL_SESSION_FAIL %1 controller failed to establish Kea session: %1
The controller has failed to establish communication with the rest of
Kea and will exit.
% DCTL_STANDALONE %1 skipping message queue, running standalone
This is a debug message indicating that the controller is running in the
application in standalone mode. This means it will not connected to the Kea
message queue. Standalone mode is only useful during program development,
and should not be used in a production environment.
% DHCP_DDNS_ADD_FAILED DHCP_DDNS Request ID %1: Transaction outcome %2
This is an error message issued after DHCP_DDNS attempts to submit DNS mapping
entry additions have failed. The precise reason for the failure should be
...
...
@@ -106,16 +29,6 @@ the DHCP_DDNS process name, the second contains the PID and PID file.
This is a debug message that indicates that the application has DHCP_DDNS
requests in the queue but is working as many concurrent requests as allowed.
% DHCP_DDNS_CFG_FILE_RELOAD_ERROR configuration reload failed: %1, reverting to current configuration.
This is an error message indicating that the application attempted to reload
its configuration from file and encountered an error. This is likely due to
invalid content in the configuration file. The application should continue
to operate under its current configuration.
% DHCP_DDNS_CFG_FILE_RELOAD_SIGNAL_RECVD OS signal %1 received, reloading configuration from file: %2
This is an informational message indicating the application has received a signal
instructing it to reload its configuration from file.
% DHCP_DDNS_CLEARED_FOR_SHUTDOWN application has met shutdown criteria for shutdown type: %1
This is a debug message issued when the application has been instructed
to shutdown and has met the required criteria to exit.
...
...
@@ -280,15 +193,6 @@ no configured DDNS domains in the DHCP_DDNS configuration. Either the DHCP_DDNS
configuration needs to be updated or the source of the FQDN itself should be
investigated.
% DHCP_DDNS_PID_FILE_ERROR %1 could not create a PID file: %2
This is an error message that occurs when DHCP_DDNS is unable to create
its PID file. The log message should contain details sufficient to
determine the underlying cause. The most likely culprits are that
some portion of the pathname does not exist or a permissions issue. The
default path is determined by --localstatedir configure parameter but
may be overridden by setting environment variable, KEA_PIDFILE_DIR. The
first argument is the DHCP_DDNS process name.
% DHCP_DDNS_PROCESS_INIT application init invoked
This is a debug message issued when the DHCP-DDNS application enters
its initialization method.
...
...
@@ -448,33 +352,15 @@ reverse update will not performed.
This is a debug message issued when the DHCP-DDNS server exits its
event lo
% DHCP_DDNS_SHUTDOWN DHCP-DDNS has shut down
This is an informational message indicating that the DHCP-DDNS service
has shut down.
% DHCP_DDNS_SHUTDOWN_COMMAND application received shutdown command with args: %1
This is a debug message issued when the application has been instructed
to shut down by the controller.
% DHCP_DDNS_SHUTDOWN_SIGNAL_RECVD OS signal %1 received, starting shutdown
This is a debug message indicating the application has received a signal
instructing it to shutdown.
% DHCP_DDNS_SIGNAL_ERROR signal handler for signal %1, threw an unexpected exception: %2
This is an error message indicating that the application encountered an unexpected
error after receiving a signal. This is a programmatic error and should be
reported. While The application will likely continue to operating, it may be
unable to respond correctly to signals.
% DHCP_DDNS_STARTED Kea DHCP-DDNS server version %1 started
This informational message indicates that the DHCP-DDNS server has
processed all configuration information and is ready to begin processing.