vport: Extract common functions for virtual devices.
[sliver-openvswitch.git] / datapath / vport-generic.c
diff --git a/datapath/vport-generic.c b/datapath/vport-generic.c
new file mode 100644 (file)
index 0000000..72909d9
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2010 Nicira Networks.
+ * Distributed under the terms of the GNU GPL version 2.
+ *
+ * Significant portions of this file may be copied from parts of the Linux
+ * kernel, by Linus Torvalds and others.
+ */
+
+#include <linux/etherdevice.h>
+
+#include "vport-generic.h"
+
+void
+vport_gen_rand_ether_addr(u8 *addr)
+{
+       random_ether_addr(addr);
+
+       /* Set the OUI to the Nicira one. */
+       addr[0] = 0x00;
+       addr[1] = 0x23;
+       addr[2] = 0x20;
+
+       /* Set the top bit to indicate random address. */
+       addr[3] |= 0x80;
+}
+
+unsigned
+vport_gen_get_dev_flags(const struct vport *vport)
+{
+       return IFF_UP | IFF_RUNNING | IFF_LOWER_UP;
+}
+
+int
+vport_gen_is_running(const struct vport *vport)
+{
+       return 1;
+}
+
+unsigned char
+vport_gen_get_operstate(const struct vport *vport)
+{
+       return IF_OPER_UP;
+}