From: Justin Pettit Date: Fri, 16 Nov 2012 07:00:39 +0000 (-0800) Subject: ofproto-dpif: Query port existence by name to prevent warnings. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff_plain;h=02f8d6460afdb95d18e193bc0476f1fa8933aeb3 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 --- 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_);