From: Ben Pfaff Date: Tue, 9 Aug 2011 19:55:13 +0000 (-0700) Subject: ovs-ofctl: Fix reading flows from file for "replace-flows", "diff-flows". X-Git-Tag: v1.2.1~6 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=ce931cf90c14c2b39ce407ffa16d1531944e7e95;p=sliver-openvswitch.git ovs-ofctl: Fix reading flows from file for "replace-flows", "diff-flows". Commit c821124b25e "ovs-ofctl: Accept only valid flow_mod and flow_stats_request fields" caused actions read by read_flows_from_file() to be ignored and treated as "drop". This fixes the problem. --- diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index 6be899b1e..880c11e18 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -1042,10 +1042,8 @@ read_flows_from_file(const char *filename, struct classifier *cls, int index) while (!ds_get_preprocessed_line(&s, file)) { struct fte_version *version; enum nx_flow_format min_ff; - struct ofpbuf actions; struct flow_mod fm; - ofpbuf_init(&actions, 64); parse_ofp_str(&fm, OFPFC_ADD, ds_cstr(&s), true); version = xmalloc(sizeof *version); @@ -1053,8 +1051,8 @@ read_flows_from_file(const char *filename, struct classifier *cls, int index) version->idle_timeout = fm.idle_timeout; version->hard_timeout = fm.hard_timeout; version->flags = fm.flags & (OFPFF_SEND_FLOW_REM | OFPFF_EMERG); - version->n_actions = actions.size / sizeof *version->actions; - version->actions = ofpbuf_steal_data(&actions); + version->actions = fm.actions; + version->n_actions = fm.n_actions; min_ff = ofputil_min_flow_format(&fm.cr); min_flow_format = MAX(min_flow_format, min_ff);