diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-02-27.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-10-10.yang similarity index 57% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-02-27.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-10-10.yang index 1ff33b0fb..2b2cf34f1 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-02-27.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-ls@2023-10-10.yang @@ -66,7 +66,7 @@ module ietf-bgp-ls { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2023-02-27 { + revision 2023-10-10 { description "Initial Version"; reference @@ -98,6 +98,73 @@ module ietf-bgp-ls { "I-D.ietf-lsvr-bgp-spf: BGP Link-State SPF Routing."; } + identity attribute-type { + description + "Base identity for BGP-LS Attribute type."; + } + + identity multi-topology-identifier { + base attribute-type; + description + "Multi Topology Identifier TLV."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + identity node-flag-bits { + base attribute-type; + description + "The Node Flag Bits TLV."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + identity opaque-node-attribute { + base attribute-type; + description + "The Opaque Node Attribute TLV."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + identity node-name { + base attribute-type; + description + "The Node Name TLV."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + identity isis-area-identifier { + base attribute-type; + description + "IS-IS Area Identifier."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + identity ipv4-route-id-of-local-node { + base attribute-type; + description + "IPv4 Router-ID of Local Node."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + identity ipv6-router-id-of-local-node { + base attribute-type; + description + "IPv6 Router-ID of Local Node."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } // Typedefs typedef spf-algorithm-type { type enumeration { @@ -166,12 +233,13 @@ module ietf-bgp-ls { container link-state { when "derived-from-or-self(../../bgp:afi-safi/bgp:name, " + "'bgp-ls')" { - description - "Include this container for BGP Linkstate specific + description + "Include this container for BGP Linkstate specific configuration"; } presence - "This container is for BGP Linkstate specific congfiguration."; + "This container is for BGP Linkstate specific + congfiguration."; description "Information related to Link-State configuration and @@ -216,6 +284,301 @@ module ietf-bgp-ls { "RFC 7752: Link-State Info Distribution Using BGP."; } } + + container tlvs { + config false; + description + "Container for BGP-LS attribute TLVs."; + + list tlv { + description + "List of all TLVs."; + + container multi-topology-identifier { + description + "Multi Topo Identifier TLV."; + + leaf type { + type identityref { + base attribute-type; + } + description + "Type should be of value 263."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + leaf length { + type uint16; + units octets; + description + "The length of the TLV in octets."; + reference + "RFC 8654: Extended Message Support for BGP."; + } + + leaf-list value { + type uint16 { + range 0..2048; + } + description + "Leaf list of Multi Topology IDs."; + } + } + + container node-flag-bits { + description + "Node Flag Bits TLV."; + + leaf type { + type identityref { + base attribute-type; + } + description + "The type should be 1024"; + } + + leaf length { + type uint8 { + range 0..1; + } + description + "The length of this TLV in octets."; + } + + leaf value { + type bits { + bit overload { + position 0; + description + "Overload bit."; + reference + "ISO10589: International Organization for + Standardization, Intermediate System to + Intermediate System intra-domain + routeing information exchange protocol for use + in conjunction with the protocol for providing + the connectionless-mode network service + (ISO 8473), ISO/IEC 10589, November 2002."; + } + + bit attached { + position 1; + description + "Attached bit."; + reference + "ISO10589: International Organization for + Standardization, Intermediate System to + Intermediate System intra-domain + routeing information exchange protocol for use + in conjunction with the protocol for providing + the connectionless-mode network service + (ISO 8473), ISO/IEC 10589, November 2002."; + } + + bit external { + position 2; + description + "External bit."; + reference + "RFC 2328: OSPF Version 2."; + } + } + description + "The value of this TLV."; + } + } + + container opaque-node-attribute { + description + "Opaque Node Attribute TLV."; + + leaf type { + type identityref { + base attribute-type; + } + description + "The type should be 1025"; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + leaf length { + type uint16 { + range 0..max; + } + units octets; + description + "The length of the TLV in octets."; + reference + "RFC 8654: Extended Message Support for BGP."; + } + + leaf-list value { + type uint16 { + range 0..2048; + } + description + "Leaf list of Opaque Node Attribute TLV."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + } + + container node-name { + description + "Node Name TLV."; + + leaf type { + type identityref { + base attribute-type; + } + description + "The type should be 1026"; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + leaf length { + type uint16 { + range 0..max; + } + units octets; + description + "The length of the TLV in octets."; + reference + "RFC 8654: Extended Message Support for BGP."; + } + + leaf-list value { + type uint16 { + range 0..2048; + } + description + "Leaf list of Node Name TLV."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + } + + container isis-area-identifier { + description + "IS-IS Area Identifier TLV."; + + leaf type { + type identityref { + base attribute-type; + } + description + "The type should be 1027"; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + leaf length { + type uint16 { + range 0..max; + } + units octets; + description + "The length of the TLV in octets."; + reference + "RFC 8654: Extended Message Support for BGP."; + } + + leaf-list value { + type uint16 { + range 0..2048; + } + description + "Leaf list of IS-IS Area Identifier TLV."; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + } + + container ipv4-router-id { + description + "IPv4 Router-ID of Local Node TLV."; + + leaf type { + type identityref { + base attribute-type; + } + description + "The type should be 1028"; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + leaf length { + type uint8 { + range 0..4; + } + description + "4-octet router-id of the router originating the LSP."; + reference + "RFC 5305: IS-IS Extenstions for Traffic Engineering."; + } + + leaf value { + type uint16 { + range 0..max; + } + description + "4-octet router-id of the router originating the LSP."; + reference + "RFC 5305: IS-IS Extenstions for Traffic Engineering."; + } + } + + container ipv6-router-id { + description + "IPv6 Router-ID of Local Node TLV."; + + leaf type { + type identityref { + base attribute-type; + } + description + "The type should be 1029"; + reference + "I-D.ietf-idr-rfc7752-bis: Link State Info Distribution + Using BGP."; + } + + leaf length { + type uint8 { + range 0..16; + } + description + "16-octet router-id of the router originating the LSP."; + reference + "RFC 6119: IPv6 Traffic Engineering in IS-IS."; + } + + leaf value { + type uint16 { + range 0..max; + } + description + "16-octet router-id of the router originating the LSP."; + reference + "RFC 6119: IS-IS Traffic Engineering in IS-IS."; + } + } + + uses unknown-tlvs; + } + } } grouping bgp-mp-ls-spf { @@ -236,6 +599,44 @@ module ietf-bgp-ls { } } + grouping tlv { + description + "Generic grouping for all TLVs."; + leaf type { + type identityref { + base attribute-type; + } + description + "TLV type."; + } + + leaf length { + type uint16; + description + "TLV length in octets."; + } + + leaf value { + type yang:hex-string; + description + "TLV value in the form of a hex string."; + } + } + grouping unknown-tlvs { + description + "Unknown TLVs grouping. Used for unknown TLVs or + unknown sub-TLVs."; + container unknown-tlvs { + description + "All unknown TLVs."; + list unknown-tlv { + description + "Unknown TLV."; + uses tlv; + } + } + } + augment "/rt:routing/rt:control-plane-protocols" + "/rt:control-plane-protocol/bgp:bgp/bgp:global" + "/bgp:afi-safis/bgp:afi-safi" { @@ -464,6 +865,31 @@ module ietf-bgp-ls { reference "RFC 7752: Link-State Info Distribution Using BGP."; } + + action clear { + if-feature "bt:clear-statistics"; + description + "Clear statistics action command. + + Execution of this command should result in all the + counters to be cleared and set to 0."; + + input { + leaf clear-at { + type yang:date-and-time; + description + "Time when the clear action needs to be executed."; + } + } + + output { + leaf clear-finished-at { + type yang:date-and-time; + description + "Time when the clear action command completed."; + } + } + } } augment "/rt:routing/rt:control-plane-protocols" + @@ -574,6 +1000,31 @@ module ietf-bgp-ls { reference "I-D.ietf-lsvr-bgp-spf: BGP Link-State SPF Routing."; } + + action clear { + if-feature "bt:clear-statistics"; + description + "Clear statistics action command. + + Execution of this command should result in all the + counters to be cleared and set to 0."; + + input { + leaf clear-at { + type yang:date-and-time; + description + "Time when the clear action needs to be executed."; + } + } + + output { + leaf clear-finished-at { + type yang:date-and-time; + description + "Time when the clear action command completed."; + } + } + } } augment "/rt:routing/rt:control-plane-protocols" + diff --git a/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-02-27.yang b/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-10-10.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-02-27.yang rename to experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-10-10.yang index f2ea0d9f9..a17e6ca7f 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-02-27.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-bgp-lsdb@2023-10-10.yang @@ -48,12 +48,13 @@ module ietf-bgp-lsdb { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2023-02-27 { + revision 2023-10-10 { description "Initial Version"; reference "RFC XXXX, BGP Model for Link State Distribution."; } + // Typedefs typedef lsdb-proto-id-type { type enumeration { @@ -350,7 +351,6 @@ module ietf-bgp-lsdb { type uint16; description "Id of the topology object belongs to."; } - leaf pdu-id { type uint32; description @@ -447,7 +447,6 @@ module ietf-bgp-lsdb { container nodes { description "List of node objects for a given database."; - list node { key "handle"; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-netconf-txid@2023-03-01.yang b/experimental/ietf-extracted-YANG-modules/ietf-netconf-txid@2023-03-01.yang index 2a32598e9..77067a98e 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-netconf-txid@2023-03-01.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-netconf-txid@2023-03-01.yang @@ -61,13 +61,31 @@ module ietf-netconf-txid { "RFC XXXX: Xxxxxxxxx"; } - feature txid-last-modified { + feature last-modified { description "Servers implementing this module MUST support the etag txid mechanism. Servers MAY also support the last-modified txid mechanism. Support is shown by announcing this feature."; } + extension versioned-node { + description "This statement is used by servers to declare that a + the server is maintaining a Txid for the YANG node with this + statement. Which YANG nodes are versioned nodes may be useful + information for clients (especially during development). + + Servers are not required to use this statement to declare which + nodes are versioned nodes. + + Example of use: + + container interfaces { + ietf-netconf-txid:versioned-node; + ... + } + "; + } + typedef etag-t { type string { pattern ".* .*" { @@ -122,7 +140,7 @@ module ietf-netconf-txid { changed."; } leaf with-last-modified { - if-feature txid-last-modified; + if-feature last-modified; type boolean; description "Indicates whether the client requests the server to include @@ -141,7 +159,7 @@ module ietf-netconf-txid { "Indicates server's txid value for a YANG node."; } leaf last-modified-value { - if-feature txid-last-modified; + if-feature last-modified; type last-modified-t; description "Indicates server's txid value for a YANG node."; @@ -195,7 +213,7 @@ module ietf-netconf-txid { attribute for one mismatching element."; } leaf mismatch-last-modified-value { - if-feature txid-last-modified; + if-feature last-modified; type last-modified-t; description "Indicates server's txid value of the last-modified diff --git a/experimental/ietf-extracted-YANG-modules/ietf-tvr-node@2023-10-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-tvr-node@2023-10-11.yang new file mode 100644 index 000000000..24d168dea --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-tvr-node@2023-10-11.yang @@ -0,0 +1,158 @@ +module ietf-tvr-node { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-tvr-node"; + prefix tvr-node; + + import ietf-yang-types { + prefix "yang"; + } + + import ietf-tvr-schedule { + prefix "tvr-schd"; + } + + organization + "IETF TVR - Time Variant Routing Working Group"; + contact + "WG Web: + WG List: + + Author: Yingzhen Qu + + Author: Acee Lindem + + Author: Marc Blanchet + + Author: Eric Kinzie + + Author: Don Fedyk + "; + + description + "The YANG module defines a schedule for changing + attributes of a single node. + + This YANG model conforms to the Network Management + Datastore Architecture (NMDA) as described in RFC 8342. + + Copyright (c) 2023 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 XXXX + (https://www.rfc-editor.org/info/rfcXXXX); 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."; + reference + "RFC XXXX: YANG Data Model for Scheduled Attributes"; + + revision 2023-10-11 { + description + "Initial Version"; + reference + "RFC XXXX: YANG Data Model for Scheduled Attributes."; + } + + container node-schedule { + description + "This container defined time variant attributes + for node's schedule."; + + leaf router-id { + type yang:dotted-quad; + description + "A 32-bit number used to identify a router."; + } + + list power-schedule { + key "start-date-time"; + description + "Power schedule for the node. The node's power is + represented by a boolean value with 'true' indicating + the node is powered on and 'false' indicating the node + is powered off."; + uses tvr-schd:schedule { + augment value-default { + description + "Augment the default power state."; + leaf default-power { + type boolean; + default false; + description + "This indicates the default node power when for + time periods when no interval is defined. If + unspecified, the node is powered down by default."; + } + } + augment base-schedule/intervals/value { + description + "Augmment the scheduled power state."; + leaf power { + type boolean; + description + "Indicates whether the node is powered on."; + } + } + } + } + + container interface-schedule { + description + "Container for TVR node interface attributes."; + + list interfaces { + key "name"; + description + "List of interface with schedules."; + leaf name { + type string; + description + "Name of the interface. + If used with the ietf-interfaces module, the name should + match the name of the interface."; + } + + list up-down-schedule { + key "start-date-time"; + description + "Scheduled times that the interface is up. This is to + work with the leaf 'enabled' for the configured state + of the interface."; + + uses tvr-schd:schedule { + augment value-default { + description + "Augment default interface state."; + leaf default-available { + type boolean; + default false; + description + "By default, the link is not available."; + } + } + augment base-schedule/intervals/value { + description + "Augment scheduled interface state."; + leaf availble { + type boolean; + description + "Link availability."; + } + } + } + } + } + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-07-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-10-11.yang similarity index 60% rename from experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-07-05.yang rename to experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-10-11.yang index 8fd5180c9..df6ceac55 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-07-05.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-tvr-schedule@2023-10-11.yang @@ -1,7 +1,7 @@ module ietf-tvr-schedule { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-tvr-schedule"; - prefix tvr-schedule; + prefix tvr-schd; import ietf-yang-types { prefix "yang"; @@ -9,35 +9,26 @@ module ietf-tvr-schedule { "RFC 6991: Common YANG Data Types"; } - import ietf-interfaces { - prefix "if"; - reference - "RFC 8343: A YANG Data Model for Interface - Management (NMDA Version)"; - } - - import ietf-logical-network-element { - prefix "lne"; - reference - "RFC 8530: YANG Model for Logical Network Elements"; - } - organization "IETF TVR - Time Variant Routing Working Group"; contact "WG Web: WG List: - Author: Yingzhen Qu + Author: Yingzhen Qu Author: Acee Lindem Author: Marc Blanchet - "; + + Author: Eric Kinzie + + Author: Don Fedyk + "; description - "The YANG module defines a schedule for changing - attributes. It can be used to augment existing models. + "The YANG module contains common YANG definitions for + time-variant schedule. This YANG model conforms to the Network Management Datastore Architecture (NMDA) as described in RFC 8342. @@ -64,7 +55,7 @@ module ietf-tvr-schedule { reference "RFC XXXX: YANG Data Model for Scheduled Attributes"; - revision 2023-07-05 { + revision 2023-10-11 { description "Initial Version"; reference @@ -111,80 +102,56 @@ module ietf-tvr-schedule { grouping schedule-lifetime { description "Schedule lifetime specification."; - choice schedule-lifetime { - default "always"; + leaf start-date-time { + type yang:date-and-time; + description + "Start time of the schedule."; + } + choice end-time { + default "infinite"; description - "Options for specifying schedule lifetimes"; - case always { - leaf always { + "End-time setting."; + case infinite { + leaf no-end-time { type empty; description - "Indicates schedule is always valid, and the schedule - will be effective right away after the configuration."; + "Indicates schedule lifetime end-time is infinite."; } } - case start-end-time { - leaf start-date-time { - type yang:date-and-time; + case duration { + leaf duration { + type uint32 { + range "1..2147483646"; + } + units "seconds"; description - "Start time of the schedule."; + "Schedule lifetime duration, in seconds"; } - choice end-time { - default "infinite"; + } + case end-date-time { + leaf end-date-time { + type yang:date-and-time; description - "End-time setting."; - case infinite { - leaf no-end-time { - type empty; - description - "Indicates schedule lifetime end-time is infinite."; - } - } - case duration { - leaf duration { - type uint32 { - range "1..2147483646"; - } - units "seconds"; - description - "Schedule lifetime duration, in seconds"; - } - } - case end-date-time { - leaf end-date-time { - type yang:date-and-time; - description - "End time."; - } - } + "End time."; } } } } - grouping schedule { - uses schedule-lifetime; + grouping base-schedule { leaf recurrence { type recurrence-type; - must "(current() != 'once') or ../start-date-time" { - error-message "A single occurrence requires a start-time"; - description - "With single recurrence of a schedule, a start-time - is required."; - } + default "once"; description "Type of recurrence"; } - leaf value-default { - type union { - type boolean; - type string; - } + container value-default { description - "Attribute default value. This value is used when the value - is not covered by the intervals, as well as when the - schedule ends."; + "Attributes default values. This container should be + augmented with one or more leafs, each of which is used + when the value is not covered by a base-schedule interval, + as well as when the schedule ends."; } container base-schedule { @@ -210,24 +177,25 @@ module ietf-tvr-schedule { } description "Start time of the scheduled value within one recurrence. - The calculation of the real start time is to use the - basestarting time defined by schedule-lifetime, recurrence, - and the timeticks. For example, if a schedule starts at - 2001/1/1 8:00AM with an hourly recurrence, and the - timeticks is 180,000 (30 mins), the start-time will be - every 30 mins pass an hour after 2001/1/1."; + The calculation of the real start time is to use + the basestarting time defined by schedule-lifetime, + recurrence, and the timeticks. For example, if a + schedule starts at 2001/1/1 8:00AM with an hourly + recurrence, and the timeticks is 180,000 (30 mins), + the start-time will be every 30 mins pass an hour + after 2001/1/1."; } leaf end-time { type yang:timeticks; must "(current() > ../start-time) and " + "((../../../recurrence != 'hourly') or " - + "(current() < 360000)) and " + + "(current() < (../start-time + 360000))) and " + "((../../../recurrence != 'daily') or " - + "(current() < 8640000)) and " + + "(current() < (../start-time + 8640000))) and " + "((../../../recurrence != 'monthly') or " - + "(current() < 267840000)) and " + + "(current() < (../start-time + 267840000))) and " + "((../../../recurrence != 'yearly') or " - + "(current() < 3162240000))" { + + "(current() < (../start-time + 3162240000)))" { error-message "The end-time must be greater than the end time and must not exceed the recurrrence interval."; @@ -235,23 +203,16 @@ module ietf-tvr-schedule { "The end-time must be greater than the end time and must not exceed the recurrrence interval. For example, for a 'daily' recurrence, the time-tick offset must - not exceed 24 hours."; + not exceed the start-time + 24 hours."; } description "End time of the scheduled change. The calculation of the end-time is the same as the start-time."; } - leaf value { - type union { - type boolean; - type string; - } + container value { description - "Value for the scheduled attribute during the - specified time period. - When type string is used, it can be a simple value such - as an int, or a string representing a value that changes - its value based on a function."; + "Attribute value(s). This container should be augmented + with attributes that apply to the current interval."; } description "List of intervals for action or attribute modification. @@ -265,30 +226,13 @@ module ietf-tvr-schedule { modification"; } description - "Complete schedule for a action or attribute modification."; - } - - augment "/if:interfaces/if:interface" { - description - "Augments interface with scheduled attribute."; - container scheduled-up-down { - description - "Scheduled interface up and down. This is to work with the - leaf 'enabled' for the configured state of the interface."; - - uses schedule; - } + "Grouping definition of base-schedule."; } - augment "/lne:logical-network-elements" - + "/lne:logical-network-element" { + grouping schedule { + uses schedule-lifetime; + uses base-schedule; description - "Augments logical network elements with scheduled power - shutdown."; - container scheduled-power { - description - "Scheduled power up and down."; - uses schedule; - } + "Complete schedule for a action or attribute modification."; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2023-10-11.yang b/experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2023-10-11.yang new file mode 100644 index 000000000..127e70ad7 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-tvr-topology@2023-10-11.yang @@ -0,0 +1,201 @@ +module ietf-tvr-topology { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-tvr-topology"; + prefix tvr-topo; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + + import ietf-te-types { + prefix te-types; + } + + import ietf-tvr-schedule { + prefix "tvr-schd"; + } + + organization + "IETF Time-Variant Routing Working Group"; + + contact + "WG Web: + WG List: + + Author: Eric Kinzie + + Author: Don Fedyk + + Author: Yingzhen Qu + + Author: Acee Lindem + + Author: Marc Blanchet + "; + + description + "This YANG module contains YANG definitions for describing + network topology with an time-variant availability schedule. + + Copyright (c) 2023 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 XXXX + (https://www.rfc-editor.org/info/rfcXXXX); 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 2023-10-11 { + description + "Initial revision"; + reference + "RFC XXXX: YANG Data Model for Scheduled Attributes"; + } + + container topology-schedule { + description + "Network topology schedules."; + list nodes { + key "node-id"; + description + "List of nodes with schedules."; + leaf node-id { + type inet:uri; + description + "Identifier for a node, uniquely identifies a node. This + may be the same as the node-id defined in the ietf-network + module defined in RFC 8345."; + } + list available { + key "start-date-time"; + description + "The time at which this node becomes available."; + uses tvr-schd:schedule { + augment value-default { + description + "Augment default node availability."; + leaf default-node-available { + type boolean; + default false; + description + "By default, the node is powered off."; + } + } + augment base-schedule/intervals/value { + description + "Augment scheduled node availability."; + leaf node-available { + type boolean; + description + "Node availability."; + } + } + } + } + } + + list links { + key "source-node source-link-id"; + description + "List of links."; + leaf source-node { + type inet:uri; + description + "A name refers to the source node of the link."; + } + leaf destination-node { + type inet:uri; + description + "A name refers to the destination node of the link."; + } + leaf source-link-id { + type string; + description + "A name refers to the link of the source node."; + } + list available { + key "start-date-time"; + description + "The time at which this link becomes available."; + uses tvr-schd:schedule; + + container bandwidth { + description + "Scheduled link bandwidth. + If the value measured by the system is less than this + value, the system value is used. If the value measured + by the system is greater than this value the predicted + value SHOULD be used."; + uses tvr-schd:base-schedule { + augment value-default { + description + "Augment default interface bandwidth."; + leaf default-bandwidth { + type te-types:te-bandwidth; + default "0"; + description + "The default link capacity specified in a + generic format."; + } + } + augment base-schedule/intervals/value { + description + "Augment scheduled interface bandwidth."; + leaf bandwidth { + type te-types:te-bandwidth; + description + "The predicted link capacity specified in a + generic format."; + } + } + } + } + container delay { + description + "The one-way delay or latency in microseconds. If the + value measured by the system is less than this value + the predicted value SHOULD be used."; + uses tvr-schd:base-schedule { + augment value-default { + description + "Augment default delay."; + leaf default-delay { + type uint32 { + range "0..16777215"; + } + description + "The default link capacity specified in a + generic format."; + } + } + augment base-schedule/intervals/value { + description + "Augment scheduled delay."; + leaf delay { + type uint32 { + range "0..16777215"; + } + description + "The predicted link delay specified in a + generic format."; + } + } + } + } + } + } + } +} diff --git a/standard/ietf/RFC/ietf-mud-transparency.yang b/standard/ietf/RFC/ietf-mud-transparency.yang new file mode 120000 index 000000000..4fc9e0076 --- /dev/null +++ b/standard/ietf/RFC/ietf-mud-transparency.yang @@ -0,0 +1 @@ +ietf-mud-transparency@2023-10-10.yang \ No newline at end of file diff --git a/standard/ietf/RFC/ietf-mud-transparency@2023-10-10.yang b/standard/ietf/RFC/ietf-mud-transparency@2023-10-10.yang new file mode 100644 index 000000000..7749f9982 --- /dev/null +++ b/standard/ietf/RFC/ietf-mud-transparency@2023-10-10.yang @@ -0,0 +1,190 @@ +module ietf-mud-transparency { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-mud-transparency"; + prefix mudtx; + + import ietf-inet-types { + prefix inet; + reference + "RFC 6991: Common YANG Data Types"; + } + import ietf-mud { + prefix mud; + reference + "RFC 8520: Manufacturer Usage Description Specification"; + } + + organization + "IETF OPSAWG (Ops Area) Working Group"; + contact + "WG Web: + WG List: + + Editor: Eliot Lear + Editor: Scott Rose "; + description + "This YANG module augments the ietf-mud model to provide for + reporting of SBOMs and vulnerability information. + + 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) 2023 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 9472 + (https://www.rfc-editor.org/info/rfc9472); + see the RFC itself for full legal notices."; + + revision 2023-10-10 { + description + "Initial proposed standard."; + reference + "RFC 9472: A YANG Data Model for Reporting Software Bills + of Materials (SBOMs) and Vulnerability Information"; + } + + identity local-type { + description + "Base identity for local well-known choices."; + } + + identity http { + base mudtx:local-type; + description + "Use http (RFC 7231) (insecure) to retrieve SBOM information. + This method is NOT RECOMMENDED but may be unavoidable for + certain classes of deployment where TLS has not or + cannot be implemented."; + reference + "RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): + Semantics and Content"; + } + + identity https { + base mudtx:local-type; + description + "Use https (secure) to retrieve SBOM information. See + RFC 9110."; + reference + "RFC 9110: HTTP Semantics"; + } + + identity coap { + base mudtx:local-type; + description + "Use COAP (RFC 7252) (insecure) to retrieve SBOM. This method + is NOT RECOMMENDED, although it may be unavoidable + for certain classes of implementations/deployments."; + reference + "RFC 7252: The Constrained Application Protocol (CoAP)"; + } + + identity coaps { + base mudtx:local-type; + description + "Use COAPS (secure) to retrieve SBOM (RFC 7252)."; + } + + grouping transparency-extension { + description + "This grouping provides a means to describe the location of + software bills of material and vulnerability descriptions."; + container transparency { + description + "Container of methods to get SBOMs and vulnerability + information."; + choice sbom-retrieval-method { + description + "How to find SBOM information."; + case cloud { + list sboms { + key "version-info"; + description + "A list of SBOMs tied to different software + or hardware versions."; + leaf version-info { + type string; + description + "The version to which this SBOM refers."; + } + leaf sbom-url { + type inet:uri { + pattern '((coaps?)|(https?)):.*'; + } + description + "A statically located URL."; + } + } + } + case local-well-known { + leaf sbom-local-well-known { + type identityref { + base mudtx:local-type; + } + description + "Which communication protocol to choose."; + } + } + case sbom-contact-info { + leaf sbom-contact-uri { + type inet:uri { + pattern '((mailto)|(https?)|(tel)):.*'; + } + description + "This MUST be a tel, an http, an https, or + a mailto uri schema that customers can use to + contact someone for SBOM information."; + } + } + } + leaf sbom-archive-list { + type inet:uri; + description + "This URI returns a JSON list of URLs that consist of + SBOMs that were previously published for this + device. Publication dates can be found inside + the SBOMs."; + } + choice vuln-retrieval-method { + description + "How to find vulnerability information."; + case cloud { + leaf-list vuln-url { + type inet:uri; + description + "List of statically located URLs that reference + vulnerability information."; + } + } + case vuln-contact-info { + leaf vuln-contact-uri { + type inet:uri { + pattern '((mailto)|(https?)|(tel)):.*'; + } + description + "This MUST be a tel, an http, an https, or + a mailto uri schema that customers can use to + contact someone for vulnerability information."; + } + } + } + } + } + + augment "/mud:mud" { + description + "Add extension for software transparency."; + uses transparency-extension; + } +}