ietf-yang-structure-ext

This module contains conceptual YANG specifications for defining abstract data structures. The key words 'MUST', 'MUST NOT', 'R...

  • Version: 2020-06-17

    ietf-yang-structure-ext@2020-06-17


    
      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; }
                 }
              }
          ";
        }
      }  // module ietf-yang-structure-ext
    

© 2023 YumaWorks, Inc. All rights reserved.