blob: 66a442554fad973171af22d057ddce3489fae5dc [file] [log] [blame]
Rich Lanea06d0c32013-03-25 08:52:03 -07001// Copyright 2013, Big Switch Networks, Inc.
2//
3// LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
4// the following special exception:
5//
6// LOXI Exception
7//
8// As a special exception to the terms of the EPL, you may distribute libraries
9// generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
10// that copyright and licensing notices generated by LoxiGen are not altered or removed
11// from the LoxiGen Libraries and the notice provided below is (i) included in
12// the LoxiGen Libraries, if distributed in source code form and (ii) included in any
13// documentation for the LoxiGen Libraries, if distributed in binary form.
14//
15// Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
16//
17// You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
18// a copy of the EPL at:
19//
20// http://www.eclipse.org/legal/epl-v10.html
21//
22// Unless required by applicable law or agreed to in writing, software
23// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
24// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
25// EPL for the specific language governing permissions and limitations
26// under the EPL.
27
28#version 2
29
30struct ofp_header {
31 uint8_t version;
32 uint8_t type;
33 uint16_t length;
34 uint32_t xid;
35};
36
37struct ofp_hello {
38 uint8_t version;
39 uint8_t type;
40 uint16_t length;
41 uint32_t xid;
42};
43
44struct ofp_echo_request {
45 uint8_t version;
46 uint8_t type;
47 uint16_t length;
48 uint32_t xid;
49 of_octets_t data;
50};
51
52struct ofp_echo_reply {
53 uint8_t version;
54 uint8_t type;
55 uint16_t length;
56 uint32_t xid;
57 of_octets_t data;
58};
59
60struct ofp_experimenter {
61 uint8_t version;
62 uint8_t type;
63 uint16_t length;
64 uint32_t xid;
65 uint32_t experimenter;
66 uint32_t subtype;
67 of_octets_t data;
68};
69
70struct ofp_barrier_request {
71 uint8_t version;
72 uint8_t type;
73 uint16_t length;
74 uint32_t xid;
75};
76
77struct ofp_barrier_reply {
78 uint8_t version;
79 uint8_t type;
80 uint16_t length;
81 uint32_t xid;
82};
83
84struct ofp_get_config_request {
85 uint8_t version;
86 uint8_t type;
87 uint16_t length;
88 uint32_t xid;
89};
90
91struct ofp_get_config_reply {
92 uint8_t version;
93 uint8_t type;
94 uint16_t length;
95 uint32_t xid;
96 uint16_t flags;
97 uint16_t miss_send_len;
98};
99
100struct ofp_set_config {
101 uint8_t version;
102 uint8_t type;
103 uint16_t length;
104 uint32_t xid;
105 uint16_t flags;
106 uint16_t miss_send_len;
107};
108
109struct ofp_table_mod {
110 uint8_t version;
111 uint8_t type;
112 uint16_t length;
113 uint32_t xid;
114 uint8_t table_id;
115 uint8_t[3] pad;
116 uint32_t config;
117};
118
119struct ofp_port_desc {
120 of_port_no_t port_no;
121 uint8_t[4] pad;
122 of_mac_addr_t hw_addr;
123 uint8_t[2] pad2;
124 of_port_name_t name;
125 uint32_t config;
126 uint32_t state;
127 uint32_t curr;
128 uint32_t advertised;
129 uint32_t supported;
130 uint32_t peer;
131 uint32_t curr_speed;
132 uint32_t max_speed;
133};
134
135struct ofp_features_request {
136 uint8_t version;
137 uint8_t type;
138 uint16_t length;
139 uint32_t xid;
140};
141
142struct ofp_features_reply {
143 uint8_t version;
144 uint8_t type;
145 uint16_t length;
146 uint32_t xid;
147 uint64_t datapath_id;
148 uint32_t n_buffers;
149 uint8_t n_tables;
150 uint8_t[3] pad;
151 uint32_t capabilities;
152 uint32_t reserved;
153 list(of_port_desc_t) ports;
154};
155
156struct ofp_port_status {
157 uint8_t version;
158 uint8_t type;
159 uint16_t length;
160 uint32_t xid;
161 uint8_t reason;
162 uint8_t[7] pad;
163 of_port_desc_t desc;
164};
165
166struct ofp_port_mod {
167 uint8_t version;
168 uint8_t type;
169 uint16_t length;
170 uint32_t xid;
171 of_port_no_t port_no;
172 uint8_t[4] pad;
173 of_mac_addr_t hw_addr;
174 uint8_t[2] pad2;
175 uint32_t config;
176 uint32_t mask;
177 uint32_t advertise;
178 uint8_t[4] pad3;
179};
180
181struct ofp_packet_in {
182 uint8_t version;
183 uint8_t type;
184 uint16_t length;
185 uint32_t xid;
186 uint32_t buffer_id;
187 of_port_no_t in_port;
188 of_port_no_t in_phy_port;
189 uint16_t total_len;
190 uint8_t reason;
191 uint8_t table_id;
192 of_octets_t data;
193};
194
195struct ofp_action_output {
196 uint16_t type;
197 uint16_t len;
198 of_port_no_t port;
199 uint16_t max_len;
200 uint8_t[6] pad;
201};
202
203struct ofp_action_set_vlan_vid {
204 uint16_t type;
205 uint16_t len;
206 uint16_t vlan_vid;
207 uint8_t[2] pad;
208};
209
210struct ofp_action_set_vlan_pcp {
211 uint16_t type;
212 uint16_t len;
213 uint8_t vlan_pcp;
214 uint8_t[3] pad;
215};
216
217struct ofp_action_set_dl_src {
218 uint16_t type;
219 uint16_t len;
220 of_mac_addr_t dl_addr;
221 uint8_t[6] pad;
222};
223
224struct ofp_action_set_dl_dst {
225 uint16_t type;
226 uint16_t len;
227 of_mac_addr_t dl_addr;
228 uint8_t[6] pad;
229};
230
231struct ofp_action_set_nw_src {
232 uint16_t type;
233 uint16_t len;
234 uint32_t nw_addr;
235};
236
237struct ofp_action_set_nw_dst {
238 uint16_t type;
239 uint16_t len;
240 uint32_t nw_addr;
241};
242
243struct ofp_action_set_nw_tos {
244 uint16_t type;
245 uint16_t len;
246 uint8_t nw_tos;
247 uint8_t[3] pad;
248};
249
250struct ofp_action_set_nw_ecn {
251 uint16_t type;
252 uint16_t len;
253 uint8_t nw_ecn;
254 uint8_t[3] pad;
255};
256
257struct ofp_action_set_tp_src {
258 uint16_t type;
259 uint16_t len;
260 uint16_t tp_port;
261 uint8_t[2] pad;
262};
263
264struct ofp_action_set_tp_dst {
265 uint16_t type;
266 uint16_t len;
267 uint16_t tp_port;
268 uint8_t[2] pad;
269};
270
271struct ofp_action_copy_ttl_out {
272 uint16_t type;
273 uint16_t len;
274 uint8_t[4] pad;
275};
276
277struct ofp_action_copy_ttl_in {
278 uint16_t type;
279 uint16_t len;
280 uint8_t[4] pad;
281};
282
283struct ofp_action_set_mpls_label {
284 uint16_t type;
285 uint16_t len;
286 uint32_t mpls_label;
287};
288
289struct ofp_action_set_mpls_tc {
290 uint16_t type;
291 uint16_t len;
292 uint8_t mpls_tc;
293 uint8_t[3] pad;
294};
295
296struct ofp_action_set_mpls_ttl {
297 uint16_t type;
298 uint16_t len;
299 uint8_t mpls_ttl;
300 uint8_t[3] pad;
301};
302
303struct ofp_action_dec_mpls_ttl {
304 uint16_t type;
305 uint16_t len;
306 uint8_t[4] pad;
307};
308
309struct ofp_action_push_vlan {
310 uint16_t type;
311 uint16_t len;
312 uint16_t ethertype;
313 uint8_t[2] pad;
314};
315
316struct ofp_action_pop_vlan {
317 uint16_t type;
318 uint16_t len;
319 uint8_t[4] pad;
320};
321
322struct ofp_action_push_mpls {
323 uint16_t type;
324 uint16_t len;
325 uint16_t ethertype;
326 uint8_t[2] pad;
327};
328
329struct ofp_action_pop_mpls {
330 uint16_t type;
331 uint16_t len;
332 uint16_t ethertype;
333 uint8_t[2] pad;
334};
335
336struct ofp_action_set_queue {
337 uint16_t type;
338 uint16_t len;
339 uint32_t queue_id;
340};
341
342struct ofp_action_group {
343 uint16_t type;
344 uint16_t len;
345 uint32_t group_id;
346};
347
348struct ofp_action_set_nw_ttl {
349 uint16_t type;
350 uint16_t len;
351 uint8_t nw_ttl;
352 uint8_t[3] pad;
353};
354
355struct ofp_action_dec_nw_ttl {
356 uint16_t type;
357 uint16_t len;
358 uint8_t[4] pad;
359};
360
361struct ofp_action_experimenter {
362 uint16_t type;
363 uint16_t len;
364 uint32_t experimenter;
365 of_octets_t data;
366};
367
368struct ofp_action {
369 uint16_t type;
370 uint16_t len;
371 uint8_t[4] pad;
372};
373
374struct ofp_packet_out {
375 uint8_t version;
376 uint8_t type;
377 uint16_t length;
378 uint32_t xid;
379 uint32_t buffer_id;
380 of_port_no_t in_port;
381 uint16_t actions_len;
382 uint8_t[6] pad;
383 list(of_action_t) actions;
384 of_octets_t data;
385};
386
387struct ofp_match_v2 {
388 uint16_t type;
389 uint16_t length;
390 of_port_no_t in_port;
391 of_wc_bmap_t wildcards;
392 of_mac_addr_t eth_src;
393 of_mac_addr_t eth_src_mask;
394 of_mac_addr_t eth_dst;
395 of_mac_addr_t eth_dst_mask;
396 uint16_t vlan_vid;
397 uint8_t vlan_pcp;
398 uint8_t[1] pad1;
399 uint16_t eth_type;
400 uint8_t ip_dscp;
401 uint8_t ip_proto;
402 uint32_t ipv4_src;
403 uint32_t ipv4_src_mask;
404 uint32_t ipv4_dst;
405 uint32_t ipv4_dst_mask;
406 uint16_t tcp_src;
407 uint16_t tcp_dst;
408 uint32_t mpls_label;
409 uint8_t mpls_tc;
410 uint8_t[3] pad2;
411 uint64_t metadata;
412 uint64_t metadata_mask;
413};
414
415struct ofp_instruction {
416 uint16_t type;
417 uint16_t len;
418 uint8_t[4] pad;
419};
420
421struct ofp_instruction_goto_table {
422 uint16_t type;
423 uint16_t len;
424 uint8_t table_id;
425 uint8_t[3] pad;
426};
427
428struct ofp_instruction_write_metadata {
429 uint16_t type;
430 uint16_t len;
431 uint8_t[4] pad;
432 uint64_t metadata;
433 uint64_t metadata_mask;
434};
435
436struct ofp_instruction_write_actions {
437 uint16_t type;
438 uint16_t len;
439 uint8_t[4] pad;
440 list(of_action_t) actions;
441};
442
443struct ofp_instruction_apply_actions {
444 uint16_t type;
445 uint16_t len;
446 uint8_t[4] pad;
447 list(of_action_t) actions;
448};
449
450struct ofp_instruction_clear_actions {
451 uint16_t type;
452 uint16_t len;
453 uint8_t[4] pad;
454};
455
456struct ofp_instruction_experimenter {
457 uint16_t type;
458 uint16_t len;
459 uint32_t experimenter;
460 of_octets_t data;
461};
462
463struct ofp_flow_add {
464 uint8_t version;
465 uint8_t type;
466 uint16_t length;
467 uint32_t xid;
468 uint64_t cookie;
469 uint64_t cookie_mask;
470 uint8_t table_id;
471 of_fm_cmd_t _command;
472 uint16_t idle_timeout;
473 uint16_t hard_timeout;
474 uint16_t priority;
475 uint32_t buffer_id;
476 of_port_no_t out_port;
477 uint32_t out_group;
478 uint16_t flags;
479 uint8_t[2] pad;
480 of_match_t match;
481 list(of_instruction_t) instructions;
482};
483
484struct ofp_flow_modify {
485 uint8_t version;
486 uint8_t type;
487 uint16_t length;
488 uint32_t xid;
489 uint64_t cookie;
490 uint64_t cookie_mask;
491 uint8_t table_id;
492 of_fm_cmd_t _command;
493 uint16_t idle_timeout;
494 uint16_t hard_timeout;
495 uint16_t priority;
496 uint32_t buffer_id;
497 of_port_no_t out_port;
498 uint32_t out_group;
499 uint16_t flags;
500 uint8_t[2] pad;
501 of_match_t match;
502 list(of_instruction_t) instructions;
503};
504
505struct ofp_flow_modify_strict {
506 uint8_t version;
507 uint8_t type;
508 uint16_t length;
509 uint32_t xid;
510 uint64_t cookie;
511 uint64_t cookie_mask;
512 uint8_t table_id;
513 of_fm_cmd_t _command;
514 uint16_t idle_timeout;
515 uint16_t hard_timeout;
516 uint16_t priority;
517 uint32_t buffer_id;
518 of_port_no_t out_port;
519 uint32_t out_group;
520 uint16_t flags;
521 uint8_t[2] pad;
522 of_match_t match;
523 list(of_instruction_t) instructions;
524};
525
526struct ofp_flow_delete {
527 uint8_t version;
528 uint8_t type;
529 uint16_t length;
530 uint32_t xid;
531 uint64_t cookie;
532 uint64_t cookie_mask;
533 uint8_t table_id;
534 of_fm_cmd_t _command;
535 uint16_t idle_timeout;
536 uint16_t hard_timeout;
537 uint16_t priority;
538 uint32_t buffer_id;
539 of_port_no_t out_port;
540 uint32_t out_group;
541 uint16_t flags;
542 uint8_t[2] pad;
543 of_match_t match;
544 list(of_instruction_t) instructions;
545};
546
547struct ofp_flow_delete_strict {
548 uint8_t version;
549 uint8_t type;
550 uint16_t length;
551 uint32_t xid;
552 uint64_t cookie;
553 uint64_t cookie_mask;
554 uint8_t table_id;
555 of_fm_cmd_t _command;
556 uint16_t idle_timeout;
557 uint16_t hard_timeout;
558 uint16_t priority;
559 uint32_t buffer_id;
560 of_port_no_t out_port;
561 uint32_t out_group;
562 uint16_t flags;
563 uint8_t[2] pad;
564 of_match_t match;
565 list(of_instruction_t) instructions;
566};
567
568struct ofp_bucket {
569 uint16_t len;
570 uint16_t weight;
571 of_port_no_t watch_port;
572 uint32_t watch_group;
573 uint8_t[4] pad;
574 list(of_action_t) actions;
575};
576
577struct ofp_group_mod {
578 uint8_t version;
579 uint8_t type;
580 uint16_t length;
581 uint32_t xid;
582 uint16_t command;
583 uint8_t group_type;
584 uint8_t pad;
585 uint32_t group_id;
586 list(of_bucket_t) buckets;
587};
588
589struct ofp_flow_removed {
590 uint8_t version;
591 uint8_t type;
592 uint16_t length;
593 uint32_t xid;
594 uint64_t cookie;
595 uint16_t priority;
596 uint8_t reason;
597 uint8_t table_id;
598 uint32_t duration_sec;
599 uint32_t duration_nsec;
600 uint16_t idle_timeout;
601 uint8_t[2] pad2;
602 uint64_t packet_count;
603 uint64_t byte_count;
604 of_match_t match;
605};
606
607struct ofp_error_msg {
608 uint8_t version;
609 uint8_t type;
610 uint16_t length;
611 uint32_t xid;
612 uint16_t err_type;
613 uint16_t code;
614 of_octets_t data;
615};
616
617// STATS ENTRIES: flow, table, port, group, group_desc
618
619struct ofp_flow_stats_entry {
620 uint16_t length;
621 uint8_t table_id;
622 uint8_t pad;
623 uint32_t duration_sec;
624 uint32_t duration_nsec;
625 uint16_t priority;
626 uint16_t idle_timeout;
627 uint16_t hard_timeout;
628 uint8_t[6] pad2;
629 uint64_t cookie;
630 uint64_t packet_count;
631 uint64_t byte_count;
632 of_match_t match;
633 list(of_instruction_t) instructions;
634};
635
636struct ofp_table_stats_entry {
637 uint8_t table_id;
638 uint8_t[7] pad;
639 of_table_name_t name;
640 of_wc_bmap_t wildcards;
641 of_match_bmap_t match;
642 uint32_t instructions;
643 uint32_t write_actions;
644 uint32_t apply_actions;
645 uint32_t config;
646 uint32_t max_entries;
647 uint32_t active_count;
648 uint64_t lookup_count;
649 uint64_t matched_count;
650};
651
652struct ofp_port_stats_entry {
653 of_port_no_t port_no;
654 uint8_t[4] pad;
655 uint64_t rx_packets;
656 uint64_t tx_packets;
657 uint64_t rx_bytes;
658 uint64_t tx_bytes;
659 uint64_t rx_dropped;
660 uint64_t tx_dropped;
661 uint64_t rx_errors;
662 uint64_t tx_errors;
663 uint64_t rx_frame_err;
664 uint64_t rx_over_err;
665 uint64_t rx_crc_err;
666 uint64_t collisions;
667};
668
669struct ofp_queue_stats_entry {
670 of_port_no_t port_no;
671 uint32_t queue_id;
672 uint64_t tx_bytes;
673 uint64_t tx_packets;
674 uint64_t tx_errors;
675};
676
677struct ofp_bucket_counter {
678 uint64_t packet_count;
679 uint64_t byte_count;
680};
681
682struct ofp_group_stats_entry {
683 uint16_t length;
684 uint8_t[2] pad;
685 uint32_t group_id;
686 uint32_t ref_count;
687 uint8_t[4] pad2;
688 uint64_t packet_count;
689 uint64_t byte_count;
690 list(of_bucket_counter_t) bucket_stats;
691};
692
693struct ofp_group_desc_stats_entry {
694 uint16_t length;
695 uint8_t type;
696 uint8_t pad;
697 uint32_t group_id;
698 list(of_bucket_t) buckets;
699};
700
701// STATS: Desc, flow, agg, table, port, queue, group, group_desc, experi
702
703struct ofp_desc_stats_request {
704 uint8_t version;
705 uint8_t type;
706 uint16_t length;
707 uint32_t xid;
708 uint16_t stats_type;
709 uint16_t flags;
710 uint8_t[4] pad;
711};
712
713struct ofp_desc_stats_reply {
714 uint8_t version;
715 uint8_t type;
716 uint16_t length;
717 uint32_t xid;
718 uint16_t stats_type;
719 uint16_t flags;
720 uint8_t[4] pad;
721 of_desc_str_t mfr_desc;
722 of_desc_str_t hw_desc;
723 of_desc_str_t sw_desc;
724 of_serial_num_t serial_num;
725 of_desc_str_t dp_desc;
726};
727
728struct ofp_flow_stats_request {
729 uint8_t version;
730 uint8_t type;
731 uint16_t length;
732 uint32_t xid;
733 uint16_t stats_type;
734 uint16_t flags;
735 uint8_t[4] pad;
736 uint8_t table_id;
737 uint8_t[3] pad;
738 of_port_no_t out_port;
739 uint32_t out_group;
740 uint8_t[4] pad2;
741 uint64_t cookie;
742 uint64_t cookie_mask;
743 of_match_t match;
744};
745
746struct ofp_flow_stats_reply {
747 uint8_t version;
748 uint8_t type;
749 uint16_t length;
750 uint32_t xid;
751 uint16_t stats_type;
752 uint16_t flags;
753 uint8_t[4] pad;
754 list(of_flow_stats_entry_t) entries;
755};
756
757struct ofp_aggregate_stats_request {
758 uint8_t version;
759 uint8_t type;
760 uint16_t length;
761 uint32_t xid;
762 uint16_t stats_type;
763 uint16_t flags;
764 uint8_t[4] pad;
765 uint8_t table_id;
766 uint8_t[3] pad;
767 of_port_no_t out_port;
768 uint32_t out_group;
769 uint8_t[4] pad2;
770 uint64_t cookie;
771 uint64_t cookie_mask;
772 of_match_t match;
773};
774
775struct ofp_aggregate_stats_reply {
776 uint8_t version;
777 uint8_t type;
778 uint16_t length;
779 uint32_t xid;
780 uint16_t stats_type;
781 uint16_t flags;
782 uint8_t[4] pad;
783 uint64_t packet_count;
784 uint64_t byte_count;
785 uint32_t flow_count;
786 uint8_t[4] pad;
787};
788
789struct ofp_table_stats_request {
790 uint8_t version;
791 uint8_t type;
792 uint16_t length;
793 uint32_t xid;
794 uint16_t stats_type;
795 uint16_t flags;
796 uint8_t[4] pad;
797};
798
799struct ofp_table_stats_reply {
800 uint8_t version;
801 uint8_t type;
802 uint16_t length;
803 uint32_t xid;
804 uint16_t stats_type;
805 uint16_t flags;
806 uint8_t[4] pad;
807 list(of_table_stats_entry_t) entries;
808};
809
810struct ofp_port_stats_request {
811 uint8_t version;
812 uint8_t type;
813 uint16_t length;
814 uint32_t xid;
815 uint16_t stats_type;
816 uint16_t flags;
817 uint8_t[4] pad;
818 of_port_no_t port_no;
819 uint8_t[4] pad;
820};
821
822struct ofp_port_stats_reply {
823 uint8_t version;
824 uint8_t type;
825 uint16_t length;
826 uint32_t xid;
827 uint16_t stats_type;
828 uint16_t flags;
829 uint8_t[4] pad;
830 list(of_port_stats_entry_t) entries;
831};
832
833struct ofp_queue_stats_request {
834 uint8_t version;
835 uint8_t type;
836 uint16_t length;
837 uint32_t xid;
838 uint16_t stats_type;
839 uint16_t flags;
840 uint8_t[4] pad;
841 of_port_no_t port_no;
842 uint32_t queue_id;
843};
844
845struct ofp_queue_stats_reply {
846 uint8_t version;
847 uint8_t type;
848 uint16_t length;
849 uint32_t xid;
850 uint16_t stats_type;
851 uint16_t flags;
852 uint8_t[4] pad;
853 list(of_queue_stats_entry_t) entries;
854};
855
856struct ofp_group_stats_request {
857 uint8_t version;
858 uint8_t type;
859 uint16_t length;
860 uint32_t xid;
861 uint16_t stats_type;
862 uint16_t flags;
863 uint8_t[4] pad;
864 uint32_t group_id;
865 uint8_t[4] pad;
866};
867
868struct ofp_group_stats_reply {
869 uint8_t version;
870 uint8_t type;
871 uint16_t length;
872 uint32_t xid;
873 uint16_t stats_type;
874 uint16_t flags;
875 uint8_t[4] pad;
876 list(of_group_stats_entry_t) entries;
877};
878
879struct ofp_group_desc_stats_request {
880 uint8_t version;
881 uint8_t type;
882 uint16_t length;
883 uint32_t xid;
884 uint16_t stats_type;
885 uint16_t flags;
886 uint8_t[4] pad;
887};
888
889struct ofp_group_desc_stats_reply {
890 uint8_t version;
891 uint8_t type;
892 uint16_t length;
893 uint32_t xid;
894 uint16_t stats_type;
895 uint16_t flags;
896 uint8_t[4] pad;
897 list(of_group_desc_stats_entry_t) entries;
898};
899
900struct ofp_experimenter_stats_request {
901 uint8_t version;
902 uint8_t type;
903 uint16_t length;
904 uint32_t xid;
905 uint16_t stats_type;
906 uint16_t flags;
907 uint8_t[4] pad;
908 uint32_t experimenter;
909 uint8_t[4] pad;
910 of_octets_t data;
911};
912
913struct ofp_experimenter_stats_reply {
914 uint8_t version;
915 uint8_t type;
916 uint16_t length;
917 uint32_t xid;
918 uint16_t stats_type;
919 uint16_t flags;
920 uint8_t[4] pad;
921 uint32_t experimenter;
922 uint8_t[4] pad;
923 of_octets_t data;
924};
925
926// END OF STATS OBJECTS
927
928struct ofp_queue_prop {
929 uint16_t type;
930 uint16_t len;
931 uint8_t[4] pad;
932};
933
934struct ofp_queue_prop_min_rate {
935 uint16_t type;
936 uint16_t len;
937 uint8_t[4] pad;
938 uint16_t rate;
939 uint8_t[6] pad;
940};
941
942struct ofp_packet_queue {
943 uint32_t queue_id;
944 uint16_t len;
945 uint8_t[2] pad;
946 list(of_queue_prop_t) properties;
947};
948
949struct ofp_queue_get_config_request {
950 uint8_t version;
951 uint8_t type;
952 uint16_t length;
953 uint32_t xid;
954 of_port_no_t port;
955 uint8_t[4] pad;
956};
957
958struct ofp_queue_get_config_reply {
959 uint8_t version;
960 uint8_t type;
961 uint16_t length;
962 uint32_t xid;
963 of_port_no_t port;
964 uint8_t[4] pad;
965 list(of_packet_queue_t) queues;
966};