[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