From: Ben Pfaff Date: Wed, 6 Mar 2013 00:48:21 +0000 (-0800) Subject: ofproto-dpif: Fix up user specifying wrong bridge on "ofproto/trace". X-Git-Tag: sliver-openvswitch-1.10.90-1~10^2~88 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=6d19911609f659f6e582e53b1c0d4ffca16c0b80;p=sliver-openvswitch.git ofproto-dpif: Fix up user specifying wrong bridge on "ofproto/trace". If there is more than one bridge, then it's easy to specify the wrong one on an ofproto/trace command. Previously, this would produce surprising results. With this commit, "ofproto/trace" should silently fix up the problem. It would be nice to not require the user to specify a bridge at all, but it's theoretically possible to have more than one backer, in which case we need some way to distinguish, and a bridge name is as good an identifier as we have. We could ask the user to specify the datapath_type, I guess, but that's a less familiar name to most users and it would be a somewhat gratuitous change in synatx for ofproto/trace. Bug #15419. Reported-by: Paul Ingram Signed-off-by: Ben Pfaff --- diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 09b5871fa..532362689 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -7765,16 +7765,16 @@ ofproto_unixctl_trace(struct unixctl_conn *conn, int argc, const char *argv[], goto exit; } - /* XXX: Since we allow the user to specify an ofproto, it's - * possible they will specify a different ofproto than the one the - * port actually belongs too. Ideally we should simply remove the - * ability to specify the ofproto. */ + /* The user might have specified the wrong ofproto but within the + * same backer. That's OK, ofproto_receive() can find the right + * one for us. */ if (ofproto_receive(ofproto->backer, NULL, odp_key.data, - odp_key.size, &flow, NULL, NULL, NULL, + odp_key.size, &flow, NULL, &ofproto, NULL, &initial_vals)) { unixctl_command_reply_error(conn, "Invalid flow"); goto exit; } + ds_put_format(&result, "Bridge: %s\n", ofproto->up.name); } else { char *error_s;