#include "netlink.h"
#include "odp-util.h"
#include "ofpbuf.h"
-#include "openvswitch/datapath-compat.h"
#include "packets.h"
#include "poll-loop.h"
#include "random.h"
dpif = xzalloc(sizeof *dpif);
dpif->port_notifier = NULL;
- ovs_mutex_init(&dpif->upcall_lock, PTHREAD_MUTEX_DEFAULT);
+ ovs_mutex_init(&dpif->upcall_lock);
dpif->epoll_fd = -1;
dpif_init(&dpif->dpif, &dpif_linux_class, dp->name,
return dpif_linux_port_query__(dpif, 0, devname, dpif_port);
}
-static odp_port_t
+static uint32_t
dpif_linux_get_max_ports(const struct dpif *dpif OVS_UNUSED)
{
- return u32_to_odp(MAX_PORTS);
+ return MAX_PORTS;
}
static uint32_t
*statep = state = xmalloc(sizeof *state);
dpif_linux_vport_init(&request);
- request.cmd = OVS_DP_CMD_GET;
+ request.cmd = OVS_VPORT_CMD_GET;
request.dp_ifindex = dpif->dp_ifindex;
buf = ofpbuf_new(1024);
VLOG_DBG("port_changed: dpif:%s vport:%s cmd:%"PRIu8,
dpif->dpif.full_name, vport.name, vport.cmd);
*devnamep = xstrdup(vport.name);
+ ofpbuf_uninit(&buf);
return 0;
- } else {
- continue;
}
}
- } else if (error == EAGAIN) {
- return EAGAIN;
+ } else if (error != EAGAIN) {
+ VLOG_WARN_RL(&rl, "error reading or parsing netlink (%s)",
+ ovs_strerror(error));
+ nl_sock_drain(dpif->port_notifier);
+ error = ENOBUFS;
}
- VLOG_WARN_RL(&rl, "error reading or parsing netlink (%s)",
- ovs_strerror(error));
- nl_sock_drain(dpif->port_notifier);
- return ENOBUFS;
+ ofpbuf_uninit(&buf);
+ if (error) {
+ return error;
+ }
}
}
*statep = state = xmalloc(sizeof *state);
dpif_linux_flow_init(&request);
- request.cmd = OVS_DP_CMD_GET;
+ request.cmd = OVS_FLOW_CMD_GET;
request.dp_ifindex = dpif->dp_ifindex;
buf = ofpbuf_new(1024);
}
if (!error) {
error = nl_lookup_genl_mcgroup(OVS_VPORT_FAMILY, OVS_VPORT_MCGROUP,
- &ovs_vport_mcgroup,
- OVS_VPORT_MCGROUP_FALLBACK_ID);
+ &ovs_vport_mcgroup);
}
ovsthread_once_done(&once);