3 namespace "http://frrouting.org/yang/pathd";
6 import ietf-inet-types {
9 import ietf-yang-types {
12 import ietf-routing-types {
15 import frr-interface {
22 "FRR Users List: <mailto:frog@lists.frrouting.org>
23 FRR Development List: <mailto:dev@lists.frrouting.org>";
25 "This module defines a model for managing FRR pathd daemon.";
32 typedef protocol-origin-type {
34 "Indication for the protocol origin of an object.";
38 description "The object was created through PCEP";
42 description "The object was created through GBP";
46 description "The object was created through CLI, Yang model via Netconf, gRPC, etc";
51 typedef originator-type {
56 "Identifier of the originator of an object, could be 'config', '1.1.1.1:4189' or '2001:db8:85a3::8a2e:370:7334:4189'";
63 description "Segment-list properties";
68 description "Segment-list name";
70 leaf protocol-origin {
71 type protocol-origin-type;
74 "Indication for the protocol origin of the segment list.";
79 description "Originator of the segment list";
83 description "Configure Segment/hop at the index";
86 description "Segment index";
89 type rt-types:mpls-label;
90 description "MPLS label value";
93 presence "The segment has a Node or Adjacency Identifier";
95 description "NAI type";
100 description "IPv4 node identifier";
104 description "IPv6 node identifier";
106 enum ipv4_adjacency {
108 description "IPv4 adjacency";
110 enum ipv6_adjacency {
112 description "IPv6 adjacency";
114 enum ipv4_unnumbered_adjacency {
116 description "IPv4 unnumbered adjacency";
118 enum ipv4_local_iface {
120 description "IPv4 prefix with local interface id";
122 enum ipv6_local_iface {
124 description "IPv6 prefix with local interface id";
128 description "IPv4 prefix with optional algorithm";
132 description "IPv6 prefix with optional algorithm";
137 type inet:ip-address;
140 leaf local-prefix-len {
143 when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
145 leaf local-interface {
148 when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_unnumbered_adjacency'";
150 leaf remote-address {
151 type inet:ip-address;
153 when "../type = 'ipv4_adjacency' or ../type = 'ipv6_adjacency' or ../type = 'ipv4_unnumbered_adjacency'";
155 leaf remote-interface {
158 when "../type = 'ipv4_unnumbered_adjacency'";
163 when "../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
169 key "color endpoint";
174 "Color of the SR Policy.";
177 type inet:ip-address;
179 "Indication for the endpoint of the SR Policy.";
186 "Name of the SR Policy.";
189 type rt-types:mpls-label;
191 "BSID of the SR Policy.";
193 leaf is-operational {
197 "True if a valid candidate path of this policy is operational in zebra, False otherwise";
199 list candidate-path {
202 "List of Candidate Paths of the SR Policy.";
207 "Administrative preference.";
215 "Symbolic Name of the Candidate Path.";
217 leaf is-best-candidate-path {
221 "True if the candidate path is the best candidate path, False otherwise";
223 leaf protocol-origin {
224 type protocol-origin-type;
227 "Indication for the protocol origin of the Candidate Path.";
230 type originator-type;
232 description "Originator of the candidate path";
237 description "Candidate path distinguisher";
241 "Type of the Candidate Path.";
252 leaf segment-list-name {
254 path ../../../segment-list/name;
257 "The name of the Segment List to use as LSP.";
259 container constraints {
260 when "../type = 'dynamic'";
262 "Generic dynamic path constraints";
263 container bandwidth {
264 presence "If the candidate has a bandwidth constraint";
266 "The bandwidth needed by the candidate path.";
271 "If the bandwidth limitation is a requirement or only a suggestion";
282 "Affinity let you configure how the links should be used when calculating a path.";
286 "A 32-bit vector representing a set of attribute filters which renders a link unacceptable.";
291 "A 32-bit vector representing a set of attribute filters which renders a link acceptable. A null set (all bits set to zero) automatically passes.";
296 "A 32-bit vector representing a set of attribute filters which must be present for a link to be acceptable. A null set (all bits set to zero) automatically passes.";
303 "Type of the metric.";
307 description "IGP metric";
311 description "TE metric";
315 description "Hop Counts";
319 description "Aggregate bandwidth consumption";
323 description "Load of the most loaded link";
327 description "Cumulative IGP cost";
331 description "Cumulative TE cost";
335 description "P2MP IGP metric";
339 description "P2MP TE metric";
343 description "P2MP hop count metric";
347 description "Segment-ID (SID) Depth";
351 description "Path Delay metric";
355 description "Path Delay Variation metric";
359 description "Path Loss metric";
363 description "P2MP Path Delay metric";
367 description "P2MP Path Delay variation metric";
371 description "P2MP Path Loss metric";
375 description "Number of adaptations on a path";
379 description "Number of layers on a path";
383 description "Domain Count metric";
387 description "Border Node Count metric";
395 "If the metric is a requirement, or if it is only a suggestion";
400 "Defines if the value is a bound (a maximum) for the path metric that must not be exceeded.";
405 "Defines if the value has been generated by the originator of the path.";
414 container objective-function {
415 presence "If the candidate has an objective function constraint";
417 "Define objective function constraint as a list of prefered functions";
422 "If an objective function is a requirement, or if it is only a suggestion";
426 "Type of objective function.";
431 description "Minimum Cost Path";
435 description "Minimum Load Path";
439 description "Maximum residual Bandwidth Path";
443 description "Minimize aggregate Bandwidth Consumption";
447 description "Minimize the Load of the most loaded Link";
451 description "Minimize the Cumulative Cost of a set of paths";
455 description "Shortest Path Tree";
459 description "Minimum Cost Tree";
463 description "Minimum Packet Loss Path";
467 description "Maximum Under-Utilized Path";
471 description "Maximum Reserved Under-Utilized Path";
475 description "Minimize the number of Transit Domains";
479 description "Minimize the number of Border Nodes";
483 description "Minimize the number of Common Transit Domains";
487 description "Minimize the number of Shared Links";
491 description "Minimize the number of Shared SRLGs";
495 description "Minimize the number of Shared Nodes";