#include <sys/ioctl.h>
#include "byte-order.h"
+#include "connectivity.h"
#include "daemon.h"
#include "dirs.h"
#include "dpif.h"
#include "ofpbuf.h"
#include "packets.h"
#include "route-table.h"
+#include "seq.h"
#include "shash.h"
#include "socket-util.h"
#include "vlog.h"
/* Protects all members below. */
struct ovs_mutex mutex;
- unsigned int change_seq;
uint8_t etheraddr[ETH_ADDR_LEN];
struct netdev_stats stats;
static int netdev_vport_construct(struct netdev *);
static int get_patch_config(const struct netdev *netdev, struct smap *args);
static int get_tunnel_config(const struct netdev *, struct smap *args);
-static void netdev_vport_poll_notify(struct netdev_vport *netdev)
- OVS_REQUIRES(netdev->mutex);
static bool
is_vport_class(const struct netdev_class *class)
return class->get_config == get_patch_config;
}
+bool
+netdev_vport_is_layer3(const struct netdev *dev)
+{
+ const char *type = netdev_get_type(dev);
+
+ return (!strcmp("lisp", type));
+}
+
static bool
netdev_vport_needs_dst_port(const struct netdev *dev)
{
struct netdev_vport *netdev = netdev_vport_cast(netdev_);
ovs_mutex_init(&netdev->mutex);
- netdev->change_seq = 1;
eth_addr_random(netdev->etheraddr);
route_table_register();
ovs_mutex_lock(&netdev->mutex);
memcpy(netdev->etheraddr, mac, ETH_ADDR_LEN);
- netdev_vport_poll_notify(netdev);
ovs_mutex_unlock(&netdev->mutex);
+ seq_change(connectivity_seq_get());
return 0;
}
return 0;
}
-static unsigned int
-netdev_vport_change_seq(const struct netdev *netdev)
-{
- return netdev_vport_cast(netdev)->change_seq;
-}
-
static void
netdev_vport_run(void)
{
route_table_wait();
}
\f
-/* Helper functions. */
-
-static void
-netdev_vport_poll_notify(struct netdev_vport *ndv)
-{
- ndv->change_seq++;
- if (!ndv->change_seq) {
- ndv->change_seq++;
- }
-}
-\f
/* Code specific to tunnel types. */
static ovs_be64
static struct ovs_mutex mutex = OVS_MUTEX_INITIALIZER;
static pid_t pid = 0;
+#ifndef _WIN32
ovs_mutex_lock(&mutex);
if (pid <= 0) {
char *file_name = xasprintf("%s/%s", ovs_rundir(),
free(file_name);
}
ovs_mutex_unlock(&mutex);
+#endif
if (pid < 0) {
VLOG_ERR("%s: IPsec requires the ovs-monitor-ipsec daemon",
ovs_mutex_lock(&dev->mutex);
dev->tnl_cfg = tnl_cfg;
- netdev_vport_poll_notify(dev);
+ seq_change(connectivity_seq_get());
ovs_mutex_unlock(&dev->mutex);
return 0;
ovs_mutex_lock(&dev->mutex);
free(dev->peer);
dev->peer = xstrdup(peer);
- netdev_vport_poll_notify(dev);
+ seq_change(connectivity_seq_get());
ovs_mutex_unlock(&dev->mutex);
return 0;
\
netdev_vport_update_flags, \
\
- netdev_vport_change_seq, \
- \
NULL, /* rx_alloc */ \
NULL, /* rx_construct */ \
NULL, /* rx_destruct */ \