structure FEATURE support for ietf-yang-structure-ext

Only for the structure itself, no augment yet.
diff --git a/models/ietf-yang-structure-ext@2020-06-17.yang b/models/ietf-yang-structure-ext@2020-06-17.yang
new file mode 100644
index 0000000..e3452a4
--- /dev/null
+++ b/models/ietf-yang-structure-ext@2020-06-17.yang
@@ -0,0 +1,206 @@
+module ietf-yang-structure-ext {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-structure-ext";
+  prefix sx;
+
+  organization
+    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
+     WG List:  <mailto:netmod@ietf.org>
+
+     Author:   Andy Bierman
+               <mailto:andy@yumaworks.com>
+
+     Author:   Martin Bjorklund
+               <mailto:mbj+ietf@4668.se>
+
+     Author:   Kent Watsen
+               <mailto:kent+ietf@watsen.net>";
+  description
+    "This module contains conceptual YANG specifications for defining
+     abstract data structures.
+
+     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+     'MAY', and 'OPTIONAL' in this document are to be interpreted as
+     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+     they appear in all capitals, as shown here.
+
+     Copyright (c) 2020 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject to
+     the license terms contained in, the Simplified BSD License set
+     forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 8791
+     (https://www.rfc-editor.org/info/rfc8791); see the RFC itself
+     for full legal notices.";
+
+  revision 2020-06-17 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 8791: YANG Data Structure Extensions.";
+  }
+
+  extension structure {
+    argument name {
+      yin-element true;
+    }
+    description
+      "This extension is used to specify a YANG data structure that
+       represents conceptual data defined in YANG.  It is intended to
+       describe hierarchical data independent of protocol context or
+       specific message encoding format.  Data definition statements
+       within a 'structure' extension statement specify the generic
+       syntax for the specific YANG data structure, whose name is the
+       argument of the 'structure' extension statement.
+
+       Note that this extension does not define a media type.  A
+       specification using this extension MUST specify the message
+       encoding rules, including the content media type, if
+       applicable.
+
+       The mandatory 'name' parameter value identifies the YANG data
+       structure that is being defined.
+
+       This extension is only valid as a top-level statement, i.e.,
+       given as a substatement to 'module' or 'submodule'.
+
+       The substatements of this extension MUST follow the ABNF
+       rules below, where the rules are defined in RFC 7950:
+
+           *must-stmt
+           [status-stmt]
+           [description-stmt]
+           [reference-stmt]
+           *(typedef-stmt / grouping-stmt)
+           *data-def-stmt
+
+       A YANG data structure defined with this extension statement is
+       encoded in the same way as an 'anydata' node.  This means
+       that the name of the structure is encoded as a 'container',
+       with the instantiated child statements encoded as child nodes
+       to this node.
+
+       The module name and namespace value for the YANG module using
+       the extension statement are assigned to each of the data
+       definition statements resulting from the YANG data structure.
+
+       The XPath document element is the extension statement itself,
+       such that the child nodes of the document element are
+       represented by the data-def-stmt substatements within this
+       extension.  This conceptual document is the context for the
+       following YANG statements:
+
+           - must-stmt
+           - when-stmt
+           - path-stmt
+           - min-elements-stmt
+           - max-elements-stmt
+           - mandatory-stmt
+           - unique-stmt
+           - ordered-by
+           - instance-identifier data type
+
+       The following data-def-stmt substatements are constrained
+       when used within a 'structure' extension statement.
+
+          - The list-stmt is not required to have a key-stmt defined.
+          - The config-stmt is ignored if present.
+       ";
+  }
+
+  extension augment-structure {
+    argument path {
+      yin-element true;
+    }
+    description
+      "This extension is used to specify an augmentation to a YANG
+       data structure defined with the 'structure' statement.  It is
+       intended to describe hierarchical data independent of protocol
+       context or specific message encoding format.
+
+       This statement has almost the same structure as the
+       'augment-stmt'.  Data definition statements within this
+       statement specify the semantics and generic syntax for the
+       additional data to be added to the specific YANG data
+       structure, identified by the 'path' argument.
+
+       The mandatory 'path' parameter value identifies the YANG
+       conceptual data node that is being augmented and is
+       represented as an absolute-schema-nodeid string, where the
+       first node in the absolute-schema-nodeid string identifies the
+       YANG data structure to augment, and the rest of the nodes in
+       the string identifies the node within the YANG structure to
+       augment.
+
+       This extension is only valid as a top-level statement, i.e.,
+       given as a substatement to 'module' or 'submodule'.
+
+       The substatements of this extension MUST follow the ABNF
+       rules below, where the rules are defined in RFC 7950:
+
+           [status-stmt]
+           [description-stmt]
+           [reference-stmt]
+           1*(data-def-stmt / case-stmt)
+
+       The module name and namespace value for the YANG module using
+       the extension statement are assigned to instance document data
+       conforming to the data definition statements within this
+       extension.
+
+       The XPath document element is the augmented extension
+       statement itself, such that the child nodes of the document
+       element are represented by the data-def-stmt substatements
+       within the augmented 'structure' statement.
+
+       The context node of the 'augment-structure' statement is
+       derived in the same way as the 'augment' statement, as defined
+       in Section 6.4.1 of [RFC7950]. This conceptual node is
+       considered the context node for the following YANG statements:
+
+           - must-stmt
+           - when-stmt
+           - path-stmt
+           - min-elements-stmt
+           - max-elements-stmt
+           - mandatory-stmt
+           - unique-stmt
+           - ordered-by
+           - instance-identifier data type
+
+       The following data-def-stmt substatements are constrained
+       when used within an 'augment-structure' extension statement.
+
+           - The list-stmt is not required to have a key-stmt defined.
+           - The config-stmt is ignored if present.
+
+       Example:
+
+           module foo {
+               import ietf-yang-structure-ext { prefix sx; }
+
+               sx:structure foo-data {
+               container foo-con { }
+               }
+           }
+
+           module bar {
+               import ietf-yang-structure-ext { prefix sx; }
+               import foo { prefix foo; }
+
+               sx:augment-structure /foo:foo-data/foo:foo-con {
+               leaf add-leaf1 { type int32; }
+               leaf add-leaf2 { type string; }
+               }
+           }
+       ";
+  }
+}