]> git.proxmox.com Git - mirror_ovs.git/commitdiff
ofp-print: Handle statistics more systematically.
authorBen Pfaff <blp@ovn.org>
Thu, 10 May 2018 20:21:29 +0000 (13:21 -0700)
committerBen Pfaff <blp@ovn.org>
Thu, 17 May 2018 15:16:08 +0000 (08:16 -0700)
ofp_to_string__() is supposed to call ofp_print_stats() for all kinds of
statistics, but it was only doing so haphazardly.  This commit makes it
systematic and in the process adds it to at least one case where it was
missing (and fixes up a test case).

Signed-off-by: Ben Pfaff <blp@ovn.org>
Acked-by: Justin Pettit <jpettit@ovn.org>
include/openvswitch/ofp-msgs.h
lib/ofp-msgs.c
lib/ofp-print.c
tests/ofp-print.at

index f180273024eb27719da5f7a15c9b0814780d6275..8a32a3dc69faeb653a9cc10141c27f94e9fc6339 100644 (file)
@@ -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 *);
 \f
 /* Multipart messages (aka "statistics").
  *
index dd8894a524ebd2c01cbe52de3075c924ed3a4652..6517210c2cdf1a84f85d1c0c5f33c9d1140860c2 100644 (file)
@@ -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);
+}
 \f
 static ovs_be16 *ofpmp_flags__(const struct ofp_header *);
 
index 6e30312aef7c34f0eb0adfabeb5cc344991e5b21..68e382471dbdf3d82ea495ca06919a4499e59e17 100644 (file)
@@ -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:
index 5d1541f9f184c242919774b451a843bb00c6f475..e38ca4ae572c1047015660d2688b084574193e8a 100644 (file)
@@ -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