blob: 43b0bcb2d4a27667e2d78720b60ccce58bf4c322 [file] [log] [blame]
Khen Nursimuluaaac7ee2016-12-11 22:03:52 -05001
2module ietf-openflow_13 {
3
4
5 namespace "urn:opencord:params:xml:ns:voltha:ietf-openflow_13";
6 prefix openflow_13;
7
8
9 organization "CORD";
10 contact
11 " Any name";
12
13 description
14 "";
15
16 revision "2016-11-15" {
17 description "Initial revision.";
18 reference "reference";
19 }
20
21 typedef ofp_port_no {
22 type enumeration {
23 enum OFPP_INVALID {
24 description "";
25 }
26 enum OFPP_MAX {
27 description "";
28 }
29 enum OFPP_IN_PORT {
30 description "";
31 }
32 enum OFPP_TABLE {
33 description "";
34 }
35 enum OFPP_NORMAL {
36 description "";
37 }
38 enum OFPP_FLOOD {
39 description "";
40 }
41 enum OFPP_ALL {
42 description "";
43 }
44 enum OFPP_CONTROLLER {
45 description "";
46 }
47 enum OFPP_LOCAL {
48 description "";
49 }
50 enum OFPP_ANY {
51 description "";
52 }
53 }
54 description
55 "Port numbering. Ports are numbered starting from 1.Version number:
56 OpenFlow versions released: 0x01 = 1.0 ; 0x02 = 1.1 ; 0x03 = 1.2
57 0x04 = 1.3
58The most significant bit in the version field is reserved and must
59 be set to zero.
60#define OFP_VERSION 0x04
61#define PIPELINE_TABLES 64
62#define OFP_MAX_TABLE_NAME_LEN 32
63#define OFP_MAX_PORT_NAME_LEN 16
64Official IANA registered port for OpenFlow.#define OFP_TCP_PORT 6653
65#define OFP_SSL_PORT 6653
66#define OFP_ETH_ALEN 6 Bytes in an Ethernet address. ";
67 }
68 typedef ofp_type {
69 type enumeration {
70 enum OFPT_HELLO {
71 description "";
72 }
73 enum OFPT_ERROR {
74 description "";
75 }
76 enum OFPT_ECHO_REQUEST {
77 description "";
78 }
79 enum OFPT_ECHO_REPLY {
80 description "";
81 }
82 enum OFPT_EXPERIMENTER {
83 description "";
84 }
85 enum OFPT_FEATURES_REQUEST {
86 description "";
87 }
88 enum OFPT_FEATURES_REPLY {
89 description "";
90 }
91 enum OFPT_GET_CONFIG_REQUEST {
92 description "";
93 }
94 enum OFPT_GET_CONFIG_REPLY {
95 description "";
96 }
97 enum OFPT_SET_CONFIG {
98 description "";
99 }
100 enum OFPT_PACKET_IN {
101 description "";
102 }
103 enum OFPT_FLOW_REMOVED {
104 description "";
105 }
106 enum OFPT_PORT_STATUS {
107 description "";
108 }
109 enum OFPT_PACKET_OUT {
110 description "";
111 }
112 enum OFPT_FLOW_MOD {
113 description "";
114 }
115 enum OFPT_GROUP_MOD {
116 description "";
117 }
118 enum OFPT_PORT_MOD {
119 description "";
120 }
121 enum OFPT_TABLE_MOD {
122 description "";
123 }
124 enum OFPT_MULTIPART_REQUEST {
125 description "";
126 }
127 enum OFPT_MULTIPART_REPLY {
128 description "";
129 }
130 enum OFPT_BARRIER_REQUEST {
131 description "";
132 }
133 enum OFPT_BARRIER_REPLY {
134 description "";
135 }
136 enum OFPT_QUEUE_GET_CONFIG_REQUEST {
137 description "";
138 }
139 enum OFPT_QUEUE_GET_CONFIG_REPLY {
140 description "";
141 }
142 enum OFPT_ROLE_REQUEST {
143 description "";
144 }
145 enum OFPT_ROLE_REPLY {
146 description "";
147 }
148 enum OFPT_GET_ASYNC_REQUEST {
149 description "";
150 }
151 enum OFPT_GET_ASYNC_REPLY {
152 description "";
153 }
154 enum OFPT_SET_ASYNC {
155 description "";
156 }
157 enum OFPT_METER_MOD {
158 description "";
159 }
160 }
161 description
162 "";
163 }
164 typedef ofp_hello_elem_type {
165 type enumeration {
166 enum OFPHET_INVALID {
167 description "";
168 }
169 enum OFPHET_VERSIONBITMAP {
170 description "";
171 }
172 }
173 description
174 "Hello elements types.";
175 }
176 typedef ofp_config_flags {
177 type enumeration {
178 enum OFPC_FRAG_NORMAL {
179 description "";
180 }
181 enum OFPC_FRAG_DROP {
182 description "";
183 }
184 enum OFPC_FRAG_REASM {
185 description "";
186 }
187 enum OFPC_FRAG_MASK {
188 description "";
189 }
190 }
191 description
192 "#define OFP_DEFAULT_MISS_SEND_LEN 128";
193 }
194 typedef ofp_table_config {
195 type enumeration {
196 enum OFPTC_INVALID {
197 description "";
198 }
199 enum OFPTC_DEPRECATED_MASK {
200 description "";
201 }
202 }
203 description
204 "Flags to configure the table. Reserved for future use.";
205 }
206 typedef ofp_table {
207 type enumeration {
208 enum OFPTT_INVALID {
209 description "";
210 }
211 enum OFPTT_MAX {
212 description "";
213 }
214 enum OFPTT_ALL {
215 description "";
216 }
217 }
218 description
219 "Table numbering. Tables can use any number up to OFPT_MAX.";
220 }
221 typedef ofp_capabilities {
222 type enumeration {
223 enum OFPC_INVALID {
224 description "";
225 }
226 enum OFPC_FLOW_STATS {
227 description "";
228 }
229 enum OFPC_TABLE_STATS {
230 description "";
231 }
232 enum OFPC_PORT_STATS {
233 description "";
234 }
235 enum OFPC_GROUP_STATS {
236 description "";
237 }
238 enum OFPC_IP_REASM {
239 description "";
240 }
241 enum OFPC_QUEUE_STATS {
242 description "";
243 }
244 enum OFPC_PORT_BLOCKED {
245 description "";
246 }
247 }
248 description
249 "Capabilities supported by the datapath.";
250 }
251 typedef ofp_port_config {
252 type enumeration {
253 enum OFPPC_INVALID {
254 description "";
255 }
256 enum OFPPC_PORT_DOWN {
257 description "";
258 }
259 enum OFPPC_NO_RECV {
260 description "";
261 }
262 enum OFPPC_NO_FWD {
263 description "";
264 }
265 enum OFPPC_NO_PACKET_IN {
266 description "";
267 }
268 }
269 description
270 "Flags to indicate behavior of the physical port. These flags are
271 used in ofp_port to describe the current configuration. They are
272 used in the ofp_port_mod message to configure the port's behavior.";
273 }
274 typedef ofp_port_state {
275 type enumeration {
276 enum OFPPS_INVALID {
277 description "";
278 }
279 enum OFPPS_LINK_DOWN {
280 description "";
281 }
282 enum OFPPS_BLOCKED {
283 description "";
284 }
285 enum OFPPS_LIVE {
286 description "";
287 }
288 }
289 description
290 "Current state of the physical port. These are not configurable from
291 the controller.";
292 }
293 typedef ofp_port_features {
294 type enumeration {
295 enum OFPPF_INVALID {
296 description "";
297 }
298 enum OFPPF_10MB_HD {
299 description "";
300 }
301 enum OFPPF_10MB_FD {
302 description "";
303 }
304 enum OFPPF_100MB_HD {
305 description "";
306 }
307 enum OFPPF_100MB_FD {
308 description "";
309 }
310 enum OFPPF_1GB_HD {
311 description "";
312 }
313 enum OFPPF_1GB_FD {
314 description "";
315 }
316 enum OFPPF_10GB_FD {
317 description "";
318 }
319 enum OFPPF_40GB_FD {
320 description "";
321 }
322 enum OFPPF_100GB_FD {
323 description "";
324 }
325 enum OFPPF_1TB_FD {
326 description "";
327 }
328 enum OFPPF_OTHER {
329 description "";
330 }
331 enum OFPPF_COPPER {
332 description "";
333 }
334 enum OFPPF_FIBER {
335 description "";
336 }
337 enum OFPPF_AUTONEG {
338 description "";
339 }
340 enum OFPPF_PAUSE {
341 description "";
342 }
343 enum OFPPF_PAUSE_ASYM {
344 description "";
345 }
346 }
347 description
348 "Features of ports available in a datapath.";
349 }
350 typedef ofp_port_reason {
351 type enumeration {
352 enum OFPPR_ADD {
353 description "";
354 }
355 enum OFPPR_DELETE {
356 description "";
357 }
358 enum OFPPR_MODIFY {
359 description "";
360 }
361 }
362 description
363 "What changed about the physical port";
364 }
365 typedef ofp_match_type {
366 type enumeration {
367 enum OFPMT_STANDARD {
368 description "";
369 }
370 enum OFPMT_OXM {
371 description "";
372 }
373 }
374 description
375 "The match type indicates the match structure (set of fields that compose the
376 match) in use. The match type is placed in the type field at the beginning
377 of all match structures. The OpenFlow Extensible Match type corresponds
378 to OXM TLV format described below and must be supported by all OpenFlow
379 switches. Extensions that define other match types may be published on the
380 ONF wiki. Support for extensions is optional.
381## -------------------------- #### OpenFlow Extensible Match. #### -------------------------- ##";
382 }
383 typedef ofp_oxm_class {
384 type enumeration {
385 enum OFPXMC_NXM_0 {
386 description "";
387 }
388 enum OFPXMC_NXM_1 {
389 description "";
390 }
391 enum OFPXMC_OPENFLOW_BASIC {
392 description "";
393 }
394 enum OFPXMC_EXPERIMENTER {
395 description "";
396 }
397 }
398 description
399 "OXM Class IDs.
400 The high order bit differentiate reserved classes from member classes.
401 Classes 0x0000 to 0x7FFF are member classes, allocated by ONF.
402 Classes 0x8000 to 0xFFFE are reserved classes, reserved for standardisation.
403Components of a OXM TLV header.
404 Those macros are not valid for the experimenter class, macros for the
405 experimenter class will depend on the experimenter header used.#define OXM_HEADER__(CLASS, FIELD, HASMASK, LENGTH)
406 (((CLASS) << 16) | ((FIELD) << 9) | ((HASMASK) << 8) | (LENGTH))
407#define OXM_HEADER(CLASS, FIELD, LENGTH)
408 OXM_HEADER__(CLASS, FIELD, 0, LENGTH)
409#define OXM_HEADER_W(CLASS, FIELD, LENGTH)
410 OXM_HEADER__(CLASS, FIELD, 1, (LENGTH) 2)
411#define OXM_CLASS(HEADER) ((HEADER) >> 16)
412#define OXM_FIELD(HEADER) (((HEADER) >> 9) & 0x7f)
413#define OXM_TYPE(HEADER) (((HEADER) >> 9) & 0x7fffff)
414#define OXM_HASMASK(HEADER) (((HEADER) >> 8) & 1)
415#define OXM_LENGTH(HEADER) ((HEADER) & 0xff)
416
417#define OXM_MAKE_WILD_HEADER(HEADER)
418 OXM_HEADER_W(OXM_CLASS(HEADER), OXM_FIELD(HEADER), OXM_LENGTH(HEADER))";
419 }
420 typedef oxm_ofb_field_types {
421 type enumeration {
422 enum OFPXMT_OFB_IN_PORT {
423 description "";
424 }
425 enum OFPXMT_OFB_IN_PHY_PORT {
426 description "";
427 }
428 enum OFPXMT_OFB_METADATA {
429 description "";
430 }
431 enum OFPXMT_OFB_ETH_DST {
432 description "";
433 }
434 enum OFPXMT_OFB_ETH_SRC {
435 description "";
436 }
437 enum OFPXMT_OFB_ETH_TYPE {
438 description "";
439 }
440 enum OFPXMT_OFB_VLAN_VID {
441 description "";
442 }
443 enum OFPXMT_OFB_VLAN_PCP {
444 description "";
445 }
446 enum OFPXMT_OFB_IP_DSCP {
447 description "";
448 }
449 enum OFPXMT_OFB_IP_ECN {
450 description "";
451 }
452 enum OFPXMT_OFB_IP_PROTO {
453 description "";
454 }
455 enum OFPXMT_OFB_IPV4_SRC {
456 description "";
457 }
458 enum OFPXMT_OFB_IPV4_DST {
459 description "";
460 }
461 enum OFPXMT_OFB_TCP_SRC {
462 description "";
463 }
464 enum OFPXMT_OFB_TCP_DST {
465 description "";
466 }
467 enum OFPXMT_OFB_UDP_SRC {
468 description "";
469 }
470 enum OFPXMT_OFB_UDP_DST {
471 description "";
472 }
473 enum OFPXMT_OFB_SCTP_SRC {
474 description "";
475 }
476 enum OFPXMT_OFB_SCTP_DST {
477 description "";
478 }
479 enum OFPXMT_OFB_ICMPV4_TYPE {
480 description "";
481 }
482 enum OFPXMT_OFB_ICMPV4_CODE {
483 description "";
484 }
485 enum OFPXMT_OFB_ARP_OP {
486 description "";
487 }
488 enum OFPXMT_OFB_ARP_SPA {
489 description "";
490 }
491 enum OFPXMT_OFB_ARP_TPA {
492 description "";
493 }
494 enum OFPXMT_OFB_ARP_SHA {
495 description "";
496 }
497 enum OFPXMT_OFB_ARP_THA {
498 description "";
499 }
500 enum OFPXMT_OFB_IPV6_SRC {
501 description "";
502 }
503 enum OFPXMT_OFB_IPV6_DST {
504 description "";
505 }
506 enum OFPXMT_OFB_IPV6_FLABEL {
507 description "";
508 }
509 enum OFPXMT_OFB_ICMPV6_TYPE {
510 description "";
511 }
512 enum OFPXMT_OFB_ICMPV6_CODE {
513 description "";
514 }
515 enum OFPXMT_OFB_IPV6_ND_TARGET {
516 description "";
517 }
518 enum OFPXMT_OFB_IPV6_ND_SLL {
519 description "";
520 }
521 enum OFPXMT_OFB_IPV6_ND_TLL {
522 description "";
523 }
524 enum OFPXMT_OFB_MPLS_LABEL {
525 description "";
526 }
527 enum OFPXMT_OFB_MPLS_TC {
528 description "";
529 }
530 enum OFPXMT_OFB_MPLS_BOS {
531 description "";
532 }
533 enum OFPXMT_OFB_PBB_ISID {
534 description "";
535 }
536 enum OFPXMT_OFB_TUNNEL_ID {
537 description "";
538 }
539 enum OFPXMT_OFB_IPV6_EXTHDR {
540 description "";
541 }
542 }
543 description
544 "OXM Flow field types for OpenFlow basic class.";
545 }
546 typedef ofp_vlan_id {
547 type enumeration {
548 enum OFPVID_NONE {
549 description "";
550 }
551 enum OFPVID_PRESENT {
552 description "";
553 }
554 }
555 description
556 "The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
557 special conditions.";
558 }
559 typedef ofp_ipv6exthdr_flags {
560 type enumeration {
561 enum OFPIEH_INVALID {
562 description "";
563 }
564 enum OFPIEH_NONEXT {
565 description "";
566 }
567 enum OFPIEH_ESP {
568 description "";
569 }
570 enum OFPIEH_AUTH {
571 description "";
572 }
573 enum OFPIEH_DEST {
574 description "";
575 }
576 enum OFPIEH_FRAG {
577 description "";
578 }
579 enum OFPIEH_ROUTER {
580 description "";
581 }
582 enum OFPIEH_HOP {
583 description "";
584 }
585 enum OFPIEH_UNREP {
586 description "";
587 }
588 enum OFPIEH_UNSEQ {
589 description "";
590 }
591 }
592 description
593 "Bit definitions for IPv6 Extension Header pseudo-field.#define OFP_VLAN_NONE OFPVID_NONE";
594 }
595 typedef ofp_action_type {
596 type enumeration {
597 enum OFPAT_OUTPUT {
598 description "";
599 }
600 enum OFPAT_COPY_TTL_OUT {
601 description "";
602 }
603 enum OFPAT_COPY_TTL_IN {
604 description "";
605 }
606 enum OFPAT_SET_MPLS_TTL {
607 description "";
608 }
609 enum OFPAT_DEC_MPLS_TTL {
610 description "";
611 }
612 enum OFPAT_PUSH_VLAN {
613 description "";
614 }
615 enum OFPAT_POP_VLAN {
616 description "";
617 }
618 enum OFPAT_PUSH_MPLS {
619 description "";
620 }
621 enum OFPAT_POP_MPLS {
622 description "";
623 }
624 enum OFPAT_SET_QUEUE {
625 description "";
626 }
627 enum OFPAT_GROUP {
628 description "";
629 }
630 enum OFPAT_SET_NW_TTL {
631 description "";
632 }
633 enum OFPAT_DEC_NW_TTL {
634 description "";
635 }
636 enum OFPAT_SET_FIELD {
637 description "";
638 }
639 enum OFPAT_PUSH_PBB {
640 description "";
641 }
642 enum OFPAT_POP_PBB {
643 description "";
644 }
645 enum OFPAT_EXPERIMENTER {
646 description "";
647 }
648 }
649 description
650 "## ----------------- #### OpenFlow Actions. #### ----------------- ##";
651 }
652 typedef ofp_controller_max_len {
653 type enumeration {
654 enum OFPCML_INVALID {
655 description "";
656 }
657 enum OFPCML_MAX {
658 description "";
659 }
660 enum OFPCML_NO_BUFFER {
661 description "";
662 }
663 }
664 description
665 "";
666 }
667 typedef ofp_instruction_type {
668 type enumeration {
669 enum OFPIT_INVALID {
670 description "";
671 }
672 enum OFPIT_GOTO_TABLE {
673 description "";
674 }
675 enum OFPIT_WRITE_METADATA {
676 description "";
677 }
678 enum OFPIT_WRITE_ACTIONS {
679 description "";
680 }
681 enum OFPIT_APPLY_ACTIONS {
682 description "";
683 }
684 enum OFPIT_CLEAR_ACTIONS {
685 description "";
686 }
687 enum OFPIT_METER {
688 description "";
689 }
690 enum OFPIT_EXPERIMENTER {
691 description "";
692 }
693 }
694 description
695 "## ---------------------- #### OpenFlow Instructions. #### ---------------------- ##";
696 }
697 typedef ofp_flow_mod_command {
698 type enumeration {
699 enum OFPFC_ADD {
700 description "";
701 }
702 enum OFPFC_MODIFY {
703 description "";
704 }
705 enum OFPFC_MODIFY_STRICT {
706 description "";
707 }
708 enum OFPFC_DELETE {
709 description "";
710 }
711 enum OFPFC_DELETE_STRICT {
712 description "";
713 }
714 }
715 description
716 "## --------------------------- #### OpenFlow Flow Modification. #### --------------------------- ##";
717 }
718 typedef ofp_flow_mod_flags {
719 type enumeration {
720 enum OFPFF_INVALID {
721 description "";
722 }
723 enum OFPFF_SEND_FLOW_REM {
724 description "";
725 }
726 enum OFPFF_CHECK_OVERLAP {
727 description "";
728 }
729 enum OFPFF_RESET_COUNTS {
730 description "";
731 }
732 enum OFPFF_NO_PKT_COUNTS {
733 description "";
734 }
735 enum OFPFF_NO_BYT_COUNTS {
736 description "";
737 }
738 }
739 description
740 "Value used in idle_timeout and hard_timeout to indicate that the entry
741 is permanent.#define OFP_FLOW_PERMANENT 0
742By default, choose a priority in the middle.#define OFP_DEFAULT_PRIORITY 0x8000";
743 }
744 typedef ofp_group {
745 type enumeration {
746 enum OFPG_INVALID {
747 description "";
748 }
749 enum OFPG_MAX {
750 description "";
751 }
752 enum OFPG_ALL {
753 description "";
754 }
755 enum OFPG_ANY {
756 description "";
757 }
758 }
759 description
760 "Group numbering. Groups can use any number up to OFPG_MAX.";
761 }
762 typedef ofp_group_mod_command {
763 type enumeration {
764 enum OFPGC_ADD {
765 description "";
766 }
767 enum OFPGC_MODIFY {
768 description "";
769 }
770 enum OFPGC_DELETE {
771 description "";
772 }
773 }
774 description
775 "Group commands";
776 }
777 typedef ofp_group_type {
778 type enumeration {
779 enum OFPGT_ALL {
780 description "";
781 }
782 enum OFPGT_SELECT {
783 description "";
784 }
785 enum OFPGT_INDIRECT {
786 description "";
787 }
788 enum OFPGT_FF {
789 description "";
790 }
791 }
792 description
793 "Group types. Values in the range 128; 255 are reserved for experimental
794 use.";
795 }
796 typedef ofp_packet_in_reason {
797 type enumeration {
798 enum OFPR_NO_MATCH {
799 description "";
800 }
801 enum OFPR_ACTION {
802 description "";
803 }
804 enum OFPR_INVALID_TTL {
805 description "";
806 }
807 }
808 description
809 "Why is this packet being sent to the controller?";
810 }
811 typedef ofp_flow_removed_reason {
812 type enumeration {
813 enum OFPRR_IDLE_TIMEOUT {
814 description "";
815 }
816 enum OFPRR_HARD_TIMEOUT {
817 description "";
818 }
819 enum OFPRR_DELETE {
820 description "";
821 }
822 enum OFPRR_GROUP_DELETE {
823 description "";
824 }
825 enum OFPRR_METER_DELETE {
826 description "";
827 }
828 }
829 description
830 "Why was this flow removed?";
831 }
832 typedef ofp_meter {
833 type enumeration {
834 enum OFPM_ZERO {
835 description "";
836 }
837 enum OFPM_MAX {
838 description "";
839 }
840 enum OFPM_SLOWPATH {
841 description "";
842 }
843 enum OFPM_CONTROLLER {
844 description "";
845 }
846 enum OFPM_ALL {
847 description "";
848 }
849 }
850 description
851 "Meter numbering. Flow meters can use any number up to OFPM_MAX.";
852 }
853 typedef ofp_meter_band_type {
854 type enumeration {
855 enum OFPMBT_INVALID {
856 description "";
857 }
858 enum OFPMBT_DROP {
859 description "";
860 }
861 enum OFPMBT_DSCP_REMARK {
862 description "";
863 }
864 enum OFPMBT_EXPERIMENTER {
865 description "";
866 }
867 }
868 description
869 "Meter band types";
870 }
871 typedef ofp_meter_mod_command {
872 type enumeration {
873 enum OFPMC_ADD {
874 description "";
875 }
876 enum OFPMC_MODIFY {
877 description "";
878 }
879 enum OFPMC_DELETE {
880 description "";
881 }
882 }
883 description
884 "Meter commands";
885 }
886 typedef ofp_meter_flags {
887 type enumeration {
888 enum OFPMF_INVALID {
889 description "";
890 }
891 enum OFPMF_KBPS {
892 description "";
893 }
894 enum OFPMF_PKTPS {
895 description "";
896 }
897 enum OFPMF_BURST {
898 description "";
899 }
900 enum OFPMF_STATS {
901 description "";
902 }
903 }
904 description
905 "Meter configuration flags";
906 }
907 typedef ofp_error_type {
908 type enumeration {
909 enum OFPET_HELLO_FAILED {
910 description "";
911 }
912 enum OFPET_BAD_REQUEST {
913 description "";
914 }
915 enum OFPET_BAD_ACTION {
916 description "";
917 }
918 enum OFPET_BAD_INSTRUCTION {
919 description "";
920 }
921 enum OFPET_BAD_MATCH {
922 description "";
923 }
924 enum OFPET_FLOW_MOD_FAILED {
925 description "";
926 }
927 enum OFPET_GROUP_MOD_FAILED {
928 description "";
929 }
930 enum OFPET_PORT_MOD_FAILED {
931 description "";
932 }
933 enum OFPET_TABLE_MOD_FAILED {
934 description "";
935 }
936 enum OFPET_QUEUE_OP_FAILED {
937 description "";
938 }
939 enum OFPET_SWITCH_CONFIG_FAILED {
940 description "";
941 }
942 enum OFPET_ROLE_REQUEST_FAILED {
943 description "";
944 }
945 enum OFPET_METER_MOD_FAILED {
946 description "";
947 }
948 enum OFPET_TABLE_FEATURES_FAILED {
949 description "";
950 }
951 enum OFPET_EXPERIMENTER {
952 description "";
953 }
954 }
955 description
956 "Values for 'type' in ofp_error_message. These values are immutable: they
957 will not change in future versions of the protocol (although new values may
958 be added).";
959 }
960 typedef ofp_hello_failed_code {
961 type enumeration {
962 enum OFPHFC_INCOMPATIBLE {
963 description "";
964 }
965 enum OFPHFC_EPERM {
966 description "";
967 }
968 }
969 description
970 "ofp_error_msg 'code' values for OFPET_HELLO_FAILED. 'data' contains an
971 ASCII text string that may give failure details.";
972 }
973 typedef ofp_bad_request_code {
974 type enumeration {
975 enum OFPBRC_BAD_VERSION {
976 description "";
977 }
978 enum OFPBRC_BAD_TYPE {
979 description "";
980 }
981 enum OFPBRC_BAD_MULTIPART {
982 description "";
983 }
984 enum OFPBRC_BAD_EXPERIMENTER {
985 description "";
986 }
987 enum OFPBRC_BAD_EXP_TYPE {
988 description "";
989 }
990 enum OFPBRC_EPERM {
991 description "";
992 }
993 enum OFPBRC_BAD_LEN {
994 description "";
995 }
996 enum OFPBRC_BUFFER_EMPTY {
997 description "";
998 }
999 enum OFPBRC_BUFFER_UNKNOWN {
1000 description "";
1001 }
1002 enum OFPBRC_BAD_TABLE_ID {
1003 description "";
1004 }
1005 enum OFPBRC_IS_SLAVE {
1006 description "";
1007 }
1008 enum OFPBRC_BAD_PORT {
1009 description "";
1010 }
1011 enum OFPBRC_BAD_PACKET {
1012 description "";
1013 }
1014 enum OFPBRC_MULTIPART_BUFFER_OVERFLOW {
1015 description "";
1016 }
1017 }
1018 description
1019 "ofp_error_msg 'code' values for OFPET_BAD_REQUEST. 'data' contains at least
1020 the first 64 bytes of the failed request.";
1021 }
1022 typedef ofp_bad_action_code {
1023 type enumeration {
1024 enum OFPBAC_BAD_TYPE {
1025 description "";
1026 }
1027 enum OFPBAC_BAD_LEN {
1028 description "";
1029 }
1030 enum OFPBAC_BAD_EXPERIMENTER {
1031 description "";
1032 }
1033 enum OFPBAC_BAD_EXP_TYPE {
1034 description "";
1035 }
1036 enum OFPBAC_BAD_OUT_PORT {
1037 description "";
1038 }
1039 enum OFPBAC_BAD_ARGUMENT {
1040 description "";
1041 }
1042 enum OFPBAC_EPERM {
1043 description "";
1044 }
1045 enum OFPBAC_TOO_MANY {
1046 description "";
1047 }
1048 enum OFPBAC_BAD_QUEUE {
1049 description "";
1050 }
1051 enum OFPBAC_BAD_OUT_GROUP {
1052 description "";
1053 }
1054 enum OFPBAC_MATCH_INCONSISTENT {
1055 description "";
1056 }
1057 enum OFPBAC_UNSUPPORTED_ORDER {
1058 description "";
1059 }
1060 enum OFPBAC_BAD_TAG {
1061 description "";
1062 }
1063 enum OFPBAC_BAD_SET_TYPE {
1064 description "";
1065 }
1066 enum OFPBAC_BAD_SET_LEN {
1067 description "";
1068 }
1069 enum OFPBAC_BAD_SET_ARGUMENT {
1070 description "";
1071 }
1072 }
1073 description
1074 "ofp_error_msg 'code' values for OFPET_BAD_ACTION. 'data' contains at least
1075 the first 64 bytes of the failed request.";
1076 }
1077 typedef ofp_bad_instruction_code {
1078 type enumeration {
1079 enum OFPBIC_UNKNOWN_INST {
1080 description "";
1081 }
1082 enum OFPBIC_UNSUP_INST {
1083 description "";
1084 }
1085 enum OFPBIC_BAD_TABLE_ID {
1086 description "";
1087 }
1088 enum OFPBIC_UNSUP_METADATA {
1089 description "";
1090 }
1091 enum OFPBIC_UNSUP_METADATA_MASK {
1092 description "";
1093 }
1094 enum OFPBIC_BAD_EXPERIMENTER {
1095 description "";
1096 }
1097 enum OFPBIC_BAD_EXP_TYPE {
1098 description "";
1099 }
1100 enum OFPBIC_BAD_LEN {
1101 description "";
1102 }
1103 enum OFPBIC_EPERM {
1104 description "";
1105 }
1106 }
1107 description
1108 "ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION. 'data' contains at
1109 least the first 64 bytes of the failed request.";
1110 }
1111 typedef ofp_bad_match_code {
1112 type enumeration {
1113 enum OFPBMC_BAD_TYPE {
1114 description "";
1115 }
1116 enum OFPBMC_BAD_LEN {
1117 description "";
1118 }
1119 enum OFPBMC_BAD_TAG {
1120 description "";
1121 }
1122 enum OFPBMC_BAD_DL_ADDR_MASK {
1123 description "";
1124 }
1125 enum OFPBMC_BAD_NW_ADDR_MASK {
1126 description "";
1127 }
1128 enum OFPBMC_BAD_WILDCARDS {
1129 description "";
1130 }
1131 enum OFPBMC_BAD_FIELD {
1132 description "";
1133 }
1134 enum OFPBMC_BAD_VALUE {
1135 description "";
1136 }
1137 enum OFPBMC_BAD_MASK {
1138 description "";
1139 }
1140 enum OFPBMC_BAD_PREREQ {
1141 description "";
1142 }
1143 enum OFPBMC_DUP_FIELD {
1144 description "";
1145 }
1146 enum OFPBMC_EPERM {
1147 description "";
1148 }
1149 }
1150 description
1151 "ofp_error_msg 'code' values for OFPET_BAD_MATCH. 'data' contains at least
1152 the first 64 bytes of the failed request.";
1153 }
1154 typedef ofp_flow_mod_failed_code {
1155 type enumeration {
1156 enum OFPFMFC_UNKNOWN {
1157 description "";
1158 }
1159 enum OFPFMFC_TABLE_FULL {
1160 description "";
1161 }
1162 enum OFPFMFC_BAD_TABLE_ID {
1163 description "";
1164 }
1165 enum OFPFMFC_OVERLAP {
1166 description "";
1167 }
1168 enum OFPFMFC_EPERM {
1169 description "";
1170 }
1171 enum OFPFMFC_BAD_TIMEOUT {
1172 description "";
1173 }
1174 enum OFPFMFC_BAD_COMMAND {
1175 description "";
1176 }
1177 enum OFPFMFC_BAD_FLAGS {
1178 description "";
1179 }
1180 }
1181 description
1182 "ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED. 'data' contains
1183 at least the first 64 bytes of the failed request.";
1184 }
1185 typedef ofp_group_mod_failed_code {
1186 type enumeration {
1187 enum OFPGMFC_GROUP_EXISTS {
1188 description "";
1189 }
1190 enum OFPGMFC_INVALID_GROUP {
1191 description "";
1192 }
1193 enum OFPGMFC_WEIGHT_UNSUPPORTED {
1194 description "";
1195 }
1196 enum OFPGMFC_OUT_OF_GROUPS {
1197 description "";
1198 }
1199 enum OFPGMFC_OUT_OF_BUCKETS {
1200 description "";
1201 }
1202 enum OFPGMFC_CHAINING_UNSUPPORTED {
1203 description "";
1204 }
1205 enum OFPGMFC_WATCH_UNSUPPORTED {
1206 description "";
1207 }
1208 enum OFPGMFC_LOOP {
1209 description "";
1210 }
1211 enum OFPGMFC_UNKNOWN_GROUP {
1212 description "";
1213 }
1214 enum OFPGMFC_CHAINED_GROUP {
1215 description "";
1216 }
1217 enum OFPGMFC_BAD_TYPE {
1218 description "";
1219 }
1220 enum OFPGMFC_BAD_COMMAND {
1221 description "";
1222 }
1223 enum OFPGMFC_BAD_BUCKET {
1224 description "";
1225 }
1226 enum OFPGMFC_BAD_WATCH {
1227 description "";
1228 }
1229 enum OFPGMFC_EPERM {
1230 description "";
1231 }
1232 }
1233 description
1234 "ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED. 'data' contains
1235 at least the first 64 bytes of the failed request.";
1236 }
1237 typedef ofp_port_mod_failed_code {
1238 type enumeration {
1239 enum OFPPMFC_BAD_PORT {
1240 description "";
1241 }
1242 enum OFPPMFC_BAD_HW_ADDR {
1243 description "";
1244 }
1245 enum OFPPMFC_BAD_CONFIG {
1246 description "";
1247 }
1248 enum OFPPMFC_BAD_ADVERTISE {
1249 description "";
1250 }
1251 enum OFPPMFC_EPERM {
1252 description "";
1253 }
1254 }
1255 description
1256 "ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED. 'data' contains
1257 at least the first 64 bytes of the failed request.";
1258 }
1259 typedef ofp_table_mod_failed_code {
1260 type enumeration {
1261 enum OFPTMFC_BAD_TABLE {
1262 description "";
1263 }
1264 enum OFPTMFC_BAD_CONFIG {
1265 description "";
1266 }
1267 enum OFPTMFC_EPERM {
1268 description "";
1269 }
1270 }
1271 description
1272 "ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED. 'data' contains
1273 at least the first 64 bytes of the failed request.";
1274 }
1275 typedef ofp_queue_op_failed_code {
1276 type enumeration {
1277 enum OFPQOFC_BAD_PORT {
1278 description "";
1279 }
1280 enum OFPQOFC_BAD_QUEUE {
1281 description "";
1282 }
1283 enum OFPQOFC_EPERM {
1284 description "";
1285 }
1286 }
1287 description
1288 "ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
1289 at least the first 64 bytes of the failed request";
1290 }
1291 typedef ofp_switch_config_failed_code {
1292 type enumeration {
1293 enum OFPSCFC_BAD_FLAGS {
1294 description "";
1295 }
1296 enum OFPSCFC_BAD_LEN {
1297 description "";
1298 }
1299 enum OFPSCFC_EPERM {
1300 description "";
1301 }
1302 }
1303 description
1304 "ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
1305 at least the first 64 bytes of the failed request.";
1306 }
1307 typedef ofp_role_request_failed_code {
1308 type enumeration {
1309 enum OFPRRFC_STALE {
1310 description "";
1311 }
1312 enum OFPRRFC_UNSUP {
1313 description "";
1314 }
1315 enum OFPRRFC_BAD_ROLE {
1316 description "";
1317 }
1318 }
1319 description
1320 "ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
1321 at least the first 64 bytes of the failed request.";
1322 }
1323 typedef ofp_meter_mod_failed_code {
1324 type enumeration {
1325 enum OFPMMFC_UNKNOWN {
1326 description "";
1327 }
1328 enum OFPMMFC_METER_EXISTS {
1329 description "";
1330 }
1331 enum OFPMMFC_INVALID_METER {
1332 description "";
1333 }
1334 enum OFPMMFC_UNKNOWN_METER {
1335 description "";
1336 }
1337 enum OFPMMFC_BAD_COMMAND {
1338 description "";
1339 }
1340 enum OFPMMFC_BAD_FLAGS {
1341 description "";
1342 }
1343 enum OFPMMFC_BAD_RATE {
1344 description "";
1345 }
1346 enum OFPMMFC_BAD_BURST {
1347 description "";
1348 }
1349 enum OFPMMFC_BAD_BAND {
1350 description "";
1351 }
1352 enum OFPMMFC_BAD_BAND_VALUE {
1353 description "";
1354 }
1355 enum OFPMMFC_OUT_OF_METERS {
1356 description "";
1357 }
1358 enum OFPMMFC_OUT_OF_BANDS {
1359 description "";
1360 }
1361 }
1362 description
1363 "ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED. 'data' contains
1364 at least the first 64 bytes of the failed request.";
1365 }
1366 typedef ofp_table_features_failed_code {
1367 type enumeration {
1368 enum OFPTFFC_BAD_TABLE {
1369 description "";
1370 }
1371 enum OFPTFFC_BAD_METADATA {
1372 description "";
1373 }
1374 enum OFPTFFC_BAD_TYPE {
1375 description "";
1376 }
1377 enum OFPTFFC_BAD_LEN {
1378 description "";
1379 }
1380 enum OFPTFFC_BAD_ARGUMENT {
1381 description "";
1382 }
1383 enum OFPTFFC_EPERM {
1384 description "";
1385 }
1386 }
1387 description
1388 "ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
1389 at least the first 64 bytes of the failed request.";
1390 }
1391 typedef ofp_multipart_type {
1392 type enumeration {
1393 enum OFPMP_DESC {
1394 description "";
1395 }
1396 enum OFPMP_FLOW {
1397 description "";
1398 }
1399 enum OFPMP_AGGREGATE {
1400 description "";
1401 }
1402 enum OFPMP_TABLE {
1403 description "";
1404 }
1405 enum OFPMP_PORT_STATS {
1406 description "";
1407 }
1408 enum OFPMP_QUEUE {
1409 description "";
1410 }
1411 enum OFPMP_GROUP {
1412 description "";
1413 }
1414 enum OFPMP_GROUP_DESC {
1415 description "";
1416 }
1417 enum OFPMP_GROUP_FEATURES {
1418 description "";
1419 }
1420 enum OFPMP_METER {
1421 description "";
1422 }
1423 enum OFPMP_METER_CONFIG {
1424 description "";
1425 }
1426 enum OFPMP_METER_FEATURES {
1427 description "";
1428 }
1429 enum OFPMP_TABLE_FEATURES {
1430 description "";
1431 }
1432 enum OFPMP_PORT_DESC {
1433 description "";
1434 }
1435 enum OFPMP_EXPERIMENTER {
1436 description "";
1437 }
1438 }
1439 description
1440 "";
1441 }
1442 typedef ofp_multipart_request_flags {
1443 type enumeration {
1444 enum OFPMPF_REQ_INVALID {
1445 description "";
1446 }
1447 enum OFPMPF_REQ_MORE {
1448 description "";
1449 }
1450 }
1451 description
1452 "Backward compatibility with 1.3.1 - avoid breaking the API.#define ofp_multipart_types ofp_multipart_type";
1453 }
1454 typedef ofp_multipart_reply_flags {
1455 type enumeration {
1456 enum OFPMPF_REPLY_INVALID {
1457 description "";
1458 }
1459 enum OFPMPF_REPLY_MORE {
1460 description "";
1461 }
1462 }
1463 description
1464 "";
1465 }
1466 typedef ofp_table_feature_prop_type {
1467 type enumeration {
1468 enum OFPTFPT_INSTRUCTIONS {
1469 description "";
1470 }
1471 enum OFPTFPT_INSTRUCTIONS_MISS {
1472 description "";
1473 }
1474 enum OFPTFPT_NEXT_TABLES {
1475 description "";
1476 }
1477 enum OFPTFPT_NEXT_TABLES_MISS {
1478 description "";
1479 }
1480 enum OFPTFPT_WRITE_ACTIONS {
1481 description "";
1482 }
1483 enum OFPTFPT_WRITE_ACTIONS_MISS {
1484 description "";
1485 }
1486 enum OFPTFPT_APPLY_ACTIONS {
1487 description "";
1488 }
1489 enum OFPTFPT_APPLY_ACTIONS_MISS {
1490 description "";
1491 }
1492 enum OFPTFPT_MATCH {
1493 description "";
1494 }
1495 enum OFPTFPT_WILDCARDS {
1496 description "";
1497 }
1498 enum OFPTFPT_WRITE_SETFIELD {
1499 description "";
1500 }
1501 enum OFPTFPT_WRITE_SETFIELD_MISS {
1502 description "";
1503 }
1504 enum OFPTFPT_APPLY_SETFIELD {
1505 description "";
1506 }
1507 enum OFPTFPT_APPLY_SETFIELD_MISS {
1508 description "";
1509 }
1510 enum OFPTFPT_EXPERIMENTER {
1511 description "";
1512 }
1513 enum OFPTFPT_EXPERIMENTER_MISS {
1514 description "";
1515 }
1516 }
1517 description
1518 "Table Feature property types.
1519 Low order bit cleared indicates a property for a regular Flow Entry.
1520 Low order bit set indicates a property for the Table-Miss Flow Entry.";
1521 }
1522 typedef ofp_group_capabilities {
1523 type enumeration {
1524 enum OFPGFC_INVALID {
1525 description "";
1526 }
1527 enum OFPGFC_SELECT_WEIGHT {
1528 description "";
1529 }
1530 enum OFPGFC_SELECT_LIVENESS {
1531 description "";
1532 }
1533 enum OFPGFC_CHAINING {
1534 description "";
1535 }
1536 enum OFPGFC_CHAINING_CHECKS {
1537 description "";
1538 }
1539 }
1540 description
1541 "Group configuration flagsBackward compatibility with 1.3.1 - avoid breaking the API.#define ofp_group_desc_stats ofp_group_desc";
1542 }
1543 typedef ofp_queue_properties {
1544 type enumeration {
1545 enum OFPQT_INVALID {
1546 description "";
1547 }
1548 enum OFPQT_MIN_RATE {
1549 description "";
1550 }
1551 enum OFPQT_MAX_RATE {
1552 description "";
1553 }
1554 enum OFPQT_EXPERIMENTER {
1555 description "";
1556 }
1557 }
1558 description
1559 "All ones is used to indicate all queues in a port (for stats retrieval).#define OFPQ_ALL 0xffffffff
1560Min rate > 1000 means not configured.#define OFPQ_MIN_RATE_UNCFG 0xffff
1561Max rate > 1000 means not configured.#define OFPQ_MAX_RATE_UNCFG 0xffff";
1562 }
1563 typedef ofp_controller_role {
1564 type enumeration {
1565 enum OFPCR_ROLE_NOCHANGE {
1566 description "";
1567 }
1568 enum OFPCR_ROLE_EQUAL {
1569 description "";
1570 }
1571 enum OFPCR_ROLE_MASTER {
1572 description "";
1573 }
1574 enum OFPCR_ROLE_SLAVE {
1575 description "";
1576 }
1577 }
1578 description
1579 "Controller roles.Configures the role of the sending controller. The default role is:
1580
1581 - Equal (OFPCR_ROLE_EQUAL), which allows the controller access to all
1582 OpenFlow features. All controllers have equal responsibility.
1583
1584 The other possible roles are a related pair:
1585
1586 - Master (OFPCR_ROLE_MASTER) is equivalent to Equal, except that there
1587 may be at most one Master controller at a time: when a controller
1588 configures itself as Master, any existing Master is demoted to the
1589 Slave role.
1590
1591 - Slave (OFPCR_ROLE_SLAVE) allows the controller read-only access to
1592 OpenFlow features. In particular attempts to modify the flow table
1593 will be rejected with an OFPBRC_EPERM error.
1594
1595 Slave controllers do not receive OFPT_PACKET_IN or OFPT_FLOW_REMOVED
1596 messages, but they do receive OFPT_PORT_STATUS messages.";
1597 }
1598
1599 container ofp_header {
1600 description
1601 "Header on all OpenFlow packets.";
1602 leaf version {
1603 type uint32;
1604 description
1605 "OFP_VERSION.";
1606 }
1607
1608 leaf type {
1609 type ofp_type;
1610
1611 description
1612 "One of the OFPT_ constants.";
1613 }
1614
1615 leaf xid {
1616 type uint32;
1617 description
1618 "Transaction id associated with this packet.
1619Replies use the same id as was in the request
1620to facilitate pairing.";
1621 }
1622
1623 }
1624
1625 grouping ofp_hello_elem_header {
1626 description
1627 "Common header for all Hello Elements";
1628 leaf type {
1629 type ofp_hello_elem_type;
1630
1631 description
1632 "One of OFPHET_ .";
1633 }
1634
1635 container versionbitmap {
1636 uses ofp_hello_elem_versionbitmap;
1637
1638 description
1639 "";
1640 }
1641
1642 }
1643
1644 grouping ofp_hello_elem_versionbitmap {
1645 description
1646 "Version bitmap Hello Element";
1647 list bitmaps {
1648 key "bitmaps";
1649 leaf bitmaps {
1650 type uint32;
1651 description
1652 "List of bitmaps - supported versions";
1653 }
1654 description
1655 "List of bitmaps - supported versions";
1656 }
1657
1658 }
1659
1660 container ofp_hello {
1661 description
1662 "OFPT_HELLO. This message includes zero or more hello elements having
1663 variable size. Unknown elements types must be ignored skipped, to allow
1664 for future extensions.ofp_header header;";
1665 list elements {
1666 key "type";
1667 uses ofp_hello_elem_header;
1668
1669 description
1670 "Hello element list0 or more";
1671 }
1672
1673 }
1674
1675 container ofp_switch_config {
1676 description
1677 "Switch configuration.";
1678 leaf flags {
1679 type uint32;
1680 description
1681 "ofp_header header;
1682Bitmap of OFPC_ flags.";
1683 }
1684
1685 leaf miss_send_len {
1686 type uint32;
1687 description
1688 "Max bytes of packet that datapath
1689should send to the controller. See
1690ofp_controller_max_len for valid values.";
1691 }
1692
1693 }
1694
1695 container ofp_table_mod {
1696 description
1697 "Configure Modify behavior of a flow table";
1698 leaf table_id {
1699 type uint32;
1700 description
1701 "ofp_header header;
1702ID of the table, OFPTT_ALL indicates all tables";
1703 }
1704
1705 leaf config {
1706 type uint32;
1707 description
1708 "Bitmap of OFPTC_ flags";
1709 }
1710
1711 }
1712
1713 grouping ofp_port {
1714 description
1715 "Description of a port";
1716 leaf port_no {
1717 type uint32;
1718 description
1719 "";
1720 }
1721
1722 list hw_addr {
1723 key "hw_addr";
1724 leaf hw_addr {
1725 type uint32;
1726 description
1727 " OFP_ETH_ALEN ;";
1728 }
1729 description
1730 " OFP_ETH_ALEN ;";
1731 }
1732
1733 leaf name {
1734 type string;
1735 description
1736 "Null-terminated";
1737 }
1738
1739 leaf config {
1740 type uint32;
1741 description
1742 "Bitmap of OFPPC_ flags.";
1743 }
1744
1745 leaf state {
1746 type uint32;
1747 description
1748 "Bitmap of OFPPS_ flags.";
1749 }
1750
1751 leaf curr {
1752 type uint32;
1753 description
1754 "Bitmaps of OFPPF_ that describe features. All bits zeroed if
1755 unsupported or unavailable.Current features.";
1756 }
1757
1758 leaf advertised {
1759 type uint32;
1760 description
1761 "Features being advertised by the port.";
1762 }
1763
1764 leaf supported {
1765 type uint32;
1766 description
1767 "Features supported by the port.";
1768 }
1769
1770 leaf peer {
1771 type uint32;
1772 description
1773 "Features advertised by peer.";
1774 }
1775
1776 leaf curr_speed {
1777 type uint32;
1778 description
1779 "Current port bitrate in kbps.";
1780 }
1781
1782 leaf max_speed {
1783 type uint32;
1784 description
1785 "Max port bitrate in kbps";
1786 }
1787
1788 }
1789
1790 grouping ofp_switch_features {
1791 description
1792 "Switch features.";
1793 leaf datapath_id {
1794 type uint64;
1795 description
1796 "ofp_header header;
1797Datapath unique ID. The lower 48-bits are for
1798a MAC address, while the upper 16-bits are
1799implementer-defined.";
1800 }
1801
1802 leaf n_buffers {
1803 type uint32;
1804 description
1805 "Max packets buffered at once.";
1806 }
1807
1808 leaf n_tables {
1809 type uint32;
1810 description
1811 "Number of tables supported by datapath.";
1812 }
1813
1814 leaf auxiliary_id {
1815 type uint32;
1816 description
1817 "Identify auxiliary connections";
1818 }
1819
1820 leaf capabilities {
1821 type uint32;
1822 description
1823 "Features.Bitmap of support ofp_capabilities .";
1824 }
1825
1826 }
1827
1828 container ofp_port_status {
1829 description
1830 "A physical port has changed in the datapath";
1831 leaf reason {
1832 type ofp_port_reason;
1833
1834 description
1835 "ofp_header header;
1836One of OFPPR_ .";
1837 }
1838
1839 container desc {
1840 uses ofp_port;
1841
1842 description
1843 "";
1844 }
1845
1846 }
1847
1848 container ofp_port_mod {
1849 description
1850 "Modify behavior of the physical port";
1851 leaf port_no {
1852 type uint32;
1853 description
1854 "ofp_header header;";
1855 }
1856
1857 list hw_addr {
1858 key "hw_addr";
1859 leaf hw_addr {
1860 type uint32;
1861 description
1862 " OFP_ETH_ALEN ;";
1863 }
1864 description
1865 " OFP_ETH_ALEN ;";
1866 }
1867
1868 leaf config {
1869 type uint32;
1870 description
1871 "The hardware address is not
1872configurable. This is used to
1873sanity-check the request, so it must
1874be the same as returned in an
1875ofp_port struct.Bitmap of OFPPC_ flags.";
1876 }
1877
1878 leaf mask {
1879 type uint32;
1880 description
1881 "Bitmap of OFPPC_ flags to be changed.";
1882 }
1883
1884 leaf advertise {
1885 type uint32;
1886 description
1887 "Bitmap of OFPPF_ . Zero all bits to prevent
1888any action taking place.";
1889 }
1890
1891 }
1892
1893 grouping ofp_match {
1894 description
1895 "Fields to match against flows";
1896 leaf type {
1897 type ofp_match_type;
1898
1899 description
1900 "One of OFPMT_ ";
1901 }
1902
1903 list oxm_fields {
1904 key "oxm_class";
1905 uses ofp_oxm_field;
1906
1907 description
1908 "0 or more";
1909 }
1910
1911 }
1912
1913 grouping ofp_oxm_field {
1914 description
1915 "OXM Flow match fields";
1916 leaf oxm_class {
1917 type ofp_oxm_class;
1918
1919 description
1920 "";
1921 }
1922
1923 container ofb_field {
1924 uses ofp_oxm_ofb_field;
1925
1926 description
1927 "2 and 3 reserved for NXM_0 and NXM-1 OXM classes";
1928 }
1929
1930 container experimenter_field {
1931 uses ofp_oxm_experimenter_field;
1932
1933 description
1934 "";
1935 }
1936
1937 }
1938
1939 grouping ofp_oxm_ofb_field {
1940 description
1941 "OXM OpenFlow Basic Match Field";
1942 leaf type {
1943 type oxm_ofb_field_types;
1944
1945 description
1946 "";
1947 }
1948
1949 leaf has_mask {
1950 type boolean;
1951 description
1952 "";
1953 }
1954
1955 leaf port {
1956 type uint32;
1957 description
1958 "#define OXM_OF_IN_PORT OXM_HEADER (0x8000, OFPXMT_OFB_IN_PORT, 4)
1959Used for OFPXMT_OFB_IN_PORTOpenFlow port on which the packet was received.
1960 May be a physical port, a logical port, or the reserved port OFPP_LOCAL
1961
1962 Prereqs: None.
1963
1964 Format: 32-bit integer in network byte order.
1965
1966 Masking: Not maskable.";
1967 }
1968
1969 leaf physical_port {
1970 type uint32;
1971 description
1972 "#define OXM_OF_IN_PHY_PORT OXM_HEADER (0x8000, OFPXMT_OFB_IN_PHY_PORT, 4)
1973Used for OFPXMT_OF_IN_PHY_PORTPhysical port on which the packet was received.
1974
1975 Consider a packet received on a tunnel interface defined over a link
1976 aggregation group (LAG) with two physical port members. If the tunnel
1977 interface is the logical port bound to OpenFlow. In this case,
1978 OFPXMT_OF_IN_PORT is the tunnel's port number and OFPXMT_OF_IN_PHY_PORT is
1979 the physical port number of the LAG on which the tunnel is configured.
1980
1981 When a packet is received directly on a physical port and not processed by a
1982 logical port, OFPXMT_OF_IN_PORT and OFPXMT_OF_IN_PHY_PORT have the same
1983 value.
1984
1985 This field is usually not available in a regular match and only available
1986 in ofp_packet_in messages when it's different from OXM_OF_IN_PORT.
1987
1988 Prereqs: OXM_OF_IN_PORT must be present.
1989
1990 Format: 32-bit integer in network byte order.
1991
1992 Masking: Not maskable.";
1993 }
1994
1995 leaf table_metadata {
1996 type uint64;
1997 description
1998 "#define OXM_OF_METADATA OXM_HEADER (0x8000, OFPXMT_OFB_METADATA, 8)
1999#define OXM_OF_METADATA_W OXM_HEADER_W(0x8000, OFPXMT_OFB_METADATA, 8)
2000Used for OFPXMT_OFB_METADATATable metadata.
2001
2002 Prereqs: None.
2003
2004 Format: 64-bit integer in network byte order.
2005
2006 Masking: Arbitrary masks.";
2007 }
2008
2009 leaf eth_dst {
2010 type binary;
2011 description
2012 "#define OXM_OF_ETH_DST OXM_HEADER (0x8000, OFPXMT_OFB_ETH_DST, 6)
2013#define OXM_OF_ETH_DST_W OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_DST, 6)
2014#define OXM_OF_ETH_SRC OXM_HEADER (0x8000, OFPXMT_OFB_ETH_SRC, 6)
2015#define OXM_OF_ETH_SRC_W OXM_HEADER_W(0x8000, OFPXMT_OFB_ETH_SRC, 6)
2016Used for OFPXMT_OFB_ETH_DST (exactly 6 bytes)Source or destination address in Ethernet header.
2017
2018 Prereqs: None.
2019
2020 Format: 48-bit Ethernet MAC address.
2021
2022 Masking: Arbitrary masks.";
2023 }
2024
2025 leaf eth_src {
2026 type binary;
2027 description
2028 "Used for OFPXMT_OFB_ETH_SRC (exactly 6 bytes)";
2029 }
2030
2031 leaf eth_type {
2032 type uint32;
2033 description
2034 "#define OXM_OF_ETH_TYPE OXM_HEADER (0x8000, OFPXMT_OFB_ETH_TYPE,2)
2035Used for OFPXMT_OFB_ETH_TYPEPacket's Ethernet type.
2036
2037 Prereqs: None.
2038
2039 Format: 16-bit integer in network byte order.
2040
2041 Masking: Not maskable.";
2042 }
2043
2044 leaf vlan_vid {
2045 type uint32;
2046 description
2047 "#define OXM_OF_VLAN_VID OXM_HEADER (0x8000, OFPXMT_OFB_VLAN_VID, 2)
2048#define OXM_OF_VLAN_VID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_VLAN_VID, 2)
2049Used for OFPXMT_OFB_VLAN_VID802.1Q VID.
2050
2051 For a packet with an 802.1Q header, this is the VLAN-ID (VID) from the
2052 outermost tag, with the CFI bit forced to 1. For a packet with no 802.1Q
2053 header, this has value OFPVID_NONE.
2054
2055 Prereqs: None.
2056
2057 Format: 16-bit integer in network byte order with bit 13 indicating
2058 presence of VLAN header and 3 most-significant bits forced to 0.
2059 Only the lower 13 bits have meaning.
2060
2061 Masking: Arbitrary masks.
2062
2063 This field can be used in various ways:
2064
2065 - If it is not constrained at all, the nx_match matches packets without
2066 an 802.1Q header or with an 802.1Q header that has any VID value.
2067
2068 - Testing for an exact match with 0x0 matches only packets without
2069 an 802.1Q header.
2070
2071 - Testing for an exact match with a VID value with CFI=1 matches packets
2072 that have an 802.1Q header with a specified VID.
2073
2074 - Testing for an exact match with a nonzero VID value with CFI=0 does
2075 not make sense. The switch may reject this combination.
2076
2077 - Testing with nxm_value=0, nxm_mask=0x0fff matches packets with no 802.1Q
2078 header or with an 802.1Q header with a VID of 0.
2079
2080 - Testing with nxm_value=0x1000, nxm_mask=0x1000 matches packets with
2081 an 802.1Q header that has any VID value.";
2082 }
2083
2084 leaf vlan_pcp {
2085 type uint32;
2086 description
2087 "#define OXM_OF_VLAN_PCP OXM_HEADER (0x8000, OFPXMT_OFB_VLAN_PCP, 1)
2088Used for OFPXMT_OFB_VLAN_PCP802.1Q PCP.
2089
2090 For a packet with an 802.1Q header, this is the VLAN-PCP from the
2091 outermost tag. For a packet with no 802.1Q header, this has value
2092 0.
2093
2094 Prereqs: OXM_OF_VLAN_VID must be different from OFPVID_NONE.
2095
2096 Format: 8-bit integer with 5 most-significant bits forced to 0.
2097 Only the lower 3 bits have meaning.
2098
2099 Masking: Not maskable.";
2100 }
2101
2102 leaf ip_dscp {
2103 type uint32;
2104 description
2105 "#define OXM_OF_IP_DSCP OXM_HEADER (0x8000, OFPXMT_OFB_IP_DSCP, 1)
2106Used for OFPXMT_OFB_IP_DSCPThe Diff Serv Code Point (DSCP) bits of the IP header.
2107 Part of the IPv4 ToS field or the IPv6 Traffic Class field.
2108
2109 Prereqs: OXM_OF_ETH_TYPE must be either 0x0800 or 0x86dd.
2110
2111 Format: 8-bit integer with 2 most-significant bits forced to 0.
2112 Only the lower 6 bits have meaning.
2113
2114 Masking: Not maskable.";
2115 }
2116
2117 leaf ip_ecn {
2118 type uint32;
2119 description
2120 "#define OXM_OF_IP_ECN OXM_HEADER (0x8000, OFPXMT_OFB_IP_ECN, 1)
2121Used for OFPXMT_OFB_IP_ECNThe ECN bits of the IP header.
2122 Part of the IPv4 ToS field or the IPv6 Traffic Class field.
2123
2124 Prereqs: OXM_OF_ETH_TYPE must be either 0x0800 or 0x86dd.
2125
2126 Format: 8-bit integer with 6 most-significant bits forced to 0.
2127 Only the lower 2 bits have meaning.
2128
2129 Masking: Not maskable.";
2130 }
2131
2132 leaf ip_proto {
2133 type uint32;
2134 description
2135 "#define OXM_OF_IP_PROTO OXM_HEADER (0x8000, OFPXMT_OFB_IP_PROTO, 1)
2136Used for OFPXMT_OFB_IP_PROTOThe protocol byte in the IP header.
2137
2138 Prereqs: OXM_OF_ETH_TYPE must be either 0x0800 or 0x86dd.
2139
2140 Format: 8-bit integer.
2141
2142 Masking: Not maskable.";
2143 }
2144
2145 leaf ipv4_src {
2146 type uint32;
2147 description
2148 "#define OXM_OF_IPV4_SRC OXM_HEADER (0x8000, OFPXMT_OFB_IPV4_SRC, 4)
2149#define OXM_OF_IPV4_SRC_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_SRC, 4)
2150#define OXM_OF_IPV4_DST OXM_HEADER (0x8000, OFPXMT_OFB_IPV4_DST, 4)
2151#define OXM_OF_IPV4_DST_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV4_DST, 4)
2152Used for OFPXMT_OFB_IPV4_SRCThe source or destination address in the IP header.
2153
2154 Prereqs: OXM_OF_ETH_TYPE must match 0x0800 exactly.
2155
2156 Format: 32-bit integer in network byte order.
2157
2158 Masking: Arbitrary masks.";
2159 }
2160
2161 leaf ipv4_dst {
2162 type uint32;
2163 description
2164 "Used for OFPXMT_OFB_IPV4_DST";
2165 }
2166
2167 leaf tcp_src {
2168 type uint32;
2169 description
2170 "#define OXM_OF_TCP_SRC OXM_HEADER (0x8000, OFPXMT_OFB_TCP_SRC, 2)
2171#define OXM_OF_TCP_DST OXM_HEADER (0x8000, OFPXMT_OFB_TCP_DST, 2)
2172Used for OFPXMT_OFB_TCP_SRCThe source or destination port in the TCP header.
2173
2174 Prereqs:
2175 OXM_OF_ETH_TYPE must be either 0x0800 or 0x86dd.
2176 OXM_OF_IP_PROTO must match 6 exactly.
2177
2178 Format: 16-bit integer in network byte order.
2179
2180 Masking: Not maskable.";
2181 }
2182
2183 leaf tcp_dst {
2184 type uint32;
2185 description
2186 "Used for OFPXMT_OFB_TCP_DST";
2187 }
2188
2189 leaf udp_src {
2190 type uint32;
2191 description
2192 "#define OXM_OF_UDP_SRC OXM_HEADER (0x8000, OFPXMT_OFB_UDP_SRC, 2)
2193#define OXM_OF_UDP_DST OXM_HEADER (0x8000, OFPXMT_OFB_UDP_DST, 2)
2194Used for OFPXMT_OFB_UDP_SRCThe source or destination port in the UDP header.
2195
2196 Prereqs:
2197 OXM_OF_ETH_TYPE must match either 0x0800 or 0x86dd.
2198 OXM_OF_IP_PROTO must match 17 exactly.
2199
2200 Format: 16-bit integer in network byte order.
2201
2202 Masking: Not maskable.";
2203 }
2204
2205 leaf udp_dst {
2206 type uint32;
2207 description
2208 "Used for OFPXMT_OFB_UDP_DST";
2209 }
2210
2211 leaf sctp_src {
2212 type uint32;
2213 description
2214 "#define OXM_OF_SCTP_SRC OXM_HEADER (0x8000, OFPXMT_OFB_SCTP_SRC, 2)
2215#define OXM_OF_SCTP_DST OXM_HEADER (0x8000, OFPXMT_OFB_SCTP_DST, 2)
2216Used for OFPXMT_OFB_SCTP_SRCThe source or destination port in the SCTP header.
2217
2218 Prereqs:
2219 OXM_OF_ETH_TYPE must match either 0x0800 or 0x86dd.
2220 OXM_OF_IP_PROTO must match 132 exactly.
2221
2222 Format: 16-bit integer in network byte order.
2223
2224 Masking: Not maskable.";
2225 }
2226
2227 leaf sctp_dst {
2228 type uint32;
2229 description
2230 "Used for OFPXMT_OFB_SCTP_DST";
2231 }
2232
2233 leaf icmpv4_type {
2234 type uint32;
2235 description
2236 "#define OXM_OF_ICMPV4_TYPE OXM_HEADER (0x8000, OFPXMT_OFB_ICMPV4_TYPE, 1)
2237#define OXM_OF_ICMPV4_CODE OXM_HEADER (0x8000, OFPXMT_OFB_ICMPV4_CODE, 1)
2238Used for OFPXMT_OFB_ICMPV4_TYPEThe type or code in the ICMP header.
2239
2240 Prereqs:
2241 OXM_OF_ETH_TYPE must match 0x0800 exactly.
2242 OXM_OF_IP_PROTO must match 1 exactly.
2243
2244 Format: 8-bit integer.
2245
2246 Masking: Not maskable.";
2247 }
2248
2249 leaf icmpv4_code {
2250 type uint32;
2251 description
2252 "Used for OFPXMT_OFB_ICMPV4_CODE";
2253 }
2254
2255 leaf arp_op {
2256 type uint32;
2257 description
2258 "#define OXM_OF_ARP_OP OXM_HEADER (0x8000, OFPXMT_OFB_ARP_OP, 2)
2259Used for OFPXMT_OFB_ARP_OPARP opcode.
2260
2261 For an Ethernet+IP ARP packet, the opcode in the ARP header. Always 0
2262 otherwise.
2263
2264 Prereqs: OXM_OF_ETH_TYPE must match 0x0806 exactly.
2265
2266 Format: 16-bit integer in network byte order.
2267
2268 Masking: Not maskable.";
2269 }
2270
2271 leaf arp_spa {
2272 type uint32;
2273 description
2274 "#define OXM_OF_ARP_SPA OXM_HEADER (0x8000, OFPXMT_OFB_ARP_SPA, 4)
2275#define OXM_OF_ARP_SPA_W OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_SPA, 4)
2276#define OXM_OF_ARP_TPA OXM_HEADER (0x8000, OFPXMT_OFB_ARP_TPA, 4)
2277#define OXM_OF_ARP_TPA_W OXM_HEADER_W(0x8000, OFPXMT_OFB_ARP_TPA, 4)
2278For OFPXMT_OFB_ARP_SPAFor an Ethernet+IP ARP packet, the source or target protocol address
2279 in the ARP header. Always 0 otherwise.
2280
2281 Prereqs: OXM_OF_ETH_TYPE must match 0x0806 exactly.
2282
2283 Format: 32-bit integer in network byte order.
2284
2285 Masking: Arbitrary masks.";
2286 }
2287
2288 leaf arp_tpa {
2289 type uint32;
2290 description
2291 "For OFPXMT_OFB_ARP_TPA";
2292 }
2293
2294 leaf arp_sha {
2295 type binary;
2296 description
2297 "#define OXM_OF_ARP_SHA OXM_HEADER (0x8000, OFPXMT_OFB_ARP_SHA, 6)
2298#define OXM_OF_ARP_SHA_W OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_SHA, 6)
2299#define OXM_OF_ARP_THA OXM_HEADER (0x8000, OFPXMT_OFB_ARP_THA, 6)
2300#define OXM_OF_ARP_THA_W OXM_HEADER_W (0x8000, OFPXMT_OFB_ARP_THA, 6)
2301For OFPXMT_OFB_ARP_SHA (6 bytes)For an Ethernet+IP ARP packet, the source or target hardware address
2302 in the ARP header. Always 0 otherwise.
2303
2304 Prereqs: OXM_OF_ETH_TYPE must match 0x0806 exactly.
2305
2306 Format: 48-bit Ethernet MAC address.
2307
2308 Masking: Not maskable.";
2309 }
2310
2311 leaf arp_tha {
2312 type binary;
2313 description
2314 "For OFPXMT_OFB_ARP_THA (6 bytes)";
2315 }
2316
2317 leaf ipv6_src {
2318 type binary;
2319 description
2320 "#define OXM_OF_IPV6_SRC OXM_HEADER (0x8000, OFPXMT_OFB_IPV6_SRC, 16)
2321#define OXM_OF_IPV6_SRC_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_SRC, 16)
2322#define OXM_OF_IPV6_DST OXM_HEADER (0x8000, OFPXMT_OFB_IPV6_DST, 16)
2323#define OXM_OF_IPV6_DST_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_DST, 16)
2324For OFPXMT_OFB_IPV6_SRCThe source or destination address in the IPv6 header.
2325
2326 Prereqs: OXM_OF_ETH_TYPE must match 0x86dd exactly.
2327
2328 Format: 128-bit IPv6 address.
2329
2330 Masking: Arbitrary masks.";
2331 }
2332
2333 leaf ipv6_dst {
2334 type binary;
2335 description
2336 "For OFPXMT_OFB_IPV6_DST";
2337 }
2338
2339 leaf ipv6_flabel {
2340 type uint32;
2341 description
2342 "#define OXM_OF_IPV6_FLABEL OXM_HEADER (0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
2343#define OXM_OF_IPV6_FLABEL_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_FLABEL, 4)
2344For OFPXMT_OFB_IPV6_FLABELThe IPv6 Flow Label
2345
2346 Prereqs:
2347 OXM_OF_ETH_TYPE must match 0x86dd exactly
2348
2349 Format: 32-bit integer with 12 most-significant bits forced to 0.
2350 Only the lower 20 bits have meaning.
2351
2352 Masking: Arbitrary masks.";
2353 }
2354
2355 leaf icmpv6_type {
2356 type uint32;
2357 description
2358 "#define OXM_OF_ICMPV6_TYPE OXM_HEADER (0x8000, OFPXMT_OFB_ICMPV6_TYPE, 1)
2359#define OXM_OF_ICMPV6_CODE OXM_HEADER (0x8000, OFPXMT_OFB_ICMPV6_CODE, 1)
2360For OFPXMT_OFB_ICMPV6_TYPEThe type or code in the ICMPv6 header.
2361
2362 Prereqs:
2363 OXM_OF_ETH_TYPE must match 0x86dd exactly.
2364 OXM_OF_IP_PROTO must match 58 exactly.
2365
2366 Format: 8-bit integer.
2367
2368 Masking: Not maskable.";
2369 }
2370
2371 leaf icmpv6_code {
2372 type uint32;
2373 description
2374 "For OFPXMT_OFB_ICMPV6_CODE";
2375 }
2376
2377 leaf ipv6_nd_target {
2378 type binary;
2379 description
2380 "#define OXM_OF_IPV6_ND_TARGET OXM_HEADER
2381 (0x8000, OFPXMT_OFB_IPV6_ND_TARGET, 16)
2382For OFPXMT_OFB_IPV6_ND_TARGETThe target address in an IPv6 Neighbor Discovery message.
2383
2384 Prereqs:
2385 OXM_OF_ETH_TYPE must match 0x86dd exactly.
2386 OXM_OF_IP_PROTO must match 58 exactly.
2387 OXM_OF_ICMPV6_TYPE must be either 135 or 136.
2388
2389 Format: 128-bit IPv6 address.
2390
2391 Masking: Not maskable.";
2392 }
2393
2394 leaf ipv6_nd_ssl {
2395 type binary;
2396 description
2397 "#define OXM_OF_IPV6_ND_SLL OXM_HEADER (0x8000, OFPXMT_OFB_IPV6_ND_SLL, 6)
2398For OFPXMT_OFB_IPV6_ND_SLLThe source link-layer address option in an IPv6 Neighbor Discovery
2399 message.
2400
2401 Prereqs:
2402 OXM_OF_ETH_TYPE must match 0x86dd exactly.
2403 OXM_OF_IP_PROTO must match 58 exactly.
2404 OXM_OF_ICMPV6_TYPE must be exactly 135.
2405
2406 Format: 48-bit Ethernet MAC address.
2407
2408 Masking: Not maskable.";
2409 }
2410
2411 leaf ipv6_nd_tll {
2412 type binary;
2413 description
2414 "#define OXM_OF_IPV6_ND_TLL OXM_HEADER (0x8000, OFPXMT_OFB_IPV6_ND_TLL, 6)
2415For OFPXMT_OFB_IPV6_ND_TLLThe target link-layer address option in an IPv6 Neighbor Discovery
2416 message.
2417
2418 Prereqs:
2419 OXM_OF_ETH_TYPE must match 0x86dd exactly.
2420 OXM_OF_IP_PROTO must match 58 exactly.
2421 OXM_OF_ICMPV6_TYPE must be exactly 136.
2422
2423 Format: 48-bit Ethernet MAC address.
2424
2425 Masking: Not maskable.";
2426 }
2427
2428 leaf mpls_label {
2429 type uint32;
2430 description
2431 "#define OXM_OF_MPLS_LABEL OXM_HEADER (0x8000, OFPXMT_OFB_MPLS_LABEL, 4)
2432For OFPXMT_OFB_MPLS_LABELThe LABEL in the first MPLS shim header.
2433
2434 Prereqs:
2435 OXM_OF_ETH_TYPE must match 0x8847 or 0x8848 exactly.
2436
2437 Format: 32-bit integer in network byte order with 12 most-significant
2438 bits forced to 0. Only the lower 20 bits have meaning.
2439
2440 Masking: Not maskable.";
2441 }
2442
2443 leaf mpls_tc {
2444 type uint32;
2445 description
2446 "#define OXM_OF_MPLS_TC OXM_HEADER (0x8000, OFPXMT_OFB_MPLS_TC, 1)
2447For OFPXMT_OFB_MPLS_TCThe TC in the first MPLS shim header.
2448
2449 Prereqs:
2450 OXM_OF_ETH_TYPE must match 0x8847 or 0x8848 exactly.
2451
2452 Format: 8-bit integer with 5 most-significant bits forced to 0.
2453 Only the lower 3 bits have meaning.
2454
2455 Masking: Not maskable.";
2456 }
2457
2458 leaf mpls_bos {
2459 type uint32;
2460 description
2461 "#define OXM_OF_MPLS_BOS OXM_HEADER (0x8000, OFPXMT_OFB_MPLS_BOS, 1)
2462For OFPXMT_OFB_MPLS_BOSThe BoS bit in the first MPLS shim header.
2463
2464 Prereqs:
2465 OXM_OF_ETH_TYPE must match 0x8847 or 0x8848 exactly.
2466
2467 Format: 8-bit integer with 7 most-significant bits forced to 0.
2468 Only the lowest bit have a meaning.
2469
2470 Masking: Not maskable.";
2471 }
2472
2473 leaf pbb_isid {
2474 type uint32;
2475 description
2476 "#define OXM_OF_PBB_ISID OXM_HEADER (0x8000, OFPXMT_OFB_PBB_ISID, 3)
2477#define OXM_OF_PBB_ISID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_PBB_ISID, 3)
2478For OFPXMT_OFB_PBB_ISIDIEEE 802.1ah I-SID.
2479
2480 For a packet with a PBB header, this is the I-SID from the
2481 outermost service tag.
2482
2483 Prereqs:
2484 OXM_OF_ETH_TYPE must match 0x88E7 exactly.
2485
2486 Format: 24-bit integer in network byte order.
2487
2488 Masking: Arbitrary masks.";
2489 }
2490
2491 leaf tunnel_id {
2492 type uint64;
2493 description
2494 "#define OXM_OF_TUNNEL_ID OXM_HEADER (0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
2495#define OXM_OF_TUNNEL_ID_W OXM_HEADER_W(0x8000, OFPXMT_OFB_TUNNEL_ID, 8)
2496For OFPXMT_OFB_TUNNEL_IDLogical Port Metadata.
2497
2498 Metadata associated with a logical port.
2499 If the logical port performs encapsulation and decapsulation, this
2500 is the demultiplexing field from the encapsulation header.
2501 For example, for a packet received via GRE tunnel including a (32-bit) key,
2502 the key is stored in the low 32-bits and the high bits are zeroed.
2503 For a MPLS logical port, the low 20 bits represent the MPLS Label.
2504 For a VxLAN logical port, the low 24 bits represent the VNI.
2505 If the packet is not received through a logical port, the value is 0.
2506
2507 Prereqs: None.
2508
2509 Format: 64-bit integer in network byte order.
2510
2511 Masking: Arbitrary masks.";
2512 }
2513
2514 leaf ipv6_exthdr {
2515 type uint32;
2516 description
2517 "#define OXM_OF_IPV6_EXTHDR OXM_HEADER (0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
2518#define OXM_OF_IPV6_EXTHDR_W OXM_HEADER_W(0x8000, OFPXMT_OFB_IPV6_EXTHDR, 2)
2519For OFPXMT_OFB_IPV6_EXTHDRThe IPv6 Extension Header pseudo-field.
2520
2521 Prereqs:
2522 OXM_OF_ETH_TYPE must match 0x86dd exactly
2523
2524 Format: 16-bit integer with 7 most-significant bits forced to 0.
2525 Only the lower 9 bits have meaning.
2526
2527 Masking: Maskable.";
2528 }
2529
2530 leaf table_metadata_mask {
2531 type uint64;
2532 description
2533 "For OFPXMT_OFB_METADATA";
2534 }
2535
2536 leaf eth_dst_mask {
2537 type binary;
2538 description
2539 "For OFPXMT_OFB_ETH_DST (exactly 6 bytes)";
2540 }
2541
2542 leaf eth_src_mask {
2543 type binary;
2544 description
2545 "For OFPXMT_OFB_ETH_SRC (exactly 6 bytes)";
2546 }
2547
2548 leaf vlan_vid_mask {
2549 type uint32;
2550 description
2551 "For OFPXMT_OFB_VLAN_VID";
2552 }
2553
2554 leaf ipv4_src_mask {
2555 type uint32;
2556 description
2557 "For OFPXMT_OFB_IPV4_SRC";
2558 }
2559
2560 leaf ipv4_dst_mask {
2561 type uint32;
2562 description
2563 "For OFPXMT_OFB_IPV4_DST";
2564 }
2565
2566 leaf arp_spa_mask {
2567 type uint32;
2568 description
2569 "For OFPXMT_OFB_ARP_SPA";
2570 }
2571
2572 leaf arp_tpa_mask {
2573 type uint32;
2574 description
2575 "For OFPXMT_OFB_ARP_TPA";
2576 }
2577
2578 leaf ipv6_src_mask {
2579 type binary;
2580 description
2581 "For OFPXMT_OFB_IPV6_SRC";
2582 }
2583
2584 leaf ipv6_dst_mask {
2585 type binary;
2586 description
2587 "For OFPXMT_OFB_IPV6_DST";
2588 }
2589
2590 leaf ipv6_flabel_mask {
2591 type uint32;
2592 description
2593 "For OFPXMT_OFB_IPV6_FLABEL";
2594 }
2595
2596 leaf pbb_isid_mask {
2597 type uint32;
2598 description
2599 "For OFPXMT_OFB_PBB_ISID";
2600 }
2601
2602 leaf tunnel_id_mask {
2603 type uint64;
2604 description
2605 "For OFPXMT_OFB_TUNNEL_ID";
2606 }
2607
2608 leaf ipv6_exthdr_mask {
2609 type uint32;
2610 description
2611 "For OFPXMT_OFB_IPV6_EXTHDR";
2612 }
2613
2614 }
2615
2616 grouping ofp_oxm_experimenter_field {
2617 description
2618 "Header for OXM experimenter match fields.
2619 The experimenter class should not use OXM_HEADER() macros for defining
2620 fields due to this extra header.";
2621 leaf oxm_header {
2622 type uint32;
2623 description
2624 "oxm_class = OFPXMC_EXPERIMENTER";
2625 }
2626
2627 leaf experimenter {
2628 type uint32;
2629 description
2630 "Experimenter ID which takes the same
2631form as in struct ofp_experimenter_header.";
2632 }
2633
2634 }
2635
2636 grouping ofp_action {
2637 description
2638 "Action header that is common to all actions. The length includes the
2639 header and any padding used to make the action 64-bit aligned.
2640 NB: The length of an action must always be a multiple of eight.";
2641 leaf type {
2642 type ofp_action_type;
2643
2644 description
2645 "One of OFPAT_ .";
2646 }
2647
2648 container output {
2649 uses ofp_action_output;
2650
2651 description
2652 "";
2653 }
2654
2655 container mpls_ttl {
2656 uses ofp_action_mpls_ttl;
2657
2658 description
2659 "";
2660 }
2661
2662 container push {
2663 uses ofp_action_push;
2664
2665 description
2666 "";
2667 }
2668
2669 container pop_mpls {
2670 uses ofp_action_pop_mpls;
2671
2672 description
2673 "";
2674 }
2675
2676 container group {
2677 uses ofp_action_group;
2678
2679 description
2680 "";
2681 }
2682
2683 container nw_ttl {
2684 uses ofp_action_nw_ttl;
2685
2686 description
2687 "";
2688 }
2689
2690 container set_field {
2691 uses ofp_action_set_field;
2692
2693 description
2694 "";
2695 }
2696
2697 container experimenter {
2698 uses ofp_action_experimenter;
2699
2700 description
2701 "";
2702 }
2703
2704 }
2705
2706 grouping ofp_action_output {
2707 description
2708 "Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
2709 When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
2710 number of bytes to send. A 'max_len' of zero means no bytes of the
2711 packet should be sent. A 'max_len' of OFPCML_NO_BUFFER means that
2712 the packet is not buffered and the complete packet is to be sent to
2713 the controller.";
2714 leaf port {
2715 type uint32;
2716 description
2717 "Output port.";
2718 }
2719
2720 leaf max_len {
2721 type uint32;
2722 description
2723 "Max length to send to controller.";
2724 }
2725
2726 }
2727
2728 grouping ofp_action_mpls_ttl {
2729 description
2730 "Action structure for OFPAT_SET_MPLS_TTL.";
2731 leaf mpls_ttl {
2732 type uint32;
2733 description
2734 "MPLS TTL";
2735 }
2736
2737 }
2738
2739 grouping ofp_action_push {
2740 description
2741 "Action structure for OFPAT_PUSH_VLAN MPLS PBB.";
2742 leaf ethertype {
2743 type uint32;
2744 description
2745 "Ethertype";
2746 }
2747
2748 }
2749
2750 grouping ofp_action_pop_mpls {
2751 description
2752 "Action structure for OFPAT_POP_MPLS.";
2753 leaf ethertype {
2754 type uint32;
2755 description
2756 "Ethertype";
2757 }
2758
2759 }
2760
2761 grouping ofp_action_group {
2762 description
2763 "Action structure for OFPAT_GROUP.";
2764 leaf group_id {
2765 type uint32;
2766 description
2767 "Group identifier.";
2768 }
2769
2770 }
2771
2772 grouping ofp_action_nw_ttl {
2773 description
2774 "Action structure for OFPAT_SET_NW_TTL.";
2775 leaf nw_ttl {
2776 type uint32;
2777 description
2778 "IP TTL";
2779 }
2780
2781 }
2782
2783 grouping ofp_action_set_field {
2784 description
2785 "Action structure for OFPAT_SET_FIELD.";
2786 container field {
2787 uses ofp_oxm_field;
2788
2789 description
2790 "";
2791 }
2792
2793 }
2794
2795 grouping ofp_action_experimenter {
2796 description
2797 "Action header for OFPAT_EXPERIMENTER.
2798 The rest of the body is experimenter-defined.";
2799 leaf experimenter {
2800 type uint32;
2801 description
2802 "Experimenter ID which takes the same
2803form as in struct
2804ofp_experimenter_header.";
2805 }
2806
2807 leaf data {
2808 type binary;
2809 description
2810 "";
2811 }
2812
2813 }
2814
2815 grouping ofp_instruction {
2816 description
2817 "Instruction header that is common to all instructions. The length includes
2818 the header and any padding used to make the instruction 64-bit aligned.
2819 NB: The length of an instruction must always be a multiple of eight.";
2820 leaf type {
2821 type uint32;
2822 description
2823 "Instruction type";
2824 }
2825
2826 container goto_table {
2827 uses ofp_instruction_goto_table;
2828
2829 description
2830 "";
2831 }
2832
2833 container write_metadata {
2834 uses ofp_instruction_write_metadata;
2835
2836 description
2837 "";
2838 }
2839
2840 container actions {
2841 uses ofp_instruction_actions;
2842
2843 description
2844 "";
2845 }
2846
2847 container meter {
2848 uses ofp_instruction_meter;
2849
2850 description
2851 "";
2852 }
2853
2854 container experimenter {
2855 uses ofp_instruction_experimenter;
2856
2857 description
2858 "";
2859 }
2860
2861 }
2862
2863 grouping ofp_instruction_goto_table {
2864 description
2865 "Instruction structure for OFPIT_GOTO_TABLE";
2866 leaf table_id {
2867 type uint32;
2868 description
2869 "Set next table in the lookup pipeline";
2870 }
2871
2872 }
2873
2874 grouping ofp_instruction_write_metadata {
2875 description
2876 "Instruction structure for OFPIT_WRITE_METADATA";
2877 leaf metadata {
2878 type uint64;
2879 description
2880 "Metadata value to write";
2881 }
2882
2883 leaf metadata_mask {
2884 type uint64;
2885 description
2886 "Metadata write bitmask";
2887 }
2888
2889 }
2890
2891 grouping ofp_instruction_actions {
2892 description
2893 "Instruction structure for OFPIT_WRITE APPLY CLEAR_ACTIONS";
2894 list actions {
2895 key "type";
2896 uses ofp_action;
2897
2898 description
2899 "0 or more actions associated
2900with OFPIT_WRITE_ACTIONS and
2901OFPIT_APPLY_ACTIONS";
2902 }
2903
2904 }
2905
2906 grouping ofp_instruction_meter {
2907 description
2908 "Instruction structure for OFPIT_METER";
2909 leaf meter_id {
2910 type uint32;
2911 description
2912 "Meter instance.";
2913 }
2914
2915 }
2916
2917 grouping ofp_instruction_experimenter {
2918 description
2919 "Instruction structure for experimental instructions";
2920 leaf experimenter {
2921 type uint32;
2922 description
2923 "Experimenter ID which takes the same form
2924as in struct ofp_experimenter_header.";
2925 }
2926
2927 leaf data {
2928 type binary;
2929 description
2930 "Experimenter-defined arbitrary additional data.";
2931 }
2932
2933 }
2934
2935 grouping ofp_flow_mod {
2936 description
2937 "Flow setup and teardown (controller -> datapath).";
2938 leaf cookie {
2939 type uint64;
2940 description
2941 "ofp_header header;
2942Opaque controller-issued identifier.";
2943 }
2944
2945 leaf cookie_mask {
2946 type uint64;
2947 description
2948 "Mask used to restrict the cookie bits
2949that must match when the command is
2950OFPFC_MODIFY or OFPFC_DELETE . A value
2951of 0 indicates no restriction.";
2952 }
2953
2954 leaf table_id {
2955 type uint32;
2956 description
2957 "ID of the table to put the flow in.
2958For OFPFC_DELETE_ commands, OFPTT_ALL
2959can also be used to delete matching
2960flows from all tables.";
2961 }
2962
2963 leaf command {
2964 type ofp_flow_mod_command;
2965
2966 description
2967 "One of OFPFC_ .";
2968 }
2969
2970 leaf idle_timeout {
2971 type uint32;
2972 description
2973 "Idle time before discarding (seconds).";
2974 }
2975
2976 leaf hard_timeout {
2977 type uint32;
2978 description
2979 "Max time before discarding (seconds).";
2980 }
2981
2982 leaf priority {
2983 type uint32;
2984 description
2985 "Priority level of flow entry.";
2986 }
2987
2988 leaf buffer_id {
2989 type uint32;
2990 description
2991 "Buffered packet to apply to, or
2992OFP_NO_BUFFER.
2993Not meaningful for OFPFC_DELETE .";
2994 }
2995
2996 leaf out_port {
2997 type uint32;
2998 description
2999 "For OFPFC_DELETE commands, require
3000matching entries to include this as an
3001output port. A value of OFPP_ANY
3002indicates no restriction.";
3003 }
3004
3005 leaf out_group {
3006 type uint32;
3007 description
3008 "For OFPFC_DELETE commands, require
3009matching entries to include this as an
3010output group. A value of OFPG_ANY
3011indicates no restriction.";
3012 }
3013
3014 leaf flags {
3015 type uint32;
3016 description
3017 "Bitmap of OFPFF_ flags.";
3018 }
3019
3020 container match {
3021 uses ofp_match;
3022
3023 description
3024 "Fields to match. Variable size.";
3025 }
3026
3027 list instructions {
3028 key "type";
3029 uses ofp_instruction;
3030
3031 description
3032 "0 or more.";
3033 }
3034
3035 }
3036
3037 grouping ofp_bucket {
3038 description
3039 "Bucket for use in groups.";
3040 leaf weight {
3041 type uint32;
3042 description
3043 "Relative weight of bucket. Only
3044defined for select groups.";
3045 }
3046
3047 leaf watch_port {
3048 type uint32;
3049 description
3050 "Port whose state affects whether this
3051bucket is live. Only required for fast
3052failover groups.";
3053 }
3054
3055 leaf watch_group {
3056 type uint32;
3057 description
3058 "Group whose state affects whether this
3059bucket is live. Only required for fast
3060failover groups.";
3061 }
3062
3063 list actions {
3064 key "type";
3065 uses ofp_action;
3066
3067 description
3068 "";
3069 }
3070
3071 }
3072
3073 grouping ofp_group_mod {
3074 description
3075 "Group setup and teardown (controller -> datapath).";
3076 leaf command {
3077 type ofp_group_mod_command;
3078
3079 description
3080 "ofp_header header;
3081One of OFPGC_ .";
3082 }
3083
3084 leaf type {
3085 type ofp_group_type;
3086
3087 description
3088 "One of OFPGT_ .";
3089 }
3090
3091 leaf group_id {
3092 type uint32;
3093 description
3094 "Group identifier.";
3095 }
3096
3097 list buckets {
3098 key "weight";
3099 uses ofp_bucket;
3100
3101 description
3102 "";
3103 }
3104
3105 }
3106
3107 grouping ofp_packet_out {
3108 description
3109 "Send packet (controller -> datapath).Special buffer-id to indicate 'no buffer'#define OFP_NO_BUFFER 0xffffffff";
3110 leaf buffer_id {
3111 type uint32;
3112 description
3113 "ofp_header header;
3114ID assigned by datapath (OFP_NO_BUFFER
3115if none).";
3116 }
3117
3118 leaf in_port {
3119 type uint32;
3120 description
3121 "Packet's input port or OFPP_CONTROLLER.";
3122 }
3123
3124 list actions {
3125 key "type";
3126 uses ofp_action;
3127
3128 description
3129 "Action list - 0 or more.";
3130 }
3131
3132 leaf data {
3133 type binary;
3134 description
3135 "The variable size action list is optionally followed by packet data.
3136 This data is only present and meaningful if buffer_id == -1.Packet data.";
3137 }
3138
3139 }
3140
3141 grouping ofp_packet_in {
3142 description
3143 "Packet received on port (datapath -> controller).";
3144 leaf buffer_id {
3145 type uint32;
3146 description
3147 "ofp_header header;
3148ID assigned by datapath.";
3149 }
3150
3151 leaf reason {
3152 type ofp_packet_in_reason;
3153
3154 description
3155 "Reason packet is being sent";
3156 }
3157
3158 leaf table_id {
3159 type uint32;
3160 description
3161 "ID of the table that was looked up";
3162 }
3163
3164 leaf cookie {
3165 type uint64;
3166 description
3167 "Cookie of the flow entry that was looked up.";
3168 }
3169
3170 container match {
3171 uses ofp_match;
3172
3173 description
3174 "Packet metadata. Variable size.";
3175 }
3176
3177 leaf data {
3178 type binary;
3179 description
3180 "Ethernet frame";
3181 }
3182
3183 }
3184
3185 container ofp_flow_removed {
3186 description
3187 "Flow removed (datapath -> controller).";
3188 leaf cookie {
3189 type uint64;
3190 description
3191 "ofp_header header;
3192Opaque controller-issued identifier.";
3193 }
3194
3195 leaf priority {
3196 type uint32;
3197 description
3198 "Priority level of flow entry.";
3199 }
3200
3201 leaf reason {
3202 type ofp_flow_removed_reason;
3203
3204 description
3205 "One of OFPRR_ .";
3206 }
3207
3208 leaf table_id {
3209 type uint32;
3210 description
3211 "ID of the table";
3212 }
3213
3214 leaf duration_sec {
3215 type uint32;
3216 description
3217 "Time flow was alive in seconds.";
3218 }
3219
3220 leaf duration_nsec {
3221 type uint32;
3222 description
3223 "Time flow was alive in nanoseconds beyond
3224duration_sec.";
3225 }
3226
3227 leaf idle_timeout {
3228 type uint32;
3229 description
3230 "Idle timeout from original flow mod.";
3231 }
3232
3233 leaf hard_timeout {
3234 type uint32;
3235 description
3236 "Hard timeout from original flow mod.";
3237 }
3238
3239 leaf packet_count {
3240 type uint64;
3241 description
3242 "";
3243 }
3244
3245 leaf byte_count {
3246 type uint64;
3247 description
3248 "";
3249 }
3250
3251 container match {
3252 uses ofp_match;
3253
3254 description
3255 "Description of fields. Variable size.";
3256 }
3257
3258 }
3259
3260 grouping ofp_meter_band_header {
3261 description
3262 "Common header for all meter bands";
3263 leaf type {
3264 type ofp_meter_band_type;
3265
3266 description
3267 "One of OFPMBT_ .";
3268 }
3269
3270 leaf len {
3271 type uint32;
3272 description
3273 "Length in bytes of this band.";
3274 }
3275
3276 leaf rate {
3277 type uint32;
3278 description
3279 "Rate for this band.";
3280 }
3281
3282 leaf burst_size {
3283 type uint32;
3284 description
3285 "Size of bursts.";
3286 }
3287
3288 }
3289
3290 container ofp_meter_band_drop {
3291 description
3292 "OFPMBT_DROP band - drop packets";
3293 leaf type {
3294 type uint32;
3295 description
3296 "OFPMBT_DROP.";
3297 }
3298
3299 leaf len {
3300 type uint32;
3301 description
3302 "Length in bytes of this band.";
3303 }
3304
3305 leaf rate {
3306 type uint32;
3307 description
3308 "Rate for dropping packets.";
3309 }
3310
3311 leaf burst_size {
3312 type uint32;
3313 description
3314 "Size of bursts.";
3315 }
3316
3317 }
3318
3319 container ofp_meter_band_dscp_remark {
3320 description
3321 "OFPMBT_DSCP_REMARK band - Remark DSCP in the IP header";
3322 leaf type {
3323 type uint32;
3324 description
3325 "OFPMBT_DSCP_REMARK.";
3326 }
3327
3328 leaf len {
3329 type uint32;
3330 description
3331 "Length in bytes of this band.";
3332 }
3333
3334 leaf rate {
3335 type uint32;
3336 description
3337 "Rate for remarking packets.";
3338 }
3339
3340 leaf burst_size {
3341 type uint32;
3342 description
3343 "Size of bursts.";
3344 }
3345
3346 leaf prec_level {
3347 type uint32;
3348 description
3349 "Number of drop precedence level to add.";
3350 }
3351
3352 }
3353
3354 container ofp_meter_band_experimenter {
3355 description
3356 "OFPMBT_EXPERIMENTER band - Experimenter type.
3357 The rest of the band is experimenter-defined.";
3358 leaf type {
3359 type ofp_meter_band_type;
3360
3361 description
3362 "One of OFPMBT_ .";
3363 }
3364
3365 leaf len {
3366 type uint32;
3367 description
3368 "Length in bytes of this band.";
3369 }
3370
3371 leaf rate {
3372 type uint32;
3373 description
3374 "Rate for this band.";
3375 }
3376
3377 leaf burst_size {
3378 type uint32;
3379 description
3380 "Size of bursts.";
3381 }
3382
3383 leaf experimenter {
3384 type uint32;
3385 description
3386 "Experimenter ID which takes the
3387same form as in struct
3388ofp_experimenter_header.";
3389 }
3390
3391 }
3392
3393 container ofp_meter_mod {
3394 description
3395 "Meter configuration. OFPT_METER_MOD.";
3396 leaf command {
3397 type ofp_meter_mod_command;
3398
3399 description
3400 "ofp_header header = 1;
3401One of OFPMC_ .";
3402 }
3403
3404 leaf flags {
3405 type uint32;
3406 description
3407 "Bitmap of OFPMF_ flags.";
3408 }
3409
3410 leaf meter_id {
3411 type uint32;
3412 description
3413 "Meter instance.";
3414 }
3415
3416 list bands {
3417 key "type";
3418 uses ofp_meter_band_header;
3419
3420 description
3421 "The band list length is
3422inferred from the length field
3423in the header.";
3424 }
3425
3426 }
3427
3428 container ofp_error_msg {
3429 description
3430 "OFPT_ERROR: Error message (datapath -> controller).";
3431 leaf type {
3432 type uint32;
3433 description
3434 "ofp_header header;";
3435 }
3436
3437 leaf code {
3438 type uint32;
3439 description
3440 "";
3441 }
3442
3443 leaf data {
3444 type binary;
3445 description
3446 "Variable-length data. Interpreted based
3447on the type and code. No padding.";
3448 }
3449
3450 }
3451
3452 container ofp_error_experimenter_msg {
3453 description
3454 "OFPET_EXPERIMENTER: Error message (datapath -> controller).ofp_header header;";
3455 leaf type {
3456 type uint32;
3457 description
3458 "OFPET_EXPERIMENTER.";
3459 }
3460
3461 leaf exp_type {
3462 type uint32;
3463 description
3464 "Experimenter defined.";
3465 }
3466
3467 leaf experimenter {
3468 type uint32;
3469 description
3470 "Experimenter ID which takes the same form
3471as in struct ofp_experimenter_header.";
3472 }
3473
3474 leaf data {
3475 type binary;
3476 description
3477 "Variable-length data. Interpreted based
3478on the type and code. No padding.";
3479 }
3480
3481 }
3482
3483 container ofp_multipart_request {
3484 description
3485 "";
3486 leaf type {
3487 type ofp_multipart_type;
3488
3489 description
3490 "ofp_header header;
3491One of the OFPMP_ constants.";
3492 }
3493
3494 leaf flags {
3495 type uint32;
3496 description
3497 "OFPMPF_REQ_ flags.";
3498 }
3499
3500 leaf body {
3501 type binary;
3502 description
3503 "Body of the request. 0 or more bytes.";
3504 }
3505
3506 }
3507
3508 container ofp_multipart_reply {
3509 description
3510 "";
3511 leaf type {
3512 type ofp_multipart_type;
3513
3514 description
3515 "ofp_header header;
3516One of the OFPMP_ constants.";
3517 }
3518
3519 leaf flags {
3520 type uint32;
3521 description
3522 "OFPMPF_REPLY_ flags.";
3523 }
3524
3525 leaf body {
3526 type binary;
3527 description
3528 "Body of the reply. 0 or more bytes.";
3529 }
3530
3531 }
3532
3533 grouping ofp_desc {
3534 description
3535 "Body of reply to OFPMP_DESC request. Each entry is a NULL-terminated
3536 ASCII string.#define DESC_STR_LEN 256
3537#define SERIAL_NUM_LEN 32";
3538 leaf mfr_desc {
3539 type string;
3540 description
3541 "Manufacturer description.";
3542 }
3543
3544 leaf hw_desc {
3545 type string;
3546 description
3547 "Hardware description.";
3548 }
3549
3550 leaf sw_desc {
3551 type string;
3552 description
3553 "Software description.";
3554 }
3555
3556 leaf serial_num {
3557 type string;
3558 description
3559 "Serial number.";
3560 }
3561
3562 leaf dp_desc {
3563 type string;
3564 description
3565 "Human readable description of datapath.";
3566 }
3567
3568 }
3569
3570 container ofp_flow_stats_request {
3571 description
3572 "Body for ofp_multipart_request of type OFPMP_FLOW.";
3573 leaf table_id {
3574 type uint32;
3575 description
3576 "ID of table to read (from ofp_table_stats),
3577OFPTT_ALL for all tables.";
3578 }
3579
3580 leaf out_port {
3581 type uint32;
3582 description
3583 "Require matching entries to include this
3584as an output port. A value of OFPP_ANY
3585indicates no restriction.";
3586 }
3587
3588 leaf out_group {
3589 type uint32;
3590 description
3591 "Require matching entries to include this
3592as an output group. A value of OFPG_ANY
3593indicates no restriction.";
3594 }
3595
3596 leaf cookie {
3597 type uint64;
3598 description
3599 "Require matching entries to contain this
3600cookie value";
3601 }
3602
3603 leaf cookie_mask {
3604 type uint64;
3605 description
3606 "Mask used to restrict the cookie bits that
3607must match. A value of 0 indicates
3608no restriction.";
3609 }
3610
3611 container match {
3612 uses ofp_match;
3613
3614 description
3615 "Fields to match. Variable size.";
3616 }
3617
3618 }
3619
3620 grouping ofp_flow_stats {
3621 description
3622 "Body of reply to OFPMP_FLOW request.";
3623 leaf id {
3624 type uint64;
3625 description
3626 "Unique ID of flow within device.";
3627 }
3628
3629 leaf table_id {
3630 type uint32;
3631 description
3632 "ID of table flow came from.";
3633 }
3634
3635 leaf duration_sec {
3636 type uint32;
3637 description
3638 "Time flow has been alive in seconds.";
3639 }
3640
3641 leaf duration_nsec {
3642 type uint32;
3643 description
3644 "Time flow has been alive in nanoseconds
3645beyond duration_sec.";
3646 }
3647
3648 leaf priority {
3649 type uint32;
3650 description
3651 "Priority of the entry.";
3652 }
3653
3654 leaf idle_timeout {
3655 type uint32;
3656 description
3657 "Number of seconds idle before expiration.";
3658 }
3659
3660 leaf hard_timeout {
3661 type uint32;
3662 description
3663 "Number of seconds before expiration.";
3664 }
3665
3666 leaf flags {
3667 type uint32;
3668 description
3669 "Bitmap of OFPFF_ flags.";
3670 }
3671
3672 leaf cookie {
3673 type uint64;
3674 description
3675 "Opaque controller-issued identifier.";
3676 }
3677
3678 leaf packet_count {
3679 type uint64;
3680 description
3681 "Number of packets in flow.";
3682 }
3683
3684 leaf byte_count {
3685 type uint64;
3686 description
3687 "Number of bytes in flow.";
3688 }
3689
3690 container match {
3691 uses ofp_match;
3692
3693 description
3694 "Description of fields. Variable size.";
3695 }
3696
3697 list instructions {
3698 key "type";
3699 uses ofp_instruction;
3700
3701 description
3702 "Instruction set
3703(0 or more)";
3704 }
3705
3706 }
3707
3708 container ofp_aggregate_stats_request {
3709 description
3710 "Body for ofp_multipart_request of type OFPMP_AGGREGATE.";
3711 leaf table_id {
3712 type uint32;
3713 description
3714 "ID of table to read (from ofp_table_stats)
3715OFPTT_ALL for all tables.";
3716 }
3717
3718 leaf out_port {
3719 type uint32;
3720 description
3721 "Require matching entries to include this
3722as an output port. A value of OFPP_ANY
3723indicates no restriction.";
3724 }
3725
3726 leaf out_group {
3727 type uint32;
3728 description
3729 "Require matching entries to include this
3730as an output group. A value of OFPG_ANY
3731indicates no restriction.";
3732 }
3733
3734 leaf cookie {
3735 type uint64;
3736 description
3737 "Require matching entries to contain this
3738cookie value";
3739 }
3740
3741 leaf cookie_mask {
3742 type uint64;
3743 description
3744 "Mask used to restrict the cookie bits that
3745must match. A value of 0 indicates
3746no restriction.";
3747 }
3748
3749 container match {
3750 uses ofp_match;
3751
3752 description
3753 "Fields to match. Variable size.";
3754 }
3755
3756 }
3757
3758 container ofp_aggregate_stats_reply {
3759 description
3760 "Body of reply to OFPMP_AGGREGATE request.";
3761 leaf packet_count {
3762 type uint64;
3763 description
3764 "Number of packets in flows.";
3765 }
3766
3767 leaf byte_count {
3768 type uint64;
3769 description
3770 "Number of bytes in flows.";
3771 }
3772
3773 leaf flow_count {
3774 type uint32;
3775 description
3776 "Number of flows.";
3777 }
3778
3779 }
3780
3781 grouping ofp_table_feature_property {
3782 description
3783 "Common header for all Table Feature Properties";
3784 leaf type {
3785 type ofp_table_feature_prop_type;
3786
3787 description
3788 "One of OFPTFPT_ .";
3789 }
3790
3791 container instructions {
3792 uses ofp_table_feature_prop_instructions;
3793
3794 description
3795 "";
3796 }
3797
3798 container next_tables {
3799 uses ofp_table_feature_prop_next_tables;
3800
3801 description
3802 "";
3803 }
3804
3805 container actions {
3806 uses ofp_table_feature_prop_actions;
3807
3808 description
3809 "";
3810 }
3811
3812 container oxm {
3813 uses ofp_table_feature_prop_oxm;
3814
3815 description
3816 "";
3817 }
3818
3819 container experimenter {
3820 uses ofp_table_feature_prop_experimenter;
3821
3822 description
3823 "";
3824 }
3825
3826 }
3827
3828 grouping ofp_table_feature_prop_instructions {
3829 description
3830 "Instructions property";
3831 list instructions {
3832 key "type";
3833 uses ofp_instruction;
3834
3835 description
3836 "One of OFPTFPT_INSTRUCTIONS,
3837OFPTFPT_INSTRUCTIONS_MISS.List of instructions";
3838 }
3839
3840 }
3841
3842 grouping ofp_table_feature_prop_next_tables {
3843 description
3844 "Next Tables property";
3845 list next_table_ids {
3846 key "next_table_ids";
3847 leaf next_table_ids {
3848 type uint32;
3849 description
3850 "One of OFPTFPT_NEXT_TABLES,
3851OFPTFPT_NEXT_TABLES_MISS.List of table ids.";
3852 }
3853 description
3854 "One of OFPTFPT_NEXT_TABLES,
3855OFPTFPT_NEXT_TABLES_MISS.List of table ids.";
3856 }
3857
3858 }
3859
3860 grouping ofp_table_feature_prop_actions {
3861 description
3862 "Actions property";
3863 list actions {
3864 key "type";
3865 uses ofp_action;
3866
3867 description
3868 "One of OFPTFPT_WRITE_ACTIONS,
3869OFPTFPT_WRITE_ACTIONS_MISS,
3870OFPTFPT_APPLY_ACTIONS,
3871OFPTFPT_APPLY_ACTIONS_MISS.List of actions";
3872 }
3873
3874 }
3875
3876 grouping ofp_table_feature_prop_oxm {
3877 description
3878 "Match, Wildcard or Set-Field propertyOne of OFPTFPT_MATCH,
3879OFPTFPT_WILDCARDS,
3880OFPTFPT_WRITE_SETFIELD,
3881OFPTFPT_WRITE_SETFIELD_MISS,
3882OFPTFPT_APPLY_SETFIELD,
3883OFPTFPT_APPLY_SETFIELD_MISS.";
3884 list oxm_ids {
3885 key "oxm_ids";
3886 leaf oxm_ids {
3887 type uint32;
3888 description
3889 "TODO is this a uint32???Array of OXM headers";
3890 }
3891 description
3892 "TODO is this a uint32???Array of OXM headers";
3893 }
3894
3895 }
3896
3897 grouping ofp_table_feature_prop_experimenter {
3898 description
3899 "Experimenter table feature property";
3900 leaf experimenter {
3901 type uint32;
3902 description
3903 "One of OFPTFPT_EXPERIMENTER,
3904OFPTFPT_EXPERIMENTER_MISS.Experimenter ID which takes the same
3905form as in struct
3906ofp_experimenter_header.";
3907 }
3908
3909 leaf exp_type {
3910 type uint32;
3911 description
3912 "Experimenter defined.";
3913 }
3914
3915 list experimenter_data {
3916 key "experimenter_data";
3917 leaf experimenter_data {
3918 type uint32;
3919 description
3920 "";
3921 }
3922 description
3923 "";
3924 }
3925
3926 }
3927
3928 container ofp_table_features {
3929 description
3930 "Body for ofp_multipart_request of type OFPMP_TABLE_FEATURES.
3931 Body of reply to OFPMP_TABLE_FEATURES request.";
3932 leaf table_id {
3933 type uint32;
3934 description
3935 "Identifier of table. Lower numbered tables
3936are consulted first.";
3937 }
3938
3939 leaf name {
3940 type string;
3941 description
3942 "";
3943 }
3944
3945 leaf metadata_match {
3946 type uint64;
3947 description
3948 "Bits of metadata table can match.";
3949 }
3950
3951 leaf metadata_write {
3952 type uint64;
3953 description
3954 "Bits of metadata table can write.";
3955 }
3956
3957 leaf config {
3958 type uint32;
3959 description
3960 "Bitmap of OFPTC_ values";
3961 }
3962
3963 leaf max_entries {
3964 type uint32;
3965 description
3966 "Max number of entries supported.";
3967 }
3968
3969 list properties {
3970 key "type";
3971 uses ofp_table_feature_property;
3972
3973 description
3974 "Table Feature Property list";
3975 }
3976
3977 }
3978
3979 container ofp_table_stats {
3980 description
3981 "Body of reply to OFPMP_TABLE request.";
3982 leaf table_id {
3983 type uint32;
3984 description
3985 "Identifier of table. Lower numbered tables
3986are consulted first.";
3987 }
3988
3989 leaf active_count {
3990 type uint32;
3991 description
3992 "Number of active entries.";
3993 }
3994
3995 leaf lookup_count {
3996 type uint64;
3997 description
3998 "Number of packets looked up in table.";
3999 }
4000
4001 leaf matched_count {
4002 type uint64;
4003 description
4004 "Number of packets that hit table.";
4005 }
4006
4007 }
4008
4009 container ofp_port_stats_request {
4010 description
4011 "Body for ofp_multipart_request of type OFPMP_PORT.";
4012 leaf port_no {
4013 type uint32;
4014 description
4015 "OFPMP_PORT message must request statistics
4016 either for a single port (specified in
4017 port_no) or for all ports (if port_no ==
4018 OFPP_ANY).";
4019 }
4020
4021 }
4022
4023 container ofp_port_stats {
4024 description
4025 "Body of reply to OFPMP_PORT request. If a counter is unsupported, set
4026 the field to all ones.";
4027 leaf port_no {
4028 type uint32;
4029 description
4030 "";
4031 }
4032
4033 leaf rx_packets {
4034 type uint64;
4035 description
4036 "Number of received packets.";
4037 }
4038
4039 leaf tx_packets {
4040 type uint64;
4041 description
4042 "Number of transmitted packets.";
4043 }
4044
4045 leaf rx_bytes {
4046 type uint64;
4047 description
4048 "Number of received bytes.";
4049 }
4050
4051 leaf tx_bytes {
4052 type uint64;
4053 description
4054 "Number of transmitted bytes.";
4055 }
4056
4057 leaf rx_dropped {
4058 type uint64;
4059 description
4060 "Number of packets dropped by RX.";
4061 }
4062
4063 leaf tx_dropped {
4064 type uint64;
4065 description
4066 "Number of packets dropped by TX.";
4067 }
4068
4069 leaf rx_errors {
4070 type uint64;
4071 description
4072 "Number of receive errors. This is a super-set
4073of more specific receive errors and should be
4074greater than or equal to the sum of all
4075rx_ _err values.";
4076 }
4077
4078 leaf tx_errors {
4079 type uint64;
4080 description
4081 "Number of transmit errors. This is a super-set
4082of more specific transmit errors and should be
4083greater than or equal to the sum of all
4084tx_ _err values (none currently defined.)";
4085 }
4086
4087 leaf rx_frame_err {
4088 type uint64;
4089 description
4090 "Number of frame alignment errors.";
4091 }
4092
4093 leaf rx_over_err {
4094 type uint64;
4095 description
4096 "Number of packets with RX overrun.";
4097 }
4098
4099 leaf rx_crc_err {
4100 type uint64;
4101 description
4102 "Number of CRC errors.";
4103 }
4104
4105 leaf collisions {
4106 type uint64;
4107 description
4108 "Number of collisions.";
4109 }
4110
4111 leaf duration_sec {
4112 type uint32;
4113 description
4114 "Time port has been alive in seconds.";
4115 }
4116
4117 leaf duration_nsec {
4118 type uint32;
4119 description
4120 "Time port has been alive in nanoseconds
4121beyond duration_sec.";
4122 }
4123
4124 }
4125
4126 container ofp_group_stats_request {
4127 description
4128 "Body of OFPMP_GROUP request.";
4129 leaf group_id {
4130 type uint32;
4131 description
4132 "All groups if OFPG_ALL.";
4133 }
4134
4135 }
4136
4137 grouping ofp_bucket_counter {
4138 description
4139 "Used in group stats replies.";
4140 leaf packet_count {
4141 type uint64;
4142 description
4143 "Number of packets processed by bucket.";
4144 }
4145
4146 leaf byte_count {
4147 type uint64;
4148 description
4149 "Number of bytes processed by bucket.";
4150 }
4151
4152 }
4153
4154 grouping ofp_group_stats {
4155 description
4156 "Body of reply to OFPMP_GROUP request.";
4157 leaf group_id {
4158 type uint32;
4159 description
4160 "Group identifier.";
4161 }
4162
4163 leaf ref_count {
4164 type uint32;
4165 description
4166 "Number of flows or groups that directly
4167forward to this group.";
4168 }
4169
4170 leaf packet_count {
4171 type uint64;
4172 description
4173 "Number of packets processed by group.";
4174 }
4175
4176 leaf byte_count {
4177 type uint64;
4178 description
4179 "Number of bytes processed by group.";
4180 }
4181
4182 leaf duration_sec {
4183 type uint32;
4184 description
4185 "Time group has been alive in seconds.";
4186 }
4187
4188 leaf duration_nsec {
4189 type uint32;
4190 description
4191 "Time group has been alive in nanoseconds
4192beyond duration_sec.";
4193 }
4194
4195 list bucket_stats {
4196 key "packet_count";
4197 uses ofp_bucket_counter;
4198
4199 description
4200 "One counter set per
4201bucket.";
4202 }
4203
4204 }
4205
4206 container ofp_group_desc {
4207 description
4208 "Body of reply to OFPMP_GROUP_DESC request.";
4209 leaf type {
4210 type ofp_group_type;
4211
4212 description
4213 "One of OFPGT_ .";
4214 }
4215
4216 leaf group_id {
4217 type uint32;
4218 description
4219 "Group identifier.";
4220 }
4221
4222 list buckets {
4223 key "weight";
4224 uses ofp_bucket;
4225
4226 description
4227 "List of buckets - 0 or more.";
4228 }
4229
4230 }
4231
4232 grouping ofp_group_entry {
4233 description
4234 "";
4235 leaf type {
4236 type ofp_group_type;
4237
4238 description
4239 "One of OFPGT_ .";
4240 }
4241
4242 leaf group_id {
4243 type uint32;
4244 description
4245 "Group identifier.";
4246 }
4247
4248 list buckets {
4249 key "weight";
4250 uses ofp_bucket;
4251
4252 description
4253 "List of buckets - 0 or more.";
4254 }
4255
4256 container stats {
4257 uses ofp_group_stats;
4258
4259 description
4260 "ofp_group_desc desc = 1;";
4261 }
4262
4263 }
4264
4265 container ofp_group_features {
4266 description
4267 "Body of reply to OFPMP_GROUP_FEATURES request. Group features.";
4268 leaf types {
4269 type uint32;
4270 description
4271 "Bitmap of (1 << OFPGT_ ) values supported.";
4272 }
4273
4274 leaf capabilities {
4275 type uint32;
4276 description
4277 "Bitmap of OFPGFC_ capability supported.";
4278 }
4279
4280 list max_groups {
4281 key "max_groups";
4282 leaf max_groups {
4283 type uint32;
4284 description
4285 "Maximum number of groups for each type.";
4286 }
4287 description
4288 "Maximum number of groups for each type.";
4289 }
4290
4291 list actions {
4292 key "actions";
4293 leaf actions {
4294 type uint32;
4295 description
4296 "Bitmaps of (1 << OFPAT_ ) values
4297supported.";
4298 }
4299 description
4300 "Bitmaps of (1 << OFPAT_ ) values
4301supported.";
4302 }
4303
4304 }
4305
4306 container ofp_meter_multipart_request {
4307 description
4308 "Body of OFPMP_METER and OFPMP_METER_CONFIG requests.";
4309 leaf meter_id {
4310 type uint32;
4311 description
4312 "Meter instance, or OFPM_ALL.";
4313 }
4314
4315 }
4316
4317 grouping ofp_meter_band_stats {
4318 description
4319 "Statistics for each meter band";
4320 leaf packet_band_count {
4321 type uint64;
4322 description
4323 "Number of packets in band.";
4324 }
4325
4326 leaf byte_band_count {
4327 type uint64;
4328 description
4329 "Number of bytes in band.";
4330 }
4331
4332 }
4333
4334 container ofp_meter_stats {
4335 description
4336 "Body of reply to OFPMP_METER request. Meter statistics.";
4337 leaf meter_id {
4338 type uint32;
4339 description
4340 "Meter instance.";
4341 }
4342
4343 leaf flow_count {
4344 type uint32;
4345 description
4346 "Number of flows bound to meter.";
4347 }
4348
4349 leaf packet_in_count {
4350 type uint64;
4351 description
4352 "Number of packets in input.";
4353 }
4354
4355 leaf byte_in_count {
4356 type uint64;
4357 description
4358 "Number of bytes in input.";
4359 }
4360
4361 leaf duration_sec {
4362 type uint32;
4363 description
4364 "Time meter has been alive in seconds.";
4365 }
4366
4367 leaf duration_nsec {
4368 type uint32;
4369 description
4370 "Time meter has been alive in nanoseconds
4371beyond duration_sec.";
4372 }
4373
4374 list band_stats {
4375 key "packet_band_count";
4376 uses ofp_meter_band_stats;
4377
4378 description
4379 "The band_stats length is
4380inferred from the length field.";
4381 }
4382
4383 }
4384
4385 container ofp_meter_config {
4386 description
4387 "Body of reply to OFPMP_METER_CONFIG request. Meter configuration.";
4388 leaf flags {
4389 type uint32;
4390 description
4391 "All OFPMF_ that apply.";
4392 }
4393
4394 leaf meter_id {
4395 type uint32;
4396 description
4397 "Meter instance.";
4398 }
4399
4400 list bands {
4401 key "type";
4402 uses ofp_meter_band_header;
4403
4404 description
4405 "The bands length is
4406inferred from the length field.";
4407 }
4408
4409 }
4410
4411 container ofp_meter_features {
4412 description
4413 "Body of reply to OFPMP_METER_FEATURES request. Meter features.";
4414 leaf max_meter {
4415 type uint32;
4416 description
4417 "Maximum number of meters.";
4418 }
4419
4420 leaf band_types {
4421 type uint32;
4422 description
4423 "Bitmaps of (1 << OFPMBT_ ) values supported.";
4424 }
4425
4426 leaf capabilities {
4427 type uint32;
4428 description
4429 "Bitmaps of ofp_meter_flags .";
4430 }
4431
4432 leaf max_bands {
4433 type uint32;
4434 description
4435 "Maximum bands per meters";
4436 }
4437
4438 leaf max_color {
4439 type uint32;
4440 description
4441 "Maximum color value";
4442 }
4443
4444 }
4445
4446 container ofp_experimenter_multipart_header {
4447 description
4448 "Body for ofp_multipart_request reply of type OFPMP_EXPERIMENTER.";
4449 leaf experimenter {
4450 type uint32;
4451 description
4452 "Experimenter ID which takes the same form
4453as in struct ofp_experimenter_header.";
4454 }
4455
4456 leaf exp_type {
4457 type uint32;
4458 description
4459 "Experimenter defined.";
4460 }
4461
4462 leaf data {
4463 type binary;
4464 description
4465 "Experimenter-defined arbitrary additional data.";
4466 }
4467
4468 }
4469
4470 container ofp_experimenter_header {
4471 description
4472 "Experimenter extension.";
4473 leaf experimenter {
4474 type uint32;
4475 description
4476 "ofp_header header; Type OFPT_EXPERIMENTER.
4477Experimenter ID:
4478 - MSB 0: low-order bytes are IEEE OUI.
4479 - MSB != 0: defined by ONF.";
4480 }
4481
4482 leaf exp_type {
4483 type uint32;
4484 description
4485 "Experimenter defined.";
4486 }
4487
4488 leaf data {
4489 type binary;
4490 description
4491 "Experimenter-defined arbitrary additional data.";
4492 }
4493
4494 }
4495
4496 grouping ofp_queue_prop_header {
4497 description
4498 "Common description for a queue.";
4499 leaf property {
4500 type uint32;
4501 description
4502 "One of OFPQT_.";
4503 }
4504
4505 leaf len {
4506 type uint32;
4507 description
4508 "Length of property, including this header.";
4509 }
4510
4511 }
4512
4513 container ofp_queue_prop_min_rate {
4514 description
4515 "Min-Rate queue property description.";
4516 container prop_header {
4517 uses ofp_queue_prop_header;
4518
4519 description
4520 "prop: OFPQT_MIN, len: 16.";
4521 }
4522
4523 leaf rate {
4524 type uint32;
4525 description
4526 "In 1 10 of a percent = 0;>1000 -> disabled.";
4527 }
4528
4529 }
4530
4531 container ofp_queue_prop_max_rate {
4532 description
4533 "Max-Rate queue property description.";
4534 container prop_header {
4535 uses ofp_queue_prop_header;
4536
4537 description
4538 "prop: OFPQT_MAX, len: 16.";
4539 }
4540
4541 leaf rate {
4542 type uint32;
4543 description
4544 "In 1 10 of a percent = 0;>1000 -> disabled.";
4545 }
4546
4547 }
4548
4549 container ofp_queue_prop_experimenter {
4550 description
4551 "Experimenter queue property description.";
4552 container prop_header {
4553 uses ofp_queue_prop_header;
4554
4555 description
4556 "prop: OFPQT_EXPERIMENTER";
4557 }
4558
4559 leaf experimenter {
4560 type uint32;
4561 description
4562 "Experimenter ID which takes the same
4563form as in struct
4564ofp_experimenter_header.";
4565 }
4566
4567 leaf data {
4568 type binary;
4569 description
4570 "Experimenter defined data.";
4571 }
4572
4573 }
4574
4575 grouping ofp_packet_queue {
4576 description
4577 "Full description for a queue.";
4578 leaf queue_id {
4579 type uint32;
4580 description
4581 "id for the specific queue.";
4582 }
4583
4584 leaf port {
4585 type uint32;
4586 description
4587 "Port this queue is attached to.";
4588 }
4589
4590 list properties {
4591 key "property";
4592 uses ofp_queue_prop_header;
4593
4594 description
4595 "List of properties.";
4596 }
4597
4598 }
4599
4600 container ofp_queue_get_config_request {
4601 description
4602 "Query for port queue configuration.";
4603 leaf port {
4604 type uint32;
4605 description
4606 "ofp_header header;
4607Port to be queried. Should refer
4608to a valid physical port (i.e. <= OFPP_MAX),
4609or OFPP_ANY to request all configured
4610queues.";
4611 }
4612
4613 }
4614
4615 container ofp_queue_get_config_reply {
4616 description
4617 "Queue configuration for a given port.";
4618 leaf port {
4619 type uint32;
4620 description
4621 "ofp_header header;";
4622 }
4623
4624 list queues {
4625 key "queue_id";
4626 uses ofp_packet_queue;
4627
4628 description
4629 "List of configured queues.";
4630 }
4631
4632 }
4633
4634 container ofp_action_set_queue {
4635 description
4636 "OFPAT_SET_QUEUE action struct: send packets to given queue on port.";
4637 leaf type {
4638 type uint32;
4639 description
4640 "OFPAT_SET_QUEUE.";
4641 }
4642
4643 leaf queue_id {
4644 type uint32;
4645 description
4646 "Queue id for the packets.";
4647 }
4648
4649 }
4650
4651 container ofp_queue_stats_request {
4652 description
4653 "";
4654 leaf port_no {
4655 type uint32;
4656 description
4657 "All ports if OFPP_ANY.";
4658 }
4659
4660 leaf queue_id {
4661 type uint32;
4662 description
4663 "All queues if OFPQ_ALL.";
4664 }
4665
4666 }
4667
4668 container ofp_queue_stats {
4669 description
4670 "";
4671 leaf port_no {
4672 type uint32;
4673 description
4674 "";
4675 }
4676
4677 leaf queue_id {
4678 type uint32;
4679 description
4680 "Queue i.d";
4681 }
4682
4683 leaf tx_bytes {
4684 type uint64;
4685 description
4686 "Number of transmitted bytes.";
4687 }
4688
4689 leaf tx_packets {
4690 type uint64;
4691 description
4692 "Number of transmitted packets.";
4693 }
4694
4695 leaf tx_errors {
4696 type uint64;
4697 description
4698 "Number of packets dropped due to overrun.";
4699 }
4700
4701 leaf duration_sec {
4702 type uint32;
4703 description
4704 "Time queue has been alive in seconds.";
4705 }
4706
4707 leaf duration_nsec {
4708 type uint32;
4709 description
4710 "Time queue has been alive in nanoseconds
4711beyond duration_sec.";
4712 }
4713
4714 }
4715
4716 container ofp_role_request {
4717 description
4718 "Role request and reply message.";
4719 leaf role {
4720 type ofp_controller_role;
4721
4722 description
4723 "ofp_header header; Type OFPT_ROLE_REQUEST OFPT_ROLE_REPLY.
4724One of OFPCR_ROLE_ .";
4725 }
4726
4727 leaf generation_id {
4728 type uint64;
4729 description
4730 "Master Election Generation Id";
4731 }
4732
4733 }
4734
4735 container ofp_async_config {
4736 description
4737 "Asynchronous message configuration.";
4738 list packet_in_mask {
4739 key "packet_in_mask";
4740 leaf packet_in_mask {
4741 type uint32;
4742 description
4743 "ofp_header header; OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC.
4744Bitmasks of OFPR_ values.";
4745 }
4746 description
4747 "ofp_header header; OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC.
4748Bitmasks of OFPR_ values.";
4749 }
4750
4751 list port_status_mask {
4752 key "port_status_mask";
4753 leaf port_status_mask {
4754 type uint32;
4755 description
4756 "Bitmasks of OFPPR_ values.";
4757 }
4758 description
4759 "Bitmasks of OFPPR_ values.";
4760 }
4761
4762 list flow_removed_mask {
4763 key "flow_removed_mask";
4764 leaf flow_removed_mask {
4765 type uint32;
4766 description
4767 "Bitmasks of OFPRR_ values.";
4768 }
4769 description
4770 "Bitmasks of OFPRR_ values.";
4771 }
4772
4773 }
4774
4775 grouping FlowTableUpdate {
4776 description
4777 "ADDITIONAL VOLTHA SPECIFIC MESSAGE TYPES, AIDING RPC CALLS";
4778 leaf id {
4779 type string;
4780 description
4781 "Device.id or LogicalDevice.id";
4782 }
4783
4784 container flow_mod {
4785 uses ofp_flow_mod;
4786
4787 description
4788 "";
4789 }
4790
4791 }
4792
4793 grouping FlowGroupTableUpdate {
4794 description
4795 "";
4796 leaf id {
4797 type string;
4798 description
4799 "Device.id or LogicalDevice.id";
4800 }
4801
4802 container group_mod {
4803 uses ofp_group_mod;
4804
4805 description
4806 "";
4807 }
4808
4809 }
4810
4811 grouping Flows {
4812 description
4813 "";
4814 list items {
4815 key "id";
4816 uses ofp_flow_stats;
4817
4818 description
4819 "";
4820 }
4821
4822 }
4823
4824 grouping FlowGroups {
4825 description
4826 "";
4827 list items {
4828 key "type";
4829 uses ofp_group_entry;
4830
4831 description
4832 "";
4833 }
4834
4835 }
4836
4837 grouping PacketIn {
4838 description
4839 "";
4840 leaf id {
4841 type string;
4842 description
4843 "LogicalDevice.id";
4844 }
4845
4846 container packet_in {
4847 uses ofp_packet_in;
4848
4849 description
4850 "";
4851 }
4852
4853 }
4854
4855 grouping PacketOut {
4856 description
4857 "";
4858 leaf id {
4859 type string;
4860 description
4861 "LogicalDevice.id";
4862 }
4863
4864 container packet_out {
4865 uses ofp_packet_out;
4866
4867 description
4868 "";
4869 }
4870
4871 }
4872
4873}