| submodule openconfig-mpls-static { |
| |
| yang-version "1"; |
| |
| belongs-to "openconfig-mpls" { |
| prefix "mpls"; |
| } |
| |
| // import some basic types |
| import openconfig-mpls-types {prefix oc-mplst; } |
| import openconfig-inet-types { prefix inet; } |
| import openconfig-extensions { prefix oc-ext; } |
| |
| |
| // meta |
| organization "OpenConfig working group"; |
| |
| contact |
| "OpenConfig working group |
| netopenconfig@googlegroups.com"; |
| |
| description |
| "Defines static LSP configuration"; |
| |
| oc-ext:openconfig-version "2.4.0"; |
| |
| 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"; |
| } |
| |
| // grouping statements |
| |
| grouping static-lsp-common-config { |
| description |
| "common definitions for static LSPs"; |
| |
| leaf next-hop { |
| type inet:ip-address; |
| description |
| "next hop IP address for the LSP"; |
| } |
| |
| leaf incoming-label { |
| type oc-mplst:mpls-label; |
| description |
| "label value on the incoming packet"; |
| } |
| |
| leaf push-label { |
| type oc-mplst:mpls-label; |
| description |
| "label value to push at the current hop for the |
| LSP"; |
| } |
| } |
| |
| grouping static-lsp-ingress-config { |
| description |
| "Configuration data for ingress LSPs"; |
| |
| uses static-lsp-common-config; |
| } |
| |
| grouping static-lsp-ingress-state { |
| description |
| "Operational state data for ingress LSPs"; |
| } |
| |
| grouping static-lsp-ingress-top { |
| description |
| "Top-level grouping for ingress LSP data"; |
| |
| container ingress { |
| description |
| "Static LSPs for which the router is an |
| ingress node"; |
| |
| container config { |
| description |
| "Configuration data for ingress LSPs"; |
| |
| uses static-lsp-ingress-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data for ingress LSPs"; |
| |
| uses static-lsp-ingress-config; |
| uses static-lsp-ingress-state; |
| } |
| } |
| } |
| |
| grouping static-lsp-transit-config { |
| description |
| "Configuration data for transit LSPs"; |
| |
| uses static-lsp-common-config; |
| } |
| |
| grouping static-lsp-transit-state { |
| description |
| "Operational state data for transit LSPs"; |
| } |
| |
| grouping static-lsp-transit-top { |
| description |
| "Top-level grouping for transit LSP data"; |
| |
| container transit { |
| description |
| "Static LSPs for which the router is an |
| transit node"; |
| |
| container config { |
| description |
| "Configuration data for transit LSPs"; |
| |
| uses static-lsp-transit-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data for transit LSPs"; |
| |
| uses static-lsp-transit-config; |
| uses static-lsp-transit-state; |
| } |
| } |
| } |
| |
| grouping static-lsp-egress-config { |
| description |
| "Configuration data for egress LSPs"; |
| |
| uses static-lsp-common-config; |
| } |
| |
| grouping static-lsp-egress-state { |
| description |
| "Operational state data for egress LSPs"; |
| } |
| |
| grouping static-lsp-egress-top { |
| description |
| "Top-level grouping for egress LSP data"; |
| |
| container egress { |
| description |
| "Static LSPs for which the router is an |
| egress node"; |
| |
| container config { |
| description |
| "Configuration data for egress LSPs"; |
| |
| uses static-lsp-egress-config; |
| } |
| |
| container state { |
| |
| config false; |
| |
| description |
| "Operational state data for egress LSPs"; |
| |
| uses static-lsp-egress-config; |
| uses static-lsp-egress-state; |
| } |
| } |
| } |
| |
| grouping static-lsp-config { |
| description |
| "Configuration data for static LSPs"; |
| |
| leaf name { |
| type string; |
| description |
| "name to identify the LSP"; |
| } |
| } |
| |
| grouping static-lsp-state { |
| description |
| "Operational state data for static LSPs"; |
| |
| } |
| |
| grouping static-lsp-top { |
| description |
| "grouping for top level list of static LSPs"; |
| |
| |
| list static-lsp { |
| key "name"; |
| description |
| "list of defined static LSPs"; |
| |
| leaf name { |
| type leafref { |
| path "../config/name"; |
| } |
| description |
| "Reference the name list key"; |
| } |
| |
| container config { |
| description |
| "Configuration data for the static lsp"; |
| |
| uses static-lsp-config; |
| } |
| |
| container state { |
| config false; |
| |
| description |
| "Operational state data for the static lsp"; |
| |
| uses static-lsp-config; |
| uses static-lsp-state; |
| |
| } |
| |
| // TODO: separation into ingress, transit, egress may help |
| // to figure out what exactly is configured, but need to |
| // consider whether implementations can support the |
| // separation |
| uses static-lsp-ingress-top; |
| uses static-lsp-transit-top; |
| uses static-lsp-egress-top; |
| } |
| } |
| |
| // data definition statements |
| |
| // augment statements |
| |
| |
| } |