diff -r ed99bc6abc58 qemud/conf.c --- a/qemud/conf.c Thu Jun 21 21:20:50 2007 -0400 +++ b/qemud/conf.c Thu Jun 21 21:20:52 2007 -0400 @@ -64,6 +64,70 @@ void qemudReportError(virConnectPtr conn __virRaiseError(conn, dom, net, VIR_FROM_QEMU, code, VIR_ERR_ERROR, NULL, NULL, NULL, -1, -1, errorMessage); +} + +struct qemud_vm *qemudFindVMByID(const struct qemud_driver *driver, int id) { + struct qemud_vm *vm = driver->vms; + + while (vm) { + if (qemudIsActiveVM(vm) && vm->id == id) + return vm; + vm = vm->next; + } + + return NULL; +} + +struct qemud_vm *qemudFindVMByUUID(const struct qemud_driver *driver, + const unsigned char *uuid) { + struct qemud_vm *vm = driver->vms; + + while (vm) { + if (!memcmp(vm->def->uuid, uuid, QEMUD_UUID_RAW_LEN)) + return vm; + vm = vm->next; + } + + return NULL; +} + +struct qemud_vm *qemudFindVMByName(const struct qemud_driver *driver, + const char *name) { + struct qemud_vm *vm = driver->vms; + + while (vm) { + if (!strcmp(vm->def->name, name)) + return vm; + vm = vm->next; + } + + return NULL; +} + +struct qemud_network *qemudFindNetworkByUUID(const struct qemud_driver *driver, + const unsigned char *uuid) { + struct qemud_network *network = driver->networks; + + while (network) { + if (!memcmp(network->def->uuid, uuid, QEMUD_UUID_RAW_LEN)) + return network; + network = network->next; + } + + return NULL; +} + +struct qemud_network *qemudFindNetworkByName(const struct qemud_driver *driver, + const char *name) { + struct qemud_network *network = driver->networks; + + while (network) { + if (!strcmp(network->def->name, name)) + return network; + network = network->next; + } + + return NULL; } diff -r ed99bc6abc58 qemud/conf.h --- a/qemud/conf.h Thu Jun 21 21:20:50 2007 -0400 +++ b/qemud/conf.h Thu Jun 21 21:20:52 2007 -0400 @@ -23,6 +23,8 @@ #ifndef __QEMUD_CONF_H #define __QEMUD_CONF_H + +#include "../src/internal.h" /* Different types of QEMU acceleration possible */ enum qemud_vm_virt_type { diff -r ed99bc6abc58 qemud/dispatch.c --- a/qemud/dispatch.c Thu Jun 21 21:20:50 2007 -0400 +++ b/qemud/dispatch.c Thu Jun 21 21:20:52 2007 -0400 @@ -31,6 +31,7 @@ #include #include "internal.h" +#include "../src/internal.h" #include "driver.h" #include "dispatch.h" #include "conf.h" @@ -105,15 +106,10 @@ qemudDispatchGetCapabilities (struct qem { char *xml = qemudGetCapabilities(&conn); - if (strlen(xml) > QEMUD_MAX_XML_LEN) { - qemudReportError(&conn, NULL, NULL, VIR_ERR_XML_ERROR, NULL); - qemudDispatchFailure(out); - free(xml); - return 0; - } - out->type = QEMUD_SERVER_PKT_GET_CAPABILITIES; - strcpy (out->qemud_packet_server_data_u.getCapabilitiesReply.xml, xml); + strncpy (out->qemud_packet_server_data_u.getCapabilitiesReply.xml, xml, + QEMUD_MAX_XML_LEN-1); + out->qemud_packet_server_data_u.getCapabilitiesReply.xml[QEMUD_MAX_XML_LEN-1] = '\0'; free(xml); return 0; } @@ -915,7 +911,8 @@ int qemudDispatch(struct qemud_server *s if (!funcs[type]) { qemudDebug("Illegal operation requested"); - qemudReportError(NULL, NULL, NULL, VIR_ERR_OPERATION_DENIED, NULL); + __virRaiseError(&conn, NULL, NULL, VIR_FROM_QEMU, VIR_ERR_OPERATION_DENIED, VIR_ERR_ERROR, + NULL, NULL, NULL, -1, -1, "Illegal operation requested"); qemudDispatchFailure(out); } else { if ((funcs[type])(in, out) < 0) { diff -r ed99bc6abc58 qemud/driver.c --- a/qemud/driver.c Thu Jun 21 21:20:50 2007 -0400 +++ b/qemud/driver.c Thu Jun 21 21:20:52 2007 -0400 @@ -51,6 +51,7 @@ #include "event.h" #include "../src/buf.h" #include "driver.h" +#include "conf.h" static int qemudSetCloseExec(int fd) { int flags; @@ -82,6 +83,19 @@ static int qemudSetNonBlock(int fd) { static void qemudDispatchVMEvent(int fd, int events, void *opaque); +int qemudStartVMDaemon(struct qemud_driver *driver, + struct qemud_vm *vm); + +int qemudShutdownVMDaemon(struct qemud_driver *driver, + struct qemud_vm *vm); + +int qemudStartNetworkDaemon(struct qemud_driver *driver, + struct qemud_network *network); + +int qemudShutdownNetworkDaemon(struct qemud_driver *driver, + struct qemud_network *network); + +struct qemud_driver *qemu_driver = NULL; static @@ -119,8 +133,6 @@ void qemudAutostartConfigs(struct qemud_ vm = next; } } - -struct qemud_driver *qemu_driver = NULL; int qemudStartup(void) { uid_t uid = geteuid(); @@ -720,6 +732,8 @@ static int qemudVMData(struct qemud_driv strerror(errno)); } } + + qemudAutostartConfigs(qemu_driver); } @@ -1658,43 +1672,6 @@ static int qemudGetProcessInfo(unsigned return 0; } -struct qemud_vm *qemudFindVMByID(const struct qemud_driver *driver, int id) { - struct qemud_vm *vm = driver->vms; - - while (vm) { - if (qemudIsActiveVM(vm) && vm->id == id) - return vm; - vm = vm->next; - } - - return NULL; -} - -struct qemud_vm *qemudFindVMByUUID(const struct qemud_driver *driver, - const unsigned char *uuid) { - struct qemud_vm *vm = driver->vms; - - while (vm) { - if (!memcmp(vm->def->uuid, uuid, QEMUD_UUID_RAW_LEN)) - return vm; - vm = vm->next; - } - - return NULL; -} - -struct qemud_vm *qemudFindVMByName(const struct qemud_driver *driver, - const char *name) { - struct qemud_vm *vm = driver->vms; - - while (vm) { - if (!strcmp(vm->def->name, name)) - return vm; - vm = vm->next; - } - - return NULL; -} virDomainPtr qemudDomainLookupByID(virConnectPtr conn ATTRIBUTE_UNUSED, int id) { @@ -2141,32 +2118,6 @@ int qemudDomainSetAutostart(virDomainPtr vm->autostart = autostart; return 0; -} - -struct qemud_network *qemudFindNetworkByUUID(const struct qemud_driver *driver, - const unsigned char *uuid) { - struct qemud_network *network = driver->networks; - - while (network) { - if (!memcmp(network->def->uuid, uuid, QEMUD_UUID_RAW_LEN)) - return network; - network = network->next; - } - - return NULL; -} - -struct qemud_network *qemudFindNetworkByName(const struct qemud_driver *driver, - const char *name) { - struct qemud_network *network = driver->networks; - - while (network) { - if (!strcmp(network->def->name, name)) - return network; - network = network->next; - } - - return NULL; } virNetworkPtr qemudNetworkLookupByUUID(virConnectPtr conn ATTRIBUTE_UNUSED, diff -r ed99bc6abc58 qemud/driver.h --- a/qemud/driver.h Thu Jun 21 21:20:50 2007 -0400 +++ b/qemud/driver.h Thu Jun 21 21:20:52 2007 -0400 @@ -27,19 +27,6 @@ #include "internal.h" #include "../src/internal.h" -#include "conf.h" - -int qemudStartVMDaemon(struct qemud_driver *driver, - struct qemud_vm *vm); - -int qemudShutdownVMDaemon(struct qemud_driver *driver, - struct qemud_vm *vm); - -int qemudStartNetworkDaemon(struct qemud_driver *driver, - struct qemud_network *network); - -int qemudShutdownNetworkDaemon(struct qemud_driver *driver, - struct qemud_network *network); int qemudStartup(void); void qemudReload(void);