[ovs-dev] [sort 1/3] ovs-ofctl: Use the prepared connection to dump flows in do_dump_flows__().

Ben Pfaff blp at nicira.com
Tue Jul 3 19:48:39 UTC 2012


The logic in do_dump_flows__() went to some trouble to open an OpenFlow
connection and set the correct protocol, but then it allowed
dump_stats_transaction() to create and use a completely different OpenFlow
connection that hadn't been prepared that way.  This commit fixes the
problem.

I don't think that there is a real bug here because currently the set of
protocols doesn't influence flow stats replies.  But that could change in
the future.

Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 utilities/ovs-ofctl.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c
index dbc46cd..2375762 100644
--- a/utilities/ovs-ofctl.c
+++ b/utilities/ovs-ofctl.c
@@ -377,14 +377,12 @@ dump_trivial_transaction(const char *vconn_name, uint8_t request_type)
 }
 
 static void
-dump_stats_transaction(const char *vconn_name, struct ofpbuf *request)
+dump_stats_transaction__(struct vconn *vconn, struct ofpbuf *request)
 {
     ovs_be32 send_xid = ((struct ofp_header *) request->data)->xid;
     ovs_be16 stats_type = ((struct ofp_stats_msg *) request->data)->type;
-    struct vconn *vconn;
     bool done = false;
 
-    open_vconn(vconn_name, &vconn);
     send_openflow_buffer(vconn, request);
     while (!done) {
         ovs_be32 recv_xid;
@@ -414,6 +412,15 @@ dump_stats_transaction(const char *vconn_name, struct ofpbuf *request)
         }
         ofpbuf_delete(reply);
     }
+}
+
+static void
+dump_stats_transaction(const char *vconn_name, struct ofpbuf *request)
+{
+    struct vconn *vconn;
+
+    open_vconn(vconn_name, &vconn);
+    dump_stats_transaction__(vconn, request);
     vconn_close(vconn);
 }
 
@@ -777,7 +784,7 @@ do_dump_flows__(int argc, char *argv[], bool aggregate)
     protocol = open_vconn(argv[1], &vconn);
     protocol = set_protocol_for_flow_dump(vconn, protocol, usable_protocols);
     request = ofputil_encode_flow_stats_request(&fsr, protocol);
-    dump_stats_transaction(argv[1], request);
+    dump_stats_transaction__(vconn, request);
     vconn_close(vconn);
 }
 
-- 
1.7.2.5




More information about the dev mailing list