[libvirt] [PATCH v3 08/48] remote: conditionalize daemon name in libvirtd daemon
Christophe de Dinechin
dinechin at redhat.com
Tue Jul 30 10:35:23 UTC 2019
P. Berrangé writes:
> Prepare for reusing libvirtd source to create other daemons by making
> the daemon name conditionally defined by the make rules.
>
> Reviewed-by: Andrea Bolognani <abologna at redhat.com>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
> src/remote/Makefile.inc.am | 1 +
> src/remote/remote_daemon.c | 50 +++++++++++++++++--------------
> src/remote/remote_daemon_config.c | 5 ++--
> 3 files changed, 31 insertions(+), 25 deletions(-)
>
> diff --git a/src/remote/Makefile.inc.am b/src/remote/Makefile.inc.am
> index ced940d3c1..b72186109a 100644
> --- a/src/remote/Makefile.inc.am
> +++ b/src/remote/Makefile.inc.am
> @@ -147,6 +147,7 @@ libvirtd_CFLAGS = \
> -I$(srcdir)/conf \
> -I$(srcdir)/rpc \
> -DSOCK_PREFIX="\"libvirt\"" \
> + -DDAEMON_NAME="\"libvirtd\"" \
> $(NULL)
>
> libvirtd_LDFLAGS = \
> diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c
> index f9d923b357..f1daaeb944 100644
> --- a/src/remote/remote_daemon.c
> +++ b/src/remote/remote_daemon.c
> @@ -64,7 +64,11 @@
>
> #include "virdbus.h"
>
> -VIR_LOG_INIT("daemon.libvirtd");
> +VIR_LOG_INIT("daemon." DAEMON_NAME);
> +
> +#ifndef SOCK_PREFIX
> +# define SOCK_PREFIX DAEMON_NAME
> +#endif
>
> #if WITH_SASL
> virNetSASLContextPtr saslCtxt = NULL;
> @@ -383,11 +387,11 @@ daemonSetupNetworking(virNetServerPtr srv,
> int ret = -1;
> VIR_AUTOPTR(virSystemdActivation) act = NULL;
> virSystemdActivationMap actmap[] = {
> - { .name = "libvirtd.socket", .family = AF_UNIX, .path = sock_path },
> - { .name = "libvirtd-ro.socket", .family = AF_UNIX, .path = sock_path_ro },
> - { .name = "libvirtd-admin.socket", .family = AF_UNIX, .path = sock_path_adm },
> - { .name = "libvirtd-tcp.socket", .family = AF_INET },
> - { .name = "libvirtd-tls.socket", .family = AF_INET },
> + { .name = DAEMON_NAME ".socket", .family = AF_UNIX, .path = sock_path },
> + { .name = DAEMON_NAME "-ro.socket", .family = AF_UNIX, .path = sock_path_ro },
> + { .name = DAEMON_NAME "-admin.socket", .family = AF_UNIX, .path = sock_path_adm },
> + { .name = DAEMON_NAME "-tcp.socket", .family = AF_INET },
> + { .name = DAEMON_NAME "-tls.socket", .family = AF_INET },
> };
>
> if ((actmap[3].port = virSocketAddrResolveService(config->tcp_port)) < 0)
> @@ -421,7 +425,7 @@ daemonSetupNetworking(virNetServerPtr srv,
>
> if (virNetServerAddServiceUNIX(srv,
> act,
> - "libvirtd.socket",
> + DAEMON_NAME ".socket",
> sock_path,
> unix_sock_rw_mask,
> unix_sock_gid,
> @@ -434,7 +438,7 @@ daemonSetupNetworking(virNetServerPtr srv,
> if (sock_path_ro &&
> virNetServerAddServiceUNIX(srv,
> act,
> - "libvirtd-ro.socket",
> + DAEMON_NAME "-ro.socket",
> sock_path_ro,
> unix_sock_ro_mask,
> unix_sock_gid,
> @@ -448,7 +452,7 @@ daemonSetupNetworking(virNetServerPtr srv,
> if (sock_path_adm &&
> virNetServerAddServiceUNIX(srvAdm,
> act,
> - "libvirtd-admin.socket",
> + DAEMON_NAME "-admin.socket",
> sock_path_adm,
> unix_sock_adm_mask,
> unix_sock_gid,
> @@ -462,7 +466,7 @@ daemonSetupNetworking(virNetServerPtr srv,
> if (((ipsock && config->listen_tcp) || act) &&
> virNetServerAddServiceTCP(srv,
> act,
> - "libvirtd-tcp.socket",
> + DAEMON_NAME "-tcp.socket",
> config->listen_addr,
> config->tcp_port,
> AF_UNSPEC,
> @@ -519,7 +523,7 @@ daemonSetupNetworking(virNetServerPtr srv,
> config->listen_addr, config->tls_port);
> if (virNetServerAddServiceTCP(srv,
> act,
> - "libvirtd-tls.socket",
> + DAEMON_NAME "-tls.socket",
> config->listen_addr,
> config->tls_port,
> AF_UNSPEC,
> @@ -564,7 +568,7 @@ daemonSetupNetDevOpenvswitch(struct daemonConfig *config)
>
> /*
> * Set up the logging environment
> - * By default if daemonized all errors go to the logfile libvirtd.log,
> + * By default if daemonized all errors go to journald/a logfile
> * but if verbose or error debugging is asked for then also output
> * informational and debug messages. Default size if 64 kB.
> */
> @@ -577,7 +581,7 @@ daemonSetupLogging(struct daemonConfig *config,
> virLogReset();
>
> /*
> - * Libvirtd's order of precedence is:
> + * Logging setup order of precedence is:
> * cmdline > environment > config
> *
> * Given the precedence, we must process the variables in the opposite
> @@ -605,7 +609,7 @@ daemonSetupLogging(struct daemonConfig *config,
> /* Define the default output. This is only applied if there was no setting
> * from either the config or the environment.
> */
> - if (virLogSetDefaultOutput("libvirtd", godaemon, privileged) < 0)
> + if (virLogSetDefaultOutput(DAEMON_NAME, godaemon, privileged) < 0)
> return -1;
>
> if (virLogGetNbOutputs() == 0)
> @@ -717,7 +721,7 @@ static void daemonStopWorker(void *opaque)
>
> VIR_DEBUG("Completed stop dmn=%p", dmn);
>
> - /* Exit libvirtd cleanly */
> + /* Exit daemon cleanly */
> virNetDaemonQuit(dmn);
> }
>
> @@ -796,7 +800,7 @@ static void daemonRunStateInit(void *opaque)
> driversInitialized = true;
>
> #ifdef WITH_DBUS
> - /* Tie the non-privileged libvirtd to the session/shutdown lifecycle */
> + /* Tie the non-privileged daemons to the session/shutdown lifecycle */
> if (!virNetDaemonIsPrivileged(dmn)) {
>
> sessionBus = virDBusGetSessionBus();
> @@ -905,8 +909,8 @@ daemonUsage(const char *argv0, bool privileged)
> fprintf(stderr, "\n");
>
> fprintf(stderr, " %s:\n", _("Configuration file (unless overridden by -f)"));
> - fprintf(stderr, " %s/libvirt/libvirtd.conf\n",
> - privileged ? SYSCONFDIR : "$XDG_CONFIG_HOME");
> + fprintf(stderr, " %s/libvirt/%s.conf\n",
> + privileged ? SYSCONFDIR : "$XDG_CONFIG_HOME", DAEMON_NAME);
> fprintf(stderr, "\n");
>
> fprintf(stderr, " %s:\n", _("Sockets"));
> @@ -932,9 +936,9 @@ daemonUsage(const char *argv0, bool privileged)
>
> fprintf(stderr, " %s:\n",
> _("PID file (unless overridden by -p)"));
> - fprintf(stderr, " %s\n",
> - privileged ? LOCALSTATEDIR "/run/libvirtd.pid":
> - "$XDG_RUNTIME_DIR/libvirt/libvirtd.pid");
> + fprintf(stderr, " %s/%s.pid\n",
> + privileged ? LOCALSTATEDIR "/run" : "$XDG_RUNTIME_DIR/libvirt",
> + DAEMON_NAME);
> fprintf(stderr, "\n");
> }
>
> @@ -1098,7 +1102,7 @@ int main(int argc, char **argv) {
> if (!pid_file &&
> virPidFileConstructPath(privileged,
> LOCALSTATEDIR,
> - "libvirtd",
> + DAEMON_NAME,
> &pid_file) < 0) {
> VIR_ERROR(_("Can't determine pid file path."));
> exit(EXIT_FAILURE);
> @@ -1178,7 +1182,7 @@ int main(int argc, char **argv) {
> goto cleanup;
> }
>
> - if (!(srv = virNetServerNew("libvirtd", 1,
> + if (!(srv = virNetServerNew(DAEMON_NAME, 1,
> config->min_workers,
> config->max_workers,
> config->prio_workers,
> diff --git a/src/remote/remote_daemon_config.c b/src/remote/remote_daemon_config.c
> index 537b90a855..3e62b4203f 100644
> --- a/src/remote/remote_daemon_config.c
> +++ b/src/remote/remote_daemon_config.c
> @@ -77,7 +77,8 @@ int
> daemonConfigFilePath(bool privileged, char **configfile)
> {
> if (privileged) {
> - if (VIR_STRDUP(*configfile, SYSCONFDIR "/libvirt/libvirtd.conf") < 0)
Maybe cleanup configfile on the error path? Not presently a bug,
but might become a leak if additional error exits are added later.
> + if (VIR_STRDUP(*configfile,
> + SYSCONFDIR "/libvirt/" DAEMON_NAME ".conf") < 0)
> goto error;
> } else {
> char *configdir = NULL;
> @@ -85,7 +86,7 @@ daemonConfigFilePath(bool privileged, char **configfile)
> if (!(configdir = virGetUserConfigDirectory()))
> goto error;
>
> - if (virAsprintf(configfile, "%s/libvirtd.conf", configdir) < 0) {
> + if (virAsprintf(configfile, "%s/%s.conf", configdir, DAEMON_NAME) < 0) {
> VIR_FREE(configdir);
> goto error;
> }
> --
> 2.21.0
Reviewed-by: Christophe de Dinechin <dinechin at redhat.com>
--
Cheers,
Christophe de Dinechin (IRC c3d)
More information about the libvir-list
mailing list