@@ -60,9 +60,6 @@ VLOG_DEFINE_THIS_MODULE(dpif_netlink);
#ifdef _WIN32
#include "wmi.h"
enum { WINDOWS = 1 };
-static int dpif_netlink_port_query__(const struct dpif_netlink *dpif,
- odp_port_t port_no, const char *port_name,
- struct dpif_port *dpif_port);
#else
enum { WINDOWS = 0 };
#endif
@@ -224,6 +221,9 @@ static void dpif_netlink_vport_to_ofpbuf(const struct dpif_netlink_vport *,
struct ofpbuf *);
static int dpif_netlink_vport_from_ofpbuf(struct dpif_netlink_vport *,
const struct ofpbuf *);
+static int dpif_netlink_port_query__(const struct dpif_netlink *dpif,
+ odp_port_t port_no, const char *port_name,
+ struct dpif_port *dpif_port);
static struct dpif_netlink *
dpif_netlink_cast(const struct dpif *dpif)
@@ -948,31 +948,32 @@ dpif_netlink_port_del__(struct dpif_netlink *dpif, odp_port_t port_no)
OVS_REQ_WRLOCK(dpif->upcall_lock)
{
struct dpif_netlink_vport vport;
+ struct dpif_port dpif_port;
int error;
+ error = dpif_netlink_port_query__(dpif, port_no, NULL, &dpif_port);
+ if (error) {
+ return error;
+ }
+
dpif_netlink_vport_init(&vport);
vport.cmd = OVS_VPORT_CMD_DEL;
vport.dp_ifindex = dpif->dp_ifindex;
vport.port_no = port_no;
#ifdef _WIN32
- struct dpif_port temp_dpif_port;
-
- error = dpif_netlink_port_query__(dpif, port_no, NULL, &temp_dpif_port);
- if (error) {
- return error;
- }
- if (!strcmp(temp_dpif_port.type, "internal")) {
- if (!delete_wmi_port(temp_dpif_port.name)){
+ if (!strcmp(dpif_port.type, "internal")) {
+ if (!delete_wmi_port(dpif_port.name)){
VLOG_ERR("Could not delete wmi port with name: %s",
- temp_dpif_port.name);
+ dpif_port.name);
};
}
- dpif_port_destroy(&temp_dpif_port);
#endif
error = dpif_netlink_vport_transact(&vport, NULL, NULL);
vport_del_channels(dpif, port_no);
+ dpif_port_destroy(&dpif_port);
+
return error;
}