/*
- * Copyright (c) 2011, 2013 Nicira, Inc.
+ * Copyright (c) 2011, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "dummy.h"
#include "hash.h"
#include "shash.h"
+#include "socket-util.h"
#include "vlog.h"
VLOG_DEFINE_THIS_MODULE(vlandev);
int (*vd_del)(const char *vlan_dev);
};
-#ifdef LINUX_DATAPATH
+#ifdef __linux__
static const struct vlandev_class vlandev_linux_class;
#endif
static const struct vlandev_class vlandev_stub_class;
vlandev_get_class(void)
{
if (!vd_class) {
-#ifdef LINUX_DATAPATH
+#if __linux__
vd_class = &vlandev_linux_class;
#else
vd_class = &vlandev_stub_class;
\f
/* The Linux vlandev implementation. */
-#ifdef LINUX_DATAPATH
+#ifdef __linux__
#include "rtnetlink-link.h"
#include <linux/if_vlan.h>
#include <linux/sockios.h>
return 0;
}
- VLOG_WARN_RL(&rl, "%s: open failed (%s)", fn, strerror(error));
+ VLOG_WARN_RL(&rl, "%s: open failed (%s)", fn, ovs_strerror(error));
return error;
}
char vlan_dev[16], real_dev[16];
int vid;
- if (sscanf(line, "%15[^ |] | %d | %15s",
- vlan_dev, &vid, real_dev) == 3) {
+ if (ovs_scan(line, "%15[^ |] | %d | %15s", vlan_dev, &vid, real_dev)) {
vlandev_add__(vlan_dev, real_dev, vid);
}
}
{
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
int error;
- int sock;
via->cmd = cmd;
ovs_strlcpy(via->device1, netdev_name, sizeof via->device1);
- sock = netdev_linux_get_af_inet_sock();
- if (sock < 0) {
- return -sock;
- }
-
- error = ioctl(sock, SIOCSIFVLAN, via) < 0 ? errno : 0;
+ error = af_inet_ioctl(SIOCSIFVLAN, via);
if (error) {
VLOG_WARN_RL(&rl, "%s: VLAN ioctl %s failed (%s)",
- netdev_name, cmd_name, strerror(error));
+ netdev_name, cmd_name, ovs_strerror(error));
}
return error;
}
return EOPNOTSUPP;
}
-static const struct vlandev_class vlandev_stub_class = {
+static const struct vlandev_class OVS_UNUSED vlandev_stub_class = {
NULL, /* vd_refresh */
vlandev_stub_add,
vlandev_stub_del
vlandev_del__(const char *vlan_dev)
{
struct shash_node *vd_node = shash_find(&vlan_devs, vlan_dev);
- if (!vd_node) {
+ if (vd_node) {
struct vlan_dev *vd = vd_node->data;
struct vlan_real_dev *vrd = vd->real_dev;