Fix BUG 4281
[openflowjava.git] / openflow-protocol-api / src / main / yang / openflow-instruction.yang
index 80f74a83be14b50e68af104e8bbd38ab3ae45d87..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";
-    }
-
-    identity goto_table {
-        description " Setup the next table in the lookup pipeline";
-        base oft:instruction-base;
-    }
-    identity write_metadata {
-        description " Setup the metadata field for use later in     pipeline";
-        base oft:instruction-base;
-    }
-    identity write_actions {
-        description " Write the action(s) onto the datapath action set";
-        base oft:instruction-base;
-    }
-    identity apply_actions {
-        description " Applies the action(s) immediately";
-        base oft:instruction-base;
-    }
-    identity clear_actions {
-        description " Clears all actions from the datapath action set";
-        base oft:instruction-base;
-    }
-    identity meter {
-        description " Apply meter (rate limiter)";
-        base oft:instruction-base;
-    }
-    identity experimenter {
-        description "Experimenter instruction";
-        base oft:instruction-base;
+        description "#NOT_PUBLISHED# OpenFlow 1.3 - instruction model";
     }
 
     container instruction-container {
-        uses instructions-grouping;
+        uses instruction-grouping;
     }
 
     grouping instructions-grouping {
         list instruction {
             config false;
-            leaf type {
-                type identityref {
-                    base oft:instruction-base;
-                }
+            uses instruction-grouping;
+            leaf experimenter-id {
+                type oft:experimenter-id;
             }
         }
     }
 
+    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