" 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"
alloc_stats_request(size_t body_len, uint16_t type, struct ofpbuf **bufferp)
{
struct ofp_stats_msg *rq;
- rq = make_openflow((offsetof(struct ofp_stats_msg, body)
- + body_len), OFPT_STATS_REQUEST, bufferp);
+ 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
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);
struct flow_mod fm;
ofpbuf_init(&actions, 64);
- parse_ofp_str(&fm, &actions, ds_cstr(&s));
+ parse_ofp_str(&fm, OFPFC_ADD, ds_cstr(&s), true);
version = xmalloc(sizeof *version);
version->cookie = fm.cookie;
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);
}