static void
dump_stats_transaction(const char *vconn_name, struct ofpbuf *request)
{
- uint32_t send_xid = ((struct ofp_header *) request->data)->xid;
+ ovs_be32 send_xid = ((struct ofp_header *) request->data)->xid;
struct vconn *vconn;
bool done = false;
ofpbuf_delete(reply);
vconn_close(vconn);
- return port_idx;
+ return ntohs(osf->ports[port_idx].port_no);
}
static void
do_dump_flows(int argc, char *argv[])
{
struct ofp_flow_stats_request *req;
- uint16_t out_port;
+ struct parsed_flow pf;
struct ofpbuf *request;
req = alloc_stats_request(sizeof *req, OFPST_FLOW, &request);
- parse_ofp_str(argc > 2 ? argv[2] : "", &req->match, NULL,
- &req->table_id, &out_port, NULL, NULL, NULL, NULL);
+ parse_ofp_str(&pf, NULL, argc > 2 ? argv[2] : "");
+ ofputil_cls_rule_to_match(&pf.rule, NXFF_OPENFLOW10, &req->match);
memset(&req->pad, 0, sizeof req->pad);
- req->out_port = htons(out_port);
+ req->out_port = htons(pf.out_port);
dump_stats_transaction(argv[1], request);
}
{
struct ofp_aggregate_stats_request *req;
struct ofpbuf *request;
- uint16_t out_port;
+ struct parsed_flow pf;
req = alloc_stats_request(sizeof *req, OFPST_AGGREGATE, &request);
- parse_ofp_str(argc > 2 ? argv[2] : "", &req->match, NULL,
- &req->table_id, &out_port, NULL, NULL, NULL, NULL);
+ parse_ofp_str(&pf, NULL, argc > 2 ? argv[2] : "");
+ ofputil_cls_rule_to_match(&pf.rule, NXFF_OPENFLOW10, &req->match);
memset(&req->pad, 0, sizeof req->pad);
- req->out_port = htons(out_port);
+ req->out_port = htons(pf.out_port);
dump_stats_transaction(argv[1], request);
}
ofp_print(stdout, reply, reply->size, 2);
}
printf("%zu bytes from %s: xid=%08"PRIx32" time=%.1f ms\n",
- reply->size - sizeof *rpy_hdr, argv[1], rpy_hdr->xid,
+ reply->size - sizeof *rpy_hdr, argv[1], ntohl(rpy_hdr->xid),
(1000*(double)(end.tv_sec - start.tv_sec))
+ (.001*(end.tv_usec - start.tv_usec)));
ofpbuf_delete(request);