<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-netmod-immutable-flag-05" category="std" consensus="true" submissionType="IETF" updates="8040, 8526" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="immutable flag">YANG Metadata Annotation for Immutable Flag</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-immutable-flag-05"/>
    <author fullname="Qiufang Ma" role="editor">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>
          <city>Nanjing, Jiangsu</city>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>maqiufang1@huawei.com</email>
      </address>
    </author>
    <author fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>
          <city>Nanjing, Jiangsu</city>
          <code>210012</code>
          <country>China</country>
        </postal>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author fullname="Balazs Lengyel" role="editor">
      <organization>Ericsson</organization>
      <address>
        <email>balazs.lengyel@ericsson.com</email>
      </address>
    </author>
    <author fullname="Hongwei Li">
      <organization>HPE</organization>
      <address>
        <email>flycoolman@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="18"/>
    <area>Operations and Management</area>
    <workgroup>netmod</workgroup>
    <keyword>immutable flag</keyword>
    <keyword>system configuration</keyword>
    <abstract>
      <?line 75?>

<t>This document defines a way to formally document an existing behavior,
   implemented by servers in production, on the immutability of some
   system-provided nodes, using a YANG metadata annotation called
   "immutable" to flag which nodes are immutable.</t>
      <t>Clients may use "immutable" annotations provided by the server, to
   know beforehand why certain otherwise valid configuration requests
   will cause the server to return an error.</t>
      <t>The immutable flag is descriptive, documenting an existing behavior, not
   proscriptive, dictating server behaviors.</t>
      <t>This document updates RFC 8040 and RFC 8526.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Network Modeling Working Group mailing list (netmod@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/netmod/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/netmod-wg/immutable-flag"/>.</t>
    </note>
  </front>
  <middle>
    <?line 91?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a YANG metadata annotation <xref target="RFC7952"/> to formally document
   an existing model handling behavior that has been used by
   multiple standard organizations and vendors.  It is the aim to create
   one single standard solution for documenting non-modifiable system
   data declared as configuration, instead of the multiple existing
   vendor and organization specific solutions.</t>
      <t>YANG <xref target="RFC7950"/> is a data modeling language used to model both state
   and configuration data, based on the "config" statement.  However,
   there exists some system configuration data that cannot be modified
   by the client (it is immutable), but still needs to be declared as
   "config true" to:</t>
      <ul spacing="normal">
        <li>
          <t>allow configuration of data nodes under immutable lists or containers;</t>
        </li>
        <li>
          <t>place "when", "must" and "leafref" constraints between configuration
   and immutable nodes;</t>
        </li>
        <li>
          <t>ensure the existence of specific list entries that are provided and
   needed by the system, while additional list entries can be created,
   modified or deleted.</t>
        </li>
      </ul>
      <t>If the server always rejects a client's attempt to override some
   system-provided data because it internally thinks immutable, it should document
   it towards the clients in a machine-readable way rather than writing as
   plain text in the "description" statement.</t>
      <t>This document defines a way to formally document the existing behavior,
   implemented by servers in production, on the immutability of some
   system-provided nodes, using a YANG metadata annotation <xref target="RFC7952"/>
   called "immutable" to flag which nodes are immutable. This document does not
   regulate server behaviors. That said, it is expected that a server will return
   an error with an error-tag containing "invalid-value" when immutability
   is attempted to be violated.</t>
      <t>This document does not apply to the server not having any immutable
   system configuration.  While in some cases immutability may be
   needed, it also has disadvantages, therefore it <bcp14>SHOULD</bcp14> be avoided
   wherever possible.</t>
      <t>The following is a list of already implemented and potential use
   cases:</t>
      <ul spacing="normal">
        <li>
          <t>UC1  Modeling of server capabilities</t>
        </li>
        <li>
          <t>UC2  Hardware based auto-configuration</t>
        </li>
        <li>
          <t>UC3  Predefined administrator roles</t>
        </li>
        <li>
          <t>UC4  Declaring immutable system configuration from the perspective of a logical network element (LNE)</t>
        </li>
      </ul>
      <t><xref target="use-cases"/> describes the use cases in detail.</t>
      <section anchor="updates-to-rfc-8040">
        <name>Updates to RFC 8040</name>
        <t>This document updates Sections <xref target="RFC8040" section="4.8" sectionFormat="bare"/> and <xref target="RFC8040" section="9.1.1" sectionFormat="bare"/> of <xref target="RFC8040"/> to add an
  additional input parameter named "with-immutability", as specified in <xref target="RESTCONF-ext"/>.</t>
      </section>
      <section anchor="updates-to-rfc-8526">
        <name>Updates to RFC 8526</name>
        <t>This document updates <xref section="3.1.1" sectionFormat="of" target="RFC8526"/> to add an additional input parameter
   named "with-immutability" for the &lt;get-data&gt; operation, as specified in <xref target="NETCONF-ext"/>.</t>
      </section>
      <section anchor="editorial-note-to-be-removed-by-rfc-editor">
        <name>Editorial Note (To be removed by RFC Editor)</name>
        <t>Note to the RFC Editor: This section is to be removed prior to publication.</t>
        <t>This document contains placeholder values that need to be replaced with finalized
  values at the time of publication.  This note summarizes all of the
  substitutions that are needed.  No other RFC Editor instructions are specified
  elsewhere in this document.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this draft</t>
          </li>
          <li>
            <t>YYYY --&gt; the assigned RFC number for <xref target="I-D.ietf-netmod-system-config"/></t>
          </li>
          <li>
            <t>2025-05-15 --&gt; the actual date of the publication of this document</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The document uses the following definition in <xref target="RFC6241"/>:</t>
      <ul spacing="normal">
        <li>
          <t>configuration data</t>
        </li>
      </ul>
      <t>The document uses the following definition in <xref target="RFC7950"/>:</t>
      <ul spacing="normal">
        <li>
          <t>data node</t>
        </li>
        <li>
          <t>leaf</t>
        </li>
        <li>
          <t>leaf-list</t>
        </li>
        <li>
          <t>container</t>
        </li>
        <li>
          <t>list</t>
        </li>
        <li>
          <t>anydata</t>
        </li>
        <li>
          <t>anyxml</t>
        </li>
        <li>
          <t>interior node</t>
        </li>
        <li>
          <t>data tree</t>
        </li>
      </ul>
      <t>The document uses the following definition in <xref target="RFC8341"/>:</t>
      <ul spacing="normal">
        <li>
          <t>access operation</t>
        </li>
      </ul>
      <t>The document uses the following definition in <xref target="I-D.ietf-netmod-system-config"/>:</t>
      <ul spacing="normal">
        <li>
          <t>system configuration</t>
        </li>
      </ul>
      <t>This document defines the following term:</t>
      <dl>
        <dt>immutable flag:</dt>
        <dd>
          <t>A read-only state value the server provides to describe
   immutability of the configuration, which is conveyed via a YANG metadata annotation
   called "immutable" with a boolean value.</t>
        </dd>
      </dl>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>While immutable flag applies to all configuration nodes, its value "true"
   can only be used for system configuration.</t>
      <t>The immutable flag is only visible in read-only datastores (i.e., &lt;system&gt;
   <xref target="I-D.ietf-netmod-system-config"/>, &lt;intended&gt;, and &lt;operational&gt;)
   when a "with-immutability" parameter is carried (<xref target="with-immutability"/>),
   however this only serves as descriptive information about the
   instance node itself, but has no effect on the handling of the read-only
   datastore. If the immutable flag is requested to be returned for an invalid
   datastore, then the server <bcp14>MUST</bcp14> return an &lt;rpc-error&gt; element with an &lt;error-tag&gt;
   value of "invalid-value".</t>
      <t>An instance has the same immutability if it appears in different datastores,
   the immutability of configuration data is also protocol and
   user independent. The immutability of any configuration data, and the value
   of any immutable configured data node, <bcp14>MUST</bcp14> only change via software
   upgrade, hardware resources change, or license change.</t>
    </section>
    <section anchor="immutable-metadata-annotation">
      <name>"Immutable" Metadata Annotation</name>
      <section anchor="immutable-def">
        <name>Definition</name>
        <t>The immutable flag which is defined as the metadata annotation takes a boolean
   value, and it is returned as requested by the client using a "with-immutability"
   parameter (<xref target="with-immutability"/>). If the "immutable" metadata annotation for
   a configuration node is not specified, the default "immutable" value is the
   same as the value of its parent node in the data tree (<xref target="interior"/>).
   The immutable metadata annotation value for a top-level instance
   node is "false" if not specified.</t>
        <t>A node that is annotated as immutable cannot be changed via configuring
   a different value in read-write configuration datastores (e.g., &lt;running&gt;),
   nor is there any way to delete the node from the combined configuration in the intended datastore (as described in <xref section="4" sectionFormat="of" target="I-D.ietf-netmod-system-config"/>). The node <bcp14>MAY</bcp14> be explicitly configured by a client in &lt;running&gt; with the
   same value and that configuration in &lt;running&gt; may subsequently be removed,
   but neither of these edits will change the configuration in &lt;intended&gt; (if implemented) on the device.</t>
        <t>Note that "immutable" metadata annotations are used to annotate data node
   instances.  A list may have multiple instances in the data tree,
   servers may annotate some of the instances as immutable, while others as
   mutable.</t>
        <t>Servers <bcp14>MUST</bcp14> ignore any immutable annotations sent from the client.</t>
      </section>
      <section anchor="with-immutability">
        <name>"with-immutability" Parameter</name>
        <t>This section specifies the NETCONF <xref target="RFC6241"/> <xref target="RFC8526"/> and RESTCONF <xref target="RFC8040"/>
   protocol extensions to support the "with-immutability" parameter.
   The "immutable" metadata annotations are not returned in a response unless
   explicitly requested by the client using this parameter.</t>
        <section anchor="NETCONF-ext">
          <name>NETCONF Extensions to Support "with-immutability"</name>
          <t>This doument updates <xref target="RFC8526"/> to augment the &lt;get-data&gt;
   operation with an additional parameter named "with-immutability".
   If present, this parameter requests that the server includes
   the "immutable" metadata annotations in its response.</t>
          <t><xref target="tree"/> provides the tree structure <xref target="RFC8340"/> of augmentations to NETCONF
   operations, as defined in the "ietf-immutable-annotation" module (<xref target="module"/>).</t>
          <figure anchor="tree">
            <name>Augmentations to NETCONF Operations</name>
            <artwork><![CDATA[
module: ietf-immutable-annotation
  augment /ncds:get-data/ncds:input:
    +---w with-immutability?   empty
]]></artwork>
          </figure>
        </section>
        <section anchor="RESTCONF-ext">
          <name>RESTCONF Extensions to Support "with-immutability"</name>
          <t>This document extends Sections <xref target="RFC8040" section="4.8" sectionFormat="bare"/> and <xref target="RFC8040" section="9.1.1" sectionFormat="bare"/> of <xref target="RFC8040"/> to add a query
   parameter named "with-immutability" to the GET operation. If present, this parameter
   requests that the server includes the "immutable" metadata annotations in its
   response. This parameter is only allowed with no values carried. If it has
   any unexpected value, then a "404 Bad Request" status-line is returned.</t>
          <t>To enable a RESTCONF client to discover if the "with-immutability" query parameter
   is supported by the server, the following capability URI is defined:</t>
          <artwork><![CDATA[
    urn:ietf:params:restconf:capability:with-immutability:1.0
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="use-of-immutable-flag-for-different-statements">
      <name>Use of Immutable Flag for Different Statements</name>
      <t>This section defines what the immutable flag means to the client for
   each instance of YANG data node statement.</t>
      <section anchor="the-leaf-statement">
        <name>The "leaf" Statement</name>
        <t>When a leaf node instance is immutable, it cannot be configured with a
   different value in read-write configuration datastores (e.g., &lt;running&gt;) or
   removed from &lt;intended&gt; (if implemented). Though it can be created/deleted
   in read-write configuration datastores (see Sections <xref format="counter" target="immutable-def"/> and <xref format="counter" target="system-interact"/>).</t>
      </section>
      <section anchor="the-leaf-list-statement">
        <name>The "leaf-list" Statement</name>
        <t>When a leaf-list entry is immutable, it cannot be configured with a
  different value in read-write configuration datastore (e.g., &lt;running&gt;) or
  removed from &lt;intended&gt; (if implemented). Though it can be created/deleted
  in read-write configuration datastores (see Sections <xref format="counter" target="immutable-def"/> and <xref format="counter" target="system-interact"/>).</t>
        <t>The immutable annotation attached to the individual leaf-list entry
   provides immutability with respect to the entry itself. As per the restrictions in <xref target="RFC7952"/>,
   annotations cannot be attached to an entire leaf-list instance and only
   to individual leaf-list entries, which implies a leaf-list as a whole
   can only inherit immutability from a parent node (e.g., container).</t>
        <t>If a leaf-list as a whole is immutable, any leaf-list entries cannot be added,
   modified, or reordered (if it is ordered-by user).</t>
        <t>Refer to <xref target="imm-leaf-list"/> for an example of immutability of leaf-lists.</t>
      </section>
      <section anchor="the-container-statement">
        <name>The "container" Statement</name>
        <t>When a container node instance is immutable, it cannot be removed from &lt;intended&gt; (if implemented).
   Though it can be created/deleted in read-write configuration datastores
   (see Sections <xref format="counter" target="immutable-def"/> and <xref format="counter" target="system-interact"/>).</t>
        <t>Descendant nodes of the container recursively inherit the immutability of the container, unless
   the immutability is overridden by an "immutable" annotation on a descendant node.</t>
        <t>By default, as with all interior nodes, immutability is recursively
   applied to descendants (<xref target="interior"/>).</t>
      </section>
      <section anchor="the-list-statement">
        <name>The "list" Statement</name>
        <t>When a list entry is immutable, it cannot be removed from &lt;intended&gt; (if implemented).
  Though it can be created/deleted in read-write configuration datastores
  (see Sections <xref format="counter" target="immutable-def"/> and <xref format="counter" target="system-interact"/>).</t>
        <t>Descendant nodes of the list entry recursively inherit the immutability of the list entry, unless
  the immutability is overridden by an "immutable" annotation on a descendant node.</t>
        <t>By default, as with all interior nodes, immutability is recursively
   applied to descendants (<xref target="interior"/>).</t>
        <t>The immutable annotation attached to the individual list entry provides
   immutability with respect to the entry itself. As per the restrictions in <xref target="RFC7952"/>,
   annotations cannot be attached to an entire list instance and only
   to individual list entries, which implies a list as a whole
   can only inherit immutability from a parent node (e.g., container).</t>
        <t>If a list as a whole is immutable, any list entries cannot be added, removed, or reordered (if it is ordered-by user).
   Each list entry inherits the immutability of the list by default, unless the immutability is
   overridden by an "immutable" annotation on a list entry.</t>
        <t>Refer to <xref target="imm-list"/> for an example of immutability of lists.</t>
      </section>
      <section anchor="the-anydata-statement">
        <name>The "anydata" Statement</name>
        <t>When an "anydata" node instance is immutable, it cannot be removed from &lt;intended&gt; (if implemented).
   Though it can be created/deleted in read-write configuration datastores
   (see Sections <xref format="counter" target="immutable-def"/> and <xref format="counter" target="system-interact"/>).</t>
        <t>Additionally, as with all interior nodes, immutability is recursively applied to
   descendants (<xref target="interior"/>).</t>
      </section>
      <section anchor="the-anyxml-statement">
        <name>The "anyxml" Statement</name>
        <t>When an "anyxml" node instance is immutable, it cannot be removed from &lt;intended&gt; (if implemented).
   Though it can be created/deleted in read-write configuration datastores
   (see Sections <xref format="counter" target="immutable-def"/> and <xref format="counter" target="system-interact"/>).</t>
        <t>Additionally, as with all interior nodes, immutability is recursively applied to
   descendants (<xref target="interior"/>).</t>
      </section>
    </section>
    <section anchor="interior">
      <name>Immutability of Interior Nodes</name>
      <t>Immutability is a conceptual operational state value that is
   recursively applied to descendants, which may reset the immutability
   state as needed, thereby affecting their descendants.  There is no limit
   to the number of times the immutability state may change in a data tree.</t>
      <t>If the "immutable" metadata annotation for returned child node is omitted,
   it has the same immutability as its parent node. The immutability of top
   hierarchy of returned nodes is false by default. Servers may suppress the
   annotation if it is inherited from its parent node or uses the default value
   as the top-level node, but are not precluded from returning the annotation
   on every single element.</t>
      <t>Refer to <xref target="inherit"/> for an example of how immutability is recursively
   inherited or explicitly reset by descendants.</t>
    </section>
    <section anchor="system-interact">
      <name>System Configuration Datastore Interactions</name>
      <t>Immutable configuration can only be created, updated and deleted by the server,
   and it is present in &lt;system&gt;, if implemented. That said, the existence of
   immutable configuration is independent of whether &lt;system&gt; is implemented or
   not. Not all system configuration data is immutable. Immutable configuration
   does not appear in &lt;running&gt; unless it is explicitly configured.</t>
      <t>As specified in <xref target="immutable-def"/>, a client <bcp14>MAY</bcp14> create/delete immutable nodes
   with same values as defined by server in read-write configuration datastore (e.g.,
   &lt;candidate&gt;, &lt;running&gt;), which merely mean making immutable nodes
   visible/invisible in the datastore.</t>
    </section>
    <section anchor="nacm-interactions">
      <name>NACM Interactions</name>
      <t>The server rejects an operation request due to immutability when it
   tries to perform the operation on the request data.  It happens after
   any access control processing, if the Network Configuration Access
   Control Model (NACM) <xref target="RFC8341"/> is implemented on a server.  For
   example, if an operation requests to override an immutable
   configuration data, but the server checks the user is not authorized
   to perform the requested access operation on the request data, the
   request is rejected with an "access-denied" error.</t>
    </section>
    <section anchor="module">
      <name>YANG Module</name>
      <t>This module imports definitions from <xref target="RFC6241"/> and <xref target="RFC8526"/>.</t>
      <sourcecode markers="true" name="ietf-immutable-annotation@2025-05-15.yang"><![CDATA[
module ietf-immutable-annotation {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-immutable-annotation";
  prefix imma;

  import ietf-yang-metadata {
    prefix md;
  }
  import ietf-netconf-nmda {
    prefix ncds;
    reference
      "RFC 8526: NETCONF Extensions to Support the Network
       Management Datastore Architecture";
  }
  import ietf-system-datastore {
    prefix sysds;
    reference
      "RFC YYYY: System-defined Configuration";
  }
  import ietf-datastores {
    prefix ds;
    reference
      "RFC 8342: Network Management Datastore Architecture
                 (NMDA)";
  }

  organization
    "IETF Network Modeling (NETMOD) Working Group";

  contact
    "WG Web: <https://datatracker.ietf.org/wg/netmod/>
     WG List: <mailto:netmod@ietf.org>
     Author: Qiufang Ma
             <mailto:maqiufang1@huawei.com>
     Author: Qin Wu
             <mailto:bill.wu@huawei.com>
     Author: Balazs Lengyel
             <mailto:balazs.lengyel@ericsson.com>
     Author: Hongwei Li
             <mailto:flycoolman@gmail.com>";

  description
    "This module defines a metadata annotation called 'immutable'
     to allow the server to formally document existing behavior on
     the mutability of some system configuration. Clients may use
     'immutable' metadata annotation provided by the server to know
     beforehand why certain otherwise valid configuration requests
     will cause the server to return an error.

     Copyright (c) 2025 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 Revised
     BSD License set forth in Section 4.c of the IETF Trust's
     Legal Provisions Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC HHHH
     (https://www.rfc-editor.org/info/rfcHHHH); see the RFC
     itself for full legal notices.

     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.";

  revision 2025-05-15 {
    description
      "Initial revision.";
    // RFC Ed.: replace XXXX and remove this comment
    reference
      "RFC XXXX: YANG Metadata Annotation for Immutable Flag";
  }

  md:annotation immutable {
    type boolean;
    description
      "The 'immutable' metadata annotation indicates the 
       immutability of an instantiated data node. It takes as a
       value 'true' or 'false'. An immutable node cannot be changed 
       via configuring a different value in read-write configuration 
       datastores (e.g., <running>), though it can be created/deleted
       in read-write configuration datastores. If not specified for 
       a given configuration data node, the immutability is the
       same as the value of its parent node in the data tree. The
       default value of 'immutable' annotation for a top-level 
       instance node is false if not specified.";
  }

  augment "/ncds:get-data/ncds:input" {
    description
      "Allows the server to include 'immutable' metadata
       annotations in its response to get-data operation.";
    leaf with-immutability {
      when "derived-from-or-self(../ncds:datastore,'sysds:system') "
      +"or derived-from-or-self(../ncds:datastore,'ds:intended') "
      +"or derived-from-or-self(../ncds:datastore,'ds:operational')";
      type empty;
      description
        "If this parameter is present, the server returns the
         'immutable' annotation for configuration that it
         internally thinks immutable.";
    }
  }
}
]]></sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is modeled after the template described in <xref section="3.7" sectionFormat="of" target="I-D.ietf-netmod-rfc8407bis"/>.</t>
      <t>The "ietf-immutable-annotation" YANG module defines a data model that is
   designed to be accessed via YANG-based management protocols, such
   as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. These protocols have to
   use a secure transport layer (e.g., SSH <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and
   QUIC <xref target="RFC9000"/>) and have to use mutual authentication.</t>
      <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/>
   provides the means to restrict access for particular NETCONF or
   RESTCONF users to a preconfigured subset of all available NETCONF or
   RESTCONF protocol operations and content.</t>
      <t>The YANG module specified in this document defines a metadata annotation,
   it also extends the RPC operations of the NETCONF protocol in <xref target="RFC6241"/>
   and <xref target="RFC8526"/>.</t>
      <t>The immutable metadata annotation exposes the immutability of configuration data,
   which may provide hints for attackers to find vulnerabilities in the network,
   e.g., to leverage the immutability of some configuration to better craft an attack.
   Since immutable annotations are attached to the instances of configuration data nodes,
   it is only accessible to clients that have the permissions to read the annotated configuration nodes.</t>
      <t>The security considerations for the NETCONF protocol operations (see
   <xref section="9" sectionFormat="of" target="RFC6241"/> and <xref section="6" sectionFormat="of" target="RFC8526"/>) also apply to
   the operations extended in this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="the-ietf-xml-registry">
        <name>The "IETF XML" Registry</name>
        <t>This document registers one XML namespace URN in the 'IETF XML registry',
   following the format defined in <xref target="RFC3688"/>.</t>
        <artwork><![CDATA[
        URI: urn:ietf:params:xml:ns:yang:ietf-immutable-annotation
        Registrant Contact: The IESG.
        XML: N/A, the requested URIs are XML namespaces.
]]></artwork>
      </section>
      <section anchor="the-yang-module-names-registry">
        <name>The "YANG Module Names" Registry</name>
        <t>This document registers one module name in the 'YANG Module Names'
registry, defined in <xref target="RFC6020"/>.</t>
        <artwork><![CDATA[
        name: ietf-immutable-annotation
        prefix: imma
        namespace: urn:ietf:params:xml:ns:yang:ietf-immutable-annotation
        RFC: XXXX
]]></artwork>
      </section>
      <section anchor="restconf-capability-urn-registry">
        <name>RESTCONF Capability URN Registry</name>
        <t>This document defines the following capability identifier URNs in the
"RESTCONF Capability URNs" registry defined in <xref target="RFC8040"/>:</t>
        <artwork><![CDATA[
Index
Capability Identifier
---------------------

:with-immutability
urn:ietf:params:restconf:capability:with-immutability:1.0
]]></artwork>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7952">
          <front>
            <title>Defining and Using Metadata with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7952"/>
          <seriesInfo name="DOI" value="10.17487/RFC7952"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC8526">
          <front>
            <title>NETCONF Extensions to Support the Network Management Datastore Architecture</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
            <author fullname="P. Shafer" initials="P." surname="Shafer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="R. Wilton" initials="R." surname="Wilton"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document extends the Network Configuration Protocol (NETCONF) defined in RFC 6241 in order to support the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document updates RFCs 6241 and 7950. The update to RFC 6241 adds new and operations and augments existing,, and operations. The update to RFC 7950 requires the usage of the YANG library (described in RFC 8525) by NETCONF servers implementing the NMDA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8526"/>
          <seriesInfo name="DOI" value="10.17487/RFC8526"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-system-config">
          <front>
            <title>System-defined Configuration</title>
            <author fullname="Qiufang Ma" initials="Q." surname="Ma">
              <organization>Huawei</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Chong Feng" initials="C." surname="Feng">
         </author>
            <date day="12" month="February" year="2025"/>
            <abstract>
              <t>   The Network Management Datastore Architecture (NMDA) in RFC 8342
   defines several configuration datastores holding configuration.  The
   contents of these configuration datastores are controlled by clients.
   This document introduces the concept of system configuration
   datastore holding configuration controlled by the system on which a
   server is running.  The system configuration can be referenced (e.g.,
   leafref) by configuration explicitly created by clients.

   This document updates RFC 8342.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-system-config-12"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="TR-531" target="https://wiki.opennetworking.org/download/attachments/376340494/Draft_TR-531_UML-YANG_Mapping_Gdls_v1.1.03.docx?version=5&amp;modificationDate=1675432243513&amp;api=v2">
          <front>
            <title>UML to YANG Mapping Guidelines</title>
            <author>
              <organization>ONF</organization>
            </author>
            <date year="2023" month="February"/>
          </front>
        </reference>
        <reference anchor="TS28.623" target="https://www.3gpp.org/ftp/Specs/archive/28_series/28.623/28623-i02.zip">
          <front>
            <title>Telecommunication management; Generic Network Resource Model (NRM) Integration Reference Point (IRP); Solution Set (SS) definitions</title>
            <author>
              <organization>3GPP</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="TS32.156" target="https://www.3gpp.org/ftp/Specs/archive/32_series/32.156/32156-h10.zip">
          <front>
            <title>Telecommunication management; Fixed Mobile Convergence (FMC) Model repertoire</title>
            <author>
              <organization>3GPP</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc8407bis">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <date day="5" month="June" year="2025"/>
            <abstract>
              <t>   This document provides guidelines for authors and reviewers of
   specifications containing YANG data models, including IANA-maintained
   modules.  Recommendations and procedures are defined, which are
   intended to increase interoperability and usability of Network
   Configuration Protocol (NETCONF) and RESTCONF Protocol
   implementations that utilize YANG modules.  This document obsoletes
   RFC 8407.

   Also, this document updates RFC 8126 by providing additional
   guidelines for writing the IANA considerations for RFCs that specify
   IANA-maintained modules.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc8407bis-28"/>
        </reference>
        <reference anchor="RFC4252">
          <front>
            <title>The Secure Shell (SSH) Authentication Protocol</title>
            <author fullname="T. Ylonen" initials="T." surname="Ylonen"/>
            <author fullname="C. Lonvick" initials="C." role="editor" surname="Lonvick"/>
            <date month="January" year="2006"/>
            <abstract>
              <t>The Secure Shell Protocol (SSH) is a protocol for secure remote login and other secure network services over an insecure network. This document describes the SSH authentication protocol framework and public key, password, and host-based client authentication methods. Additional authentication methods are described in separate documents. The SSH authentication protocol runs on top of the SSH transport layer protocol and provides a single authenticated tunnel for the SSH connection protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4252"/>
          <seriesInfo name="DOI" value="10.17487/RFC4252"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC8343">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t>
              <t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t>
              <t>This document obsoletes RFC 7223.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8343"/>
          <seriesInfo name="DOI" value="10.17487/RFC8343"/>
        </reference>
        <reference anchor="RFC8530">
          <front>
            <title>YANG Model for Logical Network Elements</title>
            <author fullname="L. Berger" initials="L." surname="Berger"/>
            <author fullname="C. Hopps" initials="C." surname="Hopps"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="D. Bogdanovic" initials="D." surname="Bogdanovic"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2019"/>
            <abstract>
              <t>This document defines a logical network element (LNE) YANG module that is compliant with the Network Management Datastore Architecture (NMDA). This module can be used to manage the logical resource partitioning that may be present on a network device. Examples of common industry terms for logical resource partitioning are logical systems or logical routers. The YANG model in this document conforms with NMDA as defined in RFC 8342.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8530"/>
          <seriesInfo name="DOI" value="10.17487/RFC8530"/>
        </reference>
      </references>
    </references>
    <?line 621?>

<section anchor="use-cases">
      <name>Detailed Use Cases</name>
      <section anchor="uc1-modeling-of-server-capabilities">
        <name>UC1 - Modeling of server capabilities</name>
        <t>System capabilities might be represented as immutable configuration.
   Configurable data nodes might need constraints specified as
   "when", "must" or "path" statements to ensure that configuration is set
   according to the system's capabilities. For example,</t>
        <ul spacing="normal">
          <li>
            <t>A timer can support the values 1,5,8 seconds. This is defined in the
   leaf-list 'supported-timer-values'.</t>
          </li>
          <li>
            <t>When the configurable 'interface-timer' leaf is set, it should be ensured
   that one of the supported values is used.  The natural solution would be to
   make the 'interface-timer' a leaf-ref pointing at the 'supported-timer-values'.</t>
          </li>
        </ul>
        <t>However, this is not possible as 'supported-timer-values' must be
   read-only thus config=false while 'interface-timer' must be writable
   thus config=true.  According to the rules of YANG it is not allowed
   to put a constraint between config true and false data nodes.</t>
        <t>The solution is that the supported-timer-values data node in the YANG
   Model shall be defined as "config true" and shall also be marked with
   the "immutable" annotation making it unchangeable. After this the
   'interface-timer' shall be defined as a leaf-ref pointing at the
   'supported-timer-values'.</t>
      </section>
      <section anchor="uc2-hardware-based-auto-configuration-interface-example">
        <name>UC2 - Hardware based auto-configuration - Interface Example</name>
        <t><xref target="RFC8343"/> defines a YANG data model for the management of network
   interfaces.  When a system-controlled interface is physically present,
   the system creates an interface entry with valid name and type
   values in &lt;system&gt; (if exists, see <xref target="I-D.ietf-netmod-system-config"/>).</t>
        <t>The system-generated type value is dependent on and represents the hardware
   present, and as a consequence cannot be changed by the client.  If a
   client tries to set the type of an interface to a value that can
   never be used by the system, the request will be rejected by the
   server.  The data is modeled as "config true" and thus should be annotated
   as immutable.</t>
        <t>Seemingly an alternative would be to model the list and these leaves
   as "config false", but that does not work because:</t>
        <ul spacing="normal">
          <li>
            <t>The list cannot be marked as "config false", because it needs to contain
  configurable child nodes, e.g., ip-address or enabled;</t>
          </li>
          <li>
            <t>The key leaf (name) cannot be marked as "config false" as the list
  itself is config true;</t>
          </li>
          <li>
            <t>The type cannot be marked "config false", because we <bcp14>MAY</bcp14> need to
  reference the type to make different configuration nodes
  conditionally available.</t>
          </li>
        </ul>
      </section>
      <section anchor="uc3-predefined-administrator-roles">
        <name>UC3 - Predefined Administrator Roles</name>
        <t>User and group management is fundamental for setting up access
   control rules (see <xref section="2.5" sectionFormat="of" target="RFC8341"/>).</t>
        <t>A device may provide a predefined user account (e.g., a system
   administrator that is always available and has full privileges) for
   initial system set up and management of other users/groups.  It is
   possible that a new user/group can be defined granted particular privileges,
   but the predefined administrator account and its granted access are immutable.</t>
      </section>
      <section anchor="uc4-declaring-immutable-system-configuration-from-the-perspective-of-a-logical-network-element-lne">
        <name>UC4 - Declaring immutable system configuration from the perspective of a logical network element (LNE)</name>
        <t>A logical network element (LNE), as described in <xref target="RFC8530"/>, is an independently managed virtual
   network device made up of resources allocated to it from its host or
   parent network device.  The host device may allocate some
   resources to an LNE, which from an LNE's perspective is provided by
   the system and may not be modifiable.</t>
        <t>For example, a host may allocate an interface to an LNE with a valid
   MTU value as its management interface, so that the allocated
   interface should then be accessible as the LNE-specific instance of
   the interface model.  The assigned MTU value is system-created and
   immutable from the context of the LNE.</t>
      </section>
    </section>
    <section anchor="examples-of-servers-immutable-behavior">
      <name>Examples of Server's Immutable Behavior</name>
      <t>This section provides some examples to illustrate the server's behavior with
  immutable flag. These examples are not intended as recommendations for
  real-world deployments. The following fictional module is used throughout this section:</t>
      <artwork><![CDATA[
module example-user-group {
  yang-version 1.1;
  namespace "urn:example:user-group";
  prefix "ex-urp";

  import iana-crypt-hash {
    prefix ianach;
  }

  container user-groups {
    list user-group {
      key "name";
      leaf name {
        type string;
      }
      leaf description {
        type string;
      }      
      leaf access-right {
        type enumeration {
          enum admin;
          enum power;          
          enum normal;
          enum guest;
        }
      }
      list user {
        key "user-name";
        leaf user-name {
          type string;
        }
        leaf password {
          type ianach:crypt-hash;
        }
        leaf full-name {
          type string;
        }
      }
      leaf-list tag {
        type string;
        ordered-by user;
      }
    }
  }
}
]]></artwork>
      <t><xref target="example"/> shows an example of "user-groups" configuration in &lt;system&gt; a
server might return. XML snippets are used only for illustration purposes.</t>
      <figure anchor="example">
        <name>An Example of System-defined 'user-groups' Configuration</name>
        <artwork><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

<user-groups xmlns="urn:example:user-group"
  xmlns:imma="urn:ietf:params:xml:ns:yang:ietf-immutable-annotation"
  imma:immutable="false">
  <user-group imma:immutable="true">
    <name>administrator</name>
    <description imma:immutable="false">administrator group</\
                                                         description>
    <access-right>admin</access-right>
    <user>
      <user-name>ex-username-1</user-name>
      <password>$5$salt$42x6N3voGLL5rV7qU5qK6L8jF9eD2aB3c</password>
    </user>
    <user imma:immutable="false">
      <user-name>ex-username-2</user-name>
      <password>$1$/h1234q$abcdef1234567890abcdef</password>
    </user>    
    <tag>system</tag>
    <tag>non-editable</tag>
  </user-group>
  <user-group imma:immutable="false">
    <name>power-users</name>
    <description>Power user group</description>
    <access-right>power</access-right>
    <user>
      <user-name>ex-username-3</user-name>
      <password>$1$/h4567q$abcdef2345678901abcdef</password>
    </user>
    <tag>system</tag>
    <tag>editable</tag>
  </user-group>
</user-groups>
]]></artwork>
      </figure>
      <section anchor="inherit">
        <name>The Inheritance of Immutability</name>
        <t>In the example in <xref target="example"/>, there are two "user-group" list entries inside "user-groups"
container node. The "immutable" metadata attribute for "user-groups" container
instance is "false", which is also its default value as the top-level element,
and thus can be omitted. The "administrator" list entry is immutable
with the immutability of its descendant nodes "description" and "user" list entry of "ex-username-2" being explicitly toggled.
Other descendant nodes inside "administrator" list entry inherit the immutability of the list entry thus are also immutable.</t>
        <t>The "immutable" metadata attribute
for "power-users" list entry is "false", which is also the same
value as its parent node (i.e., the "user-groups" container), and thus can be omitted.
Other descendant nodes inside "power-users" user-group inherit the immutability of the list entry thus are also mutable.</t>
      </section>
      <section anchor="imm-list">
        <name>Immutability of the list</name>
        <t>In the example in <xref target="example"/>, the "user-group" list as a whole inherits immutability from the
 container "user-groups", which is mutable. One of the list entry named "administrator" is immutable,
 and the other entry named "power-user" is mutable. The client is able to copy the entire "user-groups"
 container in &lt;running&gt;, add new user-group entries, modify the values of descendant nodes of "power-users" list entry,
 but the values of descendant nodes of "administrator" list entry cannot be overridden with different values expect
 for the "description" and "ex-username-2" user list entry nodes, which is explicitly reset to be mutable.
 The client may also subsequently delete any copied "user-group" entries or the entire
 "user-groups" container, which will not prevent the deleted data being present in &lt;intended&gt; (if implemented) assuming it
 is still contained in &lt;system&gt;.</t>
        <t>The "user" list inside the "administrator" user-group list entry as a whole inherits immutability from the
 list entry, which is immutable. Thus the client cannot add new user entries inside "administrator" user-group.
 As one of the user entry named "ex-username-1" is immutable through inheritance,
 and the other "ex-username-2" user entry is explicitly set to be mutable. The client cannot
 modify the "password" parameter, or add a "full-name" value for user "ex-username-1".
 but is allowed to update (e.g., modify the "password" value, or add a "full-name" value)
 the list entry for user "ex-username-2". The client may copy or subsequently delete any of the two list entries in &lt;running&gt;,
 but there is no way to delete the nodes from &lt;intended&gt; (if implemented).</t>
      </section>
      <section anchor="imm-leaf-list">
        <name>Immutability of the leaf-list</name>
        <t>In the example in <xref target="example"/>, the user-ordered "tag" leaf-list node inside the "administrator" user-group entry as a whole inherits immutability from the list entry, which is immutable. Thus the client cannot add, modify, or reorder
entries, the client may copy or subsequently delete any of the two leaf-list entries in &lt;running&gt;,
but there is no way to delete the nodes from &lt;intended&gt; if those entries still appear in &lt;system&gt;.</t>
        <t>The leaf-list node instance inside the "power-users" user-group entry as a whole inherits
immutability from the list entry, which is mutable. Thus the client can add or reorder
entries, the client may copy or subsequently delete any of the two leaf-list entries in &lt;running&gt;,
but there is no way to delete the nodes from &lt;intended&gt; if those entries still appear in &lt;system&gt;.</t>
      </section>
    </section>
    <section anchor="implementations">
      <name>Existing Implementations</name>
      <t>Note to the RFC Editor: Please remove this section prior to publication.</t>
      <t>There are already a number of full or partial implementations of
   immutability:</t>
      <ul spacing="normal">
        <li>
          <t>3GPP TS 32.156 <xref target="TS32.156"/> and 28.623 <xref target="TS28.623"/>: Requirements
   and a partial solution</t>
        </li>
        <li>
          <t>ITU-T using ONF TR-531 <xref target="TR-531"/> concept on information model level but
   no YANG representation.</t>
        </li>
        <li>
          <t>Ericsson: requirements and solution</t>
        </li>
        <li>
          <t>YumaPro: requirements and solution</t>
        </li>
        <li>
          <t>Nokia: partial requirements and solution</t>
        </li>
        <li>
          <t>Huawei: partial requirements and solution</t>
        </li>
        <li>
          <t>Cisco using the concept at least in some YANG modules</t>
        </li>
        <li>
          <t>Junos OS provides a hidden and immutable configuration group
   called junos-defaults</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Kent Watsen, Jan Lindblad, Jason Sterne, Robert Wilton, Andy Bierman,
   Juergen Schoenwaelder, Reshad Rahman, Anthony Somerset, Lou Berger, Joe Clarke,
   and Scott Mansfield for reviewing, and providing important inputs to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
TyjKlnPxR1iyVf1WDbd1WXZgrV6LVjz4dY2TutdMhdZaozJOkHpFeZyfcPvq
8IMa7qp1BCgWx20IREnqDZ/sbqwuj1NeeRyPW1Ujx0wz04w6bgkjC+E6O0WB
iApgENtBgy4L6M1NKfscjEx1Jpdk4hbZN8jgwKZOBhqtUh1HjdRD+gVa+T0P
R66LxL7Fp8EWfyYX//mq8yFO3cVtMUIx5rpneNsIqWathPhNAV6FW/YwQMNI
agNyZWU2e+3WsBBpDXnRGvmG1gZUKeKZhS2J53YSPwH9gdnnZpZm3o2xXtF4
Le6RREMAuZcHl9LLvBR8umIzSaCm0WW9h4pbQtIW5RObiBjztxQfkEfPAsP1
muFoFz1qzkW36qACg1f6ZHx+jcKDCo1NOmZ3ZT5mdzWBHqCyktfks6QOtmK2
hfTqfFecwuzCSWQU0qeksEYGnOxQ6tC6ISh8IKj7aDf206yP7H19MOAzVSVY
a2RfjFg1WttQ0oZN/VOXOtDcbw6CEocf/sIUjl99bUOOKkyEsl3Nk+YdIJuc
1JORK0dfz70c1pw8lFW3YZhPB+zjL6qRt/TMMdd1Q2h2I3Y5yLCzlzZT8Qxd
rXh5YLHloI9Jfm4zJZG1ao0aM7l22I8McKHeLiuKR3YGT1rLR0APeLq79eQi
yslroEyu/Op8Z1f/qNT6qhOWG/yAzXBdP4td9oVIrQ7O0+c2I1V7QZvuD/Iy
L8cz8ZS31hDAjbRWDRAHyXU1FZdocHAIVVL0Ro2p01MWJDkZwnGwxBouZrhn
Zz9J7vjuNsXY1fnbM5NNvrv7mNycrH2ChnMonzzb2oLFN0joyoK0GsAQQ0Wo
TqOO7bSbIFDf5m6729eGs3gp8DYf1SQNGFcWIjDqitG4jEFFMRBlb5yFI7rK
uG6Xog9VYiOV9EgfGjjMJdh+JBNXzGOrNlK/TS+q407fJu1hk+daLlY0dWpR
CkzgiIorTW45qbQfDt0NiB5vtmz3WKvENxGCmkNN3acITn9dpHlbKK21IpQ2
XgX/5CLVjDqYkUzDFI4vciUAAaCcMk7gQKZ1jxGf0heHJmQkhgEoC7NAiqna
mlXVORoSaYEcZYxtOqgohDZAUeOziKLQrfVEqFk3M2JMJVN7NSzHdeXqbDo8
ISt52rFzoNjj0pnwUhubVRpHC6IHoRsRaxTb0UIDxyMvfHbs8VnbwaaBHg4G
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
ymCCIsecMeATkN66KAvpZO7lnf8/aeJxREqKAAA=

-->

</rfc>
