parser yang CHANGE support extension in identity statement and its substatements
diff --git a/src/parser_yang.c b/src/parser_yang.c
index 44c4bd4..013a65c 100644
--- a/src/parser_yang.c
+++ b/src/parser_yang.c
@@ -2129,6 +2129,16 @@
size = &((struct lys_feature *)node)->ext_size;
parent_type = LYEXT_PAR_FEATURE;
break;
+ case IDENTITY_KEYWORD:
+ ext = &((struct lys_ident *)node)->ext;
+ size = &((struct lys_ident *)node)->ext_size;
+ parent_type = LYEXT_PAR_IDENT;
+ break;
+ case IF_FEATURE_KEYWORD:
+ ext = &((struct lys_iffeature *)node)->ext;
+ size = &((struct lys_iffeature *)node)->ext_size;
+ parent_type = LYEXT_PAR_IFFEATURE;
+ break;
default:
LOGINT;
return NULL;
@@ -2193,6 +2203,10 @@
case STATUS_KEYWORD:
instance->insubstmt = LYEXT_SUBSTMT_STATUS;
break;
+ case BASE_KEYWORD:
+ instance->insubstmt = LYEXT_SUBSTMT_BASE;
+ instance->insubstmt_index = ((struct lys_ident *)actual)->base_size;
+ break;
default:
LOGINT;
return NULL;
@@ -3138,6 +3152,10 @@
*ptr_size = size;
return EXIT_FAILURE;
}
+ if (yang_check_ext_instance(module, &iffeature[i].ext, iffeature[i].ext_size, &iffeature[i], unres)) {
+ *ptr_size = size;
+ return EXIT_FAILURE;
+ }
(*ptr_size)++;
}
@@ -3299,8 +3317,12 @@
if (yang_check_iffeatures(module, NULL, &module->ident[i], IDENTITY_KEYWORD, unres)) {
goto error;
}
+ if (yang_check_ext_instance(module, &module->ident[i].ext, module->ident[i].ext_size, &module->ident[i], unres)) {
+ goto error;
+ }
}
+
return EXIT_SUCCESS;
error: