Hi All,
I have attached a patch which when applied on the HEAD as of today would allow
virtualbox support in libvirt. It takes cares of all the stuff mentioned on
the list earlier. Still if I have missed anything, please do tell me.
The patches are organized as below:
Patch 0/4: contains sample xml file
Patch 1/4: contains diff of files already in libvirt.
Patch 2/4: contains new files needed for VirtualBox support.
Patch 3/4: contains support for host only and internal network.
Patch 4/4: contains support for rdp in libvirt as mentioned by danpb (also had
sent it separately earlier)
Regards,
Pritesh
diff --git a/configure.in b/configure.in
index ac2c89e..8f4d9bb 100644
--- a/configure.in
+++ b/configure.in
@@ -182,6 +182,8 @@ AC_ARG_WITH([uml],
[ --with-uml add UML support (on)],[],[with_uml=yes])
AC_ARG_WITH([openvz],
[ --with-openvz add OpenVZ support (on)],[],[with_openvz=yes])
+AC_ARG_WITH([vbox],
+[ --with-vbox add VirtualBox support (on)],[],[with_vbox=yes])
AC_ARG_WITH([lxc],
[ --with-lxc add Linux Container support (on)],[],[with_lxc=yes])
AC_ARG_WITH([test],
@@ -277,6 +279,11 @@ if test "$with_openvz" = "yes"; then
fi
AM_CONDITIONAL([WITH_OPENVZ], [test "$with_openvz" = "yes"])
+if test "x$with_vbox" = "xyes"; then
+ AC_DEFINE_UNQUOTED([WITH_VBOX], 1, [whether VirtualBox driver is enabled])
+fi
+AM_CONDITIONAL([WITH_VBOX], [test "$with_vbox" = "yes"])
+
if test "$with_libvirtd" = "no" ; then
with_lxc=no
fi
@@ -1362,6 +1369,7 @@ AC_MSG_NOTICE([ Proxy: $with_xen_proxy])
AC_MSG_NOTICE([ QEMU: $with_qemu])
AC_MSG_NOTICE([ UML: $with_uml])
AC_MSG_NOTICE([ OpenVZ: $with_openvz])
+AC_MSG_NOTICE([ VBox: $with_vbox])
AC_MSG_NOTICE([ LXC: $with_lxc])
AC_MSG_NOTICE([ Test: $with_test])
AC_MSG_NOTICE([ Remote: $with_remote])
diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h
index 2c3777d..faf3f61 100644
--- a/include/libvirt/virterror.h
+++ b/include/libvirt/virterror.h
@@ -62,6 +62,7 @@ typedef enum {
VIR_FROM_NODEDEV, /* Error from node device monitor */
VIR_FROM_XEN_INOTIFY, /* Error from xen inotify layer */
VIR_FROM_SECURITY, /* Error from security framework */
+ VIR_FROM_VBOX, /* Error from VirtualBox driver */
} virErrorDomain;
diff --git a/src/Makefile.am b/src/Makefile.am
index f176b46..abc825d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -129,6 +129,11 @@ OPENVZ_DRIVER_SOURCES = \
openvz_conf.c openvz_conf.h \
openvz_driver.c openvz_driver.h
+VBOX_DRIVER_SOURCES = \
+ vbox/vbox_XPCOMCGlue.c vbox/vbox_XPCOMCGlue.h \
+ vbox/vbox_driver.c vbox/vbox_driver.h \
+ vbox/vbox_V2_2.c
+
QEMU_DRIVER_SOURCES = \
qemu_conf.c qemu_conf.h \
qemu_driver.c qemu_driver.h
@@ -271,6 +276,19 @@ endif
libvirt_driver_openvz_la_SOURCES = $(OPENVZ_DRIVER_SOURCES)
endif
+if WITH_VBOX
+if WITH_DRIVER_MODULES
+mod_LTLIBRARIES += libvirt_driver_vbox.la
+else
+noinst_LTLIBRARIES += libvirt_driver_vbox.la
+libvirt_la_LIBADD += libvirt_driver_vbox.la
+endif
+if WITH_DRIVER_MODULES
+libvirt_driver_vbox_la_LDFLAGS = -module -avoid-version
+endif
+libvirt_driver_vbox_la_SOURCES = $(VBOX_DRIVER_SOURCES)
+endif
+
if WITH_QEMU
if WITH_DRIVER_MODULES
mod_LTLIBRARIES += libvirt_driver_qemu.la
@@ -410,6 +428,7 @@ EXTRA_DIST += \
$(LXC_DRIVER_SOURCES) \
$(UML_DRIVER_SOURCES) \
$(OPENVZ_DRIVER_SOURCES) \
+ $(VBOX_DRIVER_SOURCES) \
$(NETWORK_DRIVER_SOURCES) \
$(STORAGE_DRIVER_SOURCES) \
$(STORAGE_DRIVER_FS_SOURCES) \
diff --git a/src/domain_conf.c b/src/domain_conf.c
index 2c339af..cfb8bc5 100644
--- a/src/domain_conf.c
+++ b/src/domain_conf.c
@@ -54,7 +54,8 @@ VIR_ENUM_IMPL(virDomainVirt, VIR_DOMAIN_VIRT_LAST,
"ldom",
"test",
"vmware",
- "hyperv")
+ "hyperv",
+ "vbox")
VIR_ENUM_IMPL(virDomainBoot, VIR_DOMAIN_BOOT_LAST,
"fd",
diff --git a/src/domain_conf.h b/src/domain_conf.h
index dd61467..f4eea6b 100644
--- a/src/domain_conf.h
+++ b/src/domain_conf.h
@@ -48,6 +48,7 @@ enum virDomainVirtType {
VIR_DOMAIN_VIRT_TEST,
VIR_DOMAIN_VIRT_VMWARE,
VIR_DOMAIN_VIRT_HYPERV,
+ VIR_DOMAIN_VIRT_VBOX,
VIR_DOMAIN_VIRT_LAST,
};
diff --git a/src/driver.h b/src/driver.h
index 88c2b0a..39dc413 100644
--- a/src/driver.h
+++ b/src/driver.h
@@ -20,6 +20,7 @@ typedef enum {
VIR_DRV_OPENVZ = 5,
VIR_DRV_LXC = 6,
VIR_DRV_UML = 7,
+ VIR_DRV_VBOX = 8,
} virDrvNo;
diff --git a/src/libvirt.c b/src/libvirt.c
index d6de773..f79ea5c 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -55,6 +55,9 @@
#ifdef WITH_OPENVZ
#include "openvz_driver.h"
#endif
+#ifdef WITH_VBOX
+#include "vbox/vbox_driver.h"
+#endif
#endif
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -306,6 +309,7 @@ virInitialize(void)
virDriverLoadModule("test");
virDriverLoadModule("xen");
virDriverLoadModule("openvz");
+ virDriverLoadModule("vbox");
virDriverLoadModule("remote");
#else
#ifdef WITH_TEST
@@ -317,6 +321,9 @@ virInitialize(void)
#ifdef WITH_OPENVZ
if (openvzRegister() == -1) return -1;
#endif
+#ifdef WITH_VBOX
+ if (vboxRegister() == -1) return -1;
+#endif
#ifdef WITH_REMOTE
if (remoteRegister () == -1) return -1;
#endif
@@ -830,6 +837,10 @@ virGetVersion(unsigned long *libVer, const char *type,
if (STRCASEEQ(type, "OpenVZ"))
*typeVer = LIBVIR_VERSION_NUMBER;
#endif
+#if WITH_VBOX
+ if (STRCASEEQ(type, "VBox"))
+ *typeVer = LIBVIR_VERSION_NUMBER;
+#endif
#if WITH_UML
if (STRCASEEQ(type, "UML"))
*typeVer = LIBVIR_VERSION_NUMBER;
diff --git a/src/virterror.c b/src/virterror.c
index d2514db..b4e5e3d 100644
--- a/src/virterror.c
+++ b/src/virterror.c
@@ -153,6 +153,8 @@ static const char *virErrorDomainName(virErrorDomain domain) {
break;
case VIR_FROM_SECURITY:
dom = "Security Labeling ";
+ case VIR_FROM_VBOX:
+ dom = "VBOX ";
break;
}
return(dom);
--
Libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list