+ choice multipart-reply-body {
+ case multipart-reply-desc-case {
+ container multipart-reply-desc {
+ leaf mfr_desc {
+ type string;
+ }
+ leaf hw_desc {
+ type string;
+ }
+ leaf sw_desc {
+ type string;
+ }
+ leaf serial_num {
+ type string;
+ }
+ leaf dp_desc {
+ type string;
+ }
+ }
+ }
+ case multipart-reply-flow-case {
+ container multipart-reply-flow {
+ list flow-stats {
+ leaf table-id {
+ type uint8;
+ }
+ leaf duration-sec {
+ type uint32;
+ }
+ leaf duration-nsec {
+ type uint32;
+ }
+ leaf priority {
+ type uint16;
+ }
+ leaf idle-timeout {
+ type uint16;
+ }
+ leaf hard-timeout {
+ type uint16;
+ }
+ leaf flags {
+ type oft:flow-mod-flags;
+ }
+ leaf cookie {
+ type uint64;
+ }
+ leaf packet-count {
+ type uint64;
+ }
+ leaf byte-count {
+ type uint64;
+ }
+ uses oxm:match-grouping;
+
+ uses ofinstruction:instructions-grouping;
+
+ // OF1.0 structures
+ uses oxm:match-v10-grouping;
+ uses ofaction:actions-grouping;
+ }
+ }
+ }
+ case multipart-reply-aggregate-case {
+ container multipart-reply-aggregate {
+ leaf packet-count {
+ type uint64;
+ }
+ leaf byte-count {
+ type uint64;
+ }
+ leaf flow-count {
+ type uint32;
+ }
+ }
+ }
+ case multipart-reply-table-case {
+ container multipart-reply-table {
+ list table-stats {
+ leaf table-id {
+ type uint8;
+ }
+ leaf active-count {
+ type uint32;
+ }
+ leaf lookup-count {
+ type uint64;
+ }
+ leaf matched-count {
+ type uint64;
+ }
+
+ // OF1.0 structures
+ leaf name {
+ type string;
+ }
+ leaf wildcards {
+ type oft:flow-wildcards-v10;
+ }
+ leaf nw-src-mask {
+ type uint8;
+ }
+ leaf nw-dst-mask {
+ type uint8;
+ }
+ leaf max-entries {
+ type uint32;
+ }
+ }
+ }
+ }
+ case multipart-reply-port-stats-case {
+ container multipart-reply-port-stats {
+ list port-stats {
+ leaf port-no {
+ type uint32;
+ }
+ leaf rx-packets {
+ type uint64;
+ }
+ leaf tx-packets {
+ type uint64;
+ }
+ leaf rx-bytes {
+ type uint64;
+ }
+ leaf tx-bytes {
+ type uint64;
+ }
+ leaf rx-dropped {
+ type uint64;
+ }
+ leaf tx-dropped {
+ type uint64;
+ }
+ leaf rx-errors {
+ type uint64;
+ }
+ leaf tx-errors {
+ type uint64;
+ }
+ leaf rx-frame-err {
+ type uint64;
+ }
+ leaf rx-over-err {
+ type uint64;
+ }
+ leaf rx-crc-err {
+ type uint64;
+ }
+ leaf collisions {
+ type uint64;
+ }
+ leaf duration-sec {
+ type uint32;
+ }
+ leaf duration-nsec {
+ type uint32;
+ }
+ }
+ }
+ }
+ case multipart-reply-queue-case {
+ container multipart-reply-queue {
+ list queue-stats {
+ leaf port-no {
+ type uint32;
+ }
+ leaf queue-id {
+ type uint32;
+ }
+ leaf tx-bytes {
+ type uint64;
+ }
+ leaf tx-packets {
+ type uint64;
+ }
+ leaf tx-errors {
+ type uint64;
+ }
+ leaf duration-sec {
+ type uint32;
+ }
+ leaf duration-nsec {
+ type uint32;
+ }
+ }
+ }
+ }
+ case multipart-reply-group-case {
+ container multipart-reply-group {
+ list group-stats {
+ leaf group-id {
+ type oft:group-id;
+ }
+ leaf ref-count {
+ type uint32;
+ }
+ leaf packet-count {
+ type uint64;
+ }
+ leaf byte-count {
+ type uint64;
+ }
+ leaf duration-sec {
+ type uint32;
+ }
+ leaf duration-nsec {
+ type uint32;
+ }
+ list bucket-stats {
+ leaf packet-count {
+ type uint64;
+ }
+ leaf byte-count {
+ type uint64;
+ }
+ }
+ }
+ }
+ }
+ case multipart-reply-group-desc-case {
+ container multipart-reply-group-desc {
+ list group-desc {
+ leaf type {
+ type oft:group-type;
+ }
+ leaf group-id {
+ type oft:group-id;
+ }
+ uses buckets-grouping;
+ }
+ }
+ }
+ case multipart-reply-group-features-case {
+ container multipart-reply-group-features {
+ leaf types {
+ type oft:group-types;
+ }
+ leaf capabilities {
+ type oft:group-capabilities;
+ }
+ leaf-list max_groups {
+ type uint32;
+ }
+ leaf-list actions-bitmap {
+ type oft:action-type;
+ }
+ }
+ }
+ case multipart-reply-meter-case {
+ container multipart-reply-meter {
+ list meter-stats {
+ leaf meter-id {
+ type oft:meter-id;
+ }
+ leaf flow-count {
+ type uint32;
+ }
+ leaf packet-in-count {
+ type uint64;
+ }
+ leaf byte-in-count {
+ type uint64;
+ }
+ leaf duration-sec {
+ type uint32;
+ }
+ leaf duration-nsec {
+ type uint32;
+ }
+ list meter-band-stats {
+ leaf packet-band-count {
+ type uint64;
+ }
+ leaf byte-band-count {
+ type uint64;
+ }
+ }
+ }
+ }
+ }
+ case multipart-reply-meter-config-case {
+ container multipart-reply-meter-config {
+ list meter-config {
+ leaf flags {
+ type oft:meter-flags;
+ }
+ leaf meter-id {
+ type oft:meter-id;
+ }
+ list bands {
+ uses meter-band-header;
+ }
+ }
+ }
+ }
+ case multipart-reply-meter-features-case {
+ container multipart-reply-meter-features {
+ leaf max-meter {
+ type uint32;
+ }
+ leaf band-types {
+ type oft:meter-band-type-bitmap;
+ }
+ leaf capabilities {
+ type oft:meter-flags;
+ }
+ leaf max-bands {
+ type uint8;
+ }
+ leaf max-color {
+ type uint8;
+ }
+ }
+ }
+ case multipart-reply-table-features-case {
+ container multipart-reply-table-features {
+ list table-features {
+ leaf table-id {
+ type uint8;
+ }
+ leaf name {
+ type string;
+ }
+ leaf metadata-match {
+ type binary;
+ }
+ leaf metadata-write {
+ type binary;
+ }
+ leaf config {
+ type oft:table-config;
+ }
+ leaf max-entries {
+ type uint32;
+ }
+ uses table-features-properties-grouping;
+ }
+ }
+ }
+ case multipart-reply-port-desc-case {
+ container multipart-reply-port-desc {
+ list ports {
+ uses port-grouping;
+ }
+ }
+ }
+ case multipart-reply-experimenter-case {
+ container multipart-reply-experimenter {
+ // empty body - used for experimenter augmentation
+ }
+ }