From 2af0c0ef3fe0d45a3767c57566ae3a4327a0c2b7 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 7 Dec 2010 14:52:26 -0800 Subject: [PATCH] ofp-print: Print NXST_FLOW_REQUEST and NXST_AGGREGATE_REQUEST. This takes advantage of ofputil_decode_flow_stats_request() to get rid of some code. --- lib/ofp-print.c | 51 ++++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/lib/ofp-print.c b/lib/ofp-print.c index 740dbe963..0ae987e44 100644 --- a/lib/ofp-print.c +++ b/lib/ofp-print.c @@ -1102,18 +1102,28 @@ ofp_print_ofpst_desc_reply(struct ds *string, const struct ofp_header *oh) } static void -ofp_print_ofpst_flow_request(struct ds *string, const struct ofp_header *oh, - int verbosity) +ofp_print_flow_stats_request(struct ds *string, const struct ofp_header *oh) { - const struct ofp_flow_stats_request *fsr = ofputil_stats_body(oh); + struct flow_stats_request fsr; + int error; - if (fsr->table_id == 0xff) { - ds_put_format(string, " table_id=any, "); - } else { - ds_put_format(string, " table_id=%"PRIu8", ", fsr->table_id); + error = ofputil_decode_flow_stats_request(&fsr, oh, NXFF_OPENFLOW10); + if (error) { + ofp_print_error(string, error); + return; + } + + if (fsr.table_id != 0xff) { + ds_put_format(string, " table_id=%"PRIu8, fsr.table_id); } - ofp_print_match(string, &fsr->match, verbosity); + if (fsr.out_port != OFPP_NONE) { + ds_put_cstr(string, " out_port="); + ofp_print_port_name(string, fsr.out_port); + } + + ds_put_char(string, ' '); + cls_rule_format(&fsr.match, string); } static void @@ -1258,21 +1268,6 @@ ofp_print_nxst_flow_reply(struct ds *string, const struct ofp_header *oh) } } -static void -ofp_print_ofpst_aggregate_request(struct ds *string, - const struct ofp_header *oh, int verbosity) -{ - const struct ofp_aggregate_stats_request *asr = ofputil_stats_body(oh); - - if (asr->table_id == 0xff) { - ds_put_format(string, " table_id=any, "); - } else { - ds_put_format(string, " table_id=%"PRIu8", ", asr->table_id); - } - - ofp_print_match(string, &asr->match, verbosity); -} - static void ofp_print_ofpst_aggregate_reply(struct ds *string, const struct ofp_header *oh) { @@ -1587,13 +1582,11 @@ ofp_to_string__(const struct ofp_header *oh, break; case OFPUTIL_OFPST_FLOW_REQUEST: - ofp_print_stats_request(string, oh); - ofp_print_ofpst_flow_request(string, oh, verbosity); - break; - + case OFPUTIL_NXST_FLOW_REQUEST: case OFPUTIL_OFPST_AGGREGATE_REQUEST: + case OFPUTIL_NXST_AGGREGATE_REQUEST: ofp_print_stats_request(string, oh); - ofp_print_ofpst_aggregate_request(string, oh, verbosity); + ofp_print_flow_stats_request(string, oh); break; case OFPUTIL_OFPST_TABLE_REQUEST: @@ -1663,8 +1656,6 @@ ofp_to_string__(const struct ofp_header *oh, break; case OFPUTIL_NXT_FLOW_REMOVED: - case OFPUTIL_NXST_FLOW_REQUEST: - case OFPUTIL_NXST_AGGREGATE_REQUEST: /* XXX */ break; -- 2.20.1