* 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-protocol {
namespace "urn:opendaylight:openflow:protocol";
prefix "ofproto";
import ietf-yang-types {prefix yang;}
-
+
import openflow-types {prefix oft;}
import openflow-extensible-match { prefix oxm;}
import openflow-instruction { prefix ofinstruction;}
}
leaf peer-features {
description "Features advertised by peer.";
- type oft:port-features;
+ type oft:port-features;
}
leaf curr-speed {
description "Current port bitrate in kbps.";
leaf config-v10 {
type oft:port-config-v10;
}
- leaf state-v10 {
+ leaf state-v10 {
type oft:port-state-v10;
}
leaf current-features-v10 {
description "Features supported by the port.";
type oft:port-features-v10;
}
- leaf peer-features-v10 {
+ leaf peer-features-v10 {
description "Features advertised by peer.";
- type oft:port-features-v10;
+ type oft:port-features-v10;
}
}
uses ofaction:actions-grouping;
}
-
+
container table-features-properties-container {
uses table-features-properties-grouping;
}
reference "OFPT_HELLO message in Openflow Switch 1.3 Spec";
/* Symmetric message */
uses ofHeader;
-
+
list elements {
uses ofHelloElementHeader;
-
+
leaf-list version-bitmap {
type boolean;
}
reference "OFPT_ERROR message in Openflow Switch 1.3 Spec";
/* Symmetric message */
uses ofHeader;
-
+
leaf type {
type uint16;
}
type string;
}
leaf data {
- type binary;
+ type binary;
}
}
grouping echo-request {
reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec";
/* Symmetric message */
uses ofHeader;
-
+
leaf data {
type binary;
}
reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec";
/* Symmetric message */
uses ofHeader;
-
+
leaf data {
type binary;
}
reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec";
/* Symmetric message */
uses ofHeader;
-
+
leaf experimenter {
type oft:experimenter-id;
}
reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf datapathId {
type uint64;
}
reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf flags {
type oft:switch-config-flag;
}
grouping set-config {
reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
-
+
uses ofHeader;
-
+
leaf flags {
type oft:switch-config-flag;
}
grouping packet-in {
reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec";
/* Async message */
-
+
uses ofHeader;
-
+
leaf buffer-id {
// ID assigned by datapath.
type uint32;
type uint16;
}
leaf reason {
- // Reason packet is being sent (one of OFPR_*)
+ // Reason packet is being sent (one of OFPR_*)
type oft:packet-in-reason;
}
leaf table-id {
leaf data {
type binary;
}
-
+
// OF1.0 structures
leaf in-port {
type uint16;
reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec";
/* Async message */
uses ofHeader;
-
+
leaf cookie {
type uint64;
}
type uint64;
}
uses oxm:match-grouping;
-
+
// OF1.0 structures
uses oxm:match-v10-grouping;
- }
+ }
grouping port-status {
reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec";
-
+
uses ofHeader;
-
+
uses port-grouping;
-
+
leaf reason {
type oft:port-reason;
}
grouping packet-out {
reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
-
+
uses ofHeader;
-
+
uses ofaction:actions-grouping;
-
+
leaf data {
type binary;
}
leaf in-port {
type oft:port-number;
}
- }
+ }
grouping flow-mod {
reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
-
+
uses ofHeader;
-
+
leaf cookie {
type uint64;
}
type oft:flow-mod-flags;
}
uses oxm:match-grouping;
-
+
uses ofinstruction:instructions-grouping;
-
+
// OF1.0 structures
leaf flags-v10 {
type oft:flow-mod-flags-v10;
}
uses oxm:match-v10-grouping;
uses ofaction:actions-grouping;
- }
+ }
grouping group-mod {
reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
-
+
uses ofHeader;
-
+
leaf command {
type oft:group-mod-command;
}
leaf group-id {
type oft:group-id;
}
-
+
uses buckets-grouping;
}
-
+
grouping port-mod {
reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf port-no {
type oft:port-number;
}
leaf hw-address {
type yang:mac-address;
- }
+ }
leaf config {
type oft:port-config;
- }
+ }
leaf mask {
type oft:port-config;
}
leaf advertise-v10 {
type oft:port-features-v10;
}
- }
+ }
grouping table-mod {
reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf table-id {
type oft:table-id;
}
leaf config {
type oft:table-config;
}
- }
-
+ }
+
/* Multipart messages. */
grouping multipart-request {
reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf type {
type oft:multipart-type;
}
type uint64;
}
uses oxm:match-grouping;
-
+
// OF1.0 structures
uses oxm:match-v10-grouping;
}
type uint64;
}
uses oxm:match-grouping;
-
+
// OF1.0 structures
uses oxm:match-v10-grouping;
}
}
}
}
- }
+ }
grouping multipart-reply {
reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf type {
type oft:multipart-type;
}
type uint64;
}
uses oxm:match-grouping;
-
+
uses ofinstruction:instructions-grouping;
-
+
// OF1.0 structures
uses oxm:match-v10-grouping;
uses ofaction:actions-grouping;
leaf matched-count {
type uint64;
}
-
+
// OF1.0 structures
leaf name {
type string;
}
leaf config {
type oft:table-config;
- }
+ }
leaf max-entries {
type uint32;
}
}
}
}
- }
+ }
/* Barrier messages. */
grouping barrier-request {
reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
- }
+ }
grouping barrier-reply {
reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
- }
+ }
/* Queue Configuration messages. */
grouping queue-get-config-request {
reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
-
+
uses ofHeader;
-
+
leaf port {
type oft:port-number;
}
- }
+ }
grouping queue-get-config-reply {
reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf port {
type oft:port-number;
}
grouping role-request {
reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
-
+
uses ofHeader;
-
+
leaf role {
type oft:controller-role;
}
leaf generation-id {
type uint64;
}
- }
+ }
grouping role-reply {
reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
-
+
leaf role {
type oft:controller-role;
}
leaf generation-id {
type uint64;
}
- }
+ }
/* Asynchronous message configuration. */
grouping get-async-request {
reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
- }
+ }
grouping get-async-reply {
reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
uses ofHeader;
uses async-body-grouping;
- }
+ }
grouping set-async {
reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec";
/* Controller/switch message */
-
+
uses ofHeader;
uses async-body-grouping;
}
-
+
grouping async-body-grouping {
list packet-in-mask {
leaf-list mask {
/* Controller/switch message */
uses ofHeader;
-
+
leaf command {
type oft:meter-mod-command;
- }
+ }
leaf flags {
type oft:meter-flags;
}
uses meter-band-header;
}
}
-
+
container meter-band-container {
uses meter-band-header;
}
}
}
}
-
+
grouping meter-band-commons {
leaf type {
type oft:meter-band-type;
notification hello-message {
uses hello;
reference "OFPT_HELLO message in Openflow Switch 1.3 Spec";
-
+
/* Symmetric message */
}
notification error-message {
uses error;
reference "OFPT_ERROR message in Openflow Switch 1.3 Spec";
-
+
/* Symmetric message */
}
notification echo-request-message {
uses echo-request;
reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec";
-
+
/* Symmetric message */
}
notification experimenter-message {
uses echo-reply;
}
}
-
+
rpc echo-reply {
input {
uses echo-reply;
}
}
-
+
rpc hello {
input {
uses hello;
}
}
-
+
rpc experimenter {
input {
uses experimenter;
uses features-reply;
}
}
-
+
rpc get-config {
input {
uses get-config-request;
}
/* Controller/switch message */
}
-
+
rpc set-config {
input {
uses set-config;
- }
+ }
/* Controller/switch message */
}
/* Asynchronous messages. */
notification packet-in-message {
uses packet-in;
-
+
/* Async message */
}
notification flow-removed-message {
uses flow-removed;
-
+
/* Async message */
- }
+ }
notification port-status-message {
uses port-status;
-
+
} /* Async message */
/* Controller command messages. */
uses packet-out;
}
/* Controller/switch message */
- }
+ }
rpc flow-mod {
input {
uses flow-mod;
}
/* Controller/switch message */
- }
+ }
rpc group-mod {
input {
uses group-mod;
}
/* Controller/switch message */
- }
+ }
rpc port-mod {
input {
uses port-mod;
}
} /* Controller/switch message */
-
+
rpc table-mod {
input {
uses table-mod;
uses multipart-reply;
// notification because of multiple following responses
} /* Controller/switch message */
-
+
/* Barrier messages. */
rpc barrier {
output {
uses queue-get-config-reply;
}
- }
+ }
/* Controller role change request messages. */
rpc role-request {
uses role-reply;
}
} /* Controller/switch message */
-
+
/* Asynchronous message configuration. */
rpc get-async {
input {
output {
uses get-async-reply;
}
- }
+ }
/* Controller/switch message */
rpc set-async {
- input {
+ input {
uses set-async;
}
-
- }
+
+ }
/* Meters and rate limiters configuration messages. */
rpc meter-mod {
input {