summaryrefslogtreecommitdiffstats
path: root/mpls/api/src/main/yang/hc2vpp-ietf-mpls@2017-07-02.yang
diff options
context:
space:
mode:
Diffstat (limited to 'mpls/api/src/main/yang/hc2vpp-ietf-mpls@2017-07-02.yang')
-rw-r--r--mpls/api/src/main/yang/hc2vpp-ietf-mpls@2017-07-02.yang397
1 files changed, 397 insertions, 0 deletions
diff --git a/mpls/api/src/main/yang/hc2vpp-ietf-mpls@2017-07-02.yang b/mpls/api/src/main/yang/hc2vpp-ietf-mpls@2017-07-02.yang
new file mode 100644
index 000000000..7aa1a5c35
--- /dev/null
+++ b/mpls/api/src/main/yang/hc2vpp-ietf-mpls@2017-07-02.yang
@@ -0,0 +1,397 @@
+module hc2vpp-ietf-mpls {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-mpls";
+
+ prefix "mpls";
+
+/*
+ TODO: changed to modified version of ietf-routing that we use
+ Set back to ietf-routing after HC2VPP-253 is resolved.
+*/
+ import hc2vpp-ietf-routing {
+ prefix "rt";
+ }
+
+ import ietf-interfaces {
+ prefix "if";
+ }
+
+ import hc2vpp-ietf-routing-types {
+ prefix "rt-types";
+ }
+
+ organization "IETF MPLS Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/mpls/>
+
+ WG List: <mailto:mpls@ietf.org>
+
+ WG Chair: Loa Andersson
+ <mailto:loa@pi.nu>
+
+ WG Chair: Ross Callon
+ <mailto:rcallon@juniper.net>
+
+ WG Chair: George Swallow
+ <mailto:swallow.ietf@gmail.com>
+
+ Editor: Tarek Saad
+ <mailto:tsaad@cisco.com>
+
+ Editor: Kamran Raza
+ <mailto:skraza@cisco.com>
+
+ Editor: Rakesh Gandhi
+ <mailto:rgandhi@cisco.com>
+
+ Editor: Xufeng Liu
+ <mailto: xufeng.liu.ietf@gmail.com>
+
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+
+ Editor: Himanshu Shah
+ <mailto:hshah@ciena.com>
+
+ Editor: Igor Bryskin
+ <mailto: Igor.Bryskin@huawei.com>
+
+ Editor: Xia Chen
+ <mailto:jescia.chenxia@huawei.com>
+
+ Editor: Raqib Jones
+ <mailto:raqib@Brocade.com>
+
+ Editor: Bin Wen
+ <mailto:Bin_Wen@cable.comcast.com>";
+
+ description
+ "This YANG module defines the essential components for the
+ management of the MPLS subsystem.";
+
+ revision "2017-07-02" {
+ description
+ "Latest revision:
+ - Addressed MPLS-RT review comments";
+ reference "RFC 3031: A YANG Data Model for base MPLS";
+ }
+
+ /* Identities */
+
+ identity mpls {
+ base rt:address-family;
+ description
+ "This identity represents the MPLS address family.";
+ }
+
+ identity label-block-alloc-mode {
+ description
+ "Base identity label-block allocation mode";
+ }
+
+ identity label-block-alloc-mode-manager {
+ base label-block-alloc-mode;
+ description
+ "Label block allocation on reserved block
+ is managed by label manager";
+ }
+
+ identity label-block-alloc-mode-application {
+ base label-block-alloc-mode;
+ description
+ "Label block allocation on reserved block
+ is managed by application";
+ }
+
+ typedef nhlfe-role {
+ type enumeration {
+ enum PRIMARY {
+ description
+ "Next-hop acts as primary traffic carrying";
+ }
+ enum BACKUP {
+ description
+ "Next-hop acts as backup";
+ }
+ enum PRIMARY_AND_BACKUP {
+ description
+ "Next-hop acts as primary and backup simultaneously";
+ }
+ }
+ description "The next-hop role";
+ }
+
+ grouping nhlfe-simple-contents {
+ description
+ "MPLS simple NHLFE contents";
+ list remote-labels {
+ key "index";
+ description "Remote label list";
+ leaf index {
+ type uint8 {
+ range "0..255";
+ }
+ description
+ "Index of the label. Index 0 indicates
+ top of the label stack";
+ }
+ leaf label {
+ type rt-types:mpls-label;
+ description
+ "The outgoing MPLS labels to impose";
+ }
+ }
+ }
+
+ grouping nhlfe-contents {
+ description
+ "MPLS NHLFE contents";
+ leaf index {
+ type string;
+ description
+ "A user-specified identifier utilised to uniquely
+ reference the next-hop entry in the next-hop list.
+ The value of this index has no semantic meaning
+ other than for referencing the entry.";
+ }
+
+ leaf backup-index {
+ type string;
+ description
+ "A user-specified identifier utilised to uniquely
+ reference the backup next-hop entry in the NHLFE list.
+ The value of this index has no semantic meaning
+ other than for referencing the entry.";
+ }
+
+ leaf loadshare {
+ type uint16;
+ description
+ "This value is used to compute a loadshare to perform un-equal
+ load balancing when multiple outgoing next-hop(s) are
+ specified. A share is computed as a ratio of this number to the
+ total under all next-hops(s).";
+ }
+
+ leaf role {
+ type nhlfe-role;
+ description "NHLFE role";
+ }
+ uses nhlfe-simple-contents;
+ }
+
+ grouping interface-mpls_config {
+ description "MPLS interface contents grouping";
+ leaf enabled {
+ type boolean;
+ description
+ "'true' if mpls encapsulation is enabled on the
+ interface. 'false' if mpls encapsulation is enabled
+ on the interface.";
+ }
+ leaf mtu {
+ type uint32;
+ description
+ "MPLS Maximum Transmission Unit (MTU)";
+ }
+ }
+
+ grouping interfaces-mpls {
+ description "List of MPLS interfaces";
+ list interface {
+ key "name";
+ description "List of MPLS interfaces";
+ leaf name {
+ type if:interface-ref;
+ description
+ "The name of a configured MPLS interface";
+ }
+ container config {
+ description "Holds intended configuration";
+ uses interface-mpls_config;
+ }
+ container state {
+ config false;
+ description "Holds inuse configuration";
+ uses interface-mpls_config;
+ }
+ }
+ }
+
+ grouping label-block_config {
+ description "Label-block configuration items";
+ leaf index {
+ type string;
+ description
+ "A user-specified identifier utilised to uniquely
+ reference the next-hop entry in the next-hop list.
+ The value of this index has no semantic meaning
+ other than for referencing the entry.";
+ }
+ leaf start-label {
+ type rt-types:mpls-label;
+ description "Label-block start";
+ }
+ leaf end-label {
+ type rt-types:mpls-label;
+ description "Label-block end";
+ }
+ leaf block-allocation-mode {
+ type identityref {
+ base label-block-alloc-mode;
+ }
+ description "Label-block allocation mode";
+ }
+ }
+
+ grouping label-block_state {
+ description "Label-block state items";
+ leaf free-labels-count {
+ when
+ "../block-allocation-mode = 'label-block-alloc-mode-manager'";
+ type uint32;
+ description "Label-block free labels count";
+ }
+ leaf inuse-labels-count {
+ when
+ "../block-allocation-mode = 'label-block-alloc-mode-manager'";
+ type uint32;
+ description "Label-block inuse labels count";
+ }
+ }
+
+ grouping globals_config {
+ description "MPLS global configuration leafs grouping";
+ leaf ttl-propagate {
+ type boolean;
+ default 'true';
+ description "Propagate TTL between IP and MPLS";
+ }
+ }
+
+ grouping globals {
+ description "MPLS global configuration grouping";
+ container config {
+ description "Holds intended configuration";
+ uses globals_config;
+ }
+ container state {
+ config false;
+ description "Holds inuse configuration";
+ uses globals_config;
+ }
+ }
+ grouping label-blocks {
+ description "Label-block allocation grouping";
+ container label-blocks {
+ description "Label-block allocation container";
+ list label-block {
+ must "start-label >= end-label" {
+ error-message "start-label can not be less than end-label";
+ }
+ key index;
+ unique "start-label end-label";
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+ description "Label-block index";
+ }
+ leaf start-label {
+ type leafref {
+ path "../config/start-label";
+ }
+ description
+ "Label-block start label reference";
+ }
+ leaf end-label {
+ type leafref {
+ path "../config/end-label";
+ }
+ description
+ "Label-block end label reference";
+ }
+ description "List of MPLS label-blocks";
+ container config {
+ description "Holds intended configuration";
+ uses label-block_config;
+ }
+ container state {
+ config false;
+ description "Holds inuse configuration";
+ uses label-block_config;
+ uses label-block_state;
+ }
+ }
+ }
+ }
+
+ augment "/rt:routing" {
+ description "MPLS augmentation.";
+ container mpls {
+ description
+ "MPLS container, to be used as an augmentation target node
+ other MPLS sub-features config, e.g. MPLS static LSP, MPLS
+ LDP LSPs, and Trafic Engineering MPLS LSP Tunnels, etc.";
+ uses globals;
+ uses label-blocks;
+ uses interfaces-mpls;
+ }
+ }
+
+ /* State data */
+ augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" {
+ description
+ "This leaf augments an IPv4 unicast route.";
+ leaf local-label {
+ type rt-types:mpls-label;
+ description
+ "MPLS local label.";
+ }
+ }
+/*
+ TODO: we use older routing model which does not define next-hop container under route.
+ Uncomment following augmentation after HC2VPP-253 is resolved.
+
+ augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/"
+ + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" {
+ description
+ "Augment 'simple-next-hop' case in IPv4 unicast routes.";
+ uses nhlfe-simple-contents;
+ }
+
+ augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route/"
+ + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/"
+ + "rt:next-hop-list/rt:next-hop" {
+ description
+ "This leaf augments the 'next-hop-list' case of IPv4 unicast
+ routes.";
+ uses nhlfe-contents;
+ }
+
+ */
+
+/*
+ TODO(HC2VPP-253): we use older routing model which does not define active-route
+ as action but as an RPC.
+ Even after bump to ietf-routing@2016-08-18, we would fail due to
+ https://jira.opendaylight.org/browse/YANGTOOLS-822
+
+ augment
+ "/rt:routing-state/rt:ribs/rt:rib/rt:active-route/rt:input" {
+ description
+ "This augment adds the input parameter of the 'active-route'
+ action.";
+ uses nhlfe-contents;
+ }
+
+ augment "/rt:routing-state/rt:ribs/rt:rib/rt:active-route/"
+ + "rt:output/rt:route" {
+ description
+ "This augment adds the destination prefix to the reply of the
+ 'active-route' action.";
+ uses nhlfe-contents;
+ }
+*/
+}