On Thu, May 02, 2013 at 02:06:16PM -0400, Laine Stump wrote: > > -#define NETWORK_PID_DIR LOCALSTATEDIR "/run/libvirt/network" > -#define NETWORK_STATE_DIR LOCALSTATEDIR "/lib/libvirt/network" > +#define NETWORK_PID_DIR "/run/libvirt/network" > +#define NETWORK_STATE_DIR "/lib/libvirt/network" > > -#define DNSMASQ_STATE_DIR LOCALSTATEDIR "/lib/libvirt/dnsmasq" > -#define RADVD_STATE_DIR LOCALSTATEDIR "/lib/libvirt/radvd" > +#define DNSMASQ_STATE_DIR "/lib/libvirt/dnsmasq" > +#define RADVD_STATE_DIR "/lib/libvirt/radvd" This kind of approach doesn't really work I'm afraid. The '/lib' and '/run' prefixes are only relevant for the privileged daemon. > if (privileged) { > - if (virAsprintf(&driverState->logDir, > - "%s/log/libvirt/qemu", LOCALSTATEDIR) == -1) > - goto out_of_memory; > - > - if ((base = strdup(SYSCONFDIR "/libvirt")) == NULL) > + if (((base = strdup(SYSCONFDIR "/libvirt")) == NULL) || > + ((driverState->logDir > + = strdup(LOCALSTATEDIR "/log/libvirt/qemu")) == NULL) || > + ((driverState->stateDir > + = strdup(LOCALSTATEDIR NETWORK_STATE_DIR)) == NULL) || > + ((driverState->pidDir > + = strdup(LOCALSTATEDIR NETWORK_PID_DIR)) == NULL) || > + ((driverState->dnsmasqStateDir > + = strdup(LOCALSTATEDIR DNSMASQ_STATE_DIR)) == NULL) || > + ((driverState->radvdStateDir > + = strdup(LOCALSTATEDIR RADVD_STATE_DIR)) == NULL)) { > goto out_of_memory; > + } > } else { > char *userdir = virGetUserCacheDirectory(); > > if (!userdir) > goto error; > > + userdir = virGetUserConfigDirectory(); > + if (virAsprintf(&base, "%s", userdir) < 0) { > + VIR_FREE(userdir); > + goto out_of_memory; > + } > + VIR_FREE(userdir); > + > if (virAsprintf(&driverState->logDir, > - "%s/qemu/log", userdir) == -1) { > + "%s/qemu/log", userdir) < 0) { > VIR_FREE(userdir); > goto out_of_memory; > } > VIR_FREE(userdir); > > - userdir = virGetUserConfigDirectory(); > - if (virAsprintf(&base, "%s", userdir) == -1) { > + if (!(userdir = virGetUserRuntimeDirectory())) > + goto error; > + > + if (virAsprintf(&driverState->stateDir, > + "%s" NETWORK_STATE_DIR, userdir) < 0) { > + VIR_FREE(userdir); > + goto out_of_memory; > + } > + if (virAsprintf(&driverState->pidDir, > + "%s" NETWORK_PID_DIR, userdir) < 0) { > + VIR_FREE(userdir); > + goto out_of_memory; > + } > + if (virAsprintf(&driverState->dnsmasqStateDir, > + "%s" DNSMASQ_STATE_DIR, userdir) < 0) { > + VIR_FREE(userdir); > + goto out_of_memory; > + } > + if (virAsprintf(&driverState->radvdStateDir, > + "%s" RADVD_STATE_DIR, userdir) < 0) { > VIR_FREE(userdir); > goto out_of_memory; > } These cause the state dirs to become $XDG_RUNTIME_DIR/lib/libvirt/network $XDG_RUNTIME_DIR/run/libvirt/network $XDG_RUNTIME_DIR/lib/libvirt/dnsmasq $XDG_RUNTIME_DIR/lib/libvirt/radvd when in fact we want them to be $XDG_RUNTIME_DIR/libvirt/network/lib $XDG_RUNTIME_DIR/libvirt/network/run $XDG_RUNTIME_DIR/libvirt/dnsmasq/lib $XDG_RUNTIME_DIR/libvirt/radvd/lib Take a look at how QEMU sets this up in virQEMUDriverConfigNew 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list