import ietf-inet-types {
prefix inet;
}
- import ietf-yang-types {
- prefix yang;
- }
import ietf-routing-types {
prefix rt-types;
}
- import frr-interface {
- prefix frr-interface;
- }
organization
"Free Range Routing";
revision 2018-11-06 {
description
"Initial revision.";
+ reference "FRRouting";
}
typedef protocol-origin-type {
- description
- "Indication for the protocol origin of an object.";
type enumeration {
enum pcep {
value 1;
description "The object was created through CLI, Yang model via Netconf, gRPC, etc";
}
}
+ description
+ "Indication for the protocol origin of an object.";
}
typedef originator-type {
}
container pathd {
+ description
+ "Path properties for Segment Routing TE";
+
container srte {
+ description
+ "Segment Routing TE properties";
+
list segment-list {
key "name";
description "Segment-list properties";
}
container nai {
presence "The segment has a Node or Adjacency Identifier";
+ description
+ "Node or Adjacency Identifier for the segment";
+
leaf type {
- description "NAI type";
- mandatory true;
type enumeration {
enum ipv4_node {
value 1;
description "IPv6 prefix with optional algorithm";
}
}
+ mandatory true;
+ description "NAI type";
}
leaf local-address {
type inet:ip-address;
mandatory true;
+ description
+ "Local address of the NAI";
}
leaf local-prefix-len {
+ when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
type uint8;
mandatory true;
- when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
+ description
+ "Prefix length of the local address";
}
leaf local-interface {
+ when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_unnumbered_adjacency'";
type uint32;
mandatory true;
- when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_unnumbered_adjacency'";
+ description
+ "Local interface ID for the NAI";
}
leaf remote-address {
+ when "../type = 'ipv4_adjacency' or ../type = 'ipv6_adjacency' or ../type = 'ipv4_unnumbered_adjacency'";
type inet:ip-address;
- mandatory true;
- when "../type = 'ipv4_adjacency' or ../type = 'ipv6_adjacency' or ../type = 'ipv4_unnumbered_adjacency'";
- }
- leaf remote-interface {
- type uint32;
- mandatory true;
- when "../type = 'ipv4_unnumbered_adjacency'";
- }
+ mandatory true;
+ description
+ "Remote address of the NAI";
+ }
+ leaf remote-interface {
+ when "../type = 'ipv4_unnumbered_adjacency'";
+ type uint32;
+ mandatory true;
+ description
+ "Remote interface ID for the NAI";
+ }
leaf algorithm {
+ when "../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
type uint8;
mandatory true;
- when "../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
- }
+ description
+ "Algorithm to use for the NAI";
}
+ }
}
}
list policy {
key "color endpoint";
unique "name";
+ description
+ "List of SR Policies.";
+
leaf color {
type uint32;
description
"True if a valid candidate path of this policy is operational in zebra, False otherwise";
}
list candidate-path {
+ key "preference";
unique "name";
description
"List of Candidate Paths of the SR Policy.";
- key "preference";
leaf preference {
type uint32;
description
description "Candidate path distinguisher";
}
leaf type {
- description
- "Type of the Candidate Path.";
- mandatory true;
type enumeration {
enum explicit {
value 1;
+ description
+ "Explicit path defined by a segment list";
}
enum dynamic {
value 2;
+ description
+ "Dynamic path computed by a routing protocol";
}
}
+ mandatory true;
+ description
+ "Type of the Candidate Path.";
}
leaf segment-list-name {
type leafref {
"If the bandwidth limitation is a requirement or only a suggestion";
}
leaf value {
- mandatory true;
type decimal64 {
fraction-digits 6;
}
+ mandatory true;
+ description
+ "The bandwidth value for the candidate path.";
}
}
container affinity {
}
list metrics {
key "type";
+ description
+ "This list contains the different metrics that can be used to describe a path.";
+
leaf type {
- description
- "Type of the metric.";
type enumeration {
enum igp {
value 1;
description "Border Node Count metric";
}
}
+ description
+ "Type of the metric.";
}
leaf required {
type boolean;
"Defines if the value has been generated by the originator of the path.";
}
leaf value {
- mandatory true;
type decimal64 {
fraction-digits 6;
}
+ mandatory true;
+ description
+ "Value of the metric.";
}
}
container objective-function {
"If an objective function is a requirement, or if it is only a suggestion";
}
leaf type {
- description
- "Type of objective function.";
- mandatory true;
type enumeration {
enum mcp {
value 1;
description "Minimize the number of Shared Nodes";
}
}
+ mandatory true;
+ description
+ "Type of objective function.";
}
}
}