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: