summaryrefslogtreecommitdiffstats
path: root/nsh/api/src/main/yang/vpp-nsh.yang
diff options
context:
space:
mode:
Diffstat (limited to 'nsh/api/src/main/yang/vpp-nsh.yang')
-rw-r--r--nsh/api/src/main/yang/vpp-nsh.yang265
1 files changed, 265 insertions, 0 deletions
diff --git a/nsh/api/src/main/yang/vpp-nsh.yang b/nsh/api/src/main/yang/vpp-nsh.yang
new file mode 100644
index 000000000..50dfe8e68
--- /dev/null
+++ b/nsh/api/src/main/yang/vpp-nsh.yang
@@ -0,0 +1,265 @@
+module vpp-nsh {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:vpp:nsh";
+ prefix "vpp-nsh";
+
+ revision "2016-06-24" {
+ description "Initial revision of vpp-nsh model";
+ }
+
+ import iana-if-type {
+ prefix "ianaift";
+ }
+ import ietf-interfaces {
+ prefix "if";
+ }
+ import ietf-yang-types {
+ prefix "yang";
+ }
+ import ietf-inet-types {
+ prefix "inet";
+ }
+ import yang-ext {
+ prefix "ext";
+ }
+ import v3po {
+ prefix "v3po";
+ }
+ /*
+ * Defines the supported next protocols that can be used for
+ * NSH next-protocol field.
+ */
+ identity next-protocol {
+ description "Base identity from which all nsh next protocols
+ are derived from";
+ }
+
+ identity ipv4 {
+ base next-protocol;
+ description
+ "Support ipv4 to act as next protocol";
+ }
+
+ identity ipv6 {
+ base next-protocol;
+ description
+ "Support ipv6 to act as next protocol";
+ }
+
+ identity ethernet {
+ base next-protocol;
+ description
+ "Support ethernet to act as next protocol";
+ }
+
+ typedef nsh-next-protocol {
+ type identityref {
+ base "next-protocol";
+ }
+ description "Identifies a specific next protocol for nsh";
+ }
+
+ /*
+ * Defines the supported encap type.
+ */
+ identity encap-type {
+ description "encap type";
+ }
+
+ identity vxlan-gpe-encap-type {
+ base "encap-type";
+ description "vxlan-gpe encap type";
+ }
+
+ identity vxlan-encap-type {
+ base "encap-type";
+ description "vxlan encap type";
+ }
+
+ typedef nsh-encap-type {
+ type identityref {
+ base "encap-type";
+ }
+ }
+
+ /*
+ * Defines the supported MD-types.
+ */
+ identity md-type {
+ description "md type";
+ }
+
+ identity md-type1 {
+ base "md-type";
+ description "nsh md-type1";
+ }
+
+ identity md-type2 {
+ base "md-type";
+ description "nsh md-type2";
+ }
+
+ typedef nsh-md-type {
+ type identityref {
+ base "md-type";
+ }
+ }
+
+ grouping nsh-md-type1-attributes {
+ leaf c1 {
+ type uint32;
+ }
+ leaf c2 {
+ type uint32;
+ }
+ leaf c3 {
+ type uint32;
+ }
+ leaf c4 {
+ type uint32;
+ }
+ }
+
+ grouping nsh-md-type2-attributes {
+
+ }
+
+ grouping nsh-entry-base-attributes {
+ leaf name {
+ type string;
+ description "NSH Entry Name";
+ }
+ leaf nsp {
+ type uint32 {
+ range "0..16777215";
+ }
+ }
+ leaf nsi {
+ type uint8 {
+ range "1..255";
+ }
+ }
+ leaf md-type {
+ type nsh-md-type;
+ }
+ leaf version {
+ type uint8;
+ }
+ leaf length {
+ type uint8;
+ }
+ leaf next-protocol {
+ type nsh-next-protocol;
+ }
+ }
+
+ grouping nsh-map-base-attributes {
+ leaf name {
+ type string;
+ description "NSH Map Name";
+ }
+ leaf nsp {
+ type uint32 {
+ range "0..16777215";
+ }
+ }
+ leaf nsi {
+ type uint8 {
+ range "1..255";
+ }
+ }
+ leaf mapped-nsp {
+ type uint32 {
+ range "0..16777215";
+ }
+ }
+ leaf mapped-nsi {
+ type uint8 {
+ range "1..255";
+ }
+ }
+ leaf encap-type {
+ type nsh-encap-type;
+ }
+ }
+
+ container nsh {
+ description
+ "NSH config data";
+
+ container nsh-entries {
+ list nsh-entry {
+ key "name";
+
+ uses nsh-entry-base-attributes;
+
+ description
+ "nsh-entry configuration";
+ }
+ }
+
+ container nsh-maps {
+ list nsh-map {
+ key "name";
+
+ uses nsh-map-base-attributes;
+
+ description
+ "nsh-map configuration";
+ }
+ }
+ }
+
+ augment /nsh/nsh-entries/nsh-entry {
+ ext:augment-identifier nsh-entry-md-type-augment;
+ when "/md-type = 'vpp-nsh:md-type1' ";
+ uses nsh-md-type1-attributes;
+ }
+
+ augment /nsh/nsh-entries/nsh-entry {
+ ext:augment-identifier nsh-entry-md-type-augment;
+ when "/md-type = 'vpp-nsh:md-type2' ";
+ uses nsh-md-type2-attributes;
+ }
+
+ augment /nsh/nsh-maps/nsh-map {
+ ext:augment-identifier nsh-vxlan-gpe-encap-augment;
+ when "/encap-type = 'vpp-nsh:vxlan-gpe-encap-type' ";
+ uses v3po:vxlan-gpe-base-attributes;
+ }
+
+ augment /nsh/nsh-maps/nsh-map {
+ ext:augment-identifier vxlan-encap-augment;
+ when "/encap-type = 'vpp-nsh:vxlan-encap-type' ";
+ uses v3po:vxlan-base-attributes;
+ }
+
+ container nsh-state {
+ config false;
+
+ description
+ "NSH operational data";
+
+ container nsh-entries {
+ list nsh-entry {
+ key "name";
+
+ uses nsh-entry-base-attributes;
+
+ description
+ "nsh-entry operational data";
+ }
+ }
+
+ container nsh-maps {
+ list nsh-map {
+ key "name";
+
+ uses nsh-map-base-attributes;
+
+ description
+ "nsh-map operational data";
+ }
+ }
+ }
+} \ No newline at end of file