diff options
author | Hongjun Ni <hongjun.ni@intel.com> | 2018-12-21 04:48:35 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2018-12-21 04:48:35 +0000 |
commit | 8791f3211bd61d213e4ea4a0af66a14bb2e3a239 (patch) | |
tree | 846a89e6ca81d639d024e5509654766d3581b7ea /src/plugins/yang/openconfig/openconfig-mpls-te.yang | |
parent | de7bb8f2b0cdd2dfeba0586213bd415c9bb3fd18 (diff) | |
parent | 639509ad42f8bd6baf9b6f5b668a9bbfb05108d4 (diff) |
Merge "Add Openconfig YANG modules."
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-mpls-te.yang')
-rw-r--r-- | src/plugins/yang/openconfig/openconfig-mpls-te.yang | 1381 |
1 files changed, 1381 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-mpls-te.yang b/src/plugins/yang/openconfig/openconfig-mpls-te.yang new file mode 100644 index 0000000..e5142f1 --- /dev/null +++ b/src/plugins/yang/openconfig/openconfig-mpls-te.yang @@ -0,0 +1,1381 @@ +submodule openconfig-mpls-te { + + yang-version "1"; + + belongs-to "openconfig-mpls" { + prefix "oc-mpls"; + } + + + // import some basic types + import openconfig-inet-types { prefix inet; } + import openconfig-mpls-rsvp { prefix oc-rsvp; } + import openconfig-mpls-sr { prefix oc-sr; } + import openconfig-mpls-types {prefix oc-mplst; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix yang; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Configuration related to constrained-path LSPs and traffic + engineering. These definitions are not specific to a particular + signaling protocol or mechanism (see related submodules for + signaling protocol-specific configuration)."; + + oc-ext:openconfig-version "3.0.0"; + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // typedef statements + + typedef te-bandwidth-type { + type enumeration { + enum SPECIFIED { + description + "Bandwidth is explicitly specified"; + } + enum AUTO { + description + "Bandwidth is automatically computed"; + } + } + description + "enumerated type for specifying whether bandwidth is + explicitly specified or automatically computed"; + } + + typedef mpls-srlg-flooding-type { + type enumeration { + enum FLOODED_SRLG { + description + "SRLG is flooded in the IGP"; + } + enum STATIC_SRLG { + description + "SRLG is not flooded, the members are + statically configured"; + } + } + description + "Enumerated bype for specifying how the SRLG is flooded"; + } + + typedef mpls-hop-type { + type enumeration { + enum LOOSE { + description + "loose hop in an explicit path"; + } + enum STRICT { + description + "strict hop in an explicit path"; + } + } + description + "enumerated type for specifying loose or strict + paths"; + } + + typedef te-metric-type { + type union { + type enumeration { + enum IGP { + description + "set the LSP metric to track the underlying + IGP metric"; + } + } + type uint32; + } + description + "union type for setting the LSP TE metric to a + static value, or to track the IGP metric"; + } + + typedef cspf-tie-breaking { + type enumeration { + enum RANDOM { + description + "CSPF calculation selects a random path among + multiple equal-cost paths to the destination"; + } + enum LEAST_FILL { + description + "CSPF calculation selects the path with greatest + available bandwidth"; + } + enum MOST_FILL { + description + "CSPF calculation selects the path with the least + available bandwidth"; + } + } + default RANDOM; + description + "type to indicate the CSPF selection policy when + multiple equal cost paths are available"; + } + + + // grouping statements + + grouping te-tunnel-reoptimize-config { + description + "Definition for reoptimize timer configuration"; + + leaf reoptimize-timer { + type uint16; + units seconds; + description + "frequency of reoptimization of + a traffic engineered LSP"; + } + } + + grouping te-lsp-auto-bandwidth-config { + description + "Configuration parameters related to autobandwidth"; + + leaf enabled { + type boolean; + default false; + description + "enables mpls auto-bandwidth on the + lsp"; + } + + leaf min-bw { + type oc-mplst:bandwidth-kbps; + description + "set the minimum bandwidth in Kbps for an + auto-bandwidth LSP"; + } + + leaf max-bw { + type oc-mplst:bandwidth-kbps; + description + "set the maximum bandwidth in Kbps for an + auto-bandwidth LSP"; + } + + leaf adjust-interval { + type uint32; + description + "time in seconds between adjustments to + LSP bandwidth"; + } + + leaf adjust-threshold { + type oc-types:percentage; + description + "percentage difference between the LSP's + specified bandwidth and its current bandwidth + allocation -- if the difference is greater than the + specified percentage, auto-bandwidth adjustment is + triggered"; + } + } + + grouping te-lsp-auto-bandwidth-state { + description + "Operational state parameters relating to auto-bandwidth"; + + leaf interval-high-bw { + type oc-mplst:bandwidth-kbps; + description + "The maximum measured bandwidth during the current + auto-bandwidth adjust interval expressed in kilobits + per second."; + } + } + + grouping te-lsp-overflow-config { + description + "configuration for mpls lsp bandwidth + overflow adjustment"; + + leaf enabled { + type boolean; + default false; + description + "enables mpls lsp bandwidth overflow + adjustment on the lsp"; + } + + leaf overflow-threshold { + type oc-types:percentage; + description + "bandwidth percentage change to trigger + an overflow event"; + + } + + leaf trigger-event-count { + type uint16; + description + "number of consecutive overflow sample + events needed to trigger an overflow adjustment"; + } + } + + grouping te-lsp-underflow-config { + description + "configuration for mpls lsp bandwidth + underflow adjustment"; + + leaf enabled { + type boolean; + default false; + description + "enables bandwidth underflow + adjustment on the lsp"; + } + + leaf underflow-threshold { + type oc-types:percentage; + description + "bandwidth percentage change to trigger + and underflow event"; + } + + leaf trigger-event-count { + type uint16; + description + "number of consecutive underflow sample + events needed to trigger an underflow adjustment"; + } + } + + grouping te-path-placement-constraints-config { + description + "Configuration data for link affinities"; + + leaf-list exclude-group { + type leafref { + path "../../../../../../../../../../te-global-attributes" + + "/mpls-admin-groups/admin-group/admin-group-name"; + } + description + "list of references to named admin-groups to exclude in + path calculation."; + } + + leaf-list include-all-group { + type leafref { + path "../../../../../../../../../../te-global-attributes" + + "/mpls-admin-groups/admin-group/admin-group-name"; + } + description + "list of references to named admin-groups of which all must + be included"; + } + + leaf-list include-any-group { + type leafref { + path "../../../../../../../../../../te-global-attributes" + + "/mpls-admin-groups/admin-group/admin-group-name"; + } + description + "list of references to named admin-groups of which one must + be included"; + } + } + + grouping te-path-placement-constraints-state { + description + "Operational state data for link affinities"; + //TODO: currently a placeholder + } + + grouping te-path-placement-constraints-top { + description + "Top-level grouping "; + + container admin-groups { + description + "Top-level container for include/exclude constraints for + link affinities"; + + container config { + description + "Configuration data "; + + uses te-path-placement-constraints-config; + } + + container state { + config false; + + description + "Operational state data "; + + uses te-path-placement-constraints-config; + uses te-path-placement-constraints-state; + } + } + } + + grouping te-tunnel-protection-config { + description + "Configuration parameters related to LSP + protection"; + leaf protection-style-requested { + type identityref { + base oc-mplst:PROTECTION_TYPE; + } + default oc-mplst:UNPROTECTED; + description + "style of mpls frr protection desired: can be + link, link-node or unprotected."; + } + } + + grouping explicit-route-subobject-config { + description + "The explicit route subobject grouping"; + + leaf address { + type inet:ip-address; + description + "router hop for the LSP path"; + } + + leaf hop-type { + type mpls-hop-type; + description + "strict or loose hop"; + } + + leaf index { + type uint8 { + range "0..255"; + } + description + "Index of this explicit route object to express + the order of hops in the path"; + } + + } + + grouping named-explicit-path-config { + description + "Configuration parameters relating to a named + explicit path"; + + leaf name { + type string; + description + "A string name that uniquely identifies an explicit + path"; + } + } + + // Explicit paths config somewhat following the IETF model + grouping explicit-paths-top { + description + "Top level global explicit path configuration + grouping"; + + container named-explicit-paths { + description + "Enclosing container for the named explicit paths"; + list named-explicit-path { + key "name"; + description + "A list of explicit paths"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "A string name that uniquely identifies + an explicit path"; + } + + container config { + description + "Configuration parameters relating to named explicit + paths"; + uses named-explicit-path-config; + uses oc-sr:sr-path-attributes-config; + } + + container state { + config false; + description + "Operational state parameters relating to the named + explicit paths"; + uses named-explicit-path-config; + uses oc-sr:sr-path-attributes-config; + } + + container explicit-route-objects { + description + "Enclosing container for EROs"; + + list explicit-route-object { + key "index"; + description + "List of explicit route objects"; + + leaf index { + type leafref { + path "../config/index"; + } + + description + "Index of this explicit route object, + to express the order of hops in path"; + } + + container config { + description + "Configuration parameters relating to an explicit + route"; + uses explicit-route-subobject-config; + } + + + container state { + config false; + description + "State parameters relating to an explicit route"; + uses explicit-route-subobject-config; + } + } + } + } + } + } + + grouping mpls-te-srlg-config { + description + "Configuration of various attributes associated + with the SRLG"; + + leaf name { + type string; + description + "SRLG group identifier"; + } + + leaf value { + type uint32; + description + "group ID for the SRLG"; + } + + leaf cost { + type uint32; + description + "The cost of the SRLG to the computation + algorithm"; + } + + leaf flooding-type { + type mpls-srlg-flooding-type; + default FLOODED_SRLG; + description + "The type of SRLG, either flooded in the IGP or + statically configured"; + } + } + + grouping mpls-te-srlg-members-config { + description + "Configuration of the membership of the SRLG"; + + leaf from-address { + type inet:ip-address; + description + "IP address of the a-side of the SRLG link"; + } + + leaf to-address { + type inet:ip-address; + description + "IP address of the z-side of the SRLG link"; + } + } + + grouping mpls-te-srlg-top { + description + "Top level grouping for MPLS shared + risk link groups."; + + container srlgs { + description + "Shared risk link groups attributes"; + list srlg { + key "name"; + description + "List of shared risk link groups"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "The SRLG group identifier"; + } + + container config { + description + "Configuration parameters related to the SRLG"; + uses mpls-te-srlg-config; + } + + container state { + config false; + description + "State parameters related to the SRLG"; + uses mpls-te-srlg-config; + } + + container static-srlg-members { + when "../config/flooding-type = 'STATIC_SRLG'" { + description + "Include this container for static + SRLG specific configuration"; + } + description + "SRLG members for static (not flooded) SRLGs "; + + list members-list { + key "from-address"; + description + "List of SRLG members, which are expressed + as IP address endpoints of links contained in the + SRLG"; + + leaf from-address { + type leafref { + path "../config/from-address"; + // Requires YANG 1.1 + //require-instance true; + } + description + "The from address of the link in the SRLG"; + } + + container config { + description + "Configuration parameters relating to the + SRLG members"; + uses mpls-te-srlg-members-config; + } + + container state { + config false; + description + "State parameters relating to the SRLG + members"; + uses mpls-te-srlg-members-config; + } + } + } + } + } + } + + grouping te-global-tunnel-config { + description + "Configuration parameters relevant to a single + traffic engineered tunnel."; + + leaf name { + type string; + description + "The tunnel name"; + } + + leaf type { + type identityref { + base oc-mplst:TUNNEL_TYPE; + } + description + "Tunnel type, p2p or p2mp"; + } + + leaf signaling-protocol { + type identityref { + base oc-mplst:PATH_SETUP_PROTOCOL; + } + description + "Signaling protocol used to set up this tunnel"; + } + + leaf description { + type string; + description + "optional text description for the tunnel"; + } + + leaf admin-status { + type identityref { + base oc-mplst:TUNNEL_ADMIN_STATUS; + } + default oc-mplst:ADMIN_UP; + description + "TE tunnel administrative state."; + } + + leaf preference { + type uint8 { + range "1..255"; + } + description + "Specifies a preference for this tunnel. + A lower number signifies a better preference"; + } + + leaf metric-type { + type identityref { + base oc-mplst:LSP_METRIC_TYPE; + } + default oc-mplst:LSP_METRIC_INHERITED; + description + "The type of metric specification that should be used to set + the LSP(s) metric"; + } + + leaf metric { + type int32; + description + "The value of the metric that should be specified. The value + supplied in this leaf is used in conjunction with the metric + type to determine the value of the metric used by the system. + Where the metric-type is set to LSP_METRIC_ABSOLUTE - the + value of this leaf is used directly; where it is set to + LSP_METRIC_RELATIVE, the relevant (positive or negative) + offset is used to formulate the metric; where metric-type + is LSP_METRIC_INHERITED, the value of this leaf is not + utilised"; + } + + leaf shortcut-eligible { + type boolean; + default "true"; + description + "Whether this LSP is considered to be eligible for us as a + shortcut in the IGP. In the case that this leaf is set to + true, the IGP SPF calculation uses the metric specified to + determine whether traffic should be carried over this LSP"; + } + + leaf protection-style-requested { + type identityref { + base oc-mplst:PROTECTION_TYPE; + } + default oc-mplst:UNPROTECTED; + description + "style of mpls frr protection desired: can be + link, link-node or unprotected."; + } + + uses te-tunnel-reoptimize-config; + uses oc-rsvp:rsvp-p2p-tunnel-attributes-config; + + } + + grouping tunnel-p2p-attributes-config { + description + "Configuration related to p2p LSPs"; + leaf destination { + type inet:ip-address; + description + "P2P tunnel destination address"; + } + } + + grouping p2p-path-state { + description + "Operational state parameters for p2p paths"; + + leaf-list associated-rsvp-sessions { + type leafref { + path "../../../../../../../../../signaling-protocols/" + + "rsvp-te/sessions/session/local-index"; + } + description + "If the signalling protocol specified for this path is + RSVP-TE, this leaf-list provides a reference to the associated + sessions within the RSVP-TE protocol sessions list, such + that details of the signaling can be retrieved. More than + one session may exist during re-signalling such as + make-before-break."; + } + + leaf spf-metric { + type uint64; + description + "The IGP metric of the shortest path to the LSP destination. + This value is used to compare the current metric of the + constrained path to the shortest path that is available in + the network topology."; + } + + leaf cspf-metric { + type uint64; + description + "The IGP metric of the path currently used by the LSP. + This value is used to represent the metric of the path + used by the LSP following the execution of the CSPF + algorithm and signalling of the LSP."; + } + } + + grouping p2p-path-config { + description + "Configuration parameters for p2p paths"; + + leaf name { + type string; + description + "Path name"; + } + + leaf path-computation-method { + type identityref { + base oc-mplst:PATH_COMPUTATION_METHOD; + } + default oc-mplst:LOCALLY_COMPUTED; + description + "The method used for computing the path, either + locally computed, queried from a server or not + computed at all (explicitly configured)."; + } + + leaf use-cspf { + when "../path-computation-method = 'LOCALLY_COMPUTED'" { + description + "The use of cspf when the path-computation method is + local computation"; + } + type boolean; + description + "Flag to enable CSPF for locally computed LSPs"; + } + + leaf cspf-tiebreaker { + when "../path-computation-method = 'LOCALLY_COMPUTED'" { + description + "The cspf tiebreaking method when the path is + locally computed"; + } + type cspf-tie-breaking; + description + "Determine the tie-breaking method to choose between + equally desirable paths during CSFP computation"; + } + + + leaf path-computation-server { + when "../path-computation-method = 'EXTERNALLY_QUERIED'" { + description + "The path-computation server when the path is + externally queried"; + } + type inet:ip-address; + description + "Address of the external path computation + server"; + } + + leaf explicit-path-name { + when "../path-computation-method = 'EXPLICITLY_DEFINED'" { + description + "The name of the explicitly defined path used"; + } + + type leafref { + path "../../../../../../../" + + "named-explicit-paths/named-explicit-path/" + + "config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "reference to a defined path"; + } + + leaf preference { + type uint8 { + range "1..255"; + } + description + "Specifies a preference for this path. The lower the + number higher the preference"; + } + + uses oc-rsvp:rsvp-p2p-path-attributes-config; + } + + + grouping te-tunnel-p2p-top { + description + "Top level grouping for p2p configuration"; + + container p2p-tunnel-attributes { + when "../config/type = 'P2P'" { + description + "Include this container for LSPs of type P2P"; + } + description + "Parameters related to LSPs of type P2P"; + + container config { + description + "Configuration parameters for P2P LSPs"; + uses tunnel-p2p-attributes-config; + } + + container state { + config false; + description + "State parameters for P2P LSPs"; + uses tunnel-p2p-attributes-config; + } + + uses p2p-primary-paths-top; + uses p2p-secondary-paths-top; + } + } + + + grouping te-tunnel-state { + description + "Counters and statistical data relevent to a single + tunnel."; + + leaf oper-status { + type identityref { + base oc-mplst:LSP_OPER_STATUS; + } + description + "The operational status of the TE tunnel"; + } + + leaf role { + type identityref { + base oc-mplst:LSP_ROLE; + } + description + "The lsp role at the current node, whether it is headend, + transit or tailend."; + } + + leaf auto-generated { + type boolean; + description + "If the LSP was auto-generated by the system this leaf + should be set to true. Examples of auto-generated LSPs + are dynamically created backup LSPs to meet a FRR + policy."; + } + + container counters { + description + "State data for MPLS label switched paths. This state + data is specific to a single label switched path."; + + leaf bytes { + type yang:counter64; + description + "Number of bytes that have been forwarded over the + label switched path."; + } + + leaf packets { + type yang:counter64; + description + "Number of pacets that have been forwarded over the + label switched path."; + } + + leaf path-changes { + type yang:counter64; + description + "Number of path changes for the label switched path"; + } + + leaf state-changes { + type yang:counter64; + description + "Number of state changes for the label switched path"; + } + + leaf online-time { + type oc-types:timeticks64; + description + "Indication of the time the label switched path + transitioned to an Oper Up or in-service state. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf current-path-time { + type oc-types:timeticks64; + description + "Indicates the time the LSP switched onto its + current path. The value is reset upon a LSP path + change. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + + } + + leaf next-reoptimization-time { + type oc-types:timeticks64; + description + "Indicates the next scheduled time the LSP + will be reoptimized. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + + } + } + } + + grouping te-tunnel-bandwidth-config { + description + "Configuration parameters related to bandwidth for a tunnel"; + + leaf specification-type { + type te-bandwidth-type; + default SPECIFIED; + description + "The method used for settign the bandwidth, either explicitly + specified or configured"; + } + + leaf set-bandwidth { + when "../specification-type = 'SPECIFIED'" { + description + "The bandwidth value when bandwidth is explicitly + specified"; + } + type oc-mplst:bandwidth-kbps; + description + "set bandwidth explicitly, e.g., using + offline calculation"; + } + } + + grouping te-tunnel-bandwidth-state { + description + "Operational state parameters relating to bandwidth for a tunnel"; + + leaf signaled-bandwidth { + type oc-mplst:bandwidth-kbps; + description + "The currently signaled bandwidth of the LSP. In the case where + the bandwidth is specified explicitly, then this will match the + value of the set-bandwidth leaf; in cases where the bandwidth is + dynamically computed by the system, the current value of the + bandwidth should be reflected."; + } + } + + grouping te-tunnel-bandwidth-top { + description + "Top level grouping for specifying bandwidth for a tunnel"; + + container bandwidth { + description + "Bandwidth configuration for TE LSPs"; + + container config { + description + "Configuration parameters related to bandwidth on TE + tunnels:"; + uses te-tunnel-bandwidth-config; + } + + container state { + config false; + description + "State parameters related to bandwidth + configuration of TE tunnels"; + uses te-tunnel-bandwidth-config; + uses te-tunnel-bandwidth-state; + } + + container auto-bandwidth { + when "../config/specification-type = 'AUTO'" { + description + "Include this container for auto bandwidth + specific configuration"; + } + description + "Parameters related to auto-bandwidth"; + + container config { + description + "Configuration parameters relating to MPLS + auto-bandwidth on the tunnel."; + uses te-lsp-auto-bandwidth-config; + } + + container state { + config false; + description + "State parameters relating to MPLS + auto-bandwidth on the tunnel."; + uses te-lsp-auto-bandwidth-config; + uses te-lsp-auto-bandwidth-state; + } + + container overflow { + description + "configuration of MPLS overflow bandwidth + adjustement for the LSP"; + + container config { + description + "Config information for MPLS overflow bandwidth + adjustment"; + uses te-lsp-overflow-config; + } + + container state { + config false; + description + "Config information for MPLS overflow bandwidth + adjustment"; + uses te-lsp-overflow-config; + } + } + + container underflow { + description + "configuration of MPLS underflow bandwidth + adjustement for the LSP"; + + container config { + description + "Config information for MPLS underflow bandwidth + adjustment"; + uses te-lsp-underflow-config; + } + + container state { + config false; + description + "State information for MPLS underflow bandwidth + adjustment"; + uses te-lsp-underflow-config; + } + } + } + } + } + + grouping p2p-path-candidate-secondary-path-config { + description + "Configuration parameters relating to a secondary path which + is a candidate for a particular primary path"; + + leaf secondary-path { + type leafref { + path "../../../../../../p2p-secondary-paths/" + + "p2p-secondary-path/config/name"; + } + description + "A reference to the secondary path that should be utilised + when the containing primary path option is in use"; + } + + leaf priority { + type uint16; + description + "The priority of the specified secondary path option. Higher + priority options are less preferable - such that a secondary + path reference with a priority of 0 is the most preferred"; + } + } + + grouping p2p-path-candidate-secondary-path-state { + description + "Operational state parameters relating to a secondary path + which is a candidate for a particular primary path"; + + leaf active { + type boolean; + description + "Indicates the current active path option that has + been selected of the candidate secondary paths"; + } + } + + grouping p2p-primary-paths-top { + description + "Top level grouping for p2p primary paths"; + + container p2p-primary-path { + description + "Primary paths associated with the LSP"; + + list p2p-primary-path { + key "name"; + description + "List of p2p primary paths for a tunnel"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "Path name"; + } + + container config { + description + "Configuration parameters related to paths"; + uses p2p-path-config; + } + + container state { + config false; + description + "State parameters related to paths"; + uses p2p-path-config; + uses p2p-path-state; + } + + container candidate-secondary-paths { + description + "The set of candidate secondary paths which may be used + for this primary path. When secondary paths are specified + in the list the path of the secondary LSP in use must be + restricted to those path options referenced. The + priority of the secondary paths is specified within the + list. Higher priority values are less preferred - that is + to say that a path with priority 0 is the most preferred + path. In the case that the list is empty, any secondary + path option may be utilised when the current primary path + is in use."; + + list candidate-secondary-path { + key "secondary-path"; + + description + "List of secondary paths which may be utilised when the + current primary path is in use"; + + leaf secondary-path { + type leafref { + path "../config/secondary-path"; + } + description + "A reference to the secondary path option reference + which acts as the key of the candidate-secondary-path + list"; + } + + container config { + description + "Configuration parameters relating to the candidate + secondary path"; + + uses p2p-path-candidate-secondary-path-config; + } + + container state { + config false; + description + "Operational state parameters relating to the candidate + secondary path"; + + uses p2p-path-candidate-secondary-path-config; + uses p2p-path-candidate-secondary-path-state; + } + } + } + + uses te-path-placement-constraints-top; + + } + } + } + + grouping p2p-secondary-paths-top { + description + "Top level grouping for p2p secondary paths"; + + container p2p-secondary-paths { + description + "Secondary paths for the LSP"; + + list p2p-secondary-path { + key "name"; + description + "List of p2p primary paths for a tunnel"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "Path name"; + } + + container config { + description + "Configuration parameters related to paths"; + uses p2p-path-config; + } + + container state { + config false; + description + "State parameters related to paths"; + uses p2p-path-config; + uses p2p-path-state; + } + + uses te-path-placement-constraints-top; + } + } + } + + grouping te-tunnels-top { + description + "Top level grouping for TE tunnels"; + + container tunnels { + description + "Enclosing container for tunnels"; + list tunnel { + key "name"; + description + "List of TE tunnels. This list contains only the LSPs that the + current device originates (i.e., for which it is the head-end). + Where the signaling protocol utilised for an LSP allows a mid-point + or tail device to be aware of the LSP (e.g., RSVP-TE), then the + associated sessions are maintained per protocol"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "The tunnel name"; + } + + container config { + description + "Configuration parameters related to TE tunnels:"; + uses te-global-tunnel-config; + } + + container state { + config false; + description + "State parameters related to TE tunnels"; + uses te-global-tunnel-config; + uses te-tunnel-state; + + } + + uses te-tunnel-bandwidth-top; + uses te-tunnel-p2p-top; + // TODO - add the p2mp configuration + } + } + } + +// data definition statements + +// augment statements + +// rpc statements + +// notification statements + +} |