This patch introduces the public & driver APIs for collecting auth
credentials via a callback. This allows username/password based auth
schemes to be used.
This basically introduces a 3rd variant of the virConnectOpen call
which takes a set of authentication parameters, and some flags.
virConnectPtr virConnectOpenAuth (const char *name,
virConnectAuthPtr auth,
int flags);
The flags parameter allows VIR_CONNECT_RO, so there is no need for a
separate ReadOnly API. The 'auth' parameter is a small struct containing
a list of credentials that the calling application knows how to collect,
a function pointer for the callback, and an opaque data blob.
struct _virConnectAuth {
int *credtype; /* List of supported virConnectCredentialType values */
unsigned int ncredtype;
virConnectAuthCallbackPtr cb; /* Callback used to collect credentials */
void *cbdata;
};
At the very least apps should support the VIR_CRED_AUTHNAME and the
VIR_CRED_PASSPHRASE credential types for collecting username+password
respectively. There are a bunch of other credential type, but they're
for fairly niche use cases.
When the callback is invoked, it will be passed a list of virConnectCredentialPtr
structs which contain details on all the credentials that the authentication
mechanism needs to collect. They are passed all at once to make it easy to
construct a big form in UI:
typedef int (*virConnectAuthCallbackPtr)(virConnectCredentialPtr cred,
unsigned int ncred,
void *cbdata);
The virConnectCredentialPtr struct contains a prompt which can be displayed
in the UI. There may optionally be a challenge if doing a challenge/response
type authentication. There may also be a default result. The application
should collect a credential from the user & fill it into the 'result' field,
or use the default result. If the callback returns 0, authentication will
continue. If it returns -1, it will assume the user wants to cancel the
auth process.
Makefile.am | 2
docs/devhelp/libvirt-libvirt.html | 80 ++++++++++++-
docs/devhelp/libvirt-virterror.html | 3
docs/libvirt-api.xml | 114 +++++++++++++++----
docs/libvirt-refs.xml | 210 ++++++++++++++++++++++++++++++++----
include/libvirt/libvirt.h.in | 72 ++++++++++++
proxy/libvirt_proxy.c | 4
qemud/remote.c | 2
src/driver.h | 10 -
src/internal.h | 5
src/libvirt.c | 40 +++++-
src/openvz_driver.c | 23 +++
src/proxy_internal.c | 9 +
src/qemu_driver.c | 2
src/remote_internal.c | 22 ++-
src/test.c | 2
src/xen_internal.c | 1
src/xen_internal.h | 1
src/xen_unified.c | 4
src/xend_internal.c | 6 -
src/xend_internal.h | 2
src/xm_internal.c | 4
src/xm_internal.h | 2
src/xs_internal.c | 3
src/xs_internal.h | 1
25 files changed, 526 insertions(+), 98 deletions(-)
diff -r ec2d8c632fd9 Makefile.am
--- a/Makefile.am Wed Nov 28 15:00:45 2007 -0500
+++ b/Makefile.am Wed Nov 28 20:35:23 2007 -0500
@@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
-SUBDIRS = src qemud proxy include docs @PYTHON_SUBDIR@ tests po m4 scripts
+SUBDIRS = include src qemud proxy docs @PYTHON_SUBDIR@ tests po m4 scripts
ACLOCAL_AMFLAGS = -I m4
diff -r ec2d8c632fd9 docs/devhelp/libvirt-libvirt.html
--- a/docs/devhelp/libvirt-libvirt.html Wed Nov 28 15:00:45 2007 -0500
+++ b/docs/devhelp/libvirt-libvirt.html Wed Nov 28 20:35:23 2007 -0500
@@ -61,19 +61,26 @@ typedef enum <a href="#virDomainState">v
typedef enum <a href="#virDomainState">virDomainState</a>;
typedef struct _virDomain <a href="#virDomain">virDomain</a>;
typedef <a
href="libvirt-libvirt.html#virDomainInterfaceStatsStruct">virDomainInterfaceStatsStruct</a>
* <a
href="#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a>;
+typedef <a
href="libvirt-libvirt.html#virConnectAuth">virConnectAuth</a> * <a
href="#virConnectAuthPtr">virConnectAuthPtr</a>;
typedef enum <a
href="#virSchedParameterType">virSchedParameterType</a>;
-typedef <a
href="libvirt-libvirt.html#virSchedParameter">virSchedParameter</a> *
<a href="#virSchedParameterPtr">virSchedParameterPtr</a>;
+typedef <a
href="libvirt-libvirt.html#virConnectCredential">virConnectCredential</a>
* <a href="#virConnectCredentialPtr">virConnectCredentialPtr</a>;
typedef <a href="libvirt-libvirt.html#virNodeInfo">virNodeInfo</a>
* <a href="#virNodeInfoPtr">virNodeInfoPtr</a>;
typedef <a href="libvirt-libvirt.html#virNetwork">virNetwork</a> *
<a href="#virNetworkPtr">virNetworkPtr</a>;
typedef <a
href="libvirt-libvirt.html#virDomainInfo">virDomainInfo</a> * <a
href="#virDomainInfoPtr">virDomainInfoPtr</a>;
typedef <a href="libvirt-libvirt.html#virConnect">virConnect</a> *
<a href="#virConnectPtr">virConnectPtr</a>;
typedef struct _virSchedParameter <a
href="#virSchedParameter">virSchedParameter</a>;
+typedef enum <a href="#virConnectFlags">virConnectFlags</a>;
+typedef <a
href="libvirt-libvirt.html#virSchedParameter">virSchedParameter</a> *
<a href="#virSchedParameterPtr">virSchedParameterPtr</a>;
typedef enum <a href="#virVcpuState">virVcpuState</a>;
+typedef struct _virConnectAuth <a
href="#virConnectAuth">virConnectAuth</a>;
+typedef struct _virConnectCredential <a
href="#virConnectCredential">virConnectCredential</a>;
typedef <a href="libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a>
* <a href="#virVcpuInfoPtr">virVcpuInfoPtr</a>;
typedef enum <a href="#virDomainXMLFlags">virDomainXMLFlags</a>;
typedef <a href="libvirt-libvirt.html#virDomain">virDomain</a> *
<a href="#virDomainPtr">virDomainPtr</a>;
+typedef enum <a
href="#virConnectCredentialType">virConnectCredentialType</a>;
typedef enum <a
href="#virDomainCreateFlags">virDomainCreateFlags</a>;
int <a href="#virDomainGetInfo">virDomainGetInfo</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> <a
href="libvirt-libvirt.html#virDomainInfoPtr">virDomainInfoPtr</a>
info);
+int <a href="#virNetworkCreate">virNetworkCreate</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
int <a href="#virNetworkFree">virNetworkFree</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
const char * <a
href="#virNetworkGetName">virNetworkGetName</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
const char * <a
href="#virDomainGetName">virDomainGetName</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
@@ -88,6 +95,7 @@ int <a href="#virInitialize">virInitiali
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a
href="#virDomainLookupByName">virDomainLookupByName</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const char * name);
<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a
href="#virNetworkLookupByUUID">virNetworkLookupByUUID</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const unsigned char * uuid);
char * <a
href="#virNetworkGetBridgeName">virNetworkGetBridgeName</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
+char * <a
href="#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network,
<br/> int flags);
int <a href="#virDomainPinVcpu">virDomainPinVcpu</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> unsigned int vcpu, <br/> unsigned char * cpumap,
<br/> int maplen);
int <a href="#virDomainRestore">virDomainRestore</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const char * from);
const char * <a
href="#virConnectGetType">virConnectGetType</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
@@ -119,21 +127,20 @@ int <a href="#virDomainSetAutostart">vir
int <a
href="#virDomainSetAutostart">virDomainSetAutostart</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> int autostart);
int <a href="#virDomainSuspend">virDomainSuspend</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
int <a
href="#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const char * type);
+int <a
href="#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a
href="#virNetworkGetConnect">virNetworkGetConnect</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> net);
-int <a
href="#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
-<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a
href="#virNetworkCreateXML">virNetworkCreateXML</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const char * xmlDesc);
<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a
href="#virNetworkDefineXML">virNetworkDefineXML</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const char * xml);
-int <a href="#virNetworkCreate">virNetworkCreate</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network);
+<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a
href="#virDomainLookupByID">virDomainLookupByID</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> int id);
int <a
href="#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> <a
href="libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a>
params, <br/> int nparams);
int <a
href="#virNodeGetCellsFreeMemory">virNodeGetCellsFreeMemory</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> unsigned long long * freeMems, <br/> int startCell,
<br/> int maxCells);
int <a href="#virConnectClose">virConnectClose</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
int <a href="#virDomainReboot">virDomainReboot</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> unsigned int flags);
int <a href="#virDomainBlockStats">virDomainBlockStats</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom,
<br/> const char * path, <br/> <a
href="libvirt-libvirt.html#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a>
stats, <br/> size_t size);
int <a href="#virDomainSetVcpus">virDomainSetVcpus</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> unsigned int nvcpus);
-<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a
href="#virDomainLookupByID">virDomainLookupByID</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> int id);
+<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> <a
href="#virConnectOpenAuth">virConnectOpenAuth</a> (const char * name,
<br/> <a
href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a>
auth, <br/> int flags);
int <a
href="#virNetworkGetUUIDString">virNetworkGetUUIDString</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network,
<br/> char * buf);
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a
href="#virDomainMigrate">virDomainMigrate</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> <a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> dconn,
<br/> unsigned long flags, <br/> const char * dname,
<br/> const char * uri, <br/> unsigned long bandwidth);
-char * <a
href="#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a> (<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> network,
<br/> int flags);
+<a
href="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a> <a
href="#virNetworkCreateXML">virNetworkCreateXML</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const char * xmlDesc);
unsigned int <a href="#virDomainGetID">virDomainGetID</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
int <a href="#virDomainResume">virDomainResume</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain);
<a href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> <a
href="#virDomainCreateLinux">virDomainCreateLinux</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> const char * xmlDesc, <br/> unsigned int flags);
@@ -149,6 +156,7 @@ char * <a href="#virDomainGetXMLDesc">vi
char * <a
href="#virDomainGetXMLDesc">virDomainGetXMLDesc</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> int flags);
int <a
href="#virDomainSetMaxMemory">virDomainSetMaxMemory</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> domain,
<br/> unsigned long memory);
int <a
href="#virDomainInterfaceStats">virDomainInterfaceStats</a> (<a
href="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a> dom,
<br/> const char * path, <br/> <a
href="libvirt-libvirt.html#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a>
stats, <br/> size_t size);
+typedef int <a
href="#virConnectAuthCallbackPtr">virConnectAuthCallbackPtr</a> (<a
href="libvirt-libvirt.html#virConnectCredentialPtr">virConnectCredentialPtr</a>
cred, <br/> unsigned int ncred, <br/> void * cbdata);
int <a
href="#virConnectGetVersion">virConnectGetVersion</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> unsigned long * hvVer);
int <a
href="#virConnectListNetworks">virConnectListNetworks</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn,
<br/> char ** const names, <br/> int maxnames);
char * <a href="#virConnectGetURI">virConnectGetURI</a> (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn);
@@ -212,6 +220,54 @@ The content of this structure is not mad
</pre><p/>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectAuth">Structure </a>virConnectAuth</h3><pre
class="programlisting">struct _virConnectAuth {
+ int * credtype : List of supported <a
href="libvirt-libvirt.html#virConnectCredentialType">virConnectCredentialType</a>
values
+ unsigned int ncredtype
+ <a
href="libvirt-libvirt.html#virConnectAuthCallbackPtr">virConnectAuthCallbackPtr</a> cb :
Callback used to collect credentials
+ void * cbdata
+} virConnectAuth;
+</pre><p/>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectAuthPtr">Typedef
</a>virConnectAuthPtr</h3><pre class="programlisting"><a
href="libvirt-libvirt.html#virConnectAuth">virConnectAuth</a> *
virConnectAuthPtr;
+</pre><p/>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectCredential">Structure
</a>virConnectCredential</h3><pre
class="programlisting">struct _virConnectCredential {
+ int type : One of <a
href="libvirt-libvirt.html#virConnectCredentialType">virConnectCredentialType</a>
constants
+ const char * prompt : Prompt to show to user
+ const char * challenge : Additional challenge to show
+ const char * defresult : Optional default result
+ char * result : Result to be filled with user response (or defresult)
+ unsigned int resultlen : Length of the result
+} virConnectCredential;
+</pre><p/>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectCredentialPtr">Typedef
</a>virConnectCredentialPtr</h3><pre
class="programlisting"><a
href="libvirt-libvirt.html#virConnectCredential">virConnectCredential</a>
* virConnectCredentialPtr;
+</pre><p/>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectCredentialType">Enum
</a>virConnectCredentialType</h3><pre
class="programlisting">enum <a
href="#virConnectCredentialType">virConnectCredentialType</a> {
+ <a name="VIR_CRED_USERNAME">VIR_CRED_USERNAME</a> = 1 /*
Identity to act as */
+ <a name="VIR_CRED_AUTHNAME">VIR_CRED_AUTHNAME</a> = 2 /*
Identify to authorize as */
+ <a name="VIR_CRED_LANGUAGE">VIR_CRED_LANGUAGE</a> = 3 /* RFC
1766 languages, comma separated */
+ <a name="VIR_CRED_CNONCE">VIR_CRED_CNONCE</a> = 4 /* client
supplies a nonce */
+ <a name="VIR_CRED_PASSPHRASE">VIR_CRED_PASSPHRASE</a> = 5 /*
Passphrase secret */
+ <a name="VIR_CRED_ECHOPROMPT">VIR_CRED_ECHOPROMPT</a> = 6 /*
Challenge response */
+ <a name="VIR_CRED_NOECHOPROMPT">VIR_CRED_NOECHOPROMPT</a> = 7
/* Challenge response */
+ <a name="VIR_CRED_REALM">VIR_CRED_REALM</a> = 8 /*
Authentication realm */
+ <a name="VIR_CRED_EXTERNAL">VIR_CRED_EXTERNAL</a> = 9 /*
Externally managed credential More may be added - expect the unexpected */
+};
+</pre><p/>
+</div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectFlags">Enum </a>virConnectFlags</h3><pre
class="programlisting">enum <a
href="#virConnectFlags">virConnectFlags</a> {
+ <a name="VIR_CONNECT_RO">VIR_CONNECT_RO</a> = 1 /* A readonly
connection */
+};
+</pre><p/>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a
name="virConnectPtr">Typedef </a>virConnectPtr</h3><pre
class="programlisting"><a
href="libvirt-libvirt.html#virConnect">virConnect</a> * virConnectPtr;
</pre><p>a <a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> is pointer
to a <a href="libvirt-libvirt.html#virConnect">virConnect</a>
private structure, this is the type used to reference a connection to the Xen Hypervisor
in the API.</p>
</div>
@@ -372,6 +428,14 @@ The content of this structure is not mad
</pre><p/>
</div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectAuthCallbackPtr"/>Function type
virConnectAuthCallbackPtr</h3><pre
class="programlisting">int virConnectAuthCallbackPtr (<a
href="libvirt-libvirt.html#virConnectCredentialPtr">virConnectCredentialPtr</a>
cred, <br/> unsigned int ncred, <br/> void * cbdata)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col
align="left"/><tbody><tr><td><span
class="term"><i><tt>cred</tt></i>:</span></td><td/></tr><tr><td><span
class="term"><i><tt>ncred</tt></i>:</span></td><td/></tr><tr><td><span
class="term"><i><tt>cbdata</tt></i>:</span></td><td/></tr><tr><td><span
class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectAuthPtrDefault">Variable
</a>virConnectAuthPtrDefault</h3><pre
class="programlisting"><a
href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a>
virConnectAuthPtrDefault;
+</pre><p/>
+</div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a
name="virConnectClose"/>virConnectClose ()</h3><pre
class="programlisting">int virConnectClose (<a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a>
conn)<br/>
</pre><p>This function closes the connection to the Hypervisor. This should
not be called if further interaction with the Hypervisor are needed especially if there is
running domain which need further monitoring by the application.</p>
<div class="variablelist"><table border="0"><col
align="left"/><tbody><tr><td><span
class="term"><i><tt>conn</tt></i>:</span></td><td>pointer
to the hypervisor connection</td></tr><tr><td><span
class="term"><i><tt>Returns</tt></i>:</span></td><td>0
in case of success or -1 in case of
error.</td></tr></tbody></table></div></div>
@@ -435,6 +499,10 @@ The content of this structure is not mad
<div class="refsect2" lang="en"><h3><a
name="virConnectOpen"/>virConnectOpen ()</h3><pre
class="programlisting"><a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpen (const
char * name)<br/>
</pre><p>This function should be called first to get a connection to the
Hypervisor and xen store</p>
<div class="variablelist"><table border="0"><col
align="left"/><tbody><tr><td><span
class="term"><i><tt>name</tt></i>:</span></td><td>URI
of the hypervisor</td></tr><tr><td><span
class="term"><i><tt>Returns</tt></i>:</span></td><td>a
pointer to the hypervisor connection or NULL in case of error URIs are documented at
http://libvirt.org/uri.html</td></tr></tbody></table...
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a
name="virConnectOpenAuth"/>virConnectOpenAuth ()</h3><pre
class="programlisting"><a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenAuth (const
char * name, <br/> <a
href="libvirt-libvirt.html#virConnectAuthPtr">virConnectAuthPtr</a>
auth, <br/> int flags)<br/>
+</pre><p>This function should be called first to get a connection to the
Hypervisor. If neccessary, authentication will be performed fetching credentials via the
callback</p>
+<div class="variablelist"><table border="0"><col
align="left"/><tbody><tr><td><span
class="term"><i><tt>name</tt></i>:</span></td><td>URI
of the hypervisor</td></tr><tr><td><span
class="term"><i><tt>auth</tt></i>:</span></td><td>Authenticate
callback parameters</td></tr><tr><td><span
class="term"><i><tt>flags</tt></i>:</span></td><td>Open
flags</td></tr><tr><td><span
class="term"><i><tt>Returns</tt></i>:</span></td><td>a
pointer to the hypervisor connection or NULL in case of error URIs are documented at
http://libvirt.org/uri.html</td></tr></tbody></table...
<hr/>
<div class="refsect2" lang="en"><h3><a
name="virConnectOpenReadOnly"/>virConnectOpenReadOnly ()</h3><pre
class="programlisting"><a
href="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> virConnectOpenReadOnly (const
char * name)<br/>
</pre><p>This function should be called first to get a restricted connection
to the libbrary functionalities. The set of APIs usable are then restricted on the
available methods to control the domains.</p>
diff -r ec2d8c632fd9 docs/devhelp/libvirt-virterror.html
--- a/docs/devhelp/libvirt-virterror.html Wed Nov 28 15:00:45 2007 -0500
+++ b/docs/devhelp/libvirt-virterror.html Wed Nov 28 20:35:23 2007 -0500
@@ -154,7 +154,8 @@ void <a href="#virConnResetLastError">vi
<a name="VIR_WAR_NO_NETWORK">VIR_WAR_NO_NETWORK</a> = 41 /*
failed to start network */
<a name="VIR_ERR_NO_DOMAIN">VIR_ERR_NO_DOMAIN</a> = 42 /*
domain not found or unexpectedly disappeared */
<a name="VIR_ERR_NO_NETWORK">VIR_ERR_NO_NETWORK</a> = 43 /*
network not found */
- <a name="VIR_ERR_INVALID_MAC">VIR_ERR_INVALID_MAC</a> = 44 /*
invalid MAC adress */
+ <a name="VIR_ERR_INVALID_MAC">VIR_ERR_INVALID_MAC</a> = 44 /*
invalid MAC adress */
+ <a name="VIR_ERR_AUTH_FAILED">VIR_ERR_AUTH_FAILED</a> = 45 /*
authentication failed */
};
</pre><p/>
</div>
diff -r ec2d8c632fd9 docs/libvirt-api.xml
--- a/docs/libvirt-api.xml Wed Nov 28 15:00:45 2007 -0500
+++ b/docs/libvirt-api.xml Wed Nov 28 20:35:23 2007 -0500
@@ -16,26 +16,36 @@
<exports symbol='VIR_UUID_STRING_BUFLEN' type='macro'/>
<exports symbol='VIR_GET_CPUMAP' type='macro'/>
<exports symbol='VIR_UNUSE_CPU' type='macro'/>
+ <exports symbol='VIR_CRED_EXTERNAL' type='enum'/>
+ <exports symbol='VIR_DOMAIN_SHUTDOWN' type='enum'/>
+ <exports symbol='VIR_DOMAIN_SCHED_FIELD_UINT' type='enum'/>
+ <exports symbol='VIR_CRED_CNONCE' type='enum'/>
+ <exports symbol='VIR_CRED_ECHOPROMPT' type='enum'/>
+ <exports symbol='VIR_DOMAIN_SCHED_FIELD_DOUBLE' type='enum'/>
+ <exports symbol='VIR_DOMAIN_SCHED_FIELD_LLONG' type='enum'/>
+ <exports symbol='VIR_CONNECT_RO' type='enum'/>
+ <exports symbol='VIR_CRED_AUTHNAME' type='enum'/>
+ <exports symbol='VIR_CRED_LANGUAGE' type='enum'/>
+ <exports symbol='VIR_CRED_NOECHOPROMPT' type='enum'/>
+ <exports symbol='VIR_DOMAIN_SCHED_FIELD_BOOLEAN'
type='enum'/>
+ <exports symbol='VIR_MIGRATE_LIVE' type='enum'/>
+ <exports symbol='VIR_CRED_USERNAME' type='enum'/>
+ <exports symbol='VIR_VCPU_OFFLINE' type='enum'/>
+ <exports symbol='VIR_DOMAIN_RUNNING' type='enum'/>
+ <exports symbol='VIR_DOMAIN_BLOCKED' type='enum'/>
<exports symbol='VIR_DOMAIN_SHUTOFF' type='enum'/>
- <exports symbol='VIR_DOMAIN_SCHED_FIELD_DOUBLE' type='enum'/>
+ <exports symbol='VIR_VCPU_BLOCKED' type='enum'/>
+ <exports symbol='VIR_DOMAIN_SCHED_FIELD_INT' type='enum'/>
<exports symbol='VIR_DOMAIN_SCHED_FIELD_ULLONG' type='enum'/>
- <exports symbol='VIR_VCPU_OFFLINE' type='enum'/>
+ <exports symbol='VIR_CRED_REALM' type='enum'/>
+ <exports symbol='VIR_VCPU_RUNNING' type='enum'/>
+ <exports symbol='VIR_DOMAIN_PAUSED' type='enum'/>
+ <exports symbol='VIR_DOMAIN_CRASHED' type='enum'/>
<exports symbol='VIR_DOMAIN_XML_INACTIVE' type='enum'/>
- <exports symbol='VIR_DOMAIN_SCHED_FIELD_BOOLEAN'
type='enum'/>
- <exports symbol='VIR_DOMAIN_SCHED_FIELD_UINT' type='enum'/>
- <exports symbol='VIR_MIGRATE_LIVE' type='enum'/>
- <exports symbol='VIR_DOMAIN_SCHED_FIELD_INT' type='enum'/>
- <exports symbol='VIR_VCPU_RUNNING' type='enum'/>
- <exports symbol='VIR_DOMAIN_CRASHED' type='enum'/>
<exports symbol='VIR_DOMAIN_NONE' type='enum'/>
- <exports symbol='VIR_DOMAIN_SHUTDOWN' type='enum'/>
- <exports symbol='VIR_VCPU_BLOCKED' type='enum'/>
<exports symbol='VIR_DOMAIN_NOSTATE' type='enum'/>
- <exports symbol='VIR_DOMAIN_PAUSED' type='enum'/>
- <exports symbol='VIR_DOMAIN_SCHED_FIELD_LLONG' type='enum'/>
- <exports symbol='VIR_DOMAIN_RUNNING' type='enum'/>
+ <exports symbol='VIR_CRED_PASSPHRASE' type='enum'/>
<exports symbol='VIR_DOMAIN_XML_SECURE' type='enum'/>
- <exports symbol='VIR_DOMAIN_BLOCKED' type='enum'/>
<exports symbol='virDomainBlockStatsStruct' type='typedef'/>
<exports symbol='virDomainMigrateFlags' type='typedef'/>
<exports symbol='virNodeInfo' type='typedef'/>
@@ -48,25 +58,35 @@
<exports symbol='virDomainState' type='typedef'/>
<exports symbol='virDomain' type='typedef'/>
<exports symbol='virDomainInterfaceStatsPtr' type='typedef'/>
+ <exports symbol='virConnectAuthPtr' type='typedef'/>
<exports symbol='virSchedParameterType' type='typedef'/>
- <exports symbol='virSchedParameterPtr' type='typedef'/>
+ <exports symbol='virConnectCredentialPtr' type='typedef'/>
<exports symbol='virNodeInfoPtr' type='typedef'/>
<exports symbol='virNetworkPtr' type='typedef'/>
<exports symbol='virDomainInfoPtr' type='typedef'/>
<exports symbol='virConnectPtr' type='typedef'/>
<exports symbol='virSchedParameter' type='typedef'/>
+ <exports symbol='virConnectFlags' type='typedef'/>
+ <exports symbol='virSchedParameterPtr' type='typedef'/>
<exports symbol='virVcpuState' type='typedef'/>
+ <exports symbol='virConnectAuth' type='typedef'/>
+ <exports symbol='virConnectCredential' type='typedef'/>
<exports symbol='virVcpuInfoPtr' type='typedef'/>
<exports symbol='virDomainXMLFlags' type='typedef'/>
<exports symbol='virDomainPtr' type='typedef'/>
+ <exports symbol='virConnectCredentialType' type='typedef'/>
<exports symbol='virDomainCreateFlags' type='typedef'/>
<exports symbol='_virDomainInfo' type='struct'/>
+ <exports symbol='_virConnectAuth' type='struct'/>
+ <exports symbol='_virVcpuInfo' type='struct'/>
<exports symbol='_virDomainInterfaceStats' type='struct'/>
- <exports symbol='_virVcpuInfo' type='struct'/>
- <exports symbol='_virSchedParameter' type='struct'/>
+ <exports symbol='_virConnectCredential' type='struct'/>
<exports symbol='_virDomainBlockStats' type='struct'/>
<exports symbol='_virNodeInfo' type='struct'/>
+ <exports symbol='_virSchedParameter' type='struct'/>
+ <exports symbol='virConnectAuthPtrDefault' type='variable'/>
<exports symbol='virDomainGetInfo' type='function'/>
+ <exports symbol='virNetworkCreate' type='function'/>
<exports symbol='virNetworkFree' type='function'/>
<exports symbol='virNetworkGetName' type='function'/>
<exports symbol='virDomainGetName' type='function'/>
@@ -81,6 +101,7 @@
<exports symbol='virDomainLookupByName' type='function'/>
<exports symbol='virNetworkLookupByUUID' type='function'/>
<exports symbol='virNetworkGetBridgeName' type='function'/>
+ <exports symbol='virNetworkGetXMLDesc' type='function'/>
<exports symbol='virDomainPinVcpu' type='function'/>
<exports symbol='virDomainRestore' type='function'/>
<exports symbol='virConnectGetType' type='function'/>
@@ -112,21 +133,20 @@
<exports symbol='virDomainSetAutostart' type='function'/>
<exports symbol='virDomainSuspend' type='function'/>
<exports symbol='virConnectGetMaxVcpus' type='function'/>
+ <exports symbol='virConnectNumOfDefinedDomains'
type='function'/>
<exports symbol='virNetworkGetConnect' type='function'/>
- <exports symbol='virConnectNumOfDefinedDomains'
type='function'/>
- <exports symbol='virNetworkCreateXML' type='function'/>
<exports symbol='virNetworkDefineXML' type='function'/>
- <exports symbol='virNetworkCreate' type='function'/>
+ <exports symbol='virDomainLookupByID' type='function'/>
<exports symbol='virDomainSetSchedulerParameters'
type='function'/>
<exports symbol='virNodeGetCellsFreeMemory' type='function'/>
<exports symbol='virConnectClose' type='function'/>
<exports symbol='virDomainReboot' type='function'/>
<exports symbol='virDomainBlockStats' type='function'/>
<exports symbol='virDomainSetVcpus' type='function'/>
- <exports symbol='virDomainLookupByID' type='function'/>
+ <exports symbol='virConnectOpenAuth' type='function'/>
<exports symbol='virNetworkGetUUIDString' type='function'/>
<exports symbol='virDomainMigrate' type='function'/>
- <exports symbol='virNetworkGetXMLDesc' type='function'/>
+ <exports symbol='virNetworkCreateXML' type='function'/>
<exports symbol='virDomainGetID' type='function'/>
<exports symbol='virDomainResume' type='function'/>
<exports symbol='virDomainCreateLinux' type='function'/>
@@ -142,6 +162,7 @@
<exports symbol='virDomainGetXMLDesc' type='function'/>
<exports symbol='virDomainSetMaxMemory' type='function'/>
<exports symbol='virDomainInterfaceStats' type='function'/>
+ <exports symbol='virConnectAuthCallbackPtr' type='function'/>
<exports symbol='virConnectGetVersion' type='function'/>
<exports symbol='virConnectListNetworks' type='function'/>
<exports symbol='virConnectGetURI' type='function'/>
@@ -159,6 +180,7 @@
<exports symbol='VIR_ERR_WARNING' type='enum'/>
<exports symbol='VIR_FROM_OPENVZ' type='enum'/>
<exports symbol='VIR_ERR_NO_XEN' type='enum'/>
+ <exports symbol='VIR_FROM_STATS_LINUX' type='enum'/>
<exports symbol='VIR_ERR_INVALID_ARG' type='enum'/>
<exports symbol='VIR_ERR_ERROR' type='enum'/>
<exports symbol='VIR_ERR_NO_OS' type='enum'/>
@@ -176,7 +198,7 @@
<exports symbol='VIR_FROM_QEMU' type='enum'/>
<exports symbol='VIR_FROM_CONF' type='enum'/>
<exports symbol='VIR_ERR_INVALID_NETWORK' type='enum'/>
- <exports symbol='VIR_FROM_STATS_LINUX' type='enum'/>
+ <exports symbol='VIR_ERR_AUTH_FAILED' type='enum'/>
<exports symbol='VIR_ERR_OPERATION_DENIED' type='enum'/>
<exports symbol='VIR_ERR_NO_KERNEL' type='enum'/>
<exports symbol='VIR_ERR_GNUTLS_ERROR' type='enum'/>
@@ -287,6 +309,16 @@
<macro name='VIR_UUID_STRING_BUFLEN' file='libvirt'>
<info>This macro provides the length of the buffer required for
virDomainGetUUIDString()</info>
</macro>
+ <enum name='VIR_CONNECT_RO' file='libvirt' value='1'
type='virConnectFlags' info=' A readonly connection'/>
+ <enum name='VIR_CRED_AUTHNAME' file='libvirt' value='2'
type='virConnectCredentialType' info='Identify to authorize as'/>
+ <enum name='VIR_CRED_CNONCE' file='libvirt' value='4'
type='virConnectCredentialType' info='client supplies a nonce'/>
+ <enum name='VIR_CRED_ECHOPROMPT' file='libvirt' value='6'
type='virConnectCredentialType' info='Challenge response'/>
+ <enum name='VIR_CRED_EXTERNAL' file='libvirt' value='9'
type='virConnectCredentialType' info=' Externally managed credential More may
be added - expect the unexpected'/>
+ <enum name='VIR_CRED_LANGUAGE' file='libvirt' value='3'
type='virConnectCredentialType' info='RFC 1766 languages, comma
separated'/>
+ <enum name='VIR_CRED_NOECHOPROMPT' file='libvirt'
value='7' type='virConnectCredentialType' info='Challenge
response'/>
+ <enum name='VIR_CRED_PASSPHRASE' file='libvirt' value='5'
type='virConnectCredentialType' info='Passphrase secret'/>
+ <enum name='VIR_CRED_REALM' file='libvirt' value='8'
type='virConnectCredentialType' info='Authentication realm'/>
+ <enum name='VIR_CRED_USERNAME' file='libvirt' value='1'
type='virConnectCredentialType' info='Identity to act as'/>
<enum name='VIR_DOMAIN_BLOCKED' file='libvirt' value='2'
type='virDomainState' info='the domain is blocked on resource'/>
<enum name='VIR_DOMAIN_CRASHED' file='libvirt' value='6'
type='virDomainState' info=' the domain is crashed'/>
<enum name='VIR_DOMAIN_NONE' file='libvirt' value='0'
type='virDomainCreateFlags'/>
@@ -303,6 +335,7 @@
<enum name='VIR_DOMAIN_SHUTOFF' file='libvirt' value='5'
type='virDomainState' info='the domain is shut off'/>
<enum name='VIR_DOMAIN_XML_INACTIVE' file='libvirt'
value='2' type='virDomainXMLFlags' info=' dump inactive domain
informations'/>
<enum name='VIR_DOMAIN_XML_SECURE' file='libvirt'
value='1' type='virDomainXMLFlags' info='dump security sensitive
informations too'/>
+ <enum name='VIR_ERR_AUTH_FAILED' file='virterror'
value='45' type='virErrorNumber' info=' authentication
failed'/>
<enum name='VIR_ERR_CALL_FAILED' file='virterror'
value='26' type='virErrorNumber' info='not supported by the drivers
(DEPRECATED)'/>
<enum name='VIR_ERR_CONF_SYNTAX' file='virterror'
value='33' type='virErrorNumber' info='failed to parse the syntax of a
conf file'/>
<enum name='VIR_ERR_DOM_EXIST' file='virterror' value='28'
type='virErrorNumber' info='the domain already exist'/>
@@ -315,7 +348,7 @@
<enum name='VIR_ERR_INVALID_ARG' file='virterror'
value='8' type='virErrorNumber' info='invalid function
argument'/>
<enum name='VIR_ERR_INVALID_CONN' file='virterror'
value='6' type='virErrorNumber' info='invalid connection
object'/>
<enum name='VIR_ERR_INVALID_DOMAIN' file='virterror'
value='7' type='virErrorNumber' info='invalid domain object'/>
- <enum name='VIR_ERR_INVALID_MAC' file='virterror'
value='44' type='virErrorNumber' info=' invalid MAC adress'/>
+ <enum name='VIR_ERR_INVALID_MAC' file='virterror'
value='44' type='virErrorNumber' info='invalid MAC adress'/>
<enum name='VIR_ERR_INVALID_NETWORK' file='virterror'
value='36' type='virErrorNumber' info='invalid network
object'/>
<enum name='VIR_ERR_NETWORK_EXIST' file='virterror'
value='37' type='virErrorNumber' info='the network already
exist'/>
<enum name='VIR_ERR_NONE' file='virterror' value='0'
type='virErrorLevel'/>
@@ -373,6 +406,24 @@
<enum name='VIR_VCPU_RUNNING' file='libvirt' value='1'
type='virVcpuState' info='the virtual CPU is running'/>
<enum name='VIR_WAR_NO_NETWORK' file='virterror'
value='41' type='virErrorNumber' info='failed to start
network'/>
<struct name='virConnect' file='libvirt' type='struct
_virConnect'/>
+ <struct name='virConnectAuth' file='libvirt' type='struct
_virConnectAuth'>
+ <field name='credtype' type='int *' info=' List of supported
virConnectCredentialType values'/>
+ <field name='ncredtype' type='unsigned int'
info=''/>
+ <field name='cb' type='virConnectAuthCallbackPtr' info='
Callback used to collect credentials'/>
+ <field name='cbdata' type='void *' info=''/>
+ </struct>
+ <typedef name='virConnectAuthPtr' file='libvirt'
type='virConnectAuth *'/>
+ <struct name='virConnectCredential' file='libvirt'
type='struct _virConnectCredential'>
+ <field name='type' type='int' info=' One of
virConnectCredentialType constants'/>
+ <field name='prompt' type='const char *' info=' Prompt to
show to user'/>
+ <field name='challenge' type='const char *' info='
Additional challenge to show'/>
+ <field name='defresult' type='const char *' info=' Optional
default result'/>
+ <field name='result' type='char *' info=' Result to be
filled with user response (or defresult)'/>
+ <field name='resultlen' type='unsigned int' info=' Length of
the result'/>
+ </struct>
+ <typedef name='virConnectCredentialPtr' file='libvirt'
type='virConnectCredential *'/>
+ <typedef name='virConnectCredentialType' file='libvirt'
type='enum'/>
+ <typedef name='virConnectFlags' file='libvirt'
type='enum'/>
<typedef name='virConnectPtr' file='libvirt' type='virConnect
*'>
<info>a virConnectPtr is pointer to a virConnect private structure, this is
the type used to reference a connection to the Xen Hypervisor in the API.</info>
</typedef>
@@ -468,6 +519,7 @@
</struct>
<typedef name='virVcpuInfoPtr' file='libvirt'
type='virVcpuInfo *'/>
<typedef name='virVcpuState' file='libvirt'
type='enum'/>
+ <variable name='virConnectAuthPtrDefault' file='libvirt'
type='virConnectAuthPtr'/>
<function name='virConnCopyLastError' file='virterror'
module='virterror'>
<info>Copy the content of the last error caught on that connection One will
need to free the result with virResetError()</info>
<return type='int' info='0 if no error was found and the error code
otherwise and -1 in case of parameter error.'/>
@@ -491,6 +543,13 @@
<arg name='userData' type='void *' info='pointer to the user
data provided in the handler callback'/>
<arg name='handler' type='virErrorFunc' info='the function
to get called in case of error or NULL'/>
</function>
+ <functype name='virConnectAuthCallbackPtr' file='libvirt'
module='libvirt'>
+ <info></info>
+ <return type='int' info=''/>
+ <arg name='cred' type='virConnectCredentialPtr'
info=''/>
+ <arg name='ncred' type='unsigned int' info=''/>
+ <arg name='cbdata' type='void *' info=''/>
+ </functype>
<function name='virConnectClose' file='libvirt'
module='libvirt'>
<info>This function closes the connection to the Hypervisor. This should not
be called if further interaction with the Hypervisor are needed especially if there is
running domain which need further monitoring by the application.</info>
<return type='int' info='0 in case of success or -1 in case of
error.'/>
@@ -580,6 +639,13 @@
<info>This function should be called first to get a connection to the
Hypervisor and xen store</info>
<return type='virConnectPtr' info='a pointer to the hypervisor
connection or NULL in case of error URIs are documented at
http://libvirt.org/uri.html'/>
<arg name='name' type='const char *' info='URI of the
hypervisor'/>
+ </function>
+ <function name='virConnectOpenAuth' file='libvirt'
module='libvirt'>
+ <info>This function should be called first to get a connection to the
Hypervisor. If neccessary, authentication will be performed fetching credentials via the
callback</info>
+ <return type='virConnectPtr' info='a pointer to the hypervisor
connection or NULL in case of error URIs are documented at
http://libvirt.org/uri.html'/>
+ <arg name='name' type='const char *' info='URI of the
hypervisor'/>
+ <arg name='auth' type='virConnectAuthPtr' info='Authenticate
callback parameters'/>
+ <arg name='flags' type='int' info='Open flags'/>
</function>
<function name='virConnectOpenReadOnly' file='libvirt'
module='libvirt'>
<info>This function should be called first to get a restricted connection to
the libbrary functionalities. The set of APIs usable are then restricted on the available
methods to control the domains.</info>
diff -r ec2d8c632fd9 docs/libvirt-refs.xml
--- a/docs/libvirt-refs.xml Wed Nov 28 15:00:45 2007 -0500
+++ b/docs/libvirt-refs.xml Wed Nov 28 20:35:23 2007 -0500
@@ -2,9 +2,19 @@
<apirefs name='libvirt'>
<references>
<reference name='LIBVIR_VERSION_NUMBER'
href='html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER'/>
+ <reference name='VIR_CONNECT_RO'
href='html/libvirt-libvirt.html#VIR_CONNECT_RO'/>
<reference name='VIR_COPY_CPUMAP'
href='html/libvirt-libvirt.html#VIR_COPY_CPUMAP'/>
<reference name='VIR_CPU_MAPLEN'
href='html/libvirt-libvirt.html#VIR_CPU_MAPLEN'/>
<reference name='VIR_CPU_USABLE'
href='html/libvirt-libvirt.html#VIR_CPU_USABLE'/>
+ <reference name='VIR_CRED_AUTHNAME'
href='html/libvirt-libvirt.html#VIR_CRED_AUTHNAME'/>
+ <reference name='VIR_CRED_CNONCE'
href='html/libvirt-libvirt.html#VIR_CRED_CNONCE'/>
+ <reference name='VIR_CRED_ECHOPROMPT'
href='html/libvirt-libvirt.html#VIR_CRED_ECHOPROMPT'/>
+ <reference name='VIR_CRED_EXTERNAL'
href='html/libvirt-libvirt.html#VIR_CRED_EXTERNAL'/>
+ <reference name='VIR_CRED_LANGUAGE'
href='html/libvirt-libvirt.html#VIR_CRED_LANGUAGE'/>
+ <reference name='VIR_CRED_NOECHOPROMPT'
href='html/libvirt-libvirt.html#VIR_CRED_NOECHOPROMPT'/>
+ <reference name='VIR_CRED_PASSPHRASE'
href='html/libvirt-libvirt.html#VIR_CRED_PASSPHRASE'/>
+ <reference name='VIR_CRED_REALM'
href='html/libvirt-libvirt.html#VIR_CRED_REALM'/>
+ <reference name='VIR_CRED_USERNAME'
href='html/libvirt-libvirt.html#VIR_CRED_USERNAME'/>
<reference name='VIR_DOMAIN_BLOCKED'
href='html/libvirt-libvirt.html#VIR_DOMAIN_BLOCKED'/>
<reference name='VIR_DOMAIN_CRASHED'
href='html/libvirt-libvirt.html#VIR_DOMAIN_CRASHED'/>
<reference name='VIR_DOMAIN_NONE'
href='html/libvirt-libvirt.html#VIR_DOMAIN_NONE'/>
@@ -22,6 +32,7 @@
<reference name='VIR_DOMAIN_SHUTOFF'
href='html/libvirt-libvirt.html#VIR_DOMAIN_SHUTOFF'/>
<reference name='VIR_DOMAIN_XML_INACTIVE'
href='html/libvirt-libvirt.html#VIR_DOMAIN_XML_INACTIVE'/>
<reference name='VIR_DOMAIN_XML_SECURE'
href='html/libvirt-libvirt.html#VIR_DOMAIN_XML_SECURE'/>
+ <reference name='VIR_ERR_AUTH_FAILED'
href='html/libvirt-virterror.html#VIR_ERR_AUTH_FAILED'/>
<reference name='VIR_ERR_CALL_FAILED'
href='html/libvirt-virterror.html#VIR_ERR_CALL_FAILED'/>
<reference name='VIR_ERR_CONF_SYNTAX'
href='html/libvirt-virterror.html#VIR_ERR_CONF_SYNTAX'/>
<reference name='VIR_ERR_DOM_EXIST'
href='html/libvirt-virterror.html#VIR_ERR_DOM_EXIST'/>
@@ -97,6 +108,8 @@
<reference name='VIR_VCPU_OFFLINE'
href='html/libvirt-libvirt.html#VIR_VCPU_OFFLINE'/>
<reference name='VIR_VCPU_RUNNING'
href='html/libvirt-libvirt.html#VIR_VCPU_RUNNING'/>
<reference name='VIR_WAR_NO_NETWORK'
href='html/libvirt-virterror.html#VIR_WAR_NO_NETWORK'/>
+ <reference name='_virConnectAuth'
href='html/libvirt-libvirt.html#_virConnectAuth'/>
+ <reference name='_virConnectCredential'
href='html/libvirt-libvirt.html#_virConnectCredential'/>
<reference name='_virDomainBlockStats'
href='html/libvirt-libvirt.html#_virDomainBlockStats'/>
<reference name='_virDomainInfo'
href='html/libvirt-libvirt.html#_virDomainInfo'/>
<reference name='_virDomainInterfaceStats'
href='html/libvirt-libvirt.html#_virDomainInterfaceStats'/>
@@ -109,7 +122,15 @@
<reference name='virConnResetLastError'
href='html/libvirt-virterror.html#virConnResetLastError'/>
<reference name='virConnSetErrorFunc'
href='html/libvirt-virterror.html#virConnSetErrorFunc'/>
<reference name='virConnect'
href='html/libvirt-libvirt.html#virConnect'/>
+ <reference name='virConnectAuth'
href='html/libvirt-libvirt.html#virConnectAuth'/>
+ <reference name='virConnectAuthCallbackPtr'
href='html/libvirt-libvirt.html#virConnectAuthCallbackPtr'/>
+ <reference name='virConnectAuthPtr'
href='html/libvirt-libvirt.html#virConnectAuthPtr'/>
+ <reference name='virConnectAuthPtrDefault'
href='html/libvirt-libvirt.html#virConnectAuthPtrDefault'/>
<reference name='virConnectClose'
href='html/libvirt-libvirt.html#virConnectClose'/>
+ <reference name='virConnectCredential'
href='html/libvirt-libvirt.html#virConnectCredential'/>
+ <reference name='virConnectCredentialPtr'
href='html/libvirt-libvirt.html#virConnectCredentialPtr'/>
+ <reference name='virConnectCredentialType'
href='html/libvirt-libvirt.html#virConnectCredentialType'/>
+ <reference name='virConnectFlags'
href='html/libvirt-libvirt.html#virConnectFlags'/>
<reference name='virConnectGetCapabilities'
href='html/libvirt-libvirt.html#virConnectGetCapabilities'/>
<reference name='virConnectGetHostname'
href='html/libvirt-libvirt.html#virConnectGetHostname'/>
<reference name='virConnectGetMaxVcpus'
href='html/libvirt-libvirt.html#virConnectGetMaxVcpus'/>
@@ -125,6 +146,7 @@
<reference name='virConnectNumOfDomains'
href='html/libvirt-libvirt.html#virConnectNumOfDomains'/>
<reference name='virConnectNumOfNetworks'
href='html/libvirt-libvirt.html#virConnectNumOfNetworks'/>
<reference name='virConnectOpen'
href='html/libvirt-libvirt.html#virConnectOpen'/>
+ <reference name='virConnectOpenAuth'
href='html/libvirt-libvirt.html#virConnectOpenAuth'/>
<reference name='virConnectOpenReadOnly'
href='html/libvirt-libvirt.html#virConnectOpenReadOnly'/>
<reference name='virConnectPtr'
href='html/libvirt-libvirt.html#virConnectPtr'/>
<reference name='virCopyLastError'
href='html/libvirt-virterror.html#virCopyLastError'/>
@@ -231,9 +253,19 @@
<ref name='LIBVIR_VERSION_NUMBER'/>
</letter>
<letter name='V'>
+ <ref name='VIR_CONNECT_RO'/>
<ref name='VIR_COPY_CPUMAP'/>
<ref name='VIR_CPU_MAPLEN'/>
<ref name='VIR_CPU_USABLE'/>
+ <ref name='VIR_CRED_AUTHNAME'/>
+ <ref name='VIR_CRED_CNONCE'/>
+ <ref name='VIR_CRED_ECHOPROMPT'/>
+ <ref name='VIR_CRED_EXTERNAL'/>
+ <ref name='VIR_CRED_LANGUAGE'/>
+ <ref name='VIR_CRED_NOECHOPROMPT'/>
+ <ref name='VIR_CRED_PASSPHRASE'/>
+ <ref name='VIR_CRED_REALM'/>
+ <ref name='VIR_CRED_USERNAME'/>
<ref name='VIR_DOMAIN_BLOCKED'/>
<ref name='VIR_DOMAIN_CRASHED'/>
<ref name='VIR_DOMAIN_NONE'/>
@@ -251,6 +283,7 @@
<ref name='VIR_DOMAIN_SHUTOFF'/>
<ref name='VIR_DOMAIN_XML_INACTIVE'/>
<ref name='VIR_DOMAIN_XML_SECURE'/>
+ <ref name='VIR_ERR_AUTH_FAILED'/>
<ref name='VIR_ERR_CALL_FAILED'/>
<ref name='VIR_ERR_CONF_SYNTAX'/>
<ref name='VIR_ERR_DOM_EXIST'/>
@@ -328,6 +361,8 @@
<ref name='VIR_WAR_NO_NETWORK'/>
</letter>
<letter name='_'>
+ <ref name='_virConnectAuth'/>
+ <ref name='_virConnectCredential'/>
<ref name='_virDomainBlockStats'/>
<ref name='_virDomainInfo'/>
<ref name='_virDomainInterfaceStats'/>
@@ -342,7 +377,15 @@
<ref name='virConnResetLastError'/>
<ref name='virConnSetErrorFunc'/>
<ref name='virConnect'/>
+ <ref name='virConnectAuth'/>
+ <ref name='virConnectAuthCallbackPtr'/>
+ <ref name='virConnectAuthPtr'/>
+ <ref name='virConnectAuthPtrDefault'/>
<ref name='virConnectClose'/>
+ <ref name='virConnectCredential'/>
+ <ref name='virConnectCredentialPtr'/>
+ <ref name='virConnectCredentialType'/>
+ <ref name='virConnectFlags'/>
<ref name='virConnectGetCapabilities'/>
<ref name='virConnectGetHostname'/>
<ref name='virConnectGetMaxVcpus'/>
@@ -358,6 +401,7 @@
<ref name='virConnectNumOfDomains'/>
<ref name='virConnectNumOfNetworks'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virConnectPtr'/>
<ref name='virCopyLastError'/>
@@ -472,6 +516,7 @@
</type>
<type name='virConnectPtr'>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainGetConnect'/>
<ref name='virNetworkGetConnect'/>
@@ -525,6 +570,7 @@
<ref name='virNetworkGetUUID'/>
</type>
<type name='unsigned int'>
+ <ref name='virConnectAuthCallbackPtr'/>
<ref name='virDomainCreateLinux'/>
<ref name='virDomainPinVcpu'/>
<ref name='virDomainReboot'/>
@@ -541,6 +587,12 @@
</type>
<type name='unsigned long long *'>
<ref name='virNodeGetCellsFreeMemory'/>
+ </type>
+ <type name='virConnectAuthPtr'>
+ <ref name='virConnectOpenAuth'/>
+ </type>
+ <type name='virConnectCredentialPtr'>
+ <ref name='virConnectAuthCallbackPtr'/>
</type>
<type name='virConnectPtr'>
<ref name='virConnCopyLastError'/>
@@ -662,6 +714,7 @@
</type>
<type name='void *'>
<ref name='virConnSetErrorFunc'/>
+ <ref name='virConnectAuthCallbackPtr'/>
<ref name='virErrorFunc'/>
<ref name='virSetErrorFunc'/>
</type>
@@ -669,9 +722,19 @@
<files>
<file name='libvirt'>
<ref name='LIBVIR_VERSION_NUMBER'/>
+ <ref name='VIR_CONNECT_RO'/>
<ref name='VIR_COPY_CPUMAP'/>
<ref name='VIR_CPU_MAPLEN'/>
<ref name='VIR_CPU_USABLE'/>
+ <ref name='VIR_CRED_AUTHNAME'/>
+ <ref name='VIR_CRED_CNONCE'/>
+ <ref name='VIR_CRED_ECHOPROMPT'/>
+ <ref name='VIR_CRED_EXTERNAL'/>
+ <ref name='VIR_CRED_LANGUAGE'/>
+ <ref name='VIR_CRED_NOECHOPROMPT'/>
+ <ref name='VIR_CRED_PASSPHRASE'/>
+ <ref name='VIR_CRED_REALM'/>
+ <ref name='VIR_CRED_USERNAME'/>
<ref name='VIR_DOMAIN_BLOCKED'/>
<ref name='VIR_DOMAIN_CRASHED'/>
<ref name='VIR_DOMAIN_NONE'/>
@@ -699,6 +762,8 @@
<ref name='VIR_VCPU_BLOCKED'/>
<ref name='VIR_VCPU_OFFLINE'/>
<ref name='VIR_VCPU_RUNNING'/>
+ <ref name='_virConnectAuth'/>
+ <ref name='_virConnectCredential'/>
<ref name='_virDomainBlockStats'/>
<ref name='_virDomainInfo'/>
<ref name='_virDomainInterfaceStats'/>
@@ -706,7 +771,15 @@
<ref name='_virSchedParameter'/>
<ref name='_virVcpuInfo'/>
<ref name='virConnect'/>
+ <ref name='virConnectAuth'/>
+ <ref name='virConnectAuthCallbackPtr'/>
+ <ref name='virConnectAuthPtr'/>
+ <ref name='virConnectAuthPtrDefault'/>
<ref name='virConnectClose'/>
+ <ref name='virConnectCredential'/>
+ <ref name='virConnectCredentialPtr'/>
+ <ref name='virConnectCredentialType'/>
+ <ref name='virConnectFlags'/>
<ref name='virConnectGetCapabilities'/>
<ref name='virConnectGetHostname'/>
<ref name='virConnectGetMaxVcpus'/>
@@ -722,6 +795,7 @@
<ref name='virConnectNumOfDomains'/>
<ref name='virConnectNumOfNetworks'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virConnectPtr'/>
<ref name='virDomain'/>
@@ -812,6 +886,7 @@
<ref name='virVcpuState'/>
</file>
<file name='virterror'>
+ <ref name='VIR_ERR_AUTH_FAILED'/>
<ref name='VIR_ERR_CALL_FAILED'/>
<ref name='VIR_ERR_CONF_SYNTAX'/>
<ref name='VIR_ERR_DOM_EXIST'/>
@@ -912,11 +987,17 @@
<ref name='VIR_GET_CPUMAP'/>
<ref name='virConnectOpenReadOnly'/>
</word>
+ <word name='Additional'>
+ <ref name='_virConnectCredential'/>
+ </word>
<word name='After'>
<ref name='virDomainSave'/>
</word>
<word name='Attempt'>
<ref name='virDomainMigrate'/>
+ </word>
+ <word name='Authenticate'>
+ <ref name='virConnectOpenAuth'/>
</word>
</letter>
<letter name='B'>
@@ -956,6 +1037,9 @@
<ref name='virDomainPinVcpu'/>
<ref name='virDomainSetVcpus'/>
</word>
+ <word name='Callback'>
+ <ref name='_virConnectAuth'/>
+ </word>
<word name='Change'>
<ref name='virDomainSetSchedulerParameters'/>
</word>
@@ -1058,6 +1142,7 @@
<ref name='virConnectGetType'/>
<ref name='virConnectGetVersion'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
</word>
</letter>
<letter name='I'>
@@ -1085,8 +1170,14 @@
<word name='Launch'>
<ref name='virDomainCreateLinux'/>
</word>
+ <word name='Length'>
+ <ref name='_virConnectCredential'/>
+ </word>
<word name='Linux'>
<ref name='virDomainCreateLinux'/>
+ </word>
+ <word name='List'>
+ <ref name='_virConnectAuth'/>
</word>
</letter>
<letter name='M'>
@@ -1132,12 +1223,22 @@
<ref name='virGetVersion'/>
</word>
<word name='One'>
+ <ref name='_virConnectCredential'/>
<ref name='virConnCopyLastError'/>
<ref name='virCopyLastError'/>
<ref name='virDomainGetVcpus'/>
</word>
+ <word name='Open'>
+ <ref name='virConnectOpenAuth'/>
+ </word>
+ <word name='Optional'>
+ <ref name='_virConnectCredential'/>
+ </word>
</letter>
<letter name='P'>
+ <word name='Prompt'>
+ <ref name='_virConnectCredential'/>
+ </word>
<word name='Provide'>
<ref name='virConnGetLastError'/>
<ref name='virDomainGetXMLDesc'/>
@@ -1179,6 +1280,9 @@
<ref name='virResetError'/>
<ref name='virResetLastError'/>
</word>
+ <word name='Result'>
+ <ref name='_virConnectCredential'/>
+ </word>
<word name='Resume'>
<ref name='virDomainResume'/>
</word>
@@ -1235,11 +1339,13 @@
<word name='URI'>
<ref name='virConnectGetURI'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainMigrate'/>
</word>
<word name='URIs'>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainMigrate'/>
</word>
@@ -1274,6 +1380,8 @@
<ref name='virDomainSuspend'/>
</word>
</letter>
+ </chunk>
+ <chunk name='chunk1'>
<letter name='V'>
<word name='VIR_COPY_CPUMAP'>
<ref name='VIR_COPY_CPUMAP'/>
@@ -1307,8 +1415,6 @@
<ref name='virNetworkGetUUIDString'/>
</word>
</letter>
- </chunk>
- <chunk name='chunk1'>
<letter name='W'>
<word name='WARNING:'>
<ref name='virDomainGetConnect'/>
@@ -1464,6 +1570,7 @@
<ref name='virConnectClose'/>
<ref name='virConnectGetHostname'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainDestroy'/>
<ref name='virDomainMigrate'/>
@@ -1506,6 +1613,9 @@
<word name='attribute'>
<ref name='virConnectGetMaxVcpus'/>
<ref name='virDomainBlockStats'/>
+ </word>
+ <word name='authentication'>
+ <ref name='virConnectOpenAuth'/>
</word>
<word name='automatically'>
<ref name='virDomainGetAutostart'/>
@@ -1633,6 +1743,8 @@
<ref name='virNetworkGetUUIDString'/>
</word>
</letter>
+ </chunk>
+ <chunk name='chunk2'>
<letter name='c'>
<word name='calculate'>
<ref name='VIR_NODEINFO_MAXCPUS'/>
@@ -1654,6 +1766,7 @@
</word>
<word name='callback'>
<ref name='virConnSetErrorFunc'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virErrorFunc'/>
<ref name='virSetErrorFunc'/>
</word>
@@ -1661,6 +1774,7 @@
<ref name='virConnSetErrorFunc'/>
<ref name='virConnectClose'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virSetErrorFunc'/>
</word>
@@ -1729,6 +1843,9 @@
<word name='cells'>
<ref name='virNodeGetCellsFreeMemory'/>
</word>
+ <word name='challenge'>
+ <ref name='_virConnectCredential'/>
+ </word>
<word name='change'>
<ref name='virDomainPinVcpu'/>
<ref name='virDomainSetMaxMemory'/>
@@ -1755,6 +1872,7 @@
<ref name='virGetVersion'/>
</word>
<word name='collect'>
+ <ref name='_virConnectAuth'/>
<ref name='virConnectListDomains'/>
<ref name='virConnectListNetworks'/>
</word>
@@ -1789,6 +1907,9 @@
</word>
<word name='consequent'>
<ref name='_virError'/>
+ </word>
+ <word name='constants'>
+ <ref name='_virConnectCredential'/>
</word>
<word name='content'>
<ref name='virConnCopyLastError'/>
@@ -1846,6 +1967,10 @@
<word name='create'>
<ref name='virNetworkDefineXML'/>
</word>
+ <word name='credentials'>
+ <ref name='_virConnectAuth'/>
+ <ref name='virConnectOpenAuth'/>
+ </word>
<word name='cupmap'>
<ref name='virDomainGetVcpus'/>
</word>
@@ -1856,8 +1981,6 @@
<ref name='virDomainCoreDump'/>
</word>
</letter>
- </chunk>
- <chunk name='chunk2'>
<letter name='d'>
<word name='data'>
<ref name='virConnSetErrorFunc'/>
@@ -1876,6 +1999,7 @@
<ref name='virNetworkGetName'/>
</word>
<word name='default'>
+ <ref name='_virConnectCredential'/>
<ref name='virConnSetErrorFunc'/>
<ref name='virDomainMigrate'/>
<ref name='virSetErrorFunc'/>
@@ -1892,6 +2016,9 @@
</word>
<word name='defining'>
<ref name='virConnectGetCapabilities'/>
+ </word>
+ <word name='defresult'>
+ <ref name='_virConnectCredential'/>
</word>
<word name='described'>
<ref name='virDomainGetVcpus'/>
@@ -1945,6 +2072,7 @@
</word>
<word name='documented'>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
</word>
<word name='does'>
@@ -1984,6 +2112,8 @@
<ref name='virDomainMigrate'/>
</word>
</letter>
+ </chunk>
+ <chunk name='chunk3'>
<letter name='e'>
<word name='each'>
<ref name='virDomainBlockStats'/>
@@ -2053,6 +2183,9 @@
<word name='features'>
<ref name='virDomainMigrate'/>
</word>
+ <word name='fetching'>
+ <ref name='virConnectOpenAuth'/>
+ </word>
<word name='field'>
<ref name='VIR_DOMAIN_SCHED_FIELD_LENGTH'/>
</word>
@@ -2065,6 +2198,7 @@
<ref name='virDomainSave'/>
</word>
<word name='filled'>
+ <ref name='_virConnectCredential'/>
<ref name='virDomainGetSchedulerParameters'/>
<ref name='virDomainGetVcpus'/>
<ref name='virNodeGetCellsFreeMemory'/>
@@ -2078,10 +2212,12 @@
</word>
<word name='first'>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virNodeGetCellsFreeMemory'/>
</word>
<word name='flags'>
+ <ref name='virConnectOpenAuth'/>
<ref name='virDomainCoreDump'/>
<ref name='virDomainMigrate'/>
<ref name='virDomainReboot'/>
@@ -2159,6 +2295,7 @@
<ref name='virConnSetErrorFunc'/>
<ref name='virConnectClose'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainBlockStats'/>
<ref name='virDomainCreateLinux'/>
@@ -2191,6 +2328,7 @@
<word name='get'>
<ref name='virConnSetErrorFunc'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainBlockStats'/>
<ref name='virDomainGetInfo'/>
@@ -2232,8 +2370,6 @@
<ref name='virDomainShutdown'/>
</word>
</letter>
- </chunk>
- <chunk name='chunk3'>
<letter name='h'>
<word name='handler'>
<ref name='virConnSetErrorFunc'/>
@@ -2276,11 +2412,13 @@
<word name='html'>
<ref name='virConnectGetType'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
</word>
<word name='http:'>
<ref name='virConnectGetType'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
</word>
<word name='human-readable'>
@@ -2388,6 +2526,8 @@
<ref name='virNetworkLookupByUUIDString'/>
</word>
</letter>
+ </chunk>
+ <chunk name='chunk4'>
<letter name='j'>
<word name='join'>
<ref name='virNetworkGetBridgeName'/>
@@ -2479,6 +2619,7 @@
</word>
<word name='libvirt'>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainGetConnect'/>
<ref name='virDomainMigrate'/>
@@ -2709,8 +2850,6 @@
<ref name='_virDomainBlockStats'/>
</word>
</letter>
- </chunk>
- <chunk name='chunk4'>
<letter name='n'>
<word name='name'>
<ref name='_virSchedParameter'/>
@@ -2736,6 +2875,9 @@
</word>
<word name='neccessarily'>
<ref name='VIR_NODEINFO_MAXCPUS'/>
+ </word>
+ <word name='neccessary'>
+ <ref name='virConnectOpenAuth'/>
</word>
<word name='need'>
<ref name='virConnCopyLastError'/>
@@ -2789,6 +2931,8 @@
<ref name='virDomainSetSchedulerParameters'/>
</word>
</letter>
+ </chunk>
+ <chunk name='chunk5'>
<letter name='o'>
<word name='objects'>
<ref name='virDomainSetSchedulerParameters'/>
@@ -2839,6 +2983,7 @@
</word>
<word name='org'>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
</word>
<word name='other'>
@@ -2874,6 +3019,7 @@
<ref name='virDomainSetSchedulerParameters'/>
</word>
<word name='parameters'>
+ <ref name='virConnectOpenAuth'/>
<ref name='virDomainGetSchedulerParameters'/>
<ref name='virDomainGetSchedulerType'/>
<ref name='virDomainSetSchedulerParameters'/>
@@ -2908,6 +3054,9 @@
</word>
<word name='perform'>
<ref name='virDomainMigrate'/>
+ </word>
+ <word name='performed'>
+ <ref name='virConnectOpenAuth'/>
</word>
<word name='physical'>
<ref name='VIR_CPU_MAPLEN'/>
@@ -3102,6 +3251,9 @@
<ref name='virDomainSuspend'/>
<ref name='virNetworkDestroy'/>
</word>
+ <word name='response'>
+ <ref name='_virConnectCredential'/>
+ </word>
<word name='restart'>
<ref name='virDomainReboot'/>
</word>
@@ -3116,6 +3268,7 @@
<ref name='virConnectOpenReadOnly'/>
</word>
<word name='result'>
+ <ref name='_virConnectCredential'/>
<ref name='virConnCopyLastError'/>
<ref name='virConnectGetHostname'/>
<ref name='virCopyLastError'/>
@@ -3193,7 +3346,7 @@
</word>
</letter>
</chunk>
- <chunk name='chunk5'>
+ <chunk name='chunk6'>
<letter name='s'>
<word name='same'>
<ref name='virConnectGetURI'/>
@@ -3242,6 +3395,7 @@
<word name='should'>
<ref name='virConnectClose'/>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainBlockStats'/>
<ref name='virDomainDestroy'/>
@@ -3254,6 +3408,9 @@
<ref name='virNetworkDestroy'/>
<ref name='virNetworkFree'/>
<ref name='virNetworkSetAutostart'/>
+ </word>
+ <word name='show'>
+ <ref name='_virConnectCredential'/>
</word>
<word name='shutdown'>
<ref name='virDomainDestroy'/>
@@ -3428,6 +3585,7 @@
</word>
<word name='supported'>
<ref name='VIR_NODEINFO_MAXCPUS'/>
+ <ref name='_virConnectAuth'/>
<ref name='virConnectGetMaxVcpus'/>
<ref name='virDomainGetMaxVcpus'/>
<ref name='virDomainMigrate'/>
@@ -3589,7 +3747,7 @@
</word>
</letter>
</chunk>
- <chunk name='chunk6'>
+ <chunk name='chunk7'>
<letter name='u'>
<word name='undefine'>
<ref name='virDomainUndefine'/>
@@ -3615,6 +3773,7 @@
</word>
<word name='uri'>
<ref name='virConnectOpen'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virConnectOpenReadOnly'/>
<ref name='virDomainMigrate'/>
</word>
@@ -3642,6 +3801,7 @@
<ref name='VIR_GET_CPUMAP'/>
<ref name='VIR_UNUSE_CPU'/>
<ref name='VIR_USE_CPU'/>
+ <ref name='_virConnectAuth'/>
<ref name='_virDomainInfo'/>
<ref name='_virVcpuInfo'/>
<ref name='virConnectGetType'/>
@@ -3658,6 +3818,7 @@
<ref name='virNetworkGetXMLDesc'/>
</word>
<word name='user'>
+ <ref name='_virConnectCredential'/>
<ref name='virConnSetErrorFunc'/>
<ref name='virDomainGetInfo'/>
<ref name='virDomainMigrate'/>
@@ -3686,6 +3847,7 @@
<ref name='virNetworkGetXMLDesc'/>
</word>
<word name='values'>
+ <ref name='_virConnectAuth'/>
<ref name='virDomainGetSchedulerParameters'/>
<ref name='virGetVersion'/>
</word>
@@ -3702,8 +3864,15 @@
<ref name='virConnectGetVersion'/>
<ref name='virGetVersion'/>
</word>
+ <word name='via'>
+ <ref name='virConnectOpenAuth'/>
+ </word>
<word name='virConnCopyLastError'>
<ref name='virConnGetLastError'/>
+ </word>
+ <word name='virConnectCredentialType'>
+ <ref name='_virConnectAuth'/>
+ <ref name='_virConnectCredential'/>
</word>
<word name='virConnectGetCapabilities'>
<ref name='virDomainMigrate'/>
@@ -3882,6 +4051,7 @@
<ref name='virConnCopyLastError'/>
<ref name='virConnSetErrorFunc'/>
<ref name='virConnectGetURI'/>
+ <ref name='virConnectOpenAuth'/>
<ref name='virCopyLastError'/>
<ref name='virDomainCoreDump'/>
<ref name='virDomainGetMaxVcpus'/>
@@ -3903,6 +4073,7 @@
<ref name='VIR_GET_CPUMAP'/>
<ref name='VIR_UNUSE_CPU'/>
<ref name='VIR_USE_CPU'/>
+ <ref name='_virConnectCredential'/>
<ref name='virConnCopyLastError'/>
<ref name='virConnectClose'/>
<ref name='virConnectGetVersion'/>
@@ -3935,7 +4106,7 @@
</word>
</letter>
</chunk>
- <chunk name='chunk7'>
+ <chunk name='chunk8'>
<letter name='x'>
<word name='xen'>
<ref name='virConnectOpen'/>
@@ -3964,14 +4135,15 @@
</letter>
</chunk>
<chunks>
- <chunk name='chunk0' start='A' end='V'/>
- <chunk name='chunk1' start='W' end='c'/>
- <chunk name='chunk2' start='d' end='g'/>
- <chunk name='chunk3' start='h' end='m'/>
- <chunk name='chunk4' start='n' end='r'/>
- <chunk name='chunk5' start='s' end='t'/>
- <chunk name='chunk6' start='u' end='w'/>
- <chunk name='chunk7' start='x' end='z'/>
+ <chunk name='chunk0' start='A' end='U'/>
+ <chunk name='chunk1' start='V' end='b'/>
+ <chunk name='chunk2' start='c' end='d'/>
+ <chunk name='chunk3' start='e' end='i'/>
+ <chunk name='chunk4' start='j' end='n'/>
+ <chunk name='chunk5' start='o' end='r'/>
+ <chunk name='chunk6' start='s' end='t'/>
+ <chunk name='chunk7' start='u' end='w'/>
+ <chunk name='chunk8' start='x' end='z'/>
</chunks>
</index>
</apirefs>
diff -r ec2d8c632fd9 include/libvirt/libvirt.h.in
--- a/include/libvirt/libvirt.h.in Wed Nov 28 15:00:45 2007 -0500
+++ b/include/libvirt/libvirt.h.in Wed Nov 28 20:35:24 2007 -0500
@@ -1,3 +1,4 @@
+
/* -*- c -*-
* libvirt.h:
* Summary: core interfaces for the libvirt library
@@ -275,6 +276,74 @@ typedef virNodeInfo *virNodeInfoPtr;
typedef virNodeInfo *virNodeInfoPtr;
/**
+ * virConnectFlags
+ *
+ * Flags when openning a connection to a hypervisor
+ */
+typedef enum {
+ VIR_CONNECT_RO = 1, /* A readonly connection */
+} virConnectFlags;
+
+
+typedef enum {
+ VIR_CRED_USERNAME = 1, /* Identity to act as */
+ VIR_CRED_AUTHNAME = 2, /* Identify to authorize as */
+ VIR_CRED_LANGUAGE = 3, /* RFC 1766 languages, comma separated */
+ VIR_CRED_CNONCE = 4, /* client supplies a nonce */
+ VIR_CRED_PASSPHRASE = 5, /* Passphrase secret */
+ VIR_CRED_ECHOPROMPT = 6, /* Challenge response */
+ VIR_CRED_NOECHOPROMPT = 7, /* Challenge response */
+ VIR_CRED_REALM = 8, /* Authentication realm */
+ VIR_CRED_EXTERNAL = 9, /* Externally managed credential */
+
+ /* More may be added - expect the unexpected */
+} virConnectCredentialType;
+
+struct _virConnectCredential {
+ int type; /* One of virConnectCredentialType constants */
+ const char *prompt; /* Prompt to show to user */
+ const char *challenge; /* Additional challenge to show */
+ const char *defresult; /* Optional default result */
+ char *result; /* Result to be filled with user response (or defresult) */
+ unsigned int resultlen; /* Length of the result */
+};
+
+typedef struct _virConnectCredential virConnectCredential;
+typedef virConnectCredential *virConnectCredentialPtr;
+
+
+/**
+ * virConnectCredCallbackPtr
+ *
+ * @param authtype type of authentication being performed
+ * @param cred array of credentials to fetch from user
+ * @param ncred size of cred array
+ * @param cbdata opaque data passed to virConnectOpenAuth
+ *
+ * When authentication requires one or more interactions, this callback
+ * is invoked. For each interaction supplied, data must be gathered
+ * from the user and filled in to the 'result' and 'resultlen' fields.
+ * If an interaction can not be filled, fill in NULL and 0.
+ *
+ * Return 0 if all interactions were filled, or -1 upon error
+ */
+typedef int (*virConnectAuthCallbackPtr)(virConnectCredentialPtr cred,
+ unsigned int ncred,
+ void *cbdata);
+
+struct _virConnectAuth {
+ int *credtype; /* List of supported virConnectCredentialType values */
+ unsigned int ncredtype;
+
+ virConnectAuthCallbackPtr cb; /* Callback used to collect credentials */
+ void *cbdata;
+};
+
+
+typedef struct _virConnectAuth virConnectAuth;
+typedef virConnectAuth *virConnectAuthPtr;
+
+/**
* VIR_UUID_BUFLEN:
*
* This macro provides the length of the buffer required
@@ -314,6 +383,9 @@ int virInitialize (void);
virConnectPtr virConnectOpen (const char *name);
virConnectPtr virConnectOpenReadOnly (const char *name);
+virConnectPtr virConnectOpenAuth (const char *name,
+ virConnectAuthPtr auth,
+ int flags);
int virConnectClose (virConnectPtr conn);
const char * virConnectGetType (virConnectPtr conn);
int virConnectGetVersion (virConnectPtr conn,
diff -r ec2d8c632fd9 proxy/libvirt_proxy.c
--- a/proxy/libvirt_proxy.c Wed Nov 28 15:00:45 2007 -0500
+++ b/proxy/libvirt_proxy.c Wed Nov 28 20:35:24 2007 -0500
@@ -77,7 +77,7 @@ proxyInitXen(void) {
priv->xshandle = NULL;
priv->proxy = -1;
- ret = xenHypervisorOpen(conn, NULL, 0);
+ ret = xenHypervisorOpen(conn, NULL, NULL, 0);
if (ret < 0) {
fprintf(stderr, "Failed to open Xen hypervisor\n");
return(-1);
@@ -93,7 +93,7 @@ proxyInitXen(void) {
fprintf(stderr, "Failed to connect to Xen daemon\n");
return(-1);
}
- ret = xenStoreOpen(conn, NULL, VIR_DRV_OPEN_RO);
+ ret = xenStoreOpen(conn, NULL, NULL, VIR_CONNECT_RO);
if (ret < 0) {
fprintf(stderr, "Failed to open XenStore connection");
return (-1);
diff -r ec2d8c632fd9 qemud/remote.c
--- a/qemud/remote.c Wed Nov 28 15:00:45 2007 -0500
+++ b/qemud/remote.c Wed Nov 28 20:35:24 2007 -0500
@@ -2062,7 +2062,7 @@ remoteDispatchAuthList (struct qemud_ser
remote_auth_list_ret *ret)
{
ret->types.types_len = 1;
- if ((ret->types.types_val = calloc (ret->types.types_len, sizeof
(remote_auth_type))) == NULL) {
+ if ((ret->types.types_val = calloc (ret->types.types_len, sizeof (u_int))) ==
NULL) {
remoteDispatchSendError(client, req, VIR_ERR_NO_MEMORY, "auth types");
return -2;
}
diff -r ec2d8c632fd9 src/driver.h
--- a/src/driver.h Wed Nov 28 15:00:45 2007 -0500
+++ b/src/driver.h Wed Nov 28 20:35:24 2007 -0500
@@ -27,11 +27,6 @@ typedef enum {
} virDrvNo;
-typedef enum {
- /* VIR_DRV_OPEN_QUIET = 1 - removed by RWMJ */
- VIR_DRV_OPEN_RO = 2
-} virDrvOpenFlag;
-
/* Status codes returned from driver open call. */
typedef enum {
/* Opened successfully. */
@@ -76,8 +71,9 @@ typedef enum {
typedef virDrvOpenStatus
(*virDrvOpen) (virConnectPtr conn,
- xmlURIPtr uri,
- int flags);
+ xmlURIPtr uri,
+ virConnectAuthPtr auth,
+ int flags);
typedef int
(*virDrvClose) (virConnectPtr conn);
typedef int
diff -r ec2d8c632fd9 src/internal.h
--- a/src/internal.h Wed Nov 28 15:00:45 2007 -0500
+++ b/src/internal.h Wed Nov 28 20:35:24 2007 -0500
@@ -129,11 +129,6 @@ extern "C" {
*/
#define MAX_DRIVERS 10
#define MIN_XEN_GUEST_SIZE 64 /* 64 megabytes */
-
-/*
- * Flags for Xen connections
- */
-#define VIR_CONNECT_RO 1
/**
* _virConnect:
diff -r ec2d8c632fd9 src/libvirt.c
--- a/src/libvirt.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/libvirt.c Wed Nov 28 20:35:24 2007 -0500
@@ -395,7 +395,9 @@ virGetVersion(unsigned long *libVer, con
}
static virConnectPtr
-do_open (const char *name, int flags)
+do_open (const char *name,
+ virConnectAuthPtr auth,
+ int flags)
{
int i, res;
virConnectPtr ret = NULL;
@@ -458,7 +460,7 @@ do_open (const char *name, int flags)
fprintf (stderr, "libvirt: do_open: trying driver %d (%s) ...\n",
i, virDriverTab[i]->name);
#endif
- res = virDriverTab[i]->open (ret, uri, flags);
+ res = virDriverTab[i]->open (ret, uri, auth, flags);
#ifdef ENABLE_DEBUG
fprintf (stderr, "libvirt: do_open: driver %d %s returned %s\n",
i, virDriverTab[i]->name,
@@ -480,7 +482,7 @@ do_open (const char *name, int flags)
}
for (i = 0; i < virNetworkDriverTabCount; i++) {
- res = virNetworkDriverTab[i]->open (ret, uri, flags);
+ res = virNetworkDriverTab[i]->open (ret, uri, auth, flags);
#ifdef ENABLE_DEBUG
fprintf (stderr, "libvirt: do_open: network driver %d %s returned
%s\n",
i, virNetworkDriverTab[i]->name,
@@ -500,9 +502,8 @@ do_open (const char *name, int flags)
}
}
- if (flags & VIR_DRV_OPEN_RO) {
- ret->flags = VIR_CONNECT_RO;
- }
+ /* Cleansing flags */
+ ret->flags = flags & VIR_CONNECT_RO;
xmlFreeURI (uri);
@@ -531,7 +532,7 @@ virConnectOpen (const char *name)
virConnectOpen (const char *name)
{
DEBUG("name=%s", name);
- return do_open (name, 0);
+ return do_open (name, NULL, 0);
}
/**
@@ -550,7 +551,30 @@ virConnectOpenReadOnly(const char *name)
virConnectOpenReadOnly(const char *name)
{
DEBUG("name=%s", name);
- return do_open (name, VIR_DRV_OPEN_RO);
+ return do_open (name, NULL, VIR_CONNECT_RO);
+}
+
+/**
+ * virConnectOpenAuth:
+ * @name: URI of the hypervisor
+ * @auth: Authenticate callback parameters
+ * @flags: Open flags
+ *
+ * This function should be called first to get a connection to the
+ * Hypervisor. If neccessary, authentication will be performed fetching
+ * credentials via the callback
+ *
+ * Returns a pointer to the hypervisor connection or NULL in case of error
+ *
+ * URIs are documented at
http://libvirt.org/uri.html
+ */
+virConnectPtr
+virConnectOpenAuth(const char *name,
+ virConnectAuthPtr auth,
+ int flags)
+{
+ DEBUG("name=%s", name);
+ return do_open (name, auth, flags);
}
/**
diff -r ec2d8c632fd9 src/openvz_driver.c
--- a/src/openvz_driver.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/openvz_driver.c Wed Nov 28 20:35:24 2007 -0500
@@ -89,7 +89,12 @@ static int openvzActive(void);
static int openvzActive(void);
static int openvzCloseNetwork(virConnectPtr conn);
static virDrvOpenStatus openvzOpenNetwork(virConnectPtr conn,
- const char *name ATTRIBUTE_UNUSED, int flags ATTRIBUTE_UNUSED);
+ const char *name ATTRIBUTE_UNUSED,
+ int *credtype ATTRIBUTE_UNUSED,
+ int ncredtype ATTRIBUTE_UNUSED,
+ virConnectAuthCallbackPtr cb ATTRIBUTE_UNUSED,
+ void *cbdata ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED);
static virDomainPtr openvzDomainDefineXML(virConnectPtr conn, const char *xml);
static virDomainPtr openvzDomainCreateLinux(virConnectPtr conn, const char *xml,
@@ -551,8 +556,12 @@ bail_out5:
}
static virDrvOpenStatus openvzOpen(virConnectPtr conn,
- const char *name,
- int flags ATTRIBUTE_UNUSED) {
+ const char *name,
+ int *credtype ATTRIBUTE_UNUSED,
+ int ncredtype ATTRIBUTE_UNUSED,
+ virConnectAuthCallbackPtr cb ATTRIBUTE_UNUSED,
+ void *cbdata ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED) {
struct openvz_vm *vms;
/* Just check if the guy is root. Nothing really to open for OpenVZ */
@@ -693,8 +702,12 @@ static int openvzCloseNetwork(virConnect
}
static virDrvOpenStatus openvzOpenNetwork(virConnectPtr conn ATTRIBUTE_UNUSED,
- const char *name ATTRIBUTE_UNUSED,
- int flags ATTRIBUTE_UNUSED) {
+ const char *name ATTRIBUTE_UNUSED,
+ int *credtype ATTRIBUTE_UNUSED,
+ int ncredtype ATTRIBUTE_UNUSED,
+ virConnectAuthCallbackPtr cb ATTRIBUTE_UNUSED,
+ void *cbdata ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED) {
return VIR_DRV_OPEN_SUCCESS;
}
diff -r ec2d8c632fd9 src/proxy_internal.c
--- a/src/proxy_internal.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/proxy_internal.c Wed Nov 28 20:35:24 2007 -0500
@@ -29,7 +29,7 @@ static int debug = 0;
static int debug = 0;
static int xenProxyClose(virConnectPtr conn);
-static int xenProxyOpen(virConnectPtr conn, xmlURIPtr uri, int flags);
+static int xenProxyOpen(virConnectPtr conn, xmlURIPtr uri, virConnectAuthPtr auth, int
flags);
static int xenProxyGetVersion(virConnectPtr conn, unsigned long *hvVer);
static int xenProxyNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info);
static char *xenProxyGetCapabilities(virConnectPtr conn);
@@ -521,14 +521,17 @@ retry:
* Returns 0 in case of success, and -1 in case of failure
*/
int
-xenProxyOpen(virConnectPtr conn, xmlURIPtr uri ATTRIBUTE_UNUSED, int flags)
+xenProxyOpen(virConnectPtr conn,
+ xmlURIPtr uri ATTRIBUTE_UNUSED,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+ int flags)
{
virProxyPacket req;
int ret;
int fd;
xenUnifiedPrivatePtr priv;
- if (!(flags & VIR_DRV_OPEN_RO))
+ if (!(flags & VIR_CONNECT_RO))
return(-1);
priv = (xenUnifiedPrivatePtr) conn->privateData;
diff -r ec2d8c632fd9 src/qemu_driver.c
--- a/src/qemu_driver.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/qemu_driver.c Wed Nov 28 20:35:24 2007 -0500
@@ -1387,6 +1387,7 @@ static int qemudMonitorCommand(struct qe
static virDrvOpenStatus qemudOpen(virConnectPtr conn,
xmlURIPtr uri,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED) {
uid_t uid = getuid();
@@ -2572,6 +2573,7 @@ static virNetworkPtr qemudNetworkLookupB
static virDrvOpenStatus qemudOpenNetwork(virConnectPtr conn,
xmlURIPtr uri ATTRIBUTE_UNUSED,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED) {
if (!qemu_driver)
return VIR_DRV_OPEN_DECLINED;
diff -r ec2d8c632fd9 src/remote_internal.c
--- a/src/remote_internal.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/remote_internal.c Wed Nov 28 20:35:24 2007 -0500
@@ -286,7 +286,6 @@ remoteForkDaemon(virConnectPtr conn)
}
-/* Must not overlap with virDrvOpenFlags */
enum virDrvOpenRemoteFlags {
VIR_DRV_OPEN_REMOTE_RO = (1 << 0),
VIR_DRV_OPEN_REMOTE_UNIX = (1 << 1),
@@ -295,8 +294,11 @@ enum virDrvOpenRemoteFlags {
};
static int
-doRemoteOpen (virConnectPtr conn, struct private_data *priv,
- xmlURIPtr uri, int flags)
+doRemoteOpen (virConnectPtr conn,
+ struct private_data *priv,
+ xmlURIPtr uri,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+ int flags)
{
if (!uri || !uri->scheme)
return VIR_DRV_OPEN_DECLINED; /* Decline - not a URL. */
@@ -779,7 +781,10 @@ doRemoteOpen (virConnectPtr conn, struct
}
static int
-remoteOpen (virConnectPtr conn, xmlURIPtr uri, int flags)
+remoteOpen (virConnectPtr conn,
+ xmlURIPtr uri,
+ virConnectAuthPtr auth,
+ int flags)
{
struct private_data *priv;
int ret, rflags = 0;
@@ -793,7 +798,7 @@ remoteOpen (virConnectPtr conn, xmlURIPt
return VIR_DRV_OPEN_ERROR;
}
- if (flags & VIR_DRV_OPEN_RO)
+ if (flags & VIR_CONNECT_RO)
rflags |= VIR_DRV_OPEN_REMOTE_RO;
if (uri &&
@@ -814,7 +819,7 @@ remoteOpen (virConnectPtr conn, xmlURIPt
memset(priv, 0, sizeof(struct private_data));
priv->magic = DEAD;
priv->sock = -1;
- ret = doRemoteOpen(conn, priv, uri, rflags);
+ ret = doRemoteOpen(conn, priv, uri, auth, rflags);
if (ret != VIR_DRV_OPEN_SUCCESS) {
conn->privateData = NULL;
free(priv);
@@ -2442,6 +2447,7 @@ static int
static int
remoteNetworkOpen (virConnectPtr conn,
xmlURIPtr uri,
+ virConnectAuthPtr auth,
int flags)
{
if (inside_daemon)
@@ -2468,14 +2474,14 @@ remoteNetworkOpen (virConnectPtr conn,
error (conn, VIR_ERR_NO_MEMORY, "struct private_data");
return VIR_DRV_OPEN_ERROR;
}
- if (flags & VIR_DRV_OPEN_RO)
+ if (flags & VIR_CONNECT_RO)
rflags |= VIR_DRV_OPEN_REMOTE_RO;
rflags |= VIR_DRV_OPEN_REMOTE_UNIX;
memset(priv, 0, sizeof(struct private_data));
priv->magic = DEAD;
priv->sock = -1;
- ret = doRemoteOpen(conn, priv, uri, rflags);
+ ret = doRemoteOpen(conn, priv, uri, auth, rflags);
if (ret != VIR_DRV_OPEN_SUCCESS) {
conn->networkPrivateData = NULL;
free(priv);
diff -r ec2d8c632fd9 src/test.c
--- a/src/test.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/test.c Wed Nov 28 20:35:24 2007 -0500
@@ -882,6 +882,7 @@ static int getNetworkIndex(virNetworkPtr
static int testOpen(virConnectPtr conn,
xmlURIPtr uri,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED)
{
int ret;
@@ -1644,6 +1645,7 @@ static int testDomainSetSchedulerParams(
static virDrvOpenStatus testOpenNetwork(virConnectPtr conn,
xmlURIPtr uri ATTRIBUTE_UNUSED,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED) {
if (STRNEQ(conn->driver->name, "Test"))
return VIR_DRV_OPEN_DECLINED;
diff -r ec2d8c632fd9 src/xen_internal.c
--- a/src/xen_internal.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xen_internal.c Wed Nov 28 20:35:24 2007 -0500
@@ -2060,6 +2060,7 @@ int
int
xenHypervisorOpen(virConnectPtr conn,
xmlURIPtr uri ATTRIBUTE_UNUSED,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED)
{
int ret;
diff -r ec2d8c632fd9 src/xen_internal.h
--- a/src/xen_internal.h Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xen_internal.h Wed Nov 28 20:35:24 2007 -0500
@@ -31,6 +31,7 @@ char *
int xenHypervisorOpen (virConnectPtr conn,
xmlURIPtr uri,
+ virConnectAuthPtr auth,
int flags);
int xenHypervisorClose (virConnectPtr conn);
int xenHypervisorGetVersion (virConnectPtr conn,
diff -r ec2d8c632fd9 src/xen_unified.c
--- a/src/xen_unified.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xen_unified.c Wed Nov 28 20:35:24 2007 -0500
@@ -217,7 +217,7 @@ done:
*/
static int
-xenUnifiedOpen (virConnectPtr conn, xmlURIPtr uri, int flags)
+xenUnifiedOpen (virConnectPtr conn, xmlURIPtr uri, virConnectAuthPtr auth, int flags)
{
int i, j;
xenUnifiedPrivatePtr priv;
@@ -272,7 +272,7 @@ xenUnifiedOpen (virConnectPtr conn, xmlU
#ifdef ENABLE_DEBUG
fprintf (stderr, "libvirt: xenUnifiedOpen: trying Xen sub-driver
%d\n", i);
#endif
- if (drivers[i]->open (conn, uri, flags) == VIR_DRV_OPEN_SUCCESS)
+ if (drivers[i]->open (conn, uri, auth, flags) == VIR_DRV_OPEN_SUCCESS)
priv->opened[i] = 1;
#ifdef ENABLE_DEBUG
fprintf (stderr, "libvirt: xenUnifiedOpen: Xen sub-driver %d open
%s\n",
diff -r ec2d8c632fd9 src/xend_internal.c
--- a/src/xend_internal.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xend_internal.c Wed Nov 28 20:35:24 2007 -0500
@@ -237,7 +237,7 @@ do_connect(virConnectPtr xend)
* is rather normal, this should fallback to the proxy (or
* remote) mechanism.
*/
- if ((getuid() == 0) || (xend->flags & VIR_DRV_OPEN_RO)) {
+ if ((getuid() == 0) || (xend->flags & VIR_CONNECT_RO)) {
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
"failed to connect to xend");
}
@@ -2044,7 +2044,9 @@ error:
* Returns 0 in case of success, -1 in case of error.
*/
int
-xenDaemonOpen(virConnectPtr conn, xmlURIPtr uri,
+xenDaemonOpen(virConnectPtr conn,
+ xmlURIPtr uri,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED)
{
int ret;
diff -r ec2d8c632fd9 src/xend_internal.h
--- a/src/xend_internal.h Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xend_internal.h Wed Nov 28 20:35:24 2007 -0500
@@ -183,7 +183,7 @@ char *xenDaemonDomainDumpXMLByName(virCo
char *xend_parse_domain_sexp(virConnectPtr conn, char *root, int xendConfigVersion);
/* refactored ones */
-int xenDaemonOpen(virConnectPtr conn, xmlURIPtr uri, int flags);
+int xenDaemonOpen(virConnectPtr conn, xmlURIPtr uri, virConnectAuthPtr auth, int flags);
int xenDaemonClose(virConnectPtr conn);
int xenDaemonGetVersion(virConnectPtr conn, unsigned long *hvVer);
int xenDaemonNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info);
diff -r ec2d8c632fd9 src/xm_internal.c
--- a/src/xm_internal.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xm_internal.c Wed Nov 28 20:35:24 2007 -0500
@@ -473,7 +473,9 @@ static int xenXMConfigCacheRefresh (virC
*/
int
xenXMOpen (virConnectPtr conn ATTRIBUTE_UNUSED,
- xmlURIPtr uri ATTRIBUTE_UNUSED, int flags ATTRIBUTE_UNUSED)
+ xmlURIPtr uri ATTRIBUTE_UNUSED,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
+ int flags ATTRIBUTE_UNUSED)
{
if (configCache == NULL) {
configCache = virHashCreate(50);
diff -r ec2d8c632fd9 src/xm_internal.h
--- a/src/xm_internal.h Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xm_internal.h Wed Nov 28 20:35:24 2007 -0500
@@ -36,7 +36,7 @@ extern struct xenUnifiedDriver xenXMDriv
extern struct xenUnifiedDriver xenXMDriver;
int xenXMInit (void);
-int xenXMOpen(virConnectPtr conn, xmlURIPtr uri, int flags);
+int xenXMOpen(virConnectPtr conn, xmlURIPtr uri, virConnectAuthPtr auth, int flags);
int xenXMClose(virConnectPtr conn);
const char *xenXMGetType(virConnectPtr conn);
int xenXMDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info);
diff -r ec2d8c632fd9 src/xs_internal.c
--- a/src/xs_internal.c Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xs_internal.c Wed Nov 28 20:35:24 2007 -0500
@@ -327,6 +327,7 @@ int
int
xenStoreOpen(virConnectPtr conn,
xmlURIPtr uri ATTRIBUTE_UNUSED,
+ virConnectAuthPtr auth ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED)
{
xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
@@ -334,7 +335,7 @@ xenStoreOpen(virConnectPtr conn,
#ifdef PROXY
priv->xshandle = xs_daemon_open_readonly();
#else
- if (flags & VIR_DRV_OPEN_RO)
+ if (flags & VIR_CONNECT_RO)
priv->xshandle = xs_daemon_open_readonly();
else
priv->xshandle = xs_daemon_open();
diff -r ec2d8c632fd9 src/xs_internal.h
--- a/src/xs_internal.h Wed Nov 28 15:00:45 2007 -0500
+++ b/src/xs_internal.h Wed Nov 28 20:35:24 2007 -0500
@@ -22,6 +22,7 @@ int xenStoreInit (void);
int xenStoreOpen (virConnectPtr conn,
xmlURIPtr uri,
+ virConnectAuthPtr auth,
int flags);
int xenStoreClose (virConnectPtr conn);
int xenStoreGetDomainInfo (virDomainPtr domain,
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|