and the registration etc...
and also putting it all into the auto make mechanism(I should learn this sometime...)
diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
index 8d1af71..677f778 100644
--- a/src/esx/esx_driver.c
+++ b/src/esx/esx_driver.c
@@ -3018,7 +3018,89 @@ esxDomainMigrateFinish(virConnectPtr dconn, const char *dname,
return esxDomainLookupByName(dconn, dname);
}
+struct interface_driver
+{
+ virMutex lock;
+};
+
+static virDrvOpenStatus esxInterfaceOpenInterface(virConnectPtr conn,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+
int flags ATTRIBUTE_UNUSED)
+{
+ struct interface_driver *driverState;
+
+ if (VIR_ALLOC(driverState) < 0)
+ {
+ virReportOOMError(conn);
+ goto alloc_error;
+ }
+
+ /* initialize non-0 stuff in driverState */
+ if (virMutexInit(&driverState->lock) < 0)
+ {
+ /* what error to report? */
+ goto mutex_error;
+ }
+
+
+ conn->interfacePrivateData = driverState;
+ return 0;
+mutex_error:
+ VIR_FREE(driverState);
+alloc_error:
+ return
-1;
+}
+
+static int esxInterfaceCloseInterface(virConnectPtr conn)
+{
+
+ if (conn->interfacePrivateData != NULL)
+ {
+ struct interface_driver *driver = conn->interfacePrivateData;
+ /* destroy lock */
+ virMutexDestroy(&driver->lock);
+ /* free driver state */
+ VIR_FREE(driver);
+ }
+ conn->interfacePrivateData = NULL;
+ return 0;
+}
+
+static int esxInterfaceNumOfInterfaces(virConnectPtr conn)
+{
+ int count = 7;
+ return count;
+}
+
+static
virInterfaceDriver esxInterfaceDriver = {
+ "EsxInterface",
+ esxInterfaceOpenInterface, /* open */
+ esxInterfaceCloseInterface, /* close */
+ esxInterfaceNumOfInterfaces, /* numOfInterfaces */
+ NULL, /* listInterfaces */
+ NULL, /* numOfInterfaces */
+ NULL, /* listInterfaces */
+ NULL, /* interfaceLookupByName */
+ NULL, /* interfaceLookupByMACSTring */
+ NULL, /* interfaceGetXMLDesc */
+ NULL, /* interfaceDefineXML */
+
NULL, /* interfaceUndefine */
+ NULL, /* interfaceCreate */
+ NULL, /* interfaceDestroy */
+#if 0
+ esxInterfaceListInterfaces, /* listInterfaces */
+ esxInterfaceNumOfDefinedInterfaces, /* numOfInterfaces */
+ esxInterfaceListDefinedInterfaces, /* listInterfaces */
+ esxInterfaceLookupByName, /* interfaceLookupByName */
+ esxInterfaceLookupByMACString, /* interfaceLookupByMACSTring */
+ esxInterfaceGetXMLDesc, /* interfaceGetXMLDesc */
+
esxInterfaceDefineXML, /* interfaceDefineXML */
+ esxInterfaceUndefine, /* interfaceUndefine */
+ esxInterfaceCreate, /* interfaceCreate */
+ esxInterfaceDestroy, /* interfaceDestroy */
+#endif
+};
static virDriver esxDriver = {
VIR_DRV_ESX,
@@ -3096,6 +3178,7 @@ int
esxRegister(void)
{
virRegisterDriver(&esxDriver);
+ virRegisterInterfaceDriver(&esxInterfaceDriver);
return 0;
}
From: Matthias Bolte <matthias.bolte@googlemail.com>
To: Shahar Klein <shaharklein@yahoo.com>
Cc: Chris Lalancette <clalance@redhat.com>; libvir-list@redhat.com
Sent: Wednesday, September 9, 2009 11:37:17 AM
Subject: Re: [libvirt] Interface driver and ESX support
2009/9/9 Shahar Klein <
shaharklein@yahoo.com>:
>
Let me rephrase my question : )
> In the current libvirt infrastructure I can do a lot of things with libvirt
> and a remote ESX node
> I can list all the guests
> I can suspend a guest
> I can get a lot of node info
> and much more....
> can I (for example)
> 1. add NIC to a guest domain
The attach/detach device driver functions aren't implemented yet, but
that's on my todo list.
> 2. list all the physical interfaces on a node
The VI API contains methods and types to do this. It requires a new
interface driver as Chris already said. This is not implemented yet,
but that's on my todo list.
> If not - what do I need to develop
> should I expand the current driver
> or
> should I need to develop a new interface driver(like netcf)
> or
> maybe I can assign the current esx driver as the interface driver and expand
> it to handle the
relvant requests
> 10x again
> Shahar
>
The basic question is: How urgent is this for you? Do you need it now
or can you wait some time until I implemented it?
PS: I just finished the implementation of the driver function for
virDomainDefineXML(). I need to cleanup the patches a bit and will
post them by the end of the week, depends on how fast I can get done
some other urgent, university related work.