aboutsummaryrefslogtreecommitdiff
path: root/lib/netdev-dummy.c
diff options
context:
space:
mode:
authorNeil Mckee <neil.mckee@inmon.com>2013-03-27 23:02:21 -0700
committerBen Pfaff <blp@nicira.com>2013-04-01 13:08:31 -0700
commit8073dd318b5a08fa447392f100d62b3bf54388a7 (patch)
treebbdbc713521d34ddb6232f6c4640638da1046a3d /lib/netdev-dummy.c
parentd11dbe61764619ef4c02158f8532ae0873d3b463 (diff)
tests: Add sFlow test.
This patch adds an sFlow test to the test suite. I have only tested this on a Fedora 17 OS. Signed-off-by: Neil Mckee <neil.mckee@inmon.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib/netdev-dummy.c')
-rw-r--r--lib/netdev-dummy.c38
1 files changed, 35 insertions, 3 deletions
diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
index 234d7bc5..bdb3ea12 100644
--- a/lib/netdev-dummy.c
+++ b/lib/netdev-dummy.c
@@ -51,6 +51,7 @@ struct netdev_dev_dummy {
unsigned int change_seq;
struct list devs; /* List of child "netdev_dummy"s. */
+ int ifindex;
};
struct netdev_dummy {
@@ -110,6 +111,7 @@ netdev_dummy_create(const struct netdev_class *class, const char *name,
netdev_dev->mtu = 1500;
netdev_dev->flags = 0;
netdev_dev->change_seq = 1;
+ netdev_dev->ifindex = -EOPNOTSUPP;
list_init(&netdev_dev->devs);
shash_add(&dummy_netdev_devs, name, netdev_dev);
@@ -132,6 +134,27 @@ netdev_dummy_destroy(struct netdev_dev *netdev_dev_)
}
static int
+netdev_dummy_get_config(struct netdev_dev *netdev_dev_, struct smap *args)
+{
+ struct netdev_dev_dummy *netdev_dev = netdev_dev_dummy_cast(netdev_dev_);
+
+ if (netdev_dev->ifindex >= 0) {
+ smap_add_format(args, "ifindex", "%d", netdev_dev->ifindex);
+ }
+ return 0;
+}
+
+static int
+netdev_dummy_set_config(struct netdev_dev *netdev_dev_,
+ const struct smap *args)
+{
+ struct netdev_dev_dummy *netdev_dev = netdev_dev_dummy_cast(netdev_dev_);
+
+ netdev_dev->ifindex = smap_get_int(args, "ifindex", -EOPNOTSUPP);
+ return 0;
+}
+
+static int
netdev_dummy_open(struct netdev_dev *netdev_dev_, struct netdev **netdevp)
{
struct netdev_dev_dummy *netdev_dev = netdev_dev_dummy_cast(netdev_dev_);
@@ -284,6 +307,15 @@ netdev_dummy_set_stats(struct netdev *netdev, const struct netdev_stats *stats)
}
static int
+netdev_dummy_get_ifindex(const struct netdev *netdev)
+{
+ struct netdev_dev_dummy *dev =
+ netdev_dev_dummy_cast(netdev_get_dev(netdev));
+
+ return dev->ifindex;
+}
+
+static int
netdev_dummy_update_flags(struct netdev *netdev,
enum netdev_flags off, enum netdev_flags on,
enum netdev_flags *old_flagsp)
@@ -337,8 +369,8 @@ static const struct netdev_class dummy_class = {
netdev_dummy_create,
netdev_dummy_destroy,
- NULL, /* get_config */
- NULL, /* set_config */
+ netdev_dummy_get_config,
+ netdev_dummy_set_config,
NULL, /* get_tunnel_config */
netdev_dummy_open,
@@ -356,7 +388,7 @@ static const struct netdev_class dummy_class = {
netdev_dummy_get_etheraddr,
netdev_dummy_get_mtu,
netdev_dummy_set_mtu,
- NULL, /* get_ifindex */
+ netdev_dummy_get_ifindex,
NULL, /* get_carrier */
NULL, /* get_carrier_resets */
NULL, /* get_miimon */