From 96867d01ab6f33f34d280d17be59ab47049939d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Wed, 14 Dec 2022 00:27:07 +0100 Subject: [PATCH 01/86] LDP Protocol: Add support for downstream on demand configuration (#588) * (M) Update release/models/mpls/openconfig-mpls-ldp.yang Added support for downstream on demand. The configuration is proposed per neighbour. State information on the peer advertisement mode is also added. Co-authored-by: Rob Shakir Co-authored-by: samier barguil --- release/models/mpls/openconfig-mpls-ldp.yang | 47 +++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/release/models/mpls/openconfig-mpls-ldp.yang b/release/models/mpls/openconfig-mpls-ldp.yang index 4810fafe8..d70e989f1 100644 --- a/release/models/mpls/openconfig-mpls-ldp.yang +++ b/release/models/mpls/openconfig-mpls-ldp.yang @@ -43,7 +43,13 @@ module openconfig-mpls-ldp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "3.2.0"; + + revision "2022-02-21" { + description + "Added downstream-on-demand support"; + reference "3.2.0"; + } revision "2020-01-09" { description @@ -168,6 +174,21 @@ module openconfig-mpls-ldp { "enumerated type for specifying LDP AFIs"; } + typedef label-advertisement-mode { + type enumeration { + enum DOWNSTREAM_UNSOLICITED { + description + "Downstream Unsolicited."; + } + enum DOWNSTREAM_ON_DEMAND { + description + "Downstream on Demand."; + } + } + description + "Label Advertisement Mode."; + } + // grouping statements grouping ldp-global { @@ -343,6 +364,16 @@ module openconfig-mpls-ldp { "Label space ID of the neighbor."; } + leaf enable-downstream-on-demand { + type boolean; + default "false"; + description + "If this leaf is set to true, LDP downstream on demand is enabled in + the LDP session and the router advertises DoD to the peer. If the peer + also adverstises DoD, then downstream on demand is used in the session, + otherwise downstream unsolicited is used."; + } + } grouping mpls-ldp-neighbor-state { @@ -375,6 +406,20 @@ module openconfig-mpls-ldp { "RFC5036, Sec. 2.5.4."; } + leaf peer-label-advertisement-mode { + type label-advertisement-mode; + description + "This leaf shows the Label Advertisement Mode which is advertised by the peer."; + } + + leaf negotiated-label-advertisement-mode { + type label-advertisement-mode; + description + "This leaf shows the Label Advertisement Mode negotiated based on local + and remote preferences. If DoD is enabled and the peer also adverstises DoD, + then downstream is negotiated. Otherwise, downstream unsolicited is used."; + } + } grouping mpls-ldp-adjacency-state { From 69f571c3b2e2db93dd88d66c424abed45281e527 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 14 Dec 2022 01:06:47 -0700 Subject: [PATCH 02/86] Add missing version statement to openconfig-extensions (#722) * (M) release/models/openconfig-extensions.yang - Add missing version statement --- release/models/openconfig-extensions.yang | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/release/models/openconfig-extensions.yang b/release/models/openconfig-extensions.yang index c5e24ba22..2e0fd9f07 100644 --- a/release/models/openconfig-extensions.yang +++ b/release/models/openconfig-extensions.yang @@ -18,6 +18,14 @@ module openconfig-extensions { "This module provides extensions to the YANG language to allow OpenConfig specific functionality and meta-data to be defined."; + oc-ext:openconfig-version "0.5.1"; + + revision "2022-10-05" { + description + "Add missing version statement."; + reference "0.5.1"; + } + revision "2020-06-16" { description "Add extension for POSIX pattern statements."; From 931b2117c8b26754d0a6bffa48db9363d7ed729b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Thu, 15 Dec 2022 00:49:26 +0100 Subject: [PATCH 03/86] Manage prefix list and extend ACLs to match prefix lists in source/destination (#649) * introduce top level model to define sets of IP source/destination prefix and port lists Co-authored-by: Rob Shakir Co-authored-by: samier barguil --- release/models/acl/openconfig-acl.yang | 11 +- .../models/acl/openconfig-packet-match.yang | 70 +++++- release/models/defined-sets/.spec.yml | 6 + .../defined-sets/openconfig-defined-sets.yang | 227 ++++++++++++++++++ 4 files changed, 312 insertions(+), 2 deletions(-) create mode 100644 release/models/defined-sets/.spec.yml create mode 100644 release/models/defined-sets/openconfig-defined-sets.yang diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 5a6715965..c740e45ca 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -11,6 +11,7 @@ module openconfig-acl { import openconfig-interfaces { prefix oc-if; } import openconfig-yang-types { prefix oc-yang; } import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } // meta organization "OpenConfig working group"; @@ -34,7 +35,14 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.2.2"; + oc-ext:openconfig-version "1.3.0"; + + revision "2022-06-01" { + description + "Add the management of prefix lists + that can be used in matches"; + reference "1.3.0"; + } revision "2022-01-14" { description @@ -842,6 +850,7 @@ module openconfig-acl { } } + grouping acl-config { description "Global configuration data for ACLs"; diff --git a/release/models/acl/openconfig-packet-match.yang b/release/models/acl/openconfig-packet-match.yang index e319a46c0..4b87cdea1 100644 --- a/release/models/acl/openconfig-packet-match.yang +++ b/release/models/acl/openconfig-packet-match.yang @@ -13,6 +13,7 @@ module openconfig-packet-match { import openconfig-packet-match-types { prefix oc-pkt-match-types; } import openconfig-extensions { prefix oc-ext; } import openconfig-mpls-types { prefix oc-mpls; } + import openconfig-defined-sets { prefix oc-sets; } // meta organization "OpenConfig working group"; @@ -27,7 +28,14 @@ module openconfig-packet-match { field is omitted from a match expression, the effect is a wildcard ('any') for that field."; - oc-ext:openconfig-version "1.3.1"; + oc-ext:openconfig-version "1.4.0"; + + revision "2022-06-01" { + description + "Add the ability to match source/destination ipv4 and + ipv6 prefix list and source/destination port list "; + reference "1.4.0"; + } revision "2021-06-16" { description @@ -274,12 +282,32 @@ module openconfig-packet-match { "Source IPv4 address prefix."; } + leaf source-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv4-prefix-sets" + + "/oc-sets:ipv4-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv4 address prefix Set + to match the source address"; + } + leaf destination-address { type oc-inet:ipv4-prefix; description "Destination IPv4 address prefix."; } + leaf destination-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv4-prefix-sets" + + "/oc-sets:ipv4-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv4 address prefix set + to match the destination address"; + } + uses ip-protocol-fields-common-config; } @@ -323,6 +351,16 @@ module openconfig-packet-match { "Source IPv6 address prefix."; } + leaf source-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv6-prefix-sets" + + "/oc-sets:ipv6-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv6 address prefix set + to match the source address"; + } + leaf source-flow-label { type oc-inet:ipv6-flow-label; description @@ -335,6 +373,16 @@ module openconfig-packet-match { "Destination IPv6 address prefix."; } + leaf destination-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv6-prefix-sets" + + "/oc-sets:ipv6-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv6 address prefix set + to match the destination address"; + } + leaf destination-flow-label { type oc-inet:ipv6-flow-label; description @@ -388,12 +436,32 @@ module openconfig-packet-match { "Source port or range"; } + leaf source-port-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:port-sets" + + "/oc-sets:port-set/oc-sets:name"; + } + description + "Reference to a port set + to match the source port"; + } + leaf destination-port { type oc-pkt-match-types:port-num-range; description "Destination port or range"; } + leaf destination-port-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:port-sets" + + "/oc-sets:port-set/oc-sets:name"; + } + description + "Reference to a port set + to match the destination port"; + } + leaf-list tcp-flags { type identityref { base oc-pkt-match-types:TCP_FLAGS; diff --git a/release/models/defined-sets/.spec.yml b/release/models/defined-sets/.spec.yml new file mode 100644 index 000000000..244c93815 --- /dev/null +++ b/release/models/defined-sets/.spec.yml @@ -0,0 +1,6 @@ +- name: openconfig-acl-defined-sets + docs: + - yang/defined-sets/openconfig-defined-sets.yang + build: + - yang/defined-sets/openconfig-defined-sets.yang + run-ci: true diff --git a/release/models/defined-sets/openconfig-defined-sets.yang b/release/models/defined-sets/openconfig-defined-sets.yang new file mode 100644 index 000000000..0c2a92bec --- /dev/null +++ b/release/models/defined-sets/openconfig-defined-sets.yang @@ -0,0 +1,227 @@ +module openconfig-defined-sets { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/defined-sets"; + + prefix "oc-sets"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-packet-match-types { prefix oc-pkt-match-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state + data for defined sets (sets of IPv4 prefixes, sets of + IPv6 prefixes, sets of ports, etc). These sets are used, + for example, in network access control lists (i.e., filters, + rules, etc.) in the matching fields."; + + oc-ext:openconfig-version "1.0.0"; + + revision "2022-12-14" { + description + "Initial version of the defined set model"; + reference "1.0.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping ipv4-prefix-sets-config { + description "Configuration parameters of IPv4 prefix sets."; + + leaf name { + type string; + description + "A user defined name of the IPv4 prefix set."; + } + + leaf description { + type string; + description "A user defined IPv4 prefix set description."; + } + + leaf-list prefix { + type oc-inet:ipv4-prefix; + description + "A user defined list of IPv4 prefixes to be used in match + conditions. Each entry is a IPv4 + mask combination."; + } + } + + grouping ipv6-prefix-sets-config { + description "Configuration parameters of IPv6 prefix sets."; + + leaf name { + type string; + description + "Name of the IPv6 prefix set."; + } + + leaf description { + type string; + description + "A user defined IPv6 prefix set description."; + } + + leaf-list prefix { + type oc-inet:ipv6-prefix; + description + "A user defined list of IPv6 prefixes to be used in match + conditions. Each entry is a IPv6 + mask combination."; + } + } + + grouping port-sets-config { + description + "Configuration parameters of port sets."; + + leaf name { + type string; + description + "A user defined name of the port set."; + } + + leaf description { + type string; + description + "A user defined description for the port set"; + } + + leaf-list port { + type oc-pkt-match-types:port-num-range; + description + "A user defined set of ports to be + used in the match conditions."; + } + } + + grouping defined-sets { + description "Configuration of Defined Sets."; + + container ipv4-prefix-sets { + description + "Container to hold the list of IPv4 prefix sets."; + + list ipv4-prefix-set { + key "name"; + description + "List of IPv4 prefix sets."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name of the IPv4 prefix set."; + } + + container config { + description + "Configuration data for IPv4 prefix sets."; + uses ipv4-prefix-sets-config; + } + + container state { + config false; + description + "State data for IPv4 prefix sets."; + uses ipv4-prefix-sets-config; + } + } + } + + container ipv6-prefix-sets { + description + "Container to hold the list of IPv4 prefix sets."; + + list ipv6-prefix-set { + key "name"; + description "List of IPv6 prefix sets. Each defined set + is uniquely identified by a name"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name of the IPv6 prefix set."; + } + + container config { + description + "Configuration data for IPv6 prefix sets."; + uses ipv6-prefix-sets-config; + } + + container state { + config false; + description + "State data for prefix lists."; + uses ipv6-prefix-sets-config; + } + } + } + + container port-sets { + description + "Container to hold the list of port sets."; + + list port-set { + key "name"; + description + "List of port sets. Each por set is uniquely + identified by its name"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Name of the port set. The name is used to + reference the set in match conditions."; + } + + container config { + description + "Configuration data for port lists."; + uses port-sets-config; + } + + container state { + config false; + description + "State data for port lists."; + uses port-sets-config; + } + } + } + } + + + + grouping defined-sets-top { + description + "Top level grouping for defined-sets"; + + container defined-sets { + description + "Top level enclosing container for defined-set model + config and operational state data."; + uses defined-sets; + } + } + + uses defined-sets-top; + +} From 71a14c9e3ec6abaf1dbbf43efb542a5c60060937 Mon Sep 17 00:00:00 2001 From: Abhiram Kalluru <87454055+akalluru1@users.noreply.github.com> Date: Wed, 14 Dec 2022 15:53:55 -0800 Subject: [PATCH 04/86] Hardware AFT Programming errors module (#725) * Programming errors module Introduce a model of errors of hardware programming of IP routes in a network instance. --- release/models/network-instance/.spec.yml | 2 + .../openconfig-programming-errors.yang | 226 ++++++++++++++++++ 2 files changed, 228 insertions(+) create mode 100644 release/models/network-instance/openconfig-programming-errors.yang diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index efc32de67..6460dff20 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -4,9 +4,11 @@ - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-evpn-types.yang - yang/network-instance/openconfig-evpn.yang + - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang build: - yang/network-instance/openconfig-network-instance.yang + - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang run-ci: true - name: openconfig-network-instance-bgp-rib-augment diff --git a/release/models/network-instance/openconfig-programming-errors.yang b/release/models/network-instance/openconfig-programming-errors.yang new file mode 100644 index 000000000..5dafcc105 --- /dev/null +++ b/release/models/network-instance/openconfig-programming-errors.yang @@ -0,0 +1,226 @@ +module openconfig-programming-errors { + prefix "oc-pgrmerrs"; + + namespace "http://openconfig.net/yang/programming-errors"; + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-inet-types { prefix "oc-inet"; } + import openconfig-network-instance { prefix "oc-ni"; } + import openconfig-platform { prefix "oc-platform"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-yang-types { prefix "oc-yang"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides detailed information about the hardware programming + state of various types of routes within a particular network instance. + It can be used to track where there are routing hardware programming errors + on a device."; + + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + oc-ext:openconfig-version "0.1.0"; + + revision "2022-10-11" { + description + "Initial revision."; + reference "0.1.0"; + } + + grouping ip-routes-common-config { + description + "IP routes hardware programming error common configuration parameters"; + + leaf enabled { + type boolean; + description + "This leaf indicates whether IP routes hardware programming error tracking + is enabled or not"; + } + } + + grouping programming-errors-top { + description + "Top-level grouping for AFT hardware programming errors in OpenConfig."; + + container programming-errors { + description + "Detailed information about the AFT hardware programming state of various types of + routes within a particular network instance. It can be used to track where there + are AFT hardware programming errors on a device."; + + container ip-routes { + description + "The IP AFT/routes hardware programming status within the network-instance. + IP Route programming reports are divided into a set of sub-categories: + - failed programming -- A prefix which is not present in the AFT state is + attempted to be added into the hardware but failed. Traffic destined for + this prefix will not be matched. + - stale programming -- A prefix is already in the AFT is requested to + be updated but failed. Traffic destined for this prefix will be + forwarded to the old next-hop. AFT telemetry should continue to + reflect the old next-hop for the prefix. + - drop programming - these routes are explicitly programmed into hardware + to point to a destination that discards packets. + + Lifecycle of entries/prefixes in the above 3 containers is tied to AFT + telemetry data. When the route gets removed from AFT telemetry data + corresponding entry/prefix will be deleted from above containers as well"; + + container config { + description + "IP route hardware programming errors Configuration parameters"; + + uses ip-routes-common-config; + } + + container state { + config false; + description + "IP route hardware programming errors State parameters"; + + leaf total-errors { + type oc-yang:counter64; + description + "Total number of IP route hardware programming errors encountered"; + } + + uses ip-routes-common-config; + } + + container failed-routes { + config false; + description + "Surrounding container for the list of routes that failed hardware + programming."; + + list failed { + key "prefix"; + + description + "A prefix that was attempted to the programmed into hardware, but the + programming operation failed."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the prefix that keys the failed list."; + } + + container state { + description + "Operational state parameters relating to a failed programming + operation."; + uses route-state-common; + } + } + } + + container stale-routes { + config false; + description + "Surrounding container for the list of routes that are currently in + a stale state."; + + list stale { + key "prefix"; + + description + "A prefix that is currently installed in hardware, but a subsequent + operation to update its programming failed - such that the entry in + hardware is stale."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the prefix that keys the stale list."; + } + + container state { + description + "Operational state parameters relating to a stale route."; + uses route-state-common; + } + } + } + + container drop-routes { + config false; + description + "Surrounding container for the list of routes that are currently in + a drop state."; + + list drop { + key "prefix"; + + description + "A prefix that is currently installed in hardware but with an explicit + instruction that it should discard packets that are destined towards + it."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the prefix that keys the drop list."; + } + + container state { + description + "Operational state parameters relating to a drop route."; + uses route-state-common; + } + } + } + } + } + } + + grouping route-state-common { + description + "Common parameters that correspond to a particular route type."; + + leaf prefix { + type oc-inet:ip-prefix; + description + "The IPv4 or IPv6 prefix that the route state corresponds to."; + } + + leaf time { + type oc-types:timeticks64; + description + "Represents the time the hardware route programming state change was + detected by the monitoring subsystem expressed as nanoseconds since + the Unix epoch."; + } + + leaf-list dest-component { + type leafref { + path "/oc-platform:components/oc-platform:component/oc-platform:name"; + } + description + "The destination component for the route hardware programming"; + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance" { + description + "Augment the network-instance model with the hardware programming + errors container."; + + uses programming-errors-top; + } +} From 6cddd552c84bc8863f6ff5bc237dce135de4ef4a Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Mon, 19 Dec 2022 22:07:06 -0800 Subject: [PATCH 05/86] Fix timestamp documentation (#770) Update documentation to specify which time epoch to use. * last-high-watermark in platform resource utilization * last-configuration-timestamp in system --- .../models/platform/openconfig-platform-common.yang | 12 ++++++++++-- release/models/platform/openconfig-platform.yang | 8 +++++++- release/models/system/openconfig-system.yang | 11 +++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 7e27ad01c..bad9ce543 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.21.0"; + oc-ext:openconfig-version "0.21.1"; + + revision "2022-12-19" { + description + "Update last-high-watermark timestamp documentation."; + reference "0.21.1"; + } revision "2022-09-26" { description @@ -164,7 +170,9 @@ submodule openconfig-platform-common { leaf last-high-watermark { type oc-types:timeticks64; description - "The time when the high-watermark was last updated"; + "The timestamp when the high-watermark was last updated. The value + is the timestamp in nanoseconds relative to the Unix Epoch + (Jan 1, 1970 00:00:00 UTC)."; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index d26a6bb75..58ae45412 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.21.0"; + oc-ext:openconfig-version "0.21.1"; + + revision "2022-12-19" { + description + "Update last-high-watermark timestamp documentation."; + reference "0.21.1"; + } revision "2022-09-26" { description diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index fcee6b0a1..0b7239fda 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -46,7 +46,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.16.0"; + oc-ext:openconfig-version "0.16.1"; + + revision "2022-12-19" { + description + "Update last configuration timestamp documentation."; + reference "0.16.1"; + } revision "2022-09-28" { description @@ -375,7 +381,8 @@ module openconfig-system { description "Indicates the monotonically increasing timestamp at which the last configuration change was made. This may may be through CLI, - gNMI or some other mechanism."; + gNMI or some other mechanism. The value is the timestamp in + nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; } } From 6ff1c73fa4b03543713d6977ed5d52d8912074e3 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Mon, 19 Dec 2022 23:09:56 -0700 Subject: [PATCH 06/86] Network-instance type/enabled and YANG/IETF type cleanup (#749) * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang - Enforce network-instance type as mandatory for all instances - Removal of top-level network-instance enabled leaf - Refactor IETF types to OpenConfig types --- .../openconfig-network-instance-l2.yang | 21 +++++--- .../openconfig-network-instance.yang | 49 ++++++++++--------- 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 592024e9a..d3018f905 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -7,8 +7,8 @@ submodule openconfig-network-instance-l2 { // import some basic types import openconfig-extensions { prefix "oc-ext"; } import openconfig-interfaces { prefix "oc-if"; } - import ietf-yang-types { prefix "yang"; } - import ietf-inet-types { prefix "inet"; } + import openconfig-yang-types { prefix "oc-yang"; } + import openconfig-inet-types { prefix "oc-inet"; } import openconfig-evpn-types { prefix oc-evpn-types; } import openconfig-evpn { prefix "oc-evpn"; } @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-11-18" { + description + "Enforce network-instance type as mandatory, removal of top-level + enabled leaf, migrate IETF types to OpenConfig types"; + reference "2.0.0"; + } revision "2022-09-15" { description @@ -319,7 +326,7 @@ submodule openconfig-network-instance-l2 { "Configuration data for MAC table entries"; leaf mac-address { - type yang:mac-address; + type oc-yang:mac-address; description "MAC address for the dynamic or static MAC table entry"; @@ -577,7 +584,7 @@ submodule openconfig-network-instance-l2 { uses l2ni-l2rib-common-state; leaf host-ip { - type inet:ip-address; + type oc-inet:ip-address; description "Host IP address of the CE device for the L2RIB MAC-IP entry"; reference "RFC7432: BGP MPLS-Based Ethernet VPN"; @@ -599,7 +606,7 @@ submodule openconfig-network-instance-l2 { description "L2RIB Common Property Operational State Data Grouping"; leaf mac-address { - type yang:mac-address; + type oc-yang:mac-address; description "MAC address of the L2RIB MAC or MAC-IP entry"; } leaf vlan { @@ -706,7 +713,7 @@ submodule openconfig-network-instance-l2 { description "A unique entry for the next-hop."; } leaf peer-ip { - type inet:ip-address; + type oc-inet:ip-address; description "Next hop peer address"; } leaf label { diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 3b4bc53a8..d2a8d451f 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -8,8 +8,8 @@ module openconfig-network-instance { prefix "oc-netinst"; // import some basic types - import ietf-yang-types { prefix "yang"; } - import ietf-inet-types { prefix "inet"; } + import openconfig-yang-types { prefix "oc-yang"; } + import openconfig-inet-types { prefix "oc-inet"; } import openconfig-network-instance-types { prefix "oc-ni-types"; } import openconfig-policy-types { prefix "oc-pol-types"; } import openconfig-routing-policy { prefix "oc-rpol"; } @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-11-18" { + description + "Enforce network-instance type as mandatory, removal of top-level + enabled leaf, migrate IETF types to OpenConfig types"; + reference "2.0.0"; + } revision "2022-09-15" { description @@ -297,18 +304,6 @@ module openconfig-network-instance { "A unique name identifying the network instance"; } - uses l2ni-instance { - when "./config/type = 'oc-ni-types:L2VSI' - or ./config/type = 'oc-ni-types:L2P2P' - or ./config/type = 'oc-ni-types:L2L3' - or ./config/type = 'oc-ni-types:DEFAULT_INSTANCE'" { - description - "Layer 2 configuration parameters included when - a network instance is a Layer 2 instance or a - combined L2L3 instance"; - } - } - container config { description "Configuration parameters relating to a network @@ -328,6 +323,18 @@ module openconfig-network-instance { uses network-instance-state; } + uses l2ni-instance { + when "./config/type = 'oc-ni-types:L2VSI' + or ./config/type = 'oc-ni-types:L2P2P' + or ./config/type = 'oc-ni-types:L2L3' + or ./config/type = 'oc-ni-types:DEFAULT_INSTANCE'" { + description + "Layer 2 configuration parameters included when + a network instance is a Layer 2 instance or a + combined L2L3 instance"; + } + } + container evpn { when "../config/type = 'oc-ni-types:L2VSI' or ../config/type = 'oc-ni-types:L3VRF'" { @@ -980,7 +987,7 @@ module openconfig-network-instance { "Configuration parameters relating to an endpoint that is remote from the local system"; leaf remote-system { - type inet:ip-address; + type oc-inet:ip-address; description "The IP address of the device which hosts the remote end-point"; @@ -1194,6 +1201,7 @@ module openconfig-network-instance { type identityref { base "oc-ni-types:NETWORK_INSTANCE_TYPE"; } + mandatory true; description "The type of network instance. The value of this leaf indicates the type of forwarding entries that should be @@ -1207,13 +1215,6 @@ module openconfig-network-instance { of type 'DEFAULT_INSTANCE'."; } - leaf enabled { - type boolean; - description - "Whether the network instance should be configured to be - active on the network element"; - } - leaf description { type string; description @@ -1222,7 +1223,7 @@ module openconfig-network-instance { } leaf router-id { - type yang:dotted-quad; + type oc-yang:dotted-quad; description "A identifier for the local network instance - typically used within associated routing protocols or signalling From 933dffed778133a5f7701ab588111d46bc6361e8 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 14:57:08 -0700 Subject: [PATCH 07/86] Removal of network-instance enabled-address-families leaf-list (#738) * Removal of network-instance enabled-address-families leaf-list * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang * (M) release/models/network-instance/openconfig-network-instance-l3.yang - Removal of unnecessary enabled-address-families leaf-list node --- .../openconfig-network-instance-l2.yang | 8 ++++++- .../openconfig-network-instance-l3.yang | 23 ++++++------------- .../openconfig-network-instance.yang | 23 +++++++++++-------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index d3018f905..c415e8af1 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "3.0.0"; + + revision "2022-12-20" { + description + "Removal of top-level enabled-address-families leaf-list"; + reference "3.0.0"; + } revision "2022-11-18" { description diff --git a/release/models/network-instance/openconfig-network-instance-l3.yang b/release/models/network-instance/openconfig-network-instance-l3.yang index 58131e373..c8381416c 100644 --- a/release/models/network-instance/openconfig-network-instance-l3.yang +++ b/release/models/network-instance/openconfig-network-instance-l3.yang @@ -23,7 +23,13 @@ module openconfig-network-instance-l3 { Layer 3 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-11-08" { + description + "Removal of top-level enabled-address-families leaf-list"; + reference "2.0.0"; + } revision "2022-09-15" { description @@ -127,21 +133,6 @@ module openconfig-network-instance-l3 { } - grouping l3ni-instance-common-config { - description - "Configuration parameters that are common to L3 network - instances other than the default instance"; - - leaf-list enabled-address-families { - type identityref { - base octypes:ADDRESS_FAMILY; - } - description - "The address families that are to be enabled for this - network instance."; - } - } - grouping l3ni-route-limit-structural { description "Configuration and state for the maximum number of routes diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index d2a8d451f..0edab11a8 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "3.0.0"; + + revision "2022-12-20" { + description + "Removal of top-level enabled-address-families leaf-list"; + reference "3.0.0"; + } revision "2022-11-18" { description @@ -294,7 +300,12 @@ module openconfig-network-instance { key "name"; description - "Network instances configured on the local system"; + "Network instances configured on the local system + + IPv4 and IPv6 forwarding are enabled by default within an L3 + network-instance and subsequently, routes can be populated + into the network-instance using protocols that enable IPv4 and + IPv6 configuration without explicitly enabling these."; leaf name { type leafref { @@ -900,14 +911,6 @@ module openconfig-network-instance { description "Type dependent network instance configuration"; - uses oc-ni-l3:l3ni-instance-common-config { - when "./type = 'oc-ni-types:L3VRF' or ./type = 'oc-ni-types:L2L3'" { - description - "Layer 3 VRF configuration parameters included when a - network instance is a L3VRF or combined L2L3 instance"; - } - } - uses l2ni-instance-common-config { when "./type = 'oc-ni-types:L2VSI' or ./type = 'oc-ni-types:L2P2P'" + " or ./type = 'oc-ni-types:L2L3'" { From 8733011c81c5b2a26a1c9a391b07faad2a7e3b5f Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 16:20:44 -0700 Subject: [PATCH 08/86] Normalize and remove single 'unique' statement among model set (#736) * Normalize and remove single 'unique' statement among model set * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang - Remove network-instance interface list unique statement --- .../network-instance/openconfig-network-instance-l2.yang | 8 +++++++- .../network-instance/openconfig-network-instance.yang | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index c415e8af1..bce2463fb 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.1.0"; + + revision "2022-12-21" { + description + "Removal of interface list unique statement"; + reference "3.1.0"; + } revision "2022-12-20" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 0edab11a8..754e9da93 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.1.0"; + + revision "2022-12-21" { + description + "Removal of interface list unique statement"; + reference "3.1.0"; + } revision "2022-12-20" { description @@ -483,7 +489,6 @@ module openconfig-network-instance { list interface { key "id"; - unique "config/interface config/subinterface"; description "An interface associated with the network instance"; From 727595b02473faa7c722d5b2bd51cf1c416cf347 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 16:52:54 -0700 Subject: [PATCH 09/86] Remove unused import from openconfig-acl (#771) * (M) release/models/acl/openconfig-acl.yang - Remove unused openconfig-inet-types import --- release/models/acl/openconfig-acl.yang | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index c740e45ca..f22f88b56 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -11,7 +11,6 @@ module openconfig-acl { import openconfig-interfaces { prefix oc-if; } import openconfig-yang-types { prefix oc-yang; } import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } // meta organization "OpenConfig working group"; @@ -35,7 +34,13 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.3.1"; + + revision "2022-12-20" { + description + "Remove unused openconfig-inet-types import"; + reference "1.3.1"; + } revision "2022-06-01" { description From c08de573162a00d70f050e94ba9a5fd160060dc5 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 17:00:41 -0700 Subject: [PATCH 10/86] Removal of global per network-instance MTU (#753) * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang - Removal of global per network-instance MTU (config/state) --- .../openconfig-network-instance-l2.yang | 21 ++++++---------- .../openconfig-network-instance.yang | 25 ++++++------------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index bce2463fb..f15f747ae 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "4.0.0"; + + revision "2022-12-21" { + description + "Removal of global per network-instance MTU"; + reference "4.0.0"; + } revision "2022-12-21" { description @@ -266,19 +272,6 @@ submodule openconfig-network-instance-l2 { } } - grouping l2ni-instance-common-config { - description - "Common configuration options which are specific to Layer 2 - network instances"; - - leaf mtu { - type uint16; - description - "The maximum frame size which should be supported for this - instance for Layer 2 frames"; - } - } - grouping l2ni-fdb-mac-config { description "Parameters relating to FDB behaviour relating to MAC diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 754e9da93..42de768f8 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "4.0.0"; + + revision "2022-12-21" { + description + "Removal of global per network-instance MTU"; + reference "4.0.0"; + } revision "2022-12-21" { description @@ -326,7 +332,6 @@ module openconfig-network-instance { "Configuration parameters relating to a network instance"; uses network-instance-config; - uses network-instance-type-dependent-config; } @@ -336,7 +341,6 @@ module openconfig-network-instance { "Operational state parameters relating to a network instance"; uses network-instance-config; - uses network-instance-type-dependent-config; uses network-instance-state; } @@ -912,21 +916,6 @@ module openconfig-network-instance { } } - grouping network-instance-type-dependent-config { - description - "Type dependent network instance configuration"; - - uses l2ni-instance-common-config { - when "./type = 'oc-ni-types:L2VSI' or ./type = 'oc-ni-types:L2P2P'" + - " or ./type = 'oc-ni-types:L2L3'" { - description - "Layer 2 configuration parameters included when - a network instance is a Layer 2 instance or a - combined L2L3 instance"; - } - } - } - grouping instance-endpoint-config { description "Configuration data relating to an forwarding-instance From f04dff4e782f9795da6e06323353c44000853a07 Mon Sep 17 00:00:00 2001 From: sugrimov <114244197+sugrimov@users.noreply.github.com> Date: Tue, 3 Jan 2023 19:36:47 +0000 Subject: [PATCH 11/86] Add uRPF aggregate drop counter to pipeline-drop-packet-state. (#757) * Add uRPF aggregate drop counter to pipeline-drop-packet-state. * Update release/models/platform/openconfig-platform-pipeline-counters.yang Co-authored-by: Darren Loher --- .../openconfig-platform-pipeline-counters.yang | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index 69fae0f23..eae57ffb5 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2022-12-01" { + description + "Add uRPF aggregate drop counter."; + reference "0.3.1"; + } + revision "2022-11-09" { description "Add container for vendor specific drop counters."; @@ -1093,6 +1099,16 @@ module openconfig-platform-pipeline-counters { packets are dropped due to legitimate forwarding decisions (ACL drops, No Route etc.)"; } + + leaf urpf-aggregate { + type oc-yang:counter64; + description + "This aggregation of counters represents the conditions in which + packets are dropped due to failing uRPF lookup check. This counter + and the packet-processing-aggregate counter should be incremented + for each uRPF packet drop."; + } + } grouping pipeline-vendor-drop-packets { From a1cad77e18edd576fce8db88bf5de30347603f89 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 17 Jan 2023 21:40:47 -0800 Subject: [PATCH 12/86] Add support for IPv6 RA features. (#741) * Add support for IPv6 RA features. * (M) release/models/interfaces/openconfig-if-ip.yang - Add support for explicit configuration of the M and O bits. - Add support for configuration of prefixes within an RA and the flags associated with them. Co-authored-by: dplore --- .../models/interfaces/openconfig-if-ip.yang | 132 +++++++++++++++++- 1 file changed, 131 insertions(+), 1 deletion(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 8c9fc171f..dee5d568d 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,13 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.1.0"; + + revision "2022-11-09" { + description + "Add additional IPv6 router-advertisement features."; + reference "3.1.0"; + } revision "2019-01-08" { description @@ -907,6 +913,84 @@ module openconfig-if-ip { "When set to true, router advertisement neighbor discovery messages are not transmitted on this interface."; } + + leaf managed { + type boolean; + default false; + description + "When set to true, the managed address configuration (M) flag is set in + the advertised router advertisement. The M flag indicates that there are + addresses available via DHCPv6."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.2"; + } + + leaf other-config { + type boolean; + default false; + description + "When set to true, the other configuration (O) flag is set in the + advertised router advertisement. The O flag indicates that there is + other configuration available via DHCPv6 (e.g., DNS servers)."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.2"; + } + } + + grouping ipv6-ra-prefix-config { + description + "Configuration parameters for an individual prefix within an IPv6 + router advertisement."; + + leaf prefix { + type oc-inet:ipv6-prefix; + description + "IPv6 prefix to be advertised within the router advertisement + message."; + } + + leaf valid-lifetime { + type uint32; + units seconds; + description + "The length of time that the prefix is valid relative to the time + the packet was sent."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.2"; + } + + leaf preferred-lifetime { + type uint32; + units seconds; + description + "The length of time that the address within the prefix remains + in the preferred state, i.e., unrestricted use is allowed by + upper-layer protocols. See RFC4862 for a complete definition + of preferred behaviours."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.2"; + } + + leaf disable-advertisement { + type boolean; + description + "When set to true, the prefix is not advertised within + router advertisement messages that are sent as a result of + router soliciation messages."; + } + + leaf disable-autoconfiguration { + type boolean; + description + "When set to true, the prefix is marked as not to be used for stateless + address configuration. This is achieved by setting the autonomous address + configuration bit for the prefix."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.1"; + } + + leaf enable-onlink { + type boolean; + description + "When set to true, the prefix is marked as being on link by setting the + L-bit for the prefix within a router advertisement."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.1"; + } } grouping ipv4-proxy-arp-config { @@ -1142,6 +1226,52 @@ module openconfig-if-ip { advertisements for IPv6."; uses ipv6-ra-config; } + + container prefixes { + description + "Container for a list of prefixes that are included in the + router advertisement message."; + + list prefix { + key "prefix"; + + description + "List of prefixes that are to be included in the IPv6 + router-advertisement messages for the interface. The list + is keyed by the IPv6 prefix in CIDR representation. + + Prefixes that are listed are those that are to be + advertised in router advertisement messages. Where there + are IPv6 global addresses configured on an interface and + the prefix is not listed in the prefix list, it MUST NOT + be advertised in the router advertisement message."; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the IPv6 prefix key for the prefix list."; + } + + container config { + description + "Configuration parameters corresponding to an IPv6 prefix + within the router advertisement."; + + uses ipv6-ra-prefix-config; + } + + container state { + config false; + description + "Operational state parameters corresponding to an IPv6 prefix + within the router advertisement."; + + uses ipv6-ra-prefix-config; + } + } + } } container neighbors { From 68e56179f4b5bf3dc106ed3ecd549f05ed938ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonardo=20G=C3=B3mez?= <39743862+lgomez9@users.noreply.github.com> Date: Fri, 20 Jan 2023 00:38:44 -0500 Subject: [PATCH 13/86] Added NTP configuration and state to network-instance model. (#767) * Added network-instance-ref to NTP servers. * Removed ntp prefix from source-address. --- release/models/system/openconfig-system.yang | 30 ++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 0b7239fda..0ba4dc125 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -20,6 +20,7 @@ module openconfig-system { import openconfig-alarms { prefix oc-alarms; } import openconfig-messages { prefix oc-messages; } import openconfig-license { prefix oc-license; } + import openconfig-network-instance { prefix oc-ni; } // meta organization "OpenConfig working group"; @@ -46,7 +47,14 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.16.1"; + oc-ext:openconfig-version "0.17.0"; + + revision "2022-12-20" { + description + "Added network instance leaf to ntp client, and dropped + ntp-source-address from global to individual config. Removed ntp prefix."; + reference "0.17.0"; + } revision "2022-12-19" { description @@ -701,6 +709,18 @@ module openconfig-system { "Indicates whether this server should be preferred or not."; } + + leaf network-instance { + type oc-ni:network-instance-ref; + description + "The network instance used to find this server."; + } + + leaf source-address { + type oc-inet:ip-address; + description + "Source address to use on outgoing NTP packets"; + } } grouping system-ntp-server-state { @@ -901,12 +921,6 @@ module openconfig-system { from the servers defined in the 'ntp/server' list."; } - leaf ntp-source-address { - type oc-inet:ip-address; - description - "Source address to use on outgoing NTP packets"; - } - leaf enable-ntp-auth { type boolean; default false; @@ -1260,4 +1274,4 @@ module openconfig-system { // data definition statements uses system-top; -} +} \ No newline at end of file From cb625b428a196be0920875bcf92a6701bbb6c7e1 Mon Sep 17 00:00:00 2001 From: xavier-contreras <41588868+xavier-contreras@users.noreply.github.com> Date: Wed, 25 Jan 2023 09:36:31 -0800 Subject: [PATCH 14/86] [WiFi] Replace uptime counter with timestamp (#711) * Split the client phy-rate into separate rx/tx phy-rate leaves. This is https://github.com/openconfig/public/issues/705 * Revert "Split the client phy-rate into separate rx/tx phy-rate leaves." This reverts commit 80380e704080fb5646321d92850e6d9e3cf67261. * Change uptime counter to up-time timestamp This replaces the "uptime" counter leaf with an oc-types:timeticks64 "up-time" timestamp. This prevents unecessary chrun to telemetry collectors. * Readded uptime leaf and set it as deprecated * Update version to minor release since this is no longer a breaking change. * Update model version reference. --- .../models/wifi/openconfig-ap-manager.yang | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-ap-manager.yang b/release/models/wifi/openconfig-ap-manager.yang index 8f99920fa..317a423ef 100644 --- a/release/models/wifi/openconfig-ap-manager.yang +++ b/release/models/wifi/openconfig-ap-manager.yang @@ -13,6 +13,7 @@ module openconfig-ap-manager { import openconfig-yang-types { prefix oc-yang; } import openconfig-inet-types { prefix oc-inet; } import openconfig-wifi-types { prefix oc-wifi; } + import openconfig-types { prefix oc-types; } // Meta organization "OpenConfig working group"; @@ -25,7 +26,14 @@ module openconfig-ap-manager { "This module defines the top level configuration and state data for a system which manages Access Points."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-17" { + description + "Replace uptime counter with up-time oc-types:timeticks64 timestamp. Sets + uptime leaf to deprecated."; + reference "1.3.0"; + } revision "2022-05-24" { description @@ -132,9 +140,19 @@ module openconfig-ap-manager { "The current operational state of the AP."; } + leaf up-time { + type oc-types:timeticks64; + units nanoseconds; + description + "Timestamp when this AP last changed its op-state to 'UP'. The value is + the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 + 00:00:00 UTC)."; + } + leaf uptime { type uint32; units seconds; + status deprecated; description "Seconds this AP has been in the op-state of 'UP'."; } From 2a6e250e3141ae7d44493134c7308723da3a244e Mon Sep 17 00:00:00 2001 From: xavier-contreras <41588868+xavier-contreras@users.noreply.github.com> Date: Wed, 25 Jan 2023 09:38:57 -0800 Subject: [PATCH 15/86] [WiFi] Split phy-rate into rx/tx pay-rate leaves (#706) * Split the client phy-rate into separate rx/tx phy-rate leaves. This is https://github.com/openconfig/public/issues/705 * Revert "Split the client phy-rate into separate rx/tx phy-rate leaves." This reverts commit 80380e704080fb5646321d92850e6d9e3cf67261. * Split the client phy-rate into separate rx/tx phy-rate leaves Both are important for debug purposes of downlink vs uplink issues, the leaf should be split into both receive and transmit phy-rate. * Update revision number to 2.0.0 This change qualifies as a major revision as per https://github.com/openconfig/public/blob/e9e3a82693d1f26c61d7fbf85b3b2d0418d4af9e/release/models/openconfig-extensions.yang#L53 thus updating the revision to 2.0.0 * Marks phy-rate as deprecated, update version to minor change. --- release/models/wifi/openconfig-wifi-mac.yang | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index 7ad274d74..bac0cb419 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,14 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-17" { + description + "Splits client phy-rate leaf into rx/tx phy-rate leaves. Marks phy-rate + as deprecated."; + reference "1.2.0"; + } revision "2022-03-24" { description @@ -1352,10 +1359,23 @@ module openconfig-wifi-mac { leaf phy-rate { type uint16; + status deprecated; description "Last used PHY rate of connected client."; } + leaf rx-phy-rate { + type uint16; + description + "Last used PHY rate received from connected client."; + } + + leaf tx-phy-rate { + type uint16; + description + "Last used PHY rate transmitted to connected client."; + } + leaf connection-mode { type enumeration { enum A { From 4b81d5832537c6a4414f83236891d55842f7870e Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Wed, 25 Jan 2023 13:20:08 -0800 Subject: [PATCH 16/86] Fix defined-sets spec file (#788) --- release/models/defined-sets/.spec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/models/defined-sets/.spec.yml b/release/models/defined-sets/.spec.yml index 244c93815..6947d635b 100644 --- a/release/models/defined-sets/.spec.yml +++ b/release/models/defined-sets/.spec.yml @@ -1,4 +1,4 @@ -- name: openconfig-acl-defined-sets +- name: openconfig-defined-sets docs: - yang/defined-sets/openconfig-defined-sets.yang build: From c407d1b32728038edf4184a7bbcff9335f942332 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Wed, 25 Jan 2023 14:13:04 -0800 Subject: [PATCH 17/86] Fix `.spec.yml` where name doesn't match module name to fix online documentation. (#789) **Summary:** This PR fixes up the `.spec.yml` files such that so that almost all paths now point to valid links in the https://openconfig.net/projects/models/paths/index.html page. --- release/models/ate/.spec.yml | 4 +--- release/models/catalog/.spec.yml | 2 +- release/models/firewall/.spec.yml | 9 +++++++-- release/models/interfaces/.spec.yml | 6 ++++++ release/models/network-instance/.spec.yml | 2 ++ release/models/optical-transport/.spec.yml | 6 +++++- release/models/platform/.spec.yml | 8 ++++++++ release/models/stp/.spec.yml | 2 +- release/models/system/.spec.yml | 7 ++++++- 9 files changed, 37 insertions(+), 9 deletions(-) diff --git a/release/models/ate/.spec.yml b/release/models/ate/.spec.yml index 673f94a7a..90963be13 100644 --- a/release/models/ate/.spec.yml +++ b/release/models/ate/.spec.yml @@ -1,8 +1,6 @@ -- name: openconfig-ate +- name: openconfig-ate-flow docs: - yang/ate/openconfig-ate-flow.yang - - yang/ate/openconfig-ate-intf.yang build: - yang/ate/openconfig-ate-flow.yang - - yang/ate/openconfig-ate-intf.yang run-ci: true diff --git a/release/models/catalog/.spec.yml b/release/models/catalog/.spec.yml index ce41cde5f..e658906d9 100644 --- a/release/models/catalog/.spec.yml +++ b/release/models/catalog/.spec.yml @@ -1,4 +1,4 @@ -- name: openconfig-catalog +- name: openconfig-module-catalog build: - yang/catalog/openconfig-module-catalog.yang docs: diff --git a/release/models/firewall/.spec.yml b/release/models/firewall/.spec.yml index 8218d44e1..4ec8c3c7b 100644 --- a/release/models/firewall/.spec.yml +++ b/release/models/firewall/.spec.yml @@ -1,7 +1,12 @@ -- name: openconfig-firewall +- name: openconfig-fw-high-availability docs: - yang/firewall/openconfig-fw-high-availability.yang - - yang/firewall/openconfig-fw-link-monitoring.yang build: - yang/firewall/openconfig-fw-high-availability.yang run-ci: true +- name: openconfig-fw-link-monitoring + docs: + - yang/firewall/openconfig-fw-link-monitoring.yang + build: + - yang/firewall/openconfig-fw-link-monitoring.yang + run-ci: true diff --git a/release/models/interfaces/.spec.yml b/release/models/interfaces/.spec.yml index 2aa3746fa..6beda8549 100644 --- a/release/models/interfaces/.spec.yml +++ b/release/models/interfaces/.spec.yml @@ -13,6 +13,9 @@ - yang/platform/openconfig-platform-port.yang - yang/platform/openconfig-platform-transceiver.yang - yang/interfaces/openconfig-if-sdn-ext.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/optical-transport/openconfig-transport-line-common.yang + - yang/ate/openconfig-ate-intf.yang build: - yang/interfaces/openconfig-interfaces.yang - yang/interfaces/openconfig-if-ip.yang @@ -27,4 +30,7 @@ - yang/platform/openconfig-platform-port.yang - yang/platform/openconfig-platform-transceiver.yang - yang/interfaces/openconfig-if-sdn-ext.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/optical-transport/openconfig-transport-line-common.yang + - yang/ate/openconfig-ate-intf.yang run-ci: true diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 6460dff20..40c3d4f8a 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -6,10 +6,12 @@ - yang/network-instance/openconfig-evpn.yang - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang + - yang/segment-routing/openconfig-rsvp-sr-ext.yang build: - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang + - yang/segment-routing/openconfig-rsvp-sr-ext.yang run-ci: true - name: openconfig-network-instance-bgp-rib-augment build: diff --git a/release/models/optical-transport/.spec.yml b/release/models/optical-transport/.spec.yml index 672c664a9..d0b990b11 100644 --- a/release/models/optical-transport/.spec.yml +++ b/release/models/optical-transport/.spec.yml @@ -25,10 +25,14 @@ - yang/optical-transport/openconfig-transport-line-common.yang - yang/optical-transport/openconfig-wavelength-router.yang - yang/optical-transport/openconfig-channel-monitor.yang + build: + - yang/optical-transport/openconfig-wavelength-router.yang + run-ci: true +- name: openconfig-transport-line-connectivity + docs: - yang/optical-transport/openconfig-transport-line-connectivity.yang build: - yang/optical-transport/openconfig-transport-line-connectivity.yang - - yang/optical-transport/openconfig-wavelength-router.yang run-ci: true - name: openconfig-transport-line-protection docs: diff --git a/release/models/platform/.spec.yml b/release/models/platform/.spec.yml index 74b236942..61d202c4d 100644 --- a/release/models/platform/.spec.yml +++ b/release/models/platform/.spec.yml @@ -15,6 +15,10 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/system/openconfig-alarms.yang + - yang/optical-transport/openconfig-terminal-device.yang + - yang/optical-transport/openconfig-transport-line-common.yang build: - yang/platform/openconfig-platform.yang - yang/platform/openconfig-platform-common.yang @@ -30,4 +34,8 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/system/openconfig-alarms.yang + - yang/optical-transport/openconfig-terminal-device.yang + - yang/optical-transport/openconfig-transport-line-common.yang run-ci: true diff --git a/release/models/stp/.spec.yml b/release/models/stp/.spec.yml index c84de41dd..6b516c023 100644 --- a/release/models/stp/.spec.yml +++ b/release/models/stp/.spec.yml @@ -1,4 +1,4 @@ -- name: openconfig-stp +- name: openconfig-spanning-tree docs: - yang/stp/openconfig-spanning-tree-types.yang - yang/stp/openconfig-spanning-tree.yang diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index 3a8c0b185..7d27aa0cd 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -10,8 +10,8 @@ - yang/system/openconfig-aaa-tacacs.yang - yang/system/openconfig-aaa-radius.yang - yang/system/openconfig-alarms.yang - - yang/system/openconfig-messages.yang - yang/system/openconfig-license.yang + - yang/openflow/openconfig-openflow.yang build: - yang/system/openconfig-system.yang run-ci: true @@ -20,3 +20,8 @@ - yang/system/openconfig-system.yang - yang/system/openconfig-system-grpc.yang run-ci: true +- name: openconfig-messages + docs: + - yang/system/openconfig-messages.yang + build: + - yang/system/openconfig-messages.yang From aa99360c8bc877eb54ce195af0e883dfec970fc8 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 26 Jan 2023 10:48:21 -0800 Subject: [PATCH 18/86] add network-instance for logging server (#776) * add network-instance for logging server * clarify unspecified network-instance --- .../system/openconfig-system-logging.yang | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/release/models/system/openconfig-system-logging.yang b/release/models/system/openconfig-system-logging.yang index 1602cb1c6..299838908 100644 --- a/release/models/system/openconfig-system-logging.yang +++ b/release/models/system/openconfig-system-logging.yang @@ -10,7 +10,7 @@ module openconfig-system-logging { // import some basic types import openconfig-extensions { prefix oc-ext; } import openconfig-inet-types { prefix oc-inet; } - + import openconfig-network-instance { prefix oc-ni; } // meta organization "OpenConfig working group"; @@ -23,7 +23,13 @@ module openconfig-system-logging { "This module defines configuration and operational state data for common logging facilities on network systems."; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.1"; + + revision "2022-12-29" { + description + "Add network-instance for remote logging servers"; + reference "0.4.1"; + } revision "2018-11-21" { description @@ -426,6 +432,13 @@ module openconfig-system-logging { "Source IP address for packets to the log server"; } + leaf network-instance { + type oc-ni:network-instance-ref; + description + "The network instance used to reach the log server. If no + instance is specified, DEFAULT_INSTANCE is used."; + } + leaf remote-port { type oc-inet:port-number; default 514; @@ -500,4 +513,4 @@ module openconfig-system-logging { // augment statements -} \ No newline at end of file +} From 53a632b518e3a2418b0649303339569f91391695 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 26 Jan 2023 22:09:26 -0800 Subject: [PATCH 19/86] Add openconfig-vlan-types to interface documentation generation. (#795) * (M) release/models/interfaces/.spec.yml - Add openconfig-vlan-types to the interfaces documentation build rule. VLAN types are referenced in the interfaces model such that it would be useful to have this in the documentation. --- release/models/interfaces/.spec.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/release/models/interfaces/.spec.yml b/release/models/interfaces/.spec.yml index 6beda8549..9535719e6 100644 --- a/release/models/interfaces/.spec.yml +++ b/release/models/interfaces/.spec.yml @@ -16,6 +16,7 @@ - yang/p4rt/openconfig-p4rt.yang - yang/optical-transport/openconfig-transport-line-common.yang - yang/ate/openconfig-ate-intf.yang + - yang/vlan/openconfig-vlan-types.yang build: - yang/interfaces/openconfig-interfaces.yang - yang/interfaces/openconfig-if-ip.yang From 5ca6a36fb57b09ab656fc608ac134550c9a43716 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Thu, 26 Jan 2023 22:50:28 -0800 Subject: [PATCH 20/86] Convert `.../bgp/rib/attr-sets/attr-set/as-path/as-segment` and `as4-segment` to keyed lists (#750) * Convert `.../bgp/rib/attr-sets/attr-set/as-path/as-segment` to a keyed list. --- .../rib/openconfig-rib-bgp-attributes.yang | 48 +++++++++++++++++-- .../openconfig-rib-bgp-shared-attributes.yang | 8 +++- .../openconfig-rib-bgp-table-attributes.yang | 8 +++- .../models/rib/openconfig-rib-bgp-tables.yang | 8 +++- release/models/rib/openconfig-rib-bgp.yang | 8 +++- 5 files changed, 72 insertions(+), 8 deletions(-) diff --git a/release/models/rib/openconfig-rib-bgp-attributes.yang b/release/models/rib/openconfig-rib-bgp-attributes.yang index f9577a5c4..3dbb0cc40 100644 --- a/release/models/rib/openconfig-rib-bgp-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-attributes.yang @@ -24,7 +24,13 @@ submodule openconfig-rib-bgp-attributes { attributes for use in BGP RIB tables."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description @@ -81,6 +87,16 @@ submodule openconfig-rib-bgp-attributes { description "Data for representing BGP AS-PATH attribute"; + leaf index { + type uint32; + description + "A unique ordering index starting from 0 identifying the position of + the AS-PATH segment in the list of segments. + + The index MUST start from 0 and end at (length-1), where length is the + number of segments in the list of AS-PATH segments."; + } + leaf type { type oc-bgpt:as-path-segment-type; description @@ -99,6 +115,7 @@ submodule openconfig-rib-bgp-attributes { "Top-level grouping for AS-PATH attribute data"; container as-path { + oc-ext:telemetry-atomic; description "Enclosing container for the list of AS path segments. @@ -117,8 +134,19 @@ submodule openconfig-rib-bgp-attributes { RFC 5065 - Autonomous System Confederations for BGP"; list as-segment { + key "index"; + description - "Unkeyed list of AS PATH segments"; + "List of AS-PATH segments"; + + leaf index { + type leafref { + path "../state/index"; + } + description + "Reference to the unique ordering index starting from 0 identifying + the position of the AS-PATH segment in the list of segments."; + } container state { config false; @@ -136,6 +164,7 @@ submodule openconfig-rib-bgp-attributes { "Top-level grouping for AS4-PATH attribute data"; container as4-path { + oc-ext:telemetry-atomic; description "This is the path encoded with 4-octet AS numbers in the optional transitive AS4_PATH attribute. @@ -148,13 +177,24 @@ submodule openconfig-rib-bgp-attributes { "RFC 6793 - BGP Support for Four-octet AS Number Space"; list as4-segment { + key "index"; + description - "Unkeyed list of AS PATH segments"; + "List of AS4-PATH segments"; + + leaf index { + type leafref { + path "../state/index"; + } + description + "Reference to the unique ordering index starting from 0 identifying + the position of the AS4-PATH segment in the list of segments."; + } container state { config false; description - "Opstate data for AS-PATH segments"; + "Opstate data for AS4-PATH segments"; uses bgp-as-path-attr-state; } diff --git a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang index 59508fe7b..80b20c718 100644 --- a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-shared-attributes { "This submodule contains structural data definitions for attribute sets shared across routes."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description diff --git a/release/models/rib/openconfig-rib-bgp-table-attributes.yang b/release/models/rib/openconfig-rib-bgp-table-attributes.yang index 1c373c40f..b2164e56a 100644 --- a/release/models/rib/openconfig-rib-bgp-table-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-table-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-table-attributes { "This submodule contains common data definitions for data related to a RIB entry, or RIB table."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description diff --git a/release/models/rib/openconfig-rib-bgp-tables.yang b/release/models/rib/openconfig-rib-bgp-tables.yang index 04f3f0bbf..268c9cd20 100644 --- a/release/models/rib/openconfig-rib-bgp-tables.yang +++ b/release/models/rib/openconfig-rib-bgp-tables.yang @@ -30,7 +30,13 @@ submodule openconfig-rib-bgp-tables { "This submodule contains structural data definitions for BGP routing tables."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description diff --git a/release/models/rib/openconfig-rib-bgp.yang b/release/models/rib/openconfig-rib-bgp.yang index d2d5f2735..8e93838e0 100644 --- a/release/models/rib/openconfig-rib-bgp.yang +++ b/release/models/rib/openconfig-rib-bgp.yang @@ -67,7 +67,13 @@ module openconfig-rib-bgp { eligible for sending (advertising) to the neighbor after output policy rules have been applied."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description From b834e0756f324f50e6e53cd05522c0949101872c Mon Sep 17 00:00:00 2001 From: jnelson-sj <116230171+jnelson-sj@users.noreply.github.com> Date: Wed, 1 Feb 2023 11:35:14 -0800 Subject: [PATCH 21/86] Transceiver thresholds (#746) * Initial model for optical transceiver thresholds --- .../openconfig-platform-transceiver.yang | 109 +++++++++++++++++- 1 file changed, 108 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index c70a4fdda..a79585f3d 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -17,6 +17,7 @@ module openconfig-platform-transceiver { import openconfig-types { prefix oc-types; } import openconfig-extensions { prefix oc-ext; } import openconfig-yang-types { prefix oc-yang; } + import openconfig-alarm-types { prefix oc-alarm-types; } // meta @@ -65,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2023-01-12" { + description + "Add laser power and temperature thresholds"; + reference "0.10.0"; + } revision "2021-07-29" { description @@ -413,6 +420,44 @@ module openconfig-platform-transceiver { } } + grouping transceiver-threshold-top { + description + "Top-level grouping for transceiver alarm thresholds for + various sensors."; + + container thresholds { + description + "Enclosing container for transceiver alarm thresholds."; + + list threshold { + config false; + key "severity"; + description + "List of transceiver alarm thresholds, indexed by + alarm severity."; + + leaf severity { + config false; + type leafref { + path "../state/severity"; + } + description + "The severity applied to the group of thresholds. + An implementation's highest severity threshold + should be mapped to OpenConfig's `CRITICAL` + severity level."; + } + + container state { + config false; + description + "Operational alarm thresholds for the transceiver."; + + uses transceiver-threshold-state; + } + } + } + } grouping port-transceiver-config { description @@ -687,6 +732,67 @@ module openconfig-platform-transceiver { uses optical-power-state; } + grouping transceiver-threshold-state { + description + "Grouping for all alarm threshold configs for a particular + severity level."; + leaf severity { + type identityref { + base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY; + } + description + "The type of alarm to which the thresholds apply."; + } + leaf laser-temperature-upper { + description + "The upper temperature threshold for the laser temperature sensor."; + type decimal64 { + fraction-digits 1; + } + units celsius; + } + leaf laser-temperature-lower { + description + "The lower temperature threshold for the laser temperature sensor."; + type decimal64 { + fraction-digits 1; + } + units celsius; + } + leaf output-power-upper{ + description + "The upper power threshold for the laser output power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + leaf output-power-lower{ + description + "The lower power threshold for the laser output power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + leaf input-power-upper{ + description + "The upper power threshold for the laser input power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + leaf input-power-lower{ + description + "The lower power threshold for the laser input power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + } + grouping port-transceiver-top { description "Top-level grouping for client port transceiver data"; @@ -715,6 +821,7 @@ module openconfig-platform-transceiver { // physical channels are associated with a transceiver // component uses physical-channel-top; + uses transceiver-threshold-top; } } From b3f70ed2dc374881f73be4e28e0a11b461fa5b86 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Wed, 1 Feb 2023 13:36:40 -0800 Subject: [PATCH 22/86] Hardware Resource Thresholds (#754) * Hardware Resource Thresholds Adding threshold configuration and threshold-exceeded state for platform resource utilization components. Co-authored-by: Darren Loher --- .../platform/openconfig-platform-common.yang | 35 +++++++++++++++++-- .../models/platform/openconfig-platform.yang | 8 ++++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index bad9ce543..9bb8cd140 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.21.1"; + oc-ext:openconfig-version "0.22.0"; + + revision "2022-12-20" { + description + "Add threshold and threshold-exceeded for resource usage."; + reference "0.22.0"; + } revision "2022-12-19" { description @@ -128,6 +134,20 @@ submodule openconfig-platform-common { description "Resource name within the component."; } + + leaf used-threshold-upper { + type oc-types:percentage; + description + "The used percentage value (used / (used + free) * 100) that + when crossed will set utilization-threshold-exceeded to 'true'."; + } + + leaf used-threshold-upper-clear { + type oc-types:percentage; + description + "The used percentage value (used / (used + free) * 100) that when + crossed will set utilization-threshold-exceeded to 'false'."; + } } grouping platform-utilization-resource-state { @@ -171,8 +191,17 @@ submodule openconfig-platform-common { type oc-types:timeticks64; description "The timestamp when the high-watermark was last updated. The value - is the timestamp in nanoseconds relative to the Unix Epoch - (Jan 1, 1970 00:00:00 UTC)."; + is the timestamp in nanoseconds relative to the Unix Epoch + (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf used-threshold-upper-exceeded { + type boolean; + description + "This value is set to true when the used percentage value + (used / (used + free) * 100) has crossed the used-threshold-upper for this + resource and false when the used percentage value has crossed the configured + used-threshold-upper-clear value for this resource."; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 58ae45412..4a6d874b7 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.21.1"; + oc-ext:openconfig-version "0.22.0"; + + revision "2022-12-20" { + description + "Add threshold and threshold-exceeded for resource usage."; + reference "0.22.0"; + } revision "2022-12-19" { description From e8aaa9d90af0d0ed50b0355b17796092ceb6cad2 Mon Sep 17 00:00:00 2001 From: yaonanliang <100883036+yaonanliang@users.noreply.github.com> Date: Fri, 3 Feb 2023 14:02:19 -0800 Subject: [PATCH 23/86] Remove the default of "enabled" of BGP AFI-SAFI to support BGP inheritance model (#774) * Remove the default of afi-safi "enabled" only for neighbor/peer-group, but keep it for global. * Update release/models/bgp/openconfig-bgp-common-multiprotocol.yang --------- Co-authored-by: Darren Loher Co-authored-by: Rob Shakir --- .../openconfig-bgp-common-multiprotocol.yang | 33 +++++++++++++++++-- .../bgp/openconfig-bgp-common-structure.yang | 9 ++++- release/models/bgp/openconfig-bgp-common.yang | 9 ++++- release/models/bgp/openconfig-bgp-global.yang | 13 ++++++-- .../models/bgp/openconfig-bgp-neighbor.yang | 9 ++++- .../models/bgp/openconfig-bgp-peer-group.yang | 9 ++++- release/models/bgp/openconfig-bgp.yang | 19 +++++++++-- 7 files changed, 89 insertions(+), 12 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 2c043548e..385e2008b 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,14 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description @@ -171,9 +178,9 @@ submodule openconfig-bgp-common-multiprotocol { } } - grouping bgp-common-mp-afi-safi-config { + grouping bgp-common-mp-global-afi-safi-config { description - "Configuration parameters used for all BGP AFI-SAFIs"; + "Configuration parameters used for all BGP global AFI-SAFIs"; leaf afi-safi-name { type identityref { @@ -185,6 +192,26 @@ submodule openconfig-bgp-common-multiprotocol { leaf enabled { type boolean; default false; + description + "This leaf indicates whether the AFI-SAFI is enabled for all + neighbors or groups."; + } + } + + grouping bgp-common-mp-afi-safi-config { + description + "Configuration parameters used for all BGP neighbors + or groups AFI-SAFIs"; + + leaf afi-safi-name { + type identityref { + base oc-bgp-types:AFI_SAFI_TYPE; + } + description "AFI,SAFI"; + } + + leaf enabled { + type boolean; description "This leaf indicates whether the AFI-SAFI is enabled for the neighbor or group"; diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 80b0afb42..6ab35ba12 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,14 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index e42a71edf..90d0b0d87 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,14 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 248ece65f..2157c236a 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,14 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description @@ -337,13 +344,13 @@ submodule openconfig-bgp-global { container config { description "Configuration parameters for the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; + uses bgp-common-mp-global-afi-safi-config; } container state { config false; description "State information relating to the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; + uses bgp-common-mp-global-afi-safi-config; uses bgp-common-state; } diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index c67b35d3a..ce798b395 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,14 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 5101b7812..d765e961a 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,14 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index a63a1e808..a0068f4cf 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -58,9 +58,24 @@ module openconfig-bgp { +-> neighbor +-> [ neighbor config ] +-> [ optional pointer to peer-group ] - +-> AFI / SAFI [ per-AFI overrides ]"; + +-> AFI / SAFI [ per-AFI overrides ] + + Most BGP features can be configured at multiple levels in the BGP + configuration level hierarchy. The common inheritance model allows + the more specific configuration (e.g. neighbor) to inherit from or + override the less specific configuration (e.g. global). + Leaf present at one level overrides leafs present at higher levels, + whereas leaf not present inherits its value from the leaf present + at the next higher level in the hierarchy."; + + oc-ext:openconfig-version "9.2.0"; - oc-ext:openconfig-version "9.1.0"; + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description From 910c10e7224c7280b5e9dc99f5744817b698e846 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 3 Feb 2023 15:09:37 -0800 Subject: [PATCH 24/86] Control plane access control list and QoS (#762) * Add control-plane QoS and ACL model. * (M) release/models/system/.spec.yml * (A) release/models/system/openconfig-system-controlplane.yang - Initial proposal for a model that covers control-plane policing (QoS policy) and ACL for control-plane protection. The proposal is to provide a central point of attachment under the system model. * (M) release/models/openconfig-system-controlplane.yang - remove reference to defined sets, the reference to an ACL allows explicit permit/deny actions. - add ingress and egress containers to cover ingress and egress ACLs. QoS policy is implemented only for ingress. * Move to list of ACL sets for compactness and commonality. * Update ACL model to have absolute reference. * Update leaf name to allow re-use of grouping. --------- Co-authored-by: Rob Shakir --- release/models/acl/openconfig-acl.yang | 17 +- .../models/qos/openconfig-qos-elements.yang | 8 +- .../models/qos/openconfig-qos-interfaces.yang | 15 +- .../models/qos/openconfig-qos-mem-mgmt.yang | 8 +- release/models/qos/openconfig-qos.yang | 8 +- release/models/system/.spec.yml | 1 + .../openconfig-system-controlplane.yang | 362 ++++++++++++++++++ 7 files changed, 410 insertions(+), 9 deletions(-) create mode 100644 release/models/system/openconfig-system-controlplane.yang diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index f22f88b56..eabbc761e 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,7 +34,14 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.1"; + oc-ext:openconfig-version "1.3.2"; + + revision "2023-01-29" { + description + "Update sequence-id reference to allow model to be re-used + outside of ACL context."; + reference "1.3.2"; + } revision "2022-12-20" { description @@ -578,10 +585,10 @@ module openconfig-acl { leaf sequence-id { type leafref { - path "/acl/acl-sets/" + - "acl-set[name=current()/../../../../set-name]" + - "[type=current()/../../../../type]/" + - "acl-entries/acl-entry/sequence-id"; + path "/oc-acl:acl/oc-acl:acl-sets/" + + "oc-acl:acl-set[oc-acl:name=current()/../../../../set-name]" + + "[oc-acl:type=current()/../../../../type]/" + + "oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:sequence-id"; } description "Reference to an entry in the ACL set applied to an diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 9e90dec12..4e172cbe3 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index d1bb820d1..725f2f6b7 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description @@ -101,6 +107,13 @@ submodule openconfig-qos-interfaces { "Reference to match terms in the classifier"; } + uses qos-interface-classifier-match-counters-state; + } + + grouping qos-interface-classifier-match-counters-state { + description + "Grouping for counters relating to QoS classifier match terms."; + leaf matched-packets { type oc-yang:counter64; description diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index b67e486f7..f2fe2c39d 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 2dd1aa421..c2f995f61 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index 7d27aa0cd..b4009f87e 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -19,6 +19,7 @@ build: - yang/system/openconfig-system.yang - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-controlplane.yang run-ci: true - name: openconfig-messages docs: diff --git a/release/models/system/openconfig-system-controlplane.yang b/release/models/system/openconfig-system-controlplane.yang new file mode 100644 index 000000000..fee5fd728 --- /dev/null +++ b/release/models/system/openconfig-system-controlplane.yang @@ -0,0 +1,362 @@ +module openconfig-system-controlplane { + yang-version "1"; + + namespace "http://openconfig.net/yang/system-controlplane"; + prefix "oc-sys-copp"; + + import openconfig-extensions { + prefix oc-ext; + } + import openconfig-system { + prefix oc-sys; + } + import openconfig-acl { + prefix oc-acl; + } + import openconfig-qos { + prefix oc-qos; + } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds configuration and operational state relating to + policies for traffic destined to the system's control-plane. + Particularly, it allows for mechanisms to: + - apply an ACL that forwards or drops traffic towards the control-plane. + - classify traffic that is destined to the control-plane according to + a QoS classifier. + - schedule traffic that has been forwarded towards the control-plane, + to allow for policies such as rate limits to be applied. + The configured policies apply generically to all control-planes that + exist within the system, and should be mapped to the internal interfaces + via which packets are forwarded to control-plane modules. + When a packet is received at an input interface - it is classified into a + forwarding group which drains to a specific queue. If this input mapping + is sufficient, the CPU-facing interface uses the specified scheduler + to determine how to drain queues. If more granular remapping is required + (e.g., to classify control-plane traffic more granularly), a user specifies + an alternate classifier that is used to reclassify traffic into + a new set of forwarding-groups (and hence queues) that can subsequently + be scheduled by the specified scheduler. + The specified control-plane ACL is applied to traffic received by the + control-plane of the system."; + + oc-ext:openconfig-version "0.1.0"; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + revision "2021-08-02" { + description + "Initial revision."; + reference + "0.1.0"; + } + + grouping system-controlplane-top { + description + "Top-level structural grouping for control-plane traffic policies."; + + container control-plane-traffic { + description + "Policies and configuration relating to the traffic destined towards + the system control-plane."; + + container ingress { + description + "Control-plane traffic parameters relating to ingress traffic. + This refers to traffic that is being received by the system's + control plane from external-to-the-controlplane sources."; + + uses system-controlplane-acl-common-top; + + container qos { + description + "Configuration and operational state relating to QoS policies + that are applied to control-plane traffic."; + + container classifier { + description + "Configuration and state parameters relating to the QoS + classifier that is applied to control plane traffic. A QoS + classifier - defined in /qos/classifiers specifies how traffic + is mapped to QoS queues. The classifier specified in this + container and corresponding state allows for traffic towards + the control-plane to be classified."; + + container config { + description + "Configuration parameters relating to QoS classifier + applied to match control plane traffic."; + uses system-controlplane-qos-classifier-config; + } + + container state { + config false; + description + "Operational state parameters relating to the QoS classifier + applied to match control plane traffic."; + uses system-controlplane-qos-classifier-config; + } + + container terms { + config false; + description + "Operational state and counters relating to the classifier + applied to control-plane traffic."; + + list term { + key "id"; + + description + "A list of the terms within the QoS classifier being + applied for control-plane traffic. Each term has + corresponding operational state parameters."; + + leaf id { + type leafref { + path "../state/id"; + } + description + "Reference to the identifier for the classifier term."; + } + + container state { + config false; + description + "Operational state parameters relating to a term within + the applied control-plane classifier"; + + uses system-controlplane-qos-classifier-term-state; + uses oc-qos:qos-interface-classifier-match-counters-state; + } + } + } + } + + container scheduler-policy { + description + "Configuration and operational state relating to the QoS + scheduler policy that is applied to control-plane traffic. + The scheduler policy determines how traffic, classified by + the specified control-plane classifier is rate-limited towards + the control-plane. The scheduler policy is defined in + /qos/scheduler-policies."; + + container config { + description + "Configuration parameters relating to the scheduler-policy + that is to be applied control-plane traffic."; + + uses system-controlplane-qos-scheduler-config; + } + + container state { + config false; + description + "Operational state parameters relating to the scheduler policy + applied to the control-plane traffic."; + + uses system-controlplane-qos-scheduler-config; + } + + container scheduler-statistics { + config false; + description + "Operational state and counters relating to the + scheduler-policy applied to control plane traffic."; + + list scheduler { + key "sequence"; + description + "List of the schedulers that are part of the scheduler-policy + specified."; + + leaf sequence { + type leafref { + path "../state/sequence"; + } + description + "Reference to the sequence ID for the scheduler."; + } + + container state { + description + "Operational state parameters relating to the scheduler + policy."; + + uses system-controlplane-qos-scheduler-seq-state; + } + } + } + } + } + } + + container egress { + description + "Control-plane traffic parameters relating to egress traffic. + This refers to traffic that is sent by the system's control + plane to external-to-the-controlplane destinations."; + + uses system-controlplane-acl-common-top; + } + } + } + + grouping system-controlplane-acl-common-top { + description + "Common structural grouping for ACL configuration and state for + control plane traffic."; + + container acl { + description + "Configuration and operational state parameters relating to the + access control list applied to control-plane traffic."; + + list acl-set { + key "set-name type"; + + description + "List of the ACL that is to be applied in the specific ingress + or egress context. The key of the list specifies the type of + traffic to be matched, along with a reference to an ACL + configured in the OpenConfig ACL model within the /acl hierarchy."; + + leaf set-name { + type leafref { + path "../config/set-name"; + } + description + "Reference to the name of the ACL-set to be applied."; + } + + leaf type { + type leafref { + path "../config/type"; + } + description + "Reference to the type of the ACL-set to be applied."; + } + + container config { + description + "Configuration parameters relating to the ACL to be applied."; + + uses system-controlplane-common-acl-config; + } + + uses oc-acl:interface-acl-entries-top; + } + } + } + + grouping system-controlplane-common-acl-config { + description + "Grouping for ACL parameters relating to the system control-plane."; + + leaf set-name { + type leafref { + path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/" + + "oc-acl:config/oc-acl:name"; + } + description + "Reference to the ACL to be applied to traffic + in the specified context (ingress or egress)."; + } + + leaf type { + type leafref { + path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set" + + "[oc-acl:name=current()/../set-name]" + + "/oc-acl:config/oc-acl:type"; + } + description + "Reference to the ACL set type applied to traffic + in the specified context (ingress or egress)."; + } + } + + grouping system-controlplane-qos-classifier-config { + description + "Grouping for configuration parameters relating to QoS classifiers + for the system control-plane."; + + leaf name { + type leafref { + path "/oc-qos:qos/oc-qos:classifiers/oc-qos:classifier/" + + "oc-qos:config/oc-qos:name"; + } + description + "Reference to a classifier that is used to classify traffic + destined to the control-plane of the system. + This classifier determines how packets that match each terms + are classified into forwarding groups, and subsequently into + queues to be forwarded."; + } + } + + grouping system-controlplane-qos-classifier-term-state { + description + "Grouping for control-plane traffic specific leaves required for + each configuration term."; + + leaf id { + // Current location /system/control-plane/ingress/qos/classifier/ + // terms/term/state/id + type leafref { + path "/oc-qos:qos/oc-qos:classifiers/" + + "oc-qos:classifier[oc-qos:name=current()/../../../../config/name]" + + "/oc-qos:terms/oc-qos:term/oc-qos:config/oc-qos:id"; + } + description + "Reference to a term identifier within the configured control-plane + classifier."; + } + } + + grouping system-controlplane-qos-scheduler-config { + description + "Grouping for configuration parameters relating to the QoS scheduler + policy for control-plane traffic."; + + leaf name { + type leafref { + path "/oc-qos:qos/oc-qos:scheduler-policies/oc-qos:scheduler-policy/" + + "oc-qos:config/oc-qos:name"; + } + description + "Reference to a scheduler policy that determines rate limits, or + shaping of packets towards the control-plane."; + } + } + + grouping system-controlplane-qos-scheduler-seq-state { + description + "Grouping for operational state parameters relating to indivual + schedulers within the applied scheduler policy."; + + leaf sequence { + type leafref { + path "/oc-qos:qos/oc-qos:scheduler-policies/oc-qos:scheduler-policy" + + "[oc-qos:name=current()/../../../../config/name]" + + "/oc-qos:schedulers/oc-qos:scheduler/oc-qos:config/" + + "oc-qos:sequence"; + } + description + "Reference to a scheduler within the configured scheduler policy."; + } + + uses oc-qos:qos-scheduler-common-state; + } + + augment "/oc-sys:system" { + description + "Add control-plane configuration and state to the system model."; + + uses system-controlplane-top; + } +} From acd14524556aa4b95692558d0252cfa04c4c5ac5 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Fri, 3 Feb 2023 17:46:57 -0800 Subject: [PATCH 25/86] Vendor-specific control-plane traffic counters (#763) * Add vendor-specific control-plane queue counters * (M) doc/vendor_counter_guide.md - Updated guide on how to augment /components/component/integrated-circuit/control-plane/vendor * (M) release/models/platform/openconfig-platform-pipeline-counters.yang - Add support with a vendor container for queued/dropped packets/bytes - Add support for aggregate counters of each queued/dropped total packets/bytes --------- Co-authored-by: Rob Shakir Co-authored-by: Darren Loher --- doc/vendor_counter_guide.md | 72 ++++++++- ...openconfig-platform-pipeline-counters.yang | 144 +++++++++++++++++- 2 files changed, 209 insertions(+), 7 deletions(-) diff --git a/doc/vendor_counter_guide.md b/doc/vendor_counter_guide.md index 2fccac188..74739edff 100644 --- a/doc/vendor_counter_guide.md +++ b/doc/vendor_counter_guide.md @@ -2,7 +2,7 @@ **Contributors**: roland@arista.com -This document provides the guidelines for the vendor-specific portions of openconfig-pipeline-counters.yang. As implementations differ from vendor to vendor and platform to platform, a process of adding vendor-specific counters will be defined here. +This document provides the guidelines for the vendor-specific portions of openconfig-platform. As implementations differ from vendor to vendor and platform to platform, a process of adding vendor-specific counters will be defined here. ## Usage: Vendor-specific pipeline drop counter @@ -16,7 +16,7 @@ If these aggregate counters are implemented, the sum of the vendor-specific coun If an integrated-circuit has a vendor-specific packet drop counter which cannot differentiate between packet-processing, congestion and adverse drops, then that counter should still be exposed as a vendor-specific packet-processing counter with an appropriate description in the vendor's augmentation. The `packet-processing-aggregate` counter should be incremented in this scenario as expected above. Such a counter is undesirable as it means this hardware cannot meet the goal for identifying adverse packet drops in the ASIC, but it is better not to ruin the fidelity of the `adverse-aggregate` drop counter with noise of intended packet drops. -## Example +## Example: Vendor-specific pipeline drop counter This following is a sample augmentation file. @@ -121,3 +121,71 @@ module: openconfig-platform +--ro acme-ppc:packet-processing-reason-counter-b? oc-yang:counter64 +--ro acme-ppc:packet-processing-reason-counter-c? oc-yang:counter64 ``` + +## Usage: Vendor-specific control-plane traffic counter + +Each implementor should augment `/components/component/integrated-circuit/control-plane-traffic/vendor` with their own `//state` containers. The naming of the platform container may consist of the platform name, ASIC family, or a combination of both platform and ASIC family. Within the state container, it should define vendor-specific counter containers. Each control-plane traffic counter may use the utility grouping `oc-ic:control-plane-traffic-vendor-counters` that provides the queued/dropped leaves. For each counters augmented into `//state`, the sum of the counters should be included in the values of the aggregate leaves: + +- Counters within `.../control-plane-traffic/vendor///state//queued` aggregate into `.../control-plane-traffic/state/total-queued` +- Counters within `.../control-plane-traffic/vendor///state//queued-bytes` aggregate into `.../control-plane-traffic/state/total-queued-bytes` +- Counters within `.../control-plane-traffic/vendor///state//dropped` aggregate into `.../control-plane-traffic/state/total-dropped` +- Counters within `.../control-plane-traffic/vendor///state//dropped-bytes` aggregate into `.../control-plane-traffic/state/total-dropped-bytes` + +If these aggregate counters are implemented, the sum of the vendor-specific counters must match the aggregate counters. + +## Example: Vendor-specific pipeline drop counter + +This following is a sample augmentation file. + +- Vendor: Acme +- Platform: AsicFamily + +### Example YANG Augmentation + +release/platform/acme-asicfamily-control-plane-traffic-augments.yang + +```yang +grouping acme-asicfamily-control-plane-traffic-counters { + container queue-counter-a { + uses oc-ppc:control-plane-traffic-vendor-counters; + } + + container queue-counter-b { + uses oc-ppc:control-plane-traffic-vendor-counters; + } + + container queue-counter-c { + uses oc-ppc:control-plane-traffic-vendor-counters; + } +} + +augment "/components/component/integrated-circuit/pipeline-counters/control-plane-traffic/vendor" { + container acme { + container asic-family { + container state { + uses acme-asicfamily-control-plane-traffic-counters; + } + } + } +} +``` + +Note: Namespaces omitted from `augment ` for brevity + +### Example pyang tree + +```text +module: openconfig-platform + +--rw components + +--rw component* [name] + +--rw integrated-circuit + +--ro oc-ppc:pipeline-counters + +--ro oc-ppc:control-plane-traffic + +--ro oc-ppc:vendor + +--ro acme-ppc:acme + +--ro acme-ppc:asic-family + +--ro acme-ppc:state + +--ro acme-ppc:queue-counter-a + +--ro acme-ppc:queue-counter-b + +--ro acme-ppc:queue-counter-c +``` diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index eae57ffb5..e4bad82a6 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-02-03" { + description + "Add vendor-specific control-plane traffic queue counters"; + reference "0.4.0"; + } + revision "2022-12-01" { description "Add uRPF aggregate drop counter."; @@ -416,6 +422,8 @@ module openconfig-platform-pipeline-counters { } } } + + uses pipeline-control-plane-top; } } @@ -450,7 +458,6 @@ module openconfig-platform-pipeline-counters { "Outgoing bytes towards the line interfaces or fabric from the integrated-circuit interface subsystem block."; } - } grouping pipeline-counters-common-high-low-packets { @@ -1122,7 +1129,7 @@ module openconfig-platform-pipeline-counters { parts where packets may be dropped at any point in time. Providing specific hardware counters provides better visibility into traffic drop. - The recommended useage of this container is to create an augment at + The recommended usage of this container is to create an augment at .../pipeline-counter/drop/vendor that contains additional vendor/platform specific containers. @@ -1135,7 +1142,8 @@ module openconfig-platform-pipeline-counters { } }"; - reference "doc/vendor_counter_guide.md"; + reference + "https://github.com/openconfig/public/tree/master/doc/vendor_counter_guide.md"; } } @@ -1148,7 +1156,8 @@ module openconfig-platform-pipeline-counters { packet-processing should still be exposed as a vendor-specific, packet-processing counter."; - reference "doc/vendor_counter_guide.md"; + reference + "https://github.com/openconfig/public/tree/master/doc/vendor_counter_guide.md"; container adverse { description @@ -1197,6 +1206,131 @@ module openconfig-platform-pipeline-counters { } } + grouping control-plane-traffic-counters-state { + description + "Control plane traffic counter state grouping."; + + leaf queued-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters where the switch has enqueued + traffic related to the control-plane."; + } + + leaf queued-bytes-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters in bytes where the switch has + enqueued traffic related to the control-plane."; + } + + leaf dropped-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters where the switch has dropped + traffic related to the control-plane."; + } + + leaf dropped-bytes-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters in bytes where the switch has + dropped traffic related to the control-plane."; + } + } + + grouping control-plane-traffic-vendor-counters { + description + "A utility grouping for vendors to use when augmenting the vendor-specific + control-plane traffic container."; + + leaf queued { + type oc-yang:counter64; + description + "This counter counts the number of packets enqueued. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/queued-aggregate."; + } + + leaf queued-bytes { + type oc-yang:counter64; + description + "This counter counts the number of bytes enqueued. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/queued-bytes-aggregate."; + } + + leaf dropped { + type oc-yang:counter64; + description + "This counter counts the number of packets dropped. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/dropped-aggregate."; + } + + leaf dropped-bytes { + type oc-yang:counter64; + description + "This counter counts the number of bytes dropped. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/dropped-bytes-aggregate."; + } + } + + grouping pipeline-control-plane-top { + description + "Top-level structural grouping for control-plane traffic counters."; + + container control-plane-traffic { + description + "Counters that are related to traffic destined to the control-plane."; + + container state { + config false; + description + "State container for control-plane traffic counters."; + + uses control-plane-traffic-counters-state; + } + + container vendor { + description + "Counters within these containers are defined and augmented by vendors. + As each ASIC and vendor has different implementation and internal + parts where packets may be dropped at any point in time. Providing + vendor-specific counters provides better visibility into control-plane traffic. + + The recommended usage of this container is to create an augment at + .../pipeline-counter/control-plane-traffic/vendor that contains additional + vendor/platform specific containers. + + e.g. + augment /components/component/integrated-circuit/pipeline-counter/control-plane-traffic/vendor { + container { + container { + container state { + leaf counter-a { + uses control-plane-traffic-vendor-counters; + } + + leaf counter-b { + uses control-plane-traffic-vendor-counters; + } + } + } + } + }"; + + reference + "https://github.com/openconfig/public/tree/master/doc/vendor_counter_guide.md"; + } + } + } + augment "/oc-platform:components/oc-platform:component/oc-platform:integrated-circuit" { description "Add operational state data that corresponds to sub-blocks of an integrated From 0c9fb6b0ab96fdd96bb9e88365abe11e51a11e62 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Wed, 8 Feb 2023 06:41:36 -0800 Subject: [PATCH 26/86] Add a clarification and examples for port breakout mode. (#791) * Add a clarification and examples for port breakout mode. * (M) release/models/platform/openconfig-platform-port.yang - Add clarification that a physical channel is defined to be an electrical channel. - Add examples for the existing cases described in the model, as we as a simple 400G->100G breakout case. --- .../platform/openconfig-platform-port.yang | 102 ++++++++++++++++-- 1 file changed, 91 insertions(+), 11 deletions(-) diff --git a/release/models/platform/openconfig-platform-port.yang b/release/models/platform/openconfig-platform-port.yang index b78bf7903..68f5eabd5 100644 --- a/release/models/platform/openconfig-platform-port.yang +++ b/release/models/platform/openconfig-platform-port.yang @@ -24,7 +24,14 @@ module openconfig-platform-port { "This module defines data related to PORT components in the openconfig-platform model"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "1.0.0"; + + revision "2023-01-19" { + description + "Add clarification of the definition of a physical channel, and + example configurations."; + reference "1.0.0"; + } revision "2021-10-01" { description @@ -129,7 +136,10 @@ module openconfig-platform-port { to the interfaces in this breakout group. This leaf need not be set if there is only one breakout group where all the interfaces are of equal speed and have equal number - of physical channels"; + of physical channels. + + The physical channels referred to by this leaf are + electrical channels towards the transceiver."; } } @@ -154,24 +164,94 @@ module openconfig-platform-port { interfaces of different speeds and different number of physical channels, it can breakout a 400G OSFP port with 8 physical channels (with support for 25G NRZ, 50G PAM4 - and 100G PAM4) in the following configuration: - - 100G + 100G + 200G -> 1 interface with 2 physical channels - and 1 interface with 4 physical channels and 1 interface with + and 100G PAM4) into mixed speed interfaces. Particularly, to + break out into two 100G ports with different modulation, and a 200G + port, a user must configure 1 interface with 2 physical channels + 1 interface with 4 physical channels and 1 interface with 2 physical channels. With this configuration the interface in 1st breakout group would use 50G PAM4 modulation, interface in 2nd breakout group would use 25G NRZ modulation and the interface in 3rd breakout group would use 100G PAM4 modulation This configuration would result in 3 entries in the breakout - groups list. + groups list. The example configuration for this case is shown below: + + { + \"groups\": { + \"group\": [ + { + \"config\": { + \"breakout-speed\": \"SPEED_100GB\", + \"index\": 0, + \"num-breakouts\": 1, + \"num-physical-channels\": 2 + }, + \"index\": 0 + }, + { + \"config\": { + \"breakout-speed\": \"SPEED_100GB\", + \"index\": 1, + \"num-breakouts\": 1, + \"num-physical-channels\": 4 + }, + \"index\": 1 + }, + { + \"config\": { + \"breakout-speed\": \"SPEED_200GB\", + \"index\": 2, + \"num-breakouts\": 1, + \"num-physical-channels\": 2 + }, + \"index\": 2 + } + ] + } + } When a device does not have the capability to break a port into interfaces of different speeds and different number of - physical channels, it would breakout a 400G OSFP port with - 8 physical channels in the following configuration: + physical channels, in order to breakout a 400G OSFP port with + 8 physical channels into 50G breakout ports it would use 8 interfaces + with 1 physical channel each. This would result in 1 entry in the + breakout groups list. The example configuration for this case is + shown below: + + { + \"groups\": { + \"group\": [ + { + \"config\": { + \"breakout-speed\": \"SPEED_50GB\", + \"index\": 0, + \"num-breakouts\": 8, + \"num-physical-channels\": 1 + }, + \"index\": 0 + } + ] + } + } - 50G -> 8 interfaces with 1 physical channel each, this would - result in 1 entry in the breakout groups list."; + Similarly, if a 400G-DR4 interface (8 electrical channels at 50Gbps) + is to be broken out into 4 100Gbps ports, the following configuration + is used: + + { + \"groups\": { + \"group\": [ + { + \"config\": { + \"breakout-speed\": \"SPEED_100GB\", + \"index\": 0, + \"num-breakouts\": 4, + \"num-physical-channels\": 2 + }, + \"index\": 0 + } + ] + } + }"; list group { key "index"; From e786f188883a685d9a4feefecaa543ca6422a2b7 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 8 Feb 2023 10:54:54 -0700 Subject: [PATCH 27/86] Remove incorrect QoS output interface-ref (#756) * Remove incorrect QoS output interface-ref * (M) release/models/qos/openconfig-qos.yang * (M) release/models/qos/openconfig-qos-elements.yang * (M) release/models/qos/openconfig-qos-interfaces.yang * (M) release/models/qos/openconfig-qos-mem-mgmt.yang - Remove incorrect interface-ref under interfaces output container --------- Co-authored-by: Rob Shakir --- release/models/qos/openconfig-qos-elements.yang | 9 ++++++++- release/models/qos/openconfig-qos-interfaces.yang | 9 +++++++-- release/models/qos/openconfig-qos-mem-mgmt.yang | 8 +++++++- release/models/qos/openconfig-qos.yang | 8 +++++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 4e172cbe3..c8967fe46 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,14 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.6.1"; + + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 725f2f6b7..8b27c3b02 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.6.1"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description @@ -877,7 +883,6 @@ submodule openconfig-qos-interfaces { uses qos-interface-output-state; } - uses oc-if:interface-ref; uses qos-interface-classifier-top; uses qos-interface-queue-root-top; uses qos-interface-scheduler-top; diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index f2fe2c39d..d1d84130f 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.6.1"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index c2f995f61..923815d65 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.6.1"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description From d9701d1fa0f50dfb56818f5b440d1ef922051108 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Wed, 8 Feb 2023 10:53:28 -0800 Subject: [PATCH 28/86] Add health variables to components model. (#504) * Add component health indicators. * Add telemetry-on-change annotation to health variables. * (A) release/models/platform/openconfig-platform-healthz.yang - Per the definition of the gnoi.Healthz service in github.com/openconfig/gnoi - indicate whether a component is healthy or unhealthy following a check on the system. This allows the system to signal to external subscribers that the component is not in a healthy state such that further actions can be taken. - Add extension indicating that the health variables should be sent based on when they change. --------- Co-authored-by: Roman Dodin --- release/models/platform/.spec.yml | 2 + .../platform/openconfig-platform-healthz.yang | 130 ++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 release/models/platform/openconfig-platform-healthz.yang diff --git a/release/models/platform/.spec.yml b/release/models/platform/.spec.yml index 61d202c4d..59ffb1c76 100644 --- a/release/models/platform/.spec.yml +++ b/release/models/platform/.spec.yml @@ -15,6 +15,7 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/platform/openconfig-platform-healthz.yang - yang/p4rt/openconfig-p4rt.yang - yang/system/openconfig-alarms.yang - yang/optical-transport/openconfig-terminal-device.yang @@ -34,6 +35,7 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/platform/openconfig-platform-healthz.yang - yang/p4rt/openconfig-p4rt.yang - yang/system/openconfig-alarms.yang - yang/optical-transport/openconfig-terminal-device.yang diff --git a/release/models/platform/openconfig-platform-healthz.yang b/release/models/platform/openconfig-platform-healthz.yang new file mode 100644 index 000000000..48f747f8a --- /dev/null +++ b/release/models/platform/openconfig-platform-healthz.yang @@ -0,0 +1,130 @@ +module openconfig-platform-healthz { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/healthz"; + + prefix "oc-platform-healthz"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + import openconfig-platform { prefix oc-platform; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This model defines health-related variables for components + within the openconfig-platform model (which defines the + the /components hierarchy). It is designed to be used in + conjunction with the gNOI Healthz service (see + https://github.com/openconfig/gnoi/blob/main/healthz/README.md). + + The health variables included in this model are streamed via + telemetry interfaces, where gNOI.Healthz is used to retrieve + further diagnostic and debugging informaton from a network + device."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-01-23" { + description + "Initial healthz variable revision"; + reference "0.1.0"; + } + + grouping platform-health-top { + description + "Grouping containing health-related parameters."; + + container healthz { + description + "The health of the component. The paramaters within this + container indicate the status of the component beyond whether + it is operationally up or down. When a signal is received + that a component is in an unhealthy state the gNOI.Healthz + service can be used to retrieve further diagnostic information + relating to the component. + + The contents of this directory relate only to the specific + component that it is associated with. In the case that child + components become unhealthy and this causes a parent component + to be unhealthy, the new unhealthy status should be reported at + both components, such that an interested system can take the + relevant actions (e.g., retrieve the Healthz output, or + apply mitigation actions)."; + reference + "https://github.com/openconfig/gnoi/tree/main/healthz"; + + container state { + config false; + description + "Operational state parameters relating to component health."; + uses platform-health-state; + } + } + } + + grouping platform-health-state { + description + "Operational state parameters relating to a platform component's + health."; + + leaf status { + type enumeration { + enum UNSPECIFIED { + description + "The component's health status has not yet been checked + by the system."; + } + + enum HEALTHY { + description + "The component is in a HEALTHY state, and is operating + within the expected parameters."; + } + + enum UNHEALTHY { + description + "The component is in a unhealthy state, it is not + performing the function expected of it."; + } + } + description + "The status of the component, indicating its current health."; + oc-ext:telemetry-on-change; + } + + leaf last-unhealthy { + type oc-types:timeticks64; + description + "The time at which the component as last observed to be unhealthy + represented as nanoseconds since the Unix epoch. Unhealthy is defined + as the component being in a state other than HEALTHY."; + oc-ext:telemetry-on-change; + } + + leaf unhealthy-count { + type uint64; + description + "The number of status checks that have determined this component + to be in an unhealthy state. This counter should be incremented + when the component transitions from the HEALTHY to UNHEALTHY + state such that the value reflects the number of times the + component has become unhealthy."; + oc-ext:telemetry-on-change; + } + } + + augment "/oc-platform:components/oc-platform:component" { + description + "Augment healthz information into the /components/component hierarchy."; + + uses platform-health-top; + } +} From 6ca2eed2f5176ab12174cfb5236c1246b9bee377 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Fri, 10 Feb 2023 15:42:06 -0800 Subject: [PATCH 29/86] Fix linting issues in openconfig-platform-transceiver.yang (#810) --- .../openconfig-platform-transceiver.yang | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index a79585f3d..cd460ce3b 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -66,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "0.10.1"; + + revision "2023-02-10" { + description + "Fixing linting issues."; + reference "0.10.1"; + } revision "2023-01-12" { description @@ -430,17 +436,17 @@ module openconfig-platform-transceiver { "Enclosing container for transceiver alarm thresholds."; list threshold { - config false; key "severity"; + config false; description "List of transceiver alarm thresholds, indexed by alarm severity."; leaf severity { - config false; type leafref { path "../state/severity"; } + config false; description "The severity applied to the group of thresholds. An implementation's highest severity threshold @@ -744,52 +750,52 @@ module openconfig-platform-transceiver { "The type of alarm to which the thresholds apply."; } leaf laser-temperature-upper { - description - "The upper temperature threshold for the laser temperature sensor."; type decimal64 { fraction-digits 1; } units celsius; + description + "The upper temperature threshold for the laser temperature sensor."; } leaf laser-temperature-lower { - description - "The lower temperature threshold for the laser temperature sensor."; type decimal64 { fraction-digits 1; } units celsius; + description + "The lower temperature threshold for the laser temperature sensor."; } leaf output-power-upper{ - description - "The upper power threshold for the laser output power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The upper power threshold for the laser output power."; } leaf output-power-lower{ - description - "The lower power threshold for the laser output power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The lower power threshold for the laser output power."; } leaf input-power-upper{ - description - "The upper power threshold for the laser input power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The upper power threshold for the laser input power."; } leaf input-power-lower{ - description - "The lower power threshold for the laser input power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The lower power threshold for the laser input power."; } } From 268f8390f0aae5732c14ef65d3288f9e96b02f70 Mon Sep 17 00:00:00 2001 From: Likai Liu Date: Tue, 14 Feb 2023 15:10:04 -0500 Subject: [PATCH 30/86] openconfig-transport-types.yang add ETH_100GBASE_DR PMD type (#808) * Add ETH_100GBASE_DR (500m, interops with 100G-FR) --- .../openconfig-transport-types.yang | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index a596ba13e..494c67216 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.17.1"; + oc-ext:openconfig-version "0.18.1"; + + revision "2023-02-08" { + description + "Add ETH_100GBASE_DR PMD type"; + reference "0.18.1"; + } revision "2022-12-05" { description @@ -1051,6 +1057,11 @@ module openconfig-transport-types { description "Ethernet compliance code: 100GBASE_FR"; } + identity ETH_100GBASE_DR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_DR"; + } + identity ETH_400GBASE_ZR { base ETHERNET_PMD_TYPE; description "Ethernet compliance code: 400GBASE_ZR"; From 2de10a479bd0f537109108fa12bc3790aac01548 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 16 Feb 2023 22:07:06 -0800 Subject: [PATCH 31/86] Add support for AND/OR for flags; built-in flag match criteria. (#796) * Add support for AND/OR for flags; built-in flag match criteria. * (M) release/models/acl/openconfig-packet-match.yang - Forked from PR #758 by @sourcequench. - Adds support for a details match mode that allows explicit flags or builtin aliases to be used as a transport details match criteria. - Adds support for an ANY/ALL match specification for flags. - Adds support for builtins like 'TCP_ESTABLISHED' that are commonly supported. --- .../models/acl/openconfig-packet-match.yang | 99 ++++++++++++++++++- 1 file changed, 96 insertions(+), 3 deletions(-) diff --git a/release/models/acl/openconfig-packet-match.yang b/release/models/acl/openconfig-packet-match.yang index 4b87cdea1..a1fcc88ac 100644 --- a/release/models/acl/openconfig-packet-match.yang +++ b/release/models/acl/openconfig-packet-match.yang @@ -28,7 +28,15 @@ module openconfig-packet-match { field is omitted from a match expression, the effect is a wildcard ('any') for that field."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2023-01-27" { + description + "Update the mechanism to match detailed transport flags, + adding means for AND/OR in the explicitly specified flags + and commonly supported match aliases."; + reference "2.0.0"; + } revision "2022-06-01" { description @@ -462,12 +470,97 @@ module openconfig-packet-match { to match the destination port"; } - leaf-list tcp-flags { + leaf detail-mode { + type enumeration { + enum EXPLICIT { + description + "Specifies that the mode for matching details at the transport + layer is to explicitly match transport flags."; + } + enum BUILTIN { + description + "Specifies that the mode for matching details at the transport + layer is to using implementation built-ins which may map to + multiple flags."; + } + } + description + "Mode that is used for matching detailed fields at the transport + layer. When EXPLICIT is specified, the implementation should + match based on the explicit flags that are specified in the + corresponding leaf. When BUILTIN is specified, the implementation + must expand the contents of the corresponding leaf to the flags + and/or fields that match the pre-defined built-in values."; + } + + leaf explicit-detail-match-mode { + type enumeration { + enum ANY { + description + "Matches of the explicit-detail-flags field are treated as + an OR between the values in the list."; + } + enum ALL { + description + "Matches of the explicit-details-flags field are treated + as an AND of the values in the list."; + } + } + description + "Specifies how the contents of the explicit-details-flags list + are to be treated. ANY implies that any of the flags may match, + where ALL indicates that all the flags must be matched."; + when "../detail-mode = 'EXPLICIT'" { + description + "This leaf is only valid when the mode for matches is specified to + be explicit."; + } + } + + leaf-list explicit-tcp-flags { type identityref { base oc-pkt-match-types:TCP_FLAGS; } description - "List of TCP flags to match"; + "An explicit list of the TCP flags that are to be matched. The + mechanism for the match is specified by the explicit-detail-match-mode + leaf."; + when "../detail-mode = 'EXPLICIT'" { + description + "This leaf is only valid when the mode for matches is specified to + be explicit."; + } + } + + leaf builtin-detail { + type enumeration { + enum TCP_INITIAL { + description + "Matches the first packet of a TCP session based on a packet + not having the ACK flag set, and having the SYN flag set."; + } + enum TCP_ESTABLISHED { + description + "Matches an established TCP session based on a packet having + the ACK or RST flags set. This does not match the first + packet."; + } + enum FRAGMENT { + description + "Matches non-zero values of the fragment-offset field, indicating + this packet is a follow up to a fragmented datagram."; + } + } + description + "Specifies a built-in (alias) for a match condition that matches + multiple flags, or specifies particular logic as to the flag matches + to be implemented. This leaf is only valid when the detail-match-mode + leaf is BUILTIN."; + when "../detail-mode = 'BUILTIN'" { + description + "This leaf is only valid when the mode for matches is specified to + be builtin."; + } } } From 9182a9baa9c77af93d73e77733316decb7807c63 Mon Sep 17 00:00:00 2001 From: steve ulrich Date: Fri, 17 Feb 2023 11:47:52 -0600 Subject: [PATCH 32/86] modify /interfaces/interface/loopback-mode to allow specification of loopback-mode-type (#731) * changed loopback-mode from boolean to optical-types:loopback modes which define the network vs. local facing loopback modes. --- .../interfaces/openconfig-interfaces.yang | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index a91d43980..e6f061746 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -12,6 +12,7 @@ module openconfig-interfaces { import openconfig-yang-types { prefix oc-yang; } import openconfig-types { prefix oc-types; } import openconfig-extensions { prefix oc-ext; } + import openconfig-transport-types { prefix oc-opt-types; } // meta organization "OpenConfig working group"; @@ -50,7 +51,13 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "3.0.0"; + + revision "2022-10-25" { + description + "change loopback-mode to align with available modes"; + reference "3.0.0"; + } revision "2021-04-06" { description @@ -390,12 +397,11 @@ module openconfig-interfaces { } leaf loopback-mode { - type boolean; - default false; + type oc-opt-types:loopback-mode-type; description - "When set to true, the interface is logically looped back, - such that packets that are forwarded via the interface - are received on the same interface."; + "Sets the loopback type on the interface. Setting the + mode to something besides NONE activates the loopback in + the specified mode."; } uses interface-common-config; From 839d68f61d0d93eb9843bafe6ce9465a1249b73d Mon Sep 17 00:00:00 2001 From: frank feng Date: Sat, 18 Feb 2023 03:29:16 +0800 Subject: [PATCH 33/86] add isis max-ecmp-paths for address family (#777) * Change Scope Add isis max-ecmp-paths for address family. --- release/models/isis/openconfig-isis-lsp.yang | 8 ++++++- .../models/isis/openconfig-isis-routing.yang | 21 ++++++++++++++++++- release/models/isis/openconfig-isis.yang | 8 ++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 2796a79ab..2839cab52 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-04" { + description + "Add max ecmp paths for address family."; + reference "1.2.0"; + } revision "2022-09-20" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 7b045b613..16ed143de 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-04" { + description + "Add max ecmp paths for address family."; + reference "1.2.0"; + } revision "2022-09-20" { description @@ -249,6 +255,17 @@ submodule openconfig-isis-routing { description "ISIS metric value(default=10)."; } } + grouping isis-ecmp-config { + description + "This grouping defines ISIS ecmp configuration."; + + leaf max-ecmp-paths { + type uint8; + description + "ISIS max-paths count."; + } + + } grouping isis-afi-safi-list { description @@ -284,6 +301,7 @@ submodule openconfig-isis-routing { uses isis-afi-safi-config; uses isis-metric-config; uses rt-admin-config; + uses isis-ecmp-config; } container state { @@ -294,6 +312,7 @@ submodule openconfig-isis-routing { uses isis-afi-safi-config; uses isis-metric-config; uses rt-admin-config; + uses isis-ecmp-config; } uses isis-mt-list; diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index e1601c77d..53f81b0c8 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-04" { + description + "Add max ecmp paths for address family."; + reference "1.2.0"; + } revision "2022-09-20" { description From b4d513d9774949a6fdcedfceb616beb2ea7460d2 Mon Sep 17 00:00:00 2001 From: Donald Hunter Date: Fri, 17 Feb 2023 23:04:06 +0000 Subject: [PATCH 34/86] network-instance - add prefixes to identity values in when statements (#804) * net-inst/route-limits - add namespace prefix to when statement * netinst/connection-points - add namespace prefix to when statements --- .../openconfig-network-instance-l2.yang | 8 +++++++- .../openconfig-network-instance.yang | 16 +++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index f15f747ae..73f24045d 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.0.0"; + oc-ext:openconfig-version "4.0.1"; + + revision "2023-02-07" { + description + "Add prefixes to identity values in when statements"; + reference "4.0.1"; + } revision "2022-12-21" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 42de768f8..41b2705d3 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.0.0"; + oc-ext:openconfig-version "4.0.1"; + + revision "2023-02-07" { + description + "Add prefixes to identity values in when statements"; + reference "4.0.1"; + } revision "2022-12-21" { description @@ -526,7 +532,7 @@ module openconfig-network-instance { } uses oc-ni-l3:l3ni-route-limit-structural { - when "./config/type = 'L3VRF' or ./config/type = 'L2L3'" { + when "./config/type = 'oc-ni-types:L3VRF' or ./config/type = 'oc-ni-types:L2L3'" { description "Layer 3 VRF or L2/L3 instances can have route limits applied. This is not supported for the default instance."; @@ -684,7 +690,7 @@ module openconfig-network-instance { } container local { - when "../config/type = 'LOCAL'" { + when "../config/type = 'oc-ni-types:LOCAL'" { description "Only include the local configuration when the endpoint is specified to be local to @@ -712,7 +718,7 @@ module openconfig-network-instance { } container remote { - when "../config/type = 'REMOTE'" { + when "../config/type = 'oc-ni-types:REMOTE'" { description "Only include the remote configuration when the endpoint is specified to be remote to @@ -739,7 +745,7 @@ module openconfig-network-instance { } } container vxlan { - when "../config/type = 'VXLAN'" { + when "../config/type = 'oc-ni-types:VXLAN'" { description "Only include the vxlan configuration when the endpoint is specified to be vxlan"; From bf3876033e1d308516e6825d485258c1dc4b2199 Mon Sep 17 00:00:00 2001 From: aredmon8551 <87078055+aredmon8551@users.noreply.github.com> Date: Fri, 17 Feb 2023 19:16:37 -0500 Subject: [PATCH 35/86] Add support for defining a queue identifier under queues. (#772) * Add support for defining a queue identifier under queues. * (M) qos/openconfig-qos-interfaces.yang * (M) qos/openconfig-qos-elements.yang * (M) qos/openconfig-qos.yang --- release/models/qos/openconfig-qos-elements.yang | 13 ++++++++++++- release/models/qos/openconfig-qos-interfaces.yang | 8 +++++++- release/models/qos/openconfig-qos-mem-mgmt.yang | 8 +++++++- release/models/qos/openconfig-qos.yang | 8 +++++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index c8967fe46..93a6fbfcc 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,8 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; + oc-ext:openconfig-version "0.8.0"; - oc-ext:openconfig-version "0.7.0"; + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description @@ -573,6 +578,12 @@ submodule openconfig-qos-elements { description "User-defined name of the queue"; } + leaf queue-id { + type uint8; + description + "An optional identifier which may be required by some hardware to map + the named queue to a hardware queue"; + } } grouping qos-queue-state { diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 8b27c3b02..7552dc65b 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index d1d84130f..5f777d082 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 923815d65..70622500f 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description From 78498dab16cb9f3d593ecb3a5b9abb94d4b0585c Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 21 Feb 2023 20:58:51 -0800 Subject: [PATCH 36/86] Add ipv6 link local address configuration (#793) * add ipv6-address-type --- .../models/interfaces/openconfig-if-ip.yang | 19 ++++++++++++- .../models/types/openconfig-inet-types.yang | 28 ++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index dee5d568d..6bb2354b9 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,13 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "3.2.0"; + + revision "2023-02-06" { + description + "Add ipv6 link-local configuration."; + reference "3.2.0"; + } revision "2022-11-09" { description @@ -514,6 +520,17 @@ module openconfig-if-ip { description "The length of the subnet prefix."; } + + leaf type { + type oc-inet:ipv6-address-type; + default GLOBAL_UNICAST; + description + "Specifies the explicit type of the IPv6 address being assigned + to the subinterface. By default, addresses are assumed to be + global unicast. Where a link-local address is to be explicitly + configured, this leaf should be set to LINK_LOCAL."; + } + } grouping ipv6-address-state { diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 899e82d32..3d3ed425e 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -31,7 +31,13 @@ module openconfig-inet-types { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-02-06" { + description + "Add ipv6-link-local and ipv6-address-type"; + reference "0.6.0"; + } revision "2021-08-17" { description @@ -329,6 +335,26 @@ module openconfig-inet-types { RFC 4001: Textual Conventions for Internet Network Addresses"; } + typedef ipv6-address-type { + type enumeration { + enum GLOBAL_UNICAST { + description + "The IPv6 address is a global unicast address type and must be in + the format defined in RFC 4291 section 2.4."; + } + enum LINK_LOCAL_UNICAST { + description + "The IPv6 address is a Link-Local unicast address type and must be + in the format defined in RFC 4291 section 2.4."; + } + } + description + "The value represents the type of IPv6 address"; + reference + "RFC 4291: IP Version 6 Addressing Architecture + section 2.5"; + } + typedef domain-name { type string { length "1..253"; From c14ff5cbdb4fce74673869e918a20d5308575604 Mon Sep 17 00:00:00 2001 From: Donald Hunter Date: Thu, 23 Feb 2023 02:06:10 +0000 Subject: [PATCH 37/86] vlan - Remove prefixes from enum values in condition clauses (#800) Signed-off-by: Donald Hunter --- release/models/vlan/openconfig-vlan.yang | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/release/models/vlan/openconfig-vlan.yang b/release/models/vlan/openconfig-vlan.yang index 0b29cc0dd..905d48150 100644 --- a/release/models/vlan/openconfig-vlan.yang +++ b/release/models/vlan/openconfig-vlan.yang @@ -26,7 +26,13 @@ module openconfig-vlan { "This module defines configuration and state variables for VLANs, in addition to VLAN parameters associated with interfaces"; - oc-ext:openconfig-version "3.2.1"; + oc-ext:openconfig-version "3.2.2"; + + revision "2023-02-07" { + description + "Remove prefix from enums in when statements"; + reference "3.2.2"; + } revision "2021-07-28" { description @@ -176,7 +182,7 @@ module openconfig-vlan { } leaf native-vlan { - when "../interface-mode = 'oc-vlan-types:TRUNK'" { + when "../interface-mode = 'TRUNK'" { description "Native VLAN is valid for trunk mode interfaces"; } @@ -190,7 +196,7 @@ module openconfig-vlan { } leaf access-vlan { - when "../interface-mode = 'oc-vlan-types:ACCESS'" { + when "../interface-mode = 'ACCESS'" { description "Access VLAN assigned to the interfaces"; } @@ -200,7 +206,7 @@ module openconfig-vlan { } leaf-list trunk-vlans { - when "../interface-mode = 'oc-vlan-types:TRUNK'" { + when "../interface-mode = 'TRUNK'" { description "Allowed VLANs may be specified for trunk mode interfaces."; From b539cc04d8b973a2ebb66189c4cd1114dec53d10 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Fri, 3 Mar 2023 12:40:54 -0800 Subject: [PATCH 38/86] Add missing state container to control-plane ACL. (#824) * Add missing state container to control-plane ACL. * (M) release/models/system/openconfig-system-controlplane.yang - Add a missing `state` container to system control plane model. --- .../openconfig-system-controlplane.yang | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/release/models/system/openconfig-system-controlplane.yang b/release/models/system/openconfig-system-controlplane.yang index fee5fd728..c0adfd006 100644 --- a/release/models/system/openconfig-system-controlplane.yang +++ b/release/models/system/openconfig-system-controlplane.yang @@ -45,15 +45,20 @@ module openconfig-system-controlplane { The specified control-plane ACL is applied to traffic received by the control-plane of the system."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-03-03" { + description + "Add missing state container to ACL."; + reference "0.2.0"; + } + revision "2021-08-02" { - description - "Initial revision."; - reference - "0.1.0"; + description + "Initial revision."; + reference "0.1.0"; } grouping system-controlplane-top { @@ -249,6 +254,13 @@ module openconfig-system-controlplane { uses system-controlplane-common-acl-config; } + container state { + config false; + description + "Operational state parameters relating to the ACL to be applied."; + uses system-controlplane-common-acl-config; + } + uses oc-acl:interface-acl-entries-top; } } From daecc74732074504c03fc089e9bb7622158fa3be Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 7 Mar 2023 13:08:01 -0800 Subject: [PATCH 39/86] Deprecate global per-level 'enabled' leaf for IS-IS. (#794) * Remove global per-level 'enabled' leaf for IS-IS. * (M) release/models/isis/openconfig-isis.yang - Remove the per-level IS-IS enabled leaf within the global configuration, since it is duplicated by the level-capability leaf. See #97. * (M) release/models/isis/openconfig-isis-{routing,lsp}.yang - Bump model version to match master module. --- release/models/isis/openconfig-isis-lsp.yang | 9 ++++++- .../models/isis/openconfig-isis-routing.yang | 9 ++++++- release/models/isis/openconfig-isis.yang | 26 ++++++++++++++++--- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 2839cab52..e50f48b15 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-25" { + description + "Per-level global enabled configuration removed, since it duplicates + the level-capability leaf."; + reference "1.3.0"; + } revision "2023-01-04" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 16ed143de..7556ca2a5 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,14 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-25" { + description + "Per-level global enabled configuration removed, since it duplicates + the level-capability leaf."; + reference "1.3.0"; + } revision "2023-01-04" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 53f81b0c8..b36f2ea44 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,14 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-25" { + description + "Per-level global enabled configuration removed, since it duplicates + the level-capability leaf."; + reference "1.3.0"; + } revision "2023-01-04" { description @@ -62,7 +69,7 @@ module openconfig-isis { reference "1.2.0"; } - revision "2022-09-20" { + revision "2022-09-20" { description "Add CSNP enable to IS-IS global configuration."; reference "1.1.0"; @@ -295,6 +302,19 @@ module openconfig-isis { } } + grouping admin-config-deprecated { + description + "Re-usable grouping for the enabled leaf in contexts where it is deprecated."; + + leaf enabled { + type boolean; + status deprecated; + description + "Formerly this leaf was used to enable or disable the functionality + within the context specified. This leaf is DEPRECATED."; + } + } + grouping isis-authentication-check-config { description "This grouping defines ISIS authentication check."; @@ -1334,7 +1354,7 @@ module openconfig-isis { description "This container defines ISIS level based configuration."; - uses admin-config; + uses admin-config-deprecated; uses isis-base-level-config; uses isis-metric-style-config; uses isis-authentication-check-config; From 29879d8188315d0024314ff5b6009adc7e7cc591 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Wed, 8 Mar 2023 20:59:48 -0800 Subject: [PATCH 40/86] Fix other spec.yml issues for online documentation. (#828) /system/control-plane-traffic/... and other paths --- release/models/network-instance/.spec.yml | 2 ++ release/models/optical-transport/.spec.yml | 2 ++ release/models/system/.spec.yml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 40c3d4f8a..615cf82ef 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -7,6 +7,8 @@ - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang + - yang/segment-routing/openconfig-segment-routing.yang + - yang/rib/openconfig-rib-bgp-ext.yang build: - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang diff --git a/release/models/optical-transport/.spec.yml b/release/models/optical-transport/.spec.yml index d0b990b11..bff97f857 100644 --- a/release/models/optical-transport/.spec.yml +++ b/release/models/optical-transport/.spec.yml @@ -49,6 +49,8 @@ - yang/optical-transport/openconfig-optical-attenuator.yang run-ci: true - name: openconfig-channel-monitor + docs: + - yang/optical-transport/openconfig-channel-monitor.yang build: - yang/optical-transport/openconfig-channel-monitor.yang run-ci: true diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index b4009f87e..f66b1b875 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -12,6 +12,8 @@ - yang/system/openconfig-alarms.yang - yang/system/openconfig-license.yang - yang/openflow/openconfig-openflow.yang + - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-controlplane.yang build: - yang/system/openconfig-system.yang run-ci: true From 53e66659f5ca430f89d707b1be52a9649e4b86b5 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Fri, 10 Mar 2023 12:52:05 -0800 Subject: [PATCH 41/86] Allow `ethernet` parameters to be used for LAGs. (#830) * (M) release/models/interfaces/openconfig-if-ethernet.yang - Allow configuration and state parameters to be used for aggregate LAGs. --- .../interfaces/openconfig-if-ethernet.yang | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ethernet.yang b/release/models/interfaces/openconfig-if-ethernet.yang index 803e7f93f..3991923f6 100644 --- a/release/models/interfaces/openconfig-if-ethernet.yang +++ b/release/models/interfaces/openconfig-if-ethernet.yang @@ -24,7 +24,14 @@ module openconfig-if-ethernet { "Model for managing Ethernet interfaces -- augments the OpenConfig model for interface configuration and state."; - oc-ext:openconfig-version "2.12.2"; + oc-ext:openconfig-version "2.13.0"; + + revision "2023-03-10" { + description + "Allow Ethernet configuration parameters to be + used for aggregate (LAG) interfaces."; + reference "2.13.0"; + } revision "2022-04-20" { description @@ -669,9 +676,12 @@ module openconfig-if-ethernet { interfaces model"; uses ethernet-top { - when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" { - description "Additional interface configuration parameters when - the interface type is Ethernet"; + when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd' or " + + "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag'" { + description + "Additional interface configuration parameters when + the interface type is Ethernet, or the interface is an aggregate + interface."; } } } From d4424740e572c3b346698d4877c149cf018f1b1b Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 16 Mar 2023 09:11:23 -0700 Subject: [PATCH 42/86] Clarify IS-IS instance identifiers per #710. (#816) * Clarify IS-IS instance identifiers per #710. * (M) release/models/isis/openconfig-isis.yang * (M) release/models/isis/openconfig-isis-routing.yang * (M) release/models/isis/openconfig-isis-lsp.yang - Deprecate the `instance` leaf that was ambiguous as to whether this is the name of the instance, or the instance identifier. - Add a new uint16 instance-identifier leaf. --- release/models/isis/openconfig-isis-lsp.yang | 10 ++++++- .../models/isis/openconfig-isis-routing.yang | 11 ++++++- release/models/isis/openconfig-isis.yang | 29 +++++++++++++++++-- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index e50f48b15..a045d4c78 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,15 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2023-02-22" { + description + "Deprecate the instance leaf, and add a new instance-id leaf + that indicates the value to be used in the Instance Identifier + TLV."; + reference "1.4.0"; + } revision "2023-01-25" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 7556ca2a5..d0d465878 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,12 +20,21 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2023-02-22" { + description + "Deprecate the instance leaf, and add a new instance-id leaf + that indicates the value to be used in the Instance Identifier + TLV."; + reference "1.4.0"; + } revision "2023-01-25" { description "Per-level global enabled configuration removed, since it duplicates the level-capability leaf."; + reference "1.3.0"; } diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index b36f2ea44..6abdadc3c 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,15 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2023-02-22" { + description + "Deprecate the instance leaf, and add a new instance-id leaf + that indicates the value to be used in the Instance Identifier + TLV."; + reference "1.4.0"; + } revision "2023-01-25" { description @@ -207,14 +215,29 @@ module openconfig-isis { description "This grouping defines global configuration options for ISIS router."; - // multi-instance leaf instance { type string; default 0; description - "ISIS Instance."; + "ISIS Instance. This leaf has been deprecated. The instance name + is specified within the + /network-instances/network-instance/protocols/protocol/config/name + leaf (list key). If a user requires a specific instance identifier + used in the Instance Identifier TLV to be configured the instance-id + leaf is used."; + status deprecated; } + leaf instance-id { + type uint16; + description + "When specified, this leaf explicitly indicates the instance identifier + that is to be used for the IS-IS instance. The value should be included + in the Instance Identifier (IID) TLV."; + reference "RFC6822: IS-IS Multi-Instance"; + } + + leaf-list net { type oc-isis-types:net; description From 542f76e66f7bfc454421ba473bf764129386ea02 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 20 Mar 2023 11:04:31 -0700 Subject: [PATCH 43/86] Add `default false` to deprecated isis global per-level enabled leaf (#834) * Add `default false` to deprecated isis global per-level enabled leaf --- release/models/isis/openconfig-isis-lsp.yang | 9 ++++++++- release/models/isis/openconfig-isis-routing.yang | 9 ++++++++- release/models/isis/openconfig-isis.yang | 10 +++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index a045d4c78..aded4a7aa 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "1.4.1"; + + revision "2023-03-20" { + description + "Per-level global enabled configuration default false re-added to keep + backward compatibility."; + reference "1.4.1"; + } revision "2023-02-22" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index d0d465878..662e07126 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,14 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "1.4.1"; + + revision "2023-03-20" { + description + "Per-level global enabled configuration default false re-added to keep + backward compatibility."; + reference "1.4.1"; + } revision "2023-02-22" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 6abdadc3c..ae2e54e1d 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,14 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "1.4.1"; + + revision "2023-03-20" { + description + "Per-level global enabled configuration default false re-added to keep + backward compatibility."; + reference "1.4.1"; + } revision "2023-02-22" { description @@ -331,6 +338,7 @@ module openconfig-isis { leaf enabled { type boolean; + default false; status deprecated; description "Formerly this leaf was used to enable or disable the functionality From 4ff1293f8bc2641535e60d92f335847403ceb29e Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 18:50:08 -0700 Subject: [PATCH 44/86] Test new oc-pyang rule. --- cloudbuild.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index f59185aeb..0c55f1ebc 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -1,3 +1,6 @@ +substitutions: + _OC_PYANG_VERSION: state-container-dne + steps: ############### GET CI REPO ############### # Decrypt the file containing the key @@ -48,7 +51,8 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v8*' | sort -V | tail -1) + #branch=$(git tag -l 'v8*' | sort -V | tail -1) + branch=ocpyang-version #FIXME: remove git checkout $branch volumes: - name: 'ssh' From 04ca9c215040dc5487163e7556557d7058ae2389 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 19:09:23 -0700 Subject: [PATCH 45/86] Add env var --- cloudbuild.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 0c55f1ebc..6bfe0a567 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -205,6 +205,7 @@ steps: - 'COMMIT_SHA=$COMMIT_SHA' - '_REPO_SLUG=$_REPO_SLUG' - 'BRANCH_NAME=$BRANCH_NAME' + - '_OC_PYANG_VERSION=$_OC_PYANG_VERSION' volumes: - name: 'gopath' path: /go From 43b5475460b87c0684548423be843221591cc14c Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 19:19:23 -0700 Subject: [PATCH 46/86] Trigger Build From 1ce8eae0fd2206b811ea71ecbc4d8904b7be9deb Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 19:59:21 -0700 Subject: [PATCH 47/86] Trigger Build From 0cb0a4c9e7924d9bbc8f98e23341a1ef7c66c37c Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 20:08:26 -0700 Subject: [PATCH 48/86] Fix WiFi model --- .../models/wifi/openconfig-access-points.yang | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index 1b60fd1ac..3aa5bfc94 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -27,7 +27,14 @@ module openconfig-access-points { "This module defines the top level WiFi Configurations for a list of Access Points."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2023-03-22" { + description + "Mirror /access-points/access-point/config/hostname in a state + container."; + reference "1.1.0"; + } revision "2021-08-02" { description @@ -189,6 +196,13 @@ module openconfig-access-points { uses access-points-common-config; } + container state { + description + "State items at the global, Access Point level."; + + uses access-points-common-config; + } + uses wifi-phy:radio-top; uses wifi-mac:ssid-top; uses oc-sys:system-top; From 94abbaea269a38842e78f9b0aa79f89b45e131bb Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 20:11:30 -0700 Subject: [PATCH 49/86] config false --- release/models/wifi/openconfig-access-points.yang | 1 + 1 file changed, 1 insertion(+) diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index 3aa5bfc94..eb6241194 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -197,6 +197,7 @@ module openconfig-access-points { } container state { + config false; description "State items at the global, Access Point level."; From 66d905660cfa9fc12d5550c15ab9bae663e34ef5 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 23 Mar 2023 11:11:19 -0700 Subject: [PATCH 50/86] Move CI to version 9 --- cloudbuild.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 6bfe0a567..655ac25dc 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -51,8 +51,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - #branch=$(git tag -l 'v8*' | sort -V | tail -1) - branch=ocpyang-version #FIXME: remove + branch=$(git tag -l 'v9*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' From f95e1ade3b3263e5ae5b9db7e95e9eaf6e20f89b Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 23 Mar 2023 11:30:30 -0700 Subject: [PATCH 51/86] oc-pyang use master branch --- cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 655ac25dc..3c077efc6 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -1,5 +1,5 @@ substitutions: - _OC_PYANG_VERSION: state-container-dne + _OC_PYANG_VERSION: master steps: ############### GET CI REPO ############### From deb8b942544a7bd9f3a442b277942dc2621ae4cf Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 27 Mar 2023 13:55:54 -0700 Subject: [PATCH 52/86] Update GitHub SSH public key (#838) --- cloudbuild.yaml | 1 + known_hosts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 3c077efc6..7ba05e292 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -18,6 +18,7 @@ steps: - name: 'ssh' path: /root/.ssh # Set up git with key and domain +# See https://cloud.google.com/build/docs/access-github-from-build#add_the_public_ssh_key_to_known_hosts - name: 'gcr.io/cloud-builders/git' entrypoint: 'bash' args: diff --git a/known_hosts b/known_hosts index 1bae52b89..d88529723 100644 --- a/known_hosts +++ b/known_hosts @@ -1 +1 @@ -github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== +github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= From dec7eef990c86841741d47426ea23e9812439656 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 28 Mar 2023 16:52:05 -0700 Subject: [PATCH 53/86] Fix bgp-set-med-type (#839) * clarify intended use of bgp-set-med-type --- release/models/bgp/openconfig-bgp-policy.yang | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index c864959b0..05ae1bacb 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -28,7 +28,13 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "6.1.0"; + oc-ext:openconfig-version "6.1.1"; + + revision "2023-03-27" { + description + "Clarify bgp-set-med-type description"; + reference "6.1.1"; + } revision "2022-05-24" { description @@ -172,8 +178,9 @@ module openconfig-bgp-policy { description "Type definition for specifying how the BGP MED can be set in BGP policy actions. The three choices are to set - the MED directly, increment/decrement using +/- notation, - and setting it to the IGP cost (predefined value)."; + the MED directly using the uint32 type or increment/decrement + using +/- notation in the string type or setting it to + the IGP cost using the enum (predefined value)."; } // grouping statements From 47344833ac7b24a350e58bb46ff1f9fba50db17f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Fri, 31 Mar 2023 09:17:01 +0900 Subject: [PATCH 54/86] Add control word support for EVPN (#792) * Add control word support for EVPN --- .../network-instance/openconfig-evpn.yang | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index 49301ebb3..93c18972c 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,13 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.4.0"; + + revision "2023-01-24" { + description + "Add control word support"; + reference "0.4.0"; + } revision "2021-06-28" { description @@ -725,6 +731,17 @@ module openconfig-evpn { reference "RFC 7432: BGP MPLS-Based Ethernet VPN page-18"; } + + leaf control-word-enabled { + type boolean; + description + "When true, the control word is signaled and sent."; + reference + "RFC8214 Virtual Private Wire Service Support + in Ethernet VPN + draft-ietf-bess-rfc7432bis-05 BGP MPLS-Based + Ethernet VPN"; + } } grouping evpn-import-export-config { From 3da34100f993860429989d83a90fff00078d6281 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 31 Mar 2023 15:16:43 -0700 Subject: [PATCH 55/86] openconfig maintainers may update doc folder (#845) --- .github/CODEOWNERS | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1788349d0..c04ec440b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,6 +4,11 @@ * @aashaikh @robshakir @dplore # the release/models directory (all YANG content) -# is maintained by the public-writers OpenConfig team. +# and doc directory is maintained by the public-writers +# OpenConfig team. +/doc @openconfig/public-writers /release/models/ @openconfig/public-writers + +# subfolders may have additional codeowners who +# may merge content /release/models/wifi @mike-albano From 0491a7529c110d8419fd8a4962ff91966e3e6351 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 31 Mar 2023 15:19:02 -0700 Subject: [PATCH 56/86] fix control-plane-traffic aggregate counter typo (#844) Update docs for control-plane-traffic aggregate counters to match yang model --- doc/vendor_counter_guide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/vendor_counter_guide.md b/doc/vendor_counter_guide.md index 74739edff..1b121f0fa 100644 --- a/doc/vendor_counter_guide.md +++ b/doc/vendor_counter_guide.md @@ -126,10 +126,10 @@ module: openconfig-platform Each implementor should augment `/components/component/integrated-circuit/control-plane-traffic/vendor` with their own `//state` containers. The naming of the platform container may consist of the platform name, ASIC family, or a combination of both platform and ASIC family. Within the state container, it should define vendor-specific counter containers. Each control-plane traffic counter may use the utility grouping `oc-ic:control-plane-traffic-vendor-counters` that provides the queued/dropped leaves. For each counters augmented into `//state`, the sum of the counters should be included in the values of the aggregate leaves: -- Counters within `.../control-plane-traffic/vendor///state//queued` aggregate into `.../control-plane-traffic/state/total-queued` -- Counters within `.../control-plane-traffic/vendor///state//queued-bytes` aggregate into `.../control-plane-traffic/state/total-queued-bytes` -- Counters within `.../control-plane-traffic/vendor///state//dropped` aggregate into `.../control-plane-traffic/state/total-dropped` -- Counters within `.../control-plane-traffic/vendor///state//dropped-bytes` aggregate into `.../control-plane-traffic/state/total-dropped-bytes` +- Counters within `.../control-plane-traffic/vendor///state//queued` aggregate into `.../control-plane-traffic/state/queued-aggregate` +- Counters within `.../control-plane-traffic/vendor///state//queued-bytes` aggregate into `.../control-plane-traffic/state/queued-bytes-aggregate` +- Counters within `.../control-plane-traffic/vendor///state//dropped` aggregate into `.../control-plane-traffic/state/dropped-aggregate` +- Counters within `.../control-plane-traffic/vendor///state//dropped-bytes` aggregate into `.../control-plane-traffic/state/dropped-bytes-aggregate` If these aggregate counters are implemented, the sum of the vendor-specific counters must match the aggregate counters. From bfa949f4d340d225a4f23882f7d58f964d464e22 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 31 Mar 2023 17:05:01 -0700 Subject: [PATCH 57/86] Fix ISIS set-metric-type (#841) * fixing type of set-metric-type field --------- Co-authored-by: Alex Webster <31635844+awebsters@users.noreply.github.com> --- .../models/isis/openconfig-isis-policy.yang | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/release/models/isis/openconfig-isis-policy.yang b/release/models/isis/openconfig-isis-policy.yang index c9ef83ab8..3f373d041 100644 --- a/release/models/isis/openconfig-isis-policy.yang +++ b/release/models/isis/openconfig-isis-policy.yang @@ -26,7 +26,13 @@ module openconfig-isis-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-02-27" { + description + "Fixing type for set-metric-type leaf"; + reference "0.6.0"; + } revision "2020-02-04" { description @@ -178,6 +184,16 @@ module openconfig-isis-policy { leaf set-metric-type { type isis-types:level-number; + status deprecated; + description + "Formerly this leaf sets the type of metric that is to be specified + when the set-metric leaf is specified. This leaf is DEPRECATED + due to being assigned the wrong type. Use set-metric-style-type + instead."; + } + + leaf set-metric-style-type { + type isis-types:metric-style; description "Set the type of metric that is to be specified when the set metric leaf is specified"; From de94e3b3573de05466305f8f7eb4eae960da54e7 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Fri, 31 Mar 2023 17:12:05 -0700 Subject: [PATCH 58/86] [Forked from #609] Add ICMP type/code and packet length matches. (#798) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add support of the packet length and several protocols filter. Add ICMP field in IPv4 and IPv6 packets * Add ICMPv[46] type and code defininitions, update ICMPv[46] match. * Remove protocols list and maintain single protocol field. --------- Co-authored-by: sbarguil Co-authored-by: Óscar González de Dios Co-authored-by: Darren Loher --- .../models/acl/openconfig-icmpv4-types.yang | 540 +++++++++ .../models/acl/openconfig-icmpv6-types.yang | 1004 +++++++++++++++++ .../acl/openconfig-packet-match-types.yang | 9 +- .../models/acl/openconfig-packet-match.yang | 135 ++- 4 files changed, 1684 insertions(+), 4 deletions(-) create mode 100644 release/models/acl/openconfig-icmpv4-types.yang create mode 100644 release/models/acl/openconfig-icmpv6-types.yang diff --git a/release/models/acl/openconfig-icmpv4-types.yang b/release/models/acl/openconfig-icmpv4-types.yang new file mode 100644 index 000000000..486f3e157 --- /dev/null +++ b/release/models/acl/openconfig-icmpv4-types.yang @@ -0,0 +1,540 @@ +module openconfig-icmpv4-types { + + yang-version "1"; + namespace "http://openconfig.net/yang/openconfig-icmpv4-types"; + + prefix "oc-icmpv4-types"; + + import openconfig-extensions { prefix oc-ext; } + + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "OpenConfig module defining the types and coresponding codes for + ICMPv4."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-01-26" { + description + "Initial revision of ICMPv4 types module."; + reference "0.1.0"; + } + + identity TYPE { + description + "Base identity for ICMPv4 codes"; + } + + identity CODE { + description + "Base identity for ICMPv4 codes."; + } + + identity ECHO_REPLY { + description + "ICMP echo reply, value 0."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE { + description + "ICMP destination unreachable, value 3."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT { + description + "ICMP redirect, value 5."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ECHO { + description + "ICMP echo, value 8."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ROUTER_ADVERTISEMENT { + description + "ICMP router advertisement, value 9."; + base TYPE; + reference "RFC1256: ICMP Router Discovery Messages"; + } + + identity ROUTER_SOLICITATION { + description + "ICMP Router Solicitation, value 10."; + base TYPE; + reference "RFC1256: ICMP Router Discovery Messages"; + } + + identity TIME_EXCEEDED { + description + "ICMP TTL exceede, value 11."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PARAM_PROBLEM { + description + "ICMP parameter problem, value 12."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP { + description + "ICMP timestamp, value 13."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP_REPLY { + description + "ICMP timestamp reply, value 14."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + identity TRACEROUTE{ + description + "Traceroute (deprecated), value 30."; + base TYPE; + reference "RFC1393: Traceroute Using an IP Option"; + } + identity PHOTURIS { + description + "ICMP Photuris, value 40."; + base TYPE; + reference "RFC2521: CMP Security Failures Messages"; + } + + identity EXT_ECHO_REQUEST { + description + "ICMP extended echo request, value 42."; + base TYPE; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY { + description + "ICMP extended echo reply, value 43."; + base TYPE; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity ECHO_REPLY_CODE { + description + "CODE for ICMPv4 Echo Reply."; + base CODE; + } + + identity ECHO_REPLY_NONE { + description + "No code, type 0 for Echo Reply."; + base ECHO_REPLY_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_CODE { + description + "Codes for ICMPv4 Destination Unreachable."; + base CODE; + } + + identity DST_UNREACHABLE_NET { + description + "ICMPv4 destination network unreachable, code 0."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_HOST { + description + "ICMPv4 destination host unreachable, code 1"; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_PROTOCOL { + description + "ICMPv4 destination protocol unreachable, code 2."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_PORT { + description + "ICMPv4 Port unreachable, code 3."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_CANNOT_FRAGMENT { + description + "ICMPv4 destination unreachable due to inability to fragment. The df-bit + is set but the packet requires fragmentation, code 4."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_SRC_ROUTE_FAILED { + description + "ICMPv4 destination is unreachable as source routing failed, code 5."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_DST_NET_UNKNOWN { + description + "ICMPv4 destination is unreachable as the destination network is + unknown, code 6."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_DST_HOST_UNKNOWN { + description + "ICMPv4 destination is unreachable as the destination host is unknown, code 7."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_SRC_HOST_ISOLATED { + description + "ICMPv4 destination unreachable as the source host is isolated, code 8."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_DST_NET_ADMIN_PROHIBITED { + description + "ICMPv4 destination is unreachable as communication with the destination + network is administratively prohibited, code 9."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_DST_HOST_ADMIN_PROHIBITED { + description + "ICMPv4 destination is unreachable as communication with the destination + host is adminstratively prohibited, code 10."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_NET_UNREACHABLE_FOR_TOS { + description + "ICMPv4 destination network is unreachable for the specified type of + service, code 11."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_HOST_UNREACHABLE_FOR_TOS { + description + "ICMPv4 destination host is unreachable for the specified type of + service, code 12."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_ADMIN_PROHIBITED { + description + "ICMPv4 destination is unreacable as packets were adminstratively + filtered."; + base DST_UNREACHABLE_CODE; + reference "RFC1812: Requirements for IP Version 4 Routers"; + } + + identity DST_UNREACHABLE_HOST_PRECEDENCE_VIOLATION { + description + "ICMPv4 destination is unreachable as the first-hop router has determined + that the destination cannot be reached for the specified source/ + destination host, network, upper-layer protocol and source/destination + port. Code 14"; + base DST_UNREACHABLE_CODE; + } + + identity DST_UNREACHABLE_PRECEDENCE_CUTOFF { + description + "ICMPv4 Precedence cutoff in effect. The network operators have imposed + a minimum level of precedence required for operation, the + datagram was sent with a precedence below this level. + Code 15."; + base DST_UNREACHABLE_CODE; + reference "RFC1812: Requirements for IP Version 4 Routers"; + } + + identity REDIRECT_CODE { + base CODE; + description + "Codes for the ICMPv4 Redirect type."; + } + + identity REDIRECT_NETWORK { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the network or subnet, + code 0"; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT_HOST { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the host, code 1."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT_TOS_NETWORK { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the network and type of service. code 2."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT_TOS_HOST { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the host and type of service, + code 3"; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ECHO_CODE { + base CODE; + description + "Codes for ICMPv4 echo messages."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ECHO_NO_CODE { + base ECHO_CODE; + description + "No code."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ROUTER_ADVERTISEMENT_CODE { + base CODE; + description + "Code for the ICMPv4 router advertisement message."; + } + identity ROUTER_ADVERTISEMENT_NORMAL { + base ROUTER_ADVERTISEMENT_CODE; + description + "Code 0: Normal router advertisement."; + reference "RFC3344: IP Mobility Support for IPv4"; + } + + identity ROUTER_ADVERTISEMENT_DOES_NOT_ROUTE_COMMON { + base ROUTER_ADVERTISEMENT_CODE; + description + "Code 16: Does not route common traffic."; + reference "RFC3344: IP Mobility Support for IPv4"; + } + + identity ROUTER_SELECTION_CODE { + base CODE; + description + "Codes for the ICMPv4 router selection message."; + } + + identity ROUTER_SELECTION_NO_CODE { + base ROUTER_SELECTION_CODE; + description + "No code."; + reference "RFC1256: ICMP Router Discovery Messages"; + } + + identity TIME_EXCEEDED_CODE { + base CODE; + description + "Codes for the ICMPv4 time exceeded code."; + } + + identity TIME_EXCEEDED_IN_TRANSIT { + base TIME_EXCEEDED_CODE; + description + "Code 0: Time to Live exceeded in Transit."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIME_EXCEEDED_FRAGMENT_REASSEMBLY_IN_TRANSIT { + base TIME_EXCEEDED_CODE; + description + "Code 1: Fragment reassembly time exceeded."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PARAM_PROBLEM_CODE { + base CODE; + description + "Codes for the ICMPv4 parameter problem message (Type 12)."; + } + + identity PARAM_PROBLEM_POINTER_INDICATES_ERR { + base PARAM_PROBLEM_CODE; + description + "Code 0: Pointer indicates the error."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PARAM_PROBLEM_MISSING_REQ_OPTION { + base PARAM_PROBLEM_CODE; + description + "Code 1: Missing a required option."; + reference "RFC1108: U.S. Department of Defense + Security Options for the Internet Protocol"; + } + + identity PARAM_PROBLEM_BAD_LENGTH { + base PARAM_PROBLEM_CODE; + description + "Code 2: Bad Length."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP_CODE { + base CODE; + description + "Codes of the ICMPv4 timestamp message (Type 13)."; + } + identity TIMESTAMP_NO_CODE { + base TIMESTAMP_CODE; + description + "No code."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP_REPLY_CODE { + base CODE; + description + "Codes of the ICMPv4 timestamp reply message (Type 14)."; + } + + identity TIMESTAMP_REPLY_NO_CODE { + base TIMESTAMP_REPLY_CODE; + description + "No code."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PHOTURIS_CODE { + base CODE; + description + "Codes of the ICMPv4 Photuris message (type 40)."; + } + + identity PHOTURIS_BAD_SPI { + base PHOTURIS_CODE; + description + "Code 0: Bad SPI."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_AUTH_FAILED { + base PHOTURIS_CODE; + description + "Code 1: Authentication failed."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_DECOMPRESS_FAILED { + base PHOTURIS_CODE; + description + "Code 2: Decompression failed."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_DECRYPTION_FAILED { + base PHOTURIS_CODE; + description + "Code 3: Decryption failed."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_NEED_AUTHENTICATION { + base PHOTURIS_CODE; + description + "Code 4: Need authentication."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_NEED_AUTHORIZATION { + base PHOTURIS_CODE; + description + "Code 5: Need authorization."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity EXT_ECHO_REQUEST_CODE { + description + "Codes of the extended echo request ICMP message."; + base CODE; + } + + identity EXT_ECHO_REQUEST_NO_ERROR { + base EXT_ECHO_REQUEST_CODE; + description + "Code 0: No error."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_CODE { + description + "Codes of the extended echo reply ICMP message (Type 43)."; + base CODE; + } + + identity EXT_ECHO_REPLY_NO_ERROR { + base EXT_ECHO_REPLY_CODE; + description + "Code 0: No error."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MALFORMED_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Code 1: Malformed query."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUCH_INTF { + base EXT_ECHO_REPLY_CODE; + description + "Code 2: No such interface."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUB_TABLE_ENTRY { + base EXT_ECHO_REPLY_CODE; + description + "Code 3: No such table entry."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Code 4: Multiple interfaces satisfy query."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } +} diff --git a/release/models/acl/openconfig-icmpv6-types.yang b/release/models/acl/openconfig-icmpv6-types.yang new file mode 100644 index 000000000..3b263a9d3 --- /dev/null +++ b/release/models/acl/openconfig-icmpv6-types.yang @@ -0,0 +1,1004 @@ +module openconfig-icmpv6-types { + + yang-version "1"; + namespace "http://openconfig.net/yang/openconfig-icmpv6-types"; + + prefix "oc-icmpv4-types"; + + import openconfig-extensions { prefix oc-ext; } + + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "OpenConfig module defining the types and coresponding subcodes for + ICMPv6."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-01-26" { + description + "Initial revision of ICMPv6 types module."; + reference "0.1.0"; + } + + identity TYPE { + description + "Base identity for ICMPv6 codes"; + } + + identity CODE { + description + "Base identity for ICMPv6 subcodes."; + } + + identity DESTINATION_UNREACHABLE { + base TYPE; + description + "Type 1: Destination unreachable."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PACKET_TOO_BIG { + base TYPE; + description + "Type 2: Packet too big."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity TIME_EXCEEDED { + base TYPE; + description + "Type 3: Time exceeded."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAMETER_PROBLEM { + base TYPE; + description + "Type 4: Parameter problem."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity ECHO_REQUEST { + base TYPE; + description + "Type 128: Echo request."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity ECHO_REPLY { + base TYPE; + description + "Type 129: Echo reply"; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity MULTICAST_LISTENER_QUERY { + base TYPE; + description + "Type 130: Multicast listener query"; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_REPORT { + base TYPE; + description + "Type 131: Multicast listener report"; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_DONE { + base TYPE; + description + "Type 132: Multicast listener done"; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity ROUTER_SOLICITATION { + base TYPE; + description + "Type 133: IPv6 router soliciation."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity ROUTER_ADVERTISEMENT { + base TYPE; + description + "Type 134: IPv6 router advertisement."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_SOLICITATION { + base TYPE; + description + "Type 135: IPv6 neighbor solicitation."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_ADVERTISEMENT { + base TYPE; + description + "Type 136: IPv6 neighbor advertisement."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity REDIRECT { + base TYPE; + description + "Type 137: IPv6 ICMP redirect message."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity RENUNBERING { + base TYPE; + description + "Type 138: Router renumbering."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity NODE_INFORMATION_QUERY { + base TYPE; + description + "Type 139: ICMP Node Information Query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + identity NODE_INFORMATION_RESPONSE { + base TYPE; + description + "Type 140: ICMP Node Information Response."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity INVERSE_NEIGHBOR_SOLICITATION { + base TYPE; + description + "Type 141: Inverse Neighbor Discovery Solicitation Message."; + reference "RFC3122: Extensions to IPv6 Neighbor Discovery for + Inverse Discovery Specification"; + } + + identity INVERSE_NEIGHBOR_ADVERTISEMENT { + base TYPE; + description + "Type 142: Inverse Neighbor Discovery Advertisement Message."; + reference "RFC3122: Extensions to IPv6 Neighbor Discovery for + Inverse Discovery Specification"; + } + + identity VERSION2_MULTICAST_LISTENER { + base TYPE; + description + "Type 143: Version 2 Multicast Listener Report"; + reference + "RFC3810: Multicast Listener Discovery Version 2 (MLDv2) for IPv6"; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REQUEST { + base TYPE; + description + "Type 144: Home Agent Address Discovery Request Message."; + reference "RFC6275: Mobility Support in IPv6"; + + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REPLY { + base TYPE; + description + "Type 145: Home Agent Address Discovery Reply Message."; + reference "RFC6275: Mobility Support in IPv6"; + + } + + identity MOBILE_PREFIX_SOLICITATION { + base TYPE; + description + "Type 147: Mobile Prefix Solicitation."; + reference "RFC6275: Mobility Support in IPv6"; + } + + identity MOBILE_PREFIX_ADVERTISEMENT { + base TYPE; + description + "Type 147: Mobile Prefix Advertisement."; + reference "RFC6275: Mobility Support in IPv6"; + } + + identity CERTIFICATION_PATH_SOLICITATION { + base TYPE; + description + "Type 148: Certification Path Soliciation Message."; + reference "RFC3971: SEcure Neighbor Discovery (SEND)"; + } + + identity CERTIFICATION_PATH_ADVERTISEMENT { + base TYPE; + description + "Type 149: Certification Path Advertisement Message."; + reference "RFC3971: SEcure Neighbor Discovery (SEND)"; + } + + identity MULTICAST_ROUTER_ADVERTISEMENT { + base TYPE; + description + "Type 151: Multicast Router Advertisement."; + reference "RFC4286: Multicast Router Discovery"; + } + + identity MULTICAST_ROUTER_SOLICITATION { + base TYPE; + description + "Type 152: Multicast Router Solicitation."; + reference "RFC4286: Multicast Router Discovery"; + } + + identity MULTICAST_ROUTER_TERMINATION { + base TYPE; + description + "Type 153: Multicast Router Termination."; + reference "RFC4286: Multicast Router Discovery"; + } + + identity FMIPV6 { + base TYPE; + description + "Type 154: Fast handover mode for IPv6."; + reference + "RFC5568: Mobile IPv6 Fast Handovers"; + } + + identity RPL_CONTROL { + base TYPE; + description + "Type 155: RPL Control Message."; + reference + "RFC6550: RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks"; + } + + identity ILNPV6_LOCATOR_UPDATE { + base TYPE; + description + "Type 156: ILNPv6 Locator Update Message."; + reference + "RFC6743: ICMP Locator Update Message for + the Identifier-Locator Network Protocol for IPv6 (ILNPv6)"; + } + + identity DUPLICATE_ADDRESS_REQUEST { + base TYPE; + description + "Type 157: Duplicate address request."; + reference + "RFC6775: Neighbor Discovery Optimization for IPv6 over Low-Power Wireless + Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_CONFIRMATION { + base TYPE; + description + "Type 158: Duplicate address confirmation."; + reference + "RFC6775: Neighbor Discovery Optimization for IPv6 over Low-Power Wireless + Personal Area Networks (6LoWPANs)"; + } + + identity MPL_CONTROL { + base TYPE; + description + "Type 159: MPL Control Message."; + reference + "RFC7731: Multicast Protocol for Low-Power and Lossy Networks (MPL)"; + } + + identity EXT_ECHO_REQUEST { + base TYPE; + description + "Type 160: Extended echo request."; + reference + "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY { + base TYPE; + description + "Type 161: Extended echo reply."; + reference + "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity DST_UNREACHABLE_CODE { + base CODE; + description + "ICMPv6 destination unreachable subcodes."; + } + identity DST_UNREACHABLE_NO_ROUTE_TO_DST { + base DST_UNREACHABLE_CODE; + description + "Code 0: No route to destination."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + identity DST_UNREACHABLE_DST_ADMIN_PROHIBITED { + base DST_UNREACHABLE_CODE; + description + "Code 1: Communication with destination adminstratively prohibited."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_BEYOND_SCOPE_OF_SRC { + base DST_UNREACHABLE_CODE; + description + "Code 2: Beyond scope of source address."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_ADDR { + base DST_UNREACHABLE_CODE; + description + "Code 3: Address unreachable."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_PORT { + base DST_UNREACHABLE_CODE; + description + "Code 4: Port unreachable."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_SRC_ADDR_FAILED_POLICY { + base DST_UNREACHABLE_CODE; + description + "Code 5: Source address failed ingress/egress policy."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_REJECT_ROUTE_TO_DST { + base DST_UNREACHABLE_CODE; + description + "Code 6: Reject route to destination."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_ERR_IN_SRC_ROUTING_HDR { + base DST_UNREACHABLE_CODE; + description + "Code 7: Error in Source Routing Header."; + reference "RFC8554: An IPv6 Routing Header for Source Routes with + the Routing Protocol for Low-Power and Lossy Networks (RPL)"; + } + + identity DST_UNREACHABLE_HDRS_TOO_LONG { + base DST_UNREACHABLE_CODE; + description + "Type 8: Headers too long"; + reference "RFC8883: ICMPv6 Errors for Discarding Packets Due to + Processing Limits"; + } + + identity PACKET_TOO_BIG_CODE { + base CODE; + description + "Subcodes for the ICMPv6 Packet Too Big type."; + } + + identity PACKET_TOO_BIG_NO_CODE { + base PACKET_TOO_BIG_CODE; + description + "No code, value 0."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity TIME_EXCEEDED_CODE { + base CODE; + description + "Subcodes for the Time Exceeded ICMPv6 type."; + } + + identity TIME_EXCEEDED_HOP_LIMIT { + base TIME_EXCEEDED_CODE; + description + "Code 0: Hop limit exceeded in transit."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + identity TIME_EXCEEDED_FRAGMENT_REASSEMBLY { + base TIME_EXCEEDED_CODE; + description + "Code 1: Fragment reassembly time exceeded."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_CODE { + base CODE; + description + "Subcodes for the Parameter Problem ICMPv6 type."; + } + + identity PARAM_PROBLEM_ERR_HDR_FIELD { + base PARAM_PROBLEM_CODE; + description + "Erroneous header field encountered."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_UNRECOGNIZED_NET_HDR_TYPE { + base PARAM_PROBLEM_CODE; + description + "Unrecognized Next Header type encountered."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_UNRECOGNIZED_IPV6_OPT { + base PARAM_PROBLEM_CODE; + description + "Unrecognized IPv6 option encountered."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_INCOMPLETE_HDR_CHAIN { + base PARAM_PROBLEM_CODE; + description + "IPv6 First Fragment has incomplete IPv6 Header Chain."; + reference + "RFC7112: Implications of Oversized IPv6 Header Chains"; + } + + identity PARAM_PROBLEM_SR_UPPER_HDR_ERR { + base PARAM_PROBLEM_CODE; + description + "SR Upper-layer Header Error"; + reference + "RFC8754: IPv6 Segment Routing Header (SRH)"; + } + + identity PARAM_PROBLEM_UNRECOGNIZED_NEXT_HDR_TYPE { + base PARAM_PROBLEM_CODE; + description + "Unrecognized Next Header type encountered by intermediate node"; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_EXT_HDR_TOO_BIG { + base PARAM_PROBLEM_CODE; + description + "Extension header too big."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_EXT_HDR_CHAIN_TOO_LONG { + base PARAM_PROBLEM_CODE; + description + "Extension header chain too long."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_TOO_MANY_EXT_HDRS { + base PARAM_PROBLEM_CODE; + description + "Too many extension headers."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_TOO_MANY_OPTS { + base PARAM_PROBLEM_CODE; + description + "Too many options in extension header."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_OPT_TOO_BIG { + base PARAM_PROBLEM_CODE; + description + "Option too big."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity ECHO_REQUEST_CODE { + base CODE; + description + "Subcodes for the ICMPv6 echo request type."; + } + + identity ECHO_REQUEST_NO_CODE { + base ECHO_REQUEST_CODE; + description + "No code."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity ECHO_REPLY_CODE { + base CODE; + description + "Subcodes for the ICMPv6 echo reply subcode."; + } + + identity ECHO_REPLY_NO_CODE { + base ECHO_REPLY_CODE; + description + "No code."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity MULTICAST_LISTENER_QUERY_CODE { + base CODE; + description + "Subcodes for the multicast listener query ICMPv6 type."; + } + + identity MULTICAST_LISTENER_QUERY_NO_CODE { + base MULTICAST_LISTENER_QUERY_CODE; + description + "No code."; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_REPORT_CODE { + base CODE; + description + "Subcodes for the multicast listener report ICMPv6 type."; + } + + identity MULTICAST_LISTENER_REPORT_NO_CODE { + base MULTICAST_LISTENER_REPORT_CODE; + description + "No code."; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_DONE_CODE { + base CODE; + description + "Subcodes for the multicast listener done ICMPv6 type."; + } + + identity MULTICAST_LISTENER_DONE_NO_CODE { + base MULTICAST_LISTENER_DONE_CODE; + description + "No code."; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity ROUTER_SOLICITATION_CODE { + base CODE; + description + "Subcodes for the router solicitation ICMPv6 type."; + } + identity ROUTER_SOLICITATION_NO_CODE { + base ROUTER_SOLICITATION_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity ROUTER_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the router advertisement ICMPv6 type."; + } + + identity ROUTER_ADVERTISEMENT_NO_CODE { + base ROUTER_ADVERTISEMENT_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_SOLICITATION_CODE { + base CODE; + description + "Subcodes for the router solicitation ICMPv6 type."; + } + + identity NEIGHBOR_SOLICITATION_NO_CODE { + base NEIGHBOR_SOLICITATION_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the neighbor advertisement ICMPv6 type."; + } + + identity NEIGHBOR_ADVERTISEMENT_NO_CODE { + base NEIGHBOR_ADVERTISEMENT_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity REDIRECT_CODE { + base CODE; + description + "Subcodes for the redirect ICMPv6 type."; + } + + identity REDIRECT_NO_CODE { + base REDIRECT_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity RENUMBERING_CODE { + base CODE; + description + "Subcodes for the redirect ICMPv6 type for renumbering."; + } + + identity RENUMBERING_COMMAND { + base RENUMBERING_CODE; + description + "Router renumbering command."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity RENUNBERING_RESULT { + base RENUMBERING_CODE; + description + "Router renumbering result."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity RENUNBERING_SEQ_NUM_RESET { + base RENUMBERING_CODE; + description + "Router renumbering sequence number reset."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity NODE_INFORMATION_QUERY_CODE { + base CODE; + description + "Subcodes for the node information query ICMPv6 type."; + } + + identity NODE_INFORMATION_QUERY_IPV6_ADDR { + base NODE_INFORMATION_QUERY_CODE; + description + "The data field contains an IPv6 address which is the subject of the + query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_QUERY_NAME { + base NODE_INFORMATION_QUERY_CODE; + description + "The data field contains a name which is the subject of the + query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_QUERY_IPV4_ADDR { + base NODE_INFORMATION_QUERY_CODE; + description + "The data field contains an IPv4 address which is the subject of the + query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NDDE_INFORMATION_RESPONSE_CODE { + base CODE; + description + "Subcodes for the node information response ICMPv6 type."; + } + + identity NODE_INFORMATION_RESPONSE_SUCCESS { + base NDDE_INFORMATION_RESPONSE_CODE; + description + "A successful reply."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_RESPONSE_REFUSED { + base NDDE_INFORMATION_RESPONSE_CODE; + description + "The responder refuses to supply the answer."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_RESPONSE_UNKNOWN { + base NDDE_INFORMATION_RESPONSE_CODE; + description + "The query type is unknown to the responder."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity INVERSE_NEIGHBOR_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the Inverse Neighbor Discovery ICMPv6 type."; + } + + identity INVERSE_NEIGHBOR_ADVERTISEMENT_NO_CODE { + base INVERSE_NEIGHBOR_ADVERTISEMENT_CODE; + description + "No code."; + reference + "RFC3122: Extensions to IPv6 Neighbor Discovery for Inverse Discovery + Specification"; + } + + identity INVERSE_NEIGHBOR_SOLICITATION_CODE { + base CODE; + description + "Subcode for the inverse neighbor solicitation ICMP6 type."; + } + + identity INVERSE_NEIGHBOR_SOLICITATION_NO_CODE { + base INVERSE_NEIGHBOR_SOLICITATION_CODE; + description + "No code."; + reference + "RFC3122: Extensions to IPv6 Neighbor Discovery for Inverse Discovery + Specification"; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE { + base CODE; + description + "Subcodes for the Home Agent Address Discovery Request ICMPv6 type."; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_NO_CODE { + base HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE { + base CODE; + description + "Subcodes for the Home Agent Address Discovery Reply ICMPv6 type."; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REPLY_NO_CODE { + base HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity MOBILE_PREFIX_SOLICITATION_CODE { + base CODE; + description + "Subcodes for the Mobile Prefix Solicitation ICMPv6 type."; + } + + identity MOBILE_PREFIX_SOLICITATION_NO_CODE { + base MOBILE_PREFIX_SOLICITATION_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity MOBILE_PREFIX_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the Mobile Prefix Advertisement ICMPv6 type."; + } + + identity MOBILE_PREFIX_ADVERTISEMENT_NO_CODE { + base MOBILE_PREFIX_ADVERTISEMENT_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity DUPLICATE_ADDRESS_REQUEST_CODE { + base CODE; + description + "Subcodes for the Duplicate Address Request ICMPv6 type."; + } + + identity DUPLICATE_ADDRESS_REQUEST_DAR { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "DAR message"; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR64 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 64-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR128 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 128-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR192 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 192-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR256 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 256-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_CODE { + base CODE; + description + "Subcodes for the Duplicate Address Confirmation Code ICMPv6 type."; + } + + identity DUPLICATE_ADDRESS_REPLY_DAC { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "DAC message"; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR64 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 64-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR128 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 128-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR192 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 192-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR256 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 256-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity EXT_ECHO_REQUEST_CODE { + base CODE; + description + "Subcodes for the extended echo request ICMPv6 type."; + } + + identity EXT_ECHO_REQUEST_NO_ERROR { + base EXT_ECHO_REQUEST_CODE; + description + "No error."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_CODE { + base CODE; + description + "Subcodes for the extended echo reply ICMPv6 type."; + } + + identity EXT_ECHO_REPLY_NO_ERROR { + base EXT_ECHO_REPLY_CODE; + description + "No error."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MALFORMED_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Malformed query."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUCH_INTERFACE { + base EXT_ECHO_REPLY_CODE; + description + "No such interface."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUCH_TABLE_ENTRY { + base EXT_ECHO_REPLY_CODE; + description + "No such table entry."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Multiple interfaces satisfy query."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } +} diff --git a/release/models/acl/openconfig-packet-match-types.yang b/release/models/acl/openconfig-packet-match-types.yang index 9963a920a..b5f467a74 100644 --- a/release/models/acl/openconfig-packet-match-types.yang +++ b/release/models/acl/openconfig-packet-match-types.yang @@ -23,7 +23,13 @@ module openconfig-packet-match-types { "This module defines common types for use in models requiring data definitions related to packet matches."; - oc-ext:openconfig-version "1.3.2"; + oc-ext:openconfig-version "1.3.3"; + + revision "2023-01-29" { + description + "Whitespace cleanup."; + reference "1.3.3"; + } revision "2021-07-14" { description @@ -365,5 +371,4 @@ module openconfig-packet-match-types { decimal notation, or using a type defined by the ETHERTYPE identity"; } - } diff --git a/release/models/acl/openconfig-packet-match.yang b/release/models/acl/openconfig-packet-match.yang index a1fcc88ac..c28798664 100644 --- a/release/models/acl/openconfig-packet-match.yang +++ b/release/models/acl/openconfig-packet-match.yang @@ -14,6 +14,8 @@ module openconfig-packet-match { import openconfig-extensions { prefix oc-ext; } import openconfig-mpls-types { prefix oc-mpls; } import openconfig-defined-sets { prefix oc-sets; } + import openconfig-icmpv4-types { prefix oc-icmpv4-types; } + import openconfig-icmpv6-types { prefix oc-icmpv6-types; } // meta organization "OpenConfig working group"; @@ -28,7 +30,14 @@ module openconfig-packet-match { field is omitted from a match expression, the effect is a wildcard ('any') for that field."; - oc-ext:openconfig-version "2.0.0"; + + oc-ext:openconfig-version "2.1.0"; + + revision "2023-03-01" { + description + "Add ICMP Fields for filtering."; + reference "2.1.0"; + } revision "2023-01-27" { description @@ -47,7 +56,7 @@ module openconfig-packet-match { revision "2021-06-16" { description - "Remove trailing whitespace"; + "Remove trailing whitespace."; reference "1.3.1"; } @@ -260,6 +269,20 @@ module openconfig-packet-match { leaf is specified. It is not valid to specify both 'dscp' and 'dscp-set together.'"; } + leaf length { + type uint16; + description + "In the IPv4 header field, this field is known as the Total + Length. Total Length is the length of the datagram, measured + in octets, including internet header and data. + In the IPv6 header field, this field is known as the Payload + Length, which is the length of the IPv6 payload, i.e., the rest + of the packet following the IPv6 header, in octets."; + reference + "RFC 791: Internet Protocol + RFC 8200: Internet Protocol, Version 6 (IPv6) Specification."; + } + leaf protocol { type oc-pkt-match-types:ip-protocol-type; description @@ -346,6 +369,7 @@ module openconfig-packet-match { uses ipv4-protocol-fields-config; uses ipv4-protocol-fields-state; } + uses ip-icmpv4-header-fields-top; } } @@ -430,6 +454,7 @@ module openconfig-packet-match { uses ipv6-protocol-fields-config; uses ipv6-protocol-fields-state; } + uses ip-icmpv6-header-fields-top; } } @@ -593,4 +618,110 @@ module openconfig-packet-match { } } + grouping ip-icmpv4-header-fields-top { + description + "Top grouping for ICMPv4 filtering"; + + container icmpv4 { + description + "Top container for ICMPv4 filtering"; + + container config { + description + "Configuration attributes for ICMPv4 filtering"; + + uses ip-icmpv4-header-fields-config; + } + + container state { + description + "State attributes for ICMPv4 filtering"; + config false; + + uses ip-icmpv4-header-fields-config; + } + } + } + + grouping ip-icmpv6-header-fields-top { + description + "Top grouping for ICMPv6 filtering"; + + container icmpv6 { + description + "Top container for ICMPv6 filtering"; + + container config { + description + "Configuration attributes for ICMPv6 filtering"; + + uses ip-icmpv6-header-fields-config; + } + + container state { + description + "State attributes for ICMPv6 filtering"; + config false; + + uses ip-icmpv6-header-fields-config; + } + } + } + + grouping ip-icmpv4-header-fields-config { + description + "Collection of ICMPv4 header fields that can be + used to set up a match filter."; + + leaf type { + type identityref { + base oc-icmpv4-types:TYPE; + } + description + "ICMPv4 type to be matched."; + reference + "RFC 792: Internet Control Message Protocol"; + } + + leaf code { + type identityref { + base oc-icmpv4-types:CODE; + } + description + "ICMPv4 code to be matched."; + reference + "RFC 792: Internet Control Message Protocol"; + } + } + + grouping ip-icmpv6-header-fields-config { + description + "Collection of ICMPv6 header fields that can be + used to set up a match filter."; + + leaf type { + type identityref { + base oc-icmpv6-types:TYPE; + } + description + "ICMPv6 type to be matched."; + reference + "RFC 4443: Internet Control Message Protocol (ICMPv6) + for Internet Protocol Version 6 (IPv6) + Specification."; + } + + leaf code { + type identityref { + base oc-icmpv6-types:CODE; + } + description + "ICMP code to be matched."; + reference + "RFC 4443: Internet Control Message Protocol (ICMPv6) + for Internet Protocol Version 6 (IPv6) + Specification."; + } + } + } From 8d39d412902105064c70c934bbeee443dbafd7b5 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 5 Apr 2023 11:25:54 -0700 Subject: [PATCH 59/86] Add semantic versioning doc and update releases doc. * The semantic versioning doc is imported from the old openconfig.net website, with the section on release bundles removed and merged into the releases doc. * The remaining doc is kept separate in order to separate the concerns of versioning individual models vs. versioning the entirety of OpenConfig models. --- doc/releases.md | 46 ++++++++++++++------ doc/semver.md | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 14 deletions(-) create mode 100644 doc/semver.md diff --git a/doc/releases.md b/doc/releases.md index 31661dd9a..55c06f9b4 100644 --- a/doc/releases.md +++ b/doc/releases.md @@ -1,17 +1,27 @@ # OpenConfig Release Versioning -## Rationale - -As the OpenConfig project matures and is adopted by more implementors and -network operators, model changes are becoming increasingly frequent. This has -made identifying compatible and well-known sets of models more difficult. -Furthermore, uncontrolled and frequent breaking changes can create excessive -burden on implementors and operators alike. - -This revision proposal aims to address these problems by introducing -[semantic versioning](https://semver.org/) to the set of OpenConfig models as a -whole along with some OpenConfig-specific guidelines. As a side note, these -releases are compatible with the notion of +## Background and Motivation + +While each individual OpenConfig model can be tagged with a semantic version +(see [semver.md](semver.md)), models are often interdependent, or need to be +used together, for example when managing a full device. It is therefore useful +to define OpenConfig "releases" that contain a set of models that are designed +to work together. This also enables tracking breaking changes at the repository +level, as well as allowing public users to view and download tagged collections +of self-consistent models (see also the description of +[GitHub releases](https://help.github.com/articles/creating-releases/)). + +In light of the above, this proposal introduces tagging +[semantic versions](https://semver.org/) to the set of all OpenConfig models as +a whole along with some OpenConfig-specific guidelines. Each release is +therefore the cumulative set of models committed to the master branch at a +certain point in time, and is tied to a specific commit in the OpenConfig +repository. YANG validators ensure that each release consists of collection of +published OpenConfig models that work together: that is, interdependencies +(e.g., imports, augments) and cross-references (e.g., leafrefs) are all +resolved. + +As a side note, these releases are compatible with the notion of [YANG release bundles](https://github.com/openconfig/public/blob/master/release/models/catalog/openconfig-module-catalog.yang). ## Policy @@ -43,7 +53,7 @@ releases are compatible with the notion of breaking change since it would cause featureprofile tests that test for the behaviour of the default value without explicitly setting this leaf to begin to fail. As a result, the pull request for this change is not merged until - the end of the quarter in December. In January 2022, a new release is + the end of the quarter in December. In January 2023, a new release is created, versioned `v3.0.0` containing this update. 3. Any non-backward compatible change for a pre-`v1.0.0` YANG module does NOT @@ -51,7 +61,8 @@ releases are compatible with the notion of repository. 4. [Patch releases](https://semver.org/#spec-item-6) may be created at any time - for backward compatible bug fixes. + for backward compatible bug fixes, or equivalently, where only patch number + increases occurred in models. 5. [Pre-releases](https://semver.org/#spec-item-9) may be created at anytime to quickly introduce new changes to the models. These are not intended to be @@ -67,6 +78,9 @@ releases are compatible with the notion of This guideline may change once OpenConfig operators gain more experience managing breaking changes. +7. Release documentation should include the list of models and their version + numbers contained in the corresponding release. + Each release `vx.y.z` (e.g. `v1.2.0`) MAY be given a name for easier human identification, e.g. "September 2022". A client can thus assert they are compatible with the "September 2022" release of OpenConfig. It's expected that @@ -74,6 +88,10 @@ vendors will have some deviations and augments from the baseline; further, some vendors may offer the ability to configure their NOS (network operating system) to support different releases of https://github.com/openconfig/public. +Note that release version numbers need not be a function of individual model +release numbers (e.g., the max version number of all of the models in the +release). + ### Corner-Case Guidelines For non-backward compatible changes involving changing the type of a leaf, the diff --git a/doc/semver.md b/doc/semver.md new file mode 100644 index 000000000..4f2d13052 --- /dev/null +++ b/doc/semver.md @@ -0,0 +1,113 @@ +# Versioning Individual OpenConfig models + +contributors: Anees Shaikh, Josh George, Rob Shakir, Kristian Larsson
+ +## Background and Motivation + +*For versioning the set of all OpenConfig models as a whole, see +[releases.md](releases.md).* + +This document proposes to adopt [Semantic Versioning](http://semver.org/) +(semver) for published OpenConfig YANG models in the same way that software +projects use similar versioning schemes to indicate the maturity and +compatibility of software as it evolves. Semver bases its versioning on an API +contract with developers and users. The basic format of a semver number is +XX.YY.ZZ-release where XX is the major version number, YY is the minor version +number, and ZZ is a patch level. Additional information can be optionally +provided with a suffix. Detailed specification on the semver versioning rules +are available at the [link](http://semver.org/) above. Any non +backward-compatible change to the API requires incrementing the major version +number, while feature changes that do not break clients are indicated by +incrementing the minor version number. Non-feature patches that are backward +compatible are indicated with an increment to the patch number. + +Semantic versioning is proposed as an addition to YANG revision statements for a +number of reasons: + +* YANG language rules state that the API never changes in a + backward-incompatible way. From RFC 6020: “... changes are not allowed if + they have any potential to cause interoperability problems between a client + using an original specification and a server using an updated + specification.” + +This is simply not practical (and is largely motivated by SNMP MIB notions). +YANG models are not mature (less than 5 models have been made IETF RFCs and +these are not implemented by any major device platform). Server and client +implementations are only now being developed and deployed and significantly more +operational experience is needed before APIs can be frozen. + +* YANG revision statements consist of a date and some informational text. As + such, they offer little information about what has changed from one revision + to the next. This is perhaps not surprising when considering the rigid rules + in YANG about guaranteed API compatibility. +* YANG revision statements are meant for human consumption -- they are not + very useful for any sort of programmatic dependency checking. + +Semantic versioning has its +[own issues](https://gist.github.com/jashkenas/cbd2b088e20279ae2c8e) and it may +be that in OpenConfig we will have to adapt the specification somewhat based on +considerations for versioning YANG models. Also semver does not address the +problem of how to version groups of interdependent modules (e.g., a device model +composed of many constituent models). + +Note that we would continue to use revision statements, e.g., with a date set to +the day a new semantic version is published. This allows consumers to continue +to use current YANG constructs such as import by revision. + +## General guidelines for versioning OpenConfig YANG modules + +An immediate question that arises when considering how to version YANG modules +is what criteria should be used to judge that a module is mature enough that an +API contract should be established with a version number. + +According to the semver specification, software that is pre-release with major +version 0 may break clients as long as the major version number remains < 1. +That is, with major version 0, there should be no expectation of compatibility +from one release to another, even if only the minor version number is changing. + +Based on these considerations, the following basic guidelines are proposed for +versioning OpenConfig modules: + +* All modules should start out with a 0 major number. The major number should + remain 0 as long as the model is being reviewed and revised based on + feedback from the OpenConfig operators and from vendors implementing the + model. +* Semver guidelines should be followed while the model is at major number 0, + i.e., API or feature changes should increment the minor number, while minor + fixes should increment the patch number. +* Once a vendor implementation for a model is in progress, the major number + should be changed to 1 to acknowledge that the API is being used by + implementors with correspondingly more disruption likely when the model + changes in incompatible ways. Deciding that vendor implementations are + sufficiently in-progress to justify moving to major version 1 may be + somewhat subjective and should be based on detailed discussions with + implementors to understand what stage they are in their implementations. + +## API changes in YANG modules + +For the purposes of semver, the API presented by a YANG model consists of its +data nodes and corresponding paths. Other elements of the model may not, +strictly speaking, be considered part of the API, but still could have +significant impact on the use of the model by developers or clients. Such +elements include default values, configurability of a node, and behavior of a +given data node (as described by the description statement). + +Since the API of the YANG module is a combination of these explicit and implicit +elements, the criteria for determining when a revision requires a major number +increment is not always straightforward. Below we list some general rules for +determining the API has changed, and consequently would increment the major +version number. + +* Any leaf, leaf-list, list, or container modifications that result in + changing an existing data node name, or the path to a data node (location in + the model) +* Changing the target of a leafref +* Removal of a data node (leaf, leaf-list, list, container) +* Changing the type of a leaf or leaf-list +* Changing a type definition such that data based on the existing typedef + would be invalid (e.g., removing a value from an enumeration, changing the + base type in a typedef, etc.) +* Changing the key of a list (i.e., using a different data node as the list + key) +* Changing a conditional statement, such as when or must, to be more + restrictive, or to be based on a different condition altogether From 41fc6bdc5ecde78682b5a9148daf61e7bccc5d7d Mon Sep 17 00:00:00 2001 From: Adam Simpson <113378487+nokia1adam@users.noreply.github.com> Date: Tue, 11 Apr 2023 04:50:05 +0100 Subject: [PATCH 60/86] Add support for weighted ECMP in ISIS (#821) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add support for weighted ECMP in ISIS. This code is a Contribution to the OpenConfig Public project (“Work”) made under the Google Software Grant and Corporate Contributor License Agreement (“CLA”) and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia’s intellectual property are granted for any other purpose. This code is provided on an “as is” basis without any warranties of any kind. --- release/models/isis/openconfig-isis-lsp.yang | 9 ++- .../models/isis/openconfig-isis-routing.yang | 9 ++- release/models/isis/openconfig-isis.yang | 63 ++++++++++++++++++- 3 files changed, 77 insertions(+), 4 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index aded4a7aa..225f7a3c7 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.4.1"; + + oc-ext:openconfig-version "1.5.0"; + + revision "2023-03-27" { + description + "Add weighted ecmp."; + reference "1.5.0"; + } revision "2023-03-20" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 662e07126..6954ba1d6 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.4.1"; + oc-ext:openconfig-version "1.5.0"; + + revision "2023-03-27" { + description + "Add weighted ecmp."; + reference "1.5.0"; + } revision "2023-03-20" { description @@ -41,7 +47,6 @@ submodule openconfig-isis-routing { description "Per-level global enabled configuration removed, since it duplicates the level-capability leaf."; - reference "1.3.0"; } diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index ae2e54e1d..72fa3a898 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.4.1"; + oc-ext:openconfig-version "1.5.0"; + + revision "2023-03-27" { + description + "Add weighted ecmp."; + reference "1.5.0"; + } revision "2023-03-20" { description @@ -277,6 +283,16 @@ module openconfig-isis { "ISIS max-paths count."; } + leaf weighted-ecmp { + type boolean; + default "false"; + description + "When set to true, all eligible multipath IS-IS routes associated with + the instance are programmed to use weighted ECMP. An IS-IS route is + eligible for weighted ECMP if all the next-hop interfaces in the + multipath set have a load-balancing-weight other than 'none'."; + } + leaf poi-tlv { type boolean; default false; @@ -833,6 +849,33 @@ module openconfig-isis { } } + grouping isis-interface-weighted-ecmp-config { + description + "This grouping defines ISIS weighted ECMP configuration"; + + leaf load-balancing-weight { + description + "The load-balancing weight of the interface, which applies when + weighted ECMP is enabled and the interface is part of a multipath set."; + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum "auto" { + description "Load-balancing weight is based on the bandwidth of + the parent interface (port or LAG)"; + } + enum "none" { + description "The interface should not participate in weighted + ECMP"; + } + } + } + default "auto"; + } + } + grouping isis-transport-config { description "This grouping defines configuration parameters relating to the @@ -1289,6 +1332,24 @@ module openconfig-isis { } } + container weighted-ecmp { + description + "This container defines ISIS interface weighted ECMP options"; + + container config { + description + "Configuration parameters relating to weighted ecmp"; + uses isis-interface-weighted-ecmp-config; + } + + container state { + config false; + description + "This container defines state information for weighted ecmp"; + uses isis-interface-weighted-ecmp-config; + } + } + uses oc-bfd:bfd-enable; container bfd { description From 5af88f1cd8c998254b1127469d3a8d26205c4742 Mon Sep 17 00:00:00 2001 From: Roman Dodin Date: Wed, 12 Apr 2023 02:09:50 +0200 Subject: [PATCH 61/86] Clarify `unhealthy-count` of healthz. (#853) * Clarify unhealthy-count of healthz --- .../models/platform/openconfig-platform-healthz.yang | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-healthz.yang b/release/models/platform/openconfig-platform-healthz.yang index 48f747f8a..11e44d36a 100644 --- a/release/models/platform/openconfig-platform-healthz.yang +++ b/release/models/platform/openconfig-platform-healthz.yang @@ -30,7 +30,13 @@ module openconfig-platform-healthz { further diagnostic and debugging informaton from a network device."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; + + revision "2023-04-11" { + description + "Clarification for healthz state transition and unhealthy-count leaf"; + reference "0.1.1"; + } revision "2023-01-23" { description @@ -38,6 +44,7 @@ module openconfig-platform-healthz { reference "0.1.0"; } + grouping platform-health-top { description "Grouping containing health-related parameters."; @@ -114,7 +121,7 @@ module openconfig-platform-healthz { description "The number of status checks that have determined this component to be in an unhealthy state. This counter should be incremented - when the component transitions from the HEALTHY to UNHEALTHY + when the component transitions from the HEALTHY to any other state such that the value reflects the number of times the component has become unhealthy."; oc-ext:telemetry-on-change; From 671855ff16530b4c4ba43eebef882fbc47a83a75 Mon Sep 17 00:00:00 2001 From: Xiao Wang <39514181+xw-g@users.noreply.github.com> Date: Wed, 12 Apr 2023 10:41:26 -0700 Subject: [PATCH 62/86] decap-then-lookup OC schema (#727) * Add policy actions for packet decapsulation controlled by SDN controllers populated network-instance (e.g. via gRIBI). * Add policy action for decap-then-lookup --- .../openconfig-pf-forwarding-policies.yang | 70 ++++++++++++++++++- .../openconfig-pf-interfaces.yang | 8 ++- .../openconfig-pf-path-groups.yang | 7 +- .../openconfig-policy-forwarding.yang | 8 ++- 4 files changed, 88 insertions(+), 5 deletions(-) diff --git a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang index 700fc9180..719401e48 100644 --- a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang +++ b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang @@ -21,7 +21,13 @@ submodule openconfig-pf-forwarding-policies { "This submodule contains configuration and operational state relating to the definition of policy-forwarding policies."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description @@ -264,6 +270,65 @@ submodule openconfig-pf-forwarding-policies { according to the IP destination)."; } + leaf decap-network-instance { + type leafref { + // this must be an absolute reference to allow another NI + // to be referenced. + path "/network-instances/network-instance/config/name"; + } + description + "This leaf is mutually exclusive with ../network-instance. + This leaf should be used along with + ../decap-fallback-network-instance and ../post-decap-network-instance. + This leaf is normally used with NIs (network instances) that are + populated by SDN controllers (e.g. via gRIBI), where we want: + - The decapsulation decision to be controlled by the + controllers. + - The new header after decapsulation is to be looked up in + another NI, and the NI is chosen by fields (e.g. source IP, + DSCP, etc) that are not used for route resolution. + When this leaf is set, packets matching the match criteria for + the forwarding rule should be looked up in the specified NI. + It is expected that the NI should only contain routes that have + next hop action as decapsulation. + - If there is a match, the packet should be decapsulated. + The route lookup on the new header should happen in the + ../post-decap-network-instance. + - If there is no match, the packet should be looked up in the + NI set by ../decap-fallback-network-instance."; + } + + leaf decap-fallback-network-instance { + type leafref { + // this must be an absolute reference to allow another NI + // to be referenced. + path "/network-instances/network-instance/config/name"; + } + description + "This leaf has to be set when ../decap-network-instance is set. + When this leaf is set, the specified NI should be used as a + fallback instance for lookup when + ../decap-network-instance produces no match for the packet. + NI specified by this leaf might contain different mixed next hop + actions (e.g. next hop IP, decapsulation, redirect to another NI, + etc)."; + } + + leaf post-decap-network-instance { + type leafref { + // this must be an absolute reference to allow another NI + // to be referenced. + path "/network-instances/network-instance/config/name"; + } + description + "This leaf can only be set when ../decap-network-instance is set. + When this leaf is set, the specified NI should be used for lookup + on the new header after ../decap-network-instance does decap for + the matched packet. NI specified by this leaf might contain different + mixed next hop actions (e.g. next hop IP, decapsulation, + redirect to another NI, etc)."; + } + leaf network-instance { type leafref { // this must be an absolute reference to allow another NI to be @@ -271,7 +336,8 @@ submodule openconfig-pf-forwarding-policies { path "/network-instances/network-instance/config/name"; } description - "When this leaf is set, packets matching the match criteria + "This leaf is mutually exclusive with ../decap-network-instance. + When this leaf is set, packets matching the match criteria for the forwarding rule should be looked up in the network-instance that is referenced rather than the network-instance with which the interface is associated. diff --git a/release/models/policy-forwarding/openconfig-pf-interfaces.yang b/release/models/policy-forwarding/openconfig-pf-interfaces.yang index ba40fd5e9..868665a89 100644 --- a/release/models/policy-forwarding/openconfig-pf-interfaces.yang +++ b/release/models/policy-forwarding/openconfig-pf-interfaces.yang @@ -19,7 +19,13 @@ submodule openconfig-pf-interfaces { "This submodule contains groupings related to the association between interfaces and policy forwarding rules."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description diff --git a/release/models/policy-forwarding/openconfig-pf-path-groups.yang b/release/models/policy-forwarding/openconfig-pf-path-groups.yang index eff688954..cf5054aa8 100644 --- a/release/models/policy-forwarding/openconfig-pf-path-groups.yang +++ b/release/models/policy-forwarding/openconfig-pf-path-groups.yang @@ -18,8 +18,13 @@ submodule openconfig-pf-path-groups { forwarding entities together to be used as policy forwarding targets."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description "Add GUE and MPLS-in-UDP decapsulation actions."; diff --git a/release/models/policy-forwarding/openconfig-policy-forwarding.yang b/release/models/policy-forwarding/openconfig-policy-forwarding.yang index eec3b1d36..6375d187b 100644 --- a/release/models/policy-forwarding/openconfig-policy-forwarding.yang +++ b/release/models/policy-forwarding/openconfig-policy-forwarding.yang @@ -81,7 +81,13 @@ module openconfig-policy-forwarding { The forwarding action of the corresponding policy is set to PATH_GROUP and references the configured group of LSPs."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description From 66f4ae885b54270867ea942a7d30751e9029e101 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Mon, 17 Apr 2023 16:18:46 -0700 Subject: [PATCH 63/86] Clarify routing table deletion (#833) * Clarify routing table deletion Clarification introduced based on to https://github.com/openconfig/featureprofiles/pull/1253/files#r1136470816 --- .../openconfig-network-instance-l2.yang | 9 ++++++++- .../openconfig-network-instance.yang | 13 +++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 73f24045d..ac23b716b 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.0.1"; + oc-ext:openconfig-version "4.0.2"; + + revision "2023-03-15" { + description + "Clarify that tables are to be deleted by the + network operating system"; + reference "4.0.2"; + } revision "2023-02-07" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 41b2705d3..29dd6e012 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.0.1"; + oc-ext:openconfig-version "4.0.2"; + + revision "2023-03-15" { + description + "Clarify that tables are to be deleted by the + network operating system"; + reference "4.0.2"; + } revision "2023-02-07" { description @@ -565,7 +572,9 @@ module openconfig-network-instance { this list when the relevant protocol context is enabled. i.e., when a BGP instance is created with IPv4 and IPv6 address families enabled, the protocol=BGP, - address-family=IPv4 table is created by the system."; + address-family=IPv4 table is created by the system. The + removal of the table should not require additional or + explicit configurations"; leaf protocol { type leafref { From 7728c37332ba80efc08d677282969e40dce90c01 Mon Sep 17 00:00:00 2001 From: aredmon8551 <87078055+aredmon8551@users.noreply.github.com> Date: Mon, 24 Apr 2023 12:02:56 -0400 Subject: [PATCH 64/86] Update QoS AQM thresholds to support relative values (#688) * Update QoS AQM thresholds to support relative values * (M) openconfig-qos-mem-mgmt.yang * (M) openconfig-qos-elements.yang * (M) openconfig-qos-interfaces.yang * (M) openconfig-qos.yang - Add 2 leaves representing percent values for RED min-threshold and max-threshold --------- Co-authored-by: Darren Loher --- .../models/qos/openconfig-qos-elements.yang | 8 +++- .../models/qos/openconfig-qos-interfaces.yang | 8 +++- .../models/qos/openconfig-qos-mem-mgmt.yang | 42 +++++++++++++++---- release/models/qos/openconfig-qos.yang | 8 +++- 4 files changed, 56 insertions(+), 10 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 93a6fbfcc..71ab36f9b 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 7552dc65b..37f6aeb1e 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 5f777d082..8b6c276b0 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description @@ -271,18 +277,40 @@ submodule openconfig-qos-mem-mgmt { type uint64; units bytes; description - "The mininum threshold parameter for a RED-managed queue. When the - average queue length is less than minth, all packets are admitted - to the queue."; + "The mininum threshold parameter for a RED-managed queue in bytes. + When the average queue length is less than minth, all packets are admitted + to the queue. Mututally exclusive with min-threshold-percent and + max-threshold-percent."; } leaf max-threshold { type uint64; units bytes; description - "The maximum threshold parameter for a RED-managed queue. When the - average queue length exceeds the maxth value, all packets are - dropped (or marked if ECN is enabled)."; + "The maximum threshold parameter for a RED-managed queue in bytes. + When the average queue length exceeds the maxth value, all packets are + dropped (or marked if ECN is enabled). Mutually exclusive with + min-threshold-percent and max-threshold-percent."; + } + + leaf min-threshold-percent { + type uint64; + units oc-types:percentage; + description + "The mininum threshold parameter for a RED-managed queue in percent. + When the average queue length is less than minth, all packets are + admitted to the queue. Mutually exclusive with min-threshold and + max-threshold."; + } + + leaf max-threshold-percent { + type uint64; + units oc-types:percentage; + description + "The maximum threshold parameter for a RED-managed queue in percent. + When the average queue length exceeds the maxth value, all packets + are dropped (or marked if ECN is enabled). Mutually exclusive with + min-threshold and max-threshold."; } leaf enable-ecn { diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 70622500f..c6d2b8e4d 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description From 37a66ddc5bc32f1a78fb734c08a390a2ce2d1dec Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Tue, 25 Apr 2023 11:21:35 -0600 Subject: [PATCH 65/86] #836 fixing description of neighbor RSSI (#862) * #836 fixing description of neighbor RSSI * #836 fixing version --- release/models/wifi/openconfig-wifi-phy.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index 86479eb34..796c2fc6f 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,7 +25,13 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.2.1"; + + revision "2023-04-25" { + description + "Update description for neighbor RSSI to specify as a negative numberr"; + reference "1.2.1"; + } revision "2022-09-16" { description @@ -384,7 +390,7 @@ module openconfig-wifi-phy { leaf rssi { type int8; description - "The RSSI of this neighboring BSSID."; + "The RSSI of this neighboring BSSID, expressed as a negative number"; } leaf channel { From 19be716b607a9ac0f9145af994c8d11d63027e77 Mon Sep 17 00:00:00 2001 From: ruoyi-anet <122060264+ruoyi-anet@users.noreply.github.com> Date: Tue, 25 Apr 2023 13:03:32 -0700 Subject: [PATCH 66/86] Added new model for route summary (#783) * Added new model for route summary release/models/network-instance/openconfig-route-summary.yang --------- Co-authored-by: Darren Loher Co-authored-by: Rob Shakir --- release/models/network-instance/.spec.yml | 2 + .../openconfig-route-summary.yang | 112 ++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 release/models/network-instance/openconfig-route-summary.yang diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 615cf82ef..9874ec073 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -5,6 +5,7 @@ - yang/network-instance/openconfig-evpn-types.yang - yang/network-instance/openconfig-evpn.yang - yang/network-instance/openconfig-programming-errors.yang + - yang/network-instance/openconfig-route-summary.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang - yang/segment-routing/openconfig-segment-routing.yang @@ -12,6 +13,7 @@ build: - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang + - yang/network-instance/openconfig-route-summary.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang run-ci: true diff --git a/release/models/network-instance/openconfig-route-summary.yang b/release/models/network-instance/openconfig-route-summary.yang new file mode 100644 index 000000000..169894b32 --- /dev/null +++ b/release/models/network-instance/openconfig-route-summary.yang @@ -0,0 +1,112 @@ +module openconfig-route-summary { + yang-version "1"; + + namespace "http://openconfig.net/yang/route-summary"; + + prefix "oc-rtsummary"; + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-yang-types { prefix "oc-yang-types"; } + import openconfig-policy-types { prefix "oc-pol-types"; } + import openconfig-network-instance { prefix "oc-ni"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides summary of route counts per route type for each network + instance."; + + oc-ext:openconfig-version "1.0.0"; + + revision "2022-12-21" { + description + "Initial version."; + reference "1.0.0"; + } + + grouping route-counter { + description + "Route type counter item."; + + leaf origin-protocol { + description + "Route type that keys the route count list."; + + type identityref { + base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; + } + } + + container total-count { + description + "A collection of route counts."; + uses total-count; + } + } + + grouping total-count { + description + "A collection of route counts."; + + leaf fib-count { + description + "Total number of routes in the FIB."; + type oc-yang-types:counter64; + } + } + + grouping route-summary { + description + "A summary of route count by route type."; + + list route-count { + key "origin-protocol"; + + description + "Route types that keys the route count list."; + + leaf origin-protocol { + type leafref { + path "../state/origin-protocol"; + } + description + "Reference to the source of the route."; + } + + container state { + description + "State parameters for the route summary list entry."; + uses route-counter; + } + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts/oc-ni:ipv6-unicast" { + description + "Augment the network-instance model with the route summary container for + IPv4."; + + container summary { + uses route-summary; + description + "IPv4 route summary for the network instance."; + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts/oc-ni:ipv4-unicast" { + description + "Augment the network-instance model with the route summary container for + IPv6."; + + container summary { + uses route-summary; + description + "IPv6 route summary for the network instance."; + } + } +} From 90c7b6b1c46bd29bbe76ce86ca541f664538c6c8 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Wed, 26 Apr 2023 16:52:49 -0700 Subject: [PATCH 67/86] Clarify use of interface-ref throughout models. (#802) * Clarify use of interface-ref throughout models. * (M) **/*.yang - Some implementations of the OpenConfig models today assume that some semantics are assigned to the key of a list of interfaces where the interface-ref type is used. This change clarifies that the interface and subinterface leaves are the authorative specification of which interface is being referenced, NOT the list key which may have arbitrary format. * Update to clarify the following in the comments 1. "interface-id" leaf should use subinterface notation if one exists. 2. Interface-ref is a mandatory requirement for VRF-Selection policy. * Add a clarification and examples for port breakout mode. (#791) * (M) release/models/platform/openconfig-platform-port.yang - Add clarification that a physical channel is defined to be an electrical channel. - Add examples for the existing cases described in the model, as we as a simple 400G->100G breakout case. --------- Co-authored-by: Rob Shakir Co-authored-by: sachendras <44847441+sachendras@users.noreply.github.com> Co-authored-by: Darren Loher --- release/models/acl/openconfig-acl.yang | 19 +++++++-- .../aft/openconfig-aft-network-instance.yang | 8 +++- release/models/bfd/openconfig-bfd.yang | 14 ++++++- .../interfaces/openconfig-interfaces.yang | 27 +++++++++++-- release/models/isis/openconfig-isis-lsp.yang | 7 +++- .../models/isis/openconfig-isis-routing.yang | 8 +++- release/models/isis/openconfig-isis.yang | 15 ++++++- release/models/mpls/openconfig-mpls-igp.yang | 8 +++- release/models/mpls/openconfig-mpls-ldp.yang | 15 ++++++- release/models/mpls/openconfig-mpls-rsvp.yang | 15 ++++++- .../models/mpls/openconfig-mpls-static.yang | 8 +++- release/models/mpls/openconfig-mpls-te.yang | 10 ++++- release/models/mpls/openconfig-mpls.yang | 24 +++++++++-- release/models/multicast/openconfig-igmp.yang | 15 ++++++- release/models/multicast/openconfig-pim.yang | 15 ++++++- .../openconfig-network-instance-l2.yang | 8 +++- .../openconfig-network-instance.yang | 20 ++++++++-- .../openconfig-ospfv2-area-interface.yang | 15 ++++++- .../models/ospf/openconfig-ospfv2-area.yang | 10 ++++- .../models/ospf/openconfig-ospfv2-common.yang | 8 +++- .../models/ospf/openconfig-ospfv2-global.yang | 8 +++- .../models/ospf/openconfig-ospfv2-lsdb.yang | 8 +++- release/models/ospf/openconfig-ospfv2.yang | 8 +++- release/models/pcep/openconfig-pcep.yang | 40 +++++++++++-------- .../platform/openconfig-platform-port.yang | 8 +++- .../openconfig-pf-forwarding-policies.yang | 8 +++- .../openconfig-pf-interfaces.yang | 24 ++++++++--- .../openconfig-pf-path-groups.yang | 8 +++- .../openconfig-policy-forwarding.yang | 8 +++- .../models/qos/openconfig-qos-elements.yang | 8 +++- .../models/qos/openconfig-qos-interfaces.yang | 17 ++++++-- .../models/qos/openconfig-qos-mem-mgmt.yang | 8 +++- release/models/qos/openconfig-qos.yang | 8 +++- .../relay-agent/openconfig-relay-agent.yang | 32 +++++++++------ .../openconfig-segment-routing.yang | 15 ++++++- 35 files changed, 390 insertions(+), 87 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index eabbc761e..6b3977907 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,7 +34,13 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.2"; + oc-ext:openconfig-version "1.3.3"; + + revision "2023-02-06" { + description + "Add clarifying comments on use of interface-ref."; + reference "1.3.3"; + } revision "2023-01-29" { description @@ -247,7 +253,10 @@ module openconfig-acl { container input-interface { description - "Input interface container"; + "Input interface container. The interface is resolved based + on the interface and subinterface leaves of the interface-ref + container, which are references to entries in the /interfaces + list."; container config { description @@ -827,7 +836,11 @@ module openconfig-acl { list interface { key "id"; description - "List of interfaces on which ACLs are set"; + "List of interfaces on which ACLs are set. The interface is resolved + based on the interface and subinterface leaves of the interface-ref + container, which are references to entries in the /interfaces + list. The key of the list is an arbitrary value that the + implementation should not use to resolve an interface name."; leaf id { type leafref { diff --git a/release/models/aft/openconfig-aft-network-instance.yang b/release/models/aft/openconfig-aft-network-instance.yang index 17428ceea..8ac495dcb 100644 --- a/release/models/aft/openconfig-aft-network-instance.yang +++ b/release/models/aft/openconfig-aft-network-instance.yang @@ -19,7 +19,13 @@ module openconfig-aft-network-instance { when building the OpenConfig network instance model to add per-NI AFTs."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; + + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "0.3.1"; + } revision "2022-03-29" { description diff --git a/release/models/bfd/openconfig-bfd.yang b/release/models/bfd/openconfig-bfd.yang index 50e516c9f..400d7ab00 100644 --- a/release/models/bfd/openconfig-bfd.yang +++ b/release/models/bfd/openconfig-bfd.yang @@ -26,7 +26,13 @@ module openconfig-bfd { "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) configuration and operational state."; - oc-ext:openconfig-version "0.2.4"; + oc-ext:openconfig-version "0.2.5"; + + revision "2023-02-06" { + description + "Clarify interface references."; + reference "0.2.5"; + } revision "2022-06-28" { description @@ -634,7 +640,11 @@ module openconfig-bfd { key "id"; description - "Per-interface configuration and state parameters for BFD."; + "Per-interface configuration and state parameters for BFD. + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index e6f061746..7d349a07c 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,12 +51,21 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.0.2"; + +revision "2023-02-06" { + description + "Add further specification to interface-ref type to + clarify that the interface and subinterface leaves + are how an interface is referenced, regardless of + context."; + reference "3.0.2"; + } revision "2022-10-25" { description "change loopback-mode to align with available modes"; - reference "3.0.0"; + reference "3.0.1"; } revision "2021-04-06" { @@ -218,7 +227,19 @@ module openconfig-interfaces { container interface-ref { description - "Reference to an interface or subinterface"; + "Reference to an interface or subinterface. The interface + that is being referenced is uniquely referenced based on + the specified interface and subinterface leaves. In contexts + where a Layer 3 interface is to be referenced, both the + interface and subinterface leaves must be populated, as + Layer 3 configuration within the OpenConfig models is + associated with a subinterface. In the case where a + Layer 2 interface is to be referenced, only the + interface is specified. + + The interface/subinterface leaf tuple must be used as + the means by which the interface is specified, regardless + of any other context information (e.g., key in a list)."; container config { description diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 225f7a3c7..8142662e9 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,8 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; + oc-ext:openconfig-version "1.5.1"; - oc-ext:openconfig-version "1.5.0"; + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "1.5.1"; + } revision "2023-03-27" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 6954ba1d6..1dc4a23df 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.5.0"; + oc-ext:openconfig-version "1.5.1"; + + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "1.5.1"; + } revision "2023-03-27" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 72fa3a898..d4f834a49 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.5.0"; + oc-ext:openconfig-version "1.5.1"; + + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "1.5.1"; + } revision "2023-03-27" { description @@ -1244,7 +1250,12 @@ module openconfig-isis { key "interface-id"; description - "This list contains ISIS interfaces."; + "This list contains ISIS interfaces. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index a2f724425..8c1d1d0ab 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,13 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; - oc-ext:openconfig-version "3.3.0"; +oc-ext:openconfig-version "3.3.1"; + + revision "2023-02-03" { + description + "Clarify usage of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description diff --git a/release/models/mpls/openconfig-mpls-ldp.yang b/release/models/mpls/openconfig-mpls-ldp.yang index d70e989f1..46fb6c363 100644 --- a/release/models/mpls/openconfig-mpls-ldp.yang +++ b/release/models/mpls/openconfig-mpls-ldp.yang @@ -43,7 +43,13 @@ module openconfig-mpls-ldp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.2.1"; + + revision "2023-02-06" { + description + "Add clarification of use of interface-ref."; + reference "3.2.1"; + } revision "2022-02-21" { description @@ -568,7 +574,12 @@ module openconfig-mpls-ldp { list interface { key "interface-id"; description - "list of per-interface LDP configurations"; + "List of per-interface LDP configurations. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/mpls/openconfig-mpls-rsvp.yang b/release/models/mpls/openconfig-mpls-rsvp.yang index 0efa126d0..2a3fdd79b 100644 --- a/release/models/mpls/openconfig-mpls-rsvp.yang +++ b/release/models/mpls/openconfig-mpls-rsvp.yang @@ -28,7 +28,13 @@ module openconfig-mpls-rsvp { parameters and LSP-specific configuration for constrained-path LSPs"; - oc-ext:openconfig-version "4.0.0"; + oc-ext:openconfig-version "4.0.1"; + + revision "2023-02-06" { + description + "Clarify use of interface-ref."; + reference "4.0.1"; + } revision "2022-03-27" { description @@ -534,7 +540,12 @@ module openconfig-mpls-rsvp { list interface { key "interface-id"; description - "list of per-interface RSVP configurations"; + "List of per-interface RSVP configurations. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index e06ca5361..8bef087e4 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -23,7 +23,13 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; - oc-ext:openconfig-version "3.3.0"; +oc-ext:openconfig-version "3.3.1"; + + revision "2023-02-03" { + description + "Clarify usage of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index d70cca984..0802208ba 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -30,7 +30,13 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.3.0"; + oc-ext:openconfig-version "3.3.1"; + + revision "2023-04-25" { + description + "Add clarifying comments on use of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description @@ -889,7 +895,7 @@ submodule openconfig-mpls-te { "Reference to the address of a previously configured external path computation server."; } - + leaf path-control { type oc-pcep:lsp-control-type; description diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index 0cf49a7b7..86061905b 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -71,7 +71,13 @@ module openconfig-mpls { +-------+ "; - oc-ext:openconfig-version "3.3.0"; + oc-ext:openconfig-version "3.3.1"; + + revision "2023-04-25" { + description + "Clarify usage of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description @@ -438,7 +444,12 @@ module openconfig-mpls { list interface { key "interface-id"; description - "List of TE interfaces"; + "List of TE interfaces. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { @@ -585,13 +596,20 @@ module openconfig-mpls { description "Top level grouping for attributes for MPLS-enabled interfaces."; + container interface-attributes { description "Parameters related to MPLS interfaces"; + list interface { key "interface-id"; description - "List of TE interfaces"; + "List of MPLS-enabled interfaces. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/multicast/openconfig-igmp.yang b/release/models/multicast/openconfig-igmp.yang index 5aa892ad3..4ed7881a8 100644 --- a/release/models/multicast/openconfig-igmp.yang +++ b/release/models/multicast/openconfig-igmp.yang @@ -26,7 +26,13 @@ module openconfig-igmp { description "An OpenConfig model for Internet Group Management Protocol (IGMP)."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; + + revision "2023-02-03" { + description + "Clarify use of interface-ref."; + reference "0.3.1"; + } revision "2021-05-17" { description @@ -303,7 +309,12 @@ module openconfig-igmp { key "interface-id"; description "This container defines interface IGMP configuration and - state information."; + state information. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/multicast/openconfig-pim.yang b/release/models/multicast/openconfig-pim.yang index 7c3b0e83a..56639da97 100644 --- a/release/models/multicast/openconfig-pim.yang +++ b/release/models/multicast/openconfig-pim.yang @@ -27,7 +27,13 @@ module openconfig-pim { description "An OpenConfig model for Protocol Independent Multicast (PIM)."; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.3"; + } revision "2021-06-16" { description @@ -292,7 +298,12 @@ module openconfig-pim { key "interface-id"; description "This container defines interface PIM configuration and - state information."; + state information. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index ac23b716b..3c422d96f 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.0.2"; + oc-ext:openconfig-version "4.0.3"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "4.0.3"; + } revision "2023-03-15" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 29dd6e012..e1710f31e 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.0.2"; + oc-ext:openconfig-version "4.0.3"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "4.0.3"; + } revision "2023-03-15" { description @@ -508,7 +514,12 @@ module openconfig-network-instance { key "id"; description - "An interface associated with the network instance"; + "An interface associated with the network instance. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { @@ -672,7 +683,7 @@ module openconfig-network-instance { connection points that can be used for this connection point). The active endpoint is selected based on the precedence that it is configured - with"; + with."; leaf endpoint-id { type leafref { @@ -689,6 +700,7 @@ module openconfig-network-instance { endpoint"; uses instance-endpoint-config; } + container state { config false; description @@ -966,7 +978,7 @@ module openconfig-network-instance { "Configuration parameters relating to an endpoint that is local to the current system"; - uses oc-if:interface-ref-common; + uses oc-if:interface-ref-common; leaf site-id { type uint16; diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index 301631321..f34976d97 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description @@ -352,7 +358,12 @@ submodule openconfig-ospfv2-area-interface { key "id"; description - "List of interfaces which are enabled within this area"; + "List of interfaces which are enabled within this area. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index a74ed90fd..fe60d78d4 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,9 +23,15 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; - revision "2022-02-10" { + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } + + revision "2022-02-10" { description "Fix spelling error in retransmission-queue-length leaf."; reference "0.4.0"; diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index d08f1a8d3..fbd7c5886 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index cbbd717a0..37a50b35a 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index 546587667..18f6836c8 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index cb73a5802..ebddd64a5 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/pcep/openconfig-pcep.yang b/release/models/pcep/openconfig-pcep.yang index eebbeae88..a6d3c3b0a 100644 --- a/release/models/pcep/openconfig-pcep.yang +++ b/release/models/pcep/openconfig-pcep.yang @@ -60,7 +60,13 @@ module openconfig-pcep { LSP parameters in those PCCs that delegate control over their LSPs to the PCE."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; + + revision "2023-04-25" { + description + "Add clarifying comments on use of interface-ref."; + reference "0.1.1"; + } revision "2022-02-11" { description @@ -140,10 +146,10 @@ module openconfig-pcep { container path-computation-servers { description "Defines PCE server parameters."; - + list path-computation-server { key "pce-server-address"; - + description "Configuration and state information for communication with a PCE server."; @@ -158,24 +164,24 @@ module openconfig-pcep { container config { description "PCE server configuration."; - + uses pce-server-config; } - + container state { config false; description "PCE server state."; - + uses pce-server-config; } - + uses pcep-timers-top; uses pcep-authentication-top; } } } - + grouping pce-server-config { description "Configuration data for establishing a PCEP session with pce servers."; @@ -188,7 +194,7 @@ module openconfig-pcep { When multiple candidate servers are specified for a single client, they are prioritized according to preference."; } - + leaf id { type string; description @@ -207,14 +213,14 @@ module openconfig-pcep { description "The source IP address used by PCC(Router) to establish PCEP session."; } - + leaf pce-type { type pce-mode-type; description "The type of PCEP capability supported which is advertised in the Open message when a PCEP session is established."; } - + leaf preference { type uint8; description @@ -233,7 +239,7 @@ module openconfig-pcep { for LSPs that are not controlled by any PCE (for example, LSPs that are statically configured at the PCC) but without delegating them."; } - + leaf pce-initiated-capability { type boolean; default false; @@ -241,7 +247,7 @@ module openconfig-pcep { "Indicates to PCE that PCC (Router) supports PCE-initiated LSP paths instantiation. A PCE can initiate LSPs only for PCCs that advertised this capability."; } - + leaf sr-support { type boolean; default false; @@ -305,7 +311,7 @@ module openconfig-pcep { before revoking LSP delegation and attempting to redelegate LSPs associated with the terminated PCEP session to an alternate PCE."; } - + leaf state-timeout-interval { type uint16; units seconds; @@ -315,7 +321,7 @@ module openconfig-pcep { and reverting to operator-defined default parameters or behaviors."; } } - + grouping pcep-authentication-top { description "Grouping containing PCEP authentication attributes"; @@ -336,7 +342,7 @@ module openconfig-pcep { } } } - + grouping pcep-authentication-config { description "PCEP authentication parameters container."; @@ -364,7 +370,7 @@ module openconfig-pcep { PCEP session"; } } - + grouping pcep-top { description "Top-level grouping for PCEP configuration."; diff --git a/release/models/platform/openconfig-platform-port.yang b/release/models/platform/openconfig-platform-port.yang index 68f5eabd5..effb85bb7 100644 --- a/release/models/platform/openconfig-platform-port.yang +++ b/release/models/platform/openconfig-platform-port.yang @@ -24,7 +24,13 @@ module openconfig-platform-port { "This module defines data related to PORT components in the openconfig-platform model"; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.0.1"; + + revision "2023-03-22" { + description + "Clarify use of the interface-ref type."; + reference "1.0.1"; + } revision "2023-01-19" { description diff --git a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang index 719401e48..9485ab3c4 100644 --- a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang +++ b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang @@ -21,7 +21,13 @@ submodule openconfig-pf-forwarding-policies { "This submodule contains configuration and operational state relating to the definition of policy-forwarding policies."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description diff --git a/release/models/policy-forwarding/openconfig-pf-interfaces.yang b/release/models/policy-forwarding/openconfig-pf-interfaces.yang index 868665a89..705e7f795 100644 --- a/release/models/policy-forwarding/openconfig-pf-interfaces.yang +++ b/release/models/policy-forwarding/openconfig-pf-interfaces.yang @@ -19,7 +19,13 @@ submodule openconfig-pf-interfaces { "This submodule contains groupings related to the association between interfaces and policy forwarding rules."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description @@ -88,7 +94,12 @@ submodule openconfig-pf-interfaces { description "Configuration and operationals state relating to the relationship between interfaces and policy-based forwarding - rules."; + rules. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { @@ -157,9 +168,12 @@ submodule openconfig-pf-interfaces { path "../../../../policies/policy/config/policy-id"; } description - "Apply the specific VRF selection policy on the interface. The referenced policy - MUST be of type VRF_SELECTION_POLICY. The VRF selection policy may coexist with - a policy-forwarding policy. + "Apply the specific VRF selection policy on the interface. + The referenced Interface must be resolved using the Interface + and Sub-interface leaves. + + The referenced policy MUST be of the type VRF_SELECTION_POLICY. + The VRF selection policy may coexist with a policy-forwarding policy. The policy specified in this leaf is used to specifically choose the L3VRF network instance that is used for specific input criteria of packets."; diff --git a/release/models/policy-forwarding/openconfig-pf-path-groups.yang b/release/models/policy-forwarding/openconfig-pf-path-groups.yang index cf5054aa8..c1c9283cb 100644 --- a/release/models/policy-forwarding/openconfig-pf-path-groups.yang +++ b/release/models/policy-forwarding/openconfig-pf-path-groups.yang @@ -18,7 +18,13 @@ submodule openconfig-pf-path-groups { forwarding entities together to be used as policy forwarding targets."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description diff --git a/release/models/policy-forwarding/openconfig-policy-forwarding.yang b/release/models/policy-forwarding/openconfig-policy-forwarding.yang index 6375d187b..c6d37209a 100644 --- a/release/models/policy-forwarding/openconfig-policy-forwarding.yang +++ b/release/models/policy-forwarding/openconfig-policy-forwarding.yang @@ -81,7 +81,13 @@ module openconfig-policy-forwarding { The forwarding action of the corresponding policy is set to PATH_GROUP and references the configured group of LSPs."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 71ab36f9b..e679f6fe6 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 37f6aeb1e..eca7a5e21 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description @@ -877,7 +883,7 @@ submodule openconfig-qos-interfaces { container output { description "Top-level container for QoS data related to the egress - interface"; + interface."; container config { description @@ -913,7 +919,12 @@ submodule openconfig-qos-interfaces { list interface { key "interface-id"; description - "List of interfaces referenced by QoS entities."; + "List of interfaces referenced by QoS entities. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 8b6c276b0..ef7b324f6 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index c6d2b8e4d..a01610cfe 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description diff --git a/release/models/relay-agent/openconfig-relay-agent.yang b/release/models/relay-agent/openconfig-relay-agent.yang index f2f6181aa..22889af66 100644 --- a/release/models/relay-agent/openconfig-relay-agent.yang +++ b/release/models/relay-agent/openconfig-relay-agent.yang @@ -27,7 +27,13 @@ module openconfig-relay-agent { packets. The supports both DHCP and DHCPv6 and device-wide and per-interface settings."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "0.1.2"; + + revision "2023-02-06" { + description + "Clarify usage of interface-ref."; + reference "0.1.2"; + } revision "2018-11-21" { description @@ -87,7 +93,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -164,7 +169,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -282,7 +286,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -312,7 +315,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -377,7 +379,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -422,7 +423,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -678,7 +678,12 @@ module openconfig-relay-agent { key "id"; description "List of interfaces on which the relay agent is - configured."; + configured. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { @@ -696,7 +701,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -766,7 +770,12 @@ module openconfig-relay-agent { key "id"; description "List of interfaces on which the relay agent is - configured."; + configured. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { @@ -784,7 +793,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -822,4 +830,4 @@ module openconfig-relay-agent { // augment statements -} \ No newline at end of file +} diff --git a/release/models/segment-routing/openconfig-segment-routing.yang b/release/models/segment-routing/openconfig-segment-routing.yang index ebb931048..e40e57bda 100644 --- a/release/models/segment-routing/openconfig-segment-routing.yang +++ b/release/models/segment-routing/openconfig-segment-routing.yang @@ -35,7 +35,13 @@ module openconfig-segment-routing { - SR SID advertisements - instantiated within the relevant IGP. - SR-specific counters - instantied within the relevant dataplane."; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.3.2"; + + revision "2023-02-06" { + description + "Clarify use of interface-ref."; + reference "0.3.2"; + } revision "2021-07-28" { description @@ -332,7 +338,12 @@ module openconfig-segment-routing { description "Parameters and MPLS-specific configuration relating to Segment - Routing on an interface."; + Routing on an interface. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { From 20e964b5f84ff21845ab885ea4a700d740f0b2a2 Mon Sep 17 00:00:00 2001 From: Michael Ore Date: Mon, 1 May 2023 15:02:02 -0400 Subject: [PATCH 68/86] Add atomic annotations to containers in openconfig-aft. (#860) Changes to be committed: modified: openconfig-aft-common.yang modified: openconfig-aft-ethernet.yang modified: openconfig-aft-ipv4.yang modified: openconfig-aft-ipv6.yang modified: openconfig-aft-mpls.yang modified: openconfig-aft-pf.yang Add the atomic attribute to the above aft yang containers. --------- Co-authored-by: Dan Rautio --- release/models/aft/openconfig-aft-common.yang | 10 +++++++++- release/models/aft/openconfig-aft-ethernet.yang | 9 ++++++++- release/models/aft/openconfig-aft-ipv4.yang | 9 ++++++++- release/models/aft/openconfig-aft-ipv6.yang | 9 ++++++++- release/models/aft/openconfig-aft-mpls.yang | 9 ++++++++- release/models/aft/openconfig-aft-pf.yang | 9 ++++++++- release/models/aft/openconfig-aft-state-synced.yang | 8 +++++++- release/models/aft/openconfig-aft.yang | 8 +++++++- 8 files changed, 63 insertions(+), 8 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 3d4b86cb7..b2c44dad6 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -154,6 +160,7 @@ submodule openconfig-aft-common { list next-hop { key "index"; + oc-ext:telemetry-atomic; description "A next-hop associated with the forwarding instance."; @@ -417,6 +424,7 @@ submodule openconfig-aft-common { list next-hop-group { key "id"; + oc-ext:telemetry-atomic; description "An individual set of next-hops grouped into a common group. Each entry within an abstract forwarding table points to a diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index 57ef4205f..d0b85dfc7 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -137,6 +143,7 @@ submodule openconfig-aft-ethernet { list mac-entry { key "mac-address"; + oc-ext:telemetry-atomic; description "List of the Ethernet entries within the abstract forwarding table. This list is keyed by the outer MAC address diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index e43766513..04d4054c2 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -136,6 +142,7 @@ submodule openconfig-aft-ipv4 { list ipv4-entry { key "prefix"; + oc-ext:telemetry-atomic; description "List of the IPv4 unicast entries within the abstract forwarding table. This list is keyed by the destination IPv4 diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 4c9448213..6b6cd1937 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -137,6 +143,7 @@ submodule openconfig-aft-ipv6 { list ipv6-entry { key "prefix"; + oc-ext:telemetry-atomic; description "List of the IPv6 unicast entries within the abstract forwarding table. This list is keyed by the destination IPv6 diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 2eb2ccfc8..4b4fd828c 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -138,6 +144,7 @@ submodule openconfig-aft-mpls { list label-entry { key "label"; + oc-ext:telemetry-atomic; description "List of the MPLS entries within the abstract forwarding table. This list is keyed by the top-most MPLS diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 59cd45fc8..85ee9d78f 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -145,6 +151,7 @@ submodule openconfig-aft-pf { list policy-forwarding-entry { key "index"; + oc-ext:telemetry-atomic; description "List of the policy forwarding entries within the abstract forwarding table. Each entry is uniquely identified by an diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang index e99163afe..a20dd9257 100644 --- a/release/models/aft/openconfig-aft-state-synced.yang +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -16,7 +16,13 @@ submodule openconfig-aft-state-synced { "Submodule containing definitions of groupings for the state synced signals corresponding to various abstract forwarding tables."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index d601d6910..c204271de 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -42,7 +42,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description From 30c91d20808c726d1d313224fcb6459221312df1 Mon Sep 17 00:00:00 2001 From: Benson Schliesser Date: Mon, 1 May 2023 17:49:57 -0400 Subject: [PATCH 69/86] Fix typos in openconfig-mpls-te.yang (#864) * fixed typo CSFP to CSPF in openconfig-mpls-te.yang --- release/models/mpls/openconfig-mpls-igp.yang | 8 +++++++- release/models/mpls/openconfig-mpls-static.yang | 8 +++++++- release/models/mpls/openconfig-mpls-te.yang | 12 +++++++++--- release/models/mpls/openconfig-mpls.yang | 8 +++++++- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index 8c1d1d0ab..157d443b8 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,13 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; -oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-02-03" { description diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index 8bef087e4..268d643a5 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -23,7 +23,13 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; -oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-02-03" { description diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index 0802208ba..9553b7d86 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -30,7 +30,13 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-04-25" { description @@ -878,7 +884,7 @@ submodule openconfig-mpls-te { type cspf-tie-breaking; description "Determine the tie-breaking method to choose between - equally desirable paths during CSFP computation"; + equally desirable paths during CSPF computation"; } leaf path-computation-server { @@ -896,7 +902,7 @@ submodule openconfig-mpls-te { external path computation server."; } - leaf path-control { + leaf path-control { type oc-pcep:lsp-control-type; description "Set the LSP path control mode as PCE_DELEGATED diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index 86061905b..85ca939dd 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -71,7 +71,13 @@ module openconfig-mpls { +-------+ "; - oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-04-25" { description From 9c33b62f89dc0aee60783135f6e8da98991218bc Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Mon, 1 May 2023 16:23:23 -0700 Subject: [PATCH 70/86] Add isis total-lsp count (#831) * Update release/models/isis/openconfig-isis.yang *Add total-lsps leaf to count ISIS lsp's per level --- release/models/isis/openconfig-isis-lsp.yang | 8 +++++++- release/models/isis/openconfig-isis-routing.yang | 8 +++++++- release/models/isis/openconfig-isis.yang | 14 +++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 8142662e9..a8415a632 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.5.1"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-05-01" { + description + "Add ISIS total-lsps counter."; + reference "1.6.0"; + } revision "2023-04-25" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 1dc4a23df..df8af637b 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.5.1"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-05-01" { + description + "Add ISIS total-lsps counter."; + reference "1.6.0"; + } revision "2023-04-25" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index d4f834a49..a27a82f76 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.5.1"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-05-01" { + description + "Add ISIS total-lsps counter."; + reference "1.6.0"; + } revision "2023-04-25" { description @@ -2035,6 +2041,12 @@ module openconfig-isis { description "IS-IS counters that are relevant to the system IS-IS context."; + leaf total-lsps { + type oc-yang:counter32; + description + "Number of LSPs in the database at the system level."; + } + leaf corrupted-lsps { type oc-yang:counter32; description From bec0ac781632499a5092c94ed7089b9fe9b37bba Mon Sep 17 00:00:00 2001 From: missaesasaya Date: Tue, 2 May 2023 16:48:04 -0300 Subject: [PATCH 71/86] Fix openconfig-icmpv6-types module prefix (#866) Co-authored-by: Missae W. Sasaya --- release/models/acl/openconfig-icmpv6-types.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/acl/openconfig-icmpv6-types.yang b/release/models/acl/openconfig-icmpv6-types.yang index 3b263a9d3..ecd77cabf 100644 --- a/release/models/acl/openconfig-icmpv6-types.yang +++ b/release/models/acl/openconfig-icmpv6-types.yang @@ -3,7 +3,7 @@ module openconfig-icmpv6-types { yang-version "1"; namespace "http://openconfig.net/yang/openconfig-icmpv6-types"; - prefix "oc-icmpv4-types"; + prefix "oc-icmpv6-types"; import openconfig-extensions { prefix oc-ext; } @@ -17,7 +17,13 @@ module openconfig-icmpv6-types { "OpenConfig module defining the types and coresponding subcodes for ICMPv6."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; + + revision "2023-05-02" { + description + "Fix module prefix."; + reference "0.1.1"; + } revision "2023-01-26" { description From f2a75367e040eb5787236ca458ca3527048c7693 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Thu, 4 May 2023 12:32:40 -0700 Subject: [PATCH 72/86] Add system wide support for utilization thresholds config (#817) --- .../platform/openconfig-platform-common.yang | 49 +++++--- .../openconfig-platform-linecard.yang | 10 +- .../models/platform/openconfig-platform.yang | 13 +- release/models/system/.spec.yml | 2 + .../system/openconfig-system-utilization.yang | 115 ++++++++++++++++++ 5 files changed, 166 insertions(+), 23 deletions(-) create mode 100644 release/models/system/openconfig-system-utilization.yang diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 9bb8cd140..d0195804b 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,14 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.22.0"; + oc-ext:openconfig-version "0.23.0"; + + revision "2023-02-13" { + description + "Refactor resource utilization threshold config into a separate grouping. + Update 'utilization resource' to 'resource utilization'."; + reference "0.23.0"; + } revision "2022-12-20" { description @@ -80,13 +87,13 @@ submodule openconfig-platform-common { // grouping statements - grouping platform-utilization-top { + grouping platform-resource-utilization-top { description - "Top level of utilization."; + "Top level grouping of platform resource utilization."; container utilization { description - "Utilization of the component."; + "Resource utilization of the component."; container resources { description @@ -109,7 +116,7 @@ submodule openconfig-platform-common { description "Configuration data for each resource."; - uses platform-utilization-resource-config; + uses platform-resource-utilization-config; } container state { @@ -117,24 +124,17 @@ submodule openconfig-platform-common { description "Operational state data for each resource."; - uses platform-utilization-resource-config; - uses platform-utilization-resource-state; + uses platform-resource-utilization-config; + uses platform-resource-utilization-state; } } } } } - grouping platform-utilization-resource-config { + grouping resource-utilization-threshold-common { description - "Configuration data for utilization resource."; - - leaf name { - type string; - description - "Resource name within the component."; - } - + "Common threshold configuration model for resource utilization."; leaf used-threshold-upper { type oc-types:percentage; description @@ -150,9 +150,22 @@ submodule openconfig-platform-common { } } - grouping platform-utilization-resource-state { + grouping platform-resource-utilization-config { + description + "Configuration data for resource utilization."; + + leaf name { + type string; + description + "Resource name within the component."; + } + + uses resource-utilization-threshold-common; + } + + grouping platform-resource-utilization-state { description - "Operational state data for utilization resource."; + "Operational state data for resource utilization."; leaf used { type uint64; diff --git a/release/models/platform/openconfig-platform-linecard.yang b/release/models/platform/openconfig-platform-linecard.yang index 8ac1cfbcd..46c5d2ccd 100644 --- a/release/models/platform/openconfig-platform-linecard.yang +++ b/release/models/platform/openconfig-platform-linecard.yang @@ -22,7 +22,13 @@ module openconfig-platform-linecard { "This module defines data related to LINECARD components in the openconfig-platform model"; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2023-02-13" { + description + "Renamed platform-utilization-top to platform-resource-utilization-top."; + reference "1.1.0"; + } revision "2022-07-28" { description @@ -115,7 +121,7 @@ module openconfig-platform-linecard { uses linecard-config; uses linecard-state; } - uses oc-platform:platform-utilization-top; + uses oc-platform:platform-resource-utilization-top; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 4a6d874b7..7a1488ba4 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,14 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.22.0"; + oc-ext:openconfig-version "0.23.0"; + + revision "2023-02-13" { + description + "Refactor resource utilization threshold config into a separate grouping. + Update 'utilization resource' to 'resource utilization'."; + reference "0.23.0"; + } revision "2022-12-20" { description @@ -922,7 +929,7 @@ module openconfig-platform { "Operational state data for chassis components"; } - uses platform-utilization-top; + uses platform-resource-utilization-top; } // TODO(aashaikh): linecard container is already defined in @@ -1078,7 +1085,7 @@ module openconfig-platform { "Operational state data for chip components"; } - uses platform-utilization-top; + uses platform-resource-utilization-top; } container backplane { diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index f66b1b875..f1f5b62a1 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -5,6 +5,7 @@ - yang/system/openconfig-system.yang - yang/system/openconfig-system-terminal.yang - yang/system/openconfig-system-logging.yang + - yang/system/openconfig-system-utilization.yang - yang/system/openconfig-procmon.yang - yang/system/openconfig-aaa.yang - yang/system/openconfig-aaa-tacacs.yang @@ -16,6 +17,7 @@ - yang/system/openconfig-system-controlplane.yang build: - yang/system/openconfig-system.yang + - yang/system/openconfig-system-utilization.yang run-ci: true - name: openconfig-system-ext build: diff --git a/release/models/system/openconfig-system-utilization.yang b/release/models/system/openconfig-system-utilization.yang new file mode 100644 index 000000000..08d1c8160 --- /dev/null +++ b/release/models/system/openconfig-system-utilization.yang @@ -0,0 +1,115 @@ +module openconfig-system-utilization { + yang-version "1"; + + namespace "http://openconfig.net/yang/system-utilization"; + prefix "oc-sys-util"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { prefix oc-sys; } + import openconfig-platform { prefix oc-platform; } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds configuration and operational state for + system wide resource utilization thresholds."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-02-13" { + description + "Add system wide utilization thresholds."; + reference + "0.1.0"; + } + + grouping system-resource-utilization-config { + description + "Configuration data for resource utilization. The configuration added here should + apply across all of the components that matches the respective resource. + /components/component/*/utilization/resources/resource/name"; + + + leaf name { + type string; + description + "Resource name within the system."; + } + + uses oc-platform:resource-utilization-threshold-common; + } + + grouping system-resource-utilization-state { + description + "State data for resource utilization."; + + leaf-list active-component-list { + type leafref { + path "/oc-platform:components/oc-platform:component/oc-platform:config/oc-platform:name"; + } + + description + "List of references to each component which has this resource."; + } + } + + grouping system-resource-utilization-top { + description + "Top level grouping for system wide configuration of resources for + all components."; + + container "utilization" { + description + "System wide resource utilization configuration."; + + container "resources" { + description + "Enclosing container for the resources in the entire system. The system + resource names should be aggregated from the following collections: + + * /components/component/chassis/utilization/resources/resource + * /components/component/integrate-circuit/utilization/resources/resource + * /components/component/linecard/utilization/resources/resource."; + + list "resource" { + key "name"; + description + "The list of all resources across all platform components keyed by + resource name."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "References the resource name."; + } + + container "config" { + description + "Configuration data for resource utilization."; + uses system-resource-utilization-config; + } + + container "state" { + config false; + description + "Operational state data for resource utilization."; + + uses system-resource-utilization-config; + uses system-resource-utilization-state; + } + } + } + } + } + + augment "/oc-sys:system" { + description + "Add system resource utilization."; + uses system-resource-utilization-top; + } +} From aec94a15243712da1d236e2d5c30434dcb7ccff9 Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Tue, 16 May 2023 13:46:03 -0400 Subject: [PATCH 73/86] Change control-plane-vnis property to leaf-list (#840) * Change control-plane-vnis property to leaf-list --- .../models/network-instance/openconfig-evpn.yang | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index 93c18972c..a2fbdd7f8 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,9 +40,15 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; - revision "2023-01-24" { + revision "2023-03-08" { + description + "Change control-plane-vnis property to leaf-list"; + reference "0.5.0"; + } + + revision "2023-01-24" { description "Add control word support"; reference "0.4.0"; @@ -1175,8 +1181,8 @@ module openconfig-evpn { the remote VTEP peer was discovered."; } - leaf control-plane-vnis { - type string; + leaf-list control-plane-vnis { + type oc-evpn-types:vni-id; description "The control-plane VNIs are all of the VNIs that are discovered by the control-plane behind this peer VTEP"; From 3327d5dbe28c5233b1b6fb0aa705763b714a584b Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Thu, 18 May 2023 10:27:10 -0600 Subject: [PATCH 74/86] Adding total frame counts for retry calculations #786 (#812) * Adding total frame counts for retry calculations #786 * Adding total frame counts for retry calculations #786 --- release/models/wifi/openconfig-wifi-mac.yang | 57 +++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index bac0cb419..fb0699619 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,13 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-02-14" { + description + "Adds totals to retry metrics to calculate retry percentages."; + reference "1.3.0"; + } revision "2023-01-17" { description @@ -861,11 +867,24 @@ module openconfig-wifi-mac { within this BSS."; } + leaf rx-total-frames { + type oc-yang:counter64; + description + "Total number of received frames within this BSS."; + } + leaf rx-retries-data { type oc-yang:counter64; description "Number of received QoS Data frames with the Retry bit set"; } + + leaf rx-total-data { + type oc-yang:counter64; + description + "Number of received QoS Data frames"; + } + leaf rx-retries-subframe { type oc-yang:counter64; description @@ -873,6 +892,12 @@ module openconfig-wifi-mac { and require retransmission."; } + leaf rx-total-subframe { + type oc-yang:counter64; + description + "Total Aggregated MPDUs received"; + } + leaf rx-bytes-data { type oc-yang:counter64; description @@ -1132,6 +1157,12 @@ module openconfig-wifi-mac { "Number of frames transmitted with the Retry bit set"; } + leaf tx-total-frames { + type oc-yang:counter64; + description + "Number of frames transmitted"; + } + leaf tx-retries-data { type oc-yang:counter64; description @@ -1139,6 +1170,12 @@ module openconfig-wifi-mac { set"; } + leaf tx-total-data { + type oc-yang:counter64; + description + "Number of transmitted QoS Data frames"; + } + leaf tx-retries-subframe { type oc-yang:counter64; description @@ -1146,6 +1183,12 @@ module openconfig-wifi-mac { and require retransmission."; } + leaf tx-total-subframe { + type oc-yang:counter64; + description + "Aggregated MPDUs total frames transmitted."; + } + leaf tx-bytes-data { type oc-yang:counter64; description @@ -1195,11 +1238,23 @@ module openconfig-wifi-mac { "Rx retried frames from this client."; } + leaf rx-total { + type oc-yang:counter64; + description + "Rx frames from this client."; + } + leaf tx-retries { type oc-yang:counter64; description "Tx retried frames to this client."; } + + leaf tx-total { + type oc-yang:counter64; + description + "Tx frames to this client."; + } } } From 3e9157cb94225c46e2006acbe14d3e2034574614 Mon Sep 17 00:00:00 2001 From: Nathan Kitchen Date: Wed, 24 May 2023 13:08:53 -0700 Subject: [PATCH 75/86] Allow transceiver vendor-rev values up to length 4 (#868) SFF-8472, the spec for the management interface of SFP+ transceivers, specifies that the vendor revision number is a 4-byte field --- .../platform/openconfig-platform-transceiver.yang | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index cd460ce3b..388953b49 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -66,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.10.1"; + oc-ext:openconfig-version "0.11.0"; + + revision "2023-05-03" { + description + "Increase max length of vendor-rev to 4."; + reference "0.11.0"; + } revision "2023-02-10" { description @@ -601,10 +607,10 @@ module openconfig-platform-transceiver { leaf vendor-rev { type string { - length 1..2; + length 1..4; } description - "Transceiver vendor's revision number. 2-octet field that + "Transceiver vendor's revision number. Field of 1 to 4 octets that contains ASCII characters, left-aligned and padded on the right with ASCII spaces (20h)"; } From 5c3a90c948f933626acf95148a34936e47d0a722 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Thu, 25 May 2023 10:57:42 -0700 Subject: [PATCH 76/86] Add IPv4 address type (#872) Add ipv4-address-type supporting PRIMARY and SECONDARY values used when there is more than one IP address on an interface --- .../models/interfaces/openconfig-if-ip.yang | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 6bb2354b9..a0b74fee9 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,13 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2023-04-12" { + description + "Add ipv4 address type configuration."; + reference "3.3.0"; + } revision "2023-02-06" { description @@ -173,6 +179,24 @@ module openconfig-if-ip { "The origin of a neighbor entry."; } + typedef ipv4-address-type { + type enumeration { + enum PRIMARY { + description + "The primary address on the interface. There can only be one primary + address associated on an interface."; + } + enum SECONDARY { + description + "Secondary address on an interface. There can be multiple secondary + addresses associated on an interface."; + } + } + + description + "The type of an IPv4 address."; + } + // grouping statements grouping ip-common-global-config { @@ -390,7 +414,6 @@ module openconfig-if-ip { } grouping ipv4-address-config { - description "Per IPv4 adresss configuration data for the interface."; @@ -408,6 +431,16 @@ module openconfig-if-ip { description "The length of the subnet prefix."; } + + leaf type { + type ipv4-address-type; + default PRIMARY; + description + "Specifies the explicit type of the IPv4 address being assigned + to the interface. By default, addresses are assumed to be a primary address. + Where secondary addresses is to be configured, this leaf should be set + to SECONDARY."; + } } grouping ipv4-neighbor-config { @@ -526,7 +559,7 @@ module openconfig-if-ip { default GLOBAL_UNICAST; description "Specifies the explicit type of the IPv6 address being assigned - to the subinterface. By default, addresses are assumed to be + to the interface. By default, addresses are assumed to be global unicast. Where a link-local address is to be explicitly configured, this leaf should be set to LINK_LOCAL."; } From d1f77330648a3f6a8daac1cb6f16302007d5da92 Mon Sep 17 00:00:00 2001 From: Alex Webster <31635844+awebsters@users.noreply.github.com> Date: Tue, 30 May 2023 20:46:45 -0400 Subject: [PATCH 77/86] Set metric type leaf (#863) * adding set-metric-type field to policy match condition --- release/models/isis/openconfig-isis-policy.yang | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/release/models/isis/openconfig-isis-policy.yang b/release/models/isis/openconfig-isis-policy.yang index 3f373d041..21ee06eb7 100644 --- a/release/models/isis/openconfig-isis-policy.yang +++ b/release/models/isis/openconfig-isis-policy.yang @@ -26,7 +26,13 @@ module openconfig-isis-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-04-28" { + description + "Adding set metric-type leaf"; + reference "0.7.0"; + } revision "2023-02-27" { description @@ -144,6 +150,12 @@ module openconfig-isis-policy { to an IS-IS instance that has multiple levels configured within it"; } + + leaf set-metric-type { + type isis-types:metric-type; + description + "Set the type of the route to redistribute to INTERNAL or EXTERNAL"; + } } grouping isis-actions { From 1438858ca689d31128c022e0f6ef7b33590640a1 Mon Sep 17 00:00:00 2001 From: Benson Schliesser Date: Tue, 6 Jun 2023 18:27:24 -0400 Subject: [PATCH 78/86] removing unused LOG_DESTINATION_TYPE identities (#869) (M) release/models/system/openconfig-system-logging.yang * removing unused LOG_DESTINATION_TYPE identities from openconfig-system-logging --- .../system/openconfig-system-logging.yang | 37 ++++--------------- 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/release/models/system/openconfig-system-logging.yang b/release/models/system/openconfig-system-logging.yang index 299838908..3fcc7c5cd 100644 --- a/release/models/system/openconfig-system-logging.yang +++ b/release/models/system/openconfig-system-logging.yang @@ -23,7 +23,13 @@ module openconfig-system-logging { "This module defines configuration and operational state data for common logging facilities on network systems."; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.5.0"; + + revision "2023-05-04" { + description + "removing LOG_DESTINATION_TYPE identities"; + reference "0.5.0"; + } revision "2022-12-29" { description @@ -226,35 +232,6 @@ module openconfig-system-logging { "IETF RFC 5424 - The Syslog Protocol"; } - identity LOG_DESTINATION_TYPE { - description - "Base identity for destination for logging messages"; - } - - identity DEST_CONSOLE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to the console"; - } - - identity DEST_BUFFER { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to and in-memory circular buffer"; - } - - identity DEST_FILE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to a local file"; - } - - identity DEST_REMOTE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to a remote syslog server"; - } - // typedef statements typedef syslog-severity { From 15ca44425081bbe8e32db61fc320c023a3888c42 Mon Sep 17 00:00:00 2001 From: "Missae W. Sasaya" Date: Thu, 8 Jun 2023 13:55:03 -0300 Subject: [PATCH 79/86] Large communities in send-community leaf (#852) * Configuring send-community per AFI-SAFI at neighbor/peer-group (#809) * Add support for BGP large communities in send-community (#809) - Leaf send-community was changed into a leaf-list to allow the combination of different community types replacing enum value BOTH. --------- Co-authored-by: Missae W. Sasaya --- .../openconfig-bgp-common-multiprotocol.yang | 28 +++++++++++++++- .../bgp/openconfig-bgp-common-structure.yang | 19 ++++++++++- release/models/bgp/openconfig-bgp-common.yang | 31 ++++++++++++++++- release/models/bgp/openconfig-bgp-errors.yang | 12 ++++++- release/models/bgp/openconfig-bgp-global.yang | 19 ++++++++++- .../models/bgp/openconfig-bgp-neighbor.yang | 19 ++++++++++- .../models/bgp/openconfig-bgp-peer-group.yang | 19 ++++++++++- release/models/bgp/openconfig-bgp-types.yang | 33 +++++++++++++++---- release/models/bgp/openconfig-bgp.yang | 19 ++++++++++- 9 files changed, 185 insertions(+), 14 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 385e2008b..8283fdad4 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,24 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description @@ -196,6 +213,15 @@ submodule openconfig-bgp-common-multiprotocol { "This leaf indicates whether the AFI-SAFI is enabled for all neighbors or groups."; } + + leaf-list send-community-type { + type oc-bgp-types:community-type; + description + "Specify which types of community should be sent to the + neighbor or group. The default is to not send the + community attribute. This takes precedence over the neighbor + or group configuration"; + } } grouping bgp-common-mp-afi-safi-config { diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 6ab35ba12..8d3bed8a9 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,24 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 90d0b0d87..19726256e 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,24 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description @@ -260,8 +277,20 @@ submodule openconfig-bgp-common { } leaf send-community { + status deprecated; type oc-bgp-types:community-type; default "NONE"; + description + "This leaf has been deprecated and replaced by send-community-type to + support large communities. + + Specify which types of community should be sent to the + neighbor or group. The default is to not send the + community attribute"; + } + + leaf-list send-community-type { + type oc-bgp-types:community-type; description "Specify which types of community should be sent to the neighbor or group. The default is to not send the diff --git a/release/models/bgp/openconfig-bgp-errors.yang b/release/models/bgp/openconfig-bgp-errors.yang index cbcb53501..d76233820 100644 --- a/release/models/bgp/openconfig-bgp-errors.yang +++ b/release/models/bgp/openconfig-bgp-errors.yang @@ -18,7 +18,17 @@ submodule openconfig-bgp-errors { "This module defines BGP NOTIFICATION message error codes and subcodes"; - oc-ext:openconfig-version "5.3.1"; + oc-ext:openconfig-version "5.4.0"; + + revision "2023-03-31" { + description + "Add support for BGP large communities [rfc8092] in + send-community-type + + Types impacted: + - community-type"; + reference "5.4.0"; + } revision "2021-08-06" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 2157c236a..d02c63f88 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,24 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index ce798b395..f442bfc3a 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,24 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index d765e961a..cbd01ebbf 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,24 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-types.yang b/release/models/bgp/openconfig-bgp-types.yang index d3117f7d6..c9a7d01ad 100644 --- a/release/models/bgp/openconfig-bgp-types.yang +++ b/release/models/bgp/openconfig-bgp-types.yang @@ -25,7 +25,17 @@ module openconfig-bgp-types { policy. It can be imported by modules that make use of BGP attributes"; - oc-ext:openconfig-version "5.3.1"; + oc-ext:openconfig-version "5.4.0"; + + revision "2023-03-31" { + description + "Add support for BGP large communities [rfc8092] in + send-community + + Types impacted: + - community-type"; + reference "5.4.0"; + } revision "2021-08-06" { description @@ -713,23 +723,34 @@ module openconfig-bgp-types { typedef community-type { type enumeration { enum STANDARD { - description "Send only standard communities"; + description "Send standard communities"; } enum EXTENDED { - description "Send only extended communities"; + description "Send extended communities"; + } + enum LARGE { + description "Send large communities"; } enum BOTH { - description "Send both standard and extended communities"; + description + "Send both standard and extended communities. + This value has been deprecated because the node is now + a leaf-list."; + status deprecated; } enum NONE { - description "Do not send any community attribute"; + description + "Do not send any community attribute. + This value has been deprecated because the node is now + a leaf-list."; + status deprecated; } } description "type describing variations of community attributes: STANDARD: standard BGP community [rfc1997] EXTENDED: extended BGP community [rfc4360] - BOTH: both standard and extended community"; + LARGE: large BGP community [rfc8092]"; } diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index a0068f4cf..a2bcf25b8 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,24 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description From 6b3cb3566d019b8d0682276d4e34dc8f2aa7c49e Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Tue, 20 Jun 2023 09:21:19 -0700 Subject: [PATCH 80/86] Skip yanglint in CI (#894) * Trigger Build * Try new image * skip yanglint --- cloudbuild.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 7ba05e292..a53dcde45 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -87,9 +87,9 @@ steps: -pr-head-repo-url=$_HEAD_REPO_URL -commit-sha=$COMMIT_SHA -pr-number=$_PR_NUMBER - -skipped-validators=confd + -skipped-validators=confd,yanglint -extra-pyang-versions=2.2.1 - -compat-report=yanglint + #-compat-report=yanglint -branch=$BRANCH_NAME secretEnv: ['GITHUB_ACCESS_TOKEN'] env: @@ -130,7 +130,7 @@ steps: dir: '/go/src/github.com/openconfig/pattern-regex-tests' waitFor: ['regexp clone'] id: 'regexp dep' -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/regexp/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -156,7 +156,7 @@ steps: args: ['cp', 'gs://openconfig/yanglint.deb', '/workspace/yanglint.deb'] waitFor: ['validator prep'] id: 'yanglint prep2' -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/yanglint/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -194,7 +194,7 @@ steps: id: 'misc-checks' ############### OC-PYANG ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/oc-pyang/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -223,7 +223,7 @@ steps: - 'GOPATH=/go' waitFor: ['go path creation'] id: 'goyang-ygot prep' -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/goyang-ygot/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -241,7 +241,7 @@ steps: id: 'goyang-ygot' ############### PYANG ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyang/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -259,7 +259,7 @@ steps: id: 'pyang' ############### PYANGBIND ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyangbind/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -277,7 +277,7 @@ steps: id: 'pyangbind' ############### COMPATIBILITY REPORT ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/compat_report.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] From 51e534ee090d8c641fa886ab13422e8e94a68774 Mon Sep 17 00:00:00 2001 From: xavier-contreras <41588868+xavier-contreras@users.noreply.github.com> Date: Tue, 20 Jun 2023 15:46:59 -0700 Subject: [PATCH 81/86] Update WiFi models field descriptions (#881) * Split the client phy-rate into separate rx/tx phy-rate leaves. This is https://github.com/openconfig/public/issues/705 * Revert "Split the client phy-rate into separate rx/tx phy-rate leaves." This reverts commit 80380e704080fb5646321d92850e6d9e3cf67261. * Specifies units to tx/rx phy-rate * Fixes some minor typos, adds full stop to descriptions, etc. * Fixed wording. * s/clients-state./clients-state --- .../models/wifi/openconfig-access-points.yang | 10 ++- .../models/wifi/openconfig-ap-interfaces.yang | 36 ++++++---- .../models/wifi/openconfig-ap-manager.yang | 12 +++- release/models/wifi/openconfig-wifi-mac.yang | 68 +++++++++++-------- release/models/wifi/openconfig-wifi-phy.yang | 30 ++++---- .../models/wifi/openconfig-wifi-types.yang | 60 ++++++++-------- 6 files changed, 127 insertions(+), 89 deletions(-) diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index eb6241194..df9629969 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -27,7 +27,13 @@ module openconfig-access-points { "This module defines the top level WiFi Configurations for a list of Access Points."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.1.1"; + + revision "2023-05-26" { + description + "Fix typos in descriptions."; + reference "1.1.1"; + } revision "2023-03-22" { description @@ -122,7 +128,7 @@ module openconfig-access-points { list ap-manager { key "id"; description - "Manager(s) this AP is assinged to, referenced by id."; + "Manager(s) this AP is assigned to, referenced by id."; leaf id { type leafref { diff --git a/release/models/wifi/openconfig-ap-interfaces.yang b/release/models/wifi/openconfig-ap-interfaces.yang index e0603af2d..b54315341 100644 --- a/release/models/wifi/openconfig-ap-interfaces.yang +++ b/release/models/wifi/openconfig-ap-interfaces.yang @@ -32,7 +32,13 @@ module openconfig-ap-interfaces { "This module defines the configuration and state data for non-radio interfaces on WiFi Access Points."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.0.1"; + + revision "2023-05-26" { + description + "Add full stop to all descriptions."; + reference "1.0.1"; + } revision "2021-08-02" { description @@ -42,7 +48,7 @@ module openconfig-ap-interfaces { revision "2020-03-24" { description - "Update namespace based on new directory structure"; + "Update namespace based on new directory structure."; reference "0.1.1"; } @@ -55,7 +61,7 @@ module openconfig-ap-interfaces { grouping ap-interfaces-top { description "Top-level grouping for AP interface configuration and - operational state data"; + operational state data."; container interfaces { description @@ -73,13 +79,13 @@ module openconfig-ap-interfaces { path "../config/name"; } description - "References the name of the interface"; + "References the name of the interface."; } container config { description "Configurable items at the global, physical interface - level"; + level."; oc-ext:telemetry-on-change; uses oc-if:interface-phys-config; @@ -89,7 +95,7 @@ module openconfig-ap-interfaces { config false; description - "Operational state data at the global interface level"; + "Operational state data at the global interface level."; uses oc-if:interface-phys-config; uses oc-if:interface-common-state; @@ -103,7 +109,7 @@ module openconfig-ap-interfaces { augment "/oc-access-points:access-points/" + "oc-access-points:access-point" { description - "Adds interface configuration and state to access-points model"; + "Adds interface configuration and state to access-points model."; uses ap-interfaces-top; } @@ -113,7 +119,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface" { description "Adds ethernet interface configuration and state to - access-points model"; + access-points model."; uses oc-eth:ethernet-top; } @@ -122,7 +128,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface/oc-ap-if:ethernet" { description - "Adds 802.1X settings to individual Ethernet interfaces"; + "Adds 802.1X settings to individual Ethernet interfaces."; uses oc-1x:dot1x-top; } @@ -141,7 +147,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface" { description "Adds subinterface configuration and state to - access-points model"; + access-points model."; uses oc-if:subinterfaces-top; } @@ -151,7 +157,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface/oc-ap-if:subinterfaces/oc-ap-if:subinterface" { description "IPv4 address family configuration for - interfaces"; + interfaces."; uses oc-ip:ipv4-top; } @@ -161,7 +167,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface/oc-ap-if:subinterfaces/oc-ap-if:subinterface" { description "IPv6 address family configuration for - interfaces"; + interfaces."; uses oc-ip:ipv6-top; } @@ -170,7 +176,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface" { description - "Adds lag configuration and state to access-points model"; + "Adds lag configuration and state to access-points model."; uses oc-lag:aggregation-logical-top; } @@ -179,7 +185,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface/oc-ap-if:ethernet" { description - "Adds poe configuration and state to access-points model"; + "Adds poe configuration and state to access-points model."; uses oc-poe:poe-ethernet-top; } @@ -206,7 +212,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface" { description - "Adds tunnel configuration and state to access-points model"; + "Adds tunnel configuration and state to access-points model."; uses oc-tun:tunnel-top; } diff --git a/release/models/wifi/openconfig-ap-manager.yang b/release/models/wifi/openconfig-ap-manager.yang index 317a423ef..8d08c61a7 100644 --- a/release/models/wifi/openconfig-ap-manager.yang +++ b/release/models/wifi/openconfig-ap-manager.yang @@ -26,7 +26,13 @@ module openconfig-ap-manager { "This module defines the top level configuration and state data for a system which manages Access Points."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.3.1"; + + revision "2023-05-26" { + description + "Add full stop to all descriptions."; + reference "1.3.1"; + } revision "2023-01-17" { description @@ -42,7 +48,7 @@ module openconfig-ap-manager { Leaf nodes impacted: - country-code - Fix previous incorrect revision date"; + Fix previous incorrect revision date."; reference "1.2.0"; } @@ -67,7 +73,7 @@ module openconfig-ap-manager { revision "2020-03-24" { description - "Update namespace based on new directory structure"; + "Update namespace based on new directory structure."; reference "0.1.2"; } diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index fb0699619..3bb25cfc4 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,14 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.3.1"; + + revision "2023-05-26" { + description + "Adds clarity to various descriptions. Unit type for tx/rx phy-rate, + client frequency, etc."; + reference "1.3.1"; + } revision "2023-02-14" { description @@ -62,13 +69,13 @@ module openconfig-wifi-mac { revision "2018-12-19" { description "Frequency-specific data-rates, fix client connection-time, - fix client ipv6 addresses, remove mobility-domain."; + fix client IPv6 addresses, remove mobility-domain."; reference "0.4.0"; } revision "2018-07-16" { description - "Reorginize bssid-counters and add BSSID references. Add + "Reorganize bssid-counters and add BSSID references. Add vlan-list."; reference "0.3.0"; } @@ -82,7 +89,7 @@ module openconfig-wifi-mac { revision "2017-07-25" { description - "Initial revision"; + "Initial revision."; reference "0.1.0"; } @@ -317,13 +324,13 @@ module openconfig-wifi-mac { leaf qbss-load { type boolean; description - "Advertisement of the QBSS Load Information ELement."; + "Advertisement of the QBSS Load Information Element."; } leaf advertise-apname { type boolean; description - "Advertise the AP hostname in Beacon and Probe Resp. frames."; + "Advertise the AP hostname in Beacon and Probe Response frames."; } leaf csa { @@ -414,7 +421,7 @@ module openconfig-wifi-mac { type uint16; description "Specify the mobility domain id (MDID) where PMK-R0 - distribution will occur. Specifically, which APs will recieve + distribution will occur. Specifically, which APs will receive PMK-R0 if using 802.11r (FT)."; } @@ -565,7 +572,7 @@ module openconfig-wifi-mac { path "../state/radio-id"; } description - "References the configured id of the radio"; + "References the configured id of the radio."; } container state { @@ -616,7 +623,7 @@ module openconfig-wifi-mac { leaf rx-bss-dot11-channel-utilization { type oc-types:percentage; description - "Recieve channel utilization percent caused by reception of + "receive channel utilization percent caused by reception of any 802.11 frame within this BSS."; } @@ -635,7 +642,7 @@ module openconfig-wifi-mac { container rx-data-dist { description "The distribution of Data frame sizes in bytes of - successfully recieved AMPDU, or MPDU for non-aggregated, + successfully received AMPDU, or MPDU for non-aggregated, frames. The distribution should characterize frame sizes starting at 64 bytes or less with the bin size doubling for each successive bin to a maximum of 1MB or larger, as @@ -876,13 +883,13 @@ module openconfig-wifi-mac { leaf rx-retries-data { type oc-yang:counter64; description - "Number of received QoS Data frames with the Retry bit set"; + "Number of received QoS Data frames with the Retry bit set."; } leaf rx-total-data { type oc-yang:counter64; description - "Number of received QoS Data frames"; + "Number of received QoS Data frames."; } leaf rx-retries-subframe { @@ -895,13 +902,13 @@ module openconfig-wifi-mac { leaf rx-total-subframe { type oc-yang:counter64; description - "Total Aggregated MPDUs received"; + "Total Aggregated MPDUs received."; } leaf rx-bytes-data { type oc-yang:counter64; description - "Bytes received from QoS Data frames"; + "Bytes received from QoS Data frames."; } // Tx Counters @@ -1154,26 +1161,26 @@ module openconfig-wifi-mac { leaf tx-retries { type oc-yang:counter64; description - "Number of frames transmitted with the Retry bit set"; + "Number of frames transmitted with the Retry bit set."; } leaf tx-total-frames { type oc-yang:counter64; description - "Number of frames transmitted"; + "Number of frames transmitted."; } leaf tx-retries-data { type oc-yang:counter64; description "Number of transmitted QoS Data frames with the Retry bit - set"; + set."; } leaf tx-total-data { type oc-yang:counter64; description - "Number of transmitted QoS Data frames"; + "Number of transmitted QoS Data frames."; } leaf tx-retries-subframe { @@ -1192,7 +1199,7 @@ module openconfig-wifi-mac { leaf tx-bytes-data { type oc-yang:counter64; description - "Bytes transmitted from QoS Data frames"; + "Bytes transmitted from QoS Data frames."; } // Total Counters leaf bss-channel-utilization { @@ -1287,7 +1294,7 @@ module openconfig-wifi-mac { type string; description "Username of Client; can be outer-identity (if PEAP), - CN of certificate (if EAP-TLS) etc."; + CN of certificate (if EAP-TLS), etc."; } leaf hostname { @@ -1397,7 +1404,7 @@ module openconfig-wifi-mac { type int8; description "The RSSI of this client in dBm. Expressed as negative - number"; + number."; } leaf snr { @@ -1422,13 +1429,13 @@ module openconfig-wifi-mac { leaf rx-phy-rate { type uint16; description - "Last used PHY rate received from connected client."; + "Last used PHY rate received from connected client in Mbps."; } leaf tx-phy-rate { type uint16; description - "Last used PHY rate transmitted to connected client."; + "Last used PHY rate transmitted to connected client in Mbps."; } leaf connection-mode { @@ -1465,7 +1472,8 @@ module openconfig-wifi-mac { leaf frequency { type uint8; description - "Frequency the client is utilizing. Typically, 2.4, 5 or 6 [GHz]."; + "Frequency the client is utilizing. Typically, 2 for a client + connecting over 2.4GHz, 5 and 6 for 5/6GHz respectively."; } } } @@ -1657,30 +1665,30 @@ module openconfig-wifi-mac { grouping ssid-top { description - "Top-level grouping for ssid configuration and operational state + "Top-level grouping for SSID configuration and operational state data."; container ssids { description - "Top level container for ssids, including configuration + "Top level container for SSIDs, including configuration and state data."; list ssid { key "name"; description - "The list of named ssids on the APs."; + "The list of named SSIDs on the APs."; leaf name { type leafref { path "../config/name"; } description - "References the configured name of the ssid"; + "References the configured name of the SSID."; } container config { description - "Configurable items at the global, ssid level"; + "Configurable items at the global, SSID level"; uses ssid-common-config; } @@ -1688,7 +1696,7 @@ module openconfig-wifi-mac { container state { config false; description - "Operational state data at the ssid level"; + "Operational state data at the SSID level"; uses ssid-common-config; } diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index 796c2fc6f..4f76e0060 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,11 +25,17 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.1"; + oc-ext:openconfig-version "1.2.2"; + + revision "2023-05-26" { + description + "Minor cleanup in descriptions."; + reference "1.2.2"; + } revision "2023-04-25" { description - "Update description for neighbor RSSI to specify as a negative numberr"; + "Update description for neighbor RSSI to specify as a negative number."; reference "1.2.1"; } @@ -53,7 +59,7 @@ module openconfig-wifi-phy { revision "2020-03-24" { description - "Update namespace based on new directory structure"; + "Update namespace based on new directory structure."; reference "0.4.2"; } @@ -248,7 +254,7 @@ module openconfig-wifi-phy { type uint8; description "Sets the number of associated stations after which the radio - should not perform scanning"; + should not perform scanning."; } leaf scanning-defer-traffic { @@ -331,7 +337,7 @@ module openconfig-wifi-phy { leaf rx-noise-channel-utilization { type oc-types:percentage; description - "Received channel-utilization percentage due to Noise."; + "Received channel-utilization percentage due to noise."; } leaf tx-dot11-channel-utilization { @@ -344,7 +350,7 @@ module openconfig-wifi-phy { type oc-types:percentage; description "Received channel utilization due to 802.11 frames NOT destined to a - BSS on this AP ('Overlapping BSS')"; + BSS on this AP ('Overlapping BSS')."; } } @@ -359,7 +365,7 @@ module openconfig-wifi-phy { leaf failed-fcs-frames { type oc-yang:counter64; description - "Number of frames that failed the FCS"; + "Number of frames that failed the FCS."; } // Tx Counters @@ -390,7 +396,7 @@ module openconfig-wifi-phy { leaf rssi { type int8; description - "The RSSI of this neighboring BSSID, expressed as a negative number"; + "The RSSI of this neighboring BSSID, expressed as a negative number."; } leaf channel { @@ -491,7 +497,7 @@ module openconfig-wifi-phy { key "bssid"; config false; description - "The mac address, or BSSID, of a neighbor, and + "The MAC address, or BSSID, of a neighbor, and their corresponding RSSI."; leaf bssid { @@ -499,7 +505,7 @@ module openconfig-wifi-phy { path "../state/bssid"; } config false; - description "Reference to neighbor bssid."; + description "Reference to neighbor BSSID."; } container state { @@ -546,7 +552,7 @@ module openconfig-wifi-phy { container config { description "Configurable items at the global, radio interface - level"; + level."; uses radio-common-config; } @@ -554,7 +560,7 @@ module openconfig-wifi-phy { container state { config false; description - "Operational state data at the global radio level"; + "Operational state data at the global radio level."; uses radio-common-config; uses radio-common-state; diff --git a/release/models/wifi/openconfig-wifi-types.yang b/release/models/wifi/openconfig-wifi-types.yang index 889b68548..d2d62f038 100644 --- a/release/models/wifi/openconfig-wifi-types.yang +++ b/release/models/wifi/openconfig-wifi-types.yang @@ -22,7 +22,13 @@ module openconfig-wifi-types { that are used in the openconfig-wifi modules. It can be imported by any module to make use of these types."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.1.1"; + + revision "2022-05-26" { + description + "Fix typos in descriptions."; + reference "1.1.1"; + } revision "2022-03-24" { description @@ -38,19 +44,19 @@ module openconfig-wifi-types { revision "2020-05-19" { description - "Update namespace per new directory structure"; + "Update namespace per new directory structure."; reference "0.1.2"; } revision "2020-03-24" { description - "Update namespace and fix BETTER_CHANNEL enum"; + "Update namespace and fix BETTER_CHANNEL enum."; reference "0.1.1"; } revision "2017-07-25" { description - "Initial revision"; + "Initial revision."; reference "0.1.0"; } @@ -81,13 +87,13 @@ module openconfig-wifi-types { identity L2AUTH_REQD { base CLIENT_STATE; description - "Client has Assocated, but not L2 Authenticated (e.g. 802.1X)"; + "Client has Associated, but not L2 Authenticated (e.g. 802.1X)"; } identity L3AUTH_REQD { base CLIENT_STATE; description - "Client has Assocated, but not L3 Authenticated (e.g. Captive Portal)"; + "Client has Associated, but not L3 Authenticated (e.g. Captive Portal)."; } identity DHCP_REQD { @@ -124,14 +130,14 @@ module openconfig-wifi-types { identity DHCP_FAILURE { base CLIENT_STATE; description - "Client has Associated & Authenticated but has failed to recieve an IP + "Client has Associated & Authenticated but has failed to receive an IP address, utilizing DHCP."; } identity POWERSAVE { base CLIENT_STATE; description - "AP has recieved a PS frame, indicating the client is currently in a + "AP has received a PS frame, indicating the client is currently in a powersave state."; } @@ -171,62 +177,62 @@ module openconfig-wifi-types { identity RATE_1MB { base DATA_RATE; - description "1 Mbps DSSS PHY"; + description "1 Mbps DSSS PHY."; } identity RATE_2MB { base DATA_RATE; - description "2 Mbps DSSS PHY"; + description "2 Mbps DSSS PHY."; } identity RATE_5.5MB { base DATA_RATE; - description "5.5 Mbps DSSS PHY"; + description "5.5 Mbps DSSS PHY."; } identity RATE_6MB { base DATA_RATE; - description "6 Mbps OFDM PHY"; + description "6 Mbps OFDM PHY."; } identity RATE_9MB { base DATA_RATE; - description "9 Mbps OFDM PHY"; + description "9 Mbps OFDM PHY."; } identity RATE_11MB { base DATA_RATE; - description "11 Mbps DSSS PHY"; + description "11 Mbps DSSS PHY."; } identity RATE_12MB { base DATA_RATE; - description "12 Mbps OFDM PHY"; + description "12 Mbps OFDM PHY."; } identity RATE_18MB { base DATA_RATE; - description "18 Mbps OFDM PHY"; + description "18 Mbps OFDM PHY."; } identity RATE_24MB { base DATA_RATE; - description "24 Mbps OFDM PHY"; + description "24 Mbps OFDM PHY."; } identity RATE_36MB { base DATA_RATE; - description "36 Mbps OFDM PHY"; + description "36 Mbps OFDM PHY."; } identity RATE_48MB { base DATA_RATE; - description "48 Mbps OFDM PHY"; + description "48 Mbps OFDM PHY."; } identity RATE_54MB { base DATA_RATE; - description "54 Mbps OFDM PHY"; + description "54 Mbps OFDM PHY."; } identity OPERATING_FREQUENCY { @@ -269,8 +275,8 @@ module openconfig-wifi-types { identity CLIENT_CAPABILITIES { description - "Client capabilities, as reported by Assoc. Req. or - Probe Req. frames."; + "Client capabilities, as reported by Association Request or + Probe Request frames."; } identity MU_BEAMFORMER { @@ -299,8 +305,8 @@ module openconfig-wifi-types { base CLIENT_CAPABILITIES; description "Whether this STA supports 802.11v BSS Transition. Note, must - be enabled on BSS for this to be accurate; unless Probe Req. - are observied in addition to Assoc. Req."; + be enabled on BSS for this to be accurate; unless Probe Request + are observed in addition to Association Request."; } identity MFP { @@ -316,20 +322,20 @@ module openconfig-wifi-types { identity DFS { base CHANGE_REASON_TYPE; description - "DFS hit occured."; + "DFS hit occurred."; } identity NOISE { base CHANGE_REASON_TYPE; description - "Excessive amounts of non-802.11 Noise occured."; + "Excessive amounts of non-802.11 Noise occurred."; } identity ERRORS { base CHANGE_REASON_TYPE; description "Excessive reception of frames which - failed the FCS occured."; + failed the FCS occurred."; } identity BETTER_CHANNEL { From ed57b04e2167298806b0ae70315844a4a45f2a32 Mon Sep 17 00:00:00 2001 From: m26singhvi Date: Tue, 27 Jun 2023 06:03:00 +0530 Subject: [PATCH 82/86] Update oc-macsec model to support rx-late-pkts in macsec-interface-counters (#887) Update oc-macsec model to support rx-late-pkts in macsec-interface-counters Co-authored-by: dplore --- release/models/macsec/openconfig-macsec.yang | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/release/models/macsec/openconfig-macsec.yang b/release/models/macsec/openconfig-macsec.yang index 27f6f2d2d..5554f695f 100644 --- a/release/models/macsec/openconfig-macsec.yang +++ b/release/models/macsec/openconfig-macsec.yang @@ -18,11 +18,17 @@ module openconfig-macsec { "This module defines configuration and state data for MACsec IEEE Std 802.1AE-2018."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-06-08" { + description + "Support rx-late-pkts leaf."; + reference "1.1.0"; + } + revision "2022-04-28" { description "Use global key chain model."; @@ -419,6 +425,15 @@ module openconfig-macsec { This counter will increment if MACsec is enabled on interface and incoming packet does not have SCI field in MACsec tag."; } + + leaf rx-late-pkts { + type oc-yang:counter64; + description + "MACsec interface level Receive Late Packets counter. + This counter will increment if MACsec is enabled on the interface and + packet number of incoming packet is less than the lowest acceptable + packet number and replay protection is enabled."; + } } grouping macsec-scsa-interface-top { From 0cae2cfef05512b9f2eb6b4bc67a18d63c569476 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 27 Jun 2023 23:26:44 -0700 Subject: [PATCH 83/86] Clarify transport/state/remote-port vs. config/neighbor-port (#898) * clarify transport/state/remote-port vs. config/neighbor-port --- .../openconfig-bgp-common-multiprotocol.yang | 8 +++++++- .../bgp/openconfig-bgp-common-structure.yang | 8 +++++++- release/models/bgp/openconfig-bgp-common.yang | 8 +++++++- release/models/bgp/openconfig-bgp-global.yang | 8 +++++++- .../models/bgp/openconfig-bgp-neighbor.yang | 20 ++++++++++++++----- .../models/bgp/openconfig-bgp-peer-group.yang | 8 +++++++- release/models/bgp/openconfig-bgp.yang | 8 +++++++- 7 files changed, 57 insertions(+), 11 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 8283fdad4..60f4d67d6 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 8d3bed8a9..a73bc9d46 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 19726256e..7cad2ac6f 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index d02c63f88..f3ceff357 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index f442bfc3a..1b76c81a6 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp neighbor-port, remote-port and local-port descriptions"; + reference "9.4.1"; + } revision "2023-04-01" { description @@ -197,7 +203,8 @@ submodule openconfig-bgp-neighbor { type oc-inet:port-number; default 179; description - "Port number of the BGP peer"; + "Destination TCP port number of the BGP peer when initiating a + session from the local router"; } leaf enabled { @@ -460,7 +467,7 @@ submodule openconfig-bgp-neighbor { leaf local-port { type oc-inet:port-number; description - "Local TCP port being used for the TCP session supporting + "Local, source TCP port being used for the TCP session supporting the BGP session"; } @@ -474,8 +481,11 @@ submodule openconfig-bgp-neighbor { leaf remote-port { type oc-inet:port-number; description - "Remote port being used by the peer for the TCP session - supporting the BGP session"; + "The source TCP port being used by the peer for the TCP session + supporting the BGP session. This is expected to be the same value + as the configured neighbor-port if the local device initiated the + connection or a different TCP port if the peer initiated the TCP + session."; } } diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index cbd01ebbf..438ee5005 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index a2bcf25b8..b9e9b2f07 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,13 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description From 0c299887df1286731514951595e82d8c4638944e Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 28 Jun 2023 08:15:58 -0700 Subject: [PATCH 84/86] remove deviations from wifi models (#897) * remove deviations from wifi models * remove deviations from wifi * update description and add type --- .../platform/openconfig-platform-types.yang | 15 ++++++- .../models/wifi/openconfig-access-points.yang | 20 +++++----- .../models/wifi/openconfig-ap-interfaces.yang | 39 ++++--------------- 3 files changed, 31 insertions(+), 43 deletions(-) diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index 970a9cebb..d28881f9e 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,13 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.5.0"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-06-27" { + description + "Add WIFI_ACCESS_POINT"; + reference "1.6.0"; + } revision "2022-07-28" { description @@ -345,6 +351,13 @@ module openconfig-platform-types { chip, etc.)"; } + identity WIFI_ACCESS_POINT { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A device that attaches to a an Ethernet network and creates a wireless + local area network"; + } + identity OPERATING_SYSTEM { base OPENCONFIG_SOFTWARE_COMPONENT; description diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index df9629969..d773a59a5 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -27,7 +27,13 @@ module openconfig-access-points { "This module defines the top level WiFi Configurations for a list of Access Points."; - oc-ext:openconfig-version "1.1.1"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-06-26" { + description + "Update description for hostname"; + reference "1.2.0"; + } revision "2023-05-26" { description @@ -168,7 +174,9 @@ module openconfig-access-points { "ap-manager:config/ap-manager:hostname"; } description - "Access Point FQDN."; + "Access Point FQDN. This leaf is only valid when the type of the + component is WIFI_ACCESS_POINT, and should be used instead of + /oc-sys:system/oc-sys:state/oc-sys:hostname."; } } @@ -219,12 +227,4 @@ module openconfig-access-points { } uses access-points-top; - // hostname is set using openconfig-wifi-aps model. - deviation /oc-sys:system/oc-sys:config/oc-sys:hostname { - deviate not-supported; - } - - deviation /oc-sys:system/oc-sys:state/oc-sys:hostname { - deviate not-supported; - } } diff --git a/release/models/wifi/openconfig-ap-interfaces.yang b/release/models/wifi/openconfig-ap-interfaces.yang index b54315341..913520165 100644 --- a/release/models/wifi/openconfig-ap-interfaces.yang +++ b/release/models/wifi/openconfig-ap-interfaces.yang @@ -32,7 +32,13 @@ module openconfig-ap-interfaces { "This module defines the configuration and state data for non-radio interfaces on WiFi Access Points."; - oc-ext:openconfig-version "1.0.1"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-06-26" { + description + "Remove deviation for unnumbered interfaces"; + reference "1.2.0"; + } revision "2023-05-26" { description @@ -216,35 +222,4 @@ module openconfig-ap-interfaces { uses oc-tun:tunnel-top; } - // Deviation statements - // Unnumbered interfaces not supported on Access Points. - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:subinterfaces/oc-ap-if:subinterface/oc-ap-if:ipv4/" + - "oc-ap-if:unnumbered" { - deviate not-supported; - } - - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:subinterfaces/oc-ap-if:subinterface/oc-ap-if:ipv6/" + - "oc-ap-if:unnumbered" { - deviate not-supported; - } - - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:tunnel/oc-ap-if:ipv4/oc-ap-if:unnumbered" { - deviate not-supported; - } - - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:tunnel/oc-ap-if:ipv6/oc-ap-if:unnumbered" { - deviate not-supported; - } } From 6e1174af25db09af1f58a42ff51c01be864a6e88 Mon Sep 17 00:00:00 2001 From: marcushines <80116818+marcushines@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:45:18 -0500 Subject: [PATCH 85/86] Add bootz status model and link it to the openconfig system tree (#893) * Add bootz status model and link it to the openconfig system tree * Address Arista's comments --- release/models/system/.spec.yml | 24 ++-- .../system/openconfig-system-bootz.yang | 115 ++++++++++++++++++ release/models/system/openconfig-system.yang | 26 ++-- 3 files changed, 144 insertions(+), 21 deletions(-) create mode 100644 release/models/system/openconfig-system-bootz.yang diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index f1f5b62a1..9cd6c6222 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -1,20 +1,21 @@ - name: openconfig-system docs: - - yang/system/openconfig-aaa-types.yang - - yang/system/openconfig-alarm-types.yang - - yang/system/openconfig-system.yang - - yang/system/openconfig-system-terminal.yang - - yang/system/openconfig-system-logging.yang - - yang/system/openconfig-system-utilization.yang - - yang/system/openconfig-procmon.yang + - yang/openflow/openconfig-openflow.yang - yang/system/openconfig-aaa.yang - - yang/system/openconfig-aaa-tacacs.yang - yang/system/openconfig-aaa-radius.yang + - yang/system/openconfig-aaa-tacacs.yang + - yang/system/openconfig-aaa-types.yang - yang/system/openconfig-alarms.yang + - yang/system/openconfig-alarm-types.yang - yang/system/openconfig-license.yang - - yang/openflow/openconfig-openflow.yang - - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-procmon.yang + - yang/system/openconfig-system.yang + - yang/system/openconfig-system-bootz.yang - yang/system/openconfig-system-controlplane.yang + - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-logging.yang + - yang/system/openconfig-system-terminal.yang + - yang/system/openconfig-system-utilization.yang build: - yang/system/openconfig-system.yang - yang/system/openconfig-system-utilization.yang @@ -22,8 +23,9 @@ - name: openconfig-system-ext build: - yang/system/openconfig-system.yang - - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-bootz.yang - yang/system/openconfig-system-controlplane.yang + - yang/system/openconfig-system-grpc.yang run-ci: true - name: openconfig-messages docs: diff --git a/release/models/system/openconfig-system-bootz.yang b/release/models/system/openconfig-system-bootz.yang new file mode 100644 index 000000000..58bba83c1 --- /dev/null +++ b/release/models/system/openconfig-system-bootz.yang @@ -0,0 +1,115 @@ +module openconfig-system-bootz { + yang-version "1"; + + namespace "http://openconfig.net/yang/system-bootz"; + prefix "oc-sys-bootz"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { prefix oc-sys; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds configuration and operational state relating to bootz + service running on a network device."; + + + oc-ext:openconfig-version "1.0.0"; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + revision "2023-06-16" { + description + "Creation of bootz state paths needed for the service."; + reference "1.0.0"; + } + + grouping bootz-service-structural { + description + "Structural grouping for bootz service that can be enabled on + the system."; + + container bootz { + description + "Bootz protocol container for management of bootz protocol state."; + + container state { + config false; + description + "Operational state relating to the bootz service."; + uses bootz-state; + } + } + } + + grouping bootz-state { + description + "State parameters required to monitor bootz service."; + + leaf checksum { + type string; + default ""; + description + "The current checksum of the bootz protocol buffer. + + This value should refect the current sha-512 of the bootz + protocol buffer message BootstrapDataSigned. The protocol + buffer serialization must be done by tag value for each field + in the bootz protocol buffer. This will produce a + determintistic marshalled value which can be + checksummed."; + } + + leaf error-count { + type oc-yang:counter64; + description + "Total count of all bootz errors."; + } + + leaf status { + type enumeration { + enum BOOTZ_UNSPECIFIED; + enum BOOTZ_SENT; + enum BOOTZ_RECEIVED; + enum BOOTZ_CONFIGURATION_APPLIED; + enum BOOTZ_OK; + enum BOOTZ_OV_INVALID; + enum BOOTZ_OS_UPGRADE_IN_PROGRESS; + enum BOOTZ_OS_UPGRADE_COMPLETE; + enum BOOTZ_OS_INVALID_IMAGE; + enum BOOTZ_CONFIGURATION_INVALID; + } + description + "The status of the bootz service. + + The general sequence for the flow would be: + BOOTZ_UNSPECIFIED <- system initial state + BOOTZ_SENT <- bootz request sent + BOOTZ_RECEIVED <- bootz response received + BOOTZ_OS_UPGRADE_IN_PROGRESS <- (if needed) + BOOTZ_OS_UPGRADE_COMPLETE <- (if needed) + BOOTZ_CONFIGURATION_APPLIED <- bootz configuration applied + BOOTZ_OK <- bootz process successful + + If any error is encounter an error ENUM will be returned."; + } + + leaf last-boot-attempt { + type oc-types:timeticks64; + description + "The timestamp of the last bootz attempt."; + } + } + + augment "/oc-sys:system" { + description + "Add bootz service configuration to the openconfig-system model."; + + uses bootz-service-structural; + } +} diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 0ba4dc125..aa9589c02 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -47,7 +47,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.17.0"; + oc-ext:openconfig-version "0.17.1"; + + revision "2023-06-16" { + description + "Reordered imports to be alphabetical."; + reference "0.17.1"; + } revision "2022-12-20" { description @@ -1255,20 +1261,20 @@ module openconfig-system { } uses mount-points-top; - uses system-clock-top; - uses system-dns-top; - uses system-ntp-top; - uses oc-sys-term:system-ssh-server-top; - uses oc-sys-term:system-telnet-server-top; - uses oc-log:logging-top; uses oc-aaa:aaa-top; - uses system-memory-top; - uses system-cpu-top; - uses oc-proc:procmon-processes-top; uses oc-alarms:alarms-top; + uses oc-log:logging-top; + uses oc-proc:procmon-processes-top; uses oc-messages:messages-top; uses oc-license:license-top; + uses oc-sys-term:system-ssh-server-top; + uses oc-sys-term:system-telnet-server-top; + uses system-clock-top; + uses system-cpu-top; + uses system-dns-top; uses system-macaddr-top; + uses system-memory-top; + uses system-ntp-top; } } From e2799c0a9f2d9c977e404d8703971d766f64a23a Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 5 Jul 2023 12:59:44 -0700 Subject: [PATCH 86/86] Fix typo in ospf lsdb experimental-te leaf description (#904) * Fix typo in ospf lsdb experimental-te leaf description --- .../models/ospf/openconfig-ospfv2-area-interface.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-area.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-common.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-global.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-lsdb.yang | 10 ++++++++-- release/models/ospf/openconfig-ospfv2.yang | 8 +++++++- 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index f34976d97..52d560bad 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index fe60d78d4..1cc2a9520 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index fbd7c5886..d5c2fd945 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index 37a50b35a..832bf1103 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index 18f6836c8..5a39769fb 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description @@ -1786,7 +1792,7 @@ submodule openconfig-ospfv2-lsdb { type boolean; default false; description - "When this leaf is set to ture, the advertising system supports the + "When this leaf is set to true, the advertising system supports the experimental extensions to OSPF for TE described in RFC4973"; reference "RFC4973"; } diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index ebddd64a5..f75a207bd 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description