)
AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([#include <sysrepo-cpp/Session.h>],
- [Connection("conn-name");])],
- [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... yes])],
- [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... no])
- AC_MSG_ERROR([Needs Sysrepo C++ bindings (unable to find Sysrepo-ccp library. To get it, you need to compile sysrepo with -DGEN_CPP_BINDINGS=ON.])]
+ [AC_LANG_PROGRAM(
+ [#include <sysrepo-cpp/Session.hpp>],
+ [sysrepo::Connection("conn-name");])],
+ [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... yes])],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <sysrepo-cpp/Session.h>],
+ [Connection("conn-name");])],
+ [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... old])
+ AC_DEFINE([HAVE_OLD_SYSREPO], [1], [Using sysrepo < 0.7.6])],
+ [AC_MSG_RESULT([checking for Sysrepo C++ bindings headers and library... no])
+ AC_MSG_ERROR([Needs Sysrepo C++ bindings (unable to find Sysrepo-ccp library. To get it, you need to compile sysrepo with -DGEN_CPP_BINDINGS=ON.)])]
+ )]
)
CPPFLAGS=$CPPFLAGS_SAVED
After installation the result should be similar to this:
<screen>
-Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/yang/
-Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/data/
+Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/yang/
+Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/data/
(Do not alter contents of these directories manually)
Module Name | Revision | Conformance | Data Owner | Permissions | Submodules | Enabled Features
<screen>
cd src/lib/yang/models
-sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g ietf-dhcpv6-server.yang
-sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g kea-dhcp4-server.yang
-sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g kea-dhcp6-server.yang
+sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g ietf-dhcpv6-server.yang
+sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g kea-dhcp4-server.yang
+sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g kea-dhcp6-server.yang
</screen>
Note the first -s parameter specifies the location of your YANG schema
The installation should look similar to the following:
<screen>
-$ sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.5/build/repository/yang -s . -g ietf-dhcpv6-server.yang
+$ sudo sysrepoctl -i -s /home/thomson/devel/sysrepo-0.7.6/build/repository/yang -s . -g ietf-dhcpv6-server.yang
Installing a new module from file 'ietf-dhcpv6-server.yang'...
-Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-server@2018-07-14.yang'...
+Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-server@2018-07-14.yang'...
Resolving dependency: 'ietf-dhcpv6-server' imports 'ietf-dhcpv6-options'...
-Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-options@2018-07-14.yang'...
+Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-options@2018-07-14.yang'...
Resolving dependency: 'ietf-dhcpv6-options' imports 'ietf-dhcpv6-types'...
-Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'...
+Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'...
Resolving dependency: 'ietf-dhcpv6-server' imports 'ietf-dhcpv6-types'...
-Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.5/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'...
+Installing the YANG file to '/home/thomson/devel/sysrepo-0.7.6/build/repository/yang/ietf-dhcpv6-types@2018-07-14.yang'...
Resolving dependency: 'ietf-dhcpv6-server' imports 'ietf-interfaces'...
Schema of the module ietf-interfaces is already installed, skipping...
Installing data files for module 'ietf-dhcpv6-server'...
<screen>
$ sysrepoctl -l
-Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/yang/
-Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.5/build/repository/data/
+Sysrepo schema directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/yang/
+Sysrepo data directory: /home/thomson/devel/sysrepo-0.7.6/build/repository/data/
(Do not alter contents of these directories manually)
Module Name | Revision | Conformance | Data Owner | Permissions | Submodules | Enabled Features
using namespace isc::data;
using namespace isc::netconf;
using namespace isc::yang;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
#ifndef NETCONF_H
#define NETCONF_H
+#ifndef HAVE_SYSREPO
+#error "config.h must be included before netconf.h"
+#endif
+
#include <netconf/netconf_cfg_mgr.h>
#include <netconf/control_socket.h>
#include <netconf/http_control_socket.h>
#include <netconf/stdout_control_socket.h>
#include <netconf/unix_control_socket.h>
+#ifndef HAVE_OLD_SYSREPO
+#include <sysrepo-cpp/Session.hpp>
+#else
#include <sysrepo-cpp/Session.h>
+#endif
#include <map>
namespace isc {
/// @param sess The sysrepo running datastore session.
/// @param service_pair The service name and configuration pair.
/// @return return code for sysrepo.
+#ifndef HAVE_OLD_SYSREPO
+ static int validate(sysrepo::S_Session sess,
+ const CfgServersMapPair& service_pair);
+#else
static int validate(S_Session sess, const CfgServersMapPair& service_pair);
+#endif
/// @brief Update.
///
/// @param sess The sysrepo running datastore session.
/// @param service_pair The service name and configuration pair.
/// @return return code for sysrepo.
+#ifndef HAVE_OLD_SYSREPO
+ static int update(sysrepo::S_Session sess,
+ const CfgServersMapPair& service_pair);
+#else
static int update(S_Session sess, const CfgServersMapPair& service_pair);
+#endif
/// @brief Log changes.
///
///
/// @param sess The sysrepo running datastore session.
/// @param model The model name.
+#ifndef HAVE_OLD_SYSREPO
+ static void logChanges(sysrepo::S_Session sess, const std::string& model);
+#else
static void logChanges(S_Session sess, const std::string& model);
+#endif
/// @brief Cancel flag.
bool cancel_;
void subscribeConfig(const CfgServersMapPair& service_pair);
/// @brief Sysrepo connection.
+#ifndef HAVE_OLD_SYSREPO
+ sysrepo::S_Connection conn_;
+#else
S_Connection conn_;
+#endif
/// @brief Sysrepo startup datastore session.
+#ifndef HAVE_OLD_SYSREPO
+ sysrepo::S_Session startup_sess_;
+#else
S_Session startup_sess_;
+#endif
/// @brief Sysrepo running datastore session.
+#ifndef HAVE_OLD_SYSREPO
+ sysrepo::S_Session running_sess_;
+#else
S_Session running_sess_;
+#endif
/// @brief Subscription map.
+#ifndef HAVE_OLD_SYSREPO
+ std::map<const std::string, sysrepo::S_Subscribe> subscriptions_;
+#else
std::map<const std::string, S_Subscribe> subscriptions_;
+#endif
};
} // namespace netconf
using namespace isc::yang;
using namespace isc::yang::test;
using namespace isc::util::thread;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
#include <config.h>
+#ifndef HAVE_OLD_SYSREPO
+#include <sysrepo-cpp/Session.hpp>
+#else
#include <sysrepo-cpp/Session.h>
+#endif
+
#include <sstream>
using namespace std;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
/// Not using libyang headers, e.g. yang_models.h.
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
void useModel(std::string model) {
std::string full_name =
"translator " + std::string(Name) + " unittests";
+#ifndef HAVE_OLD_SYSREPO
+ conn_.reset(new sysrepo::Connection(full_name.c_str()));
+ sess_.reset(new sysrepo::Session(conn_, SR_DS_CANDIDATE));
+#else
conn_.reset(new Connection(full_name.c_str()));
sess_.reset(new Session(conn_, SR_DS_CANDIDATE));
+#endif
EXPECT_NO_THROW(t_obj_.reset(new Type(sess_, model)));
}
}
/// @brief Sysrepo connection.
+#ifndef HAVE_OLD_SYSREPO
+ sysrepo::S_Connection conn_;
+#else
S_Connection conn_;
+#endif
/// @brief Sysrepo session.
+#ifndef HAVE_OLD_SYSREPO
+ sysrepo::S_Session sess_;
+#else
S_Session sess_;
+#endif
/// @brief Shared pointer to the transaction object.
boost::shared_ptr<Type> t_obj_;
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc::data;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
using namespace isc;
using namespace isc::data;
using namespace isc::yang;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
S_Session sess(new Session(conn, SR_DS_CANDIDATE));
// Get a translator object.
boost::scoped_ptr<TranslatorBasic> t_obj;
- EXPECT_NO_THROW(t_obj.reset(new TranslatorBasic(sess)));
+ EXPECT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, "")));
}
// Test basic yang value to JSON using the static method.
S_Connection conn(new Connection("translator unittests"));
S_Session sess(new Session(conn, SR_DS_CANDIDATE));
boost::scoped_ptr<TranslatorBasic> t_obj;
- ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess)));
+ ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, "")));
// Container.
string xpath = "/keatest-module:container/list";
S_Connection conn(new Connection("translator unittests"));
S_Session sess(new Session(conn, SR_DS_CANDIDATE));
boost::scoped_ptr<TranslatorBasic> t_obj;
- ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess)));
+ ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, "")));
// Container.
string xpath = "/keatest-module:container";
S_Connection conn(new Connection("translator unittests"));
S_Session sess(new Session(conn, SR_DS_CANDIDATE));
boost::scoped_ptr<TranslatorBasic> t_obj;
- ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess)));
+ ASSERT_NO_THROW(t_obj.reset(new TranslatorBasic(sess, "")));
// Empty list.
S_Iter_Value iter;
using namespace isc;
using namespace isc::yang;
using namespace isc::yang::test;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/testutils/translator_test.h>
#include <boost/lexical_cast.hpp>
#include <sstream>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
Tree result;
try {
const string& xpath0 = "/" + model_ + ":*//.";
- TranslatorBasic tb(session);
+ TranslatorBasic tb(session, model_);
S_Iter_Value iter = tb.getIter(xpath0);
for (;;) {
const string& xpath = tb.getNext(iter);
/// @param xpath The xpath of an element to be retrieved.
/// @param session Sysrepo session.
/// @return YangReprItem instance representing configuration parameter.
+#ifndef HAVE_OLD_SYSREPO
+ static YangReprItem get(const std::string& xpath,
+ sysrepo::S_Session session);
+#else
static YangReprItem get(const std::string& xpath, S_Session session);
+#endif
/// @brief The xpath.
std::string xpath_;
/// @brief Get tree from session.
///
/// @param session Sysrepo session.
+#ifndef HAVE_OLD_SYSREPO
+ Tree get(sysrepo::S_Session session) const;
+#else
Tree get(S_Session session) const;
+#endif
/// @brief Verifies a tree.
///
/// @param errs Error stream.
/// @return true if verification succeeds, false with errors displayed.
/// on errs if it fails.
+#ifndef HAVE_OLD_SYSREPO
+ bool verify(const Tree& expected, sysrepo::S_Session session,
+ std::ostream& errs) const;
+#else
bool verify(const Tree& expected, S_Session session,
std::ostream& errs) const;
+#endif
/// @brief Sets specified tree in a sysrepo.
///
///
/// @param tree The tree to install.
/// @param session Sysrepo session.
+#ifndef HAVE_OLD_SYSREPO
+ void set(const Tree& tree, sysrepo::S_Session session) const;
+#else
void set(const Tree& tree, S_Session session) const;
+#endif
/// @brief Validate.
///
/// @param errs Error stream.
/// @return True if validation succeeds, false with errors displayed
/// on errs if it fails.
+#ifndef HAVE_OLD_SYSREPO
+ bool validate(sysrepo::S_Session session, std::ostream& errs) const;
+#else
bool validate(S_Session session, std::ostream& errs) const;
+#endif
/// @brief The model name.
std::string model_;
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator.h>
#include <util/encode/base64.h>
#include <cstring>
using namespace std;
using namespace isc::data;
using namespace isc::util::encode;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace {
namespace isc {
namespace yang {
-TranslatorBasic::TranslatorBasic(S_Session session) : session_(session) {
+TranslatorBasic::TranslatorBasic(S_Session session, const string& model)
+ : session_(session), model_(model) {
}
TranslatorBasic::~TranslatorBasic() {
#include <cc/data.h>
#include <yang/sysrepo_error.h>
+#ifndef HAVE_SYSREPO
+#error "config.h must be included before translator.h"
+#endif
+
+#ifndef HAVE_OLD_SYSREPO
+#include <sysrepo-cpp/Session.hpp>
+#else
#include <sysrepo-cpp/Session.h>
+#endif
namespace isc {
namespace yang {
/// @brief Constructor.
///
/// @param session Sysrepo session.
- TranslatorBasic(S_Session session);
+ /// @param model Model name (used and shared by derived classes).
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorBasic(sysrepo::S_Session session, const std::string& model);
+#else
+ TranslatorBasic(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorBasic();
/// @param s_val The value.
/// @return The Element representing the sysrepo value.
/// @throw NotImplemented when the value type is not supported.
+#ifndef HAVE_OLD_SYSREPO
+ static isc::data::ElementPtr value(sysrepo::S_Val s_val);
+#else
static isc::data::ElementPtr value(S_Val s_val);
+#endif
/// @brief Get and translate basic value from YANG to JSON.
///
///
/// @param elem The JSON element.
/// @param type The sysrepo type.
+#ifndef HAVE_OLD_SYSREPO
+ static sysrepo::S_Val value(isc::data::ConstElementPtr elem,
+ sr_type_t type);
+#else
static S_Val value(isc::data::ConstElementPtr elem, sr_type_t type);
+#endif
/// @brief Translate and set basic value from JSON to YANG.
///
///
/// @param xpath The xpath of the list.
/// @return An S_Iter_Value pointer. Null is the list does not exist.
+#ifndef HAVE_OLD_SYSREPO
+ sysrepo::S_Iter_Value getIter(const std::string& xpath);
+#else
S_Iter_Value getIter(const std::string& xpath);
+#endif
/// @brief Get xpath of the next YANG list item.
///
/// @param iter The iterator pointing to the previous element
- /// @return The xpath of the next element. Empty string when at the end of the list.
+ /// @return The xpath of the next element. Empty string when at
+ /// the end of the list.
+#ifndef HAVE_OLD_SYSREPO
+ std::string getNext(sysrepo::S_Iter_Value iter);
+#else
std::string getNext(S_Iter_Value iter);
+#endif
protected:
/// @brief The sysrepo session.
+#ifndef HAVE_OLD_SYSREPO
+ sysrepo::S_Session session_;
+#else
S_Session session_;
+#endif
+
+ /// @brief The model.
+ std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_class.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorClass::TranslatorClass(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
TranslatorOptionDef(session, model),
- TranslatorOptionDefList(session, model),
- model_(model) {
+ TranslatorOptionDefList(session, model) {
}
TranslatorClass::~TranslatorClass() {
}
TranslatorClasses::TranslatorClasses(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
TranslatorOptionDef(session, model),
TranslatorOptionDefList(session, model),
- TranslatorClass(session, model),
- model_(model) {
+ TranslatorClass(session, model) {
}
TranslatorClasses::~TranslatorClasses() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorClass(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorClass(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorClass();
/// @param elem The JSON element.
void setClassKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting a client class list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorClasses(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorClasses(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorClasses();
/// @throw BadValue on client class without name.
void setClassesKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_config.h>
#include <yang/adaptor_config.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorConfig::TranslatorConfig(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorControlSocket(session, model),
TranslatorDatabase(session, model),
TranslatorDatabases(session, model),
TranslatorSharedNetwork(session, model),
TranslatorSharedNetworks(session, model),
TranslatorLogger(session, model),
- TranslatorLoggers(session, model),
- model_(model) {
+ TranslatorLoggers(session, model) {
}
TranslatorConfig::~TranslatorConfig() {
///
/// This translator supports kea-dhcp4-server, kea-dhcp6-server and
/// partially ietf-dhcpv6-server.
-///
-/// JSON syntax for kea-dhcp6 is:
+
+/// JSON syntax for kea-dhcp4 is:
/// @code
-/// "Dhcp6": {
-/// "preferred-lifetime": <preferred lifetime>,
+/// "Dhcp4": {
/// "valid-lifetime": <valid lifetime>,
/// "renew-timer": <renew timer>,
/// "rebind-timer": <rebind timer>,
/// "decline-probation-period": <decline probation period>,
-/// "subnet6": [ <list of subnet6> ],
+/// "subnet4": [ <list of subnet4> ],
/// <shared-networks>,
/// "interfaces-config": {
/// "interfaces" [ <list of interface names / specs> ],
/// ...
/// },
/// <databases>,
-/// <mac-sources>,
-/// <relay-supplied-options>,
/// <host-reservation-identifiers>,
/// <client-classes>,
/// <option-def>,
/// <option-data>,
/// <hooks-libraries>,
/// <expired-leases-processing>,
-/// <server-id>,
/// <dhcp4o6-port>,
/// <control-socket>,
/// <dhcp-ddns>,
+/// "echo-client-id": <echo client id flag>,
+/// "match-client-id": <match client id flag>,
+/// "next-server": <next server address>,
+/// "server-hostname": <server hostname>,
+/// "boot-file-name": <boot file name>,
/// <user-context>,
-/// <comment>
+/// <comment>,
+/// "sanity-checks": { <sanity checks> },
+/// "reservations": [ <list of host reservations> ]
/// },
/// "Logging": <logging>
/// @endcode
///
-/// @todo: add kea-dhcp4 syntax and expand logging.
-///
-/// YANG syntax for kea-dhcp6-server:config is:
+/// YANG syntax for kea-dhcp4-server:config is:
/// @code
-/// +--rw preferred-lifetime? uint32
/// +--rw valid-lifetime? uint32
/// +--rw renew-timer? uint32
/// +--rw rebind-timer? uint32
/// +--rw decline-probation-period? uint32
-/// +--rw subnet6 subnet6*
+/// +--rw subnet4 subnet4*
/// +--rw shared-networks shared-network*
/// +--rw interfaces-config
/// +--rw interfaces* string
+/// +--rw dhcp-socket-type? enumeration
+/// +--rw outbound-interface? enumeration
/// +--rw re-detect? boolean
/// +--rw user-context? string
/// +--rw lease-database! <database>
/// +--rw hosts-databases hosts-database*
-/// +--rw relay-supplied-options* string
-/// +--rw mac-sources* string
/// +--rw host-reservation-identifiers* enumeration
/// +--rw client-classes client-class*
/// +--rw option-def-list option-def*
/// +--rw library string
/// +--rw parameters? string
/// +--rw expired-leases-processing <expired-leases-processing>
-/// +--rw server-id <server-id>
/// +--rw dhcp4o6-port? uint16
/// +--rw control-socket! <control-socket>
/// +--rw dhcp-ddns <dhcp-ddns>
/// +--rw echo-client-id? boolean
+/// +--rw match-client-id? boolean
+/// +--rw next-server? inet:ipv4-address
+/// +--rw server-hostname? string
+/// +--rw boot-file-name? string
/// +--rw user-context? string
/// +--rw sanity-checks
/// +--rw lease-checks? enumeration
/// @endcode
///
-/// YANG syntax for kea-dhcp4-server:config is:
+/// Example of kea-dhcp6 simple configuration:
+/// @code
+/// {
+/// "Dhcp4": {
+/// "interfaces-config":
+/// {
+/// "interfaces": [ "eth1" ]
+/// },
+/// "control-socket": {
+/// "socket-type": "unix",
+/// "socket-name": "/tmp/kea4-sock"
+/// },
+/// "subnet4":
+/// [
+/// {
+/// "subnet": "10.0.35.0/24",
+/// "pools":
+/// [
+/// {
+/// "pool": "10.0.35.64/27"
+/// }
+/// ]
+/// }
+/// ]
+/// }
+/// }
+///
+/// @endcode
+///
+/// The same configuration wrote into YANG datastore using @c setConfig()
+/// with the kea-dhcp4-model and exported to XML format:
+/// @code
+/// <config xmlns="urn:ietf:params:xml:ns:yang:kea-dhcp4-server">
+/// <subnet4>
+/// <subnet4>
+/// <id>1</id>
+/// <pools>
+/// <pool>
+/// <start-address>10.0.35.64</start-address>
+/// <end-address>10.0.35.95</end-address>
+/// <prefix>10.0.35.64/27</prefix>
+/// </pool>
+/// </pools>
+/// <subnet>10.0.35.0/24</subnet>
+/// </subnet4>
+/// </subnet4>
+/// <interfaces-config>
+/// <interfaces>eth1</interfaces>
+/// </interfaces-config>
+/// <control-socket>
+/// <socket-name>/tmp/kea4-sock</socket-name>
+/// <socket-type>unix</socket-type>
+/// </control-socket>
+/// </config>
+/// @endcode
+
+/// JSON syntax for kea-dhcp6 is:
/// @code
+/// "Dhcp6": {
+/// "preferred-lifetime": <preferred lifetime>,
+/// "valid-lifetime": <valid lifetime>,
+/// "renew-timer": <renew timer>,
+/// "rebind-timer": <rebind timer>,
+/// "decline-probation-period": <decline probation period>,
+/// "subnet6": [ <list of subnet6> ],
+/// <shared-networks>,
+/// "interfaces-config": {
+/// "interfaces" [ <list of interface names / specs> ],
+/// ...
+/// },
+/// <databases>,
+/// <mac-sources>,
+/// <relay-supplied-options>,
+/// <host-reservation-identifiers>,
+/// <client-classes>,
+/// <option-def>,
+/// <option-data>,
+/// <hooks-libraries>,
+/// <expired-leases-processing>,
+/// <server-id>,
+/// <dhcp4o6-port>,
+/// <control-socket>,
+/// <dhcp-ddns>,
+/// <user-context>,
+/// <comment>
+/// "sanity-checks": { <sanity checks> },
+/// "reservations": [ <list of host reservations> ]
+/// },
+/// "Logging": <logging>
+/// @endcode
+///
+/// YANG syntax for kea-dhcp6-server:config is:
+/// @code
+/// +--rw preferred-lifetime? uint32
/// +--rw valid-lifetime? uint32
/// +--rw renew-timer? uint32
/// +--rw rebind-timer? uint32
/// +--rw decline-probation-period? uint32
-/// +--rw subnet4 subnet4*
+/// +--rw subnet6 subnet6*
/// +--rw shared-networks shared-network*
/// +--rw interfaces-config
/// +--rw interfaces* string
-/// +--rw dhcp-socket-type? enumeration
-/// +--rw outbound-interface? enumeration
/// +--rw re-detect? boolean
/// +--rw user-context? string
/// +--rw lease-database! <database>
/// +--rw hosts-databases hosts-database*
+/// +--rw relay-supplied-options* string
+/// +--rw mac-sources* string
/// +--rw host-reservation-identifiers* enumeration
/// +--rw client-classes client-class*
/// +--rw option-def-list option-def*
/// +--rw library string
/// +--rw parameters? string
/// +--rw expired-leases-processing <expired-leases-processing>
+/// +--rw server-id <server-id>
/// +--rw dhcp4o6-port? uint16
/// +--rw control-socket! <control-socket>
/// +--rw dhcp-ddns <dhcp-ddns>
/// +--rw echo-client-id? boolean
-/// +--rw match-client-id? boolean
-/// +--rw next-server? inet:ipv4-address
-/// +--rw server-hostname? string
-/// +--rw boot-file-name? string
/// +--rw user-context? string
/// +--rw sanity-checks
/// +--rw lease-checks? enumeration
/// @endcode
///
-/// YANG syntax for kea-*:logging is:
-/// @code
-/// +--rw logging
-/// +--rw loggers
-/// @endcode
-///
/// Example of kea-dhcp6 simple configuration:
/// @code
/// {
/// </control-socket>
/// </config>
/// @endcode
+
+/// JSON syntax for the logging part of kea servers is:
+/// @code
+/// "Logging": {
+/// "loggers": [ <list of loggers> '
+/// }
+/// @endcode
///
+/// YANG syntax for kea-*:logging is:
+/// @code
+/// +--rw logging
+/// +--rw loggers
+/// @endcode
+///
+/// Example of Logging simple configuration:
+/// @code
+/// {
+/// "Logging":
+/// {
+/// "loggers":
+/// [
+/// {
+/// "name": "kea-dhcp6",
+/// "output_options":
+/// [
+/// {
+/// "output": "stderr"
+/// }
+/// ],
+/// "severity": "DEBUG",
+/// "debuglevel": 99
+/// }
+/// ]
+/// }
+/// }
+/// @endcode
+///
+/// The same configuration wrote into YANG datastore using @c setConfig()
+/// with a kea server model and exported to XML format:
+/// @code
+/// <logging xmlns="urn:ietf:params:xml:ns:yang:kea-dhcp4-server">
+/// <loggers>
+/// <logger>
+/// <name>kea-dhcp6</name>
+/// <output-options>
+/// <option>
+/// <output>stderr</output>
+/// </option>
+/// </output-options>
+/// <debuglevel>99</debuglevel>
+/// <severity>DEBUG</severity>
+/// </logger>
+/// </loggers>
+/// </logging>
+/// @endcode
+///
+/// Note that sysrepo uses one XML document per container in the model.
+
/// Inheritance graph between translators is:
///
/// +-----------------------------------------+
///
/// 'XXX (list)' stands for 'XXX list --- XXX' which is a common motif
/// (only database shows direct dependencies on both the list and the element)
-///
+
/// @brief A translator class for converting the config between YANG and JSON.
///
/// Currently supports the following models:
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorConfig(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorConfig(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorConfig();
/// @param name name of the parameter
void getParam(isc::data::ElementPtr& storage, const std::string& xpath,
const std::string& name);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_control_socket.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorControlSocket::TranslatorControlSocket(S_Session session,
const string& model)
- : TranslatorBasic(session), model_(model) {
+ : TranslatorBasic(session, model) {
}
TranslatorControlSocket::~TranslatorControlSocket() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorControlSocket(sysrepo::S_Session session,
+ const std::string& model);
+#else
TranslatorControlSocket(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorControlSocket();
/// @throw BadValue on control socket without socket type or name.
void setControlSocketKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_database.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorDatabase::TranslatorDatabase(S_Session session, const string& model)
- : TranslatorBasic(session), model_(model) {
+ : TranslatorBasic(session, model) {
}
TranslatorDatabase::~TranslatorDatabase() {
TranslatorDatabases::TranslatorDatabases(S_Session session,
const string& model)
- : TranslatorBasic(session),
- TranslatorDatabase(session, model),
- model_(model) {
+ : TranslatorBasic(session, model),
+ TranslatorDatabase(session, model) {
}
TranslatorDatabases::~TranslatorDatabases() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorDatabase(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorDatabase(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorDatabase();
void setDatabaseKea(const std::string& xpath,
isc::data::ConstElementPtr elem,
bool skip);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting a database access list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorDatabases(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorDatabases(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorDatabases();
/// @throw BadValue on database without tyoe,
void setDatabasesKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_host.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorHost::TranslatorHost(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
- TranslatorOptionDataList(session, model),
- model_(model) {
+ TranslatorOptionDataList(session, model) {
}
TranslatorHost::~TranslatorHost() {
}
TranslatorHosts::TranslatorHosts(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
- TranslatorHost(session, model),
- model_(model) {
+ TranslatorHost(session, model) {
}
TranslatorHosts::~TranslatorHosts() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorHost(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorHost(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorHost();
/// @param xpath The xpath of the host reservation.
/// @param elem The JSON element.
void setHostKea(const std::string& xpath, isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting host reservations list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorHosts(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorHosts(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorHosts();
/// @throw BadValue on host reservation without known identifier type.
void setHostsKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_logger.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorLogger::TranslatorLogger(S_Session session, const string& model)
- : TranslatorBasic(session), model_(model) {
+ : TranslatorBasic(session, model) {
}
TranslatorLogger::~TranslatorLogger() {
}
TranslatorLoggers::TranslatorLoggers(S_Session session, const string& model)
- : TranslatorBasic(session),
- TranslatorLogger(session, model),
- model_(model) {
+ : TranslatorBasic(session, model),
+ TranslatorLogger(session, model) {
}
TranslatorLoggers::~TranslatorLoggers() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorLogger(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorLogger(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorLogger();
/// @param elem The JSON element.
void setLoggerKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting a logger list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorLoggers(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorLoggers(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorLoggers();
/// @throw BadValue on a logger without name.
void setLoggersKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_option_data.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorOptionData::TranslatorOptionData(S_Session session,
const string& model)
- : TranslatorBasic(session), model_(model) {
+ : TranslatorBasic(session, model) {
}
TranslatorOptionData::~TranslatorOptionData() {
TranslatorOptionDataList::TranslatorOptionDataList(S_Session session,
const string& model)
- : TranslatorBasic(session), TranslatorOptionData(session, model),
- model_(model) {
+ : TranslatorBasic(session, model),
+ TranslatorOptionData(session, model) {
}
TranslatorOptionDataList::~TranslatorOptionDataList() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorOptionData(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorOptionData(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorOptionData();
/// @param elem The JSON element.
void setOptionDataKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting an option data list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorOptionDataList(sysrepo::S_Session session,
+ const std::string& model);
+#else
TranslatorOptionDataList(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorOptionDataList();
/// @throw BadValue on option data without code or space.
void setOptionDataListKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_option_def.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorOptionDef::TranslatorOptionDef(S_Session session,
const string& model)
- : TranslatorBasic(session), model_(model) {
+ : TranslatorBasic(session, model) {
}
TranslatorOptionDef::~TranslatorOptionDef() {
TranslatorOptionDefList::TranslatorOptionDefList(S_Session session,
const string& model)
- : TranslatorBasic(session), TranslatorOptionDef(session, model),
- model_(model) {
+ : TranslatorBasic(session, model),
+ TranslatorOptionDef(session, model) {
}
TranslatorOptionDefList::~TranslatorOptionDefList() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorOptionDef(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorOptionDef(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorOptionDef();
/// @throw BadValue on option definition without name or type.
void setOptionDefKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
// @brief A translator class for converting an option definition list
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorOptionDefList(sysrepo::S_Session session,
+ const std::string& model);
+#else
TranslatorOptionDefList(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorOptionDefList();
/// @throw BadValue on option definition without code or space.
void setOptionDefListKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/adaptor.h>
#include <yang/translator_pd_pool.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorPdPool::TranslatorPdPool(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
- TranslatorOptionDataList(session, model),
- model_(model) {
+ TranslatorOptionDataList(session, model) {
}
TranslatorPdPool::~TranslatorPdPool() {
}
TranslatorPdPools::TranslatorPdPools(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
- TranslatorPdPool(session, model),
- model_(model) {
+ TranslatorPdPool(session, model) {
}
TranslatorPdPools::~TranslatorPdPools() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorPdPool(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorPdPool(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorPdPool();
/// @param elem The JSON element.
void setPdPoolKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting a pd-pool list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorPdPools(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorPdPools(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorPdPools();
/// @throw BadValue on pd-pool without prefix or prefix length.
void setPdPoolsPrefix(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <asiolink/io_address.h>
#include <asiolink/addr_utilities.h>
#include <yang/adaptor.h>
using namespace isc::data;
using namespace isc::asiolink;
using namespace isc::dhcp;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorPool::TranslatorPool(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
- TranslatorOptionDataList(session, model),
- model_(model) {
+ TranslatorOptionDataList(session, model) {
}
TranslatorPool::~TranslatorPool() {
}
TranslatorPools::TranslatorPools(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
- TranslatorPool(session, model),
- model_(model) {
+ TranslatorPool(session, model) {
}
TranslatorPools::~TranslatorPools() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorPool(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorPool(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorPool();
/// @param elem The JSON element.
/// @throw BadValue on a pool without a well formed prefix.
void setPoolKea(const std::string& xpath, isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting pools between YANG and JSON.
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorPools(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorPools(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorPools();
/// @throw BadValue on a pool without a prefix.
void setPoolsByAddresses(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_shared_network.h>
#include <yang/adaptor.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorSharedNetwork::TranslatorSharedNetwork(S_Session session,
const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
TranslatorPool(session, model),
TranslatorHost(session, model),
TranslatorHosts(session, model),
TranslatorSubnet(session, model),
- TranslatorSubnets(session, model),
- model_(model) {
+ TranslatorSubnets(session, model) {
}
TranslatorSharedNetwork::~TranslatorSharedNetwork() {
TranslatorSharedNetworks::TranslatorSharedNetworks(S_Session session,
const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
TranslatorPool(session, model),
TranslatorHosts(session, model),
TranslatorSubnet(session, model),
TranslatorSubnets(session, model),
- TranslatorSharedNetwork(session, model),
- model_(model) {
+ TranslatorSharedNetwork(session, model) {
}
TranslatorSharedNetworks::~TranslatorSharedNetworks() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorSharedNetwork(sysrepo::S_Session session,
+ const std::string& model);
+#else
TranslatorSharedNetwork(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorSharedNetwork();
void setSharedNetworkKea(const std::string& xpath,
isc::data::ConstElementPtr elem,
const std::string& subsel);
-
- /// @brief The model name.
- std::string model_;
};
/// @brief A translator class for converting a shared network list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorSharedNetworks(sysrepo::S_Session session,
+ const std::string& model);
+#else
TranslatorSharedNetworks(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorSharedNetworks();
/// @throw BadValue on a shared network without name.
void setSharedNetworksKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model name.
- std::string model_;
};
}; // end of namespace isc::yang
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <yang/translator_subnet.h>
#include <yang/adaptor_pool.h>
#include <yang/yang_models.h>
using namespace std;
using namespace isc::data;
+#ifndef HAVE_OLD_SYSREPO
+using namespace sysrepo;
+#endif
namespace isc {
namespace yang {
TranslatorSubnet::TranslatorSubnet(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
TranslatorPool(session, model),
TranslatorPdPool(session, model),
TranslatorPdPools(session, model),
TranslatorHost(session, model),
- TranslatorHosts(session, model),
- model_(model) {
+ TranslatorHosts(session, model) {
}
TranslatorSubnet::~TranslatorSubnet() {
}
TranslatorSubnets::TranslatorSubnets(S_Session session, const string& model)
- : TranslatorBasic(session),
+ : TranslatorBasic(session, model),
TranslatorOptionData(session, model),
TranslatorOptionDataList(session, model),
TranslatorPool(session, model),
TranslatorPdPools(session, model),
TranslatorHost(session, model),
TranslatorHosts(session, model),
- TranslatorSubnet(session, model),
- model_(model) {
+ TranslatorSubnet(session, model) {
}
TranslatorSubnets::~TranslatorSubnets() {
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorSubnet(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorSubnet(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorSubnet();
/// @param elem The JSON element.
void setSubnetKea(const std::string& xpath,
isc::data::ConstElementPtr elem);
-
- /// @brief The model.
- std::string model_;
};
/// @brief A translator class for converting a subnet list between
///
/// @param session Sysrepo session.
/// @param model Model name.
+#ifndef HAVE_OLD_SYSREPO
+ TranslatorSubnets(sysrepo::S_Session session, const std::string& model);
+#else
TranslatorSubnets(S_Session session, const std::string& model);
+#endif
/// @brief Destructor.
virtual ~TranslatorSubnets();
void setSubnetsKea(const std::string& xpath,
isc::data::ConstElementPtr elem,
const std::string& subsel);
-
- /// @brief The model.
- std::string model_;
};
}; // end of namespace isc::yang