16using namespace sysrepo;
42 if (
model_ == KEA_DHCP4_SERVER) {
44 }
else if (
model_ == KEA_DHCP6_SERVER) {
47 }
catch (
const sysrepo_exception& ex) {
49 "sysrepo error getting shared network at '" << xpath
50 <<
"': " << ex.
what());
53 "getSharedNetwork not implemented for the model: " <<
model_);
58 const std::string& subsel) {
65 result->set(
"name", name);
67 if (subnets && (subnets->size() > 0)) {
68 result->set(subsel, subnets);
70 if (subsel ==
"subnet6") {
73 result->set(
"preferred-lifetime", preferred);
77 result->set(
"min-preferred-lifetime", min_pref);
81 result->set(
"max-preferred-lifetime", max_pref);
86 result->set(
"valid-lifetime", valid);
90 result->set(
"min-valid-lifetime", min_valid);
94 result->set(
"max-valid-lifetime", max_valid);
98 result->set(
"renew-timer", renew);
102 result->set(
"rebind-timer", rebind);
106 result->set(
"calculate-tee-times", calculate);
110 result->set(
"t1-percent", t1_percent);
114 result->set(
"t2-percent", t2_percent);
117 if (options && (options->size() > 0)) {
118 result->set(
"option-data", options);
122 result->set(
"interface", interface);
124 if (subsel ==
"subnet6") {
127 result->set(
"interface-id", interface_id);
131 result->set(
"rapid-commit", rapid_commit);
136 result->set(
"client-class", guard);
139 if (required && (required->size() > 0)) {
140 result->set(
"require-client-classes", required);
144 result->set(
"reservation-mode", mode);
147 if (relay && (relay->size() > 0)) {
149 relay_map->set(
"ip-addresses", relay);
150 result->set(
"relay", relay_map);
152 if (subsel ==
"subnet4") {
155 result->set(
"match-client-id", match);
159 result->set(
"authoritative", auth);
163 result->set(
"next-server", next);
167 result->set(
"server-hostname", hostname);
171 result->set(
"boot-file-name", boot);
176 result->set(
"user-context", Element::fromJSON(context->stringValue()));
201 if (
model_ == KEA_DHCP4_SERVER) {
203 }
else if (
model_ == KEA_DHCP6_SERVER) {
207 "setSharedNetwork not implemented for the model: "
210 }
catch (
const sysrepo_exception& ex) {
212 "sysrepo error setting shared network '" << elem->str()
213 <<
"' at '" << xpath <<
"': " << ex.
what());
220 const std::string& subsel) {
223 if (subnets && (subnets->size() > 0)) {
226 if (subsel ==
"subnet6") {
229 setItem(xpath +
"/preferred-lifetime", preferred, SR_UINT32_T);
233 setItem(xpath +
"/min-preferred-lifetime", min_pref, SR_UINT32_T);
237 setItem(xpath +
"/max-preferred-lifetime", max_pref, SR_UINT32_T);
242 setItem(xpath +
"/valid-lifetime", valid, SR_UINT32_T);
246 setItem(xpath +
"/min-valid-lifetime", min_valid, SR_UINT32_T);
250 setItem(xpath +
"/max-valid-lifetime", max_valid, SR_UINT32_T);
254 setItem(xpath +
"/renew-timer", renew, SR_UINT32_T);
258 setItem(xpath +
"/rebind-timer", rebind, SR_UINT32_T);
262 setItem(xpath +
"/calculate-tee-times", calculate, SR_BOOL_T);
266 setItem(xpath +
"/t1-percent", t1_percent, SR_DECIMAL64_T);
270 setItem(xpath +
"/t2-percent", t2_percent, SR_DECIMAL64_T);
273 if (options && (options->size() > 0)) {
278 setItem(xpath +
"/interface", interface, SR_STRING_T);
280 if (subsel ==
"subnet6") {
283 setItem(xpath +
"/interface-id", interface_id, SR_STRING_T);
287 setItem(xpath +
"/rapid-commit", rapid_commit, SR_BOOL_T);
292 setItem(xpath +
"/client-class", guard, SR_STRING_T);
295 if (required && (required->size() > 0)) {
297 setItem(xpath +
"/require-client-classes", rclass, SR_STRING_T);
302 setItem(xpath +
"/reservation-mode", mode, SR_ENUM_T);
309 setItem(xpath +
"/relay/ip-addresses", address, SR_STRING_T);
310 }
else if (addresses && (addresses->size() > 0)) {
312 setItem(xpath +
"/relay/ip-addresses", addr, SR_STRING_T);
316 if (subsel ==
"subnet4") {
319 setItem(xpath +
"/match-client-id", match, SR_BOOL_T);
323 setItem(xpath +
"/authoritative", auth, SR_BOOL_T);
327 setItem(xpath +
"/next-server", next, SR_STRING_T);
331 setItem(xpath +
"/server-hostname", hostname, SR_STRING_T);
335 setItem(xpath +
"/boot-file-name", boot, SR_STRING_T);
341 setItem(xpath +
"/user-context", repr, SR_STRING_T);
346 checkAndSetLeaf(elem, xpath,
"ddns-override-client-update", SR_BOOL_T);
352 checkAndSetLeaf(elem, xpath,
"ddns-use-conflict-resolution", SR_BOOL_T);
353 checkAndSetLeaf(elem, xpath,
"hostname-char-replacement", SR_STRING_T);
382 return getList<TranslatorSharedNetwork>(xpath +
"/shared-network", *
this,
390 if ((
model_ == KEA_DHCP4_SERVER) ||
391 (
model_ == KEA_DHCP6_SERVER)) {
395 "setSharedNetworks not implemented for the model: "
398 }
catch (
const sysrepo_exception& ex) {
400 "sysrepo error setting shared networks '" << elem->str()
401 <<
"' at '" << xpath <<
"': " << ex.
what());
408 for (
size_t i = 0; i < elem->size(); ++i) {
410 if (!network->contains(
"name")) {
414 string name = network->get(
"name")->stringValue();
416 key<< xpath <<
"/shared-network[name='" << name <<
"']";
A generic exception that is thrown if a parameter given to a method is considered invalid in that con...
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
A generic exception that is thrown when a function is not implemented.
A generic exception that is thrown when an unexpected error condition occurs.
static isc::data::ConstElementPtr getContext(isc::data::ConstElementPtr parent)
Get user context.
Between YANG and JSON translator class for basic values.
isc::data::ElementPtr getItem(const std::string &xpath)
Get and translate basic value from YANG to JSON.
std::string model_
The model.
void checkAndGetLeaf(isc::data::ElementPtr &storage, const std::string &xpath, const std::string &name)
Retrieves an item and stores it in the specified storage.
void setItem(const std::string &xpath, isc::data::ConstElementPtr elem, sr_type_t type)
Translate and set basic value from JSON to YANG.
isc::data::ElementPtr getItems(const std::string &xpath)
Get and translate a list of basic values from YANG to JSON.
void checkAndSetLeaf(isc::data::ConstElementPtr const &from, std::string const &xpath, std::string const &name, sr_type_t const type)
Get an element from given ElementPtr node and set it in sysrepo at given xpath.
Translation between YANG and JSON for a single host reservation.
A translator class for converting host reservations list between YANG and JSON.
A translator class for converting an option data list between YANG and JSON.
isc::data::ConstElementPtr getOptionDataList(const std::string &xpath)
Get and translate option data list from YANG to JSON.
void setOptionDataList(const std::string &xpath, isc::data::ConstElementPtr elem)
Translate and set option data list from JSON to YANG.
Option data translation between YANG and JSON.
Prefix delegation pool translation between YANG and JSON.
A translator class for converting a pd-pool list between YANG and JSON.
A translator class for converting a pool between YANG and JSON.
A translator class for converting pools between YANG and JSON.
Shared network translation between YANG and JSON.
isc::data::ElementPtr getSharedNetworkKea(const std::string &xpath, const std::string &subsel)
getSharedNetwork for kea-dhcp4-server and kea-dhcp6-server models
virtual ~TranslatorSharedNetwork()
Destructor.
TranslatorSharedNetwork(sysrepo::S_Session session, const std::string &model)
Constructor.
void setSharedNetworkKea(const std::string &xpath, isc::data::ConstElementPtr elem, const std::string &subsel)
setSharedNetwork for kea-dhcp4-server and kea-dhcp6-server models
void setSharedNetwork(const std::string &xpath, isc::data::ConstElementPtr elem)
Translate and set shared network from JSON to YANG.
isc::data::ElementPtr getSharedNetwork(const std::string &xpath)
Get and translate a shared network from YANG to JSON.
isc::data::ElementPtr getSharedNetworks(const std::string &xpath)
Get and translate shared networks from YANG to JSON.
void setSharedNetworksKea(const std::string &xpath, isc::data::ConstElementPtr elem)
setSharedNetworks for kea-dhcp4-server and kea-dhcp6-server
TranslatorSharedNetworks(sysrepo::S_Session session, const std::string &model)
Constructor.
virtual ~TranslatorSharedNetworks()
Destructor.
void setSharedNetworks(const std::string &xpath, isc::data::ConstElementPtr elem)
Translate and set shared networks from JSON to YANG.
Subnet (aka network range) translation between YANG and JSON.
A translator class for converting a subnet list between YANG and JSON.
void setSubnets(const std::string &xpath, isc::data::ConstElementPtr elem)
Translate and set subnets from JSON to YANG.
isc::data::ElementPtr getSubnets(const std::string &xpath)
Get and translate subnets from YANG to JSON.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
boost::shared_ptr< const Element > ConstElementPtr
boost::shared_ptr< Element > ElementPtr
Defines the logger used by the top-level component of kea-lfc.