blob: 0961abd0098c17c59376e64f286152dd3b9f1e16 [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 3
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_match_v3 {
182 uint16_t type;
183 uint16_t length;
184 list(of_oxm_t) oxm_list;
185};
186
187struct ofp_oxm_experimenter_header {
188 uint32_t oxm_header;
189 uint32_t experimenter;
190 of_octets_t data;
191};
192
193struct ofp_action_output {
194 uint16_t type;
195 uint16_t len;
196 of_port_no_t port;
197 uint16_t max_len;
198 uint8_t[6] pad;
199};
200
201struct ofp_action_copy_ttl_out {
202 uint16_t type;
203 uint16_t len;
204 uint8_t[4] pad;
205};
206
207struct ofp_action_copy_ttl_in {
208 uint16_t type;
209 uint16_t len;
210 uint8_t[4] pad;
211};
212
213struct ofp_action_set_mpls_ttl {
214 uint16_t type;
215 uint16_t len;
216 uint8_t mpls_ttl;
217 uint8_t[3] pad;
218};
219
220struct ofp_action_dec_mpls_ttl {
221 uint16_t type;
222 uint16_t len;
223 uint8_t[4] pad;
224};
225
226struct ofp_action_push_vlan {
227 uint16_t type;
228 uint16_t len;
229 uint16_t ethertype;
230 uint8_t[2] pad;
231};
232
233struct ofp_action_pop_vlan {
234 uint16_t type;
235 uint16_t len;
236 uint8_t[4] pad;
237};
238
239struct ofp_action_push_mpls {
240 uint16_t type;
241 uint16_t len;
242 uint16_t ethertype;
243 uint8_t[2] pad;
244};
245
246struct ofp_action_pop_mpls {
247 uint16_t type;
248 uint16_t len;
249 uint16_t ethertype;
250 uint8_t[2] pad;
251};
252
253struct ofp_action_set_queue {
254 uint16_t type;
255 uint16_t len;
256 uint32_t queue_id;
257};
258
259struct ofp_action_group {
260 uint16_t type;
261 uint16_t len;
262 uint32_t group_id;
263};
264
265struct ofp_action_set_nw_ttl {
266 uint16_t type;
267 uint16_t len;
268 uint8_t nw_ttl;
269 uint8_t[3] pad;
270};
271
272struct ofp_action_dec_nw_ttl {
273 uint16_t type;
274 uint16_t len;
275 uint8_t[4] pad;
276};
277
278struct ofp_action_set_field {
279 uint16_t type;
280 uint16_t len;
281 of_octets_t field;
282};
283
284struct ofp_action_experimenter {
285 uint16_t type;
286 uint16_t len;
287 uint32_t experimenter;
288 of_octets_t data;
289};
290
291struct ofp_action {
292 uint16_t type;
293 uint16_t len;
294 uint8_t[4] pad;
295};
296
297struct ofp_instruction {
298 uint16_t type;
299 uint16_t len;
300 uint8_t[4] pad;
301};
302
303struct ofp_instruction_goto_table {
304 uint16_t type;
305 uint16_t len;
306 uint8_t table_id;
307 uint8_t[3] pad;
308};
309
310struct ofp_instruction_write_metadata {
311 uint16_t type;
312 uint16_t len;
313 uint8_t[4] pad;
314 uint64_t metadata;
315 uint64_t metadata_mask;
316};
317
318struct ofp_instruction_write_actions {
319 uint16_t type;
320 uint16_t len;
321 uint8_t[4] pad;
322 list(of_action_t) actions;
323};
324
325struct ofp_instruction_apply_actions {
326 uint16_t type;
327 uint16_t len;
328 uint8_t[4] pad;
329 list(of_action_t) actions;
330};
331
332struct ofp_instruction_clear_actions {
333 uint16_t type;
334 uint16_t len;
335 uint8_t[4] pad;
336};
337
338struct ofp_instruction_experimenter {
339 uint16_t type;
340 uint16_t len;
341 uint32_t experimenter;
342 of_octets_t data;
343};
344
345struct ofp_flow_add {
346 uint8_t version;
347 uint8_t type;
348 uint16_t length;
349 uint32_t xid;
350 uint64_t cookie;
351 uint64_t cookie_mask;
352 uint8_t table_id;
353 of_fm_cmd_t _command;
354 uint16_t idle_timeout;
355 uint16_t hard_timeout;
356 uint16_t priority;
357 uint32_t buffer_id;
358 of_port_no_t out_port;
359 uint32_t out_group;
360 uint16_t flags;
361 uint8_t[2] pad;
362 of_match_t match;
363 list(of_instruction_t) instructions;
364};
365
366struct ofp_flow_modify {
367 uint8_t version;
368 uint8_t type;
369 uint16_t length;
370 uint32_t xid;
371 uint64_t cookie;
372 uint64_t cookie_mask;
373 uint8_t table_id;
374 of_fm_cmd_t _command;
375 uint16_t idle_timeout;
376 uint16_t hard_timeout;
377 uint16_t priority;
378 uint32_t buffer_id;
379 of_port_no_t out_port;
380 uint32_t out_group;
381 uint16_t flags;
382 uint8_t[2] pad;
383 of_match_t match;
384 list(of_instruction_t) instructions;
385};
386
387struct ofp_flow_modify_strict {
388 uint8_t version;
389 uint8_t type;
390 uint16_t length;
391 uint32_t xid;
392 uint64_t cookie;
393 uint64_t cookie_mask;
394 uint8_t table_id;
395 of_fm_cmd_t _command;
396 uint16_t idle_timeout;
397 uint16_t hard_timeout;
398 uint16_t priority;
399 uint32_t buffer_id;
400 of_port_no_t out_port;
401 uint32_t out_group;
402 uint16_t flags;
403 uint8_t[2] pad;
404 of_match_t match;
405 list(of_instruction_t) instructions;
406};
407
408struct ofp_flow_delete {
409 uint8_t version;
410 uint8_t type;
411 uint16_t length;
412 uint32_t xid;
413 uint64_t cookie;
414 uint64_t cookie_mask;
415 uint8_t table_id;
416 of_fm_cmd_t _command;
417 uint16_t idle_timeout;
418 uint16_t hard_timeout;
419 uint16_t priority;
420 uint32_t buffer_id;
421 of_port_no_t out_port;
422 uint32_t out_group;
423 uint16_t flags;
424 uint8_t[2] pad;
425 of_match_t match;
426 list(of_instruction_t) instructions;
427};
428
429struct ofp_flow_delete_strict {
430 uint8_t version;
431 uint8_t type;
432 uint16_t length;
433 uint32_t xid;
434 uint64_t cookie;
435 uint64_t cookie_mask;
436 uint8_t table_id;
437 of_fm_cmd_t _command;
438 uint16_t idle_timeout;
439 uint16_t hard_timeout;
440 uint16_t priority;
441 uint32_t buffer_id;
442 of_port_no_t out_port;
443 uint32_t out_group;
444 uint16_t flags;
445 uint8_t[2] pad;
446 of_match_t match;
447 list(of_instruction_t) instructions;
448};
449
450struct ofp_bucket {
451 uint16_t len;
452 uint16_t weight;
453 of_port_no_t watch_port;
454 uint32_t watch_group;
455 uint8_t[4] pad;
456 list(of_action_t) actions;
457};
458
459struct ofp_group_mod {
460 uint8_t version;
461 uint8_t type;
462 uint16_t length;
463 uint32_t xid;
464 uint16_t command;
465 uint8_t group_type;
466 uint8_t pad;
467 uint32_t group_id;
468 list(of_bucket_t) buckets;
469};
470
471struct ofp_packet_out {
472 uint8_t version;
473 uint8_t type;
474 uint16_t length;
475 uint32_t xid;
476 uint32_t buffer_id;
477 of_port_no_t in_port;
478 uint16_t actions_len;
479 uint8_t[6] pad;
480 list(of_action_t) actions;
481 of_octets_t data;
482};
483
484struct ofp_packet_in {
485 uint8_t version;
486 uint8_t type;
487 uint16_t length;
488 uint32_t xid;
489 uint32_t buffer_id;
490 uint16_t total_len;
491 uint8_t reason;
492 uint8_t table_id;
493 of_match_t match;
494 uint8_t[2] pad;
495 of_octets_t data; /* FIXME: Ensure total_len gets updated */
496};
497
498struct ofp_flow_removed {
499 uint8_t version;
500 uint8_t type;
501 uint16_t length;
502 uint32_t xid;
503 uint64_t cookie;
504 uint16_t priority;
505 uint8_t reason;
506 uint8_t table_id;
507 uint32_t duration_sec;
508 uint32_t duration_nsec;
509 uint16_t idle_timeout;
510 uint16_t hard_timeout;
511 uint64_t packet_count;
512 uint64_t byte_count;
513 of_match_t match;
514};
515
516struct ofp_error_msg {
517 uint8_t version;
518 uint8_t type;
519 uint16_t length;
520 uint32_t xid;
521 uint16_t err_type;
522 uint16_t code;
523 of_octets_t data;
524};
525
526// struct ofp_error_experimenter_msg {
527// uint8_t version;
528// uint8_t type;
529// uint16_t length;
530// uint32_t xid;
531// uint16_t err_type;
532// uint16_t subtype;
533// uint32_t experimenter;
534// of_octets_t data;
535//};
536
537// STATS ENTRIES: flow, table, port, queue, group stats, group desc stats
538// FIXME: Verify disambiguation w/ length in object and entry
539
540struct ofp_flow_stats_entry {
541 uint16_t length;
542 uint8_t table_id;
543 uint8_t pad;
544 uint32_t duration_sec;
545 uint32_t duration_nsec;
546 uint16_t priority;
547 uint16_t idle_timeout;
548 uint16_t hard_timeout;
549 uint8_t[6] pad2;
550 uint64_t cookie;
551 uint64_t packet_count;
552 uint64_t byte_count;
553 of_match_t match;
554 list(of_instruction_t) instructions;
555};
556
557struct ofp_table_stats_entry {
558 uint8_t table_id;
559 uint8_t[7] pad;
560 of_table_name_t name;
561 of_match_bmap_t match;
562 of_wc_bmap_t wildcards;
563 uint32_t write_actions;
564 uint32_t apply_actions;
565 uint64_t write_setfields;
566 uint64_t apply_setfields;
567 uint64_t metadata_match;
568 uint64_t metadata_write;
569 uint32_t instructions;
570 uint32_t config;
571 uint32_t max_entries;
572 uint32_t active_count;
573 uint64_t lookup_count;
574 uint64_t matched_count;
575};
576
577struct ofp_port_stats_entry {
578 of_port_no_t port_no;
579 uint8_t[4] pad;
580 uint64_t rx_packets;
581 uint64_t tx_packets;
582 uint64_t rx_bytes;
583 uint64_t tx_bytes;
584 uint64_t rx_dropped;
585 uint64_t tx_dropped;
586 uint64_t rx_errors;
587 uint64_t tx_errors;
588 uint64_t rx_frame_err;
589 uint64_t rx_over_err;
590 uint64_t rx_crc_err;
591 uint64_t collisions;
592};
593
594struct ofp_queue_stats_entry {
595 of_port_no_t port_no;
596 uint32_t queue_id;
597 uint64_t tx_bytes;
598 uint64_t tx_packets;
599 uint64_t tx_errors;
600};
601
602struct ofp_bucket_counter {
603 uint64_t packet_count;
604 uint64_t byte_count;
605};
606
607struct ofp_group_stats_entry {
608 uint16_t length;
609 uint8_t[2] pad;
610 uint32_t group_id;
611 uint32_t ref_count;
612 uint8_t[4] pad2;
613 uint64_t packet_count;
614 uint64_t byte_count;
615 list(of_bucket_counter_t) bucket_stats;
616};
617
618struct ofp_group_desc_stats_entry {
619 uint16_t length;
620 uint8_t type;
621 uint8_t pad;
622 uint32_t group_id;
623 list(of_bucket_t) buckets;
624};
625
626// STATS:
627// Desc, flow, agg, table, port, queue, group, group_desc, group_feat, experi
628
629struct ofp_desc_stats_request {
630 uint8_t version;
631 uint8_t type;
632 uint16_t length;
633 uint32_t xid;
634 uint16_t stats_type;
635 uint16_t flags;
636 uint8_t[4] pad;
637};
638
639struct ofp_desc_stats_reply {
640 uint8_t version;
641 uint8_t type;
642 uint16_t length;
643 uint32_t xid;
644 uint16_t stats_type;
645 uint16_t flags;
646 uint8_t[4] pad;
647 of_desc_str_t mfr_desc;
648 of_desc_str_t hw_desc;
649 of_desc_str_t sw_desc;
650 of_serial_num_t serial_num;
651 of_desc_str_t dp_desc;
652};
653
654struct ofp_flow_stats_request {
655 uint8_t version;
656 uint8_t type;
657 uint16_t length;
658 uint32_t xid;
659 uint16_t stats_type;
660 uint16_t flags;
661 uint8_t[4] pad;
662 uint8_t table_id;
663 uint8_t[3] pad;
664 of_port_no_t out_port;
665 uint32_t out_group;
666 uint8_t[4] pad2;
667 uint64_t cookie;
668 uint64_t cookie_mask;
669 of_match_t match;
670};
671
672struct ofp_flow_stats_reply {
673 uint8_t version;
674 uint8_t type;
675 uint16_t length;
676 uint32_t xid;
677 uint16_t stats_type;
678 uint16_t flags;
679 uint8_t[4] pad;
680 list(of_flow_stats_entry_t) entries;
681};
682
683struct ofp_aggregate_stats_request {
684 uint8_t version;
685 uint8_t type;
686 uint16_t length;
687 uint32_t xid;
688 uint16_t stats_type;
689 uint16_t flags;
690 uint8_t[4] pad;
691 uint8_t table_id;
692 uint8_t[3] pad;
693 of_port_no_t out_port;
694 uint32_t out_group;
695 uint8_t[4] pad2;
696 uint64_t cookie;
697 uint64_t cookie_mask;
698 of_match_t match;
699};
700
701struct ofp_aggregate_stats_reply {
702 uint8_t version;
703 uint8_t type;
704 uint16_t length;
705 uint32_t xid;
706 uint16_t stats_type;
707 uint16_t flags;
708 uint8_t[4] pad;
709 uint64_t packet_count;
710 uint64_t byte_count;
711 uint32_t flow_count;
712 uint8_t[4] pad;
713};
714
715struct ofp_table_stats_request {
716 uint8_t version;
717 uint8_t type;
718 uint16_t length;
719 uint32_t xid;
720 uint16_t stats_type;
721 uint16_t flags;
722 uint8_t[4] pad;
723};
724
725struct ofp_table_stats_reply {
726 uint8_t version;
727 uint8_t type;
728 uint16_t length;
729 uint32_t xid;
730 uint16_t stats_type;
731 uint16_t flags;
732 uint8_t[4] pad;
733 list(of_table_stats_entry_t) entries;
734};
735
736struct ofp_port_stats_request {
737 uint8_t version;
738 uint8_t type;
739 uint16_t length;
740 uint32_t xid;
741 uint16_t stats_type;
742 uint16_t flags;
743 uint8_t[4] pad;
744 of_port_no_t port_no;
745 uint8_t[4] pad;
746};
747
748struct ofp_port_stats_reply {
749 uint8_t version;
750 uint8_t type;
751 uint16_t length;
752 uint32_t xid;
753 uint16_t stats_type;
754 uint16_t flags;
755 uint8_t[4] pad;
756 list(of_port_stats_entry_t) entries;
757};
758
759struct ofp_queue_stats_request {
760 uint8_t version;
761 uint8_t type;
762 uint16_t length;
763 uint32_t xid;
764 uint16_t stats_type;
765 uint16_t flags;
766 uint8_t[4] pad;
767 of_port_no_t port_no;
768 uint32_t queue_id;
769};
770
771struct ofp_queue_stats_reply {
772 uint8_t version;
773 uint8_t type;
774 uint16_t length;
775 uint32_t xid;
776 uint16_t stats_type;
777 uint16_t flags;
778 uint8_t[4] pad;
779 list(of_queue_stats_entry_t) entries;
780};
781
782struct ofp_group_stats_request {
783 uint8_t version;
784 uint8_t type;
785 uint16_t length;
786 uint32_t xid;
787 uint16_t stats_type;
788 uint16_t flags;
789 uint8_t[4] pad;
790 uint32_t group_id;
791 uint8_t[4] pad;
792};
793
794struct ofp_group_stats_reply {
795 uint8_t version;
796 uint8_t type;
797 uint16_t length;
798 uint32_t xid;
799 uint16_t stats_type;
800 uint16_t flags;
801 uint8_t[4] pad;
802 list(of_group_stats_entry_t) entries;
803};
804
805struct ofp_group_desc_stats_request {
806 uint8_t version;
807 uint8_t type;
808 uint16_t length;
809 uint32_t xid;
810 uint16_t stats_type;
811 uint16_t flags;
812 uint8_t[4] pad;
813};
814
815struct ofp_group_desc_stats_reply {
816 uint8_t version;
817 uint8_t type;
818 uint16_t length;
819 uint32_t xid;
820 uint16_t stats_type;
821 uint16_t flags;
822 uint8_t[4] pad;
823 list(of_group_desc_stats_entry_t) entries;
824};
825
826struct ofp_group_features_stats_request {
827 uint8_t version;
828 uint8_t type;
829 uint16_t length;
830 uint32_t xid;
831 uint16_t stats_type;
832 uint16_t flags;
833 uint8_t[4] pad;
834};
835
836struct ofp_group_features_stats_reply {
837 uint8_t version;
838 uint8_t type;
839 uint16_t length;
840 uint32_t xid;
841 uint16_t stats_type;
842 uint16_t flags;
843 uint8_t[4] pad;
844 uint32_t types;
845 uint32_t capabilities;
846 uint32_t max_groups_all;
847 uint32_t max_groups_select;
848 uint32_t max_groups_indirect;
849 uint32_t max_groups_ff;
850 uint32_t actions_all;
851 uint32_t actions_select;
852 uint32_t actions_indirect;
853 uint32_t actions_ff;
854};
855
856struct ofp_experimenter_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 experimenter;
865 uint32_t subtype;
866 of_octets_t data;
867};
868
869struct ofp_experimenter_stats_reply {
870 uint8_t version;
871 uint8_t type;
872 uint16_t length;
873 uint32_t xid;
874 uint16_t stats_type;
875 uint16_t flags;
876 uint8_t[4] pad;
877 uint32_t experimenter;
878 uint32_t subtype;
879 of_octets_t data;
880};
881
882// END OF STATS OBJECTS
883
884struct ofp_queue_prop {
885 uint16_t type;
886 uint16_t len;
887 uint8_t[4] pad;
888};
889
890struct ofp_queue_prop_min_rate {
891 uint16_t type;
892 uint16_t len;
893 uint8_t[4] pad;
894 uint16_t rate;
895 uint8_t[6] pad;
896};
897
898struct ofp_queue_prop_max_rate {
899 uint16_t type;
900 uint16_t len;
901 uint8_t[4] pad;
902 uint16_t rate;
903 uint8_t[6] pad;
904};
905
906struct ofp_queue_prop_experimenter {
907 uint16_t type;
908 uint16_t len;
909 uint8_t[4] pad;
910 uint32_t experimenter;
911 uint8_t[4] pad;
912 of_octets_t data;
913};
914
915struct ofp_packet_queue {
916 uint32_t queue_id;
917 of_port_no_t port;
918 uint16_t len;
919 uint8_t[6] pad;
920 list(of_queue_prop_t) properties;
921};
922
923struct ofp_queue_get_config_request {
924 uint8_t version;
925 uint8_t type;
926 uint16_t length;
927 uint32_t xid;
928 of_port_no_t port;
929 uint8_t[4] pad;
930};
931
932struct ofp_queue_get_config_reply {
933 uint8_t version;
934 uint8_t type;
935 uint16_t length;
936 uint32_t xid;
937 of_port_no_t port;
938 uint8_t[4] pad;
939 list(of_packet_queue_t) queues;
940};
941
942struct ofp_role_request {
943 uint8_t version;
944 uint8_t type;
945 uint16_t length;
946 uint32_t xid;
947 uint32_t role;
948 uint8_t[4] pad;
949 uint64_t generation_id;
950};
951
952struct ofp_role_reply {
953 uint8_t version;
954 uint8_t type;
955 uint16_t length;
956 uint32_t xid;
957 of_octets_t data;
958};