+Tue Feb 14 15:37:17 EST 2007 Mark McLoughlin <markmc@redhat.com>
+
+ Note: potential ABI break here, but people should
+ only really be using virError structs returned from
+ libvirt itself.
+
+ * include/libvirt/virterror.h: add virNetwork
+ to virError
+
+ * src/internal.h, src/virterror.c: add network param
+ to __virRaiseError()
+
+ * src/conf.c, src/hash.c, src/libvirt.c, src/proxy_internal.c,
+ src/qemu_internal.c, src/sexpr.c, src/test.c, src/xen_internal.c,
+ src/xend_internal.c, src/xm_internal.c, src/xml.c, src/xmlrpc.c,
+ src/xs_internal.c: update.
+
Tue Feb 14 15:33:05 EST 2007 Mark McLoughlin <markmc@redhat.com>
* include/libvirt/libvirt.h.in: add the networks APIs
char *str3; /* extra string information */
int int1; /* extra number information */
int int2; /* extra number information */
+ virNetworkPtr net; /* the network if available */
};
/**
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(NULL, NULL, VIR_FROM_CONF, error, VIR_ERR_ERROR,
+ __virRaiseError(NULL, NULL, NULL, VIR_FROM_CONF, error, VIR_ERR_ERROR,
errmsg, info, NULL, line, 0, errmsg, info, line);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(conn, NULL, VIR_FROM_NONE, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, NULL, VIR_FROM_NONE, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
************************************************************************/
void __virRaiseError(virConnectPtr conn,
virDomainPtr dom,
+ virNetworkPtr net,
int domain,
int code,
virErrorLevel level,
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(conn, NULL, VIR_FROM_NONE, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, NULL, VIR_FROM_NONE, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
if (error != VIR_ERR_INVALID_DOMAIN) {
conn = domain->conn;
}
- __virRaiseError(conn, domain, VIR_FROM_DOM, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, domain, NULL, VIR_FROM_DOM, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
if (error != VIR_ERR_INVALID_NETWORK) {
conn = network->conn;
}
- /* XXX: should be able to pass network pointer here */
- __virRaiseError(conn, NULL, VIR_FROM_NET, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, network, VIR_FROM_NET, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(conn, NULL, VIR_FROM_PROXY, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, NULL, VIR_FROM_PROXY, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(con, dom, VIR_FROM_QEMU, error, VIR_ERR_ERROR,
+ __virRaiseError(con, dom, NULL, VIR_FROM_QEMU, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info, 0);
}
return (-1);
}
- conn->handle = fd;
+ conn->qemud_fd = fd;
return (0);
}
/* Block sending entire outgoing packet */
while (outLeft) {
- int got = write(conn->handle, out+outDone, outLeft);
+ int got = write(conn->qemud_fd, out+outDone, outLeft);
if (got < 0) {
return -1;
}
/* Block waiting for header to come back */
while (inLeft) {
- int done = read(conn->handle, in+inGot, inLeft);
+ int done = read(conn->qemud_fd, in+inGot, inLeft);
if (done <= 0) {
return -1;
}
/* Now block reading in body */
inLeft = reply->header.dataSize;
while (inLeft) {
- int done = read(conn->handle, in+inGot, inLeft);
+ int done = read(conn->qemud_fd, in+inGot, inLeft);
if (done <= 0) {
return -1;
}
return -1;
}
- conn->handle = -1;
+ conn->qemud_fd = -1;
qemuOpenConnection(conn, uri, flags & VIR_DRV_OPEN_RO ? 1 : 0);
xmlFreeURI(uri);
- if (conn->handle < 0) {
+ if (conn->qemud_fd < 0) {
return -1;
}
static int qemuClose (virConnectPtr conn) {
- if (conn->handle != -1) {
- close(conn->handle);
- conn->handle = -1;
+ if (conn->qemud_fd != -1) {
+ close(conn->qemud_fd);
+ conn->qemud_fd = -1;
}
return 0;
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(NULL, NULL, VIR_FROM_SEXPR, error, VIR_ERR_ERROR,
+ __virRaiseError(NULL, NULL, NULL, VIR_FROM_SEXPR, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(con, dom, VIR_FROM_XEN, error, VIR_ERR_ERROR,
+ __virRaiseError(con, dom, NULL, VIR_FROM_XEN, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info, 0);
}
#include "internal.h"
static virError lastErr = /* the last error */
-{ 0, 0, NULL, VIR_ERR_NONE, NULL, NULL, NULL, NULL, NULL, 0, 0 };
+{ 0, 0, NULL, VIR_ERR_NONE, NULL, NULL, NULL, NULL, NULL, 0, 0, NULL };
static virErrorFunc virErrorHandler = NULL; /* global error handlet */
static void *virUserData = NULL; /* associated data */
void
virDefaultErrorFunc(virErrorPtr err)
{
- const char *lvl = "", *dom = "", *domain = "";
+ const char *lvl = "", *dom = "", *domain = "", *network = "";
int len;
if ((err == NULL) || (err->code == VIR_ERR_OK))
}
if ((err->dom != NULL) && (err->code != VIR_ERR_INVALID_DOMAIN)) {
domain = err->dom->name;
+ } else if ((err->net != NULL) && (err->code != VIR_ERR_INVALID_NETWORK)) {
+ network = err->net->name;
}
len = strlen(err->message);
if ((err->domain == VIR_FROM_XML) && (err->code == VIR_ERR_XML_DETAIL) &&
(err->int1 != 0))
- fprintf(stderr, "libvir: %s%s %s: line %d: %s",
- dom, lvl, domain, err->int1, err->message);
+ fprintf(stderr, "libvir: %s%s %s%s: line %d: %s",
+ dom, lvl, domain, network, err->int1, err->message);
else if ((len == 0) || (err->message[len - 1] != '\n'))
- fprintf(stderr, "libvir: %s%s %s: %s\n",
- dom, lvl, domain, err->message);
+ fprintf(stderr, "libvir: %s%s %s%s: %s\n",
+ dom, lvl, domain, network, err->message);
else
- fprintf(stderr, "libvir: %s%s %s: %s",
- dom, lvl, domain, err->message);
+ fprintf(stderr, "libvir: %s%s %s%s: %s",
+ dom, lvl, domain, network, err->message);
}
/**
* __virRaiseError:
* @conn: the connection to the hypervisor if available
* @dom: the domain if available
+ * @net: the network if available
* @domain: the virErrorDomain indicating where it's coming from
* @code: the virErrorNumber code for the error
* @level: the virErrorLevel for the error
* immediately if a callback is found and store it for later handling.
*/
void
-__virRaiseError(virConnectPtr conn, virDomainPtr dom,
+__virRaiseError(virConnectPtr conn, virDomainPtr dom, virNetworkPtr net,
int domain, int code, virErrorLevel level,
const char *str1, const char *str2, const char *str3,
int int1, int int2, const char *msg, ...)
virResetError(to);
to->conn = conn;
to->dom = dom;
+ to->net = net;
to->domain = domain;
to->code = code;
to->message = str;
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(NULL, NULL, VIR_FROM_XEN, error, VIR_ERR_ERROR,
+ __virRaiseError(NULL, NULL, NULL, VIR_FROM_XEN, error, VIR_ERR_ERROR,
errmsg, info, NULL, value, 0, errmsg, info, value);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(conn, NULL, VIR_FROM_XEND, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, NULL, VIR_FROM_XEND, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
return;
errmsg = __virErrorMsg(error, NULL);
- __virRaiseError(conn, NULL, VIR_FROM_XEND, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, NULL, VIR_FROM_XEND, error, VIR_ERR_ERROR,
errmsg, NULL, NULL, val, 0, errmsg, val);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(conn, NULL, VIR_FROM_XEND, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, NULL, VIR_FROM_XEND, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(NULL, NULL, VIR_FROM_XML, error, VIR_ERR_ERROR,
+ __virRaiseError(NULL, NULL, NULL, VIR_FROM_XML, error, VIR_ERR_ERROR,
errmsg, info, NULL, value, 0, errmsg, info, value);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(NULL, NULL, VIR_FROM_RPC, error, VIR_ERR_ERROR,
+ __virRaiseError(NULL, NULL, NULL, VIR_FROM_RPC, error, VIR_ERR_ERROR,
errmsg, info, NULL, value, 0, errmsg, info, value);
}
return;
errmsg = __virErrorMsg(error, info);
- __virRaiseError(conn, NULL, VIR_FROM_XENSTORE, error, VIR_ERR_ERROR,
+ __virRaiseError(conn, NULL, NULL, VIR_FROM_XENSTORE, error, VIR_ERR_ERROR,
errmsg, info, NULL, 0, 0, errmsg, info);
}