summaryrefslogtreecommitdiff
path: root/lib/yang_wrappers.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/yang_wrappers.c')
-rw-r--r--lib/yang_wrappers.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/yang_wrappers.c b/lib/yang_wrappers.c
index da9d37669b..6273dff3ce 100644
--- a/lib/yang_wrappers.c
+++ b/lib/yang_wrappers.c
@@ -171,6 +171,7 @@ int yang_str2enum(const char *xpath, const char *value)
{
const struct lys_node *snode;
const struct lys_node_leaf *sleaf;
+ const struct lys_type *type;
const struct lys_type_info_enums *enums;
snode = ly_ctx_get_node(ly_native_ctx, NULL, xpath, 0);
@@ -182,7 +183,12 @@ int yang_str2enum(const char *xpath, const char *value)
}
sleaf = (const struct lys_node_leaf *)snode;
- enums = &sleaf->type.info.enums;
+ type = &sleaf->type;
+ enums = &type->info.enums;
+ while (enums->count == 0 && type->der) {
+ type = &type->der->type;
+ enums = &type->info.enums;
+ }
for (unsigned int i = 0; i < enums->count; i++) {
const struct lys_type_enum *enm = &enums->enm[i];
@@ -840,7 +846,7 @@ void yang_str2ipv4p(const char *value, union prefixptr prefix)
}
struct yang_data *yang_data_new_ipv4p(const char *xpath,
- const union prefixptr prefix)
+ union prefixconstptr prefix)
{
char value_str[PREFIX2STR_BUFFER];
@@ -950,7 +956,7 @@ void yang_str2ipv6p(const char *value, union prefixptr prefix)
}
struct yang_data *yang_data_new_ipv6p(const char *xpath,
- const union prefixptr prefix)
+ union prefixconstptr prefix)
{
char value_str[PREFIX2STR_BUFFER];