Fix BUG 4281
[openflowjava.git] / openflow-protocol-api / src / main / yang / openflow-instruction.yang
index 8f3a0434bbe80d7fb62430db90b5d1c30d26a6b4..b9e515b3a2c66369d29e67922c320e1d717f455b 100644 (file)
@@ -5,59 +5,71 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
+
  module openflow-instruction {
     namespace "urn:opendaylight:openflow:common:instruction";
     prefix "ofinstruction";
 
     import openflow-types { prefix oft; }
+    import openflow-action {prefix ofaction;}
 
     revision "2013-07-31" {
-       // description "OpenFlow 1.3 - instruction model";
+        description "#NOT_PUBLISHED# OpenFlow 1.3 - instruction model";
     }
 
-    identity goto_table {
-        //description " Setup the next table in the lookup pipeline";
-        base oft:instruction;
-    }
-    identity write_metadata {
-        //description " Setup the metadata field for use later in     pipeline";
-        base oft:instruction;
-    }
-    identity write_actions {
-        description " Write the action(s) onto the datapath action set";
-        base oft:instruction;
-    }
-    identity apply_actions {
-        description " Applies the action(s) immediately";
-        base oft:instruction;
-    }
-    identity clear_actions {
-        description " Clears all actions from the datapath action set";
-        base oft:instruction;
-    }
-    identity meter {
-        description " Apply meter (rate limiter)";
-        base oft:instruction;
-    }
-    identity experimenter {
-        description "Experimenter instruction";
-        base oft:instruction;
+    container instruction-container {
+        uses instruction-grouping;
     }
 
-    container instruction-container {
-        uses instructions;
+    grouping instructions-grouping {
+        list instruction {
+            config false;
+            uses instruction-grouping;
+            leaf experimenter-id {
+                type oft:experimenter-id;
+            }
+        }
     }
 
-    grouping instructions {
-        list instructions {
-            key "type";
-            leaf type {
-                type identityref {
-                    base oft:instruction;
+    grouping instruction-grouping {
+        choice instruction-choice {
+            case goto-table-case {
+                container goto-table {
+                    leaf table-id {
+                        type uint8;
+                    }
+                }
+            }
+            case write-metadata-case {
+                container write-metadata {
+                    leaf metadata {
+                        type binary;
+                    }
+                    leaf metadata-mask {
+                        type binary;
+                    }
+                }
+            }
+            case write-actions-case {
+                container write-actions {
+                    uses ofaction:actions-grouping;
+                }
+            }
+            case apply-actions-case {
+                container apply-actions {
+                    uses ofaction:actions-grouping;
+                }
+            }
+            case clear-actions-case {
+                // empty instruction
+            }
+            case meter-case {
+                container meter {
+                    leaf meter-id {
+                        type uint32;
+                    }
                 }
             }
         }
     }
-
 }
\ No newline at end of file