Re: Understanding the syslogd-linux Service Script

From: Laurent Bercot <ska-supervision_at_skarnet.org>
Date: Sat, 12 Sep 2020 10:08:09 +0000

>The s6-ipcserverd docs specifically state that it expects a bound
>and listening SOCK_STREAM socket, and this led me to the `ipc_accept()`
>call that the program makes. Out of curiosity, is there another
>s6-family program that handles SOCK_DGRAM sockets? Otherwise, I'll
>look in to socklog as Laurent suggested.

  There is not, because the UCSPI model - the one that s6-ipcserver
implements - is about handling data *streams*, and forking a child to
handle each separate client (as the venerable inetd does).

  There are workarounds and hacks to handle datagram sequences with a
similar architecture, but it's never perfect: clients have to connect
(which an additional restriction), you lose natural message boundaries,
and you don't have an explicit EOF so the child needs to die on a
timeout - which makes the thing awkward and actually *adds* complexity,
when the whole point of UCSPI is to make every component as simple as
possible.

  When you need to listen to a /dev/log datagram socket, socklog is
definitely the simplest, and correct, approach.

--
  Laurent
Received on Sat Sep 12 2020 - 10:08:09 UTC

This archive was generated by hypermail 2.3.0 : Sun May 09 2021 - 19:44:19 UTC