Yang model fixed
[openflowjava.git] / openflow-protocol-api / src / main / yang / openflow-protocol.yang
index ec5f76bd9983b4ad2b45e9c7ae1df5201f7a9b28..7a71c1ce89843cb9dc63f8d21fd6effbc190e670 100644 (file)
@@ -2,7 +2,6 @@ module openflow-protocol {
     namespace "urn:opendaylight:openflow:protocol";\r
     prefix "ofproto";\r
 \r
-    import ietf-inet-types {prefix inet;}\r
     import ietf-yang-types {prefix yang;}\r
     \r
     import openflow-types {prefix oft;}\r
@@ -138,6 +137,7 @@ module openflow-protocol {
 \r
         grouping table-features-properties {\r
             list table-feature-properties {\r
+                key "type";\r
                 leaf type {\r
                     type oft:table-features-prop-type;\r
                 }\r
@@ -545,471 +545,531 @@ module openflow-protocol {
                     type oft:multipart-request-flags;\r
                 }      \r
                 choice multipart-request-body {\r
-                    case multipart-request-desc {\r
-                        leaf empty {\r
-                            type empty;\r
-                        }\r
-                    }\r
-                    case multipart-request-flow {\r
-                        leaf table-id {\r
-                            type uint8;\r
-                        }\r
-                        leaf out-port {\r
-                            type uint32;\r
-                        }\r
-                        leaf out-group {\r
-                            type uint32;\r
-                        }\r
-                        leaf cookie {\r
-                            type uint64;\r
-                        }\r
-                        leaf cookie-mask {\r
-                            type uint64;\r
-                        }\r
-                        uses match-grouping;\r
-                        \r
-                        // OF1.0 structures\r
-                        uses oxm:match-v10-grouping;\r
-                    }\r
-                    case multipart-request-aggregate {\r
-                        leaf table-id {\r
-                            type uint8;\r
-                        }\r
-                        leaf out-port {\r
-                            type uint32;\r
-                        }\r
-                        leaf out-group {\r
-                            type uint32;\r
-                        }\r
-                        leaf cookie {\r
-                            type uint64;\r
-                        }\r
-                        leaf cookie-mask {\r
-                            type uint64;\r
-                        }\r
-                        uses match-grouping;\r
-                        \r
-                        // OF1.0 structures\r
-                        uses oxm:match-v10-grouping;\r
-                    }\r
-                    case multipart-request-table {\r
-                        leaf empty {\r
-                            type empty;\r
-                        }\r
-                    }\r
-                    case multipart-request-port-stats {\r
-                        leaf port-no {\r
-                            type uint32;\r
-                        }\r
-                    }\r
-                    case multipart-request-queue {\r
-                        leaf port-no {\r
-                            type uint32;\r
-                        }\r
-                        leaf queue-id {\r
-                            type uint32;\r
-                        }\r
-                    }\r
-                    case multipart-request-group {\r
-                        leaf group-id {\r
-                            type oft:group-id;\r
-                        }\r
-                    }\r
-                    case multipart-request-group-desc {\r
-                        leaf empty {\r
-                            type empty;\r
-                        }\r
-                    }\r
-                    case multipart-request-group-features {\r
-                        leaf empty {\r
-                            type empty;\r
-                        }\r
-                    }\r
-                    case multipart-request-meter {\r
-                        leaf meter-id {\r
-                            type oft:meter-id;\r
-                        }\r
-                    }\r
-                    case multipart-request-meter-config {\r
-                        leaf meter-id {\r
-                            type oft:meter-id;\r
-                        }\r
-                    }\r
-                    case multipart-request-meter-features {\r
-                        leaf empty {\r
-                            type empty;\r
-                        }\r
-                    }\r
-                    case multipart-request-table-features {\r
-                        list table-features {\r
-                            leaf table-id {\r
-                                type uint8;\r
-                            }\r
-                            leaf name {\r
-                                type string;\r
-                            }\r
-                            leaf metadata-match {\r
-                                type uint64;\r
-                            }\r
-                            leaf metadata-write {\r
-                                type uint64;\r
-                            }\r
-                            leaf config {\r
-                                type oft:table-config;\r
+                    case multipart-request-desc-case {\r
+                        container multipart-request-desc {\r
+                            leaf empty {\r
+                                type empty;\r
                             }\r
-                            leaf max-entries {\r
-                                type uint32;\r
-                            }\r
-                            uses table-features-properties;\r
-                        }\r
-                    }\r
-                    case multipart-request-port-desc {\r
-                        leaf empty {\r
-                            type empty;\r
                         }\r
                     }\r
-                    case multipart-request-experimenter {\r
-                        leaf experimenter {\r
-                            type uint32;\r
-                        }\r
-                        leaf exp-type {\r
-                            type uint32;\r
-                        }\r
-                        leaf data {\r
-                            type binary;\r
-                        }\r
-                    }\r
-                }\r
-            } \r
-            grouping multipart-reply {\r
-                // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"\r
-                /* Controller/switch message */\r
-\r
-                uses ofHeader;\r
-                \r
-                leaf type {\r
-                    type oft:multipart-type;\r
-                }\r
-                leaf flags {\r
-                    type oft:multipart-request-flags;\r
-                }\r
-                choice multipart-reply-body {\r
-                    case multipart-reply-desc {\r
-                        leaf mfr_desc {\r
-                            type string;\r
-                        }\r
-                        leaf hw_desc {\r
-                            type string;\r
-                        }\r
-                        leaf sw_desc {\r
-                            type string;\r
-                        }\r
-                        leaf serial_num {\r
-                            type string;\r
-                        }\r
-                        leaf dp_desc {\r
-                            type string;\r
-                        }\r
-                    }\r
-                    case multipart-reply-flow {\r
-                        list flow-stats {\r
+                    case multipart-request-flow-case {\r
+                        container multipart-request-flow {\r
                             leaf table-id {\r
                                 type uint8;\r
                             }\r
-                            leaf duration-sec {\r
+                            leaf out-port {\r
                                 type uint32;\r
                             }\r
-                            leaf duration-nsec {\r
+                            leaf out-group {\r
                                 type uint32;\r
                             }\r
-                            leaf priority {\r
-                                type uint16;\r
-                            }\r
-                            leaf idle-timeout {\r
-                                type uint16;\r
-                            }\r
-                            leaf hard-timeout {\r
-                                type uint16;\r
-                            }\r
-                            leaf flags {\r
-                                type oft:flow-mod-flags;\r
-                            }\r
                             leaf cookie {\r
                                 type uint64;\r
                             }\r
-                            leaf packet-count {\r
-                                type uint64;\r
-                            }\r
-                            leaf byte-count {\r
+                            leaf cookie-mask {\r
                                 type uint64;\r
                             }\r
                             uses match-grouping;\r
                             \r
-                            uses ofinstruction:instructions;\r
-                            \r
                             // OF1.0 structures\r
                             uses oxm:match-v10-grouping;\r
-                            uses ofaction:actions;\r
-                        }\r
-                    }\r
-                    case multipart-reply-aggregate {\r
-                        leaf packet-count {\r
-                            type uint64;\r
-                        }\r
-                        leaf byte-count {\r
-                            type uint64;\r
-                        }\r
-                        leaf flow-count {\r
-                            type uint32;\r
                         }\r
                     }\r
-                    case multipart-reply-table {\r
-                        list table-stats {\r
+                    case multipart-request-aggregate-case {\r
+                        container multipart-request-aggregate {\r
                             leaf table-id {\r
                                 type uint8;\r
                             }\r
-                            leaf active-count {\r
+                            leaf out-port {\r
+                                type uint32;\r
+                            }\r
+                            leaf out-group {\r
                                 type uint32;\r
                             }\r
-                            leaf lookup-count {\r
+                            leaf cookie {\r
                                 type uint64;\r
                             }\r
-                            leaf matched-count {\r
+                            leaf cookie-mask {\r
                                 type uint64;\r
                             }\r
+                            uses match-grouping;\r
                             \r
                             // OF1.0 structures\r
-                            leaf name {\r
-                                type string;\r
+                            uses oxm:match-v10-grouping;\r
+                        }\r
+                    }\r
+                    case multipart-request-table-case {\r
+                        container multipart-request-table {\r
+                            leaf empty {\r
+                                type empty;\r
                             }\r
                         }\r
                     }\r
-                    case multipart-reply-port-stats {\r
-                        list port-stats {\r
+                    case multipart-request-port-stats-case {\r
+                        container multipart-request-port-stats {\r
                             leaf port-no {\r
                                 type uint32;\r
                             }\r
-                            leaf rx-packets {\r
-                                type uint64;\r
-                            }\r
-                            leaf tx-packets {\r
-                                type uint64;\r
-                            }\r
-                            leaf rx-bytes {\r
-                                type uint64;\r
-                            }\r
-                            leaf tx-bytes {\r
-                                type uint64;\r
-                            }\r
-                            leaf rx-dropped {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-request-queue-case {\r
+                        container multipart-request-queue {\r
+                            leaf port-no {\r
+                                type uint32;\r
                             }\r
-                            leaf tx-dropped {\r
-                                type uint64;\r
+                            leaf queue-id {\r
+                                type uint32;\r
                             }\r
-                            leaf rx-errors {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-request-group-case {\r
+                        container multipart-request-group {\r
+                            leaf group-id {\r
+                                type oft:group-id;\r
                             }\r
-                            leaf tx-errors {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-request-group-desc-case {\r
+                        container multipart-request-group-desc {\r
+                            leaf empty {\r
+                                type empty;\r
                             }\r
-                            leaf rx-frame-err {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-request-group-features-case {\r
+                        container multipart-request-group-features {\r
+                            leaf empty {\r
+                                type empty;\r
                             }\r
-                            leaf rx-over-err {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-request-meter-case {\r
+                        container multipart-request-meter {\r
+                            leaf meter-id {\r
+                                type oft:meter-id;\r
                             }\r
-                            leaf rx-crc-err {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-request-meter-config-case {\r
+                        container multipart-request-meter-config {\r
+                            leaf meter-id {\r
+                                type oft:meter-id;\r
                             }\r
-                            leaf collisions {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-request-meter-features-case {\r
+                        container multipart-request-meter-features {\r
+                            leaf empty {\r
+                                type empty;\r
                             }\r
-                            leaf duration-sec {\r
-                                type uint32;\r
+                        }\r
+                    }\r
+                    case multipart-request-table-features-case {\r
+                        container multipart-request-table-features {\r
+                            list table-features {\r
+                                leaf table-id {\r
+                                    type uint8;\r
+                                }\r
+                                leaf name {\r
+                                    type string;\r
+                                }\r
+                                leaf metadata-match {\r
+                                    type uint64;\r
+                                }\r
+                                leaf metadata-write {\r
+                                    type uint64;\r
+                                }\r
+                                leaf config {\r
+                                    type oft:table-config;\r
+                                }\r
+                                leaf max-entries {\r
+                                    type uint32;\r
+                                }\r
+                                uses table-features-properties;\r
                             }\r
-                            leaf duration-nsec {\r
-                                type uint32;\r
+                        }\r
+                    }\r
+                    case multipart-request-port-desc-case {\r
+                        container multipart-request-port-desc {\r
+                            leaf empty {\r
+                                type empty;\r
                             }\r
                         }\r
                     }\r
-                    case multipart-reply-queue {\r
-                        list queue-stats {\r
-                            leaf port-no {\r
+                    case multipart-request-experimenter-case {\r
+                        container multipart-request-experimenter {\r
+                            leaf experimenter {\r
                                 type uint32;\r
                             }\r
-                            leaf queue-id {\r
+                            leaf exp-type {\r
                                 type uint32;\r
                             }\r
-                            leaf tx-bytes {\r
-                                type uint64;\r
+                            leaf data {\r
+                                type binary;\r
                             }\r
-                            leaf tx-packets {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                }\r
+            } \r
+            grouping multipart-reply {\r
+                // reference "OFPT_MULTIPART_REPLY message in Openflow Switch 1.3 Spec"\r
+                /* Controller/switch message */\r
+\r
+                uses ofHeader;\r
+                \r
+                leaf type {\r
+                    type oft:multipart-type;\r
+                }\r
+                leaf flags {\r
+                    type oft:multipart-request-flags;\r
+                }\r
+                choice multipart-reply-body {\r
+                    case multipart-reply-desc-case {\r
+                        container multipart-reply-desc {\r
+                            leaf mfr_desc {\r
+                                type string;\r
                             }\r
-                            leaf tx-errors {\r
-                                type uint64;\r
+                            leaf hw_desc {\r
+                                type string;\r
                             }\r
-                            leaf duration-sec {\r
-                                type uint32;\r
+                            leaf sw_desc {\r
+                                type string;\r
                             }\r
-                            leaf duration-nsec {\r
-                                type uint32;\r
+                            leaf serial_num {\r
+                                type string;\r
+                            }\r
+                            leaf dp_desc {\r
+                                type string;\r
                             }\r
                         }\r
                     }\r
-                    case multipart-reply-group {\r
-                        list group-stats {\r
-                            leaf group-id {\r
-                                type oft:group-id;\r
-                            }\r
-                            leaf ref-count {\r
-                                type uint32;\r
+                    case multipart-reply-flow-case {\r
+                        container multipart-reply-flow {\r
+                            list flow-stats {\r
+                                leaf table-id {\r
+                                    type uint8;\r
+                                }\r
+                                leaf duration-sec {\r
+                                    type uint32;\r
+                                }\r
+                                leaf duration-nsec {\r
+                                    type uint32;\r
+                                }\r
+                                leaf priority {\r
+                                    type uint16;\r
+                                }\r
+                                leaf idle-timeout {\r
+                                    type uint16;\r
+                                }\r
+                                leaf hard-timeout {\r
+                                    type uint16;\r
+                                }\r
+                                leaf flags {\r
+                                    type oft:flow-mod-flags;\r
+                                }\r
+                                leaf cookie {\r
+                                    type uint64;\r
+                                }\r
+                                leaf packet-count {\r
+                                    type uint64;\r
+                                }\r
+                                leaf byte-count {\r
+                                    type uint64;\r
+                                }\r
+                                uses match-grouping;\r
+                                \r
+                                uses ofinstruction:instructions;\r
+                                \r
+                                // OF1.0 structures\r
+                                uses oxm:match-v10-grouping;\r
+                                uses ofaction:actions;\r
                             }\r
+                        }\r
+                    }\r
+                    case multipart-reply-aggregate-case {\r
+                        container multipart-reply-aggregate {\r
                             leaf packet-count {\r
                                 type uint64;\r
                             }\r
                             leaf byte-count {\r
                                 type uint64;\r
                             }\r
-                            leaf duration-sec {\r
-                                type uint32;\r
-                            }\r
-                            leaf duration-nsec {\r
+                            leaf flow-count {\r
                                 type uint32;\r
                             }\r
-                            list bucket-stats {\r
-                                leaf packet-count {\r
+                        }\r
+                    }\r
+                    case multipart-reply-table-case {\r
+                        container multipart-reply-table {\r
+                            list table-stats {\r
+                                leaf table-id {\r
+                                    type uint8;\r
+                                }\r
+                                leaf active-count {\r
+                                    type uint32;\r
+                                }\r
+                                leaf lookup-count {\r
                                     type uint64;\r
                                 }\r
-                                leaf byte-count {\r
+                                leaf matched-count {\r
                                     type uint64;\r
                                 }\r
+                                \r
+                                // OF1.0 structures\r
+                                leaf name {\r
+                                    type string;\r
+                                }\r
                             }\r
                         }\r
                     }\r
-                    case multipart-reply-group-desc {\r
-                        list group-desc {\r
-                            leaf type {\r
-                                type oft:group-type;\r
-                            }\r
-                            leaf group-id {\r
-                                type oft:group-id;\r
+                    case multipart-reply-port-stats-case {\r
+                        container multipart-reply-port-stats {\r
+                            list port-stats {\r
+                                leaf port-no {\r
+                                    type uint32;\r
+                                }\r
+                                leaf rx-packets {\r
+                                    type uint64;\r
+                                }\r
+                                leaf tx-packets {\r
+                                    type uint64;\r
+                                }\r
+                                leaf rx-bytes {\r
+                                    type uint64;\r
+                                }\r
+                                leaf tx-bytes {\r
+                                    type uint64;\r
+                                }\r
+                                leaf rx-dropped {\r
+                                    type uint64;\r
+                                }\r
+                                leaf tx-dropped {\r
+                                    type uint64;\r
+                                }\r
+                                leaf rx-errors {\r
+                                    type uint64;\r
+                                }\r
+                                leaf tx-errors {\r
+                                    type uint64;\r
+                                }\r
+                                leaf rx-frame-err {\r
+                                    type uint64;\r
+                                }\r
+                                leaf rx-over-err {\r
+                                    type uint64;\r
+                                }\r
+                                leaf rx-crc-err {\r
+                                    type uint64;\r
+                                }\r
+                                leaf collisions {\r
+                                    type uint64;\r
+                                }\r
+                                leaf duration-sec {\r
+                                    type uint32;\r
+                                }\r
+                                leaf duration-nsec {\r
+                                    type uint32;\r
+                                }\r
                             }\r
-                            uses buckets;\r
                         }\r
                     }\r
-                    case multipart-reply-group-features {\r
-                        leaf types {\r
-                            type oft:group-types;\r
-                        }\r
-                        leaf capabilities {\r
-                            type oft:group-capabilities;\r
-                        }\r
-                        leaf-list max_groups {\r
-                            type uint32;\r
-                        }\r
-                        leaf-list actions-bitmap {\r
-                            type oft:action-type;\r
+                    case multipart-reply-queue-case {\r
+                        container multipart-reply-queue {\r
+                            list queue-stats {\r
+                                leaf port-no {\r
+                                    type uint32;\r
+                                }\r
+                                leaf queue-id {\r
+                                    type uint32;\r
+                                }\r
+                                leaf tx-bytes {\r
+                                    type uint64;\r
+                                }\r
+                                leaf tx-packets {\r
+                                    type uint64;\r
+                                }\r
+                                leaf tx-errors {\r
+                                    type uint64;\r
+                                }\r
+                                leaf duration-sec {\r
+                                    type uint32;\r
+                                }\r
+                                leaf duration-nsec {\r
+                                    type uint32;\r
+                                }\r
+                            }\r
                         }\r
                     }\r
-                    case multipart-reply-meter {\r
-                        list meter-stats {\r
-                            leaf meter-id {\r
-                                type oft:meter-id;\r
+                    case multipart-reply-group-case {\r
+                        container multipart-reply-group {\r
+                            list group-stats {\r
+                                leaf group-id {\r
+                                    type oft:group-id;\r
+                                }\r
+                                leaf ref-count {\r
+                                    type uint32;\r
+                                }\r
+                                leaf packet-count {\r
+                                    type uint64;\r
+                                }\r
+                                leaf byte-count {\r
+                                    type uint64;\r
+                                }\r
+                                leaf duration-sec {\r
+                                    type uint32;\r
+                                }\r
+                                leaf duration-nsec {\r
+                                    type uint32;\r
+                                }\r
+                                list bucket-stats {\r
+                                    leaf packet-count {\r
+                                        type uint64;\r
+                                    }\r
+                                    leaf byte-count {\r
+                                        type uint64;\r
+                                    }\r
+                                }\r
                             }\r
-                            leaf flow-count {\r
-                                type uint32;\r
+                        }\r
+                    }\r
+                    case multipart-reply-group-desc-case {\r
+                        container multipart-reply-group-desc {\r
+                            list group-desc {\r
+                                leaf type {\r
+                                    type oft:group-type;\r
+                                }\r
+                                leaf group-id {\r
+                                    type oft:group-id;\r
+                                }\r
+                                uses buckets;\r
                             }\r
-                            leaf packet-in-count {\r
-                                type uint64;\r
+                        }\r
+                    }\r
+                    case multipart-reply-group-features-case {\r
+                        container multipart-reply-group-features {\r
+                            leaf types {\r
+                                type oft:group-types;\r
                             }\r
-                            leaf byte-in-count {\r
-                                type uint64;\r
+                            leaf capabilities {\r
+                                type oft:group-capabilities;\r
                             }\r
-                            leaf duration-sec {\r
+                            leaf-list max_groups {\r
                                 type uint32;\r
                             }\r
-                            leaf duration-nsec {\r
-                                type uint32;\r
+                            leaf-list actions-bitmap {\r
+                                type oft:action-type;\r
                             }\r
-                            list meter-band-stats {\r
-                                leaf packet-band-count {\r
+                        }\r
+                    }\r
+                    case multipart-reply-meter-case {\r
+                        container multipart-reply-meter {\r
+                            list meter-stats {\r
+                                leaf meter-id {\r
+                                    type oft:meter-id;\r
+                                }\r
+                                leaf flow-count {\r
+                                    type uint32;\r
+                                }\r
+                                leaf packet-in-count {\r
                                     type uint64;\r
                                 }\r
-                                leaf byte-band-count {\r
+                                leaf byte-in-count {\r
                                     type uint64;\r
                                 }\r
+                                leaf duration-sec {\r
+                                    type uint32;\r
+                                }\r
+                                leaf duration-nsec {\r
+                                    type uint32;\r
+                                }\r
+                                list meter-band-stats {\r
+                                    leaf packet-band-count {\r
+                                        type uint64;\r
+                                    }\r
+                                    leaf byte-band-count {\r
+                                        type uint64;\r
+                                    }\r
+                                }\r
                             }\r
                         }\r
                     }\r
-                    case multipart-reply-meter-config {\r
-                        list meter-config {\r
-                            leaf flags {\r
-                                type oft:meter-flags;\r
-                            }\r
-                            leaf meter-id {\r
-                                type oft:meter-id;\r
-                            }\r
-                            list bands {\r
-                                uses meter-band-header;\r
+                    case multipart-reply-meter-config-case {\r
+                        container multipart-reply-meter-config {\r
+                            list meter-config {\r
+                                leaf flags {\r
+                                    type oft:meter-flags;\r
+                                }\r
+                                leaf meter-id {\r
+                                    type oft:meter-id;\r
+                                }\r
+                                list bands {\r
+                                    uses meter-band-header;\r
+                                }\r
                             }\r
                         }\r
                     }\r
-                    case multipart-reply-meter-features {\r
-                        leaf max-meter {\r
-                            type uint32;\r
-                        }\r
-                        leaf band-types {\r
-                            type oft:meter-band-type-bitmap;\r
-                        }\r
-                        leaf capabilities {\r
-                            type oft:meter-flags;\r
-                        }\r
-                        leaf max-bands {\r
-                            type uint8;\r
-                        }\r
-                        leaf max-color {\r
-                            type uint8;\r
-                        }\r
-                    }\r
-                    case multipart-reply-table-features {\r
-                        list table-features {\r
-                            leaf table-id {\r
-                                type uint8;\r
+                    case multipart-reply-meter-features-case {\r
+                        container multipart-reply-meter-features {\r
+                            leaf max-meter {\r
+                                type uint32;\r
                             }\r
-                            leaf name {\r
-                                type string;\r
+                            leaf band-types {\r
+                                type oft:meter-band-type-bitmap;\r
                             }\r
-                            leaf metadata-match {\r
-                                type binary;\r
+                            leaf capabilities {\r
+                                type oft:meter-flags;\r
                             }\r
-                            leaf metadata-write {\r
-                                type binary;\r
+                            leaf max-bands {\r
+                                type uint8;\r
                             }\r
-                            leaf config {\r
-                                type oft:table-config;\r
-                            } \r
-                            leaf max-entries {\r
-                                type uint32;\r
+                            leaf max-color {\r
+                                type uint8;\r
                             }\r
-                            uses table-features-properties;\r
                         }\r
                     }\r
-                    case multipart-reply-port-desc {\r
-                        list ports {\r
-                            uses port;\r
+                    case multipart-reply-table-features-case {\r
+                        container multipart-reply-table-features {\r
+                            list table-features {\r
+                                leaf table-id {\r
+                                    type uint8;\r
+                                }\r
+                                leaf name {\r
+                                    type string;\r
+                                }\r
+                                leaf metadata-match {\r
+                                    type binary;\r
+                                }\r
+                                leaf metadata-write {\r
+                                    type binary;\r
+                                }\r
+                                leaf config {\r
+                                    type oft:table-config;\r
+                                } \r
+                                leaf max-entries {\r
+                                    type uint32;\r
+                                }\r
+                                uses table-features-properties;\r
+                            }\r
                         }\r
                     }\r
-                    case multipart-reply-experimenter {\r
-                        leaf experimenter {\r
-                            type uint32;\r
-                        }\r
-                        leaf exp-type {\r
-                            type uint32;\r
+                    case multipart-reply-port-desc-case {\r
+                        container multipart-reply-port-desc {\r
+                            list ports {\r
+                                uses port;\r
+                            }\r
                         }\r
-                        leaf data {\r
-                            type binary;\r
+                    }\r
+                    case multipart-reply-experimenter-case {\r
+                        container multipart-reply-experimenter {\r
+                            leaf experimenter {\r
+                                type uint32;\r
+                            }\r
+                            leaf exp-type {\r
+                                type uint32;\r
+                            }\r
+                            leaf data {\r
+                                type binary;\r
+                            }\r
                         }\r
                     }\r
                 }\r
@@ -1063,6 +1123,7 @@ module openflow-protocol {
             }\r
             grouping queue-property-header {\r
                 list queue-property {\r
+                    key "property";\r
                     leaf property {\r
                         type oft:queue-properties;\r
                     }\r
@@ -1146,30 +1207,36 @@ module openflow-protocol {
                 } \r
                 leaf flags {\r
                     type oft:meter-flags;\r
-                }            \r
+                }\r
                 leaf meter-id {\r
                     type oft:meter-id;\r
-                }   \r
+                }\r
                 list bands {\r
                     uses meter-band-header;\r
                 }\r
-            } \r
+            }\r
             \r
             grouping meter-band-header {\r
                 choice meter-band {\r
-                    case meter-band-drop {\r
-                        uses meter-band-commons;\r
+                    case meter-band-drop-case {\r
+                        container meter-band-drop {\r
+                            uses meter-band-commons;\r
+                        }\r
                     }\r
-                    case meter-band-dscp-remark {\r
-                        uses meter-band-commons;\r
-                        leaf prec-level {\r
-                            type uint8;\r
+                    case meter-band-dscp-remark-case {\r
+                        container meter-band-dscp-remark {\r
+                            uses meter-band-commons;\r
+                            leaf prec-level {\r
+                                type uint8;\r
+                            }\r
                         }\r
                     }\r
-                    case meter-band-experimenter {\r
-                        uses meter-band-commons;\r
-                        leaf experimenter {\r
-                            type uint32;\r
+                    case meter-band-experimenter-case {\r
+                        container meter-band-experimenter {\r
+                            uses meter-band-commons;\r
+                            leaf experimenter {\r
+                                type uint32;\r
+                            }\r
                         }\r
                     }\r
                 }\r