From 6d19911609f659f6e582e53b1c0d4ffca16c0b80 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 5 Mar 2013 16:48:21 -0800 Subject: [PATCH] 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 --- ofproto/ofproto-dpif.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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; -- 2.47.0