Signed-off-by: Simon Horman <ho...@verge.net.au> ---
v5 * Initial Post * Broken out of "ofp-util: Allow decoding of Open Flow 1.1 & 1.2 Flow Aggregate Statistics Response Messages" * Do not modify packet data ofp_print_ofpst_aggregate_reply --- lib/ofp-print.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/lib/ofp-print.c b/lib/ofp-print.c index 8dc4fb3..cb1ff3a 100644 --- a/lib/ofp-print.c +++ b/lib/ofp-print.c @@ -1003,13 +1003,34 @@ ofp_print_flow_stats_reply(struct ds *string, const struct ofp_header *oh) static void ofp_print_ofpst_aggregate_reply(struct ds *string, const struct ofp_header *oh) { - const struct ofp10_aggregate_stats_reply *asr; + struct ofp11_aggregate_stats_reply asr; - asr = ofputil_stats_msg_body(oh); - ds_put_format(string, " packet_count=%"PRIu64, - ntohll(get_32aligned_be64(&asr->packet_count))); - ds_put_format(string, " byte_count=%"PRIu64, - ntohll(get_32aligned_be64(&asr->byte_count))); + switch (oh->version) { + case OFP12_VERSION: + case OFP11_VERSION: { + const struct ofp11_aggregate_stats_reply *asr11; + + asr11 = ofputil_stats_msg_body(oh); + asr = *asr11; + break; + } + + case OFP10_VERSION: { + const struct ofp10_aggregate_stats_reply *asr10; + + asr10 = ofputil_stats_msg_body(oh); + asr.packet_count = get_32aligned_be64(&asr10->packet_count); + asr.byte_count = get_32aligned_be64(&asr10->byte_count); + asr.flow_count = asr10->flow_count; + break; + } + + default: + NOT_REACHED(); + } + + ds_put_format(string, " packet_count=%"PRIu64, ntohll(asr->packet_count)); + ds_put_format(string, " byte_count=%"PRIu64, ntohll(asr->byte_count)); ds_put_format(string, " flow_count=%"PRIu32, ntohl(asr->flow_count)); } -- 1.7.10.2.484.gcd07cc5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev