module: ietf-isis-reverse-metric augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/isis:isis: +--rw reverse-metric +--rw enable-receive? boolean augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/isis:isis/isis:interfaces /isis:interface: +--rw reverse-metric +--rw metric? isis:wide-metric +--rw flags | +--rw whole-lan? boolean | +--rw allow-unreachable? boolean +--rw exclude-te-metric? boolean +--rw level-1 | +--rw metric? isis:wide-metric | +--rw flags | | +--rw whole-lan? boolean | | +--rw allow-unreachable? boolean | +--rw exclude-te-metric? boolean +--rw level-2 +--rw metric? isis:wide-metric +--rw flags | +--rw whole-lan? boolean | +--rw allow-unreachable? boolean +--rw exclude-te-metric? boolean augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/isis:isis/isis:interfaces /isis:interface/isis:adjacencies/isis:adjacency: +--ro reverse-metric +--ro metric? isis:wide-metric +--ro flags | +--ro whole-lan? boolean | +--ro allow-unreachable? boolean +--ro te-metric? uint32
module ietf-isis-reverse-metric { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-isis-reverse-metric"; prefix isis-rmetric; import ietf-routing { prefix rt; reference "RFC 8349: A YANG Data Model for Routing Management (NMDA Version)"; } import ietf-isis { prefix isis; reference "RFC 9130: YANG Data Model for the IS-IS Protocol"; } organization "IETF LSR Working Group (LSR)"; contact "WG Web: <https://datatracker.ietf.org/wg/lsr/> WG List: <mailto:lsr@ietf.org> Author: Christian Hopps <mailto:chopps@chopps.org>"; description "This module defines the configuration and operational state for managing the IS-IS reverse metric functionality (RFC 8500). 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). This version of this YANG module is part of RFC 9194; see the RFC itself for full legal notices."; reference "RFC 8500: IS-IS Routing with Reverse Metric"; revision 2022-10-19 { description "Initial revision."; reference "RFC 9194: A YANG Module for IS-IS Reverse Metric"; } grouping reverse-metric-data { description "IS-IS reverse metric data."; leaf metric { type isis:wide-metric; description "The reverse metric value."; reference "RFC 8500: IS-IS Routing with Reverse Metric, Section 2"; } container flags { description "The reverse metric flag values."; leaf whole-lan { type boolean; description "The 'Whole LAN' bit (W bit) (RFC 8500). If true, then a Designated Intermediate System (DIS) processing this reverse metric will add the metric value to all the nodes it advertises in the pseudonode Link State Protocol Data Unit (LSP) for this interface. Otherwise, it will only increment the metric for the advertising node in the pseudonode LSP for this interface."; reference "RFC 8500: IS-IS Routing with Reverse Metric, Section 2"; } leaf allow-unreachable { type boolean; description "The 'Unreachable' bit (U bit) (RFC 8500). If true, it allows the neighbor to increment the overall metric up to 2^24-1 rather than the lesser maximum of 2^24-2. If the metric is then set by the neighbor to 2^24-1, it will cause traffic to stop using, rather than avoid using, the interface."; reference "RFC 8500: IS-IS Routing with Reverse Metric, Section 2"; } } } grouping reverse-metric-if-config-data { description "IS-IS reverse metric config data."; uses reverse-metric-data; leaf exclude-te-metric { type boolean; default "false"; description "If true and there is a TE metric defined for this interface, then do not send the Traffic Engineering Metric sub-TLV in the Reverse Metric TLV."; reference "RFC 8500: IS-IS Routing with Reverse Metric, Section 2"; } } grouping tlv16-reverse-metric { description "IS-IS Reverse Metric TLV data."; uses reverse-metric-data; leaf te-metric { type uint32; description "The TE metric value from the sub-TLV, if present."; reference "RFC 8500: IS-IS Routing with Reverse Metric, Section 2"; } } augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/" + "isis:isis" { when "derived-from-or-self(../rt:type, 'isis:isis')" { description "This augment is only valid when the routing protocol instance type is 'isis'."; } description "The reverse metric configuration for an IS-IS instance."; container reverse-metric { description "Global reverse metric configuration."; leaf enable-receive { type boolean; default "false"; description "Enables handling of reverse metric announcements from neighbors. By default, reverse metric handling is disabled and must be explicitly enabled through this configuration."; } } } augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/" + "isis:isis/isis:interfaces/isis:interface" { when "derived-from-or-self(../../../rt:type, 'isis:isis')" { description "This augment is only valid when the routing protocol instance type is 'isis'."; } description "The reverse metric configuration for an interface."; container reverse-metric { description "Announces a reverse metric to neighbors. The configuration is hierarchical and follows the same behavior as that defined for per-level values in the augmented base module. Reverse metric operation is enabled by the configuration of a 'reverse-metric' metric value either at the top level or under a level-specific container node. If a 'reverse-metric' metric value is only specified under a level-specific container node, then operation is only enabled at the specified level. As the reverse metric is advertised in IS-IS Hello Protocol Data Units (IIH PDUs), level-specific configuration is only available for broadcast interface types."; uses reverse-metric-if-config-data { refine "flags/whole-lan" { default "false"; } refine "flags/allow-unreachable" { default "false"; } } container level-1 { when '../../isis:interface-type = "broadcast"'; description "Announces a reverse metric to level-1 neighbors."; uses reverse-metric-if-config-data; } container level-2 { when '../../isis:interface-type = "broadcast"'; description "Announces a reverse metric to level-2 neighbors."; uses reverse-metric-if-config-data; } } } augment "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/" + "isis:isis/isis:interfaces/isis:interface/" + "isis:adjacencies/isis:adjacency" { when "derived-from-or-self(../../../../../rt:type, 'isis:isis')" { description "This augment is only valid when the routing protocol instance type is 'isis'."; } description "The reverse metric state advertised by an adjacency."; container reverse-metric { description "IS-IS Reverse Metric TLV data."; uses tlv16-reverse-metric; } } }
Under "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/isis:isis" - /isis-rmetric:reverse-metric/isis-rmetric:enable-receive
Under "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/isis:isis/" + "isis:interfaces/isis:interface/" + "isis-rmetric:reverse-metric" - /isis-rmetric:metric - /isis-rmetric:flags/isis-rmetric:whole-lan - /isis-rmetric:flags/isis-rmetric:allow-unreachable - /isis-rmetric:exclude-te-metric
Under "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/isis:isis/" + "isis:interfaces/isis:interface/" + "isis-rmetric:reverse-metric/" + "isis-rmetric:level-1/" - /isis-rmetric:metric - /isis-rmetric:flags/isis-rmetric:whole-lan - /isis-rmetric:flags/isis-rmetric:allow-unreachable - /isis-rmetric:exclude-te-metric
Under "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/isis:isis/" + "isis:interfaces/isis:interface/" + "isis-rmetric:reverse-metric/" + "isis-rmetric:level-2/" - /isis-rmetric:metric - /isis-rmetric:flags/isis-rmetric:whole-lan - /isis-rmetric:flags/isis-rmetric:allow-unreachable - /isis-rmetric:exclude-te-metric
Under "/rt:routing/rt:control-plane-protocols/" + "rt:control-plane-protocol/isis:isis/" + "isis:interfaces/isis:interface/" + "isis:adjacencies/isis:adjacency/" + "isis-rmetric:reverse-metric" - /isis-rmetric:metric - /isis-rmetric:flags/isis-rmetric:whole-lan - /isis-rmetric:flags/isis-rmetric:allow-unreachable - /isis-rmetric:te-metric
<rt:routing xmlns:rt="urn:ietf:params:xml:ns:yang:ietf-routing" xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis" xmlns:isis-rmetric= "urn:ietf:params:xml:ns:yang:ietf-isis-reverse-metric"> <rt:control-plane-protocols> <rt:control-plane-protocol> <rt:type>isis:isis</rt:type> <rt:name>default</rt:name> <isis:isis> <isis:area-address>00</isis:area-address> <isis-rmetric:reverse-metric> <isis-rmetric:enable-receive>true</isis-rmetric:enable-receive> </isis-rmetric:reverse-metric> </isis:isis> </rt:control-plane-protocol> </rt:control-plane-protocols> </rt:routing>
<if:interfaces xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces" xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"> <if:interface> <if:name>eth0</if:name> <if:type>ianaift:ethernetCsmacd</if:type> </if:interface> </if:interfaces> <rt:routing xmlns:rt="urn:ietf:params:xml:ns:yang:ietf-routing" xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis" xmlns:isis-rmetric= "urn:ietf:params:xml:ns:yang:ietf-isis-reverse-metric"> <rt:control-plane-protocols> <rt:control-plane-protocol> <rt:type>isis:isis</rt:type> <rt:name>default</rt:name> <isis:isis> <isis:area-address>00</isis:area-address> <isis:interfaces> <isis:interface> <isis:name>eth0</isis:name> <isis-rmetric:reverse-metric> <isis-rmetric:metric> 65535 </isis-rmetric:metric> </isis-rmetric:reverse-metric> </isis:interface> </isis:interfaces> </isis:isis> </rt:control-plane-protocol> </rt:control-plane-protocols> </rt:routing>
{ "ietf-interfaces:interfaces": { "interface": [ { "name": "eth0", "type": "iana-if-type:ethernetCsmacd" } ] }, "ietf-routing:routing": { "control-plane-protocols": { "control-plane-protocol": [ { "type": "ietf-isis:isis", "name": "default", "ietf-isis:isis": { "area-address": [ "00" ], "interfaces": { "interface": [ { "name": "eth0", "ietf-isis-reverse-metric:reverse-metric": { "level-1": { "metric": 65535, "exclude-te-metric": true } } } ] } } } ] } } }