--><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"/><linkrel="stylesheet"type="text/css"href="../main.css"/><linkrel="SHORTCUT ICON"href="../32favicon.png"/><title>libvirt: Module virterror from libvirt</title><metaname="description"content="libvirt, virtualization, virtualization API"/></head><body><divid="header"><divid="headerLogo"></div><divid="headerSearch"><formaction="../search.php"enctype="application/x-www-form-urlencoded"method="get"><div><inputid="query"name="query"type="text"size="12"value=""/><inputid="submit"name="submit"type="submit"value="Search"/></div></form></div></div><divid="body"><divid="menu"><ulclass="l0"><li><div><atitle="Front page of the libvirt website"class="inactive"href="../index.html">Home</a></div></li><li><div><atitle="Details of new features and bugs fixed in each release"class="inactive"href="../news.html">News</a></div></li><li><div><atitle="Get the latest source releases, binary builds and get access to the source repository"class="inactive"href="../downloads.html">Downloads</a></div></li><li><div><atitle="Information for users, administrators and developers"class="active"href="../docs.html">Documentation</a><ulclass="l1"><li><div><atitle="Information about deploying and using libvirt"class="inactive"href="../deployment.html">Deployment</a></div></li><li><div><atitle="Overview of the logical subsystems in the libvirt API"class="inactive"href="../intro.html">Architecture</a></div></li><li><div><atitle="Description of the XML formats used in libvirt"class="inactive"href="../format.html">XML format</a></div></li><li><div><atitle="Hypervisor specific driver information"class="inactive"href="../drivers.html">Drivers</a></div></li><li><div><atitle="Reference manual for the C public API"class="active"href="../html/index.html">API reference</a><ulclass="l2"><li><div><atitle="core interfaces for the libvirt library"class="inactive"href="../html/libvirt-libvirt.html">libvirt</a></div></li><li><div><spanclass="active">virterror</span></div></li><li><div><atitle="matrix of API support per hypervisor per release"class="inactive"href="../hvsupport.html">Driver support</a></div></li></ul></div></li><li><div><atitle="Bindings of the libvirt API for other languages"class="inactive"href="../bindings.html">Language bindings</a></div></li></ul></div></li><li><div><atitle="User contributed content"class="inactive"href="http://wiki.libvirt.org">Wiki</a></div></li><li><div><atitle="Frequently asked questions"class="inactive"href="../FAQ.html">FAQ</a></div></li><li><div><atitle="How and where to report bugs and request features"class="inactive"href="../bugs.html">Bug reports</a></div></li><li><div><atitle="How to contact the developers via email and IRC"class="inactive"href="../contact.html">Contact</a></div></li><li><div><atitle="Miscellaneous links of interest related to libvirt"class="inactive"href="../relatedlinks.html">Related Links</a></div></li><li><div><atitle="Overview of all content on the website"class="inactive"href="../sitemap.html">Sitemap</a></div></li></ul></div><divid="content"><h1>Module virterror from libvirt</h1><p>Provides the interfaces of the libvirt library to handle errors raised while using the library. </p><h2>Table of Contents</h2><h3><ahref="#types">Types</a></h3><pre>typedef struct _virError <ahref="#virError">virError</a>
</pre><table><tr><td>int</td><td>code</td><td> : The error code, a <ahref="libvirt-virterror.html#virErrorNumber">virErrorNumber</a></td></tr><tr><td>int</td><td>domain</td><td> : What part of the library raised this error</td></tr><tr><td>char *</td><td>message</td><td> : human-readable informative error message</td></tr><tr><td><ahref="libvirt-virterror.html#virErrorLevel">virErrorLevel</a></td><td>level</td><td> : how consequent is the error</td></tr><tr><td><ahref="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a></td><td>conn</td><td> : connection if available, deprecated see note above</td></tr><tr><td><ahref="libvirt-libvirt.html#virDomainPtr">virDomainPtr</a></td><td>dom</td><td> : domain if available, deprecated see note above</td></tr><tr><td>char *</td><td>str1</td><td> : extra string information</td></tr><tr><td>char *</td><td>str2</td><td> : extra string information</td></tr><tr><td>char *</td><td>str3</td><td> : extra string information</td></tr><tr><td>int</td><td>int1</td><td> : extra number information</td></tr><tr><td>int</td><td>int2</td><td> : extra number information</td></tr><tr><td><ahref="libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a></td><td>net</td><td> : network if available, deprecated see note above</td></tr></table><pre>
</pre><table><tr><td><aname="VIR_FROM_NONE"id="VIR_FROM_NONE">VIR_FROM_NONE</a></td><td> = </td><td>0</td></tr><tr><td><aname="VIR_FROM_XEN"id="VIR_FROM_XEN">VIR_FROM_XEN</a></td><td> = </td><td>1</td><td> : Error at Xen hypervisor layer</td></tr><tr><td><aname="VIR_FROM_XEND"id="VIR_FROM_XEND">VIR_FROM_XEND</a></td><td> = </td><td>2</td><td> : Error at connection with xend daemon</td></tr><tr><td><aname="VIR_FROM_XENSTORE"id="VIR_FROM_XENSTORE">VIR_FROM_XENSTORE</a></td><td> = </td><td>3</td><td> : Error at connection with xen store</td></tr><tr><td><aname="VIR_FROM_SEXPR"id="VIR_FROM_SEXPR">VIR_FROM_SEXPR</a></td><td> = </td><td>4</td><td> : Error in the S-Expression code</td></tr><tr><td><aname="VIR_FROM_XML"id="VIR_FROM_XML">VIR_FROM_XML</a></td><td> = </td><td>5</td><td> : Error in the XML code</td></tr><tr><td><aname="VIR_FROM_DOM"id="VIR_FROM_DOM">VIR_FROM_DOM</a></td><td> = </td><td>6</td><td> : Error when operating on a domain</td></tr><tr><td><aname="VIR_FROM_RPC"id="VIR_FROM_RPC">VIR_FROM_RPC</a></td><td> = </td><td>7</td><td> : Error in the XML-RPC code</td></tr><tr><td><aname="VIR_FROM_PROXY"id="VIR_FROM_PROXY">VIR_FROM_PROXY</a></td><td> = </td><td>8</td><td> : Error in the proxy code</td></tr><tr><td><aname="VIR_FROM_CONF"id="VIR_FROM_CONF">VIR_FROM_CONF</a></td><td> = </td><td>9</td><td> : Error in the configuration file handling</td></tr><tr><td><aname="VIR_FROM_QEMU"id="VIR_FROM_QEMU">VIR_FROM_QEMU</a></td><td> = </td><td>10</td><td> : Error at the QEMU daemon</td></tr><tr><td><aname="VIR_FROM_NET"id="VIR_FROM_NET">VIR_FROM_NET</a></td><td> = </td><td>11</td><td> : Error when operating on a network</td></tr><tr><td><aname="VIR_FROM_TEST"id="VIR_FROM_TEST">VIR_FROM_TEST</a></td><td> = </td><td>12</td><td> : Error from test driver</td></tr><tr><td><aname="VIR_FROM_REMOTE"id="VIR_FROM_REMOTE">VIR_FROM_REMOTE</a></td><td> = </td><td>13</td><td> : Error from remote driver</td></tr><tr><td><aname="VIR_FROM_OPENVZ"id="VIR_FROM_OPENVZ">VIR_FROM_OPENVZ</a></td><td> = </td><td>14</td><td> : Error from OpenVZ driver</td></tr><tr><td><aname="VIR_FROM_XENXM"id="VIR_FROM_XENXM">VIR_FROM_XENXM</a></td><td> = </td><td>15</td><td> : Error at Xen XM layer</td></tr><tr><td><aname="VIR_FROM_STATS_LINUX"id="VIR_FROM_STATS_LINUX">VIR_FROM_STATS_LINUX</a></td><td> = </td><td>16</td><td> : Error in the Linux Stats code</td></tr><tr><td><aname="VIR_FROM_LXC"id="VIR_FROM_LXC">VIR_FROM_LXC</a></td><td> = </td><td>17</td><td> : Error from Linux Container driver</td></tr><tr><td><aname="VIR_FROM_STORAGE"id="VIR_FROM_STORAGE">VIR_FROM_STORAGE</a></td><td> = </td><td>18</td><td> : Error from storage driver</td></tr><tr><td><aname="VIR_FROM_NETWORK"id="VIR_FROM_NETWORK">VIR_FROM_NETWORK</a></td><td> = </td><td>19</td><td> : Error from network config</td></tr><tr><td><aname="VIR_FROM_DOMAIN"id="VIR_FROM_DOMAIN">VIR_FROM_DOMAIN</a></td><td> = </td><td>20</td><td> : Error from domain config</td></tr><tr><td><aname="VIR_FROM_UML"id="VIR_FROM_UML">VIR_FROM_UML</a></td><td> = </td><td>21</td><td> : Error at the UML driver</td></tr><tr><td><aname="VIR_FROM_NODEDEV"id="VIR_FROM_NODEDEV">VIR_FROM_NODEDEV</a></td><td> = </td><td>22</td><td> : Error from node device monitor</td></tr><tr><td><aname="VIR_FROM_XEN_INOTIFY"id="VIR_FROM_XEN_INOTIFY">VIR_FROM_XEN_INOTIFY</a></td><td> = </td><td>23</td><td> : Error from xen inotify layer</td></tr></table><pre>}
</pre><p>Copy the content of the last error caught on that connection One will need to free the result with virResetError()</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><spanclass="term"><i><tt>to</tt></i>:</span></td><td>target to receive the copy</td></tr><tr><td><spanclass="term"><i><tt>Returns</tt></i>:</span></td><td>0 if no error was found and the error code otherwise and -1 in case of parameter error.</td></tr></tbody></table></div><h3><aname="virConnGetLastError"id="virConnGetLastError"><code>virConnGetLastError</code></a></h3><preclass="programlisting"><ahref="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> virConnGetLastError (<ahref="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
</pre><p>Provide a pointer to the last error caught on that connection Simpler but may not be suitable for multithreaded accesses, in which case use virConnCopyLastError()</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><spanclass="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the last error or NULL if none occurred.</td></tr></tbody></table></div><h3><aname="virConnResetLastError"id="virConnResetLastError"><code>virConnResetLastError</code></a></h3><preclass="programlisting">void virConnResetLastError (<ahref="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn)<br/>
</pre><p>Reset the last error caught on that connection</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr></tbody></table></div><h3><aname="virConnSetErrorFunc"id="virConnSetErrorFunc"><code>virConnSetErrorFunc</code></a></h3><preclass="programlisting">void virConnSetErrorFunc (<ahref="libvirt-libvirt.html#virConnectPtr">virConnectPtr</a> conn, <br/> void * userData, <br/><ahref="libvirt-virterror.html#virErrorFunc">virErrorFunc</a> handler)<br/>
</pre><p>Set a connection error handling function, if @handler is NULL it will reset to default which is to pass error back to the global library handler.</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>conn</tt></i>:</span></td><td>pointer to the hypervisor connection</td></tr><tr><td><spanclass="term"><i><tt>userData</tt></i>:</span></td><td>pointer to the user data provided in the handler callback</td></tr><tr><td><spanclass="term"><i><tt>handler</tt></i>:</span></td><td>the function to get called in case of error or NULL</td></tr></tbody></table></div><h3><aname="virCopyLastError"id="virCopyLastError"><code>virCopyLastError</code></a></h3><preclass="programlisting">int virCopyLastError (<ahref="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> to)<br/>
</pre><p>Copy the content of the last error caught at the library level One will need to free the result with virResetError()</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>to</tt></i>:</span></td><td>target to receive the copy</td></tr><tr><td><spanclass="term"><i><tt>Returns</tt></i>:</span></td><td>0 if no error was found and the error code otherwise and -1 in case of parameter error.</td></tr></tbody></table></div><h3><aname="virDefaultErrorFunc"id="virDefaultErrorFunc"><code>virDefaultErrorFunc</code></a></h3><preclass="programlisting">void virDefaultErrorFunc (<ahref="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> err)<br/>
</pre><p>Default routine reporting an error to stderr.</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>err</tt></i>:</span></td><td>pointer to the error.</td></tr></tbody></table></div><h3><aname="virErrorFunc"id="virErrorFunc"><code>virErrorFunc</code></a></h3><preclass="programlisting">typedef void (*virErrorFunc ) (void * userData, <br/><ahref="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> error)
</pre><p>Signature of a function to use when there is an error raised by the library.</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>userData</tt></i>:</span></td><td>user provided data for the error callback</td></tr><tr><td><spanclass="term"><i><tt>error</tt></i>:</span></td><td>the error being raised.</td></tr></tbody></table></div><br/><h3><aname="virGetLastError"id="virGetLastError"><code>virGetLastError</code></a></h3><preclass="programlisting"><ahref="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> virGetLastError (void)<br/>
</pre><p>Provide a pointer to the last error caught at the library level Simpler but may not be suitable for multithreaded accesses, in which case use virCopyLastError()</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>Returns</tt></i>:</span></td><td>a pointer to the last error or NULL if none occurred.</td></tr></tbody></table></div><h3><aname="virResetError"id="virResetError"><code>virResetError</code></a></h3><preclass="programlisting">void virResetError (<ahref="libvirt-virterror.html#virErrorPtr">virErrorPtr</a> err)<br/>
</pre><p>Reset the error being pointed to</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>err</tt></i>:</span></td><td>pointer to the <ahref="libvirt-virterror.html#virError">virError</a> to clean up</td></tr></tbody></table></div><h3><aname="virResetLastError"id="virResetLastError"><code>virResetLastError</code></a></h3><preclass="programlisting">void virResetLastError (void)<br/>
</pre><p>Reset the last error caught at the library level.</p><h3><aname="virSetErrorFunc"id="virSetErrorFunc"><code>virSetErrorFunc</code></a></h3><preclass="programlisting">void virSetErrorFunc (void * userData, <br/><ahref="libvirt-virterror.html#virErrorFunc">virErrorFunc</a> handler)<br/>
</pre><p>Set a library global error handling function, if @handler is NULL, it will reset to default printing on stderr. The error raised there are those for which no handler at the connection level could caught.</p><divclass="variablelist"><tableborder="0"><colalign="left"/><tbody><tr><td><spanclass="term"><i><tt>userData</tt></i>:</span></td><td>pointer to the user data provided in the handler callback</td></tr><tr><td><spanclass="term"><i><tt>handler</tt></i>:</span></td><td>the function to get called in case of error or NULL</td></tr></tbody></table></div></div></div><divid="footer"><pid="sponsor">
Sponsored by:<br/><ahref="http://et.redhat.com/"><imgsrc="../et.png"alt="Project sponsored by Red Hat Emerging Technology"/></a></p></div></body></html>