diff options
-rw-r--r-- | include/openvswitch/ofp-msgs.h | 2 | ||||
-rw-r--r-- | lib/ofp-msgs.c | 16 | ||||
-rw-r--r-- | lib/ofp-print.c | 24 | ||||
-rw-r--r-- | tests/ofp-print.at | 2 |
4 files changed, 22 insertions, 22 deletions
diff --git a/include/openvswitch/ofp-msgs.h b/include/openvswitch/ofp-msgs.h index f18027302..8a32a3dc6 100644 --- a/include/openvswitch/ofp-msgs.h +++ b/include/openvswitch/ofp-msgs.h @@ -778,6 +778,8 @@ const char *ofptype_get_name(enum ofptype); void ofpmsg_update_length(struct ofpbuf *); const void *ofpmsg_body(const struct ofp_header *); bool ofpmsg_is_stat_request(const struct ofp_header *); +bool ofpmsg_is_stat_reply(const struct ofp_header *); +bool ofpmsg_is_stat(const struct ofp_header *); /* Multipart messages (aka "statistics"). * diff --git a/lib/ofp-msgs.c b/lib/ofp-msgs.c index dd8894a52..6517210c2 100644 --- a/lib/ofp-msgs.c +++ b/lib/ofp-msgs.c @@ -894,12 +894,26 @@ ofpmsg_body(const struct ofp_header *oh) return (const uint8_t *) oh + ofphdrs_len(&hdrs); } -/* Return if it's a stat/multipart (OFPST) request message. */ +/* Return if 'oh' is a stat/multipart (OFPST) request message. */ bool ofpmsg_is_stat_request(const struct ofp_header *oh) { return ofp_is_stat_request(oh->version, oh->type); } + +/* Return if 'oh' is a stat/multipart (OFPST) reply message. */ +bool +ofpmsg_is_stat_reply(const struct ofp_header *oh) +{ + return ofp_is_stat_reply(oh->version, oh->type); +} + +/* Return if 'oh' is a stat/multipart (OFPST) request or reply message. */ +bool +ofpmsg_is_stat(const struct ofp_header *oh) +{ + return ofp_is_stat(oh->version, oh->type); +} static ovs_be16 *ofpmp_flags__(const struct ofp_header *); diff --git a/lib/ofp-print.c b/lib/ofp-print.c index 6e30312ae..68e382471 100644 --- a/lib/ofp-print.c +++ b/lib/ofp-print.c @@ -1834,25 +1834,26 @@ ofp_to_string__(const struct ofp_header *oh, const struct ofputil_table_map *table_map, enum ofpraw raw, struct ds *string, int verbosity) { + if (ofpmsg_is_stat(oh)) { + ofp_print_stats(string, oh); + } + const void *msg = oh; enum ofptype type = ofptype_from_ofpraw(raw); switch (type) { case OFPTYPE_GROUP_STATS_REQUEST: - ofp_print_stats(string, oh); return ofputil_group_stats_request_format(string, oh); case OFPTYPE_GROUP_STATS_REPLY: return ofputil_group_stats_format(string, oh); case OFPTYPE_GROUP_DESC_STATS_REQUEST: - ofp_print_stats(string, oh); return ofputil_group_desc_request_format(string, oh); case OFPTYPE_GROUP_DESC_STATS_REPLY: return ofputil_group_desc_format(string, oh, port_map, table_map); case OFPTYPE_GROUP_FEATURES_STATS_REQUEST: - ofp_print_stats(string, oh); break; case OFPTYPE_GROUP_FEATURES_STATS_REPLY: @@ -1944,73 +1945,56 @@ ofp_to_string__(const struct ofp_header *oh, case OFPTYPE_METER_STATS_REQUEST: case OFPTYPE_METER_CONFIG_STATS_REQUEST: - ofp_print_stats(string, oh); return ofp_print_meter_stats_request(string, oh); case OFPTYPE_METER_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_meter_stats_reply(string, oh); case OFPTYPE_METER_CONFIG_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_meter_config_reply(string, oh); case OFPTYPE_METER_FEATURES_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_meter_features_reply(string, oh); case OFPTYPE_DESC_STATS_REQUEST: case OFPTYPE_METER_FEATURES_STATS_REQUEST: - ofp_print_stats(string, oh); break; case OFPTYPE_FLOW_STATS_REQUEST: case OFPTYPE_AGGREGATE_STATS_REQUEST: - ofp_print_stats(string, oh); return ofp_print_flow_stats_request(string, oh, port_map, table_map); case OFPTYPE_TABLE_STATS_REQUEST: - ofp_print_stats(string, oh); break; case OFPTYPE_PORT_STATS_REQUEST: - ofp_print_stats(string, oh); return ofp_print_ofpst_port_request(string, oh, port_map); case OFPTYPE_QUEUE_STATS_REQUEST: - ofp_print_stats(string, oh); return ofp_print_ofpst_queue_request(string, oh, port_map); case OFPTYPE_DESC_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_ofpst_desc_reply(string, oh); case OFPTYPE_FLOW_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_flow_stats_reply(string, oh, port_map, table_map); case OFPTYPE_QUEUE_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_ofpst_queue_reply(string, oh, port_map, verbosity); case OFPTYPE_PORT_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_ofpst_port_reply(string, oh, port_map, verbosity); case OFPTYPE_TABLE_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_table_stats_reply(string, oh, table_map); case OFPTYPE_AGGREGATE_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_aggregate_stats_reply(string, oh); case OFPTYPE_PORT_DESC_STATS_REQUEST: - ofp_print_stats(string, oh); return ofp_print_ofpst_port_desc_request(string, oh, port_map); case OFPTYPE_PORT_DESC_STATS_REPLY: - ofp_print_stats(string, oh); return ofp_print_ofpst_port_desc_reply(string, oh); case OFPTYPE_FLOW_MOD_TABLE_ID: diff --git a/tests/ofp-print.at b/tests/ofp-print.at index 5d1541f9f..e38ca4ae5 100644 --- a/tests/ofp-print.at +++ b/tests/ofp-print.at @@ -2725,7 +2725,7 @@ f5 f6 f7 f8 f9 fa fb fc fd 00 00 00 00 00 00 00 \ 00 01 3a 01 80 00 2a 02 80 00 2c 04 80 00 2e 04 \ 80 00 30 06 80 00 32 06 80 00 1a 02 80 00 1c 02 \ 80 00 1e 02 80 00 20 02 80 00 22 02 80 00 24 02 \ -"], [0], [OFPST_TABLE_FEATURES reply (OF1.3) (xid=0xd5): +"], [0], [OFPST_TABLE_FEATURES reply (OF1.3) (xid=0xd5): flags=[[more]] table 0 ("table0"): metadata: match=0xffffffffffffffff write=0xffffffffffffffff max_entries=1000000 |