<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <!-- This file is autogenerated from html/libvirt-virterror.html.in Do not edit this file. Changes will be lost. --> <!-- This page was generated at Wed Nov 29 16:10:36 UTC 2017. --> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <link rel="stylesheet" type="text/css" href="../main.css"/> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/> <link rel="manifest" href="/manifest.json"/> <meta name="theme-color" content="#ffffff"/> <title>libvirt: Module virterror from libvirt</title> <meta name="description" content="libvirt, virtualization, virtualization API"/> <script type="text/javascript"> <!-- function init() { window.addEventListener('scroll', function(e){ var distanceY = window.pageYOffset || document.documentElement.scrollTop, shrinkOn = 94 home = document.getElementById("home"); links = document.getElementById("jumplinks"); search = document.getElementById("search"); body = document.getElementById("body"); if (distanceY > shrinkOn) { if (home.className != "navhide") { body.className = "navhide" home.className = "navhide" links.className = "navhide" search.className = "navhide" } } else { if (home.className == "navhide") { body.className = "" home.className = "" links.className = "" search.className = "" } } }); } window.onload = init(); --> </script> </head> <body> <div id="body"> <div id="content"> <h1>Module virterror from libvirt</h1> <p>Provides the interfaces of the libvirt library to handle errors raised while using the library. Copyright (C) 2006-2016 Red Hat, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> <h2>Table of Contents</h2> <h3> <a href="#types">Types</a> </h3> <pre class="api"><span class="keyword">typedef</span> <span class="type">struct _virError</span> <a href="#virError">virError</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virErrorDomain">virErrorDomain</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virErrorLevel">virErrorLevel</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a href="#virErrorNumber">virErrorNumber</a> <span class="keyword">typedef</span> <span class="type"><a href="libvirt-virterror.html#virError">virError</a> *</span> <a name="virErrorPtr">virErrorPtr</a> </pre> <h3> <a href="#functions">Functions</a> </h3> <pre class="api"><span class="type">int</span> <a href="#virConnCopyLastError">virConnCopyLastError</a> (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/> <span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> to) <span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> <a href="#virConnGetLastError">virConnGetLastError</a> (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn) <span class="type">void</span> <a href="#virConnResetLastError">virConnResetLastError</a> (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn) <span class="type">void</span> <a href="#virConnSetErrorFunc">virConnSetErrorFunc</a> (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <br/> <span class="type">void *</span> userData, <br/> <span class="type"><a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a></span> handler) <span class="type">int</span> <a href="#virCopyLastError">virCopyLastError</a> (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> to) <span class="type">void</span> <a href="#virDefaultErrorFunc">virDefaultErrorFunc</a> (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> err) <span class="keyword">typedef</span> <a href="#virErrorFunc">virErrorFunc</a> <span class="type">void</span> <a href="#virErrorFunc">virErrorFunc</a> (<span class="type">void *</span> userData, <br/> <span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> error) <span class="type">void</span> <a href="#virFreeError">virFreeError</a> (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> err) <span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> <a href="#virGetLastError">virGetLastError</a> (<span class="type">void</span>) <span class="type">const char *</span> <a href="#virGetLastErrorMessage">virGetLastErrorMessage</a> (<span class="type">void</span>) <span class="type">void</span> <a href="#virResetError">virResetError</a> (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> err) <span class="type">void</span> <a href="#virResetLastError">virResetLastError</a> (<span class="type">void</span>) <span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> <a href="#virSaveLastError">virSaveLastError</a> (<span class="type">void</span>) <span class="type">void</span> <a href="#virSetErrorFunc">virSetErrorFunc</a> (<span class="type">void *</span> userData, <br/> <span class="type"><a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a></span> handler) </pre> <h2>Description</h2> <h3> <a name="types">Types</a> </h3> <h3> <a name="virError"> <code>virError</code> </a> </h3> <div class="api"> <pre><span class="keyword">struct </span>virError { </pre> <table> <tr> <td> <span class="type">int</span> </td> <td>code</td> <td> <div class="comment">The error code, a <a href="libvirt-virterror.html#virErrorNumber">virErrorNumber</a></div> </td> </tr> <tr> <td> <span class="type">int</span> </td> <td>domain</td> <td> <div class="comment">What part of the library raised this error</div> </td> </tr> <tr> <td> <span class="type">char *</span> </td> <td>message</td> <td> <div class="comment">human-readable informative error message</div> </td> </tr> <tr> <td> <span class="type"> <a href="libvirt-virterror.html#virErrorLevel">virErrorLevel</a> </span> </td> <td>level</td> <td> <div class="comment">how consequent is the error</div> </td> </tr> <tr> <td> <span class="type"> <a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a> </span> </td> <td>conn</td> <td> <div class="comment">connection if available, deprecated see note above</div> </td> </tr> <tr> <td> <span class="type"> <a href="libvirt-libvirt-domain.html#virDomainPtr">virDomainPtr</a> </span> </td> <td>dom</td> <td> <div class="comment">domain if available, deprecated see note above</div> </td> </tr> <tr> <td> <span class="type">char *</span> </td> <td>str1</td> <td> <div class="comment">extra string information</div> </td> </tr> <tr> <td> <span class="type">char *</span> </td> <td>str2</td> <td> <div class="comment">extra string information</div> </td> </tr> <tr> <td> <span class="type">char *</span> </td> <td>str3</td> <td> <div class="comment">extra string information</div> </td> </tr> <tr> <td> <span class="type">int</span> </td> <td>int1</td> <td> <div class="comment">extra number information</div> </td> </tr> <tr> <td> <span class="type">int</span> </td> <td>int2</td> <td> <div class="comment">extra number information</div> </td> </tr> <tr> <td> <span class="type"> <a href="libvirt-libvirt-network.html#virNetworkPtr">virNetworkPtr</a> </span> </td> <td>net</td> <td> <div class="comment">network if available, deprecated see note above</div> </td> </tr> </table> <pre> } </pre> </div> <h3> <a name="virErrorDomain"> <code>virErrorDomain</code> </a> </h3> <div class="api"> <pre><span class="keyword">enum</span> virErrorDomain { </pre> <table> <tr> <td> <a name="VIR_FROM_NONE">VIR_FROM_NONE</a> </td> <td> = </td> <td colspan="2">0</td> </tr> <tr> <td> <a name="VIR_FROM_XEN">VIR_FROM_XEN</a> </td> <td> = </td> <td>1</td> <td> <div class="comment">Error at Xen hypervisor layer</div> </td> </tr> <tr> <td> <a name="VIR_FROM_XEND">VIR_FROM_XEND</a> </td> <td> = </td> <td>2</td> <td> <div class="comment">Error at connection with xend daemon</div> </td> </tr> <tr> <td> <a name="VIR_FROM_XENSTORE">VIR_FROM_XENSTORE</a> </td> <td> = </td> <td>3</td> <td> <div class="comment">Error at connection with xen store</div> </td> </tr> <tr> <td> <a name="VIR_FROM_SEXPR">VIR_FROM_SEXPR</a> </td> <td> = </td> <td>4</td> <td> <div class="comment">Error in the S-Expression code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_XML">VIR_FROM_XML</a> </td> <td> = </td> <td>5</td> <td> <div class="comment">Error in the XML code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_DOM">VIR_FROM_DOM</a> </td> <td> = </td> <td>6</td> <td> <div class="comment">Error when operating on a domain</div> </td> </tr> <tr> <td> <a name="VIR_FROM_RPC">VIR_FROM_RPC</a> </td> <td> = </td> <td>7</td> <td> <div class="comment">Error in the XML-RPC code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_PROXY">VIR_FROM_PROXY</a> </td> <td> = </td> <td>8</td> <td> <div class="comment">Error in the proxy code; unused since 0.8.6</div> </td> </tr> <tr> <td> <a name="VIR_FROM_CONF">VIR_FROM_CONF</a> </td> <td> = </td> <td>9</td> <td> <div class="comment">Error in the configuration file handling</div> </td> </tr> <tr> <td> <a name="VIR_FROM_QEMU">VIR_FROM_QEMU</a> </td> <td> = </td> <td>10</td> <td> <div class="comment">Error at the QEMU daemon</div> </td> </tr> <tr> <td> <a name="VIR_FROM_NET">VIR_FROM_NET</a> </td> <td> = </td> <td>11</td> <td> <div class="comment">Error when operating on a network</div> </td> </tr> <tr> <td> <a name="VIR_FROM_TEST">VIR_FROM_TEST</a> </td> <td> = </td> <td>12</td> <td> <div class="comment">Error from test driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_REMOTE">VIR_FROM_REMOTE</a> </td> <td> = </td> <td>13</td> <td> <div class="comment">Error from remote driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_OPENVZ">VIR_FROM_OPENVZ</a> </td> <td> = </td> <td>14</td> <td> <div class="comment">Error from OpenVZ driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_XENXM">VIR_FROM_XENXM</a> </td> <td> = </td> <td>15</td> <td> <div class="comment">Error at Xen XM layer</div> </td> </tr> <tr> <td> <a name="VIR_FROM_STATS_LINUX">VIR_FROM_STATS_LINUX</a> </td> <td> = </td> <td>16</td> <td> <div class="comment">Error in the Linux Stats code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_LXC">VIR_FROM_LXC</a> </td> <td> = </td> <td>17</td> <td> <div class="comment">Error from Linux Container driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_STORAGE">VIR_FROM_STORAGE</a> </td> <td> = </td> <td>18</td> <td> <div class="comment">Error from storage driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_NETWORK">VIR_FROM_NETWORK</a> </td> <td> = </td> <td>19</td> <td> <div class="comment">Error from network config</div> </td> </tr> <tr> <td> <a name="VIR_FROM_DOMAIN">VIR_FROM_DOMAIN</a> </td> <td> = </td> <td>20</td> <td> <div class="comment">Error from domain config</div> </td> </tr> <tr> <td> <a name="VIR_FROM_UML">VIR_FROM_UML</a> </td> <td> = </td> <td>21</td> <td> <div class="comment">Error at the UML driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_NODEDEV">VIR_FROM_NODEDEV</a> </td> <td> = </td> <td>22</td> <td> <div class="comment">Error from node device monitor</div> </td> </tr> <tr> <td> <a name="VIR_FROM_XEN_INOTIFY">VIR_FROM_XEN_INOTIFY</a> </td> <td> = </td> <td>23</td> <td> <div class="comment">Error from xen inotify layer</div> </td> </tr> <tr> <td> <a name="VIR_FROM_SECURITY">VIR_FROM_SECURITY</a> </td> <td> = </td> <td>24</td> <td> <div class="comment">Error from security framework</div> </td> </tr> <tr> <td> <a name="VIR_FROM_VBOX">VIR_FROM_VBOX</a> </td> <td> = </td> <td>25</td> <td> <div class="comment">Error from VirtualBox driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_INTERFACE">VIR_FROM_INTERFACE</a> </td> <td> = </td> <td>26</td> <td> <div class="comment">Error when operating on an interface</div> </td> </tr> <tr> <td> <a name="VIR_FROM_ONE">VIR_FROM_ONE</a> </td> <td> = </td> <td>27</td> <td> <div class="comment">The OpenNebula driver no longer exists. Retained for ABI/API compat only</div> </td> </tr> <tr> <td> <a name="VIR_FROM_ESX">VIR_FROM_ESX</a> </td> <td> = </td> <td>28</td> <td> <div class="comment">Error from ESX driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_PHYP">VIR_FROM_PHYP</a> </td> <td> = </td> <td>29</td> <td> <div class="comment">Error from IBM power hypervisor</div> </td> </tr> <tr> <td> <a name="VIR_FROM_SECRET">VIR_FROM_SECRET</a> </td> <td> = </td> <td>30</td> <td> <div class="comment">Error from secret storage</div> </td> </tr> <tr> <td> <a name="VIR_FROM_CPU">VIR_FROM_CPU</a> </td> <td> = </td> <td>31</td> <td> <div class="comment">Error from CPU driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_XENAPI">VIR_FROM_XENAPI</a> </td> <td> = </td> <td>32</td> <td> <div class="comment">Error from XenAPI</div> </td> </tr> <tr> <td> <a name="VIR_FROM_NWFILTER">VIR_FROM_NWFILTER</a> </td> <td> = </td> <td>33</td> <td> <div class="comment">Error from network filter driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_HOOK">VIR_FROM_HOOK</a> </td> <td> = </td> <td>34</td> <td> <div class="comment">Error from Synchronous hooks</div> </td> </tr> <tr> <td> <a name="VIR_FROM_DOMAIN_SNAPSHOT">VIR_FROM_DOMAIN_SNAPSHOT</a> </td> <td> = </td> <td>35</td> <td> <div class="comment">Error from domain snapshot</div> </td> </tr> <tr> <td> <a name="VIR_FROM_AUDIT">VIR_FROM_AUDIT</a> </td> <td> = </td> <td>36</td> <td> <div class="comment">Error from auditing subsystem</div> </td> </tr> <tr> <td> <a name="VIR_FROM_SYSINFO">VIR_FROM_SYSINFO</a> </td> <td> = </td> <td>37</td> <td> <div class="comment">Error from sysinfo/SMBIOS</div> </td> </tr> <tr> <td> <a name="VIR_FROM_STREAMS">VIR_FROM_STREAMS</a> </td> <td> = </td> <td>38</td> <td> <div class="comment">Error from I/O streams</div> </td> </tr> <tr> <td> <a name="VIR_FROM_VMWARE">VIR_FROM_VMWARE</a> </td> <td> = </td> <td>39</td> <td> <div class="comment">Error from VMware driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_EVENT">VIR_FROM_EVENT</a> </td> <td> = </td> <td>40</td> <td> <div class="comment">Error from event loop impl</div> </td> </tr> <tr> <td> <a name="VIR_FROM_LIBXL">VIR_FROM_LIBXL</a> </td> <td> = </td> <td>41</td> <td> <div class="comment">Error from libxenlight driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_LOCKING">VIR_FROM_LOCKING</a> </td> <td> = </td> <td>42</td> <td> <div class="comment">Error from lock manager</div> </td> </tr> <tr> <td> <a name="VIR_FROM_HYPERV">VIR_FROM_HYPERV</a> </td> <td> = </td> <td>43</td> <td> <div class="comment">Error from Hyper-V driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_CAPABILITIES">VIR_FROM_CAPABILITIES</a> </td> <td> = </td> <td>44</td> <td> <div class="comment">Error from capabilities</div> </td> </tr> <tr> <td> <a name="VIR_FROM_URI">VIR_FROM_URI</a> </td> <td> = </td> <td>45</td> <td> <div class="comment">Error from URI handling</div> </td> </tr> <tr> <td> <a name="VIR_FROM_AUTH">VIR_FROM_AUTH</a> </td> <td> = </td> <td>46</td> <td> <div class="comment">Error from auth handling</div> </td> </tr> <tr> <td> <a name="VIR_FROM_DBUS">VIR_FROM_DBUS</a> </td> <td> = </td> <td>47</td> <td> <div class="comment">Error from DBus</div> </td> </tr> <tr> <td> <a name="VIR_FROM_PARALLELS">VIR_FROM_PARALLELS</a> </td> <td> = </td> <td>48</td> <td> <div class="comment">Error from Parallels</div> </td> </tr> <tr> <td> <a name="VIR_FROM_DEVICE">VIR_FROM_DEVICE</a> </td> <td> = </td> <td>49</td> <td> <div class="comment">Error from Device</div> </td> </tr> <tr> <td> <a name="VIR_FROM_SSH">VIR_FROM_SSH</a> </td> <td> = </td> <td>50</td> <td> <div class="comment">Error from libssh2 connection transport</div> </td> </tr> <tr> <td> <a name="VIR_FROM_LOCKSPACE">VIR_FROM_LOCKSPACE</a> </td> <td> = </td> <td>51</td> <td> <div class="comment">Error from lockspace</div> </td> </tr> <tr> <td> <a name="VIR_FROM_INITCTL">VIR_FROM_INITCTL</a> </td> <td> = </td> <td>52</td> <td> <div class="comment">Error from initctl device communication</div> </td> </tr> <tr> <td> <a name="VIR_FROM_IDENTITY">VIR_FROM_IDENTITY</a> </td> <td> = </td> <td>53</td> <td> <div class="comment">Error from identity code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_CGROUP">VIR_FROM_CGROUP</a> </td> <td> = </td> <td>54</td> <td> <div class="comment">Error from cgroups</div> </td> </tr> <tr> <td> <a name="VIR_FROM_ACCESS">VIR_FROM_ACCESS</a> </td> <td> = </td> <td>55</td> <td> <div class="comment">Error from access control manager</div> </td> </tr> <tr> <td> <a name="VIR_FROM_SYSTEMD">VIR_FROM_SYSTEMD</a> </td> <td> = </td> <td>56</td> <td> <div class="comment">Error from systemd code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_BHYVE">VIR_FROM_BHYVE</a> </td> <td> = </td> <td>57</td> <td> <div class="comment">Error from bhyve driver</div> </td> </tr> <tr> <td> <a name="VIR_FROM_CRYPTO">VIR_FROM_CRYPTO</a> </td> <td> = </td> <td>58</td> <td> <div class="comment">Error from crypto code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_FIREWALL">VIR_FROM_FIREWALL</a> </td> <td> = </td> <td>59</td> <td> <div class="comment">Error from firewall</div> </td> </tr> <tr> <td> <a name="VIR_FROM_POLKIT">VIR_FROM_POLKIT</a> </td> <td> = </td> <td>60</td> <td> <div class="comment">Error from polkit code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_THREAD">VIR_FROM_THREAD</a> </td> <td> = </td> <td>61</td> <td> <div class="comment">Error from thread utils</div> </td> </tr> <tr> <td> <a name="VIR_FROM_ADMIN">VIR_FROM_ADMIN</a> </td> <td> = </td> <td>62</td> <td> <div class="comment">Error from admin backend</div> </td> </tr> <tr> <td> <a name="VIR_FROM_LOGGING">VIR_FROM_LOGGING</a> </td> <td> = </td> <td>63</td> <td> <div class="comment">Error from log manager</div> </td> </tr> <tr> <td> <a name="VIR_FROM_XENXL">VIR_FROM_XENXL</a> </td> <td> = </td> <td>64</td> <td> <div class="comment">Error from Xen xl config code</div> </td> </tr> <tr> <td> <a name="VIR_FROM_PERF">VIR_FROM_PERF</a> </td> <td> = </td> <td>65</td> <td> <div class="comment">Error from perf</div> </td> </tr> <tr> <td> <a name="VIR_FROM_LIBSSH">VIR_FROM_LIBSSH</a> </td> <td> = </td> <td>66</td> <td> <div class="comment">Error from libssh connection transport</div> </td> </tr> <tr> <td> <a name="VIR_FROM_RESCTRL">VIR_FROM_RESCTRL</a> </td> <td> = </td> <td>67</td> <td> <div class="comment">Error from resource control</div> </td> </tr> <tr> <td> <a name="VIR_ERR_DOMAIN_LAST">VIR_ERR_DOMAIN_LAST</a> </td> <td> = </td> <td colspan="2">68</td> </tr> </table> <pre>} </pre> </div> <h3> <a name="virErrorLevel"> <code>virErrorLevel</code> </a> </h3> <div class="api"> <pre><span class="keyword">enum</span> virErrorLevel { </pre> <table> <tr> <td> <a name="VIR_ERR_NONE">VIR_ERR_NONE</a> </td> <td> = </td> <td colspan="2">0</td> </tr> <tr> <td> <a name="VIR_ERR_WARNING">VIR_ERR_WARNING</a> </td> <td> = </td> <td>1</td> <td> <div class="comment">A simple warning</div> </td> </tr> <tr> <td> <a name="VIR_ERR_ERROR">VIR_ERR_ERROR</a> </td> <td> = </td> <td>2</td> <td> <div class="comment">An error</div> </td> </tr> </table> <pre>} </pre> </div> <h3> <a name="virErrorNumber"> <code>virErrorNumber</code> </a> </h3> <div class="api"> <pre><span class="keyword">enum</span> virErrorNumber { </pre> <table> <tr> <td> <a name="VIR_ERR_OK">VIR_ERR_OK</a> </td> <td> = </td> <td colspan="2">0</td> </tr> <tr> <td> <a name="VIR_ERR_INTERNAL_ERROR">VIR_ERR_INTERNAL_ERROR</a> </td> <td> = </td> <td>1</td> <td> <div class="comment">internal error</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_MEMORY">VIR_ERR_NO_MEMORY</a> </td> <td> = </td> <td>2</td> <td> <div class="comment">memory allocation failure</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_SUPPORT">VIR_ERR_NO_SUPPORT</a> </td> <td> = </td> <td>3</td> <td> <div class="comment">no support for this function</div> </td> </tr> <tr> <td> <a name="VIR_ERR_UNKNOWN_HOST">VIR_ERR_UNKNOWN_HOST</a> </td> <td> = </td> <td>4</td> <td> <div class="comment">could not resolve hostname</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_CONNECT">VIR_ERR_NO_CONNECT</a> </td> <td> = </td> <td>5</td> <td> <div class="comment">can't connect to hypervisor</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_CONN">VIR_ERR_INVALID_CONN</a> </td> <td> = </td> <td>6</td> <td> <div class="comment">invalid connection object</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_DOMAIN">VIR_ERR_INVALID_DOMAIN</a> </td> <td> = </td> <td>7</td> <td> <div class="comment">invalid domain object</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_ARG">VIR_ERR_INVALID_ARG</a> </td> <td> = </td> <td>8</td> <td> <div class="comment">invalid function argument</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OPERATION_FAILED">VIR_ERR_OPERATION_FAILED</a> </td> <td> = </td> <td>9</td> <td> <div class="comment">a command to hypervisor failed</div> </td> </tr> <tr> <td> <a name="VIR_ERR_GET_FAILED">VIR_ERR_GET_FAILED</a> </td> <td> = </td> <td>10</td> <td> <div class="comment">a HTTP GET command to failed</div> </td> </tr> <tr> <td> <a name="VIR_ERR_POST_FAILED">VIR_ERR_POST_FAILED</a> </td> <td> = </td> <td>11</td> <td> <div class="comment">a HTTP POST command to failed</div> </td> </tr> <tr> <td> <a name="VIR_ERR_HTTP_ERROR">VIR_ERR_HTTP_ERROR</a> </td> <td> = </td> <td>12</td> <td> <div class="comment">unexpected HTTP error code</div> </td> </tr> <tr> <td> <a name="VIR_ERR_SEXPR_SERIAL">VIR_ERR_SEXPR_SERIAL</a> </td> <td> = </td> <td>13</td> <td> <div class="comment">failure to serialize an S-Expr</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_XEN">VIR_ERR_NO_XEN</a> </td> <td> = </td> <td>14</td> <td> <div class="comment">could not open Xen hypervisor control</div> </td> </tr> <tr> <td> <a name="VIR_ERR_XEN_CALL">VIR_ERR_XEN_CALL</a> </td> <td> = </td> <td>15</td> <td> <div class="comment">failure doing an hypervisor call</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OS_TYPE">VIR_ERR_OS_TYPE</a> </td> <td> = </td> <td>16</td> <td> <div class="comment">unknown OS type</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_KERNEL">VIR_ERR_NO_KERNEL</a> </td> <td> = </td> <td>17</td> <td> <div class="comment">missing kernel information</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_ROOT">VIR_ERR_NO_ROOT</a> </td> <td> = </td> <td>18</td> <td> <div class="comment">missing root device information</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_SOURCE">VIR_ERR_NO_SOURCE</a> </td> <td> = </td> <td>19</td> <td> <div class="comment">missing source device information</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_TARGET">VIR_ERR_NO_TARGET</a> </td> <td> = </td> <td>20</td> <td> <div class="comment">missing target device information</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_NAME">VIR_ERR_NO_NAME</a> </td> <td> = </td> <td>21</td> <td> <div class="comment">missing domain name information</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_OS">VIR_ERR_NO_OS</a> </td> <td> = </td> <td>22</td> <td> <div class="comment">missing domain OS information</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_DEVICE">VIR_ERR_NO_DEVICE</a> </td> <td> = </td> <td>23</td> <td> <div class="comment">missing domain devices information</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_XENSTORE">VIR_ERR_NO_XENSTORE</a> </td> <td> = </td> <td>24</td> <td> <div class="comment">could not open Xen Store control</div> </td> </tr> <tr> <td> <a name="VIR_ERR_DRIVER_FULL">VIR_ERR_DRIVER_FULL</a> </td> <td> = </td> <td>25</td> <td> <div class="comment">too many drivers registered</div> </td> </tr> <tr> <td> <a name="VIR_ERR_CALL_FAILED">VIR_ERR_CALL_FAILED</a> </td> <td> = </td> <td>26</td> <td> <div class="comment">not supported by the drivers (DEPRECATED)</div> </td> </tr> <tr> <td> <a name="VIR_ERR_XML_ERROR">VIR_ERR_XML_ERROR</a> </td> <td> = </td> <td>27</td> <td> <div class="comment">an XML description is not well formed or broken</div> </td> </tr> <tr> <td> <a name="VIR_ERR_DOM_EXIST">VIR_ERR_DOM_EXIST</a> </td> <td> = </td> <td>28</td> <td> <div class="comment">the domain already exist</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OPERATION_DENIED">VIR_ERR_OPERATION_DENIED</a> </td> <td> = </td> <td>29</td> <td> <div class="comment">operation forbidden on read-only connections</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OPEN_FAILED">VIR_ERR_OPEN_FAILED</a> </td> <td> = </td> <td>30</td> <td> <div class="comment">failed to open a conf file</div> </td> </tr> <tr> <td> <a name="VIR_ERR_READ_FAILED">VIR_ERR_READ_FAILED</a> </td> <td> = </td> <td>31</td> <td> <div class="comment">failed to read a conf file</div> </td> </tr> <tr> <td> <a name="VIR_ERR_PARSE_FAILED">VIR_ERR_PARSE_FAILED</a> </td> <td> = </td> <td>32</td> <td> <div class="comment">failed to parse a conf file</div> </td> </tr> <tr> <td> <a name="VIR_ERR_CONF_SYNTAX">VIR_ERR_CONF_SYNTAX</a> </td> <td> = </td> <td>33</td> <td> <div class="comment">failed to parse the syntax of a conf file</div> </td> </tr> <tr> <td> <a name="VIR_ERR_WRITE_FAILED">VIR_ERR_WRITE_FAILED</a> </td> <td> = </td> <td>34</td> <td> <div class="comment">failed to write a conf file</div> </td> </tr> <tr> <td> <a name="VIR_ERR_XML_DETAIL">VIR_ERR_XML_DETAIL</a> </td> <td> = </td> <td>35</td> <td> <div class="comment">detail of an XML error</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_NETWORK">VIR_ERR_INVALID_NETWORK</a> </td> <td> = </td> <td>36</td> <td> <div class="comment">invalid network object</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NETWORK_EXIST">VIR_ERR_NETWORK_EXIST</a> </td> <td> = </td> <td>37</td> <td> <div class="comment">the network already exist</div> </td> </tr> <tr> <td> <a name="VIR_ERR_SYSTEM_ERROR">VIR_ERR_SYSTEM_ERROR</a> </td> <td> = </td> <td>38</td> <td> <div class="comment">general system call failure</div> </td> </tr> <tr> <td> <a name="VIR_ERR_RPC">VIR_ERR_RPC</a> </td> <td> = </td> <td>39</td> <td> <div class="comment">some sort of RPC error</div> </td> </tr> <tr> <td> <a name="VIR_ERR_GNUTLS_ERROR">VIR_ERR_GNUTLS_ERROR</a> </td> <td> = </td> <td>40</td> <td> <div class="comment">error from a GNUTLS call</div> </td> </tr> <tr> <td> <a name="VIR_WAR_NO_NETWORK">VIR_WAR_NO_NETWORK</a> </td> <td> = </td> <td>41</td> <td> <div class="comment">failed to start network</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_DOMAIN">VIR_ERR_NO_DOMAIN</a> </td> <td> = </td> <td>42</td> <td> <div class="comment">domain not found or unexpectedly disappeared</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_NETWORK">VIR_ERR_NO_NETWORK</a> </td> <td> = </td> <td>43</td> <td> <div class="comment">network not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_MAC">VIR_ERR_INVALID_MAC</a> </td> <td> = </td> <td>44</td> <td> <div class="comment">invalid MAC address</div> </td> </tr> <tr> <td> <a name="VIR_ERR_AUTH_FAILED">VIR_ERR_AUTH_FAILED</a> </td> <td> = </td> <td>45</td> <td> <div class="comment">authentication failed</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_STORAGE_POOL">VIR_ERR_INVALID_STORAGE_POOL</a> </td> <td> = </td> <td>46</td> <td> <div class="comment">invalid storage pool object</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_STORAGE_VOL">VIR_ERR_INVALID_STORAGE_VOL</a> </td> <td> = </td> <td>47</td> <td> <div class="comment">invalid storage vol object</div> </td> </tr> <tr> <td> <a name="VIR_WAR_NO_STORAGE">VIR_WAR_NO_STORAGE</a> </td> <td> = </td> <td>48</td> <td> <div class="comment">failed to start storage</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_STORAGE_POOL">VIR_ERR_NO_STORAGE_POOL</a> </td> <td> = </td> <td>49</td> <td> <div class="comment">storage pool not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_STORAGE_VOL">VIR_ERR_NO_STORAGE_VOL</a> </td> <td> = </td> <td>50</td> <td> <div class="comment">storage volume not found</div> </td> </tr> <tr> <td> <a name="VIR_WAR_NO_NODE">VIR_WAR_NO_NODE</a> </td> <td> = </td> <td>51</td> <td> <div class="comment">failed to start node driver</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_NODE_DEVICE">VIR_ERR_INVALID_NODE_DEVICE</a> </td> <td> = </td> <td>52</td> <td> <div class="comment">invalid node device object</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_NODE_DEVICE">VIR_ERR_NO_NODE_DEVICE</a> </td> <td> = </td> <td>53</td> <td> <div class="comment">node device not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_SECURITY_MODEL">VIR_ERR_NO_SECURITY_MODEL</a> </td> <td> = </td> <td>54</td> <td> <div class="comment">security model not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OPERATION_INVALID">VIR_ERR_OPERATION_INVALID</a> </td> <td> = </td> <td>55</td> <td> <div class="comment">operation is not applicable at this time</div> </td> </tr> <tr> <td> <a name="VIR_WAR_NO_INTERFACE">VIR_WAR_NO_INTERFACE</a> </td> <td> = </td> <td>56</td> <td> <div class="comment">failed to start interface driver</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_INTERFACE">VIR_ERR_NO_INTERFACE</a> </td> <td> = </td> <td>57</td> <td> <div class="comment">interface driver not running</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_INTERFACE">VIR_ERR_INVALID_INTERFACE</a> </td> <td> = </td> <td>58</td> <td> <div class="comment">invalid interface object</div> </td> </tr> <tr> <td> <a name="VIR_ERR_MULTIPLE_INTERFACES">VIR_ERR_MULTIPLE_INTERFACES</a> </td> <td> = </td> <td>59</td> <td> <div class="comment">more than one matching interface found</div> </td> </tr> <tr> <td> <a name="VIR_WAR_NO_NWFILTER">VIR_WAR_NO_NWFILTER</a> </td> <td> = </td> <td>60</td> <td> <div class="comment">failed to start nwfilter driver</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_NWFILTER">VIR_ERR_INVALID_NWFILTER</a> </td> <td> = </td> <td>61</td> <td> <div class="comment">invalid nwfilter object</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_NWFILTER">VIR_ERR_NO_NWFILTER</a> </td> <td> = </td> <td>62</td> <td> <div class="comment">nw filter pool not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_BUILD_FIREWALL">VIR_ERR_BUILD_FIREWALL</a> </td> <td> = </td> <td>63</td> <td> <div class="comment">nw filter pool not found</div> </td> </tr> <tr> <td> <a name="VIR_WAR_NO_SECRET">VIR_WAR_NO_SECRET</a> </td> <td> = </td> <td>64</td> <td> <div class="comment">failed to start secret storage</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_SECRET">VIR_ERR_INVALID_SECRET</a> </td> <td> = </td> <td>65</td> <td> <div class="comment">invalid secret</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_SECRET">VIR_ERR_NO_SECRET</a> </td> <td> = </td> <td>66</td> <td> <div class="comment">secret not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_CONFIG_UNSUPPORTED">VIR_ERR_CONFIG_UNSUPPORTED</a> </td> <td> = </td> <td>67</td> <td> <div class="comment">unsupported configuration construct</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OPERATION_TIMEOUT">VIR_ERR_OPERATION_TIMEOUT</a> </td> <td> = </td> <td>68</td> <td> <div class="comment">timeout occurred during operation</div> </td> </tr> <tr> <td> <a name="VIR_ERR_MIGRATE_PERSIST_FAILED">VIR_ERR_MIGRATE_PERSIST_FAILED</a> </td> <td> = </td> <td>69</td> <td> <div class="comment">a migration worked, but making the VM persist on the dest host failed</div> </td> </tr> <tr> <td> <a name="VIR_ERR_HOOK_SCRIPT_FAILED">VIR_ERR_HOOK_SCRIPT_FAILED</a> </td> <td> = </td> <td>70</td> <td> <div class="comment">a synchronous hook script failed</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_DOMAIN_SNAPSHOT">VIR_ERR_INVALID_DOMAIN_SNAPSHOT</a> </td> <td> = </td> <td>71</td> <td> <div class="comment">invalid domain snapshot</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_DOMAIN_SNAPSHOT">VIR_ERR_NO_DOMAIN_SNAPSHOT</a> </td> <td> = </td> <td>72</td> <td> <div class="comment">domain snapshot not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_INVALID_STREAM">VIR_ERR_INVALID_STREAM</a> </td> <td> = </td> <td>73</td> <td> <div class="comment">stream pointer not valid</div> </td> </tr> <tr> <td> <a name="VIR_ERR_ARGUMENT_UNSUPPORTED">VIR_ERR_ARGUMENT_UNSUPPORTED</a> </td> <td> = </td> <td>74</td> <td> <div class="comment">valid API use but unsupported by the given driver</div> </td> </tr> <tr> <td> <a name="VIR_ERR_STORAGE_PROBE_FAILED">VIR_ERR_STORAGE_PROBE_FAILED</a> </td> <td> = </td> <td>75</td> <td> <div class="comment">storage pool probe failed</div> </td> </tr> <tr> <td> <a name="VIR_ERR_STORAGE_POOL_BUILT">VIR_ERR_STORAGE_POOL_BUILT</a> </td> <td> = </td> <td>76</td> <td> <div class="comment">storage pool already built</div> </td> </tr> <tr> <td> <a name="VIR_ERR_SNAPSHOT_REVERT_RISKY">VIR_ERR_SNAPSHOT_REVERT_RISKY</a> </td> <td> = </td> <td>77</td> <td> <div class="comment">force was not requested for a risky domain snapshot revert</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OPERATION_ABORTED">VIR_ERR_OPERATION_ABORTED</a> </td> <td> = </td> <td>78</td> <td> <div class="comment">operation on a domain was canceled/aborted by user</div> </td> </tr> <tr> <td> <a name="VIR_ERR_AUTH_CANCELLED">VIR_ERR_AUTH_CANCELLED</a> </td> <td> = </td> <td>79</td> <td> <div class="comment">authentication cancelled</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_DOMAIN_METADATA">VIR_ERR_NO_DOMAIN_METADATA</a> </td> <td> = </td> <td>80</td> <td> <div class="comment">The metadata is not present</div> </td> </tr> <tr> <td> <a name="VIR_ERR_MIGRATE_UNSAFE">VIR_ERR_MIGRATE_UNSAFE</a> </td> <td> = </td> <td>81</td> <td> <div class="comment">Migration is not safe</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OVERFLOW">VIR_ERR_OVERFLOW</a> </td> <td> = </td> <td>82</td> <td> <div class="comment">integer overflow</div> </td> </tr> <tr> <td> <a name="VIR_ERR_BLOCK_COPY_ACTIVE">VIR_ERR_BLOCK_COPY_ACTIVE</a> </td> <td> = </td> <td>83</td> <td> <div class="comment">action prevented by block copy job</div> </td> </tr> <tr> <td> <a name="VIR_ERR_OPERATION_UNSUPPORTED">VIR_ERR_OPERATION_UNSUPPORTED</a> </td> <td> = </td> <td>84</td> <td> <div class="comment">The requested operation is not supported</div> </td> </tr> <tr> <td> <a name="VIR_ERR_SSH">VIR_ERR_SSH</a> </td> <td> = </td> <td>85</td> <td> <div class="comment">error in ssh transport driver</div> </td> </tr> <tr> <td> <a name="VIR_ERR_AGENT_UNRESPONSIVE">VIR_ERR_AGENT_UNRESPONSIVE</a> </td> <td> = </td> <td>86</td> <td> <div class="comment">guest agent is unresponsive, not running or not usable</div> </td> </tr> <tr> <td> <a name="VIR_ERR_RESOURCE_BUSY">VIR_ERR_RESOURCE_BUSY</a> </td> <td> = </td> <td>87</td> <td> <div class="comment">resource is already in use</div> </td> </tr> <tr> <td> <a name="VIR_ERR_ACCESS_DENIED">VIR_ERR_ACCESS_DENIED</a> </td> <td> = </td> <td>88</td> <td> <div class="comment">operation on the object/resource was denied</div> </td> </tr> <tr> <td> <a name="VIR_ERR_DBUS_SERVICE">VIR_ERR_DBUS_SERVICE</a> </td> <td> = </td> <td>89</td> <td> <div class="comment">error from a dbus service</div> </td> </tr> <tr> <td> <a name="VIR_ERR_STORAGE_VOL_EXIST">VIR_ERR_STORAGE_VOL_EXIST</a> </td> <td> = </td> <td>90</td> <td> <div class="comment">the storage vol already exists</div> </td> </tr> <tr> <td> <a name="VIR_ERR_CPU_INCOMPATIBLE">VIR_ERR_CPU_INCOMPATIBLE</a> </td> <td> = </td> <td>91</td> <td> <div class="comment">given CPU is incompatible with host CP</div> </td> </tr> <tr> <td> <a name="VIR_ERR_XML_INVALID_SCHEMA">VIR_ERR_XML_INVALID_SCHEMA</a> </td> <td> = </td> <td>92</td> <td> <div class="comment">XML document doesn't validate against schema</div> </td> </tr> <tr> <td> <a name="VIR_ERR_MIGRATE_FINISH_OK">VIR_ERR_MIGRATE_FINISH_OK</a> </td> <td> = </td> <td>93</td> <td> <div class="comment">Finish API succeeded but it is expected to return NULL</div> </td> </tr> <tr> <td> <a name="VIR_ERR_AUTH_UNAVAILABLE">VIR_ERR_AUTH_UNAVAILABLE</a> </td> <td> = </td> <td>94</td> <td> <div class="comment">authentication unavailable</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_SERVER">VIR_ERR_NO_SERVER</a> </td> <td> = </td> <td>95</td> <td> <div class="comment">Server was not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_NO_CLIENT">VIR_ERR_NO_CLIENT</a> </td> <td> = </td> <td>96</td> <td> <div class="comment">Client was not found</div> </td> </tr> <tr> <td> <a name="VIR_ERR_AGENT_UNSYNCED">VIR_ERR_AGENT_UNSYNCED</a> </td> <td> = </td> <td>97</td> <td> <div class="comment">guest agent replies with wrong id to guest-sync command</div> </td> </tr> <tr> <td> <a name="VIR_ERR_LIBSSH">VIR_ERR_LIBSSH</a> </td> <td> = </td> <td>98</td> <td> <div class="comment">error in libssh transport driver</div> </td> </tr> </table> <pre>} </pre> </div> <h3> <a name="functions">Functions</a> </h3> <h3> <a name="virConnCopyLastError"> <code>virConnCopyLastError</code> </a> </h3> <pre class="api"><span class="type">int</span> virConnCopyLastError (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> to)</pre> <div class="description"> <p>Copy the content of the last error caught on that connection</p> <p>This method is not protected against access from multiple threads. In a multi-threaded application, always use the global <a href="libvirt-virterror.html#virGetLastError">virGetLastError</a>() API which is backed by thread local storage.</p> <p>If the connection object was discovered to be invalid by an API call, then the error will be reported against the global error object.</p> <p>Since 0.6.0, all errors reported in the per-connection object are also duplicated in the global error object. As such an application can always use <a href="libvirt-virterror.html#virGetLastError">virGetLastError</a>(). This method remains for backwards compatibility.</p> <p>One will need to free the result with <a href="libvirt-virterror.html#virResetError">virResetError</a>()</p> </div> <dl class="variablelist"> <dt>conn</dt> <dd>pointer to the hypervisor connection</dd> <dt>to</dt> <dd>target to receive the copy</dd> <dt>Returns</dt> <dd>0 if no error was found and the error code otherwise and -1 in case of parameter error.</dd> </dl> <div class="acl"/> <h3> <a name="virConnGetLastError"> <code>virConnGetLastError</code> </a> </h3> <pre class="api"><span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> virConnGetLastError (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn)</pre> <div class="description"> <p>Provide a pointer to the last error caught on that connection</p> <p>This method is not protected against access from multiple threads. In a multi-threaded application, always use the global <a href="libvirt-virterror.html#virGetLastError">virGetLastError</a>() API which is backed by thread local storage.</p> <p>If the connection object was discovered to be invalid by an API call, then the error will be reported against the global error object.</p> <p>Since 0.6.0, all errors reported in the per-connection object are also duplicated in the global error object. As such an application can always use <a href="libvirt-virterror.html#virGetLastError">virGetLastError</a>(). This method remains for backwards compatibility.</p> </div> <dl class="variablelist"> <dt>conn</dt> <dd>pointer to the hypervisor connection</dd> <dt>Returns</dt> <dd>a pointer to the last error or NULL if none occurred.</dd> </dl> <div class="acl"/> <h3> <a name="virConnResetLastError"> <code>virConnResetLastError</code> </a> </h3> <pre class="api"><span class="type">void</span> virConnResetLastError (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn)</pre> <div class="description"> <p>The error object is kept in thread local storage, so separate threads can safely access this concurrently.</p> <p>Reset the last error caught on that connection</p> </div> <dl class="variablelist"> <dt>conn</dt> <dd>pointer to the hypervisor connection</dd> </dl> <div class="acl"/> <h3> <a name="virConnSetErrorFunc"> <code>virConnSetErrorFunc</code> </a> </h3> <pre class="api"><span class="type">void</span> virConnSetErrorFunc (<span class="type"><a href="libvirt-libvirt-host.html#virConnectPtr">virConnectPtr</a></span> conn, <span class="type">void *</span> userData, <span class="type"><a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a></span> handler)</pre> <div class="description"> <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> </div> <dl class="variablelist"> <dt>conn</dt> <dd>pointer to the hypervisor connection</dd> <dt>userData</dt> <dd>pointer to the user data provided in the handler callback</dd> <dt>handler</dt> <dd>the function to get called in case of error or NULL</dd> </dl> <div class="acl"/> <h3> <a name="virCopyLastError"> <code>virCopyLastError</code> </a> </h3> <pre class="api"><span class="type">int</span> virCopyLastError (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> to)</pre> <div class="description"> <p>Copy the content of the last error caught at the library level</p> <p>The error object is kept in thread local storage, so separate threads can safely access this concurrently.</p> <p>One will need to free the result with <a href="libvirt-virterror.html#virResetError">virResetError</a>()</p> </div> <dl class="variablelist"> <dt>to</dt> <dd>target to receive the copy</dd> <dt>Returns</dt> <dd>0 if no error was found and the error code otherwise and -1 in case of parameter error.</dd> </dl> <div class="acl"/> <h3> <a name="virDefaultErrorFunc"> <code>virDefaultErrorFunc</code> </a> </h3> <pre class="api"><span class="type">void</span> virDefaultErrorFunc (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> err)</pre> <div class="description"> <p>Default routine reporting an error to stderr.</p> </div> <dl class="variablelist"> <dt>err</dt> <dd>pointer to the error.</dd> </dl> <div class="acl"/> <h3> <a name="virErrorFunc"> <code>virErrorFunc</code> </a> </h3> <pre class="api"><span class="keyword">typedef</span> <span class="type">void</span> (*virErrorFunc ) (<span class="type">void *</span> userData, <span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> error) </pre> <div class="description"> <p>Signature of a function to use when there is an error raised by the library.</p> </div> <dl class="variablelist"> <dt>userData</dt> <dd>user provided data for the error callback</dd> <dt>error</dt> <dd>the error being raised.</dd> </dl> <br/> <h3> <a name="virFreeError"> <code>virFreeError</code> </a> </h3> <pre class="api"><span class="type">void</span> virFreeError (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> err)</pre> <div class="description"> <p>Resets and frees the given error.</p> </div> <dl class="variablelist"> <dt>err</dt> <dd>error to free</dd> </dl> <div class="acl"/> <h3> <a name="virGetLastError"> <code>virGetLastError</code> </a> </h3> <pre class="api"><span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> virGetLastError (<span class="type">void</span>)</pre> <div class="description"> <p>Provide a pointer to the last error caught at the library level</p> <p>The error object is kept in thread local storage, so separate threads can safely access this concurrently.</p> </div> <dl class="variablelist"> <dt>Returns</dt> <dd>a pointer to the last error or NULL if none occurred.</dd> </dl> <div class="acl"/> <h3> <a name="virGetLastErrorMessage"> <code>virGetLastErrorMessage</code> </a> </h3> <pre class="api"><span class="type">const char *</span> virGetLastErrorMessage (<span class="type">void</span>)</pre> <div class="description"> <p>Get the most recent error message</p> </div> <dl class="variablelist"> <dt>Returns</dt> <dd>the most recent error message string in this thread, or a generic message if none is set</dd> </dl> <div class="acl"/> <h3> <a name="virResetError"> <code>virResetError</code> </a> </h3> <pre class="api"><span class="type">void</span> virResetError (<span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> err)</pre> <div class="description"> <p>Reset the error being pointed to</p> </div> <dl class="variablelist"> <dt>err</dt> <dd>pointer to the <a href="libvirt-virterror.html#virError">virError</a> to clean up</dd> </dl> <div class="acl"/> <h3> <a name="virResetLastError"> <code>virResetLastError</code> </a> </h3> <pre class="api"><span class="type">void</span> virResetLastError (<span class="type">void</span>)</pre> <div class="description"> <p>Reset the last error caught at the library level.</p> <p>The error object is kept in thread local storage, so separate threads can safely access this concurrently, only resetting their own error object.</p> </div> <div class="acl"/> <h3> <a name="virSaveLastError"> <code>virSaveLastError</code> </a> </h3> <pre class="api"><span class="type"><a href="libvirt-virterror.html#virErrorPtr">virErrorPtr</a></span> virSaveLastError (<span class="type">void</span>)</pre> <div class="description"> <p>Save the last error into a new error object. On success, errno is unchanged; on failure, errno is ENOMEM.</p> </div> <dl class="variablelist"> <dt>Returns</dt> <dd>a pointer to the copied error or NULL if allocation failed. It is the caller's responsibility to free the error with <a href="libvirt-virterror.html#virFreeError">virFreeError</a>().</dd> </dl> <div class="acl"/> <h3> <a name="virSetErrorFunc"> <code>virSetErrorFunc</code> </a> </h3> <pre class="api"><span class="type">void</span> virSetErrorFunc (<span class="type">void *</span> userData, <span class="type"><a href="libvirt-virterror.html#virErrorFunc">virErrorFunc</a></span> handler)</pre> <div class="description"> <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> </div> <dl class="variablelist"> <dt>userData</dt> <dd>pointer to the user data provided in the handler callback</dd> <dt>handler</dt> <dd>the function to get called in case of error or NULL</dd> </dl> <div class="acl"/> </div> </div> <div id="nav"> <div id="home"> <a href="../index.html">Home</a> </div> <div id="jumplinks"> <ul> <li> <a href="../downloads.html">Download</a> </li> <li> <a href="../contribute.html">Contribute</a> </li> <li> <a href="../docs.html">Docs</a> </li> </ul> </div> <div id="search"> <form action="../search.php" enctype="application/x-www-form-urlencoded" method="get"> <div> <input name="query" type="text" size="12" value=""/> <input name="submit" type="submit" value="Go"/> </div> </form> </div> </div> <div id="footer"> <div id="contact"> <h3>Contact</h3> <ul> <li> <a href="../contact.html#email">email</a> </li> <li> <a href="../contact.html#irc">irc</a> </li> </ul> </div> <div id="community"> <h3>Community</h3> <ul> <li> <a href="https://twitter.com/hashtag/libvirt">twitter</a> </li> <li> <a href="https://plus.google.com/communities/109522598353007505282">google+</a> </li> <li> <a href="http://stackoverflow.com/questions/tagged/libvirt">stackoverflow</a> </li> <li> <a href="http://serverfault.com/questions/tagged/libvirt">serverfault</a> </li> </ul> </div> <div id="conduct"> Participants in the libvirt project agree to abide by <a href="../governance.html#codeofconduct">the project code of conduct</a></div> <br class="clear"/> </div> </body> </html>