X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utilities%2Fovs-ofctl.c;h=7d3b7fbeead0415e9d552b7853035d8229124862;hb=b3a375f242c70ff85c30f84ce311628de4a6f022;hp=5fa11dba43eb97224fe50c166b450d922471cf13;hpb=007948177581f3b3dad188221593d0e4bdca6ba0;p=openvswitch diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index 5fa11dba..7d3b7fbe 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -85,15 +85,15 @@ parse_options(int argc, char *argv[]) VLOG_OPTION_ENUMS }; static struct option long_options[] = { - {"timeout", required_argument, 0, 't'}, - {"strict", no_argument, 0, OPT_STRICT}, - {"flow-format", required_argument, 0, 'F'}, - {"more", no_argument, 0, 'm'}, - {"help", no_argument, 0, 'h'}, - {"version", no_argument, 0, 'V'}, + {"timeout", required_argument, NULL, 't'}, + {"strict", no_argument, NULL, OPT_STRICT}, + {"flow-format", required_argument, NULL, 'F'}, + {"more", no_argument, NULL, 'm'}, + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'V'}, VLOG_LONG_OPTIONS, STREAM_SSL_LONG_OPTIONS, - {0, 0, 0, 0}, + {NULL, 0, NULL, 0}, }; char *short_options = long_options_to_short_options(long_options); @@ -172,6 +172,7 @@ usage(void) " add-flows SWITCH FILE add flows from FILE\n" " mod-flows SWITCH FLOW modify actions of matching FLOWs\n" " del-flows SWITCH [FLOW] delete matching FLOWs\n" + " replace-flows SWITCH FILE replace flows with those in FILE\n" " monitor SWITCH [MISSLEN] print packets received from SWITCH\n" "\nFor OpenFlow switches and controllers:\n" " probe VCONN probe whether VCONN is up\n" @@ -262,12 +263,11 @@ open_vconn(const char *name, struct vconn **vconnp) static void * alloc_stats_request(size_t body_len, uint16_t type, struct ofpbuf **bufferp) { - struct ofp_stats_request *rq; - rq = make_openflow((offsetof(struct ofp_stats_request, body) - + body_len), OFPT_STATS_REQUEST, bufferp); + struct ofp_stats_msg *rq; + rq = make_openflow(sizeof *rq + body_len, OFPT_STATS_REQUEST, bufferp); rq->type = htons(type); rq->flags = htons(0); - return rq->body; + return rq + 1; } static void @@ -314,12 +314,12 @@ dump_stats_transaction(const char *vconn_name, struct ofpbuf *request) run(vconn_recv_block(vconn, &reply), "OpenFlow packet receive failed"); recv_xid = ((struct ofp_header *) reply->data)->xid; if (send_xid == recv_xid) { - struct ofp_stats_reply *osr; + struct ofp_stats_msg *osm; ofp_print(stdout, reply->data, reply->size, verbosity + 1); - osr = ofpbuf_at(reply, 0, sizeof *osr); - done = !osr || !(ntohs(osr->flags) & OFPSF_REPLY_MORE); + osm = ofpbuf_at(reply, 0, sizeof *osm); + done = !osm || !(ntohs(osm->flags) & OFPSF_REPLY_MORE); } else { VLOG_DBG("received reply with xid %08"PRIx32" " "!= expected %08"PRIx32, recv_xid, send_xid); @@ -658,7 +658,7 @@ do_flow_mod__(int argc, char *argv[], uint16_t command) flow_mod_table_id = false; parse_ofp_flow_mod_str(&requests, &flow_format, &flow_mod_table_id, - argc > 2 ? argv[2] : "", command); + argc > 2 ? argv[2] : "", command, false); check_final_format_for_flow_mod(flow_format); open_vconn(argv[1], &vconn); @@ -1035,7 +1035,7 @@ read_flows_from_file(const char *filename, struct classifier *cls, int index) struct flow_mod fm; ofpbuf_init(&actions, 64); - parse_ofp_str(&fm, &actions, ds_cstr(&s)); + parse_ofp_str(&fm, &actions, ds_cstr(&s), true); version = xmalloc(sizeof *version); version->cookie = fm.cookie; @@ -1089,7 +1089,7 @@ read_flows_from_switch(struct vconn *vconn, enum nx_flow_format flow_format, recv_xid = ((struct ofp_header *) reply->data)->xid; if (send_xid == recv_xid) { const struct ofputil_msg_type *type; - const struct ofp_stats_reply *osr; + const struct ofp_stats_msg *osm; enum ofputil_msg_code code; ofputil_decode_msg_type(reply->data, &type); @@ -1101,8 +1101,8 @@ read_flows_from_switch(struct vconn *vconn, enum nx_flow_format flow_format, verbosity + 1)); } - osr = reply->data; - if (!(osr->flags & htons(OFPSF_REPLY_MORE))) { + osm = reply->data; + if (!(osm->flags & htons(OFPSF_REPLY_MORE))) { done = true; } @@ -1308,7 +1308,7 @@ do_parse_flow(int argc OVS_UNUSED, char *argv[]) list_init(&packets); parse_ofp_flow_mod_str(&packets, &flow_format, &flow_mod_table_id, - argv[1], OFPFC_ADD); + argv[1], OFPFC_ADD, false); print_packet_list(&packets); }