module yang { namespace "urn:ietf:params:xml:ns:yang:1"; prefix yang; yang-version 1.1; import ietf-yang-metadata { prefix md; revision-date 2016-08-05; } organization "libyang"; contact "Web: Author: Radek Krejci Author: Michal Vasko "; description "This is a dummy module with no data formally supplying the definitions of various metadata defined in RFC 6020 and RFC 7950. There are additional metadata used in libyang diff data format."; revision 2022-06-16 { description "Added typedef for key metadata type."; } revision 2021-04-07 { description "Added metadata for key-less list and state leaf-list diff."; } revision 2020-06-17 { description "Added metadata for diff."; } revision 2017-02-20 { description "Added metadata for NETCONF's edit-config manipulation with ordered lists and leaf-lists."; reference "RFC 7950: The YANG 1.1 Data Modeling Language"; } revision 2016-02-11 { description "Initial revision"; reference "RFC 6020: YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)"; } typedef instance-identifier-keys { type string; reference "RFC7950 section 7.8.6."; description "The key predicates of the full instance-identifier built-in type."; } md:annotation insert { type enumeration { enum first; enum last; enum before; enum after; } reference "RFC7950 section 7.8.6. and section 7.7.9."; description "In user ordered leaf-list, this attribute can be used to control where in the leaf-list the entry is inserted. It can be used during the NETCONF \"create\" operations to insert a new list or leaf-list entry, or during \"merge\" or \"replace\" operations to insert a new list or leaf-list entry or move an existing one. If the value is \"before\" or \"after\", the \"value\"/\"key\" attribute MUST also be used to specify an existing entry in the list or leaf-list. If no \"insert\" attribute is present in the \"create\" operation, it defaults to \"last\"."; } md:annotation value { type string; reference "RFC7950 section 7.7.9."; description "In user ordered leaf-list, this attribute must be used if the attribute insert is used and specifies before/after which existing instance the new instance should be inserted."; } md:annotation key { type union { type empty; type instance-identifier-keys; } reference "RFC7950 section 7.8.6."; description "In user ordered list, this attribute must be used if the attribute insert is used and specifies before/after which existing instance the new instance should be inserted."; } md:annotation position { type union { type empty; type uint32 { range 1..max; } } description "In key-less list or state leaf-list, this attribute must be used if the attribute insert is used and specifies the instance position before/after which the new instance should be inserted."; } md:annotation operation { type enumeration { enum none { description "The node existed in both data trees but there is a nested node with another operation. In case of a leaf, only its default flag changed."; } enum create { description "The node did not exist in the first tree and was created in the second tree."; } enum delete { description "The node existed in the first tree and was deleted in the second tree."; } enum replace { description "The node value was changed or the node was moved for leaves/anyxml/anydata and user-ordered lists/leaf-lists, respectively."; } } reference "RFC6241 section 7.2."; description "Operation of a node in a diff. If a node has no operation, it is inherited from its nearest parent with an operation. Top-level nodes must always have an operation. User-ordered lists/leaf-lists with operation 'create' and 'replace' MUST also have the 'key', 'value', or 'position' metadata defined. It specifies the preceding instance. In case the value of this metadata is empty, the node was created/moved on the first position. All the operations keep the meaning of edit-config operations with similar names but some are further restricted, meaning they are used for only a subset of use-cases."; } md:annotation orig-default { type boolean; description "Information about the previous default state of the node."; } md:annotation orig-value { type string; description "Previous value of a changed leaf. Alternatively, its meaning is the same as the \"value\" attribute but identifies the original leaf-list instance rather than the new one."; } md:annotation orig-key { type union { type empty; type instance-identifier-keys; } description "Its meaning is the same as the \"key\" attribute but identifies the original list instance rather than the new one."; } md:annotation orig-position { type union { type empty; type uint32 { range 1..max; } } description "Its meaning is the same as the \"position\" attribute but identifies the original list instance rather than the new one."; } }