From 02f8d6460afdb95d18e193bc0476f1fa8933aeb3 Mon Sep 17 00:00:00 2001 From: Justin Pettit Date: Thu, 15 Nov 2012 23:00:39 -0800 Subject: [PATCH] ofproto-dpif: Query port existence by name to prevent warnings. The port_destruct() function checks if the port still exists in the datapath to see if additional cleanup is necessary. It used dpif_port_query_by_number(), since the datapath port number is readily available and cheap to use as a lookup handle. Unfortunately, that function logs a warning message if a port with that number doesn't exist (because the datapath did remove it), which is confusing. The dpif_port_query_by_name() function doesn't log such an warning, so use it instead. Signed-off-by: Justin Pettit --- ofproto/ofproto-dpif.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 098a43ee..cc37d947 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -1538,19 +1538,17 @@ port_destruct(struct ofport *port_) { struct ofport_dpif *port = ofport_dpif_cast(port_); struct ofproto_dpif *ofproto = ofproto_dpif_cast(port->up.ofproto); - struct dpif_port dpif_port; + const char *devname = netdev_get_name(port->up.netdev); - if (!dpif_port_query_by_number(ofproto->backer->dpif, - port->odp_port, &dpif_port)) { + if (dpif_port_exists(ofproto->backer->dpif, devname)) { /* The underlying device is still there, so delete it. This * happens when the ofproto is being destroyed, since the caller * assumes that removal of attached ports will happen as part of * destruction. */ dpif_port_del(ofproto->backer->dpif, port->odp_port); - dpif_port_destroy(&dpif_port); } - sset_find_and_delete(&ofproto->ports, netdev_get_name(port->up.netdev)); + sset_find_and_delete(&ofproto->ports, devname); hmap_remove(&ofproto->backer->odp_to_ofport_map, &port->odp_port_node); ofproto->need_revalidate = REV_RECONFIGURE; bundle_remove(port_); -- 2.30.2