summaryrefslogtreecommitdiffstats
path: root/yang
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2020-11-06 03:55:35 +0100
committerRenato Westphal <renato@opensourcerouting.org>2020-11-25 00:15:52 +0100
commitd20b14bcd71ad911b40a33ab0c637f20fb82f1e5 (patch)
tree2777749374a87c97af4236e2ce3d95f124aef76f /yang
parentisisd: rename the "debug isis ti-lfa" command to make it more generic (diff)
downloadfrr-d20b14bcd71ad911b40a33ab0c637f20fb82f1e5.tar.xz
frr-d20b14bcd71ad911b40a33ab0c637f20fb82f1e5.zip
yang, isisd: add LFA nodes, NB skeleton callbacks and CLI commands
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'yang')
-rw-r--r--yang/frr-isisd.yang153
1 files changed, 153 insertions, 0 deletions
diff --git a/yang/frr-isisd.yang b/yang/frr-isisd.yang
index c3b39e375..d751a19f0 100644
--- a/yang/frr-isisd.yang
+++ b/yang/frr-isisd.yang
@@ -244,6 +244,10 @@ module frr-isisd {
}
}
+ typedef access-list-ref {
+ type string;
+ }
+
grouping redistribute-attributes {
description
"Common optional attributes of any redistribute entry.";
@@ -336,6 +340,94 @@ module frr-isisd {
}
}
+ grouping global-config-lfa {
+ container lfa {
+ description
+ "LFA configuration.";
+
+ leaf load-sharing {
+ type boolean;
+ default "true";
+ description
+ "Load share prefixes across multiple backups.";
+ }
+ leaf priority-limit {
+ type enumeration {
+ enum "critical" {
+ value 0;
+ description
+ "Compute for critical priority prefixes only.";
+ }
+ enum "high" {
+ value 1;
+ description
+ "Compute for critical & high priority prefixes.";
+ }
+ enum "medium" {
+ value 2;
+ description
+ "Compute for critical, high & medium priority prefixes.";
+ }
+ }
+ description
+ "Limit backup computation up to the prefix priority.";
+ }
+ list tiebreaker {
+ key "index";
+ unique "type";
+ description
+ "Configure tiebreaker for multiple backups.";
+ leaf index {
+ type uint8 {
+ range "1..255";
+ }
+ description
+ "Preference order among tiebreakers.";
+ }
+ leaf type {
+ type enumeration {
+ enum "downstream" {
+ value 0;
+ description
+ "Prefer backup path via downstream node.";
+ }
+ enum "lowest-backup-metric" {
+ value 1;
+ description
+ "Prefer backup path with lowest total metric.";
+ }
+ enum "node-protecting" {
+ value 2;
+ description
+ "Prefer node protecting backup path.";
+ }
+ }
+ mandatory true;
+ description
+ "Tiebreaker type.";
+ }
+ }
+ }
+ }
+
+ grouping interface-config-lfa {
+ container lfa {
+ description
+ "LFA configuration.";
+ leaf enable {
+ type boolean;
+ default false;
+ description
+ "Enables LFA computation.";
+ }
+ leaf-list exclude-interface {
+ type frr-interface:interface-ref;
+ description
+ "Exclude an interface from computation.";
+ }
+ }
+ }
+
grouping interface-config-ti-lfa {
container ti-lfa {
description
@@ -664,11 +756,21 @@ module frr-isisd {
container level-1 {
description
"Level-1 IP Fast-reroute configuration.";
+ must "./lfa/enable = 'false' or ./ti-lfa/enable = 'false'" {
+ error-message
+ "Can't enable both classic LFA and TI-LFA in the same interface.";
+ }
+ uses interface-config-lfa;
uses interface-config-ti-lfa;
}
container level-2 {
description
"Level-2 IP Fast-reroute configuration.";
+ must "./lfa/enable = 'false' or ./ti-lfa/enable = 'false'" {
+ error-message
+ "Can't enable both classic LFA and TI-LFA in the same interface.";
+ }
+ uses interface-config-lfa;
uses interface-config-ti-lfa;
}
}
@@ -1095,6 +1197,42 @@ module frr-isisd {
"Minimum time between consecutive level-2 SPFs.";
}
}
+
+ container prefix-priorities {
+ description
+ "SPF Prefix Priority configuration";
+
+ container critical {
+ description
+ "Critical prefix priority";
+ leaf access-list-name {
+ type access-list-ref;
+ description
+ "Access List to determine prefixes for
+ this priority";
+ }
+ }
+ container high {
+ description
+ "High prefix priority";
+ leaf access-list-name {
+ type access-list-ref;
+ description
+ "Access List to determine prefixes for
+ this priority";
+ }
+ }
+ container medium {
+ description
+ "Medium prefix priority";
+ leaf access-list-name {
+ type access-list-ref;
+ description
+ "Access List to determine prefixes for
+ this priority";
+ }
+ }
+ }
}
container area-password {
@@ -1249,6 +1387,21 @@ module frr-isisd {
}
}
+ container fast-reroute {
+ description
+ "IP Fast-reroute configuration.";
+ container level-1 {
+ description
+ "Level-1 IP Fast-reroute configuration.";
+ uses global-config-lfa;
+ }
+ container level-2 {
+ description
+ "Level-2 IP Fast-reroute configuration.";
+ uses global-config-lfa;
+ }
+ }
+
leaf log-adjacency-changes {
type boolean;
default "false";