Commit f14f5223 authored by Francis Dupont's avatar Francis Dupont

[1205a] Rebased trac1205 into trac1205a (more things to add anyway)

parent 21bfe739
......@@ -85,6 +85,7 @@ libkea_dhcpsrv_la_SOURCES += alloc_engine.h
libkea_dhcpsrv_la_SOURCES += alloc_engine_log.h
libkea_dhcpsrv_la_SOURCES += base_host_data_source.h
libkea_dhcpsrv_la_SOURCES += callout_handle_store.h
libkea_dhcpsrv_la_SOURCES += cfg_to_element.h
libkea_dhcpsrv_la_SOURCES += cfg_4o6.h
libkea_dhcpsrv_la_SOURCES += cfg_db_access.h
libkea_dhcpsrv_la_SOURCES += cfg_duid.h
......@@ -222,6 +223,7 @@ EXTRA_DIST += logging.spec
# following headers are anticipated to be useful for the user libraries.
libkea_dhcpsrv_includedir = $(pkgincludedir)/dhcpsrv
libkea_dhcpsrv_include_HEADERS = \
cfg_to_element.h \
cfg_option.h \
cfg_4o6.h \
d2_client_cfg.h \
// Copyright (C) 2017 Internet Systems Consortium, Inc. ("ISC")
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at
#include <exceptions/exceptions.h>
#include <cc/data.h>
#include <stdint.h>
namespace isc {
/// @brief Cannot unparse error
/// This exception is expected to be thrown when toElement fails
/// and to skip flawed elements is not wanted.
class ToElementError : public isc::Exception {
ToElementError(const char* file, size_t line, const char* what) :
isc::Exception(file, line, what) { };
namespace dhcp {
/// @name Constants for unparsing styles
/// Default
static const uint32_t TO_ELEMENT_DEFAULT = 0x00000000;
/// Add default values
static const uint32_t TO_ELEMENT_ADD_DEFAULTS = 0x00000001;
/// Ignore disables
static const uint32_t TO_ELEMENT_IGNORE_DISABLE = 0x00000002;
/// Don't copy
static const uint32_t TO_ELEMENT_DO_NOT_COPY = 0x00000004;
/// Get option names
static const uint32_t TO_ELEMENT_OPTION_NAMES = 0x00000100;
/// Get ranges as prefixs
static const uint32_t TO_ELEMENT_TRY_PREFIXES = 0x00000200;
/// Skip (vs throw) on errors
static const uint32_t TO_ELEMENT_SKIP_ERRORS = 0x80000000;
/// @brief Abstract class for configuration Cfg_* classes
template<typename ... Args>
struct CfgToElement {
/// Destructor
virtual ~CfgToElement() { }
/// @brief Unparse a configuration objet
/// Returns an element which must parse into the same objet, i.e.
/// @code
/// for all valid config C parse(toElement(parse(C)) == parse(C)
/// @endcode
/// @param extras extra arguments
/// @param flags a bitfield which can be used to modify the result
/// @return a pointer to a configuration which can be parsed into
/// the initial configuration object
virtual isc::data::ElementPtr toElement(Args... extras,
const uint32_t flags) const = 0;
}; // namespace isc::dhcp
}; // namespace isc
#endif // CFG_TO_ELEMENT_H
// Copyright (C) 2012-2016 Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2012-2017 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
......@@ -79,6 +79,15 @@ configuration. For example: the value of 1 identifies an immediate
predecessor of the current configuration, the value of 2 identifies the
one that occurred before it etc.
All configuration classes are derived from the abstract base class
\ref isc::dhcp::CfgBase and define the unparse virtual method
which returns a \ref isc::data::ConstElementPtr which must be
parsed into the same object, i.e. fullfil this property:
for all valid C: parse(unparse(parse(C))) == parse(C)
@section hostmgr Host Manager
Host Manager implemented by the \ref isc::dhcp::HostMgr is a singleton object
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment