Remove illegal characters from yangs
[netvirt.git] / vpnservice / fibmanager / fibmanager-api / src / main / yang / odl-fib.yang
index 7b2bf3209acdca9cac3b079b3ec2fc5298509a7c..c12f91518c43a42d126321c6a7b16506eec067c7 100644 (file)
@@ -2,11 +2,13 @@ module odl-fib {
     namespace "urn:opendaylight:netvirt:fibmanager";
     prefix odl-fib;
 
+    import yang-ext {prefix ext; revision-date "2013-07-09";}
+
     revision "2015-03-30" {
         description "FIB Manager module";
     }
 
-    grouping ipv4Entries{
+    grouping ipv4Entries {
         list ipv4Entry{
             key  "destPrefix";
             leaf destPrefix {type string;}
@@ -14,33 +16,205 @@ module odl-fib {
         }
     }
 
-    grouping vrfEntries{
-        list vrfEntry{
-            key  "destPrefix";
+    grouping vrfEntryBase {
             leaf destPrefix {
                 type string;
                 mandatory true;
             }
-            leaf label {
-                type uint32;
-                mandatory true;
+            leaf mac {
+               type string;
             }
-            leaf nextHopAddress {
+            leaf origin {
                 type string;
+                mandatory true;
+            }
+            leaf encap-type {
+               description
+                  "This flag indicates how to interpret the existing label field.
+                   A value of mplsgre indicates that the label within route paths will continue to be considered as an MPLS Label.
+                   A value of vxlan indicates that l3vni should be used to advertise to bgp and label will be ignored.";
+
+               type enumeration {
+                  enum mplsgre {
+                     value "0";
+                     description "MPLSOverGRE";
+                  }
+                  enum vxlan {
+                     value "1";
+                     description "VNI";
+                  }
+               }
+               default "mplsgre";
+            }
+
+            leaf l3vni {
+               type uint32;
+            }
+            leaf gateway_mac_address {
+               type string;
+            }
+            leaf parent-vpn-rd {
+               description
+                 "If set will get the vpn-to-dpn information from the parent-vpn-rd";
+               type string;
+            }
+            list route-paths {
+                key "nexthop-address";
+                leaf nexthop-address {
+                    type string;
+                }
+                leaf label {
+                    type uint32;
+                }
+            }
+    }
+
+    grouping vrfEntries {
+        list vrfEntry{
+            key  "destPrefix";
+            uses vrfEntryBase;
+        }
+    }
+
+    grouping macVrfEntries {
+        list macVrfEntry {
+            key  "mac";
+            uses vrfEntryBase;
+            leaf l2vni {
+               type uint32;
             }
         }
     }
 
+    augment "/odl-fib:fibEntries/odl-fib:vrfTables/odl-fib:vrfEntry" {
+            ext:augment-identifier "subnetRoute";
+            leaf elantag {type uint32;}
+    }
+
+    augment "/odl-fib:fibEntries/odl-fib:vrfTables/odl-fib:vrfEntry" {
+        ext:augment-identifier "routerInterface";
+        leaf uuid {type string;}
+        leaf mac-address {type string;}
+        leaf ip-address {type string;}
+    }
+
     container fibEntries {
         config true;
         list vrfTables{
             key "routeDistinguisher";
             leaf routeDistinguisher {type string;}
             uses vrfEntries;
+            uses macVrfEntries;
         }
 
         container ipv4Table{
-            uses  ipv4Entries;
+            uses ipv4Entries;
         }
     }
-}
\ No newline at end of file
+
+    container label-route-map {
+         config false;
+         list label-route-info {
+            key label;
+            leaf label { type uint32; }
+            leaf dpn-id { type uint64; }
+            leaf prefix { type string; }
+            leaf-list next-hop-ip-list { type string; }
+            leaf-list vpn-instance-list { type string; }
+            leaf parent-vpnid { type uint32; }
+            leaf vpn-interface-name { type string; }
+            leaf elan-tag { type uint32; }
+            leaf is-subnet-route { type boolean; }
+            leaf parent-vpn-rd { type string; }
+         }
+    }
+
+    container extraroute-rds-map {
+        config true;
+        list extraroute-rds {
+            description
+                "List of route distinguishers used to create a unique NLRI for the destination prefix";
+            key "vpnid";
+            leaf vpnid {
+                type uint32;
+            }
+            list dest-prefixes {
+                key "dest-prefix";
+                leaf dest-prefix {
+                    type string;
+                }
+                list allocated-rds {
+                    key nexthop;
+                    leaf nexthop {
+                        type string;
+                        description "Ip address of the VM which is the nexthop for the extra route";
+                    }
+                    leaf rd {type string;}
+                }
+            }
+        }
+   }
+
+   container ip-prefix-map {
+        description "Stores information about a parent vpn and prefix in that parent vpn,
+                    along with what other vpn-instances import the parent vpn";
+        config false;
+        list ip-prefix-info {
+            key "prefix parent-primary-rd";
+            leaf prefix {
+                type string;
+            }
+            leaf parent-primary-rd {
+                type string;
+            }
+            leaf dpn-id {
+                type uint64;
+            }
+            leaf-list vpn-instance-list {
+                type string;
+            }
+            leaf parent-vpnid {
+                type uint32;
+            }
+            leaf vpn-interface-name {
+                type string;
+            }
+            leaf elan-tag {
+                type uint32;
+            }
+            leaf is-subnet-route {
+                type boolean;
+            }
+            leaf encap-type {
+                type enumeration {
+                    enum mplsgre {
+                        value "0";
+                    }
+                    enum vxlan {
+                        value "1";
+                    }
+                }
+                default "mplsgre";
+            }
+            leaf l3vni {
+                type uint32;
+            }
+            leaf l2vni {
+                 type uint32;
+            }
+            list route-paths {
+                 key "nexthop-address";
+                 leaf nexthop-address {
+                      type string;
+                 }
+                 leaf label {
+                      type uint32;
+                 }
+                 leaf gateway_mac_address {
+                      type string;
+                 }
+            }
+        }
+   }
+
+}