From e2509d2c7b6543bebc68daa0ed52f5205983ee6c Mon Sep 17 00:00:00 2001 From: Joe Clarke Date: Wed, 27 May 2026 18:05:45 +0000 Subject: [PATCH 1/4] Cronjob - daily check of IETF modules. --- ...etf-nwi-passive-inventory@2026-03-19.yang} | 128 ++-- .../ietf-pm-collection@2026-05-02.yang | 715 ++++++++++++++++++ ...f-pm-interval-capabilities@2026-05-02.yang | 236 ++++++ .../ietf-power-and-energy@2026-01-22.yang | 179 +++-- ...g => ietf-sr-policy-types@2026-05-23.yang} | 25 +- ...20.yang => ietf-sr-policy@2026-05-23.yang} | 39 +- ...6-02-13.yang => ietf-vrrp@2026-05-22.yang} | 52 +- 7 files changed, 1198 insertions(+), 176 deletions(-) rename experimental/ietf-extracted-YANG-modules/{ietf-nwi-passive-inventory@2025-07-07.yang => ietf-nwi-passive-inventory@2026-03-19.yang} (83%) create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-pm-collection@2026-05-02.yang create mode 100644 experimental/ietf-extracted-YANG-modules/ietf-pm-interval-capabilities@2026-05-02.yang rename experimental/ietf-extracted-YANG-modules/{ietf-sr-policy-types@2025-05-22.yang => ietf-sr-policy-types@2026-05-23.yang} (95%) rename experimental/ietf-extracted-YANG-modules/{ietf-sr-policy@2025-10-20.yang => ietf-sr-policy@2026-05-23.yang} (98%) rename experimental/ietf-extracted-YANG-modules/{ietf-vrrp@2026-02-13.yang => ietf-vrrp@2026-05-22.yang} (95%) diff --git a/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2025-07-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2026-03-19.yang similarity index 83% rename from experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2025-07-07.yang rename to experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2026-03-19.yang index b239eb48e..b06543dd8 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2025-07-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-nwi-passive-inventory@2026-03-19.yang @@ -6,20 +6,16 @@ module ietf-nwi-passive-inventory { import ietf-network-inventory { prefix nwi; reference - "RFCXXXX: A YANG Data Model for Network Inventory"; - //RFC Editor: replace XXXX with actual RFC number - //and remove this note + "RFC YYYY: A YANG Data Model for Network Inventory"; } import ietf-ni-location { prefix nil; reference - "RFCYYYY: A YANG Data Model for Network Inventory Location"; - //RFC Editor: replace YYYY with actual RFC number - //and remove this note + "RFC ZZZZ: A YANG Data Model for Network Inventory Location"; } organization - "IETF Network Inventory YANG (ivy) Working Group"; + "IETF Network Inventory YANG (IVY) Working Group"; contact "WG Web: WG List: @@ -32,109 +28,105 @@ module ietf-nwi-passive-inventory { Editor: Italo Busi "; - description "This YANG module specifies a data model for passive devices, such as fibers, cables, and passive sites, deployed within and between network elements. - The model fully conforms to the Network Management - Datastore Architecture (NMDA). - - Copyright (c) 2023 IETF Trust and the persons - identified as authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices. + Copyright (c) 2026 IETF Trust and the persons + identified as authors of the code. All rights reserved. - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here."; + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Revised BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). - // RFC Ed.: replace XXXX with actual RFC number and remove this - // note. - // RFC Ed.: update the date below with the date of RFC publication - // and remove this note. + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; - revision 2025-07-07 { + revision 2026-03-19 { description "Initial version"; reference "RFC XXXX: A YANG Data Model for Passive Device Info in - Network Inventory."; - //RFC Editor: replace XXXX with actual RFC number, update date - //information and remove this note + Network Inventory."; } /* Identities */ + identity fiber-type { description "Base identity for fiber types."; } + identity G652A { base fiber-type; description "ITU-T G.652A fiber."; } + identity G652B { base fiber-type; description "ITU-T G.652B fiber."; } + identity G652C { base fiber-type; description "ITU-T G.652C fiber."; } + identity G652D { base fiber-type; description "ITU-T G.652D fiber."; } + identity G653 { base fiber-type; description "ITU-T G.653 fiber."; } + identity G654 { base fiber-type; description "ITU-T G.654 fiber."; } + identity G655 { base fiber-type; description "ITU-T G.655 fiber."; } + identity G656 { base fiber-type; description "ITU-T G.656 fiber."; } + identity G657A1 { base fiber-type; description "ITU-T G.657A1 fiber."; } + identity G657A2 { base fiber-type; description "ITU-T G.657A2 fiber."; } + identity G657B { base fiber-type; description "ITU-T G.657B fiber."; } + identity other { base fiber-type; description @@ -145,16 +137,19 @@ module ietf-nwi-passive-inventory { description "Base identity for cable types."; } + identity optical-fiber { base cable-type; description "Fiber optic cable."; } + identity electrical-cable { base cable-type; description "Electrical cable."; } + identity coaxial-cable { base electrical-cable; description @@ -165,55 +160,66 @@ module ietf-nwi-passive-inventory { description "Base identity for cable roles."; } + identity backbone { base cable-role; description "Backbone cable."; } + identity aggregation { base cable-role; description "Aggregation cable."; } + identity access { base cable-role; description "Access cable."; } + identity trunk { base cable-role; description "Trunk cable."; } + identity distribution { base cable-role; description "Distribution cable."; } + identity branch { base cable-role; description "Branch cable."; } + identity passive-port-type { description "Base identity for passive port types."; } + identity service-port { base passive-port-type; description "Service port."; } + identity input-port { base passive-port-type; description "Input port."; } + identity output-port { base passive-port-type; description "Output port."; } + identity p2mp-port { base passive-port-type; description @@ -224,11 +230,13 @@ module ietf-nwi-passive-inventory { description "Base identity for connected device types."; } + identity passive-device { base connected-device-type; description "Passive/unmanaged device."; } + identity active-device { base connected-device-type; description @@ -239,26 +247,31 @@ module ietf-nwi-passive-inventory { description "Base identity for passive device types."; } + identity ODF { base passive-device-type; description "Optical Distribution Frame."; } + identity WDM { base passive-device-type; description "Wavelength Division Multiplexer."; } + identity FAT { base passive-device-type; description "Fiber Access Terminal."; } + identity FDT { base passive-device-type; description "Fiber Distribution Terminal."; } + identity ATB { base passive-device-type; description @@ -266,10 +279,10 @@ module ietf-nwi-passive-inventory { } /* Groupings */ + grouping connected-device-end { description "Attributes applicable to connected device end."; - leaf device-type { type identityref { base connected-device-type; @@ -277,7 +290,6 @@ module ietf-nwi-passive-inventory { description "Type of connected device."; } - choice connected-device-type { description "Device end based on the type of connected device."; @@ -285,7 +297,7 @@ module ietf-nwi-passive-inventory { leaf device-id { type string; must "derived-from-or-self(../device-type, - 'nwi-passive:passive-device')"; + 'nwi-passive:passive-device')"; description "Connected passive device identifier."; } @@ -297,7 +309,7 @@ module ietf-nwi-passive-inventory { + "/nwi:network-element/nwi:ne-id"; } must "derived-from-or-self(../device-type, - 'nwi-passive:active-device')"; + 'nwi-passive:active-device')"; description "Referenced Network Element (NE)."; } @@ -309,7 +321,7 @@ module ietf-nwi-passive-inventory { + "/nwi:component-id"; } must "derived-from-or-self(../device-type, - 'nwi-passive:active-device')"; + 'nwi-passive:active-device')"; description "Referenced connected active device's component, e.g. port component."; @@ -321,13 +333,11 @@ module ietf-nwi-passive-inventory { grouping connected-device-ref { description "Attributes applicable to connected devices."; - container a-end { description "A-end device reference"; uses connected-device-end; } - container z-end { description "Z-end device reference"; @@ -344,29 +354,23 @@ module ietf-nwi-passive-inventory { description "Cable identifier."; } - leaf length { type uint32; units "meter"; description "Length of the cable in meter."; } - uses connected-device-ref; } grouping optical-cable-attributes { description "Attributes applicable to fiber optic cables."; - container optical-cable { - when - "derived-from-or-self(../cable-type, 'optical-fiber')"; - + when "derived-from-or-self(../cable-type, 'optical-fiber')"; description "Container for attributes associated with fiber optic cables."; - leaf fiber-core-num { type uint32; description @@ -393,10 +397,8 @@ module ietf-nwi-passive-inventory { grouping cable-attributes { description "Attributes of cables."; - uses common-cable-attributes; uses nwi:basic-common-entity-attributes; - leaf cable-type { type identityref { base cable-type; @@ -404,7 +406,6 @@ module ietf-nwi-passive-inventory { description "Type of cable."; } - leaf cable-role { type identityref { base cable-role; @@ -412,7 +413,6 @@ module ietf-nwi-passive-inventory { description "Role of cable."; } - uses optical-cable-attributes; } @@ -420,20 +420,17 @@ module ietf-nwi-passive-inventory { description "Attributes applicable to child cables that are concatnated to form the cable."; - list child-cable { key "index"; min-elements 2; description "Ordered list of concatenated child cables."; - leaf index { type uint8; description "An index number used to identify the concatenation order of the child cables."; } - uses common-cable-attributes; } } @@ -441,12 +438,10 @@ module ietf-nwi-passive-inventory { grouping cables { description "Attributes applicable to cables."; - list cable { key "id"; description "List of cables."; - uses cable-attributes; uses child-cables; } @@ -455,12 +450,10 @@ module ietf-nwi-passive-inventory { grouping passive-device-ports { description "Attributes applicable to passive device ports."; - list passive-port { key "id"; description "List of ports on a passive device."; - leaf id { type string; description @@ -485,12 +478,10 @@ module ietf-nwi-passive-inventory { grouping passive-devices { description "Attributes applicable to passive devices."; - list passive-device { key "id"; description "List of passive devices."; - leaf id { type string; description @@ -520,11 +511,12 @@ module ietf-nwi-passive-inventory { } /* Augmentation */ + augment "/nwi:network-inventory" { - description - "Augment network inventory with information - for optical cables and passive devices."; - uses cables; - uses passive-devices; + description + "Augment network inventory with information + for optical cables and passive devices."; + uses cables; + uses passive-devices; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-pm-collection@2026-05-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-pm-collection@2026-05-02.yang new file mode 100644 index 000000000..d59c9dd1c --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-pm-collection@2026-05-02.yang @@ -0,0 +1,715 @@ +module ietf-pm-collection { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-pm-collection"; + prefix pm-coll; + + import ietf-yang-types { + prefix yang; + reference "RFC 6991: Common YANG Data Types"; + } + + organization + "IETF Common Control and Measurement Plane (ccamp) + Working Group"; + contact + "WG Web: + Editor: Bin Yeong Yoon "; + description + "This YANG module defines a data model for performance + management (PM) streaming from network equipment to clients, + based on ITU-T G.7710. It supports real-time streaming of + performance measurements using three core collection types: + counts (cumulative events), snapshot (instantaneous values), + and tidemarks (extreme values), as defined in ITU-T G.7710. + + The module enables proactive network monitoring through + configurable sampling and measurement intervals, supporting + both high-frequency real-time monitoring and long-term trend + analysis. It provides threshold event notifications for both + periodic measurements and non-periodic events (BUT, EUT, + CSES). + + The design supports AI-driven applications, network digital + twins, and dynamic network environments by enabling multiple + simultaneous views of the same performance parameter with + different temporal resolutions. This hierarchical structure + allows operators, analytics systems, and digital twin + platforms to access performance data at appropriate + granularities while maintaining operational efficiency and + cross-vendor interoperability. + + The module integrates with IETF YANG-Push protocols for + subscription-based streaming, enabling clients to receive + continuous performance data and threshold event notifications + for real-time monitoring, historical analysis, and automated + network management."; + + revision 2026-05-02 { + description + "Renamed the module from ietf-pm-measurements to + ietf-pm-collection (including namespace and prefix). + + Terminology and model alignment: prior wording and the + measurement-methods container for counts, snapshot, and + tidemarks were replaced by collection types and the + collection-types container, per ITU-T G.7710 collection- + type concepts."; + reference + "RFC XXXX: A YANG Data Model of Performance Management + Streaming"; + } + + /* + * TYPEDEFs + */ + typedef profile-names { + type string { + pattern '[a-zA-Z][a-zA-Z0-9_-]*-[a-zA-Z][a-zA-Z0-9_-]*-' + + '[a-zA-Z][a-zA-Z0-9_-]*(-[a-zA-Z][a-zA-Z0-9_-]*)?'; + } + description + "Parameter profile name following the format: + --[-] + + Where: + - : Standards body or organization + (e.g., itu, ieee, ietf) + - : Network domain or layer + (e.g., transport, access, core) + - : Intended use or function + (e.g., maintenance, qos, availability) + - : Optional qualifying information + (e.g., 15min, 24hr, high-priority) + + Examples: + - itu-transport-maintenance-15min + - itu-transport-maintenance-24hr + - itu-transport-qos-24hr + - ieee-access-availability"; + } + + typedef time-interval-unit { + type enumeration { + enum millisecond { + description "Time interval in milliseconds."; + } + enum second { + description "Time interval in seconds."; + } + enum minute { + description "Time interval in minutes."; + } + enum hour { + description "Time interval in hours."; + } + } + description "Units for expressing time intervals."; + } + + /* + * IDENTITIES + */ + identity periodic-events { + description + "Base identity for periodic event notifications."; + } + + identity counts-transient { + base periodic-events; + description + "Notification for transient threshold events in counts + measurements."; + } + + identity counts-standing { + base periodic-events; + description + "Notification for standing threshold events in counts + measurements."; + } + + identity snapshot { + base periodic-events; + description + "Notification for snapshot measurement threshold events."; + } + + identity tidemarks { + base periodic-events; + description + "Notification for tidemarks measurement threshold events."; + } + + identity non-periodic-events { + description + "Base identity for non-periodic event notifications."; + } + + identity but { + base non-periodic-events; + description + "Notification for Begin Unavailable Time (BUT) events."; + } + + identity eut { + base non-periodic-events; + description + "Notification for End Unavailable Time (EUT) events."; + } + + identity cses { + base non-periodic-events; + description + "Notification for Consecutive Severely Errored Seconds + (CSES) events."; + } + + /* + * COMMON GROUPINGS + */ + grouping threshold-config { + description + "Common threshold configuration for snapshot and tidemarks + measurement types (high and low thresholds)."; + leaf high-threshold { + type uint32; + description + "High threshold that triggers alerts when exceeded."; + } + leaf low-threshold { + type uint32; + description + "Low threshold that triggers alerts when performance + falls below acceptable levels."; + } + } + + grouping transient-threshold-config { + description + "Threshold configuration for transient conditions. + Transient thresholds only support high threshold crossings + and report immediately when the count value reaches or + crosses the configured transient threshold value. + Transient thresholds do not support low threshold + (underflow) conditions, unlike snapshot and tidemarks + measurements which support both high and low thresholds."; + leaf transient-threshold { + type uint32; + description + "Transient threshold that triggers alerts when exceeded. + Transient thresholds report immediately when the count + value reaches or crosses this threshold value."; + } + } + + grouping event-state-info { + description + "Common event state information for all event types."; + leaf event-occurred { + type boolean; + description + "Indicates whether a threshold crossing or performance + event has occurred."; + } + leaf event-time { + type yang:date-and-time; + description + "Precise timestamp of when the event occurred."; + } + } + + grouping oor-event-type { + description + "Common out-of-range event type definition."; + leaf event-type { + type enumeration { + enum High-OOR-event { + description "High OOR threshold exceeded."; + } + enum Low-OOR-event { + description "Low OOR threshold crossed."; + } + } + description + "Specifies whether the high or low OOR threshold was + crossed."; + } + } + + grouping triggered-oor-event-info { + description + "Combined threshold event type and event information."; + uses oor-event-type; + uses event-state-info; + } + + grouping count-transient-event-type { + description + "Transient threshold event type definition for counts + measurements. Transient thresholds report immediately when + the count value reaches or crosses a configured threshold + value."; + leaf event-type { + type enumeration { + enum Threshold-Crossed-Event { + description + "Threshold crossing event generated when count value + reaches or crosses the configured threshold value."; + } + } + description + "Specifies that a threshold crossing event occurred."; + } + } + + grouping triggered-count-transient-event-info { + description + "Combined transient threshold event type and event + information for counts measurements. Transient thresholds + are independent threshold mechanisms that report + immediately when count values cross configured threshold + values."; + uses count-transient-event-type; + uses event-state-info; + } + + grouping time-interval-config { + description "Common time interval configuration."; + leaf interval-value { + type uint32; + description "Numeric value for the interval."; + } + leaf unit { + type time-interval-unit; + description "Time unit for the interval value."; + } + } + + /* + * COLLECTION TYPE GROUPINGS + */ + grouping count-measurement-gr { + description + "Counts measurement for cumulative event tracking over a + measurement interval. Supports transient and standing + threshold reporting, as defined in G.7710."; + container counts { + description + "Contains counts measurement values and configuration."; + container transient-condition-config { + description + "Configuration for transient threshold conditions. + Transient thresholds report immediately when the + count value reaches or crosses the configured + transient threshold value. Transient thresholds do + not support low threshold (underflow) conditions, + unlike snapshot and tidemarks measurements which + support both high and low thresholds."; + uses transient-threshold-config; + } + container standing-condition-config { + description + "Configuration for standing condition monitoring. + When both thresholds are set, standing-threshold + must be greater than or equal to reset-threshold + (hysteresis)."; + must "not(standing-threshold and reset-threshold) or " + + "standing-threshold >= reset-threshold" { + error-message + "Standing threshold must be >= reset threshold."; + } + leaf standing-threshold { + type uint32; + description + "Threshold value that triggers standing condition + alerts."; + } + leaf reset-threshold { + type uint32; + description + "Reset threshold value that clears standing + conditions."; + } + } + leaf measurement-value { + type uint32; + config false; + description + "Current cumulative count value for the measurement + interval."; + } + } + } + + grouping snapshot-measurement-gr { + description + "Snapshot measurements for instantaneous values at uniform + time within each measurement interval. Supports high/low + OOR threshold reporting, as defined in G.7710."; + container snapshot { + description + "Contains snapshot measurement configuration and values."; + container uniform-time-config { + description + "Configuration for uniform time intervals between + snapshots."; + leaf interval-value { + type uint32; + default 1; + description + "Numeric value for the sampling interval between + snapshots."; + } + leaf unit { + type time-interval-unit; + description + "Time unit for the snapshot sampling interval."; + } + } + container threshold-config { + description + "Configuration for snapshot threshold monitoring."; + uses threshold-config; + } + leaf measurement-value { + type uint32; + config false; + description + "Current instantaneous snapshot value."; + } + } + } + + grouping tidemarks-measurement-gr { + description + "Tidemarks measurements for maximum and minimum values + over the measurement interval. Supports high/low OOR + threshold reporting, as defined in G.7710."; + container tidemarks { + description + "Contains tidemarks measurement values and threshold + configuration."; + container threshold-config { + description + "Configuration for tidemarks threshold monitoring."; + uses threshold-config; + } + leaf high-measurement-value { + type uint32; + config false; + description + "Current maximum value recorded during the measurement + interval."; + } + leaf low-measurement-value { + type uint32; + config false; + description + "Current minimum value recorded during the measurement + interval."; + } + } + } + + grouping collection-types-gr { + description + "Grouping for the three core collection types (counts, + snapshot, tidemarks) per ITU-T G.7710."; + container collection-types { + description + "Container for the counts, snapshot, and tidemarks + collection types."; + uses count-measurement-gr; + uses snapshot-measurement-gr; + uses tidemarks-measurement-gr; + } + } + + /* + * EVENT GROUPINGS + */ + grouping counts-transient-event-gr { + description + "Transient threshold events for counts measurements. + Transient thresholds are independent threshold mechanisms + that report immediately when count values cross configured + threshold values."; + container counts-transient { + description + "Contains information about transient threshold events + for counts."; + uses triggered-count-transient-event-info; + } + } + + grouping counts-standing-event-gr { + description + "Standing condition events for counts measurements."; + container counts-standing { + description + "Contains information about standing threshold events + for counts."; + leaf event-type { + type enumeration { + enum Threshold-Report { + description + "Threshold Report (TR) generated when the count + value reaches or exceeds the standing-threshold + configured in standing-condition-config."; + } + enum Reset-Threshold-Report { + description + "Reset Threshold Report (RTR) generated at the end + of the period when the count value is at or below + the reset-threshold (G.7710 standing condition + clear)."; + } + } + description + "Specifies the type of standing threshold event that + occurred, as defined in G.7710. A Threshold-Report + (TR) is generated when the measurement-value reaches + or exceeds the standing-threshold. A + Reset-Threshold-Report (RTR) is generated at the end + of the period when the measurement-value is at or + below the reset-threshold."; + } + uses event-state-info; + } + } + + grouping snapshot-events-gr { + description + "Threshold events for snapshot measurements."; + container snapshot { + description + "Contains snapshot threshold event information."; + uses triggered-oor-event-info; + } + } + + grouping tidemarks-events-gr { + description + "Threshold events for tidemarks measurements."; + container tidemarks { + description + "Contains tidemarks threshold event information."; + uses triggered-oor-event-info; + } + } + + /* + * MEASUREMENT INTERVAL STRUCTURES + */ + grouping periodic-measurement-intervals { + description + "Hierarchical structure for periodic measurement timing + and collection types."; + list sampling-interval { + key "id"; + description + "List of sampling intervals defining data collection + frequency."; + leaf id { + type string; + description + "Unique identifier for this sampling interval + configuration."; + } + leaf interval-value { + type uint32; + default 1; + description "Numeric value for the sampling interval."; + } + leaf unit { + type time-interval-unit; + default second; + description "Time unit for the sampling interval value."; + } + list measurement-interval { + key "id"; + description + "List of measurement intervals defining aggregation + periods."; + leaf id { + type string; + description + "Unique identifier for this measurement interval + configuration."; + } + leaf interval-value { + type uint32; + default 15; + description + "Numeric value for the measurement interval."; + } + leaf unit { + type time-interval-unit; + default minute; + description + "Time unit for the measurement interval value."; + } + uses collection-types-gr; + } + } + } + + grouping non-periodic-events-gr { + description + "Grouping for non-periodic performance event parameters + (BUT, EUT, CSES)."; + container BUT-event { + description "Begin Unavailable Time (BUT) event."; + uses event-state-info; + } + container EUT-event { + description "End Unavailable Time (EUT) event."; + uses event-state-info; + leaf duration { + type uint32; + units "seconds"; + description + "Total duration of unavailability in seconds."; + } + } + container CSES-event { + description + "Consecutive Severely Errored Seconds (CSES) event."; + leaf event-occurred { + type boolean; + description + "Indicates whether a CSES event was generated."; + } + leaf start { + type yang:date-and-time; + description + "Timestamp indicating when the CSES period began."; + } + leaf end { + type yang:date-and-time; + description + "Timestamp indicating when the CSES period ended."; + } + leaf duration { + type uint32; + units "seconds"; + description "Duration of the CSES period in seconds."; + } + leaf error-count { + type uint32; + description + "Number of errors during the CSES period."; + } + } + } + + grouping pm-periodic-measurement-gr { + description + "Hierarchical structure for periodic performance + measurements."; + list parameter-profile { + key "name"; + description "List of performance parameter profiles."; + leaf name { + type profile-names; + description "Name of the parameter profile."; + } + list pm-parameter { + key "name"; + description + "List of PM parameters within the parameter profile."; + leaf name { + type string; + description + "Name of the performance parameter being measured."; + } + uses periodic-measurement-intervals; + } + } + } + + /* + * MAIN CONTAINER + */ + container pm-periodic-measurement { + description + "Main container for periodic performance measurements."; + uses pm-periodic-measurement-gr; + } + + /* + * NOTIFICATIONS + */ + notification pm-threshold-events { + description + "Notification for periodic threshold crossing events and + non-periodic performance events (BUT, EUT, CSES)."; + container periodic-events { + description "Container for periodic threshold events."; + list parameter-profile { + key "name"; + description + "List of performance parameter profiles for event + monitoring."; + leaf name { + type profile-names; + description "Name of the parameter profile."; + } + list pm-parameter { + key "name"; + description + "List of PM parameters within the parameter + profile."; + leaf name { + type string; + description + "Name of the performance parameter being + monitored."; + } + list sampling-interval { + key "id"; + description + "List of sampling intervals for event monitoring."; + leaf id { + type string; + description + "Unique identifier for this sampling interval + configuration."; + } + uses time-interval-config; + list measurement-interval { + key "id"; + description + "List of measurement intervals for event + aggregation."; + leaf id { + type string; + description + "Unique identifier for this measurement + interval configuration."; + } + uses time-interval-config; + container event-types { + description + "Container for different threshold event + types."; + uses counts-transient-event-gr; + uses counts-standing-event-gr; + uses snapshot-events-gr; + uses tidemarks-events-gr; + } + } + } + } + } + } + + container non-periodic-events { + description + "Container for non-periodic performance events (BUT, + EUT, CSES)."; + uses non-periodic-events-gr; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-pm-interval-capabilities@2026-05-02.yang b/experimental/ietf-extracted-YANG-modules/ietf-pm-interval-capabilities@2026-05-02.yang new file mode 100644 index 000000000..1e12e7505 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-pm-interval-capabilities@2026-05-02.yang @@ -0,0 +1,236 @@ +module ietf-pm-interval-capabilities { + yang-version 1.1; + namespace + "urn:ietf:params:xml:ns:yang:ietf-pm-interval-capabilities"; + prefix ipc; + + import ietf-pm-collection { + prefix pm-coll; + reference "draft-ietf-ccamp-pm-measurements-yang"; + } + + organization + "IETF Common Control and Measurement Plane (ccamp) + Working Group"; + contact + "WG Web: + Editor: Bin Yeong Yoon "; + description + "This YANG module defines a data model for discovering and + expressing performance management (PM) interval capabilities + in network equipment. The module enables clients to discover + what sampling and measurement intervals a server can support + for different performance parameters within various + parameter profiles. + + This module provides hierarchical interval capability + discovery where measurement intervals must be multiples of + their corresponding sampling intervals, and each parameter + can have different interval capabilities within parameter + profiles. + + This module is designed to work with ietf-pm-collection for + complete PM streaming solutions and supports both real-time + monitoring and long-term trend analysis."; + + revision 2026-05-02 { + description + "Companion module ietf-pm-collection replaces measurement + methods with collection types (counts, snapshot, + tidemarks) and renames the grouping and container to + collection-types per ITU-T G.7710; this module continues + to describe interval capabilities for that design."; + reference + "RFC XXXX: A YANG Data Model of Performance Management + Streaming"; + } + + /* + * TYPEDEFs + */ + typedef interval-unit { + type enumeration { + enum millisecond { + description "Time interval in milliseconds."; + } + enum second { + description "Time interval in seconds."; + } + enum minute { + description "Time interval in minutes."; + } + enum hour { + description "Time interval in hours."; + } + enum day { + description "Time interval in days."; + } + } + description "Supported units for expressing time intervals."; + } + + /* + * IDENTITIES + */ + identity interval-capability-type { + description + "Base identity for different types of interval + capabilities."; + } + + identity sampling-interval-capability { + base interval-capability-type; + description + "Capability for sampling intervals - how frequently data + is collected."; + } + + identity measurement-interval-capability { + base interval-capability-type; + description + "Capability for measurement intervals - how long + measurements are aggregated."; + } + + /* + * GROUPINGS + */ + grouping interval-constraints { + description + "Constraints for supported intervals including min/max + values and supported units. This grouping defines the + capability constraints for both sampling and measurement + intervals, allowing devices to express their supported + interval ranges, units, and granularity."; + leaf min-value { + type uint32; + description + "Minimum supported value for this interval type."; + } + leaf max-value { + type uint32; + description + "Maximum supported value for this interval type."; + } + leaf-list units { + type interval-unit; + description + "List of supported time units for this interval type."; + } + leaf default-value { + type uint32; + description + "Default value recommended for this interval type."; + } + leaf default-unit { + type interval-unit; + description + "Default unit recommended for this interval type."; + } + leaf granularity { + type uint32; + description + "Granularity step for interval values. For example, if + granularity is 5, then only values that are multiples + of 5 are supported."; + } + } + + grouping parameter-interval-capabilities { + description + "Interval capabilities for a specific parameter within a + profile. This grouping defines the complete interval + capability information for a single performance + parameter, including its name and hierarchical interval + relationships. The structure uses mapping-based discovery + where all interval information is contained within the + sampling-interval structure."; + leaf name { + type string; + description + "Name of the performance parameter (e.g., es, ses, + bbe)."; + } + container interval-relationships { + description + "Defines hierarchical relationships between sampling and + measurement intervals for this parameter. Measurement + intervals must be multiples of their corresponding + sampling intervals."; + list sampling-interval { + key "id"; + description + "Maps sampling intervals to their compatible + measurement intervals with complete capability + information."; + leaf id { + type string; + description + "Unique identifier for this sampling interval + capability."; + } + uses interval-constraints; + list measurement-interval { + key "id"; + description + "Detailed information for each compatible + measurement interval within the sampling interval + structure."; + leaf id { + type string; + description + "Unique identifier for this measurement interval + capability."; + } + uses interval-constraints; + } + } + } + } + + grouping profile-parameter-capabilities { + description + "Capabilities for all parameters within a specific + parameter profile. This grouping defines the complete + capability information for a parameter profile, including + the profile name and all performance parameters with + their respective interval capabilities."; + leaf name { + type pm-coll:profile-names; + description + "Name of the parameter profile (e.g., + itu-transport-maintenance-15min)."; + } + list pm-parameter { + key "name"; + description + "List of parameters with their specific interval + capabilities within this profile."; + uses parameter-interval-capabilities; + } + } + + /* + * MAIN CONTAINER + */ + container pm-interval-capabilities { + description + "Main container for hierarchical PM interval capabilities. + This container provides comprehensive information about + the sampling and measurement intervals that a server can + support for different parameters within different + parameter profiles."; + config false; + + list parameter-profile { + key "name"; + description + "List of parameter profiles with their parameter- + specific interval capabilities. Each profile represents + a collection of parameters that share common + measurement requirements but may have different + interval capabilities."; + uses profile-parameter-capabilities; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang b/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang index 94cf0d065..aa646f5df 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang @@ -333,8 +333,6 @@ module ietf-power-and-energy { description "The percent value of the power factor measurement. Leaf often omitted, implying 100%."; - reference - "Replaces RFC 7460: eoPowerCurrentType object"; } identity power-state { @@ -344,9 +342,53 @@ module ietf-power-and-energy { for extensibility while maintaining alignment with the IANA Power State Set Registry."; reference - "IANA: Power State Set Registry"; + "IANA: Power State Set Registry: + https://www.iana.org/assignments/power-state-sets/"; + } + identity power-state-admin { + base power-state; + description + "Base identity for administratively requested power states. The + administrative power state indicates the desired power state + requested for the Energy Object by a management system."; + } + identity power-state-oper { + base power-state; + description + "Base identity for operational power states. The operational + power state indicates the actual current power state of the + Energy Object. A difference between the administrative state + and the operational state indicates that the Energy Object is + transitioning between power states."; + } + identity power-state-enter-reason { + description + "Base identity for reasons why an Energy Object entered its + current operational power state. This is analogous to the + enumeration values defined for eoPowerStateEnterReason + in RFC 7460."; + } + identity power-state-on { + base power-state; + description "full power on."; + reference + "IANA: Power State Set Registry (ieee1621-power-state-set): + https://www.iana.org/assignments/power-state-sets/"; + } + identity power-state-off { + base power-state; + description "power off."; + reference + "IANA: Power State Set Registry (ieee1621-power-state-set): + https://www.iana.org/assignments/power-state-sets/"; + } + identity power-state-sleep { + base power-state; + description "low-power state."; + reference + "IANA: Power State Set Registry (ieee1621-power-state-set): + https://www.iana.org/assignments/power-state-sets/"; } - identity unit-multiplier { description "Base identity for unit multipliers as defined in IEC 61850-7-3 @@ -371,8 +413,6 @@ module ietf-power-and-energy { zetta(21), -- 10^21 yotta(24) -- 10^24 "; - reference - "RFC 7460: UnitMultiplier"; } identity multiplier-yocto { description @@ -423,8 +463,6 @@ module ietf-power-and-energy { description "Represents a multiplier of 10^3 (1,000) associated with the integer units used to measure the power or energy."; - reference - "RFC 7460: UnitMultiplier"; } identity multiplier-mega { description @@ -463,7 +501,6 @@ module ietf-power-and-energy { } identity energy-relationship-type { description "Base identity for energy object relationships"; - reference "RFC 7461: IANAEnergyRelationship"; } identity powered-by { base energy-relationship-type; @@ -494,8 +531,6 @@ module ietf-power-and-energy { config false; description "Energy objects container for power and energy attributes."; - reference - "RFC 7460: eoPowerTable"; list energy-entry { key "object-id"; @@ -503,15 +538,12 @@ module ietf-power-and-energy { "Power and energy entry for an energy object, indexed by object id. Each entry contains the complete set of power and energy attributes for a specific physical component."; - reference - "RFC 7460: EoPowerEntry"; leaf object-id { type string; description - "An identifier that uniquely identifies the energy object - in an energy object."; - } + "An identifier that uniquely identifies the energy object"; + } leaf source-component-id { type leafref { @@ -527,8 +559,7 @@ module ietf-power-and-energy { container power { description "Container for power measurement attributes."; - reference - "RFC 7460: eoPowerEntry attributes"; + leaf instantaneous-power { type int32; units "Watts"; @@ -542,8 +573,6 @@ module ietf-power-and-energy { indicate power consumption, while negative values can indicate power generation (e.g., for devices with battery backup or renewable energy sources)."; - reference - "RFC 7460: eoPower object"; } leaf nameplate-power { @@ -554,8 +583,6 @@ module ietf-power-and-energy { the maximum power that the energy object is designed to consume or produce, as specified by the manufacturer. Essential for power budget calculations and capacity planning."; - reference - "RFC 7460: eoPowerNameplate object"; } leaf unit-multiplier { @@ -568,8 +595,6 @@ module ietf-power-and-energy { This multiplier applies to both instantaneous-power and nameplate-power values, allowing representation of power values from milliwatts to gigawatts using integer arithmetic."; - reference - "RFC 7460: eoPowerUnitMultiplier object"; } leaf data-source-accuracy { @@ -587,8 +612,6 @@ module ietf-power-and-energy { This metadata is crucial for network management applications to assess the reliability and accuracy of the power data."; - reference - "RFC 7460: eoPowerMeasurementCaliber object"; } leaf power-factor { @@ -598,8 +621,6 @@ module ietf-power-and-energy { energy object. This information is important for understanding the electrical characteristics of the energy object and for correctly interpreting the power data."; - reference - "Replaces RFC 7460: eoPowerCurrentType object"; } leaf measurement-local { @@ -610,15 +631,12 @@ module ietf-power-and-energy { the energy object, while a remote measurement is collected from an external source. This information can be useful for troubleshooting and understanding the data source."; - reference - "RFC 7460: eoPowerMeasurementLocal object"; } } + container energy { description "Container for energy measurement attributes."; - reference - "RFC 7460: eoEnergyEntry attributes"; leaf total-energy-consumed { type uint64; @@ -631,8 +649,6 @@ module ietf-power-and-energy { in this container. This value is useful for tracking overall energy usage over time for billing, reporting, or optimization purposes."; - reference - "RFC 7460: eoEnergyConsumed object"; } leaf total-energy-delivered { @@ -647,8 +663,6 @@ module ietf-power-and-energy { capable of generating power, such as those with renewable energy sources or battery backup systems, or capable of providing energy to other energy objects (e.g., PoE switches)."; - reference - "RFC 7460: eoEnergyProduced object"; } leaf unit-multiplier { type identityref { @@ -660,8 +674,6 @@ module ietf-power-and-energy { of the energy measurements, allowing representation of energy values from milliwatt-hours to gigawatt-hours using integer arithmetic."; - reference - "RFC 7460: eoPowerUnitMultiplier object"; } leaf data-source-accuracy { @@ -679,8 +691,6 @@ module ietf-power-and-energy { This metadata is crucial for network management applications to assess the reliability and accuracy of the energy data."; - reference - "RFC 7460: eoPowerMeasurementCaliber object"; } leaf measurement-local { type boolean; @@ -690,8 +700,6 @@ module ietf-power-and-energy { the energy object, while a remote measurement is collected from an external source. This information can be useful for troubleshooting and understanding the data source."; - reference - "RFC 7460: eoPowerMeasurementLocal object"; } leaf-list certifications { type identityref { @@ -702,12 +710,29 @@ module ietf-power-and-energy { this list is empty, the energy object has no certifications."; } } + container power-state { + description + "Container for Power state monitoring."; + leaf power-state-oper { + type identityref { + base power-state-oper; + } + description + "The actual operational power state of the Energy Object. + This reflects the current state, which may differ from the + admin-state during transitions. This leaf is the + operational counterpart of the administratively set + 'power-state-admin' in /energy-control/energy-entry. The + two leaves together form the complete power state + management interface."; + } + } + list relationship { key "type"; + config false; description "Relationships for this energy entry. Replaces RFC 7461 eoRelationTable."; - reference - "RFC 7461: eoRelationTable, eoRelationEntry"; leaf type { type identityref { @@ -717,15 +742,11 @@ module ietf-power-and-energy { description "The type of relationship this energy object has with peer objects."; - reference - "RFC 7461: eoRelationship, IANAEnergyRelationship"; } list peer { key "id"; description "Multiple peers for this relationship type."; - reference - "RFC 7461: eoRelationID"; leaf id { type string; @@ -735,8 +756,6 @@ module ietf-power-and-energy { metered-by, etc. If the network level UUID is not known, some other locally unique identifier MAY be used, in conjunction with a human readable details."; - reference - "RFC 7461: eoRelationID (UUIDorZero)"; } leaf details { type string; @@ -749,5 +768,65 @@ module ietf-power-and-energy { } } } + + container energy-control { + description + "Energy control configuration, mirroring monitored objects. The + operational tree ('container energy-objects') will typically + contain a significantly larger number of instances than the + configuration tree here. The configuration tree represents the + administrator's intent and is limited to explicitly provisioned + entries."; + + list energy-entry { + key "object-id"; + description + "Control entry for a specific energy object."; + + leaf object-id { + type string; + description + "An identifier that uniquely identifies the energy object."; + } + container power-state { + description + "Container for Power state management."; + + leaf power-state-oper { + type leafref { + path "/energy-objects/energy-entry/power-state/power-state-oper"; + require-instance false; + } + description + "References the corresponding operational energy object + instance in the monitoring tree."; + } + + leaf power-state-admin { + type identityref { + base power-state-admin; + } + description + "The administratively requested power state for the + Energy Object. This is the state that the management + system desires the energy object to be in. This leaf is + the administrative counterpart of the operational set + 'power-state-oper' in /energy-objects/energy-entry. The + two leaves together form the complete power state + management interface."; + } + + leaf state-enter-reason { + type identityref { + base power-state-enter-reason; + } + description + "The reason why the Energy Object entered its current + operational power state. This is set whenever the + power-state-oper changes."; + } + } + } + } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2025-05-22.yang b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2026-05-23.yang similarity index 95% rename from experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2025-05-22.yang rename to experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2026-05-23.yang index b06dab6d8..8811f5c04 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2025-05-22.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy-types@2026-05-23.yang @@ -24,14 +24,8 @@ module ietf-sr-policy-types { Editor: Tarik Saleh - Editor: Robert Sawaya - Editor: Zhuang Shunwan - Editor: Daniel Voyer - - Editor: Muhammad Durrani - Editor: Satoru Matsushima Editor: Pavan Vishnu Beeram @@ -41,7 +35,6 @@ module ietf-sr-policy-types { description "This YANG module defines the essential types for the management of SR policy module. - Copyright (c) 2024 IETF Trust and the persons identified as authors of the code. All rights reserved. @@ -58,8 +51,15 @@ module ietf-sr-policy-types { // RFC Editor: replace XXXX with actual RFC number and remove // this note + revision "2026-05-23" { + description + "Remove the metric type definition. The metric type from + te-types will be reused instead."; + reference "RFC 9256"; + } + revision "2025-05-22" { - // RFC Editor: replace the above date 2024-03-04 with the date of + // RFC Editor: replace the above date 2025-05-22 with the date of // publication and remove this note. description @@ -361,15 +361,6 @@ module ietf-sr-policy-types { description "SR policy oper state"; } - typedef metric-type { - type enumeration { - enum te { value 1; description "TE metric"; } - enum igp { value 2; description "IGP metric"; } - enum latency { value 3; description "Latency metric"; } - } - description "Metric type"; - } - typedef margin-type { type enumeration { enum absolute { value 1; description "Absolute value"; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2026-05-23.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang rename to experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2026-05-23.yang index ec6efaf1a..ffcaa47dc 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2025-10-20.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-sr-policy@2026-05-23.yang @@ -44,17 +44,11 @@ module ietf-sr-policy { Editor: Tarik Saleh - Editor: Robert Sawaya - Editor: Zhuang Shunwan - Editor: Daniel Voyer - - Editor: Muhammad Durrani - Editor: Satoru Matsushima - Editor: Pavan Vishnu Beeram + Editor: Vishnu Pavan Beeram "; @@ -82,7 +76,13 @@ module ietf-sr-policy { // RFC Editor: replace XXXX with actual RFC number and remove // this note - revision 2025-10-20 { + revision "2026-05-23" { + description + "Use the path metric type from te-types."; + reference "RFC 9256"; + } + + revision "2025-10-20" { description "Add the headend-address to the policy key to ensure global uniqueness across multiple headends, consistent with RFC 9256."; @@ -438,7 +438,9 @@ module ietf-sr-policy { "Path is invalid if its metric exceeds this value"; leaf metric-type { - type sr-policy-types:metric-type; + type identityref { + base te-types:path-metric-type; + } description "Metric type"; } @@ -468,7 +470,6 @@ module ietf-sr-policy { description "Maximum number of SIDs in a segment-list"; } } - grouping optimization-templates { description "Path optimization templates properties"; @@ -517,9 +518,6 @@ module ietf-sr-policy { description "Attributes applicable to SR policies"; - /* uses srlg; - uses affinity-mapping; - */ // TODO: Beyond the scope of this model uses segment-lists; uses explicit-binding-sid-rules; } @@ -816,7 +814,9 @@ module ietf-sr-policy { container minimize-metric { description "The metric for which the path is optimized"; leaf metric-type { - type sr-policy-types:metric-type; + type identityref { + base te-types:path-metric-type; + } description "Metric type"; } @@ -926,7 +926,9 @@ module ietf-sr-policy { "Path is invalid if its metric exceeds this value"; leaf metric-type { - type sr-policy-types:metric-type; + type identityref { + base te-types:path-metric-type; + } description "Metric type"; } @@ -1044,7 +1046,6 @@ module ietf-sr-policy { } } } - grouping mpls-label-stack { description "Grouping for MPLS label stack"; @@ -1683,7 +1684,8 @@ module ietf-sr-policy { + "sr-policy:value"; } description - "Reference to existing candidate path MPLS binding SID value"; + "Reference to existing candidate path MPLS binding SID " + + "value"; } } case srv6 { @@ -1703,7 +1705,8 @@ module ietf-sr-policy { + "sr-policy:value"; } description - "Reference to existing candidate path SRv6 binding SID value"; + "Reference to existing candidate path SRv6 binding SID " + + "value"; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-05-22.yang similarity index 95% rename from experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang rename to experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-05-22.yang index 82f39a520..0d04a29ff 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-02-13.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2026-05-22.yang @@ -40,11 +40,10 @@ module ietf-vrrp { Editor: Ravi Parikh - + Editor: Mingui Zhang "; - description "This YANG module defines a model for managing Virtual Router Redundancy Protocol (VRRP) versions 2 and 3. @@ -72,11 +71,11 @@ module ietf-vrrp { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2026-02-13 { + revision 2026-05-22 { description "This revision includes the following changes: - Update some identifiers and descriptions to conform - to the changes in RFC 9586 + to the changes in RFC 9568 - Add a new effective-priority leaf - Update some reference statements"; reference @@ -266,6 +265,7 @@ module ietf-vrrp { "A packet has been received with an invalid VRRP checksum value."; } + identity ip-ttl-error { base vrrp-error-global; description @@ -397,8 +397,9 @@ module ietf-vrrp { default "false"; description "Generates VRRP state change messages each time the - VRRP instance changes state (from 'up' to 'down' - or 'down' to 'up')."; + VRRP instance changes state from one VRRP state + ('initialize', 'backup', or 'active') to another + VRRP state."; } container preempt { description @@ -613,7 +614,7 @@ module ietf-vrrp { or networks."; container interfaces { description - "Enables the specified VRRPv2 or VRRPv3 instance to track + "Enables the specified VRRPv3 instance to track interfaces. Interface tracking prevents traffic loss by detecting the availability of interfaces. The operational states of other interfaces are associated with the @@ -649,7 +650,7 @@ module ietf-vrrp { } // interfaces container networks { description - "Enables the VRRPv2 or VRRPv3 router instance to track the + "Enables the VRRPv3 router instance to track the specified networks through their IPv6 network prefixes. Network tracking prevents traffic loss by detecting network connectivity failure. The states of @@ -662,8 +663,8 @@ module ietf-vrrp { list network { key "prefix"; description - "Enables the specified VRRPv2 or VRRPv3 instance to - track an IPv6 network by specifying the prefix of the + "Enables the specified VRRPv3 instance to track an + IPv6 network by specifying the prefix of the IPv6 network."; leaf prefix { type inet:ipv6-prefix; @@ -689,11 +690,15 @@ module ietf-vrrp { VRRP interface."; list virtual-ipv6-address { key "ipv6-address"; - max-elements 2; + max-elements 16; description - "Two IPv6 addresses are allowed. The first address must - be a link-local address. The second address can be a - link-local or global address."; + "Virtual IPv6 addresses for a single VRRP instance. The + first configured virtual address must be an IPv6 + link-local address. Subsequent IPv6 addresses can be + IPv6 link-local or global addresses. For a VRRP owner + router, the virtual address must match one of the IPv6 + global or link-local addresses associated with the + interface corresponding to the virtual router."; leaf ipv6-address { type inet:ipv6-address; description @@ -729,9 +734,10 @@ module ietf-vrrp { } config false; description - "The effect priority of the virtual router taking account - address ownership and any modifications due to - local policy."; + "The effective priority of the virtual router taking + account address ownership and any modifications due to + local policy. The priority 255 is reserved the virtual + router owning the address."; } leaf last-adv-source { type inet:ip-address; @@ -744,7 +750,7 @@ module ietf-vrrp { config false; description "The date and time when this virtual router - transitioned out of 'init' state."; + transitioned out of 'initialize' state."; } leaf active-down-interval { type uint32; @@ -763,7 +769,9 @@ module ietf-vrrp { config false; description "Calculated based on the priority and advertisement - interval configuration command parameters. See RFC 9568."; + interval configuration command parameters. Note that + the units are microseconds rather than centiseconds units + as configured for advertisement-interval. See RFC 9568."; } leaf last-event { type identityref { @@ -798,7 +806,7 @@ module ietf-vrrp { local management subsystem re-initialized itself."; } leaf active-transitions { - type yang:counter32; + type yang:counter64; description "The total number of times that this virtual router's state has transitioned to 'Active'. @@ -930,7 +938,6 @@ module ietf-vrrp { } } // statistics } // vrrp-global-state-attributes - /* * Configuration data and operational state data nodes */ @@ -959,7 +966,7 @@ module ietf-vrrp { description "Configures VRRP version 3 for IPv6."; list vrrp-instance { - must "derived-from-or-self(version, 'vrrp-v3')" { + must "derived-from-or-self(version, 'vrrp:vrrp-v3')" { description "IPv6 is only supported by version 3."; } @@ -979,7 +986,6 @@ module ietf-vrrp { "VRRP data at the global level."; uses vrrp-global-state-attributes; } - /* * Notifications */ From 8055660db44ac6895b9fc59ba8345b18950638d3 Mon Sep 17 00:00:00 2001 From: Joe Clarke Date: Thu, 28 May 2026 14:05:33 +0000 Subject: [PATCH 2/4] Cronjob - daily check of IANA modules. --- standard/iana/yang-parameters.xml | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/standard/iana/yang-parameters.xml b/standard/iana/yang-parameters.xml index 7e89d59a0..d3e063d7d 100644 --- a/standard/iana/yang-parameters.xml +++ b/standard/iana/yang-parameters.xml @@ -4,7 +4,7 @@ YANG Parameters 2010-06-10 - 2026-05-01 + 2026-05-26 YANG Module Names @@ -1836,15 +1836,15 @@ and Subsequent Address Family Identi - + ietf-ospf-anycast-flag N - + ietf-ospf-anycast-flag@2026-05-19.yang urn:ietf:params:xml:ns:yang:ietf-ospf-anycast-flag ospf-anycast-flag - - 's module file will be posted upon the document's publication as an RFC. + + ietf-ospf-functional-capability @@ -2588,6 +2588,16 @@ and Subsequent Address Family Identi + + ietf-te-packet-types + N + + urn:ietf:params:xml:ns:yang:ietf-te-packet-types + te-packet-types + + + 's module file will be posted upon the document's publication as an RFC. + ietf-te-topology N @@ -2618,6 +2628,16 @@ and Subsequent Address Family Identi + + ietf-te-types + N + + urn:ietf:params:xml:ns:yang:ietf-te-types + te-types + + + 's module file will be posted upon the document's publication as an RFC. + ietf-template N From 40d778fd0fbeca1855ab2c80082e7a0d5a50abc5 Mon Sep 17 00:00:00 2001 From: Joe Clarke Date: Thu, 28 May 2026 18:05:41 +0000 Subject: [PATCH 3/4] Cronjob - daily check of IETF modules. --- ...iana-ietf-power-and-energy@2026-02-26.yang | 109 ++++++++ ...=> ietf-network-inventory@2026-05-27.yang} | 6 +- ...etf-network-slice-service@2026-05-27.yang} | 18 +- ...ietf-otn-path-computation@2026-05-19.yang} | 118 ++++----- ...1.yang => ietf-otn-tunnel@2026-05-19.yang} | 243 +++++++++--------- .../ietf-power-and-energy@2026-01-22.yang | 19 +- 6 files changed, 300 insertions(+), 213 deletions(-) create mode 100644 experimental/ietf-extracted-YANG-modules/iana-ietf-power-and-energy@2026-02-26.yang rename experimental/ietf-extracted-YANG-modules/{ietf-network-inventory@2026-05-13.yang => ietf-network-inventory@2026-05-27.yang} (99%) rename experimental/ietf-extracted-YANG-modules/{ietf-network-slice-service@2025-05-09.yang => ietf-network-slice-service@2026-05-27.yang} (99%) rename experimental/ietf-extracted-YANG-modules/{ietf-otn-path-computation@2022-09-12.yang => ietf-otn-path-computation@2026-05-19.yang} (74%) rename experimental/ietf-extracted-YANG-modules/{ietf-otn-tunnel@2024-03-21.yang => ietf-otn-tunnel@2026-05-19.yang} (85%) diff --git a/experimental/ietf-extracted-YANG-modules/iana-ietf-power-and-energy@2026-02-26.yang b/experimental/ietf-extracted-YANG-modules/iana-ietf-power-and-energy@2026-02-26.yang new file mode 100644 index 000000000..d778b85b0 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/iana-ietf-power-and-energy@2026-02-26.yang @@ -0,0 +1,109 @@ +module iana-ietf-power-and-energy { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:iana-ietf-power-and-energy"; + prefix ianaeo; + + organization "IANA"; + contact + " Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States of America + + Tel: +1 310 301 5800 + E-Mail: iana@iana.org>"; + + description + "IANA-defined identities for power and energy class. + + The latest revision of this YANG module can be obtained from + the IANA website. + + Requests for new values should be made to IANA via + email (iana@iana.org). + + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). + + The initial version of this YANG module is part of RFC XXX; + see the RFC itself for full legal notices."; + reference + "https://www.iana.org/assignments/yang-parameters"; + + revision 2026-02-26 { + description + "Initial revision."; + reference + "RFC XXX: A YANG Data Model for Power and Energy monitoring and + control of devices within or connected to communication + networks"; + } + + identity certification-type { + description + "Base identity for certification types applicable to energy + objects. This identity serves as the root for a hierarchy of + certification types, allowing for extensibility."; + + reference + "Industry sustainability and energy efficiency certifications"; + } + + identity energy-star { + base certification-type; + description + "ENERGY STAR certification for energy efficiency."; + reference + "https://www.energystar.gov/"; + } + + identity c80-plus{ + base certification-type; + description + "80 PLUS Power Supply Certification"; + reference + "https://www.clearesult.com/80plus/"; + } + + identity epeat { + base certification-type; + description + "Electronic Product Environmental Assessment Tool ratings (Bronze/Silver/Gold)."; + reference + "https://www.epeat.net/"; + } + + identity eu-energy-level{ + base certification-type; + description + "EU Energy Label: European efficiency ratings"; + reference + "https://eprel.ec.europa.eu/screen/home"; + } + + identity cn-energy-level{ + base certification-type; + description + "CN Energy Label: China efficiency ratings"; + reference + "https://www.energylabel.com.cn"; + } + + identity cqc{ + base certification-type; + description + "China Quality Certification for energy efficiency"; + reference + "https://www.cqc.com.cn/"; + } + +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-13.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-27.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-13.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-27.yang index dbf74b330..acca60ab1 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-13.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-inventory@2026-05-27.yang @@ -65,7 +65,7 @@ module ietf-network-inventory { described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; - revision 2026-05-13 { + revision 2026-05-27 { description "Initial version"; reference @@ -176,8 +176,8 @@ module ietf-network-inventory { description "The name of the entity (e.g., component), as specified by a network operator, that provides a non-volatile 'handle' - for the entity and that can change anytime during the entity - lifetime. + for the entity. The The network operator can specify a + different value anytime during the entity lifetime. If no value is discovered, the server MAY set the value of this node to a locally unique value in the operational diff --git a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2026-05-27.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang rename to experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2026-05-27.yang index 82b67a1ca..33e5c7a10 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2025-05-09.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-network-slice-service@2026-05-27.yang @@ -7,7 +7,7 @@ module ietf-network-slice-service { import ietf-inet-types { prefix inet; reference - "RFC 6991: Common YANG Types"; + "RFC 9911: Common YANG Types"; } import ietf-routing-types { prefix rt-types; @@ -17,7 +17,7 @@ module ietf-network-slice-service { import ietf-yang-types { prefix yang; reference - "RFC 6991: Common YANG Data Types"; + "RFC 9911: Common YANG Data Types"; } import ietf-geo-location { prefix geo; @@ -44,12 +44,12 @@ module ietf-network-slice-service { import ietf-ac-common { prefix ac-common; reference - "RFC BBBB: A Common YANG Data Model for Attachment Circuits"; + "RFC 9833: A Common YANG Data Model for Attachment Circuits"; } import ietf-ac-svc { prefix ac-svc; reference - "RFC CCCC: YANG Data Models for Bearers and 'Attachment + "RFC 9834: YANG Data Models for Bearers and 'Attachment Circuits'-as-a-Service (ACaaS)"; } import ietf-te-types { @@ -84,7 +84,7 @@ module ietf-network-slice-service { "This YANG module defines a service model for the RFC 9543 Network Slice Service. - Copyright (c) 2025 IETF Trust and the persons identified as + Copyright (c) 2026 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or @@ -97,7 +97,7 @@ module ietf-network-slice-service { This version of this YANG module is part of RFC AAAA; see the RFC itself for full legal notices."; - revision 2025-05-09 { + revision 2026-05-27 { description "Initial revision."; reference @@ -356,6 +356,7 @@ module ietf-network-slice-service { reference "RFC 5481: Packet Delay Variation Applicability Statement"; } + identity two-way-delay-variation-percentile { base service-slo-metric-type; description @@ -491,7 +492,6 @@ module ietf-network-slice-service { description "Base identity for SLO/SLE policy override options."; } - identity full-override { base slo-sle-policy-override; description @@ -1149,7 +1149,7 @@ module ietf-network-slice-service { "A reference to the ACs that have been created before the slice creation."; reference - "RFC CCCC: YANG Data Models for Bearers and + "RFC 9834: YANG Data Models for Bearers and 'Attachment Circuits'-as-a-Service (ACaaS)"; } leaf ce-mode { @@ -1182,7 +1182,7 @@ module ietf-network-slice-service { "A reference to the AC service that has been created before the slice creation."; reference - "RFC CCCC: YANG Data Models for Bearers and + "RFC 9834: YANG Data Models for Bearers and 'Attachment Circuits'-as-a-Service (ACaaS)"; } leaf ac-node-id { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2022-09-12.yang b/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2026-05-19.yang similarity index 74% rename from experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2022-09-12.yang rename to experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2026-05-19.yang index fc99ef2d1..a44106f73 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2022-09-12.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-otn-path-computation@2026-05-19.yang @@ -1,29 +1,23 @@ module ietf-otn-path-computation { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-otn-path-computation"; - prefix "otn-pc"; + prefix otn-pc; import ietf-te-path-computation { - prefix "te-pc"; - revision-date "2021-09-06"; - reference - "I-D.ietf-teas-yang-path-computation-14: Yang model - for requesting Path Computation."; + prefix te-pc; + reference + "RFC YYYY: A YANG Data Model for requesting path computation"; } - import ietf-te { - prefix "te"; - revision-date "2021-02-20"; + prefix te; reference - "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic - Engineering Tunnels and Interfaces. "; + "RFC KKKK: A YANG Data Model for Traffic Engineering Tunnels, + Label Switched Paths, and Interfaces"; } - import ietf-layer1-types { - prefix "l1-types"; - reference - "I-D.ietf-ccamp-layer1-types: - A YANG Data Model for Layer 1 Types. "; + prefix l1-types; + reference + "RFC ZZZZ: Common YANG Data Types for Layer 1 Networks"; } organization @@ -40,41 +34,38 @@ module ietf-otn-path-computation { Editor: Sergio Belotti "; - description "This module defines a model for requesting - OTN Path Computation. + OTN Path Computation. - The model fully conforms to the Network Management - Datastore Architecture (NMDA). + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. - Copyright (c) 2022 IETF Trust and the persons - identified as authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; - revision "2022-09-12" { + revision 2026-05-19 { description "Initial version."; reference "RFC XXXX: A YANG Data Model for requesting Path Computation - in an Optical Transport Network (OTN)"; - // RFC Ed.: replace XXXX with actual RFC number, update date - // information and remove this note + in an Optical Transport Network (OTN)"; } - /* - * Data nodes - */ - + /* + * Data nodes + */ /* * Augment TE bandwidth */ @@ -119,7 +110,7 @@ module ietf-otn-path-computation { + "te-pc:label-restrictions/te-pc:label-restriction" { description "Augment TE label range information for the ingress segment - of the requested path."; + of the requested path."; uses l1-types:otn-label-range-info; } @@ -128,7 +119,7 @@ module ietf-otn-path-computation { + "te-pc:label-restrictions/te-pc:label-restriction" { description "Augment TE label range information for the egress segment - of the requested path."; + of the requested path."; uses l1-types:otn-label-range-info; } @@ -140,12 +131,13 @@ module ietf-otn-path-computation { + "te-pc:path-request/te-pc:optimizations/te-pc:algorithm/" + "te-pc:metric/te-pc:optimization-metric/" + "te-pc:explicit-route-exclude-objects/" - + "te-pc:route-object-exclude-object/te-pc:type/te-pc:label/" - + "te-pc:label-hop/te-pc:te-label/te-pc:technology" { + + "te-pc:route-object-exclude-object/te-pc:type/" + + "te-pc:label/te-pc:label-hop/te-pc:te-label/" + + "te-pc:technology" { description "Augment TE label hop for the optimization of the explicit - route objects excluded by the path computation of the requested - path."; + route objects excluded by the path computation of the + requested path."; case otn { uses l1-types:otn-label-hop; } @@ -155,37 +147,39 @@ module ietf-otn-path-computation { + "te-pc:path-request/te-pc:optimizations/te-pc:algorithm/" + "te-pc:metric/te-pc:optimization-metric/" + "te-pc:explicit-route-include-objects/" - + "te-pc:route-object-include-object/te-pc:type/te-pc:label/" - + "te-pc:label-hop/te-pc:te-label/te-pc:technology" { + + "te-pc:route-object-include-object/te-pc:type/" + + "te-pc:label/te-pc:label-hop/te-pc:te-label/" + + "te-pc:technology" { description "Augment TE label hop for the optimization of the explicit - route objects included by the path computation of the requested - path."; + route objects included by the path computation of the + requested path."; case otn { uses l1-types:otn-label-hop; } } augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" - + "te-pc:path-request/te-pc:explicit-route-objects-always/" - + "te-pc:route-object-exclude-always/te-pc:type/te-pc:label/" - + "te-pc:label-hop/te-pc:te-label/te-pc:technology" { + + "te-pc:path-request/te-pc:explicit-route-objects/" + + "te-pc:route-object-exclude-always/" + + "te-pc:type/te-pc:label/te-pc:label-hop/te-pc:te-label/" + + "te-pc:technology" { description "Augment TE label hop for the explicit route objects always - excluded by the path computation of the requested path."; + excluded by the path computation of the requested path."; case otn { uses l1-types:otn-label-hop; } } augment "/te:tunnels-path-compute/te:input/te:path-compute-info/" - + "te-pc:path-request/te-pc:explicit-route-objects-always/" + + "te-pc:path-request/te-pc:explicit-route-objects/" + "te-pc:route-object-include-exclude/te-pc:type/" + "te-pc:label/te-pc:label-hop/te-pc:te-label/" + "te-pc:technology" { description "Augment TE label hop for the explicit route objects included - or excluded by the path computation of the requested path."; + or excluded by the path computation of the requested path."; case otn { uses l1-types:otn-label-hop; } @@ -197,7 +191,7 @@ module ietf-otn-path-computation { + "te-pc:label-start/te-pc:te-label/te-pc:technology" { description "Augment TE label range start for the ingress segment - of the requested path."; + of the requested path."; case otn { uses l1-types:otn-label-start-end; } @@ -209,7 +203,7 @@ module ietf-otn-path-computation { + "te-pc:label-end/te-pc:te-label/te-pc:technology" { description "Augment TE label range end for the ingress segment - of the requested path."; + of the requested path."; case otn { uses l1-types:otn-label-start-end; } @@ -221,7 +215,7 @@ module ietf-otn-path-computation { + "te-pc:label-step/te-pc:technology" { description "Augment TE label range step for the ingress segment - of the requested path."; + of the requested path."; case otn { uses l1-types:otn-label-step; } @@ -233,7 +227,7 @@ module ietf-otn-path-computation { + "te-pc:label-start/te-pc:te-label/te-pc:technology" { description "Augment TE label range start for the egress segment - of the requested path."; + of the requested path."; case otn { uses l1-types:otn-label-start-end; } @@ -245,7 +239,7 @@ module ietf-otn-path-computation { + "te-pc:label-end/te-pc:te-label/te-pc:technology" { description "Augment TE label range end for the egress segment - of the requested path."; + of the requested path."; case otn { uses l1-types:otn-label-start-end; } @@ -257,7 +251,7 @@ module ietf-otn-path-computation { + "te-pc:label-step/te-pc:technology" { description "Augment TE label range end for the egress segment - of the requested path."; + of the requested path."; case otn { uses l1-types:otn-label-step; } @@ -269,7 +263,7 @@ module ietf-otn-path-computation { + "te-pc:te-label/te-pc:technology" { description "Augment TE label hop for the explicit route objects to always - exclude from synchronized path computation."; + exclude from synchronized path computation."; case otn { uses l1-types:otn-label-hop; } @@ -284,7 +278,7 @@ module ietf-otn-path-computation { + "te-pc:label-hop/te-pc:te-label/te-pc:technology" { description "Augment TE label hop for the route object of the computed - path."; + path."; case otn { uses l1-types:otn-label-hop; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2024-03-21.yang b/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2026-05-19.yang similarity index 85% rename from experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2024-03-21.yang rename to experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2026-05-19.yang index a20d869ee..ec73fc956 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2024-03-21.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-otn-tunnel@2026-05-19.yang @@ -1,24 +1,19 @@ module ietf-otn-tunnel { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel"; - prefix "otn-tnl"; + prefix otn-tnl; import ietf-te { - prefix "te"; + prefix te; reference "RFC ZZZZ: A YANG Data Model for Traffic Engineering Tunnels - and Interfaces."; + and Interfaces."; } - /* Note: The RFC Editor will replace ZZZZ with the number assigned - to the RFC once draft-ietf-teas-yang-te becomes an RFC.*/ - import ietf-layer1-types { - prefix "l1-types"; - reference + prefix l1-types; + reference "RFC YYYY: Common YANG Data Types for Layer 1 Networks."; } - /* Note: The RFC Editor will replace YYYY with the number assigned - to the RFC once draft-ietf-ccamp-layer1-types becomes an RFC.*/ organization "IETF CCAMP Working Group"; @@ -40,40 +35,37 @@ module ietf-otn-tunnel { Editor: Yunbin Xu "; - description "This module defines a model for OTN Tunnel Services. - The model fully conforms to the Network Management - Datastore Architecture (NMDA). + Copyright (c) 2026 IETF Trust and the persons identified as + authors of the code. All rights reserved. - Copyright (c) 2024 IETF Trust and the persons - identified as authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject to + the license terms contained in, the Revised BSD License set + forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (https://trustee.ietf.org/license-info). - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Revised BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). + All revisions of IETF and IANA published modules can be found + at the YANG Parameters registry group + (https://www.iana.org/assignments/yang-parameters). This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision "2024-03-21" { + revision 2026-05-19 { description "Initial version"; reference "RFC XXXX: A YANG Data Model for Optical Transport Network - (OTN) Tunnels and Label Switched Paths"; - // RFC Ed.: replace XXXX with actual RFC number, update date - // information and remove this note + (OTN) Tunnels and Label Switched Paths"; } - /* - * Data nodes - */ - + /* + * Data nodes + */ /* * Augment TE bandwidth */ @@ -114,7 +106,7 @@ module ietf-otn-tunnel { + "te:te-bandwidth/te:technology" { description "Augment TE bandwidth of primary path's computed path - properties."; + properties."; case otn { uses l1-types:otn-path-bandwidth; } @@ -139,7 +131,7 @@ module ietf-otn-tunnel { + "te:te-bandwidth/te:technology" { description "Augment TE bandwidth of the primary reverse path's computed - path properties."; + path properties."; case otn { uses l1-types:otn-path-bandwidth; } @@ -162,7 +154,7 @@ module ietf-otn-tunnel { + "te:te-bandwidth/te:technology" { description "Augment TE bandwidth of the secondary path's computed path - properties."; + properties."; case otn { uses l1-types:otn-path-bandwidth; } @@ -187,7 +179,7 @@ module ietf-otn-tunnel { + "te:te-bandwidth/te:technology" { description "Augment TE bandwidth of the secondary reverse path's computed - path properties."; + path properties."; case otn { uses l1-types:otn-path-bandwidth; } @@ -202,7 +194,7 @@ module ietf-otn-tunnel { + "te:label-restrictions/te:label-restriction" { description "Augment TE label range information for the ingress segment - of the named path constraint."; + of the named path constraint."; uses l1-types:otn-label-range-info; } @@ -212,7 +204,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the egress segment - of the named path constraint."; + of the named path constraint."; uses l1-types:otn-label-range-info; } @@ -222,7 +214,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the ingress segment - of the primay path."; + of the primary path."; uses l1-types:otn-label-range-info; } @@ -232,7 +224,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the egress segment - of the primay path."; + of the primary path."; uses l1-types:otn-label-range-info; } @@ -243,7 +235,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the ingress segment - of the primay reverse path."; + of the primary reverse path."; uses l1-types:otn-label-range-info; } @@ -254,7 +246,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the egress segment - of the primay reverse path."; + of the primary reverse path."; uses l1-types:otn-label-range-info; } @@ -264,7 +256,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the ingress segment - of the secondary path."; + of the secondary path."; uses l1-types:otn-label-range-info; } @@ -274,7 +266,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the egress segment - of the secondary path."; + of the secondary path."; uses l1-types:otn-label-range-info; } @@ -284,7 +276,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the ingress segment - of the secondary reverse path."; + of the secondary reverse path."; uses l1-types:otn-label-range-info; } @@ -294,7 +286,7 @@ module ietf-otn-tunnel { + "te:label-restriction" { description "Augment TE label range information for the egress segment - of the secondary reverse path."; + of the secondary reverse path."; uses l1-types:otn-label-range-info; } @@ -309,8 +301,8 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects always - excluded by the path computation with the named path - constraint."; + excluded by the path computation with the named path + constraint."; case otn { uses l1-types:otn-label-hop; } @@ -323,8 +315,8 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects included - or excluded by the path computation with the named path - constraint."; + or excluded by the path computation with the named path + constraint."; case otn { uses l1-types:otn-label-hop; } @@ -337,7 +329,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the ingress segment - of the named path constraint."; + of the named path constraint."; case otn { uses l1-types:otn-label-start-end; } @@ -350,7 +342,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the ingress segment - of the named path constraint."; + of the named path constraint."; case otn { uses l1-types:otn-label-start-end; } @@ -362,7 +354,7 @@ module ietf-otn-tunnel { + "te:label-step/te:technology" { description "Augment TE label range step for the ingress segment - of the named path constraint."; + of the named path constraint."; case otn { uses l1-types:otn-label-step; } @@ -375,7 +367,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the egress segment - of the named path constraint."; + of the named path constraint."; case otn { uses l1-types:otn-label-start-end; } @@ -388,7 +380,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the egress segment - of the named path constraint."; + of the named path constraint."; case otn { uses l1-types:otn-label-start-end; } @@ -400,7 +392,7 @@ module ietf-otn-tunnel { + "te:label-step/te:technology" { description "Augment TE label range step for the egress segment - of the named path constraint."; + of the named path constraint."; case otn { uses l1-types:otn-label-step; } @@ -409,13 +401,14 @@ module ietf-otn-tunnel { augment "/te:te/te:tunnels/te:tunnel/" + "te:primary-paths/te:primary-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-exclude-objects/" + + "te:optimization-metric/" + + "te:explicit-route-exclude-objects/" + "te:route-object-exclude-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects excluded by the path computation of the primary - path."; + route objects excluded by the path computation of the primary + path."; case otn { uses l1-types:otn-label-hop; } @@ -424,13 +417,14 @@ module ietf-otn-tunnel { augment "/te:te/te:tunnels/te:tunnel/" + "te:primary-paths/te:primary-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-include-objects/" + + "te:optimization-metric/" + + "te:explicit-route-include-objects/" + "te:route-object-include-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects included by the path computation of the primary - path."; + route objects included by the path computation of the primary + path."; case otn { uses l1-types:otn-label-hop; } @@ -443,7 +437,7 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects always - excluded by the path computation of the primary path."; + excluded by the path computation of the primary path."; case otn { uses l1-types:otn-label-hop; } @@ -456,7 +450,7 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects included - or excluded by the path computation of the primary path."; + or excluded by the path computation of the primary path."; case otn { uses l1-types:otn-label-hop; } @@ -469,7 +463,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the ingress segment - of the primay path."; + of the primary path."; case otn { uses l1-types:otn-label-start-end; } @@ -482,7 +476,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the ingress segment - of the primay path."; + of the primary path."; case otn { uses l1-types:otn-label-start-end; } @@ -494,7 +488,7 @@ module ietf-otn-tunnel { + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range step for the ingress segment - of the primay path."; + of the primary path."; case otn { uses l1-types:otn-label-step; } @@ -507,7 +501,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the egress segment - of the primay path."; + of the primary path."; case otn { uses l1-types:otn-label-start-end; } @@ -520,7 +514,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the egress segment - of the primay path."; + of the primary path."; case otn { uses l1-types:otn-label-start-end; } @@ -532,7 +526,7 @@ module ietf-otn-tunnel { + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range end for the egress segment - of the primay path."; + of the primary path."; case otn { uses l1-types:otn-label-step; } @@ -547,7 +541,7 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the route object of the computed - primary path."; + primary path."; case otn { uses l1-types:otn-label-hop; } @@ -557,13 +551,14 @@ module ietf-otn-tunnel { + "te:primary-paths/te:primary-path/" + "te:primary-reverse-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-exclude-objects/" + + "te:optimization-metric/" + + "te:explicit-route-exclude-objects/" + "te:route-object-exclude-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects excluded by the path computation of the primary - reverse path."; + route objects excluded by the path computation of the primary + reverse path."; case otn { uses l1-types:otn-label-hop; } @@ -573,13 +568,14 @@ module ietf-otn-tunnel { + "te:primary-paths/te:primary-path/" + "te:primary-reverse-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-include-objects/" + + "te:optimization-metric/" + + "te:explicit-route-include-objects/" + "te:route-object-include-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects included by the path computation of the primary - reverse path."; + route objects included by the path computation of the primary + reverse path."; case otn { uses l1-types:otn-label-hop; } @@ -594,8 +590,8 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects always - excluded by the path computation of the primary reverse - path."; + excluded by the path computation of the primary reverse + path."; case otn { uses l1-types:otn-label-hop; } @@ -610,8 +606,8 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects included - or excluded by the path computation of the primary reverse - path."; + or excluded by the path computation of the primary reverse + path."; case otn { uses l1-types:otn-label-hop; } @@ -625,7 +621,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the ingress segment - of the primay reverse path."; + of the primary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -639,7 +635,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the ingress segment - of the primay reverse path."; + of the primary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -652,7 +648,7 @@ module ietf-otn-tunnel { + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range step for the ingress segment - of the primay reverse path."; + of the primary reverse path."; case otn { uses l1-types:otn-label-step; } @@ -666,7 +662,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the egress segment - of the primay reverse path."; + of the primary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -680,7 +676,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the egress segment - of the primay reverse path."; + of the primary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -693,7 +689,7 @@ module ietf-otn-tunnel { + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range step for the egress segment - of the primay reverse path."; + of the primary reverse path."; case otn { uses l1-types:otn-label-step; } @@ -702,13 +698,13 @@ module ietf-otn-tunnel { augment "/te:te/te:tunnels/te:tunnel/" + "te:primary-paths/te:primary-path/" + "te:primary-reverse-path/" - + "te:computed-paths-properties/te:computed-path-properties/" - + "te:path-properties/te:path-route-objects/" - + "te:path-route-object/te:type/te:label/" - + "te:label-hop/te:te-label/te:technology" { + + "te:computed-paths-properties/" + + "te:computed-path-properties/te:path-properties/" + + "te:path-route-objects/te:path-route-object/te:type/" + + "te:label/te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the route object of the computed - primary reverse path."; + primary reverse path."; case otn { uses l1-types:otn-label-hop; } @@ -717,13 +713,14 @@ module ietf-otn-tunnel { augment "/te:te/te:tunnels/te:tunnel/" + "te:secondary-paths/te:secondary-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-exclude-objects/" + + "te:optimization-metric/" + + "te:explicit-route-exclude-objects/" + "te:route-object-exclude-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects excluded by the path computation of the - secondary path."; + route objects excluded by the path computation of the + secondary path."; case otn { uses l1-types:otn-label-hop; } @@ -732,13 +729,14 @@ module ietf-otn-tunnel { augment "/te:te/te:tunnels/te:tunnel/" + "te:secondary-paths/te:secondary-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-include-objects/" + + "te:optimization-metric/" + + "te:explicit-route-include-objects/" + "te:route-object-include-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects included by the path computation of the - secondary path."; + route objects included by the path computation of the + secondary path."; case otn { uses l1-types:otn-label-hop; } @@ -751,7 +749,7 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects always - excluded by the path computation of the secondary path."; + excluded by the path computation of the secondary path."; case otn { uses l1-types:otn-label-hop; } @@ -764,7 +762,7 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects included - or excluded by the path computation of the secondary path."; + or excluded by the path computation of the secondary path."; case otn { uses l1-types:otn-label-hop; } @@ -777,7 +775,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the ingress segment - of the secondary path."; + of the secondary path."; case otn { uses l1-types:otn-label-start-end; } @@ -790,18 +788,19 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the ingress segment - of the secondary path."; + of the secondary path."; case otn { uses l1-types:otn-label-start-end; } } + augment "/te:te/te:tunnels/te:tunnel/" + "te:secondary-paths/te:secondary-path/" + "te:path-in-segment/te:label-restrictions/" + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range step for the ingress segment - of the secondary path."; + of the secondary path."; case otn { uses l1-types:otn-label-step; } @@ -814,7 +813,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the egress segment - of the secondary path."; + of the secondary path."; case otn { uses l1-types:otn-label-start-end; } @@ -827,7 +826,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the egress segment - of the secondary path."; + of the secondary path."; case otn { uses l1-types:otn-label-start-end; } @@ -839,7 +838,7 @@ module ietf-otn-tunnel { + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range step for the egress segment - of the secondary path."; + of the secondary path."; case otn { uses l1-types:otn-label-step; } @@ -854,7 +853,7 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the route object of the computed - secondary path."; + secondary path."; case otn { uses l1-types:otn-label-hop; } @@ -863,13 +862,14 @@ module ietf-otn-tunnel { augment "/te:te/te:tunnels/te:tunnel/" + "te:secondary-reverse-paths/te:secondary-reverse-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-exclude-objects/" + + "te:optimization-metric/" + + "te:explicit-route-exclude-objects/" + "te:route-object-exclude-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects excluded by the path computation of the - secondary reverse path."; + route objects excluded by the path computation of the + secondary reverse path."; case otn { uses l1-types:otn-label-hop; } @@ -878,13 +878,14 @@ module ietf-otn-tunnel { augment "/te:te/te:tunnels/te:tunnel/" + "te:secondary-reverse-paths/te:secondary-reverse-path/" + "te:optimizations/te:algorithm/te:metric/" - + "te:optimization-metric/te:explicit-route-include-objects/" + + "te:optimization-metric/" + + "te:explicit-route-include-objects/" + "te:route-object-include-object/te:type/te:label/" + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the optimization of the explicit - route objects included by the path computation of the - secondary reverse path."; + route objects included by the path computation of the + secondary reverse path."; case otn { uses l1-types:otn-label-hop; } @@ -897,8 +898,8 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects always - excluded by the path computation of the secondary reverse - path."; + excluded by the path computation of the secondary reverse + path."; case otn { uses l1-types:otn-label-hop; } @@ -911,8 +912,8 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the explicit route objects included - or excluded by the path computation of the secondary reverse - path."; + or excluded by the path computation of the secondary reverse + path."; case otn { uses l1-types:otn-label-hop; } @@ -925,7 +926,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the ingress segment - of the secondary reverse path."; + of the secondary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -938,7 +939,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the ingress segment - of the secondary reverse path."; + of the secondary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -950,7 +951,7 @@ module ietf-otn-tunnel { + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range step for the ingress segment - of the secondary reverse path."; + of the secondary reverse path."; case otn { uses l1-types:otn-label-step; } @@ -963,7 +964,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range start for the egress segment - of the secondary reverse path."; + of the secondary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -976,7 +977,7 @@ module ietf-otn-tunnel { + "te:te-label/te:technology" { description "Augment TE label range end for the egress segment - of the secondary reverse path."; + of the secondary reverse path."; case otn { uses l1-types:otn-label-start-end; } @@ -988,7 +989,7 @@ module ietf-otn-tunnel { + "te:label-restriction/te:label-step/te:technology" { description "Augment TE label range step for the egress segment - of the secondary reverse path."; + of the secondary reverse path."; case otn { uses l1-types:otn-label-step; } @@ -1003,7 +1004,7 @@ module ietf-otn-tunnel { + "te:label-hop/te:te-label/te:technology" { description "Augment TE label hop for the route object of the computed - secondary reverse path."; + secondary reverse path."; case otn { uses l1-types:otn-label-hop; } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang b/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang index aa646f5df..7e0feeafe 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-power-and-energy@2026-01-22.yang @@ -10,7 +10,7 @@ module ietf-power-and-energy { "RFC 8348: A YANG Data Model for Hardware Management"; } - import ietf-iana-power-and-energy { + import iana-ietf-power-and-energy { prefix ianaeo; reference "IANA-defined identities for power and energy class"; @@ -361,13 +361,6 @@ module ietf-power-and-energy { and the operational state indicates that the Energy Object is transitioning between power states."; } - identity power-state-enter-reason { - description - "Base identity for reasons why an Energy Object entered its - current operational power state. This is analogous to the - enumeration values defined for eoPowerStateEnterReason - in RFC 7460."; - } identity power-state-on { base power-state; description "full power on."; @@ -815,16 +808,6 @@ module ietf-power-and-energy { two leaves together form the complete power state management interface."; } - - leaf state-enter-reason { - type identityref { - base power-state-enter-reason; - } - description - "The reason why the Energy Object entered its current - operational power state. This is set whenever the - power-state-oper changes."; - } } } } From 822e989ff13736fbef5bc8ab3b5bdbcced815b01 Mon Sep 17 00:00:00 2001 From: Joe Clarke Date: Fri, 29 May 2026 18:05:43 +0000 Subject: [PATCH 4/4] Cronjob - daily check of IETF modules. --- .../mvps-telemetry@2026-05-28.yang | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 experimental/ietf-extracted-YANG-modules/mvps-telemetry@2026-05-28.yang diff --git a/experimental/ietf-extracted-YANG-modules/mvps-telemetry@2026-05-28.yang b/experimental/ietf-extracted-YANG-modules/mvps-telemetry@2026-05-28.yang new file mode 100644 index 000000000..427ad9e75 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/mvps-telemetry@2026-05-28.yang @@ -0,0 +1,60 @@ +module mvps-telemetry { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:mvps-telemetry"; + prefix mvpst; + + import ietf-yang-types { prefix yang; } + + organization "Catellix Research"; + contact "Leonardo Melegassi "; + description + "Export notification for MVPS coherence events. Read-only + telemetry; carries no configuration or actuation."; + revision 2026-05-28 { + description "Initial -00 revision."; + reference "draft-melegassi-opsawg-mvps-telemetry-export-00"; + } + + typedef hex64 { + type string { + pattern '[0-9a-f]{64}'; + } + description "Lowercase hex SHA-256 digest (64 chars)."; + } + + notification mvps-coherence-event { + description "One MVPS operational event."; + leaf event-id { type hex64; mandatory true; } + leaf event-type { + type enumeration { + enum alarm; enum byzantine; enum phase; + enum vantage; enum anchor; + } + mandatory true; + } + leaf severity { + type enumeration { + enum emergency; enum alert; enum critical; enum error; + enum warning; enum notice; enum info; enum debug; + } + mandatory true; + } + leaf event-time { type yang:date-and-time; mandatory true; } + leaf bundle-seq { type uint64; mandatory true; } + leaf d2 { type decimal64 { fraction-digits 3; } } + leaf phi-d { type decimal64 { fraction-digits 3; } } + leaf vantage-count { type uint16; } + leaf byzantine-frac { type decimal64 { fraction-digits 3; } } + leaf phase { + type enumeration { + enum NOMINAL; enum DEGRADED; enum ALARM; enum BYZANTINE; + enum MPLS_CAMOUFLAGE_SUSPECTED; + } + } + leaf path-fingerprint { type hex64; } + leaf log-seq { type uint64; } + leaf log-record-hash { type hex64; } + leaf anchor-head { type string; } + leaf audit { type boolean; default false; } + } +}