summaryrefslogtreecommitdiffstats
path: root/src/vlib/vmbus
diff options
context:
space:
mode:
authorStephen Hemminger <stephen@networkplumber.org>2018-10-15 12:52:30 -0700
committerDamjan Marion <damarion@cisco.com>2018-12-19 08:34:39 +0100
commit6fbef2322870bbe1768537caecc3ca06bfd70dd7 (patch)
tree9c588f17b05d5bedf57b7207694d3e92136a4cbd /src/vlib/vmbus
parentb0b9dadc5c57b96ed43427ca78430e52fed9196e (diff)
vlib: support Hyper-v/Azure VMBus
This patch adds support for VMBus to the VPP infrastructure. Since the only device that matters is the netvsc Poll Mode Driver in DPDK, the infrastructure is much simpler than PCI. Change-Id: Ie96c897ad9c426716c2398e4528688ce2217419b Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Diffstat (limited to 'src/vlib/vmbus')
-rw-r--r--src/vlib/vmbus/vmbus.c48
-rw-r--r--src/vlib/vmbus/vmbus.h45
2 files changed, 93 insertions, 0 deletions
diff --git a/src/vlib/vmbus/vmbus.c b/src/vlib/vmbus/vmbus.c
new file mode 100644
index 00000000000..ea395ece6a8
--- /dev/null
+++ b/src/vlib/vmbus/vmbus.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2018, Microsoft Corporation.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vlib/vlib.h>
+#include <vlib/vmbus/vmbus.h>
+#include <vlib/unix/unix.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+
+/* this is a stub replaced by the Linux specfic version */
+vlib_vmbus_addr_t * __attribute__ ((weak)) vlib_vmbus_get_all_dev_addrs ()
+{
+ return NULL;
+}
+
+
+clib_error_t *
+vmbus_bus_init (vlib_main_t * vm)
+{
+ return vlib_call_init_function (vm, vmbus_bus_init);
+}
+
+VLIB_INIT_FUNCTION (vmbus_bus_init);
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */
diff --git a/src/vlib/vmbus/vmbus.h b/src/vlib/vmbus/vmbus.h
new file mode 100644
index 00000000000..0927b8990d6
--- /dev/null
+++ b/src/vlib/vmbus/vmbus.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2018, Microsoft Corporation.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * vmbus.h: VMBus definitions.
+ */
+
+#ifndef included_vlib_vmbus_h
+#define included_vlib_vmbus_h
+
+#include <vlib/vlib.h>
+
+typedef struct
+{
+ u8 guid[16];
+} vlib_vmbus_addr_t;
+typedef u32 vlib_vmbus_dev_handle_t;
+
+vlib_vmbus_addr_t *vlib_vmbus_get_all_dev_addrs ();
+vlib_vmbus_addr_t *vlib_vmbus_get_addr (vlib_vmbus_dev_handle_t h);
+uword vlib_vmbus_get_private_data (vlib_vmbus_dev_handle_t h);
+void vlib_vmbus_set_private_data (vlib_vmbus_dev_handle_t h,
+ uword private_data);
+
+clib_error_t *vlib_vmbus_bind_to_uio (vlib_vmbus_addr_t * addr);
+#endif /* included_vlib_vmbus_h */
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */