Updated flow capable models and affected code
[controller.git] / opendaylight / md-sal / model / model-flow-base / src / main / yang / table-types.yang
diff --git a/opendaylight/md-sal/model/model-flow-base/src/main/yang/table-types.yang b/opendaylight/md-sal/model/model-flow-base/src/main/yang/table-types.yang
new file mode 100644 (file)
index 0000000..0b77d75
--- /dev/null
@@ -0,0 +1,181 @@
+module opendaylight-table-types {
+    namespace "urn:opendaylight:table:types";
+    prefix table;
+
+    import ietf-inet-types {prefix inet;}
+    import ietf-yang-types {prefix yang;}
+    import opendaylight-flow-types {prefix flow;}
+
+
+    revision "2013-10-26" {
+        description "Initial revision of table service";
+    }
+
+    typedef table-ref {
+        type instance-identifier;
+    }
+    
+    typedef table-config {
+        type bits {
+            bit DEPRECATED-MASK;
+        }
+    }  
+      
+    grouping table-feature-prop-type {
+        choice table-feature-prop-type {
+            case instructions { 
+                container instructions {
+                    uses flow:instruction-list;
+                } 
+            }
+            
+            case instructions-miss {   
+                container instructions-miss {
+                    uses flow:instruction-list;
+                } 
+            }
+
+            case next-table {   
+                container tables {
+                    list table-id {
+                        key "table";                        
+                        
+                        leaf table-id {
+                            type table-ref;
+                        } 
+                    }
+                } 
+            }
+            
+            case next-table-miss {   
+                container tables {
+                    list table-id {
+                        key "table-id";                        
+                        
+                        leaf table-id {
+                            type table-ref;
+                        } 
+                    }
+                } 
+            }
+            
+            case write-actions {   
+                container write-actions {
+                    uses flow:action-list;
+                } 
+            }
+            
+            case write-actions-miss {   
+                container write-actions-miss {
+                    uses flow:action-list;
+                } 
+            }
+            
+            case apply-actions {   
+                container apply-actions {
+                    uses flow:action-list;
+                } 
+            }
+            
+            case apply-actions-miss {   
+                container apply-actions-miss {
+                    uses flow:action-list;
+                } 
+            }
+            
+            case match {   
+                container matches {
+                    leaf-list match {                                              
+                        type uint32;
+                    }
+                } 
+            }
+            
+            case wildcards {   
+                container wildcards {
+                    leaf-list wildcard {                                              
+                        type uint32;
+                    }
+                } 
+            }
+            
+            case write-setfield {   
+                container write-setfield {
+                    leaf-list setfield {                                              
+                        type uint32;
+                    }
+                } 
+            }
+            
+            case write-setfield-miss {   
+                container write-setfield-miss {
+                    leaf-list setfield {                                              
+                        type uint32;
+                    }
+                } 
+            }
+            
+            case apply-setfield {   
+                container apply-setfield {
+                    leaf-list setfield {                                              
+                        type uint32;
+                    }
+                } 
+            }
+            
+            case apply-setfield-miss {   
+                container apply-setfield-miss {
+                    leaf-list setfield {                                              
+                        type uint32;
+                    }
+                } 
+            }
+        }
+    } 
+    
+    grouping table-features {
+        list table-features {
+            key "table-id";
+            
+            leaf table-id {
+                type table-ref;
+            }      
+            
+            leaf name {
+                description "Name of the table";
+                type string;               
+            }
+            
+            leaf metadata-match {
+                description "Bits of metadata table can match";
+                type uint64;                
+            }
+            
+            leaf metadata-write {
+                description "Bits of metadata table can write";
+                type uint64;                
+            }
+            
+            leaf max-entries {
+                description "Max number of entries supported";
+                type uint32;                
+            }
+            
+            leaf config {
+                description "Bitmap of OFPTC_ values";
+                type table-config;
+            }
+            
+            container table-properties {
+                list instruction-id {
+                    key "order";
+                    leaf order {
+                        type int32;
+                    }
+                    
+                    uses table-feature-prop-type;
+                }
+            }
+        }
+    }    
+}
\ No newline at end of file