Added meter, action, group, flow models, mask and transactions support.
[controller.git] / opendaylight / md-sal / model / model-flow-base / src / main / yang / flow-types.yang
index cd364b5402425fe63cc7c35bb78fed79b6a519ac..4145977f635c2cb59b2d9564712d087aad6a378b 100644 (file)
@@ -2,80 +2,82 @@ module opendaylight-flow-types {
     namespace "urn:opendaylight:flow:types";
     prefix flow;
 
-    import ietf-inet-types {prefix inet;}
-    import opendaylight-match-types {prefix match;}
-    import ietf-yang-types {prefix yang;}
+    import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
+    import ietf-yang-types {prefix yang; revision-date "2010-09-24";}    
+    import opendaylight-match-types {prefix match; revision-date 2013-10-26";}
+    import opendaylight-action-types {prefix action;}
 
-
-    revision "2013-08-19" {
+    revision "2013-10-26" {
         description "Initial revision of flow service";
     }
-
-    grouping action {
-        choice action {
-            case output-action {
-                leaf-list output-node-connector {
-                    type inet:uri;
-                }
-            }
-
-            case controller-action {
-                leaf max-length {
-                    type uint16 {
-                        range "0..65294";
-                    }
-                }
-            }
-
-            case set-queue-action {
-                leaf queue {
-                    type string; // TODO: define queues
-                }
-            }
-
-            case pop-mpls-action {
-                leaf ethernet-type {
-                        type uint16; // TODO: define ethertype type
-                }
+    
+    grouping instruction-list {
+        list instruction {
+            key "order";
+            leaf order {
+                type int32;
             }
+            uses instruction;
+        }
+    }
 
-            case set-mpls-ttl-action {
-                leaf mpls-ttl {
+    grouping instruction {
+        choice instruction {
+            case go-to-table {
+                leaf table_id {
                     type uint8;
                 }
             }
-
-            case set-nw-ttl-action {
-                leaf nw-ttl {
-                    type uint8;
+            
+            case write-metadata {
+                leaf metadata {
+                    type uint64;
+                }
+                
+                leaf metadata-mask {
+                    type uint64;
                 }
             }
-
-            case push-pbb-action {
-
+            
+            case write-actions {
+                uses action:action-list;
             }
-
-            case push-mpls-action {
-
+            
+            case apply-actions {
+                uses action:action-list;
             }
-
-            case push-vlan-action {
-
+            
+            case clear-actions {
+                uses action:action-list;
             }
+            
+            case meter {
+                leaf meter {
+                    type string;
+                }
+            }   
         }
     }
-
+    
+    typedef flow-mod-flags {
+        type bits {
+            bit CHECK_OVERLAP;
+            bit RESET_COUNTS;
+            bit NO_PKT_COUNTS;
+            bit NO_BYT_COUNTS;
+            bit SEND_FLOW_REM;
+        }
+    }
+    
     grouping flow {
         container match {
             uses match:match;
         }
-        list action {
-            key "order";
-            leaf order {
-                type int32;
-            }
-            uses action;
+        
+        container instructions {
+            uses instruction-list;
         }
+                
         leaf priority {
             type uint16;
         }
@@ -91,6 +93,52 @@ module opendaylight-flow-types {
         leaf cookie {
             type uint64;
         }
+        
+        leaf container-name {
+            type string; 
+        }
+        
+        leaf cookie_mask {
+            type uint8;
+        }
+        
+        leaf table_id {
+            type uint8;
+        }
+        
+        leaf buffer_id {
+            type uint32;
+        }
+        
+        leaf out_port {
+            type uint64;
+        }
+        
+        leaf out_group {
+            type uint32;
+        }
+        
+        leaf flags{
+            type flow-mod-flags;
+        }
+        
+        leaf flow-name{
+            type string;
+        }
+        
+        leaf installHw {
+            type boolean;
+        }
+
+        leaf barrier {
+            type boolean;
+        }
+
+        leaf strict {
+            type boolean;
+            default "false";
+        }
+
     }
 
     grouping flow-statistics {