retval = dpif_open(devname, "system", &dpif);
if (!retval) {
svec_add(all_dps, devname);
- dpif_close(dpif);
+ dpif_uninit(dpif, true);
} else if (retval != ENODEV && !error) {
error = retval;
}
VLOG_WARN("%s: probe returned unexpected error: %s",
dpif_name(*dpifp), strerror(error));
}
- dpif_close(*dpifp);
+ dpif_uninit(*dpifp, true);
return error;
}
finish_open(struct dpif *dpif_, const char *local_ifname)
{
struct dpif_linux *dpif = dpif_linux_cast(dpif_);
- dpif->local_ifname = strdup(local_ifname);
+ dpif->local_ifname = xstrdup(local_ifname);
dpif->local_ifindex = if_nametoindex(local_ifname);
if (!dpif->local_ifindex) {
int error = errno;
- dpif_close(dpif_);
+ dpif_uninit(dpif_, true);
VLOG_WARN("could not get ifindex of %s device: %s",
local_ifname, strerror(errno));
return error;
if (!error) {
error = finish_open(*dpifp, name);
} else {
- dpif_close(*dpifp);
+ dpif_uninit(*dpifp, true);
}
}
return error;