-module openflow-instruction {
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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 "Initial model";
+ description "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;
}
- // Structures
-
- grouping goto-table {
- description " Setup the next table in the lookup pipeline";
- leaf table {
- type oft:table-id; //
- }
- }
- grouping write-metadata {
- description " Setup the metadata field for use later in pipeline";
- leaf metadata {
- type oft:metadata;
- }
- leaf mask {
- type oft:metadata;
+ grouping instructions-grouping {
+ list instruction {
+ config false;
+ uses instruction-grouping;
+ leaf experimenter-id {
+ type oft:experimenter-id;
+ }
}
}
- grouping actions {
- leaf type {
- type enumeration {
- enum write {
- description " Write the action(s) onto the datapath action set";
+
+ 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;
+ }
}
- enum apply {
- description " Applies the action(s) immediately";
+ }
+ case write-actions-case {
+ container write-actions {
+ uses ofaction:actions-grouping;
}
- enum clear {
- description " Clears all actions from the datapath action set";
+ }
+ case apply-actions-case {
+ container apply-actions {
+ uses ofaction:actions-grouping;
}
}
- }
- list action {
- // TBD
- }
- }
-
- grouping meter {
- description " Apply meter (rate limiter)";
- leaf meter-id {
- type oft:meter-id;
- }
- }
-
- container instruction {
- uses instructions;
- }
-
- grouping instructions {
- leaf type {
- type identityref {
- base oft:instruction;
+ case clear-actions-case {
+ // empty instruction
+ }
+ case meter-case {
+ container meter {
+ leaf meter-id {
+ type uint32;
+ }
+ }
}
}
}
-
}
\ No newline at end of file