Timothy Redaelli via dev <[email protected]> writes: > When systemd socket-activates ovsdb-server, it sets LISTEN_FDNAMES > to the socket unit name and passes the listening socket as fd 3. > Detect this in do_start_ovsdb() and use --remote=pfd:3 instead of > --remote=punix:$DB_SOCK. > > Validate LISTEN_PID against the current shell's PID, as required by > sd_listen_fds(3), to ensure the variables were set for this process > and not inherited from a parent. > > Unset LISTEN_FDS, LISTEN_FDNAMES, and LISTEN_PID after consuming > them to prevent propagation to child processes.
Which child processes gets started when we are under systemd? I thought we don't use the monitor process when run under systemd, so I'm not sure why we would need to clear these? Is it just precaution? > Co-authored-by: Lubomir Rintel <[email protected]> > Signed-off-by: Lubomir Rintel <[email protected]> > Signed-off-by: Timothy Redaelli <[email protected]> > --- > utilities/ovs-ctl.in | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in > index c65c76812..dff416f08 100644 > --- a/utilities/ovs-ctl.in > +++ b/utilities/ovs-ctl.in > @@ -149,7 +149,13 @@ do_start_ovsdb () { > set "$@" --no-self-confinement > fi > set "$@" -vconsole:emer -vsyslog:err -vfile:info > - set "$@" --remote=punix:"$DB_SOCK" > + if test X"$LISTEN_PID" = X"$$" && \ > + test X"$LISTEN_FDNAMES" = X"ovsdb-server.socket"; then > + unset LISTEN_FDS LISTEN_FDNAMES LISTEN_PID > + set "$@" --remote=pfd:3 I think also LISTEN_PIDFDID should be cleared if we're clearing these, right? > + else > + set "$@" --remote=punix:"$DB_SOCK" > + fi > set "$@" --private-key=db:Open_vSwitch,SSL,private_key > set "$@" --certificate=db:Open_vSwitch,SSL,certificate > set "$@" --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
