2 * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 module openflow-protocol {
\r
10 namespace "urn:opendaylight:openflow:protocol";
\r
13 import ietf-yang-types {prefix yang;}
\r
15 import openflow-types {prefix oft;}
\r
16 import openflow-extensible-match { prefix oxm;}
\r
17 import openflow-instruction { prefix ofinstruction;}
\r
18 import openflow-action {prefix ofaction;}
\r
20 revision "2013-07-31" {
\r
21 description "OpenFlow 1.3 - protocol objects model";
\r
24 // Generic Structures
\r
26 // reference "ofp_port";
\r
28 // reference "ofp_port.port_no";
\r
32 // reference "ofp_port.hw_addr";
\r
33 type yang:mac-address;
\r
36 // reference "ofp_port.name";
\r
40 // reference "ofp_port.config";
\r
41 type oft:port-config;
\r
44 // reference "ofp_port.state";
\r
45 type oft:port-state;
\r
47 leaf current-features {
\r
48 description "Current features.";
\r
49 // reference "ofp_port.curr";
\r
50 type oft:port-features;
\r
52 leaf advertised-features {
\r
53 description "Features being advertised by the port.";
\r
54 // reference "ofp_port.advertised";
\r
55 type oft:port-features;
\r
57 leaf supported-features {
\r
58 description "Features supported by the port.";
\r
59 // reference "ofp_port.supported";
\r
60 type oft:port-features;
\r
62 leaf peer-features {
\r
63 description "Features advertised by peer.";
\r
64 // reference "ofp_port.peer";
\r
65 type oft:port-features;
\r
68 description "Current port bitrate in kbps.";
\r
69 // reference "ofp_port.curr_speed";
\r
74 description "Max port bitrate in kbps";
\r
75 // reference "ofp_port.max_speed";
\r
82 // reference "ofp_port.config";
\r
83 type oft:port-config-v10;
\r
86 // reference "ofp_port.state";
\r
87 type oft:port-state-v10;
\r
89 leaf current-features-v10 {
\r
90 description "Current features.";
\r
91 // reference "ofp_port.curr";
\r
92 type oft:port-features-v10;
\r
94 leaf advertised-features-v10 {
\r
95 description "Features being advertised by the port.";
\r
96 // reference "ofp_port.advertised";
\r
97 type oft:port-features-v10;
\r
99 leaf supported-features-v10 {
\r
100 description "Features supported by the port.";
\r
101 // reference "ofp_port.supported";
\r
102 type oft:port-features-v10;
\r
104 leaf peer-features-v10 {
\r
105 description "Features advertised by peer.";
\r
106 // reference "ofp_port.peer";
\r
107 type oft:port-features-v10;
\r
111 grouping match-grouping {
\r
115 base oft:match-type-base;
\r
118 uses oxm:oxm-fields;
\r
123 list buckets-list {
\r
133 type oft:port-number;
\r
139 uses ofaction:actions;
\r
142 container table-features-properties-container {
\r
143 uses table-features-properties;
\r
146 grouping table-features-properties {
\r
147 list table-feature-properties {
\r
150 type oft:table-features-prop-type;
\r
155 // # MESSAGE Structures
\r
156 /* Immutable messages. */
\r
157 grouping ofHeader {
\r
158 //reference "ofpt_header struct in Openflow Switch 1.3 Spec"
\r
161 //reference "OpenFlow Header - OFP_VERSION";
\r
165 //reference "OpenFlow Header - transaction id";
\r
168 grouping ofHelloElementHeader {
\r
169 //reference "ofpt_hello_elem_header struct in Openflow Switch 1.3 Spec"
\r
171 type oft:hello-element-type;
\r
172 //reference "OpenFlow Header element type - OFPHET_*";
\r
176 // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
\r
177 /* Symmetric message */
\r
181 uses ofHelloElementHeader;
\r
183 leaf-list version-bitmap {
\r
189 // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"
\r
190 /* Symmetric message */
\r
209 grouping echo-request {
\r
210 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
211 /* Symmetric message */
\r
218 grouping echo-reply {
\r
219 // reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec"
\r
220 /* Symmetric message */
\r
227 grouping experimenter {
\r
228 // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
\r
229 /* Symmetric message */
\r
232 leaf experimenter {
\r
242 /* Switch configuration messages. */
\r
243 grouping features-request {
\r
244 // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"
\r
245 /* Controller/switch message */
\r
248 grouping features-reply {
\r
249 // reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec"
\r
250 /* Controller/switch message */
\r
265 leaf capabilities {
\r
266 type oft:capabilities;
\r
271 // OF1.0 structures
\r
272 leaf capabilities-v10 {
\r
273 type oft:capabilities-v10;
\r
276 type oft:action-type-v10;
\r
282 grouping get-config-request {
\r
283 // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
284 /* Controller/switch message */
\r
287 grouping get-config-reply {
\r
288 // reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
\r
289 /* Controller/switch message */
\r
293 type oft:switch-config-flag;
\r
295 leaf miss-send-len {
\r
299 grouping set-config {
\r
300 // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"
\r
301 /* Controller/switch message */
\r
306 type oft:switch-config-flag;
\r
308 leaf miss-send-len {
\r
312 /* Asynchronous messages. */
\r
313 grouping packet-in {
\r
314 // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"
\r
315 /* Async message */
\r
320 // ID assigned by datapath.
\r
324 // Full length of frame.
\r
328 // Reason packet is being sent (one of OFPR_*)
\r
329 type oft:packet-in-reason;
\r
332 // ID of the table that was looked up
\r
336 // Cookie of the flow entry that was looked up.
\r
339 uses match-grouping;
\r
341 // struct ofp_match match; /* Packet metadata. Variable size. */
\r
342 // /* The variable size and padded match is always followed by:
\r
343 // * - Exactly 2 all-zero padding bytes, then
\r
344 // * - An Ethernet frame whose length is inferred from header.length.
\r
345 // * The padding bytes preceding the Ethernet frame ensure that the IP
\r
346 // * header (if any) following the Ethernet header is 32-bit aligned.
\r
352 // OF1.0 structures
\r
357 grouping flow-removed {
\r
358 // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"
\r
359 /* Async message */
\r
369 type oft:flow-removed-reason;
\r
374 leaf duration-sec {
\r
377 leaf duration-nsec {
\r
380 leaf idle-timeout {
\r
383 leaf hard-timeout {
\r
386 leaf packet-count {
\r
392 uses match-grouping;
\r
394 // OF1.0 structures
\r
395 uses oxm:match-v10-grouping;
\r
397 grouping port-status {
\r
398 // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"
\r
405 type oft:port-reason;
\r
407 } /* Async message */
\r
408 /* Controller command messages. */
\r
409 grouping packet-out {
\r
410 // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"
\r
411 /* Controller/switch message */
\r
415 uses ofaction:actions;
\r
424 type oft:port-number;
\r
427 grouping flow-mod {
\r
428 // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"
\r
429 /* Controller/switch message */
\r
443 type oft:flow-mod-command;
\r
445 leaf idle-timeout {
\r
448 leaf hard-timeout {
\r
458 type oft:port-number;
\r
464 type oft:flow-mod-flags;
\r
466 uses match-grouping;
\r
468 uses ofinstruction:instructions;
\r
470 // OF1.0 structures
\r
472 type oft:flow-mod-flags-v10;
\r
474 uses oxm:match-v10-grouping;
\r
475 uses ofaction:actions;
\r
477 grouping group-mod {
\r
478 // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"
\r
479 /* Controller/switch message */
\r
484 type oft:group-mod-command;
\r
487 type oft:group-type;
\r
496 grouping port-mod {
\r
497 // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"
\r
498 /* Controller/switch message */
\r
503 type oft:port-number;
\r
506 type yang:mac-address;
\r
509 type oft:port-config;
\r
512 type oft:port-config;
\r
515 type oft:port-features;
\r
517 // OF1.0 structures
\r
519 type oft:port-config-v10;
\r
522 type oft:port-config-v10;
\r
524 leaf advertise-v10 {
\r
525 type oft:port-features-v10;
\r
528 grouping table-mod {
\r
529 // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"
\r
530 /* Controller/switch message */
\r
538 type oft:table-config;
\r
542 /* Multipart messages. */
\r
543 grouping multipart-request {
\r
544 // reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec"
\r
545 /* Controller/switch message */
\r
550 type oft:multipart-type;
\r
553 type oft:multipart-request-flags;
\r
555 choice multipart-request-body {
\r
556 case multipart-request-desc-case {
\r
557 container multipart-request-desc {
\r
563 case multipart-request-flow-case {
\r
564 container multipart-request-flow {
\r
580 uses match-grouping;
\r
582 // OF1.0 structures
\r
583 uses oxm:match-v10-grouping;
\r
586 case multipart-request-aggregate-case {
\r
587 container multipart-request-aggregate {
\r
603 uses match-grouping;
\r
605 // OF1.0 structures
\r
606 uses oxm:match-v10-grouping;
\r
609 case multipart-request-table-case {
\r
610 container multipart-request-table {
\r
616 case multipart-request-port-stats-case {
\r
617 container multipart-request-port-stats {
\r
623 case multipart-request-queue-case {
\r
624 container multipart-request-queue {
\r
633 case multipart-request-group-case {
\r
634 container multipart-request-group {
\r
640 case multipart-request-group-desc-case {
\r
641 container multipart-request-group-desc {
\r
647 case multipart-request-group-features-case {
\r
648 container multipart-request-group-features {
\r
654 case multipart-request-meter-case {
\r
655 container multipart-request-meter {
\r
661 case multipart-request-meter-config-case {
\r
662 container multipart-request-meter-config {
\r
668 case multipart-request-meter-features-case {
\r
669 container multipart-request-meter-features {
\r
675 case multipart-request-table-features-case {
\r
676 container multipart-request-table-features {
\r
677 list table-features {
\r
684 leaf metadata-match {
\r
687 leaf metadata-write {
\r
691 type oft:table-config;
\r
696 uses table-features-properties;
\r
700 case multipart-request-port-desc-case {
\r
701 container multipart-request-port-desc {
\r
707 case multipart-request-experimenter-case {
\r
708 container multipart-request-experimenter {
\r
709 leaf experimenter {
\r
722 grouping multipart-reply {
\r
723 // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"
\r
724 /* Controller/switch message */
\r
729 type oft:multipart-type;
\r
732 type oft:multipart-request-flags;
\r
734 choice multipart-reply-body {
\r
735 case multipart-reply-desc-case {
\r
736 container multipart-reply-desc {
\r
754 case multipart-reply-flow-case {
\r
755 container multipart-reply-flow {
\r
760 leaf duration-sec {
\r
763 leaf duration-nsec {
\r
769 leaf idle-timeout {
\r
772 leaf hard-timeout {
\r
776 type oft:flow-mod-flags;
\r
781 leaf packet-count {
\r
787 uses match-grouping;
\r
789 uses ofinstruction:instructions;
\r
791 // OF1.0 structures
\r
792 uses oxm:match-v10-grouping;
\r
793 uses ofaction:actions;
\r
797 case multipart-reply-aggregate-case {
\r
798 container multipart-reply-aggregate {
\r
799 leaf packet-count {
\r
810 case multipart-reply-table-case {
\r
811 container multipart-reply-table {
\r
816 leaf active-count {
\r
819 leaf lookup-count {
\r
822 leaf matched-count {
\r
826 // OF1.0 structures
\r
831 type oft:flow-wildcards-v10;
\r
845 case multipart-reply-port-stats-case {
\r
846 container multipart-reply-port-stats {
\r
875 leaf rx-frame-err {
\r
887 leaf duration-sec {
\r
890 leaf duration-nsec {
\r
896 case multipart-reply-queue-case {
\r
897 container multipart-reply-queue {
\r
914 leaf duration-sec {
\r
917 leaf duration-nsec {
\r
923 case multipart-reply-group-case {
\r
924 container multipart-reply-group {
\r
932 leaf packet-count {
\r
938 leaf duration-sec {
\r
941 leaf duration-nsec {
\r
944 list bucket-stats {
\r
945 leaf packet-count {
\r
955 case multipart-reply-group-desc-case {
\r
956 container multipart-reply-group-desc {
\r
959 type oft:group-type;
\r
968 case multipart-reply-group-features-case {
\r
969 container multipart-reply-group-features {
\r
971 type oft:group-types;
\r
973 leaf capabilities {
\r
974 type oft:group-capabilities;
\r
976 leaf-list max_groups {
\r
979 leaf-list actions-bitmap {
\r
980 type oft:action-type;
\r
984 case multipart-reply-meter-case {
\r
985 container multipart-reply-meter {
\r
993 leaf packet-in-count {
\r
996 leaf byte-in-count {
\r
999 leaf duration-sec {
\r
1002 leaf duration-nsec {
\r
1005 list meter-band-stats {
\r
1006 leaf packet-band-count {
\r
1009 leaf byte-band-count {
\r
1016 case multipart-reply-meter-config-case {
\r
1017 container multipart-reply-meter-config {
\r
1018 list meter-config {
\r
1020 type oft:meter-flags;
\r
1023 type oft:meter-id;
\r
1026 uses meter-band-header;
\r
1031 case multipart-reply-meter-features-case {
\r
1032 container multipart-reply-meter-features {
\r
1037 type oft:meter-band-type-bitmap;
\r
1039 leaf capabilities {
\r
1040 type oft:meter-flags;
\r
1050 case multipart-reply-table-features-case {
\r
1051 container multipart-reply-table-features {
\r
1052 list table-features {
\r
1059 leaf metadata-match {
\r
1062 leaf metadata-write {
\r
1066 type oft:table-config;
\r
1068 leaf max-entries {
\r
1071 uses table-features-properties;
\r
1075 case multipart-reply-port-desc-case {
\r
1076 container multipart-reply-port-desc {
\r
1082 case multipart-reply-experimenter-case {
\r
1083 container multipart-reply-experimenter {
\r
1084 leaf experimenter {
\r
1097 /* Barrier messages. */
\r
1098 grouping barrier-request {
\r
1099 // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"
\r
1100 /* Controller/switch message */
\r
1103 grouping barrier-reply {
\r
1104 // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"
\r
1105 /* Controller/switch message */
\r
1108 /* Queue Configuration messages. */
\r
1109 grouping queue-get-config-request {
\r
1110 // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
1111 /* Controller/switch message */
\r
1116 type oft:port-number;
\r
1119 grouping queue-get-config-reply {
\r
1120 // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
\r
1121 /* Controller/switch message */
\r
1126 type oft:port-number;
\r
1129 uses packet-queue;
\r
1132 grouping packet-queue {
\r
1134 type oft:queue-id;
\r
1137 type oft:port-number;
\r
1139 uses queue-property-header;
\r
1141 container queue-prop-container {
\r
1142 uses queue-property-header;
\r
1144 grouping queue-property-header {
\r
1145 list queue-property {
\r
1148 type oft:queue-properties;
\r
1152 /* Controller role change request messages. */
\r
1153 grouping role-request {
\r
1154 // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"
\r
1155 /* Controller/switch message */
\r
1160 type oft:controller-role;
\r
1162 leaf generation-id {
\r
1166 grouping role-reply {
\r
1167 // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"
\r
1168 /* Controller/switch message */
\r
1173 type oft:controller-role;
\r
1175 leaf generation-id {
\r
1179 /* Asynchronous message configuration. */
\r
1180 grouping get-async-request {
\r
1181 // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"
\r
1182 /* Controller/switch message */
\r
1186 grouping get-async-reply {
\r
1187 // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"
\r
1188 /* Controller/switch message */
\r
1191 uses async-body-grouping;
\r
1193 grouping set-async {
\r
1194 // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"
\r
1195 /* Controller/switch message */
\r
1198 uses async-body-grouping;
\r
1201 grouping async-body-grouping {
\r
1202 list packet-in-mask {
\r
1204 type oft:packet-in-reason;
\r
1207 list port-status-mask {
\r
1209 type oft:port-reason;
\r
1212 list flow-removed-mask {
\r
1214 type oft:flow-removed-reason;
\r
1218 /* Meters and rate limiters configuration messages. */
\r
1219 grouping meter-mod {
\r
1220 // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"
\r
1221 /* Controller/switch message */
\r
1226 type oft:meter-mod-command;
\r
1229 type oft:meter-flags;
\r
1232 type oft:meter-id;
\r
1235 uses meter-band-header;
\r
1239 grouping meter-band-header {
\r
1240 choice meter-band {
\r
1241 case meter-band-drop-case {
\r
1242 container meter-band-drop {
\r
1243 uses meter-band-commons;
\r
1246 case meter-band-dscp-remark-case {
\r
1247 container meter-band-dscp-remark {
\r
1248 uses meter-band-commons;
\r
1254 case meter-band-experimenter-case {
\r
1255 container meter-band-experimenter {
\r
1256 uses meter-band-commons;
\r
1257 leaf experimenter {
\r
1265 grouping meter-band-commons {
\r
1267 type oft:meter-band-type;
\r
1277 /* Immutable messages. */
\r
1278 notification hello-message {
\r
1280 // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
\r
1282 /* Symmetric message */
\r
1284 notification error-message {
\r
1286 // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"
\r
1288 /* Symmetric message */
\r
1290 notification echo-request-message {
\r
1291 uses echo-request;
\r
1292 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
1294 /* Symmetric message */
\r
1296 notification experimenter-message {
\r
1297 uses experimenter;
\r
1298 // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
\r
1299 // TODO:: does switch send this when understood experimenter msg from lib?
\r
1300 /* Symmetric message */
\r
1302 // # Notification and RPCs
\r
1303 /* Symmetric RPC. */
\r
1305 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
1307 uses echo-request;
\r
1309 /* Controller/switch message */
\r
1316 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
1323 // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
\r
1329 rpc experimenter {
\r
1330 // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
\r
1332 uses experimenter;
\r
1336 /* Switch configuration messages. */
\r
1337 rpc get-features {
\r
1338 // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"
\r
1340 uses features-request;
\r
1342 /* Controller/switch message */
\r
1344 uses features-reply;
\r
1349 // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
1351 uses get-config-request;
\r
1354 uses get-config-reply;
\r
1356 /* Controller/switch message */
\r
1360 // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"
\r
1364 /* Controller/switch message */
\r
1366 /* Asynchronous messages. */
\r
1367 notification packet-in-message {
\r
1369 // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"
\r
1371 /* Async message */
\r
1373 notification flow-removed-message {
\r
1374 uses flow-removed;
\r
1375 // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"
\r
1377 /* Async message */
\r
1379 notification port-status-message {
\r
1381 // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"
\r
1383 } /* Async message */
\r
1385 /* Controller command messages. */
\r
1389 // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"
\r
1391 /* Controller/switch message */
\r
1396 // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"
\r
1398 /* Controller/switch message */
\r
1403 // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"
\r
1405 /* Controller/switch message */
\r
1410 // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"
\r
1412 } /* Controller/switch message */
\r
1417 // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"
\r
1419 } /* Controller/switch message */
\r
1421 /* Multipart messages. */
\r
1423 rpc multipart-request {
\r
1425 uses multipart-request;
\r
1429 /* Controller/switch message */
\r
1430 notification multipart-reply-message {
\r
1431 uses multipart-reply;
\r
1432 // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"
\r
1433 // notification because of multiple following responses
\r
1434 } /* Controller/switch message */
\r
1437 /* Barrier messages. */
\r
1440 uses barrier-request;
\r
1441 // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"
\r
1444 uses barrier-reply;
\r
1445 // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"
\r
1448 /* Queue Configuration messages. */
\r
1449 rpc get-queue-config {
\r
1451 uses queue-get-config-request;
\r
1452 // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
1455 uses queue-get-config-reply;
\r
1456 // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
\r
1460 /* Controller role change request messages. */
\r
1461 rpc role-request {
\r
1463 uses role-request;
\r
1464 // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"
\r
1468 // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"
\r
1470 } /* Controller/switch message */
\r
1472 /* Asynchronous message configuration. */
\r
1475 uses get-async-request;
\r
1476 // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"
\r
1479 uses get-async-reply;
\r
1480 // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"
\r
1483 /* Controller/switch message */
\r
1487 // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"
\r
1491 /* Meters and rate limiters configuration messages. */
\r
1495 // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"
\r
1497 } /* Controller/switch message */
\r