#include "datatypes.h"
#include "domain_conf.h"
+#include "network_conf.h"
#include "virterror_internal.h"
#include "uuid.h"
#include "memory.h"
#include "nodeinfo.h"
#include "logging.h"
#include "vbox_driver.h"
-#include "vbox_XPCOMCGlue.h"
/* This one changes from version to version. */
#if VBOX_API_VERSION == 2002
*/
#endif
+/* Include this *last* or we'll get the wrong vbox_CAPI_*.h. */
+#include "vbox_XPCOMCGlue.h"
+
+
#define VIR_FROM_THIS VIR_FROM_VBOX
#define vboxError(conn, code, fmt...) \
IVirtualBox *vboxObj;
ISession *vboxSession;
+
+ /** Our version specific API table pointer. */
+ PCVBOXXPCOM pFuncs;
} vboxGlobalData;
-extern int errorval;
+
static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml);
static int vboxDomainCreate(virDomainPtr dom);
static int vboxDomainUndefine(virDomainPtr dom);
-static void nsIDtoChar(unsigned char *uuid, nsID *iid) {
+static void nsIDtoChar(unsigned char *uuid, const nsID *iid) {
char uuidstrsrc[VIR_UUID_STRING_BUFLEN];
char uuidstrdst[VIR_UUID_STRING_BUFLEN];
unsigned char uuidinterim[VIR_UUID_BUFLEN];
virMutexUnlock(&data->lock);
}
-static void nsIDFromChar(nsID *iid, unsigned char *uuid) {
+static void nsIDFromChar(nsID *iid, const unsigned char *uuid) {
char uuidstrsrc[VIR_UUID_STRING_BUFLEN];
char uuidstrdst[VIR_UUID_STRING_BUFLEN];
unsigned char uuidinterim[VIR_UUID_BUFLEN];
goto cleanup;
}
- g_pVBoxFuncs->pfnComInitialize(&data->vboxObj, &data->vboxSession);
- if (data->vboxObj == NULL)
+ /* This is for when glue init failed and we're serving as dummy driver. */
+ if (g_pfnGetFunctions == NULL)
+ goto cleanup;
+
+ /* Get the API table for out version, g_pVBoxFuncs is for the oldest
+ version of the API that we support so we cannot use that. */
+ data->pFuncs = g_pfnGetFunctions(VBOX_XPCOMC_VERSION);
+
+ if (data->pFuncs == NULL)
goto cleanup;
- if (data->vboxSession == NULL)
+
+#if VBOX_XPCOMC_VERSION == 0x00010000U
+ data->pFuncs->pfnComInitialize(&data->vboxObj, &data->vboxSession);
+#else
+ data->pFuncs->pfnComInitialize(IVIRTUALBOX_IID_STR, &data->vboxObj,
+ ISESSION_IID_STR, &data->vboxSession);
+#endif
+
+ if (data->vboxObj == NULL) {
+ vboxError(conn, VIR_ERR_INTERNAL_ERROR, "IVirtualBox object is null");
goto cleanup;
+ }
+
+ if (data->vboxSession == NULL) {
+ vboxError(conn, VIR_ERR_INTERNAL_ERROR, "ISession object is null");
+ goto cleanup;
+ }
return 0;
if (NS_SUCCEEDED(rc)) {
char *vboxVersion = NULL;
- g_pVBoxFuncs->pfnUtf16ToUtf8(versionUtf16, &vboxVersion);
+ data->pFuncs->pfnUtf16ToUtf8(versionUtf16, &vboxVersion);
if (sscanf(vboxVersion, "%u.%u.%u", &major, &minor, µ) == 3)
ret = 0;
- g_pVBoxFuncs->pfnUtf8Free(vboxVersion);
- g_pVBoxFuncs->pfnComUnallocMem(versionUtf16);
+ data->pFuncs->pfnUtf8Free(vboxVersion);
+ data->pFuncs->pfnComUnallocMem(versionUtf16);
} else {
ret = -1;
}
}
static void vboxUninitialize(vboxGlobalData *data) {
- g_pVBoxFuncs->pfnComUninitialize();
+ data->pFuncs->pfnComUninitialize();
VBoxCGlueTerm();
if (!data)
vboxGlobalData *data;
uid_t uid = getuid();
- if (errorval == -1)
- return VIR_DRV_OPEN_DECLINED;
-
if (conn->uri == NULL) {
conn->uri = xmlParseURI(uid ? "vbox:///session" : "vbox:///system");
if (conn->uri == NULL) {
char *machineName;
machines[id]->vtbl->GetName(machines[id], &machineNameUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
+ data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
machines[id]->vtbl->GetId(machines[id], &iid);
nsIDtoChar(iidl, iid);
dom->id = id + 1;
/* Cleanup all the XPCOM allocated stuff here */
- g_pVBoxFuncs->pfnComUnallocMem(iid);
- g_pVBoxFuncs->pfnUtf8Free(machineName);
- g_pVBoxFuncs->pfnComUnallocMem(machineNameUtf16);
+ data->pFuncs->pfnComUnallocMem(iid);
+ data->pFuncs->pfnUtf8Free(machineName);
+ data->pFuncs->pfnComUnallocMem(machineNameUtf16);
}
}
}
matched = 1;
machine->vtbl->GetName(machine, &machineNameUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
+ data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
machine->vtbl->GetState(machine, &state);
}
if (iid) {
- g_pVBoxFuncs->pfnComUnallocMem(iid);
+ data->pFuncs->pfnComUnallocMem(iid);
iid = NULL;
}
if (matched == 1)
/* Do the cleanup and take care you dont leak any memory */
if (machineName)
- g_pVBoxFuncs->pfnUtf8Free(machineName);
+ data->pFuncs->pfnUtf8Free(machineName);
if (machineNameUtf16)
- g_pVBoxFuncs->pfnComUnallocMem(machineNameUtf16);
+ data->pFuncs->pfnComUnallocMem(machineNameUtf16);
for (i = 0; i < machineCnt; ++i) {
if (machines[i])
machines[i]->vtbl->nsisupports.Release((nsISupports *)machines[i]);
if (isAccessible) {
machine->vtbl->GetName(machine, &machineNameUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
+ data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
if (machineName && (STREQ(name, machineName))) {
}
if (machineName) {
- g_pVBoxFuncs->pfnUtf8Free(machineName);
+ data->pFuncs->pfnUtf8Free(machineName);
machineName = NULL;
}
if (machineNameUtf16) {
- g_pVBoxFuncs->pfnComUnallocMem(machineNameUtf16);
+ data->pFuncs->pfnComUnallocMem(machineNameUtf16);
machineNameUtf16 = NULL;
}
if (matched == 1)
/* Do the cleanup and take care you dont leak any memory */
if (iid)
- g_pVBoxFuncs->pfnComUnallocMem(iid);
+ data->pFuncs->pfnComUnallocMem(iid);
for (i = 0; i < machineCnt; ++i) {
if (machines[i])
machines[i]->vtbl->nsisupports.Release((nsISupports *)machines[i]);
if (isAccessible) {
machine->vtbl->GetName(machine, &machineNameUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
+ data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
if (STREQ(dom->name, machineName)) {
/* Get the Machine State (also match it with
}
if (machineName)
- g_pVBoxFuncs->pfnUtf8Free(machineName);
+ data->pFuncs->pfnUtf8Free(machineName);
if (machineNameUtf16)
- g_pVBoxFuncs->pfnComUnallocMem(machineNameUtf16);
+ data->pFuncs->pfnComUnallocMem(machineNameUtf16);
if (info->nrVirtCpu)
break;
}
VRDPServer->vtbl->GetNetAddress(VRDPServer, &netAddressUtf16);
if (netAddressUtf16) {
- g_pVBoxFuncs->pfnUtf16ToUtf8(netAddressUtf16, &netAddressUtf8);
+ data->pFuncs->pfnUtf16ToUtf8(netAddressUtf16, &netAddressUtf8);
if (STRNEQ(netAddressUtf8, ""))
def->graphics->data.rdp.listenAddr = strdup(netAddressUtf8);
- g_pVBoxFuncs->pfnUtf16Free(netAddressUtf16);
- g_pVBoxFuncs->pfnUtf8Free(netAddressUtf8);
+ data->pFuncs->pfnUtf16Free(netAddressUtf16);
+ data->pFuncs->pfnUtf8Free(netAddressUtf8);
}
VRDPServer->vtbl->GetAuthType(VRDPServer, &authType);
machine->vtbl->GetSessionType(machine, &sessionTypeUtf16);
DEBUG0("Session Type:");
if (sessionTypeUtf16) {
- g_pVBoxFuncs->pfnUtf16ToUtf8(sessionTypeUtf16, &sessionTypeUtf8);
+ data->pFuncs->pfnUtf16ToUtf8(sessionTypeUtf16, &sessionTypeUtf8);
DEBUG("Session Type: %s", sessionTypeUtf8);
if (STREQ(sessionTypeUtf8, "vrdp")) {
def->graphics->data.rdp.headless = 1;
}
- g_pVBoxFuncs->pfnUtf16Free(sessionTypeUtf16);
- g_pVBoxFuncs->pfnUtf8Free(sessionTypeUtf8);
+ data->pFuncs->pfnUtf16Free(sessionTypeUtf16);
+ data->pFuncs->pfnUtf8Free(sessionTypeUtf8);
}
}
}
#endif
/* dump IDE hdds if present */
- g_pVBoxFuncs->pfnUtf8ToUtf16(hddBus, &hddBusUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(hddBus, &hddBusUtf16);
VIR_FREE(hddBus);
def->ndisks = 0;
if (hardDiskSS)
def->ndisks++;
- g_pVBoxFuncs->pfnUtf16Free(hddBusUtf16);
+ data->pFuncs->pfnUtf16Free(hddBusUtf16);
if ((def->ndisks > 0) && (VIR_ALLOC_N(def->disks, def->ndisks) >= 0)) {
for (i = 0; i < def->ndisks; i++) {
PRUint32 hddType = HardDiskType_Normal;
hardDiskPM->vtbl->imedium.GetLocation((IMedium *)hardDiskPM, &hddlocationUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(hddlocationUtf16, &hddlocation);
+ data->pFuncs->pfnUtf16ToUtf8(hddlocationUtf16, &hddlocation);
hardDiskPM->vtbl->GetType(hardDiskPM, &hddType);
def->disks[hddNum]->dst = strdup("hda");
hddNum++;
- g_pVBoxFuncs->pfnUtf8Free(hddlocation);
- g_pVBoxFuncs->pfnUtf16Free(hddlocationUtf16);
+ data->pFuncs->pfnUtf8Free(hddlocation);
+ data->pFuncs->pfnUtf16Free(hddlocationUtf16);
hardDiskPM->vtbl->imedium.nsisupports.Release((nsISupports *)hardDiskPM);
}
PRUint32 hddType = HardDiskType_Normal;
hardDiskPS->vtbl->imedium.GetLocation((IMedium *)hardDiskPS, &hddlocationUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(hddlocationUtf16, &hddlocation);
+ data->pFuncs->pfnUtf16ToUtf8(hddlocationUtf16, &hddlocation);
hardDiskPS->vtbl->GetType(hardDiskPS, &hddType);
def->disks[hddNum]->dst = strdup("hdb");
hddNum++;
- g_pVBoxFuncs->pfnUtf8Free(hddlocation);
- g_pVBoxFuncs->pfnUtf16Free(hddlocationUtf16);
+ data->pFuncs->pfnUtf8Free(hddlocation);
+ data->pFuncs->pfnUtf16Free(hddlocationUtf16);
hardDiskPS->vtbl->imedium.nsisupports.Release((nsISupports *)hardDiskPS);
}
PRUint32 hddType = HardDiskType_Normal;
hardDiskSS->vtbl->imedium.GetLocation((IMedium *)hardDiskSS, &hddlocationUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(hddlocationUtf16, &hddlocation);
+ data->pFuncs->pfnUtf16ToUtf8(hddlocationUtf16, &hddlocation);
hardDiskSS->vtbl->GetType(hardDiskSS, &hddType);
def->disks[hddNum]->dst = strdup("hdd");
hddNum++;
- g_pVBoxFuncs->pfnUtf8Free(hddlocation);
- g_pVBoxFuncs->pfnUtf16Free(hddlocationUtf16);
+ data->pFuncs->pfnUtf8Free(hddlocation);
+ data->pFuncs->pfnUtf16Free(hddlocationUtf16);
hardDiskSS->vtbl->imedium.nsisupports.Release((nsISupports *)hardDiskSS);
}
adapter->vtbl->GetHostInterface(adapter, &hostIntUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(hostIntUtf16, &hostInt);
+ data->pFuncs->pfnUtf16ToUtf8(hostIntUtf16, &hostInt);
def->nets[netAdpIncCnt]->data.bridge.brname = strdup(hostInt);
- g_pVBoxFuncs->pfnUtf8Free(hostInt);
- g_pVBoxFuncs->pfnUtf16Free(hostIntUtf16);
+ data->pFuncs->pfnUtf8Free(hostInt);
+ data->pFuncs->pfnUtf16Free(hostIntUtf16);
#if 0
} else if (attachmentType == NetworkAttachmentType_Internal) {
adapter->vtbl->GetInternalNetwork(adapter, &intNetUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(intNetUtf16, &intNet);
+ data->pFuncs->pfnUtf16ToUtf8(intNetUtf16, &intNet);
def->nets[netAdpIncCnt]->data.internal.name = strdup(intNet);
- g_pVBoxFuncs->pfnUtf8Free(intNet);
- g_pVBoxFuncs->pfnUtf16Free(intNetUtf16);
+ data->pFuncs->pfnUtf8Free(intNet);
+ data->pFuncs->pfnUtf16Free(intNetUtf16);
} else if (attachmentType == NetworkAttachmentType_HostOnly) {
PRUnichar *hostIntUtf16 = NULL;
adapter->vtbl->GetHostInterface(adapter, &hostIntUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(hostIntUtf16, &hostInt);
+ data->pFuncs->pfnUtf16ToUtf8(hostIntUtf16, &hostInt);
def->nets[netAdpIncCnt]->data.hostonly.name = strdup(hostInt);
- g_pVBoxFuncs->pfnUtf8Free(hostInt);
- g_pVBoxFuncs->pfnUtf16Free(hostIntUtf16);
+ data->pFuncs->pfnUtf8Free(hostInt);
+ data->pFuncs->pfnUtf16Free(hostIntUtf16);
#endif
} else {
}
adapter->vtbl->GetMACAddress(adapter, &MACAddressUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(MACAddressUtf16, &MACAddress);
+ data->pFuncs->pfnUtf16ToUtf8(MACAddressUtf16, &MACAddress);
snprintf(macaddr, VIR_MAC_STRING_BUFLEN,
"%c%c:%c%c:%c%c:%c%c:%c%c:%c%c",
MACAddress[0], MACAddress[1], MACAddress[2], MACAddress[3],
netAdpIncCnt++;
- g_pVBoxFuncs->pfnUtf16Free(MACAddressUtf16);
- g_pVBoxFuncs->pfnUtf8Free(MACAddress);
+ data->pFuncs->pfnUtf16Free(MACAddressUtf16);
+ data->pFuncs->pfnUtf8Free(MACAddress);
}
adapter->vtbl->nsisupports.Release((nsISupports *)adapter);
char *location = NULL;
dvdImage->vtbl->imedium.GetLocation((IMedium *)dvdImage, &locationUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(locationUtf16, &location);
+ data->pFuncs->pfnUtf16ToUtf8(locationUtf16, &location);
def->ndisks++;
if (VIR_REALLOC_N(def->disks, def->ndisks) >= 0) {
def->ndisks--;
}
- g_pVBoxFuncs->pfnUtf8Free(location);
- g_pVBoxFuncs->pfnUtf16Free(locationUtf16);
+ data->pFuncs->pfnUtf8Free(location);
+ data->pFuncs->pfnUtf16Free(locationUtf16);
dvdImage->vtbl->imedium.nsisupports.Release((nsISupports *)dvdImage);
}
}
char *location = NULL;
floppyImage->vtbl->imedium.GetLocation((IMedium *)floppyImage, &locationUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(locationUtf16, &location);
+ data->pFuncs->pfnUtf16ToUtf8(locationUtf16, &location);
def->ndisks++;
if (VIR_REALLOC_N(def->disks, def->ndisks) >= 0) {
def->ndisks--;
}
- g_pVBoxFuncs->pfnUtf8Free(location);
- g_pVBoxFuncs->pfnUtf16Free(locationUtf16);
+ data->pFuncs->pfnUtf8Free(location);
+ data->pFuncs->pfnUtf16Free(locationUtf16);
floppyImage->vtbl->imedium.nsisupports.Release((nsISupports *)floppyImage);
}
}
serialPort->vtbl->GetPath(serialPort, &pathUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(pathUtf16, &path);
+ data->pFuncs->pfnUtf16ToUtf8(pathUtf16, &path);
def->serials[serialPortIncCount]->data.file.path = strdup(path);
serialPortIncCount++;
- g_pVBoxFuncs->pfnUtf16Free(pathUtf16);
- g_pVBoxFuncs->pfnUtf8Free(path);
+ data->pFuncs->pfnUtf16Free(pathUtf16);
+ data->pFuncs->pfnUtf8Free(path);
}
serialPort->vtbl->nsisupports.Release((nsISupports *)serialPort);
parallelPort->vtbl->GetPath(parallelPort, &pathUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(pathUtf16, &path);
+ data->pFuncs->pfnUtf16ToUtf8(pathUtf16, &path);
def->parallels[parallelPortIncCount]->data.file.path = strdup(path);
parallelPortIncCount++;
- g_pVBoxFuncs->pfnUtf16Free(pathUtf16);
- g_pVBoxFuncs->pfnUtf8Free(path);
+ data->pFuncs->pfnUtf16Free(pathUtf16);
+ data->pFuncs->pfnUtf8Free(path);
}
parallelPort->vtbl->nsisupports.Release((nsISupports *)parallelPort);
deviceFilters[i]->vtbl->GetVendorId(deviceFilters[i], &vendorIdUtf16);
deviceFilters[i]->vtbl->GetProductId(deviceFilters[i], &productIdUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(vendorIdUtf16, &vendorIdUtf8);
- g_pVBoxFuncs->pfnUtf16ToUtf8(productIdUtf16, &productIdUtf8);
+ data->pFuncs->pfnUtf16ToUtf8(vendorIdUtf16, &vendorIdUtf8);
+ data->pFuncs->pfnUtf16ToUtf8(productIdUtf16, &productIdUtf8);
vendorId = strtol(vendorIdUtf8, &endptr, 16);
productId = strtol(productIdUtf8, &endptr, 16);
def->hostdevs[USBFilterCount]->source.subsys.u.usb.vendor = vendorId;
def->hostdevs[USBFilterCount]->source.subsys.u.usb.product = productId;
- g_pVBoxFuncs->pfnUtf16Free(vendorIdUtf16);
- g_pVBoxFuncs->pfnUtf8Free(vendorIdUtf8);
+ data->pFuncs->pfnUtf16Free(vendorIdUtf16);
+ data->pFuncs->pfnUtf8Free(vendorIdUtf8);
- g_pVBoxFuncs->pfnUtf16Free(productIdUtf16);
- g_pVBoxFuncs->pfnUtf8Free(productIdUtf8);
+ data->pFuncs->pfnUtf16Free(productIdUtf16);
+ data->pFuncs->pfnUtf8Free(productIdUtf8);
USBFilterCount++;
}
if ((state != MachineState_Running) &&
(state != MachineState_Paused) ) {
machine->vtbl->GetName(machine, &machineNameUtf16);
- g_pVBoxFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
+ data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
if (!(names[j++] = strdup(machineName))) {
virReportOOMError(conn);
for ( ; j >= 0 ; j--)
}
cleanup:
- g_pVBoxFuncs->pfnUtf8Free(machineName);
- g_pVBoxFuncs->pfnUtf16Free(machineNameUtf16);
+ data->pFuncs->pfnUtf8Free(machineName);
+ data->pFuncs->pfnUtf16Free(machineNameUtf16);
for (i = 0; i < machineCnt; ++i)
if (machines[i])
machines[i]->vtbl->nsisupports.Release((nsISupports *)machines[i]);
if (display) {
sprintf(displayutf8, "DISPLAY=%s", display);
- g_pVBoxFuncs->pfnUtf8ToUtf16(displayutf8, &env);
+ data->pFuncs->pfnUtf8ToUtf16(displayutf8, &env);
}
- g_pVBoxFuncs->pfnUtf8ToUtf16("gui", &sessionType);
+ data->pFuncs->pfnUtf8ToUtf16("gui", &sessionType);
if (!dom->name) {
vboxError(dom->conn, VIR_ERR_INTERNAL_ERROR,"%s",
}
if (iid)
- g_pVBoxFuncs->pfnComUnallocMem(iid);
+ data->pFuncs->pfnComUnallocMem(iid);
if (ret != -1)
break;
}
}
}
- g_pVBoxFuncs->pfnUtf16Free(env);
- g_pVBoxFuncs->pfnUtf16Free(sessionType);
+ data->pFuncs->pfnUtf16Free(env);
+ data->pFuncs->pfnUtf16Free(sessionType);
cleanup:
return ret;
}
if (data->vboxObj) {
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->name, &machineNameUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(def->name, &machineNameUtf16);
nsIDFromChar(iid, def->uuid);
rc = data->vboxObj->vtbl->CreateMachine(data->vboxObj,
machineNameUtf16,
NULL,
iid,
&machine);
- g_pVBoxFuncs->pfnUtf16Free(machineNameUtf16);
+ data->pFuncs->pfnUtf16Free(machineNameUtf16);
if (NS_FAILED(rc)) {
vboxError(conn, VIR_ERR_INTERNAL_ERROR,"%s, rc=%08x",
memset(&dvdemptyuuid, 0, sizeof(dvdemptyuuid));
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &dvdfileUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &dvdfileUtf16);
data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16, &dvdImage);
if (!dvdImage) {
(unsigned)dvduuid->m3[4], (unsigned)dvduuid->m3[5],
(unsigned)dvduuid->m3[6], (unsigned)dvduuid->m3[7]);
}
- g_pVBoxFuncs->pfnComUnallocMem(dvduuid);
+ data->pFuncs->pfnComUnallocMem(dvduuid);
}
dvdImage->vtbl->imedium.nsisupports.Release((nsISupports *)dvdImage);
}
- g_pVBoxFuncs->pfnUtf16Free(dvdfileUtf16);
+ data->pFuncs->pfnUtf16Free(dvdfileUtf16);
dvdDrive->vtbl->nsisupports.Release((nsISupports *)dvdDrive);
}
} else if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
* is requested to be connected to Secondary master
*/
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &hddfileUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &hddfileUtf16);
data->vboxObj->vtbl->FindHardDisk(data->vboxObj, hddfileUtf16, &hardDisk);
PRUnichar *hddcnameUtf16 = NULL;
char *hddcname = strdup("IDE");
- g_pVBoxFuncs->pfnUtf8ToUtf16(hddcname, &hddcnameUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(hddcname, &hddcnameUtf16);
VIR_FREE(hddcname);
if (STREQ(def->disks[i]->dst, "hda")) {
rc = machine->vtbl->AttachHardDisk(machine, hdduuid,
hddcnameUtf16,
channel, device);
- g_pVBoxFuncs->pfnUtf16Free(hddcnameUtf16);
+ data->pFuncs->pfnUtf16Free(hddcnameUtf16);
if (NS_FAILED(rc)) {
vboxError(conn, VIR_ERR_INTERNAL_ERROR,"%s:%s, rc=%08x",
}
}
}
- g_pVBoxFuncs->pfnComUnallocMem(hdduuid);
+ data->pFuncs->pfnComUnallocMem(hdduuid);
}
hardDisk->vtbl->imedium.nsisupports.Release((nsISupports *)hardDisk);
}
- g_pVBoxFuncs->pfnUtf16Free(hddfileUtf16);
+ data->pFuncs->pfnUtf16Free(hddfileUtf16);
} else if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
}
} else if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) {
memset(&fdemptyuuid, 0, sizeof(fdemptyuuid));
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &fdfileUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &fdfileUtf16);
rc = data->vboxObj->vtbl->FindFloppyImage(data->vboxObj, fdfileUtf16,
&floppyImage);
(unsigned)fduuid->m3[4], (unsigned)fduuid->m3[5],
(unsigned)fduuid->m3[6], (unsigned)fduuid->m3[7]);
}
- g_pVBoxFuncs->pfnComUnallocMem(fduuid);
+ data->pFuncs->pfnComUnallocMem(fduuid);
}
floppyImage->vtbl->imedium.nsisupports.Release((nsISupports *)floppyImage);
}
- g_pVBoxFuncs->pfnUtf16Free(fdfileUtf16);
+ data->pFuncs->pfnUtf16Free(fdfileUtf16);
}
floppyDrive->vtbl->nsisupports.Release((nsISupports *)floppyDrive);
}
adapter->vtbl->AttachToBridgedInterface(adapter);
if (def->nets[i]->data.bridge.brname) {
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->nets[i]->data.bridge.brname, &hostInterface);
+ data->pFuncs->pfnUtf8ToUtf16(def->nets[i]->data.bridge.brname, &hostInterface);
adapter->vtbl->SetHostInterface(adapter, hostInterface);
- g_pVBoxFuncs->pfnUtf16Free(hostInterface);
+ data->pFuncs->pfnUtf16Free(hostInterface);
}
#if 0
} else if (def->nets[i]->type == VIR_DOMAIN_NET_TYPE_INTERNAL) {
adapter->vtbl->AttachToInternalNetwork(adapter);
if (def->nets[i]->data.network.name) {
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->nets[i]->data.internal.name, &internalNetwork);
+ data->pFuncs->pfnUtf8ToUtf16(def->nets[i]->data.network.name, &internalNetwork);
adapter->vtbl->SetInternalNetwork(adapter, internalNetwork);
- g_pVBoxFuncs->pfnUtf16Free(internalNetwork);
+ data->pFuncs->pfnUtf16Free(internalNetwork);
}
} else if (def->nets[i]->type == VIR_DOMAIN_NET_TYPE_HOSTONLY) {
PRUnichar *hostInterface = NULL;
if (def->nets[i]->data.ethernet.dev) {
g_pVBoxFuncs->pfnUtf8ToUtf16(def->nets[i]->data.hostonly.name, &hostInterface);
adapter->vtbl->SetHostInterface(adapter, hostInterface);
- g_pVBoxFuncs->pfnUtf16Free(hostInterface);
+ data->pFuncs->pfnUtf16Free(hostInterface);
}
#endif
} else if (def->nets[i]->type == VIR_DOMAIN_NET_TYPE_USER) {
adapter->vtbl->AttachToNAT(adapter);
}
- g_pVBoxFuncs->pfnUtf8ToUtf16(macaddrvbox, &MACAddress);
+ data->pFuncs->pfnUtf8ToUtf16(macaddrvbox, &MACAddress);
if (def->nets[i]->mac) {
adapter->vtbl->SetMACAddress(adapter, MACAddress);
}
- g_pVBoxFuncs->pfnUtf16Free(MACAddress);
+ data->pFuncs->pfnUtf16Free(MACAddress);
}
}
} /* Finished:Block to attach the Network Card to the VM */
PRUnichar *pathUtf16 = NULL;
serialPort->vtbl->SetEnabled(serialPort, 1);
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->serials[i]->data.file.path, &pathUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(def->serials[i]->data.file.path, &pathUtf16);
/* For now hard code the serial ports to COM1 and COM2,
* COM1 (Base Addr: 0x3F8 (decimal: 1016), IRQ: 4)
serialPort->vtbl->nsisupports.Release((nsISupports *)serialPort);
if (pathUtf16) {
- g_pVBoxFuncs->pfnUtf16Free(pathUtf16);
+ data->pFuncs->pfnUtf16Free(pathUtf16);
pathUtf16 = NULL;
}
}
if (parallelPort) {
PRUnichar *pathUtf16 = NULL;
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->parallels[i]->data.file.path, &pathUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(def->parallels[i]->data.file.path, &pathUtf16);
/* For now hard code the parallel ports to
* LPT1 (Base Addr: 0x378 (decimal: 888), IRQ: 7)
parallelPort->vtbl->nsisupports.Release((nsISupports *)parallelPort);
if (pathUtf16) {
- g_pVBoxFuncs->pfnUtf16Free(pathUtf16);
+ data->pFuncs->pfnUtf16Free(pathUtf16);
pathUtf16 = NULL;
}
}
if (def->graphics->data.rdp.listenAddr) {
PRUnichar *netAddressUtf16 = NULL;
- g_pVBoxFuncs->pfnUtf8ToUtf16(def->graphics->data.rdp.listenAddr, &netAddressUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(def->graphics->data.rdp.listenAddr, &netAddressUtf16);
VRDPServer->vtbl->SetNetAddress(VRDPServer, netAddressUtf16);
DEBUG("VRDP listen address is set to: %s", def->graphics->data.rdp.listenAddr);
- g_pVBoxFuncs->pfnUtf16Free(netAddressUtf16);
+ data->pFuncs->pfnUtf16Free(netAddressUtf16);
}
VRDPServer->vtbl->nsisupports.Release((nsISupports *)VRDPServer);
* restricting to %04d
*/
sprintf(filtername, "filter%04d", i);
- g_pVBoxFuncs->pfnUtf8ToUtf16(filtername, &filternameUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(filtername, &filternameUtf16);
USBController->vtbl->CreateDeviceFilter(USBController,
filternameUtf16,
&filter);
- g_pVBoxFuncs->pfnUtf16Free(filternameUtf16);
+ data->pFuncs->pfnUtf16Free(filternameUtf16);
if (filter &&
(def->hostdevs[i]->source.subsys.u.usb.vendor ||
if (def->hostdevs[i]->source.subsys.u.usb.vendor) {
sprintf(vendorId, "%x", def->hostdevs[i]->source.subsys.u.usb.vendor);
- g_pVBoxFuncs->pfnUtf8ToUtf16(vendorId, &vendorIdUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(vendorId, &vendorIdUtf16);
filter->vtbl->SetVendorId(filter, vendorIdUtf16);
- g_pVBoxFuncs->pfnUtf16Free(vendorIdUtf16);
+ data->pFuncs->pfnUtf16Free(vendorIdUtf16);
}
if (def->hostdevs[i]->source.subsys.u.usb.product) {
sprintf(productId, "%x", def->hostdevs[i]->source.subsys.u.usb.product);
- g_pVBoxFuncs->pfnUtf8ToUtf16(productId, &productIdUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(productId, &productIdUtf16);
filter->vtbl->SetProductId(filter, productIdUtf16);
- g_pVBoxFuncs->pfnUtf16Free(productIdUtf16);
+ data->pFuncs->pfnUtf16Free(productIdUtf16);
}
filter->vtbl->SetActive(filter, 1);
USBController->vtbl->InsertDeviceFilter(USBController,
*/
rc = machine->vtbl->SaveSettings(machine);
data->vboxSession->vtbl->Close(data->vboxSession);
- g_pVBoxFuncs->pfnComUnallocMem(mchiid);
+ data->pFuncs->pfnComUnallocMem(mchiid);
dom = virGetDomain(conn, def->name, def->uuid);
if(machine) {
PRUnichar *hddcnameUtf16 = NULL;
char *hddcname = strdup("IDE");
- g_pVBoxFuncs->pfnUtf8ToUtf16(hddcname, &hddcnameUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(hddcname, &hddcnameUtf16);
VIR_FREE(hddcname);
/* Open a Session for the machine */
}
data->vboxSession->vtbl->Close(data->vboxSession);
}
- g_pVBoxFuncs->pfnUtf16Free(hddcnameUtf16);
+ data->pFuncs->pfnUtf16Free(hddcnameUtf16);
}
rc = data->vboxObj->vtbl->UnregisterMachine(data->vboxObj, iid, &machine);
memset(&dvdemptyuuid, 0, sizeof(dvdemptyuuid));
- g_pVBoxFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &dvdfileUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &dvdfileUtf16);
data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16, &dvdImage);
if (!dvdImage) {
(unsigned)dvduuid->m3[5], (unsigned)dvduuid->m3[6],
(unsigned)dvduuid->m3[7]);
}
- g_pVBoxFuncs->pfnComUnallocMem(dvduuid);
+ data->pFuncs->pfnComUnallocMem(dvduuid);
}
dvdImage->vtbl->imedium.nsisupports.Release((nsISupports *)dvdImage);
}
- g_pVBoxFuncs->pfnUtf16Free(dvdfileUtf16);
+ data->pFuncs->pfnUtf16Free(dvdfileUtf16);
dvdDrive->vtbl->nsisupports.Release((nsISupports *)dvdDrive);
}
} else if (dev->data.disk->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
memset(&fdemptyuuid, 0, sizeof(fdemptyuuid));
- g_pVBoxFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &fdfileUtf16);
+ data->pFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &fdfileUtf16);
rc = data->vboxObj->vtbl->FindFloppyImage(data->vboxObj, fdfileUtf16,
&floppyImage);
(unsigned)fduuid->m3[4], (unsigned)fduuid->m3[5],
(unsigned)fduuid->m3[6], (unsigned)fduuid->m3[7]);
}
- g_pVBoxFuncs->pfnComUnallocMem(fduuid);
+ data->pFuncs->pfnComUnallocMem(fduuid);
}
floppyImage->vtbl->imedium.nsisupports.Release((nsISupports *)floppyImage);
}
- g_pVBoxFuncs->pfnUtf16Free(fdfileUtf16);
+ data->pFuncs->pfnUtf16Free(fdfileUtf16);
}
floppyDrive->vtbl->nsisupports.Release((nsISupports *)floppyDrive);
}