diff options
| author | Javier Garcia <javier.garcia@voltanet.io> | 2021-04-22 16:04:42 +0200 | 
|---|---|---|
| committer | Javier Garcia <javier.garcia@voltanet.io> | 2021-05-10 15:24:59 +0200 | 
| commit | f2b9485d6f5aa1508334a7e92d26d95faf0e1733 (patch) | |
| tree | 18d754185d84e48675820d0c4fb658b53e78d1e6 /yang | |
| parent | 75c69d151c8e72e42dfb4b1966428e9cf79cb7f4 (diff) | |
pathd. TED support . Validation of candidate path - [part 2/4]
    - Explicit segment list nai will be resolved to corresponded sid.
    - Dynamic segment list (from pce) will be validated.
    - If segment list could not be resolved or validated won't be used.
    - Now this new config is supported
segment-list sl-1
 index 10  nai prefix 10.1.2.1/32 iface 1
 index 30  nai adjacency 10.2.5.2 10.2.5.5
 index 40  nai prefix 10.10.10.5/32 algorithm 0
Signed-off-by: Javier Garcia <javier.garcia@voltanet.io>
Diffstat (limited to 'yang')
| -rw-r--r-- | yang/frr-pathd.yang | 109 | 
1 files changed, 67 insertions, 42 deletions
diff --git a/yang/frr-pathd.yang b/yang/frr-pathd.yang index 03f0d3b024..30f9875a6d 100644 --- a/yang/frr-pathd.yang +++ b/yang/frr-pathd.yang @@ -84,51 +84,71 @@ module frr-pathd {            leaf index {              type uint32;              description "Segment index"; -          } -          leaf sid-value { -            type rt-types:mpls-label; +	  } +        leaf sid-value { +          type rt-types:mpls-label; +          description "MPLS label value"; +        } +        container nai { +          presence "The segment has a Node or Adjacency Identifier"; +          leaf type { +            description "NAI type";              mandatory true; -            description "MPLS label value"; -          } -          container nai { -            presence "The segement has a Node or Adjacency Identifier"; -            leaf type { -              description "NAI type"; -              mandatory true; -              type enumeration { -                enum ipv4_node { -                  value 1; -                  description "IPv4 node identifier"; -                } -                enum ipv6_node { -                  value 2; -                  description "IPv6 node identifier"; -                } -                enum ipv4_adjacency { -                  value 3; -                  description "IPv4 adjacency"; -                } -                enum ipv6_adjacency { -                  value 4; -                  description "IPv6 adjacency"; -                } -                enum ipv4_unnumbered_adjacency { -                  value 5; -                  description "IPv4 unnumbered adjacency"; -                } +            type enumeration { +              enum ipv4_node { +                value 1; +                description "IPv4 node identifier"; +              } +              enum ipv6_node { +                value 2; +                description "IPv6 node identifier"; +              } +              enum ipv4_adjacency { +                value 3; +                description "IPv4 adjacency"; +              } +              enum ipv6_adjacency { +                value 4; +                description "IPv6 adjacency"; +              } +              enum ipv4_unnumbered_adjacency { +                value 5; +                description "IPv4 unnumbered adjacency"; +              } +              enum ipv4_local_iface { +                value 7; +                description "IPv4 prefix with local interface id"; +              } +              enum ipv6_local_iface { +                value 8; +                description "IPv6 prefix with local interface id"; +              } +              enum ipv4_algo { +                value 9; +                description "IPv4 prefix with optional algorithm"; +              } +              enum ipv6_algo { +                value 10; +                description "IPv6 prefix with optional algorithm";                }              } -            leaf local-address { -              type inet:ip-address; -              mandatory true; -            } -            leaf local-interface { -              type uint32; -              mandatory true; -              when "../type = 'ipv4_unnumbered_adjacency'"; -            } -            leaf remote-address { -              type inet:ip-address; +          } +          leaf local-address { +            type inet:ip-address; +            mandatory true; +          } +          leaf local-prefix-len { +            type uint8; +            mandatory true; +            when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_algo' or ../type = 'ipv6_algo'"; +          } +          leaf local-interface { +            type uint32; +            mandatory true; +            when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_unnumbered_adjacency'"; +          } +          leaf remote-address { +            type inet:ip-address;                mandatory true;                when "../type = 'ipv4_adjacency' or ../type = 'ipv6_adjacency' or ../type = 'ipv4_unnumbered_adjacency'";              } @@ -137,6 +157,11 @@ module frr-pathd {                mandatory true;                when "../type = 'ipv4_unnumbered_adjacency'";              } +          leaf algorithm { +            type uint8; +            mandatory true; +            when "../type = 'ipv4_algo' or ../type = 'ipv6_algo'"; +          }            }          }        }  | 
