1 module openflow-protocol {
\r
2 namespace "urn:opendaylight:openflow:protocol";
\r
5 import ietf-yang-types {prefix yang;}
\r
7 import openflow-types {prefix oft;}
\r
8 import openflow-extensible-match { prefix oxm;}
\r
9 import openflow-instruction { prefix ofinstruction;}
\r
10 import openflow-action {prefix ofaction;}
\r
12 revision "2013-07-31" {
\r
13 description "OpenFlow 1.3 - protocol objects model";
\r
16 // Generic Structures
\r
18 // reference "ofp_port";
\r
20 // reference "ofp_port.port_no";
\r
24 // reference "ofp_port.hw_addr";
\r
25 type yang:mac-address;
\r
28 // reference "ofp_port.name";
\r
32 // reference "ofp_port.config";
\r
33 type oft:port-config;
\r
36 // reference "ofp_port.state";
\r
37 type oft:port-state;
\r
39 leaf current-features {
\r
40 description "Current features.";
\r
41 // reference "ofp_port.curr";
\r
42 type oft:port-features;
\r
44 leaf advertised-features {
\r
45 description "Features being advertised by the port.";
\r
46 // reference "ofp_port.advertised";
\r
47 type oft:port-features;
\r
49 leaf supported-features {
\r
50 description "Features supported by the port.";
\r
51 // reference "ofp_port.supported";
\r
52 type oft:port-features;
\r
54 leaf peer-features {
\r
55 description "Features advertised by peer.";
\r
56 // reference "ofp_port.peer";
\r
57 type oft:port-features;
\r
60 description "Current port bitrate in kbps.";
\r
61 // reference "ofp_port.curr_speed";
\r
66 description "Max port bitrate in kbps";
\r
67 // reference "ofp_port.max_speed";
\r
74 // reference "ofp_port.config";
\r
75 type oft:port-config-v10;
\r
78 // reference "ofp_port.state";
\r
79 type oft:port-state-v10;
\r
81 leaf current-features-v10 {
\r
82 description "Current features.";
\r
83 // reference "ofp_port.curr";
\r
84 type oft:port-features-v10;
\r
86 leaf advertised-features-v10 {
\r
87 description "Features being advertised by the port.";
\r
88 // reference "ofp_port.advertised";
\r
89 type oft:port-features-v10;
\r
91 leaf supported-features-v10 {
\r
92 description "Features supported by the port.";
\r
93 // reference "ofp_port.supported";
\r
94 type oft:port-features-v10;
\r
96 leaf peer-features-v10 {
\r
97 description "Features advertised by peer.";
\r
98 // reference "ofp_port.peer";
\r
99 type oft:port-features-v10;
\r
103 grouping match-grouping {
\r
107 base oft:match-type-base;
\r
110 uses oxm:oxm-fields;
\r
115 list buckets-list {
\r
125 type oft:port-number;
\r
131 uses ofaction:actions;
\r
134 container table-features-properties-container {
\r
135 uses table-features-properties;
\r
138 grouping table-features-properties {
\r
139 list table-feature-properties {
\r
142 type oft:table-features-prop-type;
\r
147 // # MESSAGE Structures
\r
148 /* Immutable messages. */
\r
149 grouping ofHeader {
\r
150 //reference "ofpt_header struct in Openflow Switch 1.3 Spec"
\r
153 //reference "OpenFlow Header - OFP_VERSION";
\r
157 //reference "OpenFlow Header - transaction id";
\r
160 grouping ofHelloElementHeader {
\r
161 //reference "ofpt_hello_elem_header struct in Openflow Switch 1.3 Spec"
\r
163 type oft:hello-element-type;
\r
164 //reference "OpenFlow Header element type - OFPHET_*";
\r
168 // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
\r
169 /* Symmetric message */
\r
173 uses ofHelloElementHeader;
\r
175 leaf-list version-bitmap {
\r
181 // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"
\r
182 /* Symmetric message */
\r
201 grouping echo-request {
\r
202 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
203 /* Symmetric message */
\r
210 grouping echo-reply {
\r
211 // reference "OFPT_ECHO_REPLY message in Openflow Switch 1.3 Spec"
\r
212 /* Symmetric message */
\r
219 grouping experimenter {
\r
220 // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
\r
221 /* Symmetric message */
\r
224 leaf experimenter {
\r
234 /* Switch configuration messages. */
\r
235 grouping features-request {
\r
236 // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"
\r
237 /* Controller/switch message */
\r
240 grouping features-reply {
\r
241 // reference "OFPT_FEATURES_REPLY message in Openflow Switch 1.3 Spec"
\r
242 /* Controller/switch message */
\r
257 leaf capabilities {
\r
258 type oft:capabilities;
\r
263 // OF1.0 structures
\r
264 leaf capabilities-v10 {
\r
265 type oft:capabilities-v10;
\r
268 type oft:action-type-v10;
\r
274 grouping get-config-request {
\r
275 // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
276 /* Controller/switch message */
\r
279 grouping get-config-reply {
\r
280 // reference "OFPT_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
\r
281 /* Controller/switch message */
\r
285 type oft:switch-config-flag;
\r
287 leaf miss-send-len {
\r
291 grouping set-config {
\r
292 // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"
\r
293 /* Controller/switch message */
\r
298 type oft:switch-config-flag;
\r
300 leaf miss-send-len {
\r
304 /* Asynchronous messages. */
\r
305 grouping packet-in {
\r
306 // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"
\r
307 /* Async message */
\r
312 // ID assigned by datapath.
\r
316 // Full length of frame.
\r
320 // Reason packet is being sent (one of OFPR_*)
\r
321 type oft:packet-in-reason;
\r
324 // ID of the table that was looked up
\r
328 // Cookie of the flow entry that was looked up.
\r
331 uses match-grouping;
\r
333 // struct ofp_match match; /* Packet metadata. Variable size. */
\r
334 // /* The variable size and padded match is always followed by:
\r
335 // * - Exactly 2 all-zero padding bytes, then
\r
336 // * - An Ethernet frame whose length is inferred from header.length.
\r
337 // * The padding bytes preceding the Ethernet frame ensure that the IP
\r
338 // * header (if any) following the Ethernet header is 32-bit aligned.
\r
344 // OF1.0 structures
\r
349 grouping flow-removed {
\r
350 // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"
\r
351 /* Async message */
\r
361 type oft:flow-removed-reason;
\r
366 leaf duration-sec {
\r
369 leaf duration-nsec {
\r
372 leaf idle-timeout {
\r
375 leaf hard-timeout {
\r
378 leaf packet-count {
\r
384 uses match-grouping;
\r
386 // OF1.0 structures
\r
387 uses oxm:match-v10-grouping;
\r
389 grouping port-status {
\r
390 // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"
\r
397 type oft:port-reason;
\r
399 } /* Async message */
\r
400 /* Controller command messages. */
\r
401 grouping packet-out {
\r
402 // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"
\r
403 /* Controller/switch message */
\r
407 uses ofaction:actions;
\r
416 type oft:port-number;
\r
419 grouping flow-mod {
\r
420 // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"
\r
421 /* Controller/switch message */
\r
435 type oft:flow-mod-command;
\r
437 leaf idle-timeout {
\r
440 leaf hard-timeout {
\r
450 type oft:port-number;
\r
456 type oft:flow-mod-flags;
\r
458 uses match-grouping;
\r
460 uses ofinstruction:instructions;
\r
462 // OF1.0 structures
\r
464 type oft:flow-mod-flags-v10;
\r
466 uses oxm:match-v10-grouping;
\r
467 uses ofaction:actions;
\r
469 grouping group-mod {
\r
470 // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"
\r
471 /* Controller/switch message */
\r
476 type oft:group-mod-command;
\r
479 type oft:group-type;
\r
488 grouping port-mod {
\r
489 // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"
\r
490 /* Controller/switch message */
\r
495 type oft:port-number;
\r
498 type yang:mac-address;
\r
501 type oft:port-config;
\r
504 type oft:port-config;
\r
507 type oft:port-features;
\r
509 // OF1.0 structures
\r
511 type oft:port-config-v10;
\r
514 type oft:port-config-v10;
\r
516 leaf advertise-v10 {
\r
517 type oft:port-features-v10;
\r
520 grouping table-mod {
\r
521 // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"
\r
522 /* Controller/switch message */
\r
530 type oft:table-config;
\r
534 /* Multipart messages. */
\r
535 grouping multipart-request {
\r
536 // reference "OFPT_MULTIPART_REQUEST message in Openflow Switch 1.3 Spec"
\r
537 /* Controller/switch message */
\r
542 type oft:multipart-type;
\r
545 type oft:multipart-request-flags;
\r
547 choice multipart-request-body {
\r
548 case multipart-request-desc-case {
\r
549 container multipart-request-desc {
\r
555 case multipart-request-flow-case {
\r
556 container multipart-request-flow {
\r
572 uses match-grouping;
\r
574 // OF1.0 structures
\r
575 uses oxm:match-v10-grouping;
\r
578 case multipart-request-aggregate-case {
\r
579 container multipart-request-aggregate {
\r
595 uses match-grouping;
\r
597 // OF1.0 structures
\r
598 uses oxm:match-v10-grouping;
\r
601 case multipart-request-table-case {
\r
602 container multipart-request-table {
\r
608 case multipart-request-port-stats-case {
\r
609 container multipart-request-port-stats {
\r
615 case multipart-request-queue-case {
\r
616 container multipart-request-queue {
\r
625 case multipart-request-group-case {
\r
626 container multipart-request-group {
\r
632 case multipart-request-group-desc-case {
\r
633 container multipart-request-group-desc {
\r
639 case multipart-request-group-features-case {
\r
640 container multipart-request-group-features {
\r
646 case multipart-request-meter-case {
\r
647 container multipart-request-meter {
\r
653 case multipart-request-meter-config-case {
\r
654 container multipart-request-meter-config {
\r
660 case multipart-request-meter-features-case {
\r
661 container multipart-request-meter-features {
\r
667 case multipart-request-table-features-case {
\r
668 container multipart-request-table-features {
\r
669 list table-features {
\r
676 leaf metadata-match {
\r
679 leaf metadata-write {
\r
683 type oft:table-config;
\r
688 uses table-features-properties;
\r
692 case multipart-request-port-desc-case {
\r
693 container multipart-request-port-desc {
\r
699 case multipart-request-experimenter-case {
\r
700 container multipart-request-experimenter {
\r
701 leaf experimenter {
\r
714 grouping multipart-reply {
\r
715 // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"
\r
716 /* Controller/switch message */
\r
721 type oft:multipart-type;
\r
724 type oft:multipart-request-flags;
\r
726 choice multipart-reply-body {
\r
727 case multipart-reply-desc-case {
\r
728 container multipart-reply-desc {
\r
746 case multipart-reply-flow-case {
\r
747 container multipart-reply-flow {
\r
752 leaf duration-sec {
\r
755 leaf duration-nsec {
\r
761 leaf idle-timeout {
\r
764 leaf hard-timeout {
\r
768 type oft:flow-mod-flags;
\r
773 leaf packet-count {
\r
779 uses match-grouping;
\r
781 uses ofinstruction:instructions;
\r
783 // OF1.0 structures
\r
784 uses oxm:match-v10-grouping;
\r
785 uses ofaction:actions;
\r
789 case multipart-reply-aggregate-case {
\r
790 container multipart-reply-aggregate {
\r
791 leaf packet-count {
\r
802 case multipart-reply-table-case {
\r
803 container multipart-reply-table {
\r
808 leaf active-count {
\r
811 leaf lookup-count {
\r
814 leaf matched-count {
\r
818 // OF1.0 structures
\r
823 type oft:flow-wildcards-v10;
\r
837 case multipart-reply-port-stats-case {
\r
838 container multipart-reply-port-stats {
\r
867 leaf rx-frame-err {
\r
879 leaf duration-sec {
\r
882 leaf duration-nsec {
\r
888 case multipart-reply-queue-case {
\r
889 container multipart-reply-queue {
\r
906 leaf duration-sec {
\r
909 leaf duration-nsec {
\r
915 case multipart-reply-group-case {
\r
916 container multipart-reply-group {
\r
924 leaf packet-count {
\r
930 leaf duration-sec {
\r
933 leaf duration-nsec {
\r
936 list bucket-stats {
\r
937 leaf packet-count {
\r
947 case multipart-reply-group-desc-case {
\r
948 container multipart-reply-group-desc {
\r
951 type oft:group-type;
\r
960 case multipart-reply-group-features-case {
\r
961 container multipart-reply-group-features {
\r
963 type oft:group-types;
\r
965 leaf capabilities {
\r
966 type oft:group-capabilities;
\r
968 leaf-list max_groups {
\r
971 leaf-list actions-bitmap {
\r
972 type oft:action-type;
\r
976 case multipart-reply-meter-case {
\r
977 container multipart-reply-meter {
\r
985 leaf packet-in-count {
\r
988 leaf byte-in-count {
\r
991 leaf duration-sec {
\r
994 leaf duration-nsec {
\r
997 list meter-band-stats {
\r
998 leaf packet-band-count {
\r
1001 leaf byte-band-count {
\r
1008 case multipart-reply-meter-config-case {
\r
1009 container multipart-reply-meter-config {
\r
1010 list meter-config {
\r
1012 type oft:meter-flags;
\r
1015 type oft:meter-id;
\r
1018 uses meter-band-header;
\r
1023 case multipart-reply-meter-features-case {
\r
1024 container multipart-reply-meter-features {
\r
1029 type oft:meter-band-type-bitmap;
\r
1031 leaf capabilities {
\r
1032 type oft:meter-flags;
\r
1042 case multipart-reply-table-features-case {
\r
1043 container multipart-reply-table-features {
\r
1044 list table-features {
\r
1051 leaf metadata-match {
\r
1054 leaf metadata-write {
\r
1058 type oft:table-config;
\r
1060 leaf max-entries {
\r
1063 uses table-features-properties;
\r
1067 case multipart-reply-port-desc-case {
\r
1068 container multipart-reply-port-desc {
\r
1074 case multipart-reply-experimenter-case {
\r
1075 container multipart-reply-experimenter {
\r
1076 leaf experimenter {
\r
1089 /* Barrier messages. */
\r
1090 grouping barrier-request {
\r
1091 // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"
\r
1092 /* Controller/switch message */
\r
1095 grouping barrier-reply {
\r
1096 // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"
\r
1097 /* Controller/switch message */
\r
1100 /* Queue Configuration messages. */
\r
1101 grouping queue-get-config-request {
\r
1102 // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
1103 /* Controller/switch message */
\r
1108 type oft:port-number;
\r
1111 grouping queue-get-config-reply {
\r
1112 // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
\r
1113 /* Controller/switch message */
\r
1118 type oft:port-number;
\r
1121 uses packet-queue;
\r
1124 grouping packet-queue {
\r
1126 type oft:queue-id;
\r
1129 type oft:port-number;
\r
1131 uses queue-property-header;
\r
1133 container queue-prop-container {
\r
1134 uses queue-property-header;
\r
1136 grouping queue-property-header {
\r
1137 list queue-property {
\r
1140 type oft:queue-properties;
\r
1144 /* Controller role change request messages. */
\r
1145 grouping role-request {
\r
1146 // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"
\r
1147 /* Controller/switch message */
\r
1152 type oft:controller-role;
\r
1154 leaf generation-id {
\r
1158 grouping role-reply {
\r
1159 // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"
\r
1160 /* Controller/switch message */
\r
1165 type oft:controller-role;
\r
1167 leaf generation-id {
\r
1171 /* Asynchronous message configuration. */
\r
1172 grouping get-async-request {
\r
1173 // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"
\r
1174 /* Controller/switch message */
\r
1178 grouping get-async-reply {
\r
1179 // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"
\r
1180 /* Controller/switch message */
\r
1183 uses async-body-grouping;
\r
1185 grouping set-async {
\r
1186 // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"
\r
1187 /* Controller/switch message */
\r
1190 uses async-body-grouping;
\r
1193 grouping async-body-grouping {
\r
1194 list packet-in-mask {
\r
1196 type oft:packet-in-reason;
\r
1199 list port-status-mask {
\r
1201 type oft:port-reason;
\r
1204 list flow-removed-mask {
\r
1206 type oft:flow-removed-reason;
\r
1210 /* Meters and rate limiters configuration messages. */
\r
1211 grouping meter-mod {
\r
1212 // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"
\r
1213 /* Controller/switch message */
\r
1218 type oft:meter-mod-command;
\r
1221 type oft:meter-flags;
\r
1224 type oft:meter-id;
\r
1227 uses meter-band-header;
\r
1231 grouping meter-band-header {
\r
1232 choice meter-band {
\r
1233 case meter-band-drop-case {
\r
1234 container meter-band-drop {
\r
1235 uses meter-band-commons;
\r
1238 case meter-band-dscp-remark-case {
\r
1239 container meter-band-dscp-remark {
\r
1240 uses meter-band-commons;
\r
1246 case meter-band-experimenter-case {
\r
1247 container meter-band-experimenter {
\r
1248 uses meter-band-commons;
\r
1249 leaf experimenter {
\r
1257 grouping meter-band-commons {
\r
1259 type oft:meter-band-type;
\r
1269 /* Immutable messages. */
\r
1270 notification hello-message {
\r
1272 // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
\r
1274 /* Symmetric message */
\r
1276 notification error-message {
\r
1278 // reference "OFPT_ERROR message in Openflow Switch 1.3 Spec"
\r
1280 /* Symmetric message */
\r
1282 notification echo-request-message {
\r
1283 uses echo-request;
\r
1284 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
1286 /* Symmetric message */
\r
1288 notification experimenter-message {
\r
1289 uses experimenter;
\r
1290 // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
\r
1291 // TODO:: does switch send this when understood experimenter msg from lib?
\r
1292 /* Symmetric message */
\r
1294 // # Notification and RPCs
\r
1295 /* Symmetric RPC. */
\r
1297 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
1299 uses echo-request;
\r
1301 /* Controller/switch message */
\r
1308 // reference "OFPT_ECHO_REQUEST message in Openflow Switch 1.3 Spec"
\r
1315 // reference "OFPT_HELLO message in Openflow Switch 1.3 Spec"
\r
1321 rpc experimenter {
\r
1322 // reference "OFPT_EXPERIMENTER message in Openflow Switch 1.3 Spec"
\r
1324 uses experimenter;
\r
1328 /* Switch configuration messages. */
\r
1329 rpc get-features {
\r
1330 // reference "OFPT_FEATURES_REQUEST message in Openflow Switch 1.3 Spec"
\r
1332 uses features-request;
\r
1334 /* Controller/switch message */
\r
1336 uses features-reply;
\r
1341 // reference "OFPT_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
1343 uses get-config-request;
\r
1346 uses get-config-reply;
\r
1348 /* Controller/switch message */
\r
1352 // reference "OFPT_SET_CONFIG message in Openflow Switch 1.3 Spec"
\r
1356 /* Controller/switch message */
\r
1358 /* Asynchronous messages. */
\r
1359 notification packet-in-message {
\r
1361 // reference "OFPT_PACKET_IN message in Openflow Switch 1.3 Spec"
\r
1363 /* Async message */
\r
1365 notification flow-removed-message {
\r
1366 uses flow-removed;
\r
1367 // reference "OFPT_FLOW_REMOVED message in Openflow Switch 1.3 Spec"
\r
1369 /* Async message */
\r
1371 notification port-status-message {
\r
1373 // reference "OFPT_PORT_STATUS message in Openflow Switch 1.3 Spec"
\r
1375 } /* Async message */
\r
1377 /* Controller command messages. */
\r
1381 // reference "OFPT_PACKET_OUT message in Openflow Switch 1.3 Spec"
\r
1383 /* Controller/switch message */
\r
1388 // reference "OFPT_FLOW_MOD message in Openflow Switch 1.3 Spec"
\r
1390 /* Controller/switch message */
\r
1395 // reference "OFPT_GROUP_MOD message in Openflow Switch 1.3 Spec"
\r
1397 /* Controller/switch message */
\r
1402 // reference "OFPT_PORT_MOD message in Openflow Switch 1.3 Spec"
\r
1404 } /* Controller/switch message */
\r
1409 // reference "OFPT_TABLE_MOD message in Openflow Switch 1.3 Spec"
\r
1411 } /* Controller/switch message */
\r
1413 /* Multipart messages. */
\r
1415 rpc multipart-request {
\r
1417 uses multipart-request;
\r
1421 /* Controller/switch message */
\r
1422 notification multipart-reply-message {
\r
1423 uses multipart-reply;
\r
1424 // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"
\r
1425 // notification because of multiple following responses
\r
1426 } /* Controller/switch message */
\r
1429 /* Barrier messages. */
\r
1432 uses barrier-request;
\r
1433 // reference "OFPT_BARRIER_REQUEST message in Openflow Switch 1.3 Spec"
\r
1436 uses barrier-reply;
\r
1437 // reference "OFPT_BARRIER_REPLY message in Openflow Switch 1.3 Spec"
\r
1440 /* Queue Configuration messages. */
\r
1441 rpc get-queue-config {
\r
1443 uses queue-get-config-request;
\r
1444 // reference "OFPT_QUEUE_GET_CONFIG_REQUEST message in Openflow Switch 1.3 Spec"
\r
1447 uses queue-get-config-reply;
\r
1448 // reference "OFPT_QUEUE_GET_CONFIG_REPLY message in Openflow Switch 1.3 Spec"
\r
1452 /* Controller role change request messages. */
\r
1453 rpc role-request {
\r
1455 uses role-request;
\r
1456 // reference "OFPT_ROLE_REQUEST message in Openflow Switch 1.3 Spec"
\r
1460 // reference "OFPT_ROLE_REPLY message in Openflow Switch 1.3 Spec"
\r
1462 } /* Controller/switch message */
\r
1464 /* Asynchronous message configuration. */
\r
1467 uses get-async-request;
\r
1468 // reference "OFPT_GET_ASYNC_REQUEST message in Openflow Switch 1.3 Spec"
\r
1471 uses get-async-reply;
\r
1472 // reference "OFPT_GET_ASYNC_REPLY message in Openflow Switch 1.3 Spec"
\r
1475 /* Controller/switch message */
\r
1479 // reference "OFPT_SET_ASYNC message in Openflow Switch 1.3 Spec"
\r
1483 /* Meters and rate limiters configuration messages. */
\r
1487 // reference "OFPT_METER_MOD message in Openflow Switch 1.3 Spec"
\r
1489 } /* Controller/switch message */
\r