
On Tue, Jul 05, 2011 at 01:07:45PM +0200, Matthias Bolte wrote:
2011/7/4 Daniel P. Berrange <berrange@redhat.com>:
* daemon/remote.c: Server side dispatcher * src/remote/remote_driver.c: Client side dispatcher * src/remote/qemu_protocol.x: Wire protocol definition --- daemon/remote.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/remote/qemu_protocol.x | 13 ++++++++++++- src/remote/remote_driver.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 1 deletions(-)
diff --git a/daemon/remote.c b/daemon/remote.c index 2889908..85fc978 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -2645,6 +2645,47 @@ cleanup:
static int +qemuDispatchDomainAttach(virNetServerPtr server ATTRIBUTE_UNUSED, + virNetServerClientPtr client ATTRIBUTE_UNUSED, + virNetMessageHeaderPtr hdr ATTRIBUTE_UNUSED, + virNetMessageErrorPtr rerr, + qemu_domain_attach_args *args, + qemu_domain_attach_ret *ret) +{ + virDomainPtr dom = NULL; + int rv = -1; + struct daemonClientPrivate *priv = + virNetServerClientGetPrivateData(client); + + if (!priv->conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = virDomainQemuAttach(priv->conn, + args->pid, + args->flags))) + goto cleanup; + + make_nonnull_domain(&ret->dom, dom); + + rv = 0; + +cleanup: + if (rv < 0) + virNetMessageSaveError(rerr); + if (dom) + virDomainFree(dom); + return rv; +}
The generator should be able to deal with this, did you try?
I couldn't, but it turns out the changes were fairly easy.
+#include "remote_dispatch_bodies.h" +#include "qemu_dispatch_bodies.h" + + +>>>>>>> Define remote wire protocol & impls for virDomainQemuAttach
The includes and this line looks bogus, probably a rebase problem.
Yep, totally bogus line.
+static virDomainPtr +remoteQemuDomainAttach(virConnectPtr conn, unsigned long long pid, unsigned int flags) +{ + virDomainPtr rv = NULL; + struct private_data *priv = conn->privateData; + qemu_domain_attach_args args; + qemu_domain_attach_ret ret; + + remoteDriverLock(priv); + + args.pid = pid; + args.flags = flags; + + memset(&ret, 0, sizeof ret); + + if (call(conn, priv, REMOTE_CALL_QEMU, QEMU_PROC_DOMAIN_ATTACH, + (xdrproc_t)xdr_qemu_domain_attach_args, (char *)&args, + (xdrproc_t)xdr_qemu_domain_attach_ret, (char *)&ret) == -1) + goto done; + + rv = get_nonnull_domain(conn, ret.dom); + xdr_free((xdrproc_t)xdr_qemu_domain_attach_ret, (char *)&ret); + +done: + remoteDriverUnlock(priv); + return rv; +}
The generator should also be able to deal with this one.
It did after some changes I'm reposting this one patch since its the only one that needed non-trivial fixups Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|