Convert XenD XML->SEXPR conversion to new domain XML APIs

This commit is contained in:
Daniel P. Berrange
2008-07-25 13:17:27 +00:00
parent 5ee15074af
commit 8c6f5a546b
55 changed files with 1231 additions and 1863 deletions

View File

@@ -11,7 +11,7 @@ libexec_PROGRAMS = libvirt_proxy
libvirt_proxy_SOURCES = libvirt_proxy.c @top_srcdir@/src/xend_internal.c \
@top_srcdir@/src/xen_internal.c @top_srcdir@/src/virterror.c \
@top_srcdir@/src/sexpr.c @top_srcdir@/src/xml.c \
@top_srcdir@/src/sexpr.c \
@top_srcdir@/src/xs_internal.c @top_srcdir@/src/buf.c \
@top_srcdir@/src/capabilities.c \
@top_srcdir@/src/memory.c \

View File

@@ -358,6 +358,7 @@ proxyWriteClientSocket(int nr, virProxyPacketPtr req) {
*/
static int
proxyReadClientSocket(int nr) {
virDomainDefPtr def;
virProxyFullPacket request;
virProxyPacketPtr req = (virProxyPacketPtr) &request;
int ret;
@@ -622,22 +623,29 @@ retry2:
* rather hard to get from that code path. So proxy
* users won't see CPU pinning (last NULL arg)
*/
xml = xenDaemonDomainDumpXMLByID(conn, request.data.arg, 0, NULL);
if (!xml) {
def = xenDaemonDomainFetch(conn, request.data.arg, NULL, NULL);
if (!def) {
req->data.arg = -1;
req->len = sizeof(virProxyPacket);
} else {
int xmllen = strlen(xml);
if (xmllen > (int) sizeof(request.extra.str)) {
req->data.arg = -2;
xml = virDomainDefFormat(conn, def, 0);
if (!xml) {
req->data.arg = -1;
req->len = sizeof(virProxyPacket);
} else {
req->data.arg = 0;
memmove(&request.extra.str[0], xml, xmllen);
req->len = sizeof(virProxyPacket) + xmllen;
int xmllen = strlen(xml);
if (xmllen > (int) sizeof(request.extra.str)) {
req->data.arg = -2;
req->len = sizeof(virProxyPacket);
} else {
req->data.arg = 0;
memmove(&request.extra.str[0], xml, xmllen);
req->len = sizeof(virProxyPacket) + xmllen;
}
free(xml);
}
free(xml);
}
virDomainDefFree(def);
break;
case VIR_PROXY_DOMAIN_OSTYPE:
if (req->len != sizeof(virProxyPacket))