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"; }
import ietf-isis { prefix "isis"; }
organization
"IETF LSR Working Group (LSR)";
contact
"WG Web:
WG List:
Author: Christian Hopps
";
// RFC Ed.: replace XXXX with actual RFC number and
// remove this note.
description
"This module defines the configuration and operational state for
managing the IS-IS reverse metric functionality [RFC8500].
Copyright (c) 2019 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).
This version of this YANG module is part of RFC XXXX
(https://tools.ietf.org/html/rfcXXXX); see the RFC itself for
full legal notices.";
revision 2020-01-22 {
description "Initial Revision";
reference "RFC XXXX: YANG 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.";
}
container flags {
description "The reverse metric flag values.";
leaf whole-lan {
type boolean;
description
"The 'whole LAN' or W-bit. If true then a DIS processing this
reverse metric will add the metric value to all the nodes it
advertises in the pseudo-node LSP for this interface.
Otherwise it will only increment the metric for the
advertising node in the pseudo-node LSP for this interface.";
}
leaf allow-unreachable {
type boolean;
description
"The 'allow-unreachable' or U-bit. 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, and if done will cause
traffic to stop using rather than avoid using the interface.";
}
}
}
grouping reverse-metric-if-config-data {
description "IS-IS reverse metric config data.";
container reverse-metric {
description "IS-IS reverse metric 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 TE metric sub-TLV in the
reverse metric TLV.";
}
}
}
grouping tlv16-reverse-metric {
description "IS-IS reverse metric TLV data.";
container 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.";
}
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+"rt:control-plane-protocol/"
+"isis:isis" {
when "../rt:type = 'isis:isis'" {
description
"This augment is only valid when 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
"Enable 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 "../../../rt:type = 'isis:isis'" {
description
"This augment is only valid when routing protocol instance
type is 'isis'.";
}
description
"The reverse metric configuration for an interface.";
container reverse-metric {
description "Announce a reverse metric to neighbors.";
uses reverse-metric-if-config-data;
container level-1 {
description "Announce a reverse metric to level-1 neighbors.";
uses reverse-metric-if-config-data;
}
container level-2 {
description "Announce 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 "../../../../../rt:type = 'isis:isis'" {
description
"This augment is only valid when routing protocol instance
type is 'isis'";
}
description
"The reverse metric state advertised by an adjacency.";
uses tlv16-reverse-metric;
}
}