mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
dpif-netdev: allow for proper destruction of netdev datapaths
Until now, bridges with datapath_type=netdev did not destroy the datapath when deleted. In particular, the tap device implementing the internal interface was not close()d, and therefore the tap persists until ovs-vswitchd exit()s. This behaviour was caused by the missing callback for 'enumerate' in the dpif-netdev class. Without this callback 'bridge_reconfigure' failed to realize that there are datapaths with no bridge, and thus cannot destroy them. Providing an 'enumerate' callback fixes this. Signed-off-by: Giuseppe Lettieri <g.lettieri@iet.unipi.it> Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
committed by
Ben Pfaff
parent
e6c5e53903
commit
2197d7abab
@@ -165,6 +165,17 @@ get_dp_netdev(const struct dpif *dpif)
|
||||
return dpif_netdev_cast(dpif)->dp;
|
||||
}
|
||||
|
||||
static int
|
||||
dpif_netdev_enumerate(struct sset *all_dps)
|
||||
{
|
||||
struct shash_node *node;
|
||||
|
||||
SHASH_FOR_EACH(node, &dp_netdevs) {
|
||||
sset_add(all_dps, node->name);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dpif *
|
||||
create_dpif_netdev(struct dp_netdev *dp)
|
||||
{
|
||||
@@ -1241,7 +1252,7 @@ dp_netdev_execute_actions(struct dp_netdev *dp,
|
||||
|
||||
const struct dpif_class dpif_netdev_class = {
|
||||
"netdev",
|
||||
NULL, /* enumerate */
|
||||
dpif_netdev_enumerate,
|
||||
dpif_netdev_open,
|
||||
dpif_netdev_close,
|
||||
dpif_netdev_destroy,
|
||||
|
Reference in New Issue
Block a user