Looks good, thanks.

Ethan

On Tue, Jul 3, 2012 at 2:48 PM, Ben Pfaff <b...@nicira.com> wrote:
> 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 <b...@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
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to