Fix odl-mdsal-rfc8294-netty
[mdsal.git] / model / ietf / rfc8776-ietf-te-types / src / main / yang / ietf-te-types@2020-06-10.yang
1 module ietf-te-types {
2   yang-version 1.1;
3   namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
4   prefix te-types;
5
6   import ietf-inet-types {
7     prefix inet;
8     reference
9       "RFC 6991: Common YANG Data Types";
10   }
11   import ietf-yang-types {
12     prefix yang;
13     reference
14       "RFC 6991: Common YANG Data Types";
15   }
16   import ietf-routing-types {
17     prefix rt-types;
18     reference
19       "RFC 8294: Common YANG Data Types for the Routing Area";
20   }
21
22   organization
23     "IETF Traffic Engineering Architecture and Signaling (TEAS)
24      Working Group";
25   contact
26     "WG Web:   <https://datatracker.ietf.org/wg/teas/>
27      WG List:  <mailto:teas@ietf.org>
28
29      Editor:   Tarek Saad
30                <mailto:tsaad@juniper.net>
31
32      Editor:   Rakesh Gandhi
33                <mailto:rgandhi@cisco.com>
34
35      Editor:   Vishnu Pavan Beeram
36                <mailto:vbeeram@juniper.net>
37
38      Editor:   Xufeng Liu
39                <mailto:xufeng.liu.ietf@gmail.com>
40
41      Editor:   Igor Bryskin
42                <mailto:i_bryskin@yahoo.com>";
43   description
44     "This YANG module contains a collection of generally useful
45      YANG data type definitions specific to TE.  The model fully
46      conforms to the Network Management Datastore Architecture
47      (NMDA).
48
49      The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
50      NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
51      'MAY', and 'OPTIONAL' in this document are to be interpreted as
52      described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
53      they appear in all capitals, as shown here.
54
55      Copyright (c) 2020 IETF Trust and the persons identified as
56      authors of the code.  All rights reserved.
57
58      Redistribution and use in source and binary forms, with or
59      without modification, is permitted pursuant to, and subject to
60      the license terms contained in, the Simplified BSD License set
61      forth in Section 4.c of the IETF Trust's Legal Provisions
62      Relating to IETF Documents
63      (https://trustee.ietf.org/license-info).
64
65      This version of this YANG module is part of RFC 8776; see the
66      RFC itself for full legal notices.";
67
68   revision 2020-06-10 {
69     description
70       "Latest revision of TE types.";
71     reference
72       "RFC 8776: Common YANG Data Types for Traffic Engineering";
73   }
74
75   /**
76    * Typedefs
77    */
78
79   typedef admin-group {
80     type yang:hex-string {
81       /* 01:02:03:04 */
82       length "1..11";
83     }
84     description
85       "Administrative group / resource class / color representation
86        in 'hex-string' type.
87        The most significant byte in the hex-string is the farthest
88        to the left in the byte sequence.  Leading zero bytes in the
89        configured value may be omitted for brevity.";
90     reference
91       "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
92        Version 2
93        RFC 5305: IS-IS Extensions for Traffic Engineering
94        RFC 7308: Extended Administrative Groups in MPLS Traffic
95        Engineering (MPLS-TE)";
96   }
97
98   typedef admin-groups {
99     type union {
100       type admin-group;
101       type extended-admin-group;
102     }
103     description
104       "Derived types for TE administrative groups.";
105   }
106
107   typedef extended-admin-group {
108     type yang:hex-string;
109     description
110       "Extended administrative group / resource class / color
111        representation in 'hex-string' type.
112        The most significant byte in the hex-string is the farthest
113        to the left in the byte sequence.  Leading zero bytes in the
114        configured value may be omitted for brevity.";
115     reference
116       "RFC 7308: Extended Administrative Groups in MPLS Traffic
117        Engineering (MPLS-TE)";
118   }
119
120   typedef path-attribute-flags {
121     type union {
122       type identityref {
123         base session-attributes-flags;
124       }
125       type identityref {
126         base lsp-attributes-flags;
127       }
128     }
129     description
130       "Path attributes flags type.";
131   }
132
133   typedef performance-metrics-normality {
134     type enumeration {
135       enum unknown {
136         value 0;
137         description
138           "Unknown.";
139       }
140       enum normal {
141         value 1;
142         description
143           "Normal.  Indicates that the anomalous bit is not set.";
144       }
145       enum abnormal {
146         value 2;
147         description
148           "Abnormal.  Indicates that the anomalous bit is set.";
149       }
150     }
151     description
152       "Indicates whether a performance metric is normal (anomalous
153        bit not set), abnormal (anomalous bit set), or unknown.";
154     reference
155       "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
156        RFC 7823: Performance-Based Path Selection for Explicitly
157        Routed Label Switched Paths (LSPs) Using TE Metric
158        Extensions
159        RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
160   }
161
162   typedef srlg {
163     type uint32;
164     description
165       "SRLG type.";
166     reference
167       "RFC 4203: OSPF Extensions in Support of Generalized
168        Multi-Protocol Label Switching (GMPLS)
169        RFC 5307: IS-IS Extensions in Support of Generalized
170        Multi-Protocol Label Switching (GMPLS)";
171   }
172
173   typedef te-common-status {
174     type enumeration {
175       enum up {
176         description
177           "Enabled.";
178       }
179       enum down {
180         description
181           "Disabled.";
182       }
183       enum testing {
184         description
185           "In some test mode.";
186       }
187       enum preparing-maintenance {
188         description
189           "The resource is disabled in the control plane to prepare
190            for a graceful shutdown for maintenance purposes.";
191         reference
192           "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS
193            Traffic Engineering Networks";
194       }
195       enum maintenance {
196         description
197           "The resource is disabled in the data plane for maintenance
198            purposes.";
199       }
200       enum unknown {
201         description
202           "Status is unknown.";
203       }
204     }
205     description
206       "Defines a type representing the common states of a TE
207        resource.";
208   }
209
210   typedef te-bandwidth {
211     type string {
212       pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
213             + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
214             + '[pP](\+)?(12[0-7]|'
215             + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
216             + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
217             + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
218             + '[pP](\+)?(12[0-7]|'
219             + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
220     }
221     description
222       "This is the generic bandwidth type.  It is a string containing
223        a list of numbers separated by commas, where each of these
224        numbers can be non-negative decimal, hex integer, or
225        hex float:
226
227        (dec | hex | float)[*(','(dec | hex | float))]
228
229        For the packet-switching type, the string encoding follows
230        the type 'bandwidth-ieee-float32' as defined in RFC 8294
231        (e.g., 0x1p10), where the units are in bytes per second.
232
233        For the Optical Transport Network (OTN) switching type,
234        a list of integers can be used, such as '0,2,3,1', indicating
235        two ODU0s and one ODU3.  ('ODU' stands for 'Optical Data
236        Unit'.)  For Dense Wavelength Division Multiplexing (DWDM),
237        a list of pairs of slot numbers and widths can be used,
238        such as '0,2,3,3', indicating a frequency slot 0 with
239        slot width 2 and a frequency slot 3 with slot width 3.
240        Canonically, the string is represented as all lowercase and in
241        hex, where the prefix '0x' precedes the hex number.";
242     reference
243       "RFC 8294: Common YANG Data Types for the Routing Area
244        ITU-T Recommendation G.709: Interfaces for the
245        optical transport network";
246   }
247
248   typedef te-ds-class {
249     type uint8 {
250       range "0..7";
251     }
252     description
253       "The Differentiated Services Class-Type of traffic.";
254     reference
255       "RFC 4124: Protocol Extensions for Support of Diffserv-aware
256        MPLS Traffic Engineering, Section 4.3.1";
257   }
258
259   typedef te-global-id {
260     type uint32;
261     description
262       "An identifier to uniquely identify an operator, which can be
263        either a provider or a client.
264        The definition of this type is taken from RFCs 6370 and 5003.
265        This attribute type is used solely to provide a globally
266        unique context for TE topologies.";
267     reference
268       "RFC 5003: Attachment Individual Identifier (AII) Types for
269        Aggregation
270        RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers";
271   }
272
273   typedef te-hop-type {
274     type enumeration {
275       enum loose {
276         description
277           "A loose hop in an explicit path.";
278       }
279       enum strict {
280         description
281           "A strict hop in an explicit path.";
282       }
283     }
284     description
285       "Enumerated type for specifying loose or strict paths.";
286     reference
287       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
288        Section 4.3.3";
289   }
290
291   typedef te-link-access-type {
292     type enumeration {
293       enum point-to-point {
294         description
295           "The link is point-to-point.";
296       }
297       enum multi-access {
298         description
299           "The link is multi-access, including broadcast and NBMA.";
300       }
301     }
302     description
303       "Defines a type representing the access type of a TE link.";
304     reference
305       "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
306        Version 2";
307   }
308
309   typedef te-label-direction {
310     type enumeration {
311       enum forward {
312         description
313           "Label allocated for the forward LSP direction.";
314       }
315       enum reverse {
316         description
317           "Label allocated for the reverse LSP direction.";
318       }
319     }
320     description
321       "Enumerated type for specifying the forward or reverse
322        label.";
323   }
324
325   typedef te-link-direction {
326     type enumeration {
327       enum incoming {
328         description
329           "The explicit route represents an incoming link on
330            a node.";
331       }
332       enum outgoing {
333         description
334           "The explicit route represents an outgoing link on
335            a node.";
336       }
337     }
338     description
339       "Enumerated type for specifying the direction of a link on
340        a node.";
341   }
342
343   typedef te-metric {
344     type uint32;
345     description
346       "TE metric.";
347     reference
348       "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
349        second MPLS Traffic Engineering (TE) Metric";
350   }
351
352   typedef te-node-id {
353     type yang:dotted-quad;
354     description
355       "A type representing the identifier for a node in a TE
356        topology.
357        The identifier is represented as 4 octets in dotted-quad
358        notation.
359        This attribute MAY be mapped to the Router Address TLV
360        described in Section 2.4.1 of RFC 3630, the TE Router ID
361        described in Section 3 of RFC 6827, the Traffic Engineering
362        Router ID TLV described in Section 4.3 of RFC 5305, or the
363        TE Router ID TLV described in Section 3.2.1 of RFC 6119.
364        The reachability of such a TE node MAY be achieved by a
365        mechanism such as that described in Section 6.2 of RFC 6827.";
366     reference
367       "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
368        Version 2, Section 2.4.1
369        RFC 5305: IS-IS Extensions for Traffic Engineering,
370        Section 4.3
371        RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1
372        RFC 6827: Automatically Switched Optical Network (ASON)
373        Routing for OSPFv2 Protocols, Section 3";
374   }
375
376   typedef te-oper-status {
377     type te-common-status;
378     description
379       "Defines a type representing the operational status of
380        a TE resource.";
381   }
382
383   typedef te-admin-status {
384     type te-common-status;
385     description
386       "Defines a type representing the administrative status of
387        a TE resource.";
388   }
389
390   typedef te-path-disjointness {
391     type bits {
392       bit node {
393         position 0;
394         description
395           "Node disjoint.";
396       }
397       bit link {
398         position 1;
399         description
400           "Link disjoint.";
401       }
402       bit srlg {
403         position 2;
404         description
405           "SRLG (Shared Risk Link Group) disjoint.";
406       }
407     }
408     description
409       "Type of the resource disjointness for a TE tunnel path.";
410     reference
411       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
412        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
413   }
414
415   typedef te-recovery-status {
416     type enumeration {
417       enum normal {
418         description
419           "Both the recovery span and the working span are fully
420            allocated and active, data traffic is being
421            transported over (or selected from) the working
422            span, and no trigger events are reported.";
423       }
424       enum recovery-started {
425         description
426           "The recovery action has been started but not completed.";
427       }
428       enum recovery-succeeded {
429         description
430           "The recovery action has succeeded.  The working span has
431            reported a failure/degrade condition, and the user traffic
432            is being transported (or selected) on the recovery span.";
433       }
434       enum recovery-failed {
435         description
436           "The recovery action has failed.";
437       }
438       enum reversion-started {
439         description
440           "The reversion has started.";
441       }
442       enum reversion-succeeded {
443         description
444           "The reversion action has succeeded.";
445       }
446       enum reversion-failed {
447         description
448           "The reversion has failed.";
449       }
450       enum recovery-unavailable {
451         description
452           "The recovery is unavailable, as a result of either an
453            operator's lockout command or a failure condition
454            detected on the recovery span.";
455       }
456       enum recovery-admin {
457         description
458           "The operator has issued a command to switch the user
459            traffic to the recovery span.";
460       }
461       enum wait-to-restore {
462         description
463           "The recovery domain is recovering from a failure/degrade
464            condition on the working span that is being controlled by
465            the Wait-to-Restore (WTR) timer.";
466       }
467     }
468     description
469       "Defines the status of a recovery action.";
470     reference
471       "RFC 4427: Recovery (Protection and Restoration) Terminology
472        for Generalized Multi-Protocol Label Switching (GMPLS)
473        RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
474   }
475
476   typedef te-template-name {
477     type string {
478       pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
479     }
480     description
481       "A type for the name of a TE node template or TE link
482        template.";
483   }
484
485   typedef te-topology-event-type {
486     type enumeration {
487       enum add {
488         value 0;
489         description
490           "A TE node or TE link has been added.";
491       }
492       enum remove {
493         value 1;
494         description
495           "A TE node or TE link has been removed.";
496       }
497       enum update {
498         value 2;
499         description
500           "A TE node or TE link has been updated.";
501       }
502     }
503     description
504       "TE event type for notifications.";
505   }
506
507   typedef te-topology-id {
508     type union {
509       type string {
510         length "0";
511         // empty string
512       }
513       type string {
514         pattern '([a-zA-Z0-9\-_.]+:)*'
515               + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
516       }
517     }
518     description
519       "An identifier for a topology.
520        It is optional to have one or more prefixes at the beginning,
521        separated by colons.  The prefixes can be 'network-types' as
522        defined in the 'ietf-network' module in RFC 8345, to help the
523        user better understand the topology before further inquiry
524        is made.";
525     reference
526       "RFC 8345: A YANG Data Model for Network Topologies";
527   }
528
529   typedef te-tp-id {
530     type union {
531       type uint32;
532       // Unnumbered
533       type inet:ip-address;
534       // IPv4 or IPv6 address
535     }
536     description
537       "An identifier for a TE link endpoint on a node.
538        This attribute is mapped to a local or remote link identifier
539        as defined in RFCs 3630 and 5305.";
540     reference
541       "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
542        Version 2
543        RFC 5305: IS-IS Extensions for Traffic Engineering";
544   }
545
546   /* TE features */
547
548   feature p2mp-te {
549     description
550       "Indicates support for Point-to-Multipoint TE (P2MP-TE).";
551     reference
552       "RFC 4875: Extensions to Resource Reservation Protocol -
553        Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
554        Label Switched Paths (LSPs)";
555   }
556
557   feature frr-te {
558     description
559       "Indicates support for TE Fast Reroute (FRR).";
560     reference
561       "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
562   }
563
564   feature extended-admin-groups {
565     description
566       "Indicates support for TE link extended administrative
567        groups.";
568     reference
569       "RFC 7308: Extended Administrative Groups in MPLS Traffic
570        Engineering (MPLS-TE)";
571   }
572
573   feature named-path-affinities {
574     description
575       "Indicates support for named path affinities.";
576   }
577
578   feature named-extended-admin-groups {
579     description
580       "Indicates support for named extended administrative groups.";
581   }
582
583   feature named-srlg-groups {
584     description
585       "Indicates support for named SRLG groups.";
586   }
587
588   feature named-path-constraints {
589     description
590       "Indicates support for named path constraints.";
591   }
592
593   feature path-optimization-metric {
594     description
595       "Indicates support for path optimization metrics.";
596   }
597
598   feature path-optimization-objective-function {
599     description
600       "Indicates support for path optimization objective functions.";
601   }
602
603   /*
604    * Identities
605    */
606
607   identity session-attributes-flags {
608     description
609       "Base identity for the RSVP-TE session attributes flags.";
610   }
611
612   identity local-protection-desired {
613     base session-attributes-flags;
614     description
615       "Local protection is desired.";
616     reference
617       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
618        Section 4.7.1";
619   }
620
621   identity se-style-desired {
622     base session-attributes-flags;
623     description
624       "Shared explicit style, to allow the LSP to be established
625        and share resources with the old LSP.";
626     reference
627       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
628   }
629
630   identity local-recording-desired {
631     base session-attributes-flags;
632     description
633       "Label recording is desired.";
634     reference
635       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
636        Section 4.7.1";
637   }
638
639   identity bandwidth-protection-desired {
640     base session-attributes-flags;
641     description
642       "Requests FRR bandwidth protection on LSRs, if present.";
643     reference
644       "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
645   }
646
647   identity node-protection-desired {
648     base session-attributes-flags;
649     description
650       "Requests FRR node protection on LSRs, if present.";
651     reference
652       "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
653   }
654
655   identity path-reevaluation-request {
656     base session-attributes-flags;
657     description
658       "This flag indicates that a path re-evaluation (of the
659        current path in use) is requested.  Note that this does
660        not trigger any LSP reroutes but instead just signals a
661        request to evaluate whether a preferable path exists.";
662     reference
663       "RFC 4736: Reoptimization of Multiprotocol Label Switching
664        (MPLS) Traffic Engineering (TE) Loosely Routed Label Switched
665        Path (LSP)";
666   }
667
668   identity soft-preemption-desired {
669     base session-attributes-flags;
670     description
671       "Soft preemption of LSP resources is desired.";
672     reference
673       "RFC 5712: MPLS Traffic Engineering Soft Preemption";
674   }
675
676   identity lsp-attributes-flags {
677     description
678       "Base identity for LSP attributes flags.";
679   }
680
681   identity end-to-end-rerouting-desired {
682     base lsp-attributes-flags;
683     description
684       "Indicates end-to-end rerouting behavior for an LSP
685        undergoing establishment.  This MAY also be used to
686        specify the behavior of end-to-end LSP recovery for
687        established LSPs.";
688     reference
689       "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
690        RSVP-TE
691        RFC 5420: Encoding of Attributes for MPLS LSP Establishment
692        Using Resource Reservation Protocol Traffic Engineering
693        (RSVP-TE)
694        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
695        Route Object (ERO)";
696   }
697
698   identity boundary-rerouting-desired {
699     base lsp-attributes-flags;
700     description
701       "Indicates boundary rerouting behavior for an LSP undergoing
702        establishment.  This MAY also be used to specify
703        segment-based LSP recovery through nested crankback for
704        established LSPs.  The boundary Area Border Router (ABR) /
705        Autonomous System Border Router (ASBR) can decide to forward
706        the PathErr message upstream to either an upstream boundary
707        ABR/ASBR or the ingress LSR.  Alternatively, it can try to
708        select another egress boundary LSR.";
709     reference
710       "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
711        RSVP-TE
712        RFC 5420: Encoding of Attributes for MPLS LSP Establishment
713        Using Resource Reservation Protocol Traffic Engineering
714        (RSVP-TE)
715        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
716        Route Object (ERO)";
717   }
718
719   identity segment-based-rerouting-desired {
720     base lsp-attributes-flags;
721     description
722       "Indicates segment-based rerouting behavior for an LSP
723        undergoing establishment.  This MAY also be used to specify
724        segment-based LSP recovery for established LSPs.";
725     reference
726       "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
727        RSVP-TE
728        RFC 5420: Encoding of Attributes for MPLS LSP Establishment
729        Using Resource Reservation Protocol Traffic Engineering
730        (RSVP-TE)
731        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
732        Route Object (ERO)";
733   }
734
735   identity lsp-integrity-required {
736     base lsp-attributes-flags;
737     description
738       "Indicates that LSP integrity is required.";
739     reference
740       "RFC 4875: Extensions to Resource Reservation Protocol -
741        Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
742        Label Switched Paths (LSPs)
743        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
744        Route Object (ERO)";
745   }
746
747   identity contiguous-lsp-desired {
748     base lsp-attributes-flags;
749     description
750       "Indicates that a contiguous LSP is desired.";
751     reference
752       "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering --
753        Resource Reservation Protocol-Traffic Engineering (RSVP-TE)
754        Extensions
755        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
756        Route Object (ERO)";
757   }
758
759   identity lsp-stitching-desired {
760     base lsp-attributes-flags;
761     description
762       "Indicates that LSP stitching is desired.";
763     reference
764       "RFC 5150: Label Switched Path Stitching with Generalized
765        Multiprotocol Label Switching Traffic Engineering (GMPLS TE)
766        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
767        Route Object (ERO)";
768   }
769
770   identity pre-planned-lsp-flag {
771     base lsp-attributes-flags;
772     description
773       "Indicates that the LSP MUST be provisioned in the
774        control plane only.";
775     reference
776       "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for
777        Multi-Layer and Multi-Region Networks (MLN/MRN)
778        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
779        Route Object (ERO)";
780   }
781
782   identity non-php-behavior-flag {
783     base lsp-attributes-flags;
784     description
785       "Indicates that non-PHP (non-Penultimate Hop Popping) behavior
786        for the LSP is desired.";
787     reference
788       "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
789        Mapping for RSVP-TE Label Switched Paths
790        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
791        Route Object (ERO)";
792   }
793
794   identity oob-mapping-flag {
795     base lsp-attributes-flags;
796     description
797       "Indicates that signaling of the egress binding information is
798        out of band (e.g., via the Border Gateway Protocol (BGP)).";
799     reference
800       "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
801        Mapping for RSVP-TE Label Switched Paths
802        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
803        Route Object (ERO)";
804   }
805
806   identity entropy-label-capability {
807     base lsp-attributes-flags;
808     description
809       "Indicates entropy label capability.";
810     reference
811       "RFC 6790: The Use of Entropy Labels in MPLS Forwarding
812        RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
813        Route Object (ERO)";
814   }
815
816   identity oam-mep-entity-desired {
817     base lsp-attributes-flags;
818     description
819       "OAM Maintenance Entity Group End Point (MEP) entities
820        desired.";
821     reference
822       "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
823        Administration, and Maintenance (OAM) Configuration";
824   }
825
826   identity oam-mip-entity-desired {
827     base lsp-attributes-flags;
828     description
829       "OAM Maintenance Entity Group Intermediate Points (MIP)
830        entities desired.";
831     reference
832       "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
833        Administration, and Maintenance (OAM) Configuration";
834   }
835
836   identity srlg-collection-desired {
837     base lsp-attributes-flags;
838     description
839       "SRLG collection desired.";
840     reference
841       "RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
842        Route Object (ERO)
843        RFC 8001: RSVP-TE Extensions for Collecting Shared Risk
844        Link Group (SRLG) Information";
845   }
846
847   identity loopback-desired {
848     base lsp-attributes-flags;
849     description
850       "This flag indicates that a particular node on the LSP is
851        required to enter loopback mode.  This can also be
852        used to specify the loopback state of the node.";
853     reference
854       "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and
855        Loopback";
856   }
857
858   identity p2mp-te-tree-eval-request {
859     base lsp-attributes-flags;
860     description
861       "P2MP-TE tree re-evaluation request.";
862     reference
863       "RFC 8149: RSVP Extensions for Reoptimization of Loosely Routed
864        Point-to-Multipoint Traffic Engineering Label Switched Paths
865        (LSPs)";
866   }
867
868   identity rtm-set-desired {
869     base lsp-attributes-flags;
870     description
871       "Residence Time Measurement (RTM) attribute flag requested.";
872     reference
873       "RFC 8169: Residence Time Measurement in MPLS Networks";
874   }
875
876   identity link-protection-type {
877     description
878       "Base identity for the link protection type.";
879   }
880
881   identity link-protection-unprotected {
882     base link-protection-type;
883     description
884       "Unprotected link type.";
885     reference
886       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
887        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
888   }
889
890   identity link-protection-extra-traffic {
891     base link-protection-type;
892     description
893       "Extra-Traffic protected link type.";
894     reference
895       "RFC 4427: Recovery (Protection and Restoration) Terminology
896        for Generalized Multi-Protocol Label Switching (GMPLS)";
897   }
898
899   identity link-protection-shared {
900     base link-protection-type;
901     description
902       "Shared protected link type.";
903     reference
904       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
905        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
906   }
907
908   identity link-protection-1-for-1 {
909     base link-protection-type;
910     description
911       "One-for-one (1:1) protected link type.";
912     reference
913       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
914        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
915   }
916
917   identity link-protection-1-plus-1 {
918     base link-protection-type;
919     description
920       "One-plus-one (1+1) protected link type.";
921     reference
922       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
923        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
924   }
925
926   identity link-protection-enhanced {
927     base link-protection-type;
928     description
929       "A compound link protection type derived from the underlay
930        TE tunnel protection configuration supporting the TE link.";
931   }
932
933   identity association-type {
934     description
935       "Base identity for the tunnel association.";
936   }
937
938   identity association-type-recovery {
939     base association-type;
940     description
941       "Association type for recovery, used to associate LSPs of the
942        same tunnel for recovery.";
943     reference
944       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
945        Generalized Multi-Protocol Label Switching (GMPLS) Recovery
946        RFC 6780: RSVP ASSOCIATION Object Extensions";
947   }
948
949   identity association-type-resource-sharing {
950     base association-type;
951     description
952       "Association type for resource sharing, used to enable
953        resource sharing during make-before-break.";
954     reference
955       "RFC 4873: GMPLS Segment Recovery
956        RFC 6780: RSVP ASSOCIATION Object Extensions";
957   }
958
959   identity association-type-double-sided-bidir {
960     base association-type;
961     description
962       "Association type for double-sided bidirectional LSPs,
963        used to associate two LSPs of two tunnels that are
964        independently configured on either endpoint.";
965     reference
966       "RFC 7551: RSVP-TE Extensions for Associated Bidirectional
967        Label Switched Paths (LSPs)";
968   }
969
970   identity association-type-single-sided-bidir {
971     base association-type;
972     description
973       "Association type for single-sided bidirectional LSPs,
974        used to associate two LSPs of two tunnels, where one
975        tunnel is configured on one side/endpoint and the other
976        tunnel is dynamically created on the other endpoint.";
977     reference
978       "RFC 6780: RSVP ASSOCIATION Object Extensions
979        RFC 7551: RSVP-TE Extensions for Associated Bidirectional
980        Label Switched Paths (LSPs)";
981   }
982
983   identity objective-function-type {
984     description
985       "Base objective function type.";
986   }
987
988   identity of-minimize-cost-path {
989     base objective-function-type;
990     description
991       "Objective function for minimizing path cost.";
992     reference
993       "RFC 5541: Encoding of Objective Functions in the Path
994        Computation Element Communication Protocol (PCEP)";
995   }
996
997   identity of-minimize-load-path {
998     base objective-function-type;
999     description
1000       "Objective function for minimizing the load on one or more
1001        paths.";
1002     reference
1003       "RFC 5541: Encoding of Objective Functions in the Path
1004        Computation Element Communication Protocol (PCEP)";
1005   }
1006
1007   identity of-maximize-residual-bandwidth {
1008     base objective-function-type;
1009     description
1010       "Objective function for maximizing residual bandwidth.";
1011     reference
1012       "RFC 5541: Encoding of Objective Functions in the Path
1013        Computation Element Communication Protocol (PCEP)";
1014   }
1015
1016   identity of-minimize-agg-bandwidth-consumption {
1017     base objective-function-type;
1018     description
1019       "Objective function for minimizing aggregate bandwidth
1020        consumption.";
1021     reference
1022       "RFC 5541: Encoding of Objective Functions in the Path
1023        Computation Element Communication Protocol (PCEP)";
1024   }
1025
1026   identity of-minimize-load-most-loaded-link {
1027     base objective-function-type;
1028     description
1029       "Objective function for minimizing the load on the link that
1030        is carrying the highest load.";
1031     reference
1032       "RFC 5541: Encoding of Objective Functions in the Path
1033        Computation Element Communication Protocol (PCEP)";
1034   }
1035
1036   identity of-minimize-cost-path-set {
1037     base objective-function-type;
1038     description
1039       "Objective function for minimizing the cost on a path set.";
1040     reference
1041       "RFC 5541: Encoding of Objective Functions in the Path
1042        Computation Element Communication Protocol (PCEP)";
1043   }
1044
1045   identity path-computation-method {
1046     description
1047       "Base identity for supported path computation mechanisms.";
1048   }
1049
1050   identity path-locally-computed {
1051     base path-computation-method;
1052     description
1053       "Indicates a constrained-path LSP in which the
1054        path is computed by the local LER.";
1055     reference
1056       "RFC 3272: Overview and Principles of Internet Traffic
1057        Engineering, Section 5.4";
1058   }
1059
1060   identity path-externally-queried {
1061     base path-computation-method;
1062     description
1063       "Constrained-path LSP in which the path is obtained by
1064        querying an external source, such as a PCE server.
1065        In the case that an LSP is defined to be externally queried,
1066        it may also have associated explicit definitions (provided
1067        to the external source to aid computation).  The path that is
1068        returned by the external source may require further local
1069        computation on the device.";
1070     reference
1071       "RFC 3272: Overview and Principles of Internet Traffic
1072        Engineering
1073        RFC 4657: Path Computation Element (PCE) Communication
1074        Protocol Generic Requirements";
1075   }
1076
1077   identity path-explicitly-defined {
1078     base path-computation-method;
1079     description
1080       "Constrained-path LSP in which the path is
1081        explicitly specified as a collection of strict and/or loose
1082        hops.";
1083     reference
1084       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
1085        RFC 3272: Overview and Principles of Internet Traffic
1086        Engineering";
1087   }
1088
1089   identity lsp-metric-type {
1090     description
1091       "Base identity for the LSP metric specification types.";
1092   }
1093
1094   identity lsp-metric-relative {
1095     base lsp-metric-type;
1096     description
1097       "The metric specified for the LSPs to which this identity
1098        refers is specified as a value relative to the IGP metric
1099        cost to the LSP's tail end.";
1100     reference
1101       "RFC 4657: Path Computation Element (PCE) Communication
1102        Protocol Generic Requirements";
1103   }
1104
1105   identity lsp-metric-absolute {
1106     base lsp-metric-type;
1107     description
1108       "The metric specified for the LSPs to which this identity
1109        refers is specified as an absolute value.";
1110     reference
1111       "RFC 4657: Path Computation Element (PCE) Communication
1112        Protocol Generic Requirements";
1113   }
1114
1115   identity lsp-metric-inherited {
1116     base lsp-metric-type;
1117     description
1118       "The metric for the LSPs to which this identity refers is
1119        not specified explicitly; rather, it is directly inherited
1120        from the IGP cost.";
1121     reference
1122       "RFC 4657: Path Computation Element (PCE) Communication
1123        Protocol Generic Requirements";
1124   }
1125
1126   identity te-tunnel-type {
1127     description
1128       "Base identity from which specific tunnel types are derived.";
1129   }
1130
1131   identity te-tunnel-p2p {
1132     base te-tunnel-type;
1133     description
1134       "TE Point-to-Point (P2P) tunnel type.";
1135     reference
1136       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
1137   }
1138
1139   identity te-tunnel-p2mp {
1140     base te-tunnel-type;
1141     description
1142       "TE P2MP tunnel type.";
1143     reference
1144       "RFC 4875: Extensions to Resource Reservation Protocol -
1145        Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
1146        Label Switched Paths (LSPs)";
1147   }
1148
1149   identity tunnel-action-type {
1150     description
1151       "Base identity from which specific tunnel action types
1152        are derived.";
1153   }
1154
1155   identity tunnel-action-resetup {
1156     base tunnel-action-type;
1157     description
1158       "TE tunnel action that tears down the tunnel's current LSP
1159        (if any) and attempts to re-establish a new LSP.";
1160   }
1161
1162   identity tunnel-action-reoptimize {
1163     base tunnel-action-type;
1164     description
1165       "TE tunnel action that reoptimizes the placement of the
1166        tunnel LSP(s).";
1167   }
1168
1169   identity tunnel-action-switchpath {
1170     base tunnel-action-type;
1171     description
1172       "TE tunnel action that switches the tunnel's LSP to use the
1173        specified path.";
1174   }
1175
1176   identity te-action-result {
1177     description
1178       "Base identity from which specific TE action results
1179        are derived.";
1180   }
1181
1182   identity te-action-success {
1183     base te-action-result;
1184     description
1185       "TE action was successful.";
1186   }
1187
1188   identity te-action-fail {
1189     base te-action-result;
1190     description
1191       "TE action failed.";
1192   }
1193
1194   identity tunnel-action-inprogress {
1195     base te-action-result;
1196     description
1197       "TE action is in progress.";
1198   }
1199
1200   identity tunnel-admin-state-type {
1201     description
1202       "Base identity for TE tunnel administrative states.";
1203   }
1204
1205   identity tunnel-admin-state-up {
1206     base tunnel-admin-state-type;
1207     description
1208       "Tunnel's administrative state is up.";
1209   }
1210
1211   identity tunnel-admin-state-down {
1212     base tunnel-admin-state-type;
1213     description
1214       "Tunnel's administrative state is down.";
1215   }
1216
1217   identity tunnel-state-type {
1218     description
1219       "Base identity for TE tunnel states.";
1220   }
1221
1222   identity tunnel-state-up {
1223     base tunnel-state-type;
1224     description
1225       "Tunnel's state is up.";
1226   }
1227
1228   identity tunnel-state-down {
1229     base tunnel-state-type;
1230     description
1231       "Tunnel's state is down.";
1232   }
1233
1234   identity lsp-state-type {
1235     description
1236       "Base identity for TE LSP states.";
1237   }
1238
1239   identity lsp-path-computing {
1240     base lsp-state-type;
1241     description
1242       "State path computation is in progress.";
1243   }
1244
1245   identity lsp-path-computation-ok {
1246     base lsp-state-type;
1247     description
1248       "State path computation was successful.";
1249   }
1250
1251   identity lsp-path-computation-failed {
1252     base lsp-state-type;
1253     description
1254       "State path computation failed.";
1255   }
1256
1257   identity lsp-state-setting-up {
1258     base lsp-state-type;
1259     description
1260       "State is being set up.";
1261   }
1262
1263   identity lsp-state-setup-ok {
1264     base lsp-state-type;
1265     description
1266       "State setup was successful.";
1267   }
1268
1269   identity lsp-state-setup-failed {
1270     base lsp-state-type;
1271     description
1272       "State setup failed.";
1273   }
1274
1275   identity lsp-state-up {
1276     base lsp-state-type;
1277     description
1278       "State is up.";
1279   }
1280
1281   identity lsp-state-tearing-down {
1282     base lsp-state-type;
1283     description
1284       "State is being torn down.";
1285   }
1286
1287   identity lsp-state-down {
1288     base lsp-state-type;
1289     description
1290       "State is down.";
1291   }
1292
1293   identity path-invalidation-action-type {
1294     description
1295       "Base identity for TE path invalidation action types.";
1296   }
1297
1298   identity path-invalidation-action-drop {
1299     base path-invalidation-action-type;
1300     description
1301       "Upon invalidation of the TE tunnel path, the tunnel remains
1302        valid, but any packet mapped over the tunnel is dropped.";
1303     reference
1304       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
1305        Section 2.5";
1306   }
1307
1308   identity path-invalidation-action-teardown {
1309     base path-invalidation-action-type;
1310     description
1311       "TE path invalidation action teardown.";
1312     reference
1313       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
1314        Section 2.5";
1315   }
1316
1317   identity lsp-restoration-type {
1318     description
1319       "Base identity from which LSP restoration types are derived.";
1320   }
1321
1322   identity lsp-restoration-restore-any {
1323     base lsp-restoration-type;
1324     description
1325       "Any LSP affected by a failure is restored.";
1326   }
1327
1328   identity lsp-restoration-restore-all {
1329     base lsp-restoration-type;
1330     description
1331       "Affected LSPs are restored after all LSPs of the tunnel are
1332        broken.";
1333   }
1334
1335   identity restoration-scheme-type {
1336     description
1337       "Base identity for LSP restoration schemes.";
1338   }
1339
1340   identity restoration-scheme-preconfigured {
1341     base restoration-scheme-type;
1342     description
1343       "Restoration LSP is preconfigured prior to the failure.";
1344     reference
1345       "RFC 4427: Recovery (Protection and Restoration) Terminology
1346        for Generalized Multi-Protocol Label Switching (GMPLS)";
1347   }
1348
1349   identity restoration-scheme-precomputed {
1350     base restoration-scheme-type;
1351     description
1352       "Restoration LSP is precomputed prior to the failure.";
1353     reference
1354       "RFC 4427: Recovery (Protection and Restoration) Terminology
1355        for Generalized Multi-Protocol Label Switching (GMPLS)";
1356   }
1357
1358   identity restoration-scheme-presignaled {
1359     base restoration-scheme-type;
1360     description
1361       "Restoration LSP is presignaled prior to the failure.";
1362     reference
1363       "RFC 4427: Recovery (Protection and Restoration) Terminology
1364        for Generalized Multi-Protocol Label Switching (GMPLS)";
1365   }
1366
1367   identity lsp-protection-type {
1368     description
1369       "Base identity from which LSP protection types are derived.";
1370     reference
1371       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1372        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1373   }
1374
1375   identity lsp-protection-unprotected {
1376     base lsp-protection-type;
1377     description
1378       "'Unprotected' LSP protection type.";
1379     reference
1380       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1381        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1382   }
1383
1384   identity lsp-protection-reroute-extra {
1385     base lsp-protection-type;
1386     description
1387       "'(Full) Rerouting' LSP protection type.";
1388     reference
1389       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1390        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1391   }
1392
1393   identity lsp-protection-reroute {
1394     base lsp-protection-type;
1395     description
1396       "'Rerouting without Extra-Traffic' LSP protection type.";
1397     reference
1398       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1399        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1400   }
1401
1402   identity lsp-protection-1-for-n {
1403     base lsp-protection-type;
1404     description
1405       "'1:N Protection with Extra-Traffic' LSP protection type.";
1406     reference
1407       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1408        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1409   }
1410
1411   identity lsp-protection-1-for-1 {
1412     base lsp-protection-type;
1413     description
1414       "LSP protection '1:1 Protection Type'.";
1415     reference
1416       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1417        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1418   }
1419
1420   identity lsp-protection-unidir-1-plus-1 {
1421     base lsp-protection-type;
1422     description
1423       "'1+1 Unidirectional Protection' LSP protection type.";
1424     reference
1425       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1426        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1427   }
1428
1429   identity lsp-protection-bidir-1-plus-1 {
1430     base lsp-protection-type;
1431     description
1432       "'1+1 Bidirectional Protection' LSP protection type.";
1433     reference
1434       "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1435        Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
1436   }
1437
1438   identity lsp-protection-extra-traffic {
1439     base lsp-protection-type;
1440     description
1441       "Extra-Traffic LSP protection type.";
1442     reference
1443       "RFC 4427: Recovery (Protection and Restoration) Terminology
1444        for Generalized Multi-Protocol Label Switching (GMPLS)";
1445   }
1446
1447   identity lsp-protection-state {
1448     description
1449       "Base identity of protection states for reporting purposes.";
1450   }
1451
1452   identity normal {
1453     base lsp-protection-state;
1454     description
1455       "Normal state.";
1456   }
1457
1458   identity signal-fail-of-protection {
1459     base lsp-protection-state;
1460     description
1461       "The protection transport entity has a signal fail condition
1462        that is of higher priority than the forced switchover
1463        command.";
1464     reference
1465       "RFC 4427: Recovery (Protection and Restoration) Terminology
1466        for Generalized Multi-Protocol Label Switching (GMPLS)";
1467   }
1468
1469   identity lockout-of-protection {
1470     base lsp-protection-state;
1471     description
1472       "A Loss of Protection (LoP) command is active.";
1473     reference
1474       "RFC 4427: Recovery (Protection and Restoration) Terminology
1475        for Generalized Multi-Protocol Label Switching (GMPLS)";
1476   }
1477
1478   identity forced-switch {
1479     base lsp-protection-state;
1480     description
1481       "A forced switchover command is active.";
1482     reference
1483       "RFC 4427: Recovery (Protection and Restoration) Terminology
1484        for Generalized Multi-Protocol Label Switching (GMPLS)";
1485   }
1486
1487   identity signal-fail {
1488     base lsp-protection-state;
1489     description
1490       "There is a signal fail condition on either the working path
1491        or the protection path.";
1492     reference
1493       "RFC 4427: Recovery (Protection and Restoration) Terminology
1494        for Generalized Multi-Protocol Label Switching (GMPLS)";
1495   }
1496
1497   identity signal-degrade {
1498     base lsp-protection-state;
1499     description
1500       "There is a signal degrade condition on either the working
1501        path or the protection path.";
1502     reference
1503       "RFC 4427: Recovery (Protection and Restoration) Terminology
1504        for Generalized Multi-Protocol Label Switching (GMPLS)";
1505   }
1506
1507   identity manual-switch {
1508     base lsp-protection-state;
1509     description
1510       "A manual switchover command is active.";
1511     reference
1512       "RFC 4427: Recovery (Protection and Restoration) Terminology
1513        for Generalized Multi-Protocol Label Switching (GMPLS)";
1514   }
1515
1516   identity wait-to-restore {
1517     base lsp-protection-state;
1518     description
1519       "A WTR timer is running.";
1520     reference
1521       "RFC 4427: Recovery (Protection and Restoration) Terminology
1522        for Generalized Multi-Protocol Label Switching (GMPLS)";
1523   }
1524
1525   identity do-not-revert {
1526     base lsp-protection-state;
1527     description
1528       "A Do Not Revert (DNR) condition is active because of
1529        non-revertive behavior.";
1530     reference
1531       "RFC 4427: Recovery (Protection and Restoration) Terminology
1532        for Generalized Multi-Protocol Label Switching (GMPLS)";
1533   }
1534
1535   identity failure-of-protocol {
1536     base lsp-protection-state;
1537     description
1538       "LSP protection is not working because of a protocol failure
1539        condition.";
1540     reference
1541       "RFC 4427: Recovery (Protection and Restoration) Terminology
1542        for Generalized Multi-Protocol Label Switching (GMPLS)";
1543   }
1544
1545   identity protection-external-commands {
1546     description
1547       "Base identity from which protection-related external commands
1548        used for troubleshooting purposes are derived.";
1549   }
1550
1551   identity action-freeze {
1552     base protection-external-commands;
1553     description
1554       "A temporary configuration action initiated by an operator
1555        command that prevents any switchover action from being taken
1556        and, as such, freezes the current state.";
1557     reference
1558       "RFC 4427: Recovery (Protection and Restoration) Terminology
1559        for Generalized Multi-Protocol Label Switching (GMPLS)";
1560   }
1561
1562   identity clear-freeze {
1563     base protection-external-commands;
1564     description
1565       "An action that clears the active freeze state.";
1566     reference
1567       "RFC 4427: Recovery (Protection and Restoration) Terminology
1568        for Generalized Multi-Protocol Label Switching (GMPLS)";
1569   }
1570
1571   identity action-lockout-of-normal {
1572     base protection-external-commands;
1573     description
1574       "A temporary configuration action initiated by an operator
1575        command to ensure that the normal traffic is not allowed
1576        to use the protection transport entity.";
1577     reference
1578       "RFC 4427: Recovery (Protection and Restoration) Terminology
1579        for Generalized Multi-Protocol Label Switching (GMPLS)";
1580   }
1581
1582   identity clear-lockout-of-normal {
1583     base protection-external-commands;
1584     description
1585       "An action that clears the active lockout of the
1586        normal state.";
1587     reference
1588       "RFC 4427: Recovery (Protection and Restoration) Terminology
1589        for Generalized Multi-Protocol Label Switching (GMPLS)";
1590   }
1591
1592   identity action-lockout-of-protection {
1593     base protection-external-commands;
1594     description
1595       "A temporary configuration action initiated by an operator
1596        command to ensure that the protection transport entity is
1597        temporarily not available to transport a traffic signal
1598        (either normal or Extra-Traffic).";
1599     reference
1600       "RFC 4427: Recovery (Protection and Restoration) Terminology
1601        for Generalized Multi-Protocol Label Switching (GMPLS)";
1602   }
1603
1604   identity action-forced-switch {
1605     base protection-external-commands;
1606     description
1607       "A switchover action initiated by an operator command to switch
1608        the Extra-Traffic signal, the normal traffic signal, or the
1609        null signal to the protection transport entity, unless a
1610        switchover command of equal or higher priority is in effect.";
1611     reference
1612       "RFC 4427: Recovery (Protection and Restoration) Terminology
1613        for Generalized Multi-Protocol Label Switching (GMPLS)";
1614   }
1615
1616   identity action-manual-switch {
1617     base protection-external-commands;
1618     description
1619       "A switchover action initiated by an operator command to switch
1620        the Extra-Traffic signal, the normal traffic signal, or
1621        the null signal to the protection transport entity, unless
1622        a fault condition exists on other transport entities or a
1623        switchover command of equal or higher priority is in effect.";
1624     reference
1625       "RFC 4427: Recovery (Protection and Restoration) Terminology
1626        for Generalized Multi-Protocol Label Switching (GMPLS)";
1627   }
1628
1629   identity action-exercise {
1630     base protection-external-commands;
1631     description
1632       "An action that starts testing whether or not APS communication
1633        is operating correctly.  It is of lower priority than any
1634        other state or command.";
1635     reference
1636       "RFC 4427: Recovery (Protection and Restoration) Terminology
1637        for Generalized Multi-Protocol Label Switching (GMPLS)";
1638   }
1639
1640   identity clear {
1641     base protection-external-commands;
1642     description
1643       "An action that clears the active near-end lockout of a
1644        protection, forced switchover, manual switchover, WTR state,
1645        or exercise command.";
1646     reference
1647       "RFC 4427: Recovery (Protection and Restoration) Terminology
1648        for Generalized Multi-Protocol Label Switching (GMPLS)";
1649   }
1650
1651   identity switching-capabilities {
1652     description
1653       "Base identity for interface switching capabilities.";
1654     reference
1655       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1656        Signaling Functional Description";
1657   }
1658
1659   identity switching-psc1 {
1660     base switching-capabilities;
1661     description
1662       "Packet-Switch Capable-1 (PSC-1).";
1663     reference
1664       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1665        Signaling Functional Description";
1666   }
1667
1668   identity switching-evpl {
1669     base switching-capabilities;
1670     description
1671       "Ethernet Virtual Private Line (EVPL).";
1672     reference
1673       "RFC 6004: Generalized MPLS (GMPLS) Support for Metro Ethernet
1674        Forum and G.8011 Ethernet Service Switching";
1675   }
1676
1677   identity switching-l2sc {
1678     base switching-capabilities;
1679     description
1680       "Layer-2 Switch Capable (L2SC).";
1681     reference
1682       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1683        Signaling Functional Description";
1684   }
1685
1686   identity switching-tdm {
1687     base switching-capabilities;
1688     description
1689       "Time-Division-Multiplex Capable (TDM).";
1690     reference
1691       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1692        Signaling Functional Description";
1693   }
1694
1695   identity switching-otn {
1696     base switching-capabilities;
1697     description
1698       "OTN-TDM capable.";
1699     reference
1700       "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS
1701        Control of Evolving G.709 Optical Transport Networks";
1702   }
1703
1704   identity switching-dcsc {
1705     base switching-capabilities;
1706     description
1707       "Data Channel Switching Capable (DCSC).";
1708     reference
1709       "RFC 6002: Generalized MPLS (GMPLS) Data Channel
1710        Switching Capable (DCSC) and Channel Set Label Extensions";
1711   }
1712
1713   identity switching-lsc {
1714     base switching-capabilities;
1715     description
1716       "Lambda-Switch Capable (LSC).";
1717     reference
1718       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1719        Signaling Functional Description";
1720   }
1721
1722   identity switching-fsc {
1723     base switching-capabilities;
1724     description
1725       "Fiber-Switch Capable (FSC).";
1726     reference
1727       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1728        Signaling Functional Description";
1729   }
1730
1731   identity lsp-encoding-types {
1732     description
1733       "Base identity for encoding types.";
1734     reference
1735       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1736        Signaling Functional Description";
1737   }
1738
1739   identity lsp-encoding-packet {
1740     base lsp-encoding-types;
1741     description
1742       "Packet LSP encoding.";
1743     reference
1744       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1745        Signaling Functional Description";
1746   }
1747
1748   identity lsp-encoding-ethernet {
1749     base lsp-encoding-types;
1750     description
1751       "Ethernet LSP encoding.";
1752     reference
1753       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1754        Signaling Functional Description";
1755   }
1756
1757   identity lsp-encoding-pdh {
1758     base lsp-encoding-types;
1759     description
1760       "ANSI/ETSI PDH LSP encoding.";
1761     reference
1762       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1763        Signaling Functional Description";
1764   }
1765
1766   identity lsp-encoding-sdh {
1767     base lsp-encoding-types;
1768     description
1769       "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding.";
1770     reference
1771       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1772        Signaling Functional Description";
1773   }
1774
1775   identity lsp-encoding-digital-wrapper {
1776     base lsp-encoding-types;
1777     description
1778       "Digital Wrapper LSP encoding.";
1779     reference
1780       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1781        Signaling Functional Description";
1782   }
1783
1784   identity lsp-encoding-lambda {
1785     base lsp-encoding-types;
1786     description
1787       "Lambda (photonic) LSP encoding.";
1788     reference
1789       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1790        Signaling Functional Description";
1791   }
1792
1793   identity lsp-encoding-fiber {
1794     base lsp-encoding-types;
1795     description
1796       "Fiber LSP encoding.";
1797     reference
1798       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1799        Signaling Functional Description";
1800   }
1801
1802   identity lsp-encoding-fiber-channel {
1803     base lsp-encoding-types;
1804     description
1805       "FiberChannel LSP encoding.";
1806     reference
1807       "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
1808        Signaling Functional Description";
1809   }
1810
1811   identity lsp-encoding-oduk {
1812     base lsp-encoding-types;
1813     description
1814       "G.709 ODUk (Digital Path) LSP encoding.";
1815     reference
1816       "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
1817        Signaling Extensions for G.709 Optical Transport Networks
1818        Control";
1819   }
1820
1821   identity lsp-encoding-optical-channel {
1822     base lsp-encoding-types;
1823     description
1824       "G.709 Optical Channel LSP encoding.";
1825     reference
1826       "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
1827        Signaling Extensions for G.709 Optical Transport Networks
1828        Control";
1829   }
1830
1831   identity lsp-encoding-line {
1832     base lsp-encoding-types;
1833     description
1834       "Line (e.g., 8B/10B) LSP encoding.";
1835     reference
1836       "RFC 6004: Generalized MPLS (GMPLS) Support for Metro
1837        Ethernet Forum and G.8011 Ethernet Service Switching";
1838   }
1839
1840   identity path-signaling-type {
1841     description
1842       "Base identity from which specific LSP path setup types
1843        are derived.";
1844   }
1845
1846   identity path-setup-static {
1847     base path-signaling-type;
1848     description
1849       "Static LSP provisioning path setup.";
1850   }
1851
1852   identity path-setup-rsvp {
1853     base path-signaling-type;
1854     description
1855       "RSVP-TE signaling path setup.";
1856     reference
1857       "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
1858   }
1859
1860   identity path-setup-sr {
1861     base path-signaling-type;
1862     description
1863       "Segment-routing path setup.";
1864   }
1865
1866   identity path-scope-type {
1867     description
1868       "Base identity from which specific path scope types are
1869        derived.";
1870   }
1871
1872   identity path-scope-segment {
1873     base path-scope-type;
1874     description
1875       "Path scope segment.";
1876     reference
1877       "RFC 4873: GMPLS Segment Recovery";
1878   }
1879
1880   identity path-scope-end-to-end {
1881     base path-scope-type;
1882     description
1883       "Path scope end to end.";
1884     reference
1885       "RFC 4873: GMPLS Segment Recovery";
1886   }
1887
1888   identity route-usage-type {
1889     description
1890       "Base identity for route usage.";
1891   }
1892
1893   identity route-include-object {
1894     base route-usage-type;
1895     description
1896       "'Include route' object.";
1897   }
1898
1899   identity route-exclude-object {
1900     base route-usage-type;
1901     description
1902       "'Exclude route' object.";
1903     reference
1904       "RFC 4874: Exclude Routes - Extension to Resource ReserVation
1905        Protocol-Traffic Engineering (RSVP-TE)";
1906   }
1907
1908   identity route-exclude-srlg {
1909     base route-usage-type;
1910     description
1911       "Excludes SRLGs.";
1912     reference
1913       "RFC 4874: Exclude Routes - Extension to Resource ReserVation
1914        Protocol-Traffic Engineering (RSVP-TE)";
1915   }
1916
1917   identity path-metric-type {
1918     description
1919       "Base identity for the path metric type.";
1920   }
1921
1922   identity path-metric-te {
1923     base path-metric-type;
1924     description
1925       "TE path metric.";
1926     reference
1927       "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
1928        second MPLS Traffic Engineering (TE) Metric";
1929   }
1930
1931   identity path-metric-igp {
1932     base path-metric-type;
1933     description
1934       "IGP path metric.";
1935     reference
1936       "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
1937        second MPLS Traffic Engineering (TE) Metric";
1938   }
1939
1940   identity path-metric-hop {
1941     base path-metric-type;
1942     description
1943       "Hop path metric.";
1944   }
1945
1946   identity path-metric-delay-average {
1947     base path-metric-type;
1948     description
1949       "Average unidirectional link delay.";
1950     reference
1951       "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
1952   }
1953
1954   identity path-metric-delay-minimum {
1955     base path-metric-type;
1956     description
1957       "Minimum unidirectional link delay.";
1958     reference
1959       "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
1960   }
1961
1962   identity path-metric-residual-bandwidth {
1963     base path-metric-type;
1964     description
1965       "Unidirectional Residual Bandwidth, which is defined to be
1966        Maximum Bandwidth (RFC 3630) minus the bandwidth currently
1967        allocated to LSPs.";
1968     reference
1969       "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
1970        Version 2
1971        RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
1972   }
1973
1974   identity path-metric-optimize-includes {
1975     base path-metric-type;
1976     description
1977       "A metric that optimizes the number of included resources
1978        specified in a set.";
1979   }
1980
1981   identity path-metric-optimize-excludes {
1982     base path-metric-type;
1983     description
1984       "A metric that optimizes to a maximum the number of excluded
1985        resources specified in a set.";
1986   }
1987
1988   identity path-tiebreaker-type {
1989     description
1990       "Base identity for the path tiebreaker type.";
1991   }
1992
1993   identity path-tiebreaker-minfill {
1994     base path-tiebreaker-type;
1995     description
1996       "Min-Fill LSP path placement.";
1997   }
1998
1999   identity path-tiebreaker-maxfill {
2000     base path-tiebreaker-type;
2001     description
2002       "Max-Fill LSP path placement.";
2003   }
2004
2005   identity path-tiebreaker-random {
2006     base path-tiebreaker-type;
2007     description
2008       "Random LSP path placement.";
2009   }
2010
2011   identity resource-affinities-type {
2012     description
2013       "Base identity for resource class affinities.";
2014     reference
2015       "RFC 2702: Requirements for Traffic Engineering Over MPLS";
2016   }
2017
2018   identity resource-aff-include-all {
2019     base resource-affinities-type;
2020     description
2021       "The set of attribute filters associated with a
2022        tunnel, all of which must be present for a link
2023        to be acceptable.";
2024     reference
2025       "RFC 2702: Requirements for Traffic Engineering Over MPLS
2026        RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
2027   }
2028
2029   identity resource-aff-include-any {
2030     base resource-affinities-type;
2031     description
2032       "The set of attribute filters associated with a
2033        tunnel, any of which must be present for a link
2034        to be acceptable.";
2035     reference
2036       "RFC 2702: Requirements for Traffic Engineering Over MPLS
2037        RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
2038   }
2039
2040   identity resource-aff-exclude-any {
2041     base resource-affinities-type;
2042     description
2043       "The set of attribute filters associated with a
2044        tunnel, any of which renders a link unacceptable.";
2045     reference
2046       "RFC 2702: Requirements for Traffic Engineering Over MPLS
2047        RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
2048   }
2049
2050   identity te-optimization-criterion {
2051     description
2052       "Base identity for the TE optimization criteria.";
2053     reference
2054       "RFC 3272: Overview and Principles of Internet Traffic
2055        Engineering";
2056   }
2057
2058   identity not-optimized {
2059     base te-optimization-criterion;
2060     description
2061       "Optimization is not applied.";
2062   }
2063
2064   identity cost {
2065     base te-optimization-criterion;
2066     description
2067       "Optimized on cost.";
2068     reference
2069       "RFC 5541: Encoding of Objective Functions in the Path
2070        Computation Element Communication Protocol (PCEP)";
2071   }
2072
2073   identity delay {
2074     base te-optimization-criterion;
2075     description
2076       "Optimized on delay.";
2077     reference
2078       "RFC 5541: Encoding of Objective Functions in the Path
2079        Computation Element Communication Protocol (PCEP)";
2080   }
2081
2082   identity path-computation-srlg-type {
2083     description
2084       "Base identity for SRLG path computation.";
2085   }
2086
2087   identity srlg-ignore {
2088     base path-computation-srlg-type;
2089     description
2090       "Ignores SRLGs in the path computation.";
2091   }
2092
2093   identity srlg-strict {
2094     base path-computation-srlg-type;
2095     description
2096       "Includes a strict SRLG check in the path computation.";
2097   }
2098
2099   identity srlg-preferred {
2100     base path-computation-srlg-type;
2101     description
2102       "Includes a preferred SRLG check in the path computation.";
2103   }
2104
2105   identity srlg-weighted {
2106     base path-computation-srlg-type;
2107     description
2108       "Includes a weighted SRLG check in the path computation.";
2109   }
2110
2111   /**
2112    * TE bandwidth groupings
2113    **/
2114
2115   grouping te-bandwidth {
2116     description
2117       "This grouping defines the generic TE bandwidth.
2118        For some known data-plane technologies, specific modeling
2119        structures are specified.  The string-encoded 'te-bandwidth'
2120        type is used for unspecified technologies.
2121        The modeling structure can be augmented later for other
2122        technologies.";
2123     container te-bandwidth {
2124       description
2125         "Container that specifies TE bandwidth.  The choices
2126          can be augmented for specific data-plane technologies.";
2127       choice technology {
2128         default "generic";
2129         description
2130           "Data-plane technology type.";
2131         case generic {
2132           leaf generic {
2133             type te-bandwidth;
2134             description
2135               "Bandwidth specified in a generic format.";
2136           }
2137         }
2138       }
2139     }
2140   }
2141
2142   /**
2143    * TE label groupings
2144    **/
2145
2146   grouping te-label {
2147     description
2148       "This grouping defines the generic TE label.
2149        The modeling structure can be augmented for each technology.
2150        For unspecified technologies, 'rt-types:generalized-label'
2151        is used.";
2152     container te-label {
2153       description
2154         "Container that specifies the TE label.  The choices can
2155          be augmented for specific data-plane technologies.";
2156       choice technology {
2157         default "generic";
2158         description
2159           "Data-plane technology type.";
2160         case generic {
2161           leaf generic {
2162             type rt-types:generalized-label;
2163             description
2164               "TE label specified in a generic format.";
2165           }
2166         }
2167       }
2168       leaf direction {
2169         type te-label-direction;
2170         default "forward";
2171         description
2172           "Label direction.";
2173       }
2174     }
2175   }
2176
2177   grouping te-topology-identifier {
2178     description
2179       "Augmentation for a TE topology.";
2180     container te-topology-identifier {
2181       description
2182         "TE topology identifier container.";
2183       leaf provider-id {
2184         type te-global-id;
2185         default "0";
2186         description
2187           "An identifier to uniquely identify a provider.
2188            If omitted, it assumes that the topology provider ID
2189            value = 0 (the default).";
2190       }
2191       leaf client-id {
2192         type te-global-id;
2193         default "0";
2194         description
2195           "An identifier to uniquely identify a client.
2196            If omitted, it assumes that the topology client ID
2197            value = 0 (the default).";
2198       }
2199       leaf topology-id {
2200         type te-topology-id;
2201         default "";
2202         description
2203           "When the datastore contains several topologies,
2204            'topology-id' distinguishes between them.  If omitted,
2205            the default (empty) string for this leaf is assumed.";
2206       }
2207     }
2208   }
2209
2210   /**
2211    * TE performance metrics groupings
2212    **/
2213
2214   grouping performance-metrics-one-way-delay-loss {
2215     description
2216       "Performance Metrics (PM) information in real time that can
2217        be applicable to links or connections.  PM defined in this
2218        grouping are applicable to generic TE PM as well as packet TE
2219        PM.";
2220     reference
2221       "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
2222        RFC 7823: Performance-Based Path Selection for Explicitly
2223        Routed Label Switched Paths (LSPs) Using TE Metric
2224        Extensions
2225        RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
2226     leaf one-way-delay {
2227       type uint32 {
2228         range "0..16777215";
2229       }
2230       description
2231         "One-way delay or latency in microseconds.";
2232     }
2233     leaf one-way-delay-normality {
2234       type te-types:performance-metrics-normality;
2235       description
2236         "One-way delay normality.";
2237     }
2238   }
2239
2240   grouping performance-metrics-two-way-delay-loss {
2241     description
2242       "PM information in real time that can be applicable to links or
2243        connections.  PM defined in this grouping are applicable to
2244        generic TE PM as well as packet TE PM.";
2245     reference
2246       "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
2247        RFC 7823: Performance-Based Path Selection for Explicitly
2248        Routed Label Switched Paths (LSPs) Using TE Metric
2249        Extensions
2250        RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
2251     leaf two-way-delay {
2252       type uint32 {
2253         range "0..16777215";
2254       }
2255       description
2256         "Two-way delay or latency in microseconds.";
2257     }
2258     leaf two-way-delay-normality {
2259       type te-types:performance-metrics-normality;
2260       description
2261         "Two-way delay normality.";
2262     }
2263   }
2264
2265   grouping performance-metrics-one-way-bandwidth {
2266     description
2267       "PM information in real time that can be applicable to links.
2268        PM defined in this grouping are applicable to generic TE PM
2269        as well as packet TE PM.";
2270     reference
2271       "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
2272        RFC 7823: Performance-Based Path Selection for Explicitly
2273        Routed Label Switched Paths (LSPs) Using TE Metric
2274        Extensions
2275        RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
2276     leaf one-way-residual-bandwidth {
2277       type rt-types:bandwidth-ieee-float32;
2278       units "bytes per second";
2279       default "0x0p0";
2280       description
2281         "Residual bandwidth that subtracts tunnel reservations from
2282          Maximum Bandwidth (or link capacity) (RFC 3630) and
2283          provides an aggregated remainder across QoS classes.";
2284       reference
2285         "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
2286          Version 2";
2287     }
2288     leaf one-way-residual-bandwidth-normality {
2289       type te-types:performance-metrics-normality;
2290       default "normal";
2291       description
2292         "Residual bandwidth normality.";
2293     }
2294     leaf one-way-available-bandwidth {
2295       type rt-types:bandwidth-ieee-float32;
2296       units "bytes per second";
2297       default "0x0p0";
2298       description
2299         "Available bandwidth that is defined to be residual
2300          bandwidth minus the measured bandwidth used for the
2301          actual forwarding of non-RSVP-TE LSP packets.  For a
2302          bundled link, available bandwidth is defined to be the
2303          sum of the component link available bandwidths.";
2304     }
2305     leaf one-way-available-bandwidth-normality {
2306       type te-types:performance-metrics-normality;
2307       default "normal";
2308       description
2309         "Available bandwidth normality.";
2310     }
2311     leaf one-way-utilized-bandwidth {
2312       type rt-types:bandwidth-ieee-float32;
2313       units "bytes per second";
2314       default "0x0p0";
2315       description
2316         "Bandwidth utilization that represents the actual
2317          utilization of the link (i.e., as measured in the router).
2318          For a bundled link, bandwidth utilization is defined to
2319          be the sum of the component link bandwidth utilizations.";
2320     }
2321     leaf one-way-utilized-bandwidth-normality {
2322       type te-types:performance-metrics-normality;
2323       default "normal";
2324       description
2325         "Bandwidth utilization normality.";
2326     }
2327   }
2328
2329   grouping one-way-performance-metrics {
2330     description
2331       "One-way PM throttle grouping.";
2332     leaf one-way-delay {
2333       type uint32 {
2334         range "0..16777215";
2335       }
2336       default "0";
2337       description
2338         "One-way delay or latency in microseconds.";
2339     }
2340     leaf one-way-residual-bandwidth {
2341       type rt-types:bandwidth-ieee-float32;
2342       units "bytes per second";
2343       default "0x0p0";
2344       description
2345         "Residual bandwidth that subtracts tunnel reservations from
2346          Maximum Bandwidth (or link capacity) (RFC 3630) and
2347          provides an aggregated remainder across QoS classes.";
2348       reference
2349         "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
2350          Version 2";
2351     }
2352     leaf one-way-available-bandwidth {
2353       type rt-types:bandwidth-ieee-float32;
2354       units "bytes per second";
2355       default "0x0p0";
2356       description
2357         "Available bandwidth that is defined to be residual
2358          bandwidth minus the measured bandwidth used for the
2359          actual forwarding of non-RSVP-TE LSP packets.  For a
2360          bundled link, available bandwidth is defined to be the
2361          sum of the component link available bandwidths.";
2362     }
2363     leaf one-way-utilized-bandwidth {
2364       type rt-types:bandwidth-ieee-float32;
2365       units "bytes per second";
2366       default "0x0p0";
2367       description
2368         "Bandwidth utilization that represents the actual
2369          utilization of the link (i.e., as measured in the router).
2370          For a bundled link, bandwidth utilization is defined to
2371          be the sum of the component link bandwidth utilizations.";
2372     }
2373   }
2374
2375   grouping two-way-performance-metrics {
2376     description
2377       "Two-way PM throttle grouping.";
2378     leaf two-way-delay {
2379       type uint32 {
2380         range "0..16777215";
2381       }
2382       default "0";
2383       description
2384         "Two-way delay or latency in microseconds.";
2385     }
2386   }
2387
2388   grouping performance-metrics-thresholds {
2389     description
2390       "Grouping for configurable thresholds for measured
2391        attributes.";
2392     uses one-way-performance-metrics;
2393     uses two-way-performance-metrics;
2394   }
2395
2396   grouping performance-metrics-attributes {
2397     description
2398       "Contains PM attributes.";
2399     container performance-metrics-one-way {
2400       description
2401         "One-way link performance information in real time.";
2402       reference
2403         "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
2404          RFC 7823: Performance-Based Path Selection for Explicitly
2405          Routed Label Switched Paths (LSPs) Using TE Metric
2406          Extensions
2407          RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
2408       uses performance-metrics-one-way-delay-loss;
2409       uses performance-metrics-one-way-bandwidth;
2410     }
2411     container performance-metrics-two-way {
2412       description
2413         "Two-way link performance information in real time.";
2414       reference
2415         "RFC 6374: Packet Loss and Delay Measurement for MPLS
2416          Networks";
2417       uses performance-metrics-two-way-delay-loss;
2418     }
2419   }
2420
2421   grouping performance-metrics-throttle-container {
2422     description
2423       "Controls PM throttling.";
2424     container throttle {
2425       must 'suppression-interval >= measure-interval' {
2426         error-message "'suppression-interval' cannot be less than "
2427                     + "'measure-interval'.";
2428         description
2429           "Constraint on 'suppression-interval' and
2430            'measure-interval'.";
2431       }
2432       description
2433         "Link performance information in real time.";
2434       reference
2435         "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
2436          RFC 7823: Performance-Based Path Selection for Explicitly
2437          Routed Label Switched Paths (LSPs) Using TE Metric
2438          Extensions
2439          RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
2440       leaf one-way-delay-offset {
2441         type uint32 {
2442           range "0..16777215";
2443         }
2444         default "0";
2445         description
2446           "Offset value to be added to the measured delay value.";
2447       }
2448       leaf measure-interval {
2449         type uint32;
2450         default "30";
2451         description
2452           "Interval, in seconds, to measure the extended metric
2453            values.";
2454       }
2455       leaf advertisement-interval {
2456         type uint32;
2457         default "0";
2458         description
2459           "Interval, in seconds, to advertise the extended metric
2460            values.";
2461       }
2462       leaf suppression-interval {
2463         type uint32 {
2464           range "1..max";
2465         }
2466         default "120";
2467         description
2468           "Interval, in seconds, to suppress advertisement of the
2469            extended metric values.";
2470         reference
2471           "RFC 8570: IS-IS Traffic Engineering (TE) Metric
2472            Extensions, Section 6";
2473       }
2474       container threshold-out {
2475         uses performance-metrics-thresholds;
2476         description
2477           "If the measured parameter falls outside an upper bound
2478            for all but the minimum-delay metric (or a lower bound
2479            for the minimum-delay metric only) and the advertised
2480            value is not already outside that bound, an 'anomalous'
2481            announcement (anomalous bit set) will be triggered.";
2482       }
2483       container threshold-in {
2484         uses performance-metrics-thresholds;
2485         description
2486           "If the measured parameter falls inside an upper bound
2487            for all but the minimum-delay metric (or a lower bound
2488            for the minimum-delay metric only) and the advertised
2489            value is not already inside that bound, a 'normal'
2490            announcement (anomalous bit cleared) will be triggered.";
2491       }
2492       container threshold-accelerated-advertisement {
2493         description
2494           "When the difference between the last advertised value and
2495            the current measured value exceeds this threshold, an
2496            'anomalous' announcement (anomalous bit set) will be
2497            triggered.";
2498         uses performance-metrics-thresholds;
2499       }
2500     }
2501   }
2502
2503   /**
2504    * TE tunnel generic groupings
2505    **/
2506
2507   grouping explicit-route-hop {
2508     description
2509       "The explicit route entry grouping.";
2510     choice type {
2511       description
2512         "The explicit route entry type.";
2513       case numbered-node-hop {
2514         container numbered-node-hop {
2515           leaf node-id {
2516             type te-node-id;
2517             mandatory true;
2518             description
2519               "The identifier of a node in the TE topology.";
2520           }
2521           leaf hop-type {
2522             type te-hop-type;
2523             default "strict";
2524             description
2525               "Strict or loose hop.";
2526           }
2527           description
2528             "Numbered node route hop.";
2529           reference
2530             "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
2531              Section 4.3, EXPLICIT_ROUTE in RSVP-TE
2532              RFC 3477: Signalling Unnumbered Links in Resource
2533              ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
2534         }
2535       }
2536       case numbered-link-hop {
2537         container numbered-link-hop {
2538           leaf link-tp-id {
2539             type te-tp-id;
2540             mandatory true;
2541             description
2542               "TE Link Termination Point (LTP) identifier.";
2543           }
2544           leaf hop-type {
2545             type te-hop-type;
2546             default "strict";
2547             description
2548               "Strict or loose hop.";
2549           }
2550           leaf direction {
2551             type te-link-direction;
2552             default "outgoing";
2553             description
2554               "Link route object direction.";
2555           }
2556           description
2557             "Numbered link explicit route hop.";
2558           reference
2559             "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
2560              Section 4.3, EXPLICIT_ROUTE in RSVP-TE
2561              RFC 3477: Signalling Unnumbered Links in Resource
2562              ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
2563         }
2564       }
2565       case unnumbered-link-hop {
2566         container unnumbered-link-hop {
2567           leaf link-tp-id {
2568             type te-tp-id;
2569             mandatory true;
2570             description
2571               "TE LTP identifier.  The combination of the TE link ID
2572                and the TE node ID is used to identify an unnumbered
2573                TE link.";
2574           }
2575           leaf node-id {
2576             type te-node-id;
2577             mandatory true;
2578             description
2579               "The identifier of a node in the TE topology.";
2580           }
2581           leaf hop-type {
2582             type te-hop-type;
2583             default "strict";
2584             description
2585               "Strict or loose hop.";
2586           }
2587           leaf direction {
2588             type te-link-direction;
2589             default "outgoing";
2590             description
2591               "Link route object direction.";
2592           }
2593           description
2594             "Unnumbered link explicit route hop.";
2595           reference
2596             "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
2597              Section 4.3, EXPLICIT_ROUTE in RSVP-TE
2598              RFC 3477: Signalling Unnumbered Links in Resource
2599              ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
2600         }
2601       }
2602       case as-number {
2603         container as-number-hop {
2604           leaf as-number {
2605             type inet:as-number;
2606             mandatory true;
2607             description
2608               "The Autonomous System (AS) number.";
2609           }
2610           leaf hop-type {
2611             type te-hop-type;
2612             default "strict";
2613             description
2614               "Strict or loose hop.";
2615           }
2616           description
2617             "AS explicit route hop.";
2618         }
2619       }
2620       case label {
2621         container label-hop {
2622           description
2623             "Label hop type.";
2624           uses te-label;
2625         }
2626         description
2627           "The label explicit route hop type.";
2628       }
2629     }
2630   }
2631
2632   grouping record-route-state {
2633     description
2634       "The Record Route grouping.";
2635     leaf index {
2636       type uint32;
2637       description
2638         "Record Route hop index.  The index is used to
2639          identify an entry in the list.  The order of entries
2640          is defined by the user without relying on key values.";
2641     }
2642     choice type {
2643       description
2644         "The Record Route entry type.";
2645       case numbered-node-hop {
2646         container numbered-node-hop {
2647           description
2648             "Numbered node route hop container.";
2649           leaf node-id {
2650             type te-node-id;
2651             mandatory true;
2652             description
2653               "The identifier of a node in the TE topology.";
2654           }
2655           leaf-list flags {
2656             type path-attribute-flags;
2657             description
2658               "Path attributes flags.";
2659             reference
2660               "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
2661                RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
2662                Tunnels
2663                RFC 4561: Definition of a Record Route Object (RRO)
2664                Node-Id Sub-Object";
2665           }
2666         }
2667         description
2668           "Numbered node route hop.";
2669       }
2670       case numbered-link-hop {
2671         container numbered-link-hop {
2672           description
2673             "Numbered link route hop container.";
2674           leaf link-tp-id {
2675             type te-tp-id;
2676             mandatory true;
2677             description
2678               "Numbered TE LTP identifier.";
2679           }
2680           leaf-list flags {
2681             type path-attribute-flags;
2682             description
2683               "Path attributes flags.";
2684             reference
2685               "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
2686                RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
2687                Tunnels
2688                RFC 4561: Definition of a Record Route Object (RRO)
2689                Node-Id Sub-Object";
2690           }
2691         }
2692         description
2693           "Numbered link route hop.";
2694       }
2695       case unnumbered-link-hop {
2696         container unnumbered-link-hop {
2697           leaf link-tp-id {
2698             type te-tp-id;
2699             mandatory true;
2700             description
2701               "TE LTP identifier.  The combination of the TE link ID
2702                and the TE node ID is used to identify an unnumbered
2703                TE link.";
2704           }
2705           leaf node-id {
2706             type te-node-id;
2707             description
2708               "The identifier of a node in the TE topology.";
2709           }
2710           leaf-list flags {
2711             type path-attribute-flags;
2712             description
2713               "Path attributes flags.";
2714             reference
2715               "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
2716                RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
2717                Tunnels
2718                RFC 4561: Definition of a Record Route Object (RRO)
2719                Node-Id Sub-Object";
2720           }
2721           description
2722             "Unnumbered link Record Route hop.";
2723           reference
2724             "RFC 3477: Signalling Unnumbered Links in Resource
2725              ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
2726         }
2727         description
2728           "Unnumbered link route hop.";
2729       }
2730       case label {
2731         container label-hop {
2732           description
2733             "Label route hop type.";
2734           uses te-label;
2735           leaf-list flags {
2736             type path-attribute-flags;
2737             description
2738               "Path attributes flags.";
2739             reference
2740               "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
2741                RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
2742                Tunnels
2743                RFC 4561: Definition of a Record Route Object (RRO)
2744                Node-Id Sub-Object";
2745           }
2746         }
2747         description
2748           "The label Record Route entry types.";
2749       }
2750     }
2751   }
2752
2753   grouping label-restriction-info {
2754     description
2755       "Label set item information.";
2756     leaf restriction {
2757       type enumeration {
2758         enum inclusive {
2759           description
2760             "The label or label range is inclusive.";
2761         }
2762         enum exclusive {
2763           description
2764             "The label or label range is exclusive.";
2765         }
2766       }
2767       default "inclusive";
2768       description
2769         "Indicates whether the list item is inclusive or exclusive.";
2770     }
2771     leaf index {
2772       type uint32;
2773       description
2774         "The index of the label restriction list entry.";
2775     }
2776     container label-start {
2777       must "(not(../label-end/te-label/direction) and"
2778          + " not(te-label/direction))"
2779          + " or "
2780          + "(../label-end/te-label/direction = te-label/direction)"
2781          + " or "
2782          + "(not(te-label/direction) and"
2783          + " (../label-end/te-label/direction = 'forward'))"
2784          + " or "
2785          + "(not(../label-end/te-label/direction) and"
2786          + " (te-label/direction = 'forward'))" {
2787         error-message "'label-start' and 'label-end' must have the "
2788                     + "same direction.";
2789       }
2790       description
2791         "This is the starting label if a label range is specified.
2792          This is the label value if a single label is specified,
2793          in which case the 'label-end' attribute is not set.";
2794       uses te-label;
2795     }
2796     container label-end {
2797       must "(not(../label-start/te-label/direction) and"
2798          + " not(te-label/direction))"
2799          + " or "
2800          + "(../label-start/te-label/direction = te-label/direction)"
2801          + " or "
2802          + "(not(te-label/direction) and"
2803          + " (../label-start/te-label/direction = 'forward'))"
2804          + " or "
2805          + "(not(../label-start/te-label/direction) and"
2806          + " (te-label/direction = 'forward'))" {
2807         error-message "'label-start' and 'label-end' must have the "
2808                     + "same direction.";
2809       }
2810       description
2811         "This is the ending label if a label range is specified.
2812          This attribute is not set if a single label is specified.";
2813       uses te-label;
2814     }
2815     container label-step {
2816       description
2817         "The step increment between labels in the label range.
2818          The label start/end values will have to be consistent
2819          with the sign of label step.  For example,
2820          'label-start' < 'label-end' enforces 'label-step' > 0
2821          'label-start' > 'label-end' enforces 'label-step' < 0.";
2822       choice technology {
2823         default "generic";
2824         description
2825           "Data-plane technology type.";
2826         case generic {
2827           leaf generic {
2828             type int32;
2829             default "1";
2830             description
2831               "Label range step.";
2832           }
2833         }
2834       }
2835     }
2836     leaf range-bitmap {
2837       type yang:hex-string;
2838       description
2839         "When there are gaps between 'label-start' and 'label-end',
2840          this attribute is used to specify the positions
2841          of the used labels.  This is represented in big endian as
2842          'hex-string'.
2843          The most significant byte in the hex-string is the farthest
2844          to the left in the byte sequence.  Leading zero bytes in the
2845          configured value may be omitted for brevity.
2846          Each bit position in the 'range-bitmap' 'hex-string' maps
2847          to a label in the range derived from 'label-start'.
2848
2849          For example, assuming that 'label-start' = 16000 and
2850          'range-bitmap' = 0x01000001, then:
2851
2852          - bit position (0) is set, and the corresponding mapped
2853            label from the range is 16000 + (0 * 'label-step') or
2854            16000 for default 'label-step' = 1.
2855          - bit position (24) is set, and the corresponding mapped
2856            label from the range is 16000 + (24 * 'label-step') or
2857            16024 for default 'label-step' = 1.";
2858     }
2859   }
2860
2861   grouping label-set-info {
2862     description
2863       "Grouping for the list of label restrictions specifying what
2864        labels may or may not be used.";
2865     container label-restrictions {
2866       description
2867         "The label restrictions container.";
2868       list label-restriction {
2869         key "index";
2870         description
2871           "The absence of the label restrictions container implies
2872            that all labels are acceptable; otherwise, only restricted
2873            labels are available.";
2874         reference
2875           "RFC 7579: General Network Element Constraint Encoding
2876            for GMPLS-Controlled Networks";
2877         uses label-restriction-info;
2878       }
2879     }
2880   }
2881
2882   grouping optimization-metric-entry {
2883     description
2884       "Optimization metrics configuration grouping.";
2885     leaf metric-type {
2886       type identityref {
2887         base path-metric-type;
2888       }
2889       description
2890         "Identifies the 'metric-type' that the path computation
2891          process uses for optimization.";
2892     }
2893     leaf weight {
2894       type uint8;
2895       default "1";
2896       description
2897         "TE path metric normalization weight.";
2898     }
2899     container explicit-route-exclude-objects {
2900       when "../metric-type = "
2901          + "'te-types:path-metric-optimize-excludes'";
2902       description
2903         "Container for the 'exclude route' object list.";
2904       uses path-route-exclude-objects;
2905     }
2906     container explicit-route-include-objects {
2907       when "../metric-type = "
2908          + "'te-types:path-metric-optimize-includes'";
2909       description
2910         "Container for the 'include route' object list.";
2911       uses path-route-include-objects;
2912     }
2913   }
2914
2915   grouping common-constraints {
2916     description
2917       "Common constraints grouping that can be set on
2918        a constraint set or directly on the tunnel.";
2919     uses te-bandwidth {
2920       description
2921         "A requested bandwidth to use for path computation.";
2922     }
2923     leaf link-protection {
2924       type identityref {
2925         base link-protection-type;
2926       }
2927       default "te-types:link-protection-unprotected";
2928       description
2929         "Link protection type required for the links included
2930          in the computed path.";
2931       reference
2932         "RFC 4202: Routing Extensions in Support of
2933          Generalized Multi-Protocol Label Switching (GMPLS)";
2934     }
2935     leaf setup-priority {
2936       type uint8 {
2937         range "0..7";
2938       }
2939       default "7";
2940       description
2941         "TE LSP requested setup priority.";
2942       reference
2943         "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
2944     }
2945     leaf hold-priority {
2946       type uint8 {
2947         range "0..7";
2948       }
2949       default "7";
2950       description
2951         "TE LSP requested hold priority.";
2952       reference
2953         "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
2954     }
2955     leaf signaling-type {
2956       type identityref {
2957         base path-signaling-type;
2958       }
2959       default "te-types:path-setup-rsvp";
2960       description
2961         "TE tunnel path signaling type.";
2962     }
2963   }
2964
2965   grouping tunnel-constraints {
2966     description
2967       "Tunnel constraints grouping that can be set on
2968        a constraint set or directly on the tunnel.";
2969     uses te-topology-identifier;
2970     uses common-constraints;
2971   }
2972
2973   grouping path-constraints-route-objects {
2974     description
2975       "List of route entries to be included or excluded when
2976        performing the path computation.";
2977     container explicit-route-objects-always {
2978       description
2979         "Container for the 'exclude route' object list.";
2980       list route-object-exclude-always {
2981         key "index";
2982         ordered-by user;
2983         description
2984           "List of route objects to always exclude from the path
2985            computation.";
2986         leaf index {
2987           type uint32;
2988           description
2989             "Explicit Route Object index.  The index is used to
2990              identify an entry in the list.  The order of entries
2991              is defined by the user without relying on key values.";
2992         }
2993         uses explicit-route-hop;
2994       }
2995       list route-object-include-exclude {
2996         key "index";
2997         ordered-by user;
2998         description
2999           "List of route objects to include or exclude in the path
3000            computation.";
3001         leaf explicit-route-usage {
3002           type identityref {
3003             base route-usage-type;
3004           }
3005           default "te-types:route-include-object";
3006           description
3007             "Indicates whether to include or exclude the
3008              route object.  The default is to include it.";
3009         }
3010         leaf index {
3011           type uint32;
3012           description
3013             "Route object include-exclude index.  The index is used
3014              to identify an entry in the list.  The order of entries
3015              is defined by the user without relying on key values.";
3016         }
3017         uses explicit-route-hop {
3018           augment "type" {
3019             case srlg {
3020               container srlg {
3021                 description
3022                   "SRLG container.";
3023                 leaf srlg {
3024                   type uint32;
3025                   description
3026                     "SRLG value.";
3027                 }
3028               }
3029               description
3030                 "An SRLG value to be included or excluded.";
3031             }
3032             description
3033               "Augmentation for a generic explicit route for SRLG
3034                exclusion.";
3035           }
3036         }
3037       }
3038     }
3039   }
3040
3041   grouping path-route-include-objects {
3042     description
3043       "List of route objects to be included when performing
3044        the path computation.";
3045     list route-object-include-object {
3046       key "index";
3047       ordered-by user;
3048       description
3049         "List of Explicit Route Objects to be included in the
3050          path computation.";
3051       leaf index {
3052         type uint32;
3053         description
3054           "Route object entry index.  The index is used to
3055            identify an entry in the list.  The order of entries
3056            is defined by the user without relying on key values.";
3057       }
3058       uses explicit-route-hop;
3059     }
3060   }
3061
3062   grouping path-route-exclude-objects {
3063     description
3064       "List of route objects to be excluded when performing
3065        the path computation.";
3066     list route-object-exclude-object {
3067       key "index";
3068       ordered-by user;
3069       description
3070         "List of Explicit Route Objects to be excluded in the
3071          path computation.";
3072       leaf index {
3073         type uint32;
3074         description
3075           "Route object entry index.  The index is used to
3076            identify an entry in the list.  The order of entries
3077            is defined by the user without relying on key values.";
3078       }
3079       uses explicit-route-hop {
3080         augment "type" {
3081           case srlg {
3082             container srlg {
3083               description
3084                 "SRLG container.";
3085               leaf srlg {
3086                 type uint32;
3087                 description
3088                   "SRLG value.";
3089               }
3090             }
3091             description
3092               "An SRLG value to be included or excluded.";
3093           }
3094           description
3095             "Augmentation for a generic explicit route for SRLG
3096              exclusion.";
3097         }
3098       }
3099     }
3100   }
3101
3102   grouping generic-path-metric-bounds {
3103     description
3104       "TE path metric bounds grouping.";
3105     container path-metric-bounds {
3106       description
3107         "TE path metric bounds container.";
3108       list path-metric-bound {
3109         key "metric-type";
3110         description
3111           "List of TE path metric bounds.";
3112         leaf metric-type {
3113           type identityref {
3114             base path-metric-type;
3115           }
3116           description
3117             "Identifies an entry in the list of 'metric-type' items
3118              bound for the TE path.";
3119         }
3120         leaf upper-bound {
3121           type uint64;
3122           default "0";
3123           description
3124             "Upper bound on the end-to-end TE path metric.  A zero
3125              indicates an unbounded upper limit for the specific
3126              'metric-type'.";
3127         }
3128       }
3129     }
3130   }
3131
3132   grouping generic-path-optimization {
3133     description
3134       "TE generic path optimization grouping.";
3135     container optimizations {
3136       description
3137         "The objective function container that includes
3138          attributes to impose when computing a TE path.";
3139       choice algorithm {
3140         description
3141           "Optimizations algorithm.";
3142         case metric {
3143           if-feature "path-optimization-metric";
3144           /* Optimize by metric */
3145           list optimization-metric {
3146             key "metric-type";
3147             description
3148               "TE path metric type.";
3149             uses optimization-metric-entry;
3150           }
3151           /* Tiebreakers */
3152           container tiebreakers {
3153             description
3154               "Container for the list of tiebreakers.";
3155             list tiebreaker {
3156               key "tiebreaker-type";
3157               description
3158                 "The list of tiebreaker criteria to apply on an
3159                  equally favored set of paths, in order to pick
3160                  the best.";
3161               leaf tiebreaker-type {
3162                 type identityref {
3163                   base path-metric-type;
3164                 }
3165                 description
3166                   "Identifies an entry in the list of tiebreakers.";
3167               }
3168             }
3169           }
3170         }
3171         case objective-function {
3172           if-feature "path-optimization-objective-function";
3173           /* Objective functions */
3174           container objective-function {
3175             description
3176               "The objective function container that includes
3177                attributes to impose when computing a TE path.";
3178             leaf objective-function-type {
3179               type identityref {
3180                 base objective-function-type;
3181               }
3182               default "te-types:of-minimize-cost-path";
3183               description
3184                 "Objective function entry.";
3185             }
3186           }
3187         }
3188       }
3189     }
3190   }
3191
3192   grouping generic-path-affinities {
3193     description
3194       "Path affinities grouping.";
3195     container path-affinities-values {
3196       description
3197         "Path affinities represented as values.";
3198       list path-affinities-value {
3199         key "usage";
3200         description
3201           "List of named affinity constraints.";
3202         leaf usage {
3203           type identityref {
3204             base resource-affinities-type;
3205           }
3206           description
3207             "Identifies an entry in the list of value affinity
3208              constraints.";
3209         }
3210         leaf value {
3211           type admin-groups;
3212           default "";
3213           description
3214             "The affinity value.  The default is empty.";
3215         }
3216       }
3217     }
3218     container path-affinity-names {
3219       description
3220         "Path affinities represented as names.";
3221       list path-affinity-name {
3222         key "usage";
3223         description
3224           "List of named affinity constraints.";
3225         leaf usage {
3226           type identityref {
3227             base resource-affinities-type;
3228           }
3229           description
3230             "Identifies an entry in the list of named affinity
3231              constraints.";
3232         }
3233         list affinity-name {
3234           key "name";
3235           leaf name {
3236             type string;
3237             description
3238               "Identifies a named affinity entry.";
3239           }
3240           description
3241             "List of named affinities.";
3242         }
3243       }
3244     }
3245   }
3246
3247   grouping generic-path-srlgs {
3248     description
3249       "Path SRLG grouping.";
3250     container path-srlgs-lists {
3251       description
3252         "Path SRLG properties container.";
3253       list path-srlgs-list {
3254         key "usage";
3255         description
3256           "List of SRLG values to be included or excluded.";
3257         leaf usage {
3258           type identityref {
3259             base route-usage-type;
3260           }
3261           description
3262             "Identifies an entry in a list of SRLGs to either
3263              include or exclude.";
3264         }
3265         leaf-list values {
3266           type srlg;
3267           description
3268             "List of SRLG values.";
3269         }
3270       }
3271     }
3272     container path-srlgs-names {
3273       description
3274         "Container for the list of named SRLGs.";
3275       list path-srlgs-name {
3276         key "usage";
3277         description
3278           "List of named SRLGs to be included or excluded.";
3279         leaf usage {
3280           type identityref {
3281             base route-usage-type;
3282           }
3283           description
3284             "Identifies an entry in a list of named SRLGs to either
3285              include or exclude.";
3286         }
3287         leaf-list names {
3288           type string;
3289           description
3290             "List of named SRLGs.";
3291         }
3292       }
3293     }
3294   }
3295
3296   grouping generic-path-disjointness {
3297     description
3298       "Path disjointness grouping.";
3299     leaf disjointness {
3300       type te-path-disjointness;
3301       description
3302         "The type of resource disjointness.
3303          When configured for a primary path, the disjointness level
3304          applies to all secondary LSPs.  When configured for a
3305          secondary path, the disjointness level overrides the level
3306          configured for the primary path.";
3307     }
3308   }
3309
3310   grouping common-path-constraints-attributes {
3311     description
3312       "Common path constraints configuration grouping.";
3313     uses common-constraints;
3314     uses generic-path-metric-bounds;
3315     uses generic-path-affinities;
3316     uses generic-path-srlgs;
3317   }
3318
3319   grouping generic-path-constraints {
3320     description
3321       "Global named path constraints configuration grouping.";
3322     container path-constraints {
3323       description
3324         "TE named path constraints container.";
3325       uses common-path-constraints-attributes;
3326       uses generic-path-disjointness;
3327     }
3328   }
3329
3330   grouping generic-path-properties {
3331     description
3332       "TE generic path properties grouping.";
3333     container path-properties {
3334       config false;
3335       description
3336         "The TE path properties.";
3337       list path-metric {
3338         key "metric-type";
3339         description
3340           "TE path metric type.";
3341         leaf metric-type {
3342           type identityref {
3343             base path-metric-type;
3344           }
3345           description
3346             "TE path metric type.";
3347         }
3348         leaf accumulative-value {
3349           type uint64;
3350           description
3351             "TE path metric accumulative value.";
3352         }
3353       }
3354       uses generic-path-affinities;
3355       uses generic-path-srlgs;
3356       container path-route-objects {
3357         description
3358           "Container for the list of route objects either returned by
3359            the computation engine or actually used by an LSP.";
3360         list path-route-object {
3361           key "index";
3362           ordered-by user;
3363           description
3364             "List of route objects either returned by the computation
3365              engine or actually used by an LSP.";
3366           leaf index {
3367             type uint32;
3368             description
3369               "Route object entry index.  The index is used to
3370                identify an entry in the list.  The order of entries
3371                is defined by the user without relying on key
3372                values.";
3373           }
3374           uses explicit-route-hop;
3375         }
3376       }
3377     }
3378   }
3379 }