Signed-off-by: Simon Horman <ho...@verge.net.au> ---
v10 * Manual rebase * Make use of enum ofp_version v9 * Omitted v8 * Omitted v7 * Omitted v6 * The queue_id variable in do_dump_aggregate() should be uint32_t not uint16_t. v5 * Initial Post --- utilities/ovs-ofctl.c | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index ab3ace2..b7f1cc8 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -968,27 +968,52 @@ ofctl_dump_aggregate(int argc, char *argv[]) static void ofctl_queue_stats(int argc, char *argv[]) { - struct ofp10_queue_stats_request *req; struct ofpbuf *request; struct vconn *vconn; + uint16_t port_no; + uint32_t queue_id; open_vconn(argv[1], &vconn); - request = ofpraw_alloc(OFPRAW_OFPST10_QUEUE_REQUEST, - vconn_get_version(vconn), 0); - req = ofpbuf_put_zeros(request, sizeof *req); if (argc > 2 && argv[2][0] && strcasecmp(argv[2], "all")) { - req->port_no = htons(str_to_port_no(vconn, argv[2])); + port_no = str_to_port_no(vconn, argv[2]); } else { - req->port_no = htons(OFPP_ALL); + port_no = OFPP_ALL; } if (argc > 3 && argv[3][0] && strcasecmp(argv[3], "all")) { - req->queue_id = htonl(atoi(argv[3])); + queue_id = atoi(argv[3]); } else { - req->queue_id = htonl(OFPQ_ALL); + queue_id = OFPQ_ALL; } - memset(req->pad, 0, sizeof req->pad); + switch (vconn_get_version(vconn)) { + case OFP12_VERSION: + case OFP11_VERSION: { + struct ofp11_queue_stats_request *req; + + request = ofpraw_alloc(OFPRAW_OFPST11_QUEUE_REQUEST, + vconn_get_version(vconn), 0); + req = ofpbuf_put_zeros(request, sizeof *req); + req->port_no = ofputil_port_to_ofp11(port_no); + req->queue_id = htonl(queue_id); + break; + } + + case OFP10_VERSION: { + struct ofp10_queue_stats_request *req; + + request = ofpraw_alloc(OFPRAW_OFPST10_QUEUE_REQUEST, + vconn_get_version(vconn), 0); + req = ofpbuf_put_zeros(request, sizeof *req); + req->port_no = htons(port_no); + memset(req->pad, 0, sizeof req->pad); + req->queue_id = htonl(queue_id); + break; + } + + default: + NOT_REACHED(); + } dump_stats_transaction(vconn, request); vconn_close(vconn); -- 1.7.10.2.484.gcd07cc5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev