2006-03-20 17:49:28 +00:00
|
|
|
/*
|
|
|
|
* driver.h: description of the set of interfaces provided by a
|
|
|
|
* entry point to the virtualization engine
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __VIR_DRIVER_H__
|
|
|
|
#define __VIR_DRIVER_H__
|
|
|
|
|
2006-06-26 15:02:18 +00:00
|
|
|
#include "libvirt/libvirt.h"
|
|
|
|
#include "libvirt/virterror.h"
|
2006-03-20 17:49:28 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2006-06-21 12:56:19 +00:00
|
|
|
/*
|
|
|
|
* List of registered drivers numbers
|
|
|
|
*/
|
|
|
|
typedef enum {
|
2007-04-04 14:19:49 +00:00
|
|
|
VIR_DRV_XEN_UNIFIED = 1,
|
|
|
|
VIR_DRV_TEST = 2,
|
|
|
|
VIR_DRV_QEMU = 3,
|
2006-06-21 12:56:19 +00:00
|
|
|
} virDrvNo;
|
|
|
|
|
|
|
|
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef enum {
|
|
|
|
VIR_DRV_OPEN_QUIET = 1,
|
|
|
|
VIR_DRV_OPEN_RO = 2
|
|
|
|
} virDrvOpenFlag;
|
|
|
|
|
2007-04-04 14:19:49 +00:00
|
|
|
/* Status codes returned from driver open call. */
|
|
|
|
typedef enum {
|
|
|
|
/* Opened successfully. */
|
|
|
|
VIR_DRV_OPEN_SUCCESS = 0,
|
|
|
|
|
|
|
|
/* 'name' is not for us. */
|
|
|
|
VIR_DRV_OPEN_DECLINED = -1,
|
|
|
|
|
|
|
|
/* 'name' is for us, but there was some error. virConnectOpen will
|
|
|
|
* return an error rather than continue probing the other drivers.
|
|
|
|
*/
|
|
|
|
VIR_DRV_OPEN_ERROR = -2,
|
|
|
|
} virDrvOpenStatus;
|
|
|
|
|
|
|
|
typedef virDrvOpenStatus
|
|
|
|
(*virDrvOpen) (virConnectPtr conn,
|
|
|
|
const char *name,
|
|
|
|
int flags);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvClose) (virConnectPtr conn);
|
|
|
|
typedef const char *
|
|
|
|
(*virDrvGetType) (virConnectPtr conn);
|
|
|
|
typedef int
|
2006-03-20 23:42:12 +00:00
|
|
|
(*virDrvGetVersion) (virConnectPtr conn,
|
2006-03-20 17:49:28 +00:00
|
|
|
unsigned long *hvVer);
|
2007-03-08 08:31:07 +00:00
|
|
|
typedef int
|
2007-04-04 14:19:49 +00:00
|
|
|
(*virDrvGetMaxVcpus) (virConnectPtr conn, const char *type);
|
2006-03-29 12:46:03 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvNodeGetInfo) (virConnectPtr conn,
|
|
|
|
virNodeInfoPtr info);
|
2007-03-15 17:24:56 +00:00
|
|
|
typedef char *
|
|
|
|
(*virDrvGetCapabilities) (virConnectPtr conn);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvListDomains) (virConnectPtr conn,
|
|
|
|
int *ids,
|
|
|
|
int maxids);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNumOfDomains) (virConnectPtr conn);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainCreateLinux) (virConnectPtr conn,
|
|
|
|
const char *xmlDesc,
|
|
|
|
unsigned int flags);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainLookupByID) (virConnectPtr conn,
|
|
|
|
int id);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainLookupByUUID) (virConnectPtr conn,
|
|
|
|
const unsigned char *uuid);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainLookupByName) (virConnectPtr conn,
|
|
|
|
const char *name);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSuspend) (virDomainPtr domain);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainResume) (virDomainPtr domain);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainShutdown) (virDomainPtr domain);
|
2006-04-03 13:46:43 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainReboot) (virDomainPtr domain,
|
|
|
|
unsigned int flags);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainDestroy) (virDomainPtr domain);
|
|
|
|
typedef char *
|
|
|
|
(*virDrvDomainGetOSType) (virDomainPtr domain);
|
|
|
|
typedef unsigned long
|
|
|
|
(*virDrvDomainGetMaxMemory) (virDomainPtr domain);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSetMaxMemory) (virDomainPtr domain,
|
|
|
|
unsigned long memory);
|
2006-04-13 17:18:49 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSetMemory) (virDomainPtr domain,
|
|
|
|
unsigned long memory);
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainGetInfo) (virDomainPtr domain,
|
|
|
|
virDomainInfoPtr info);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSave) (virDomainPtr domain,
|
|
|
|
const char *to);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainRestore) (virConnectPtr conn,
|
|
|
|
const char *from);
|
2006-11-22 17:48:29 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainCoreDump) (virDomainPtr domain,
|
|
|
|
const char *to,
|
|
|
|
int flags);
|
2006-08-09 15:21:16 +00:00
|
|
|
typedef char *
|
|
|
|
(*virDrvDomainDumpXML) (virDomainPtr dom,
|
|
|
|
int flags);
|
2006-08-30 14:21:03 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvListDefinedDomains) (virConnectPtr conn,
|
2007-03-06 21:55:44 +00:00
|
|
|
char **const names,
|
2006-08-30 14:21:03 +00:00
|
|
|
int maxnames);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNumOfDefinedDomains) (virConnectPtr conn);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainCreate) (virDomainPtr dom);
|
|
|
|
typedef virDomainPtr
|
|
|
|
(*virDrvDomainDefineXML)(virConnectPtr conn, const char *xml);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainUndefine) (virDomainPtr dom);
|
2006-08-08 22:22:55 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSetVcpus) (virDomainPtr domain,
|
|
|
|
unsigned int nvcpus);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainPinVcpu) (virDomainPtr domain,
|
|
|
|
unsigned int vcpu,
|
|
|
|
unsigned char *cpumap,
|
|
|
|
int maplen);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainGetVcpus) (virDomainPtr domain,
|
|
|
|
virVcpuInfoPtr info,
|
|
|
|
int maxinfo,
|
|
|
|
unsigned char *cpumaps,
|
|
|
|
int maplen);
|
2007-03-08 08:31:07 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainGetMaxVcpus) (virDomainPtr domain);
|
2006-11-16 18:11:28 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainAttachDevice) (virDomainPtr domain,
|
|
|
|
char *xml);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainDetachDevice) (virDomainPtr domain,
|
|
|
|
char *xml);
|
2007-02-23 08:51:30 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvDomainGetAutostart) (virDomainPtr domain,
|
|
|
|
int *autostart);
|
|
|
|
typedef int
|
|
|
|
(*virDrvDomainSetAutostart) (virDomainPtr domain,
|
|
|
|
int autostart);
|
2006-08-08 22:22:55 +00:00
|
|
|
|
2006-03-20 17:49:28 +00:00
|
|
|
typedef struct _virDriver virDriver;
|
|
|
|
typedef virDriver *virDriverPtr;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* _virDriver:
|
|
|
|
*
|
|
|
|
* Structure associated to a virtualization driver, defining the various
|
|
|
|
* entry points for it.
|
2007-04-04 14:19:49 +00:00
|
|
|
*
|
|
|
|
* All drivers must support the following fields/methods:
|
|
|
|
* - no
|
|
|
|
* - name
|
|
|
|
* - open
|
|
|
|
* - close
|
2006-03-20 17:49:28 +00:00
|
|
|
*/
|
|
|
|
struct _virDriver {
|
2006-06-21 12:56:19 +00:00
|
|
|
int no; /* the number virDrvNo */
|
|
|
|
const char * name; /* the name of the driver */
|
|
|
|
unsigned long ver; /* the version of the backend */
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvOpen open;
|
|
|
|
virDrvClose close;
|
|
|
|
virDrvGetType type;
|
|
|
|
virDrvGetVersion version;
|
2007-03-08 08:31:07 +00:00
|
|
|
virDrvGetMaxVcpus getMaxVcpus;
|
2006-03-29 12:46:03 +00:00
|
|
|
virDrvNodeGetInfo nodeGetInfo;
|
2007-03-15 17:24:56 +00:00
|
|
|
virDrvGetCapabilities getCapabilities;
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvListDomains listDomains;
|
|
|
|
virDrvNumOfDomains numOfDomains;
|
|
|
|
virDrvDomainCreateLinux domainCreateLinux;
|
|
|
|
virDrvDomainLookupByID domainLookupByID;
|
|
|
|
virDrvDomainLookupByUUID domainLookupByUUID;
|
|
|
|
virDrvDomainLookupByName domainLookupByName;
|
|
|
|
virDrvDomainSuspend domainSuspend;
|
|
|
|
virDrvDomainResume domainResume;
|
|
|
|
virDrvDomainShutdown domainShutdown;
|
2006-04-03 13:46:43 +00:00
|
|
|
virDrvDomainReboot domainReboot;
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvDomainDestroy domainDestroy;
|
|
|
|
virDrvDomainGetOSType domainGetOSType;
|
|
|
|
virDrvDomainGetMaxMemory domainGetMaxMemory;
|
|
|
|
virDrvDomainSetMaxMemory domainSetMaxMemory;
|
2006-04-13 17:18:49 +00:00
|
|
|
virDrvDomainSetMemory domainSetMemory;
|
2006-03-20 17:49:28 +00:00
|
|
|
virDrvDomainGetInfo domainGetInfo;
|
|
|
|
virDrvDomainSave domainSave;
|
|
|
|
virDrvDomainRestore domainRestore;
|
2006-11-22 17:48:29 +00:00
|
|
|
virDrvDomainCoreDump domainCoreDump;
|
2006-08-08 22:22:55 +00:00
|
|
|
virDrvDomainSetVcpus domainSetVcpus;
|
|
|
|
virDrvDomainPinVcpu domainPinVcpu;
|
|
|
|
virDrvDomainGetVcpus domainGetVcpus;
|
2007-03-08 08:31:07 +00:00
|
|
|
virDrvDomainGetMaxVcpus domainGetMaxVcpus;
|
2006-08-09 15:21:16 +00:00
|
|
|
virDrvDomainDumpXML domainDumpXML;
|
2006-08-30 14:21:03 +00:00
|
|
|
virDrvListDefinedDomains listDefinedDomains;
|
|
|
|
virDrvNumOfDefinedDomains numOfDefinedDomains;
|
|
|
|
virDrvDomainCreate domainCreate;
|
|
|
|
virDrvDomainDefineXML domainDefineXML;
|
|
|
|
virDrvDomainUndefine domainUndefine;
|
2006-11-16 18:11:28 +00:00
|
|
|
virDrvDomainAttachDevice domainAttachDevice;
|
|
|
|
virDrvDomainDetachDevice domainDetachDevice;
|
2007-02-23 08:51:30 +00:00
|
|
|
virDrvDomainGetAutostart domainGetAutostart;
|
|
|
|
virDrvDomainSetAutostart domainSetAutostart;
|
2006-03-20 17:49:28 +00:00
|
|
|
};
|
|
|
|
|
2007-02-14 15:37:18 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvNumOfNetworks) (virConnectPtr conn);
|
|
|
|
typedef int
|
|
|
|
(*virDrvListNetworks) (virConnectPtr conn,
|
2007-03-06 21:55:44 +00:00
|
|
|
char **const names,
|
2007-02-14 15:37:18 +00:00
|
|
|
int maxnames);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNumOfDefinedNetworks) (virConnectPtr conn);
|
|
|
|
typedef int
|
|
|
|
(*virDrvListDefinedNetworks) (virConnectPtr conn,
|
2007-03-06 21:55:44 +00:00
|
|
|
char **const names,
|
2007-02-14 15:37:18 +00:00
|
|
|
int maxnames);
|
|
|
|
typedef virNetworkPtr
|
|
|
|
(*virDrvNetworkLookupByUUID) (virConnectPtr conn,
|
|
|
|
const unsigned char *uuid);
|
|
|
|
typedef virNetworkPtr
|
|
|
|
(*virDrvNetworkLookupByName) (virConnectPtr conn,
|
|
|
|
const char *name);
|
|
|
|
typedef virNetworkPtr
|
|
|
|
(*virDrvNetworkCreateXML) (virConnectPtr conn,
|
|
|
|
const char *xmlDesc);
|
|
|
|
typedef virNetworkPtr
|
|
|
|
(*virDrvNetworkDefineXML) (virConnectPtr conn, const char *xml);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNetworkUndefine) (virNetworkPtr network);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNetworkCreate) (virNetworkPtr network);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNetworkDestroy) (virNetworkPtr network);
|
|
|
|
typedef char *
|
|
|
|
(*virDrvNetworkDumpXML) (virNetworkPtr network,
|
|
|
|
int flags);
|
2007-02-14 16:20:38 +00:00
|
|
|
typedef char *
|
|
|
|
(*virDrvNetworkGetBridgeName) (virNetworkPtr network);
|
2007-02-23 08:51:30 +00:00
|
|
|
typedef int
|
|
|
|
(*virDrvNetworkGetAutostart) (virNetworkPtr network,
|
|
|
|
int *autostart);
|
|
|
|
typedef int
|
|
|
|
(*virDrvNetworkSetAutostart) (virNetworkPtr network,
|
|
|
|
int autostart);
|
|
|
|
|
2007-02-14 15:37:18 +00:00
|
|
|
|
|
|
|
typedef struct _virNetworkDriver virNetworkDriver;
|
|
|
|
typedef virNetworkDriver *virNetworkDriverPtr;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* _virNetworkDriver:
|
|
|
|
*
|
|
|
|
* Structure associated to a network virtualization driver, defining the various
|
|
|
|
* entry points for it.
|
2007-04-04 14:19:49 +00:00
|
|
|
*
|
|
|
|
* All drivers must support the following fields/methods:
|
|
|
|
* - open
|
|
|
|
* - close
|
2007-02-14 15:37:18 +00:00
|
|
|
*/
|
|
|
|
struct _virNetworkDriver {
|
|
|
|
virDrvOpen open;
|
|
|
|
virDrvClose close;
|
|
|
|
virDrvNumOfNetworks numOfNetworks;
|
|
|
|
virDrvListNetworks listNetworks;
|
|
|
|
virDrvNumOfDefinedNetworks numOfDefinedNetworks;
|
|
|
|
virDrvListDefinedNetworks listDefinedNetworks;
|
|
|
|
virDrvNetworkLookupByUUID networkLookupByUUID;
|
|
|
|
virDrvNetworkLookupByName networkLookupByName;
|
|
|
|
virDrvNetworkCreateXML networkCreateXML;
|
|
|
|
virDrvNetworkDefineXML networkDefineXML;
|
|
|
|
virDrvNetworkUndefine networkUndefine;
|
|
|
|
virDrvNetworkCreate networkCreate;
|
|
|
|
virDrvNetworkDestroy networkDestroy;
|
|
|
|
virDrvNetworkDumpXML networkDumpXML;
|
2007-02-14 16:20:38 +00:00
|
|
|
virDrvNetworkGetBridgeName networkGetBridgeName;
|
2007-02-23 08:51:30 +00:00
|
|
|
virDrvNetworkGetAutostart networkGetAutostart;
|
|
|
|
virDrvNetworkSetAutostart networkSetAutostart;
|
2007-02-14 15:37:18 +00:00
|
|
|
};
|
|
|
|
|
2006-03-20 17:49:28 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Registration
|
|
|
|
* TODO: also need ways to (des)activate a given driver
|
|
|
|
* lookup based on the URI given in a virConnectOpen(ReadOnly)
|
|
|
|
*/
|
|
|
|
int virRegisterDriver(virDriverPtr);
|
2007-02-14 15:37:18 +00:00
|
|
|
int virRegisterNetworkDriver(virNetworkDriverPtr);
|
2006-03-20 17:49:28 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* __VIR_DRIVER_H__ */
|
2007-03-15 17:24:56 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* vim: set tabstop=4:
|
|
|
|
* vim: set shiftwidth=4:
|
|
|
|
* vim: set expandtab:
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
* Local variables:
|
|
|
|
* indent-tabs-mode: nil
|
|
|
|
* c-indent-level: 4
|
|
|
|
* c-basic-offset: 4
|
|
|
|
* tab-width: 4
|
|
|
|
* End:
|
|
|
|
*/
|