[Libguestfs] [libnbd PATCH v3 16/19] socket activation: generalize environment construction

Eric Blake eblake at redhat.com
Thu Mar 23 19:00:15 UTC 2023


On Thu, Mar 23, 2023 at 01:10:13PM +0100, Laszlo Ersek wrote:
> In the future, we'd like to add systemd socket activation environment
> variables such that:
> 
> - their values may not be constants (not even for pre-allocating space),
> 
> - they may be optional,
> 
> - regardless of some optional variables being added or not, the positions
>   of those that we do add can be captured, for later reference.
> 
> Generalize prepare_socket_activation_environment() accordingly. Write the
> child PID to "LISTEN_PID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" with the new
> "capturing" interface.
> 
> Signed-off-by: Laszlo Ersek <lersek at redhat.com>
> Reviewed-by: Richard W.M. Jones <rjones at redhat.com>
> ---

Reviewed-by: Eric Blake <eblake at redhat.com>

> @@ -153,13 +237,18 @@  CONNECT_SA.START:
>    if (nbd_internal_execvpe_init (&execvpe_ctx, h->argv.ptr[0], h->argv.len) ==
>        -1) {
>      set_error (errno, "nbd_internal_execvpe_init");
>      goto unlink_sockpath;
>    }
>  
> -  if (prepare_socket_activation_environment (&env) == -1)
> +  num_vars = 0;
> +  SACT_VAR_PUSH (sact_var, &num_vars,
> +                 "LISTEN_PID=", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", &pid_ofs);
> +  SACT_VAR_PUSH (sact_var, &num_vars,
> +                 "LISTEN_FDS=", "1", NULL);
> +  if (prepare_socket_activation_environment (&env, sact_var, num_vars) == -1)

With just two variables pushed, this is a lot of engineering.  But it
definitely makes future additions much easier.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


More information about the Libguestfs mailing list