]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
vbox: Add more IStorageController API mappings
authorDawid Zamirski <dzamirski@datto.com>
Tue, 24 Oct 2017 19:35:31 +0000 (15:35 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Fri, 3 Nov 2017 17:15:54 +0000 (13:15 -0400)
This patch exposes additional methods of the native VBOX API to the
libvirt 'unified' vbox API to deal with IStorageController. The exposed
methods are:

* IStorageController->GetStorageControllerType()
* IStorageController->SetStorageControllerType()
* IMachine->GetStorageControllers()

src/vbox/vbox_common.h
src/vbox/vbox_tmpl.c
src/vbox/vbox_uniformed_api.h

index d88c637ac1318cd1a3eb57cb737eb719a967a96c..f28f2e03f35e2b6347ef9db0271d27116620ac80 100644 (file)
@@ -235,6 +235,19 @@ enum StorageBus
     StorageBus_SAS = 5
 };
 
+enum StorageControllerType
+{
+    StorageControllerType_Null = 0,
+    StorageControllerType_LsiLogic = 1,
+    StorageControllerType_BusLogic = 2,
+    StorageControllerType_IntelAhci = 3,
+    StorageControllerType_PIIX3 = 4,
+    StorageControllerType_PIIX4 = 5,
+    StorageControllerType_ICH6 = 6,
+    StorageControllerType_I82078 = 7,
+    StorageControllerType_LsiLogicSas = 8
+};
+
 enum AccessMode
 {
     AccessMode_ReadOnly = 1,
index 4f1662bc1ad515deefba676654c3e229be352c89..98d4bbf0d8398e0efb47daba6790f1f7f47fae1c 100644 (file)
@@ -572,6 +572,11 @@ static void* _handleUSBGetDeviceFilters(IUSBCommon *USBCommon)
     return USBCommon->vtbl->GetDeviceFilters;
 }
 
+static void* _handleMachineGetStorageControllers(IMachine *machine)
+{
+    return machine->vtbl->GetStorageControllers;
+}
+
 static void* _handleMachineGetMediumAttachments(IMachine *machine)
 {
     return machine->vtbl->GetMediumAttachments;
@@ -1987,6 +1992,18 @@ _storageControllerGetBus(IStorageController *storageController, PRUint32 *bus)
     return storageController->vtbl->GetBus(storageController, bus);
 }
 
+static nsresult
+_storageControllerGetControllerType(IStorageController *storageController, PRUint32 *controllerType)
+{
+    return storageController->vtbl->GetControllerType(storageController, controllerType);
+}
+
+static nsresult
+_storageControllerSetControllerType(IStorageController *storageController, PRUint32 controllerType)
+{
+    return storageController->vtbl->SetControllerType(storageController, controllerType);
+}
+
 static nsresult
 _sharedFolderGetHostPath(ISharedFolder *sharedFolder, PRUnichar **hostPath)
 {
@@ -2336,6 +2353,7 @@ static vboxUniformedArray _UArray = {
     .handleGetMachines = _handleGetMachines,
     .handleGetHardDisks = _handleGetHardDisks,
     .handleUSBGetDeviceFilters = _handleUSBGetDeviceFilters,
+    .handleMachineGetStorageControllers = _handleMachineGetStorageControllers,
     .handleMachineGetMediumAttachments = _handleMachineGetMediumAttachments,
     .handleMachineGetSharedFolders = _handleMachineGetSharedFolders,
     .handleSnapshotGetChildren = _handleSnapshotGetChildren,
@@ -2567,6 +2585,8 @@ static vboxUniformedIMediumAttachment _UIMediumAttachment = {
 
 static vboxUniformedIStorageController _UIStorageController = {
     .GetBus = _storageControllerGetBus,
+    .GetControllerType = _storageControllerGetControllerType,
+    .SetControllerType = _storageControllerSetControllerType,
 };
 
 static vboxUniformedISharedFolder _UISharedFolder = {
index 8cf27789bc6d5eea532d5a68d5fea98272871536..c51191e7dbd2b68d1addbab8e5837716ab464da5 100644 (file)
@@ -135,6 +135,7 @@ typedef struct {
     void* (*handleGetMachines)(IVirtualBox *vboxObj);
     void* (*handleGetHardDisks)(IVirtualBox *vboxObj);
     void* (*handleUSBGetDeviceFilters)(IUSBCommon *USBCommon);
+    void* (*handleMachineGetStorageControllers)(IMachine *machine);
     void* (*handleMachineGetMediumAttachments)(IMachine *machine);
     void* (*handleMachineGetSharedFolders)(IMachine *machine);
     void* (*handleSnapshotGetChildren)(ISnapshot *snapshot);
@@ -410,6 +411,8 @@ typedef struct {
 /* Functions for IStorageController */
 typedef struct {
     nsresult (*GetBus)(IStorageController *storageController, PRUint32 *bus);
+    nsresult (*SetControllerType)(IStorageController *storageController, PRUint32 controllerType);
+    nsresult (*GetControllerType)(IStorageController *storageController, PRUint32 *controllerType);
 } vboxUniformedIStorageController;
 
 /* Functions for ISharedFolder */