diff mbox

package/quagga: Add systemd service

Message ID 1463141985-23802-1-git-send-email-nroach44@gmail.com
State Changes Requested
Headers show

Commit Message

Nathaniel Roach May 13, 2016, 12:19 p.m. UTC
Create a template unit, as there are a few different daemons
available, but all of them accept/use the same basic runtime arguments.

Allow use of a /etc/default/ file to customise each daemon.

(Some daemons, like the zebra backend, have custom flags that cause
other daemons to exit when used)

The zebra backend is required to modify routes on the host system,
so we require it. Systemd handles this just fine, and a circular
dependency is avoided

Signed-off-by: Nathaniel Roach <nroach44@gmail.com>
---
 package/quagga/quagga.service | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
 create mode 100644 package/quagga/quagga.service

Comments

Nathaniel Roach May 13, 2016, 1:48 p.m. UTC | #1
There's two things wrong with this that I've spotted:

Firstly, do we want to run any binary under /sbin? Do we change the 
output folder of quagga's ./configure? Do we make a folder with symlinks?

Secondly, I'll change Requires=quagga@zebra.service to Wants= as we 
allow building quagga without zebra, and the other dameons can still 
talk on the network without it.

Thanks,

Nathaniel
On 13/05/16 20:19, Nathaniel Roach wrote:
> Create a template unit, as there are a few different daemons
> available, but all of them accept/use the same basic runtime arguments.
>
> Allow use of a /etc/default/ file to customise each daemon.
>
> (Some daemons, like the zebra backend, have custom flags that cause
> other daemons to exit when used)
>
> The zebra backend is required to modify routes on the host system,
> so we require it. Systemd handles this just fine, and a circular
> dependency is avoided
>
> Signed-off-by: Nathaniel Roach <nroach44@gmail.com>
> ---
>   package/quagga/quagga.service | 19 +++++++++++++++++++
>   1 file changed, 19 insertions(+)
>   create mode 100644 package/quagga/quagga.service
>
> diff --git a/package/quagga/quagga.service b/package/quagga/quagga.service
> new file mode 100644
> index 0000000..e7ab584
> --- /dev/null
> +++ b/package/quagga/quagga.service
> @@ -0,0 +1,19 @@
> +[Unit]
> +Description=Quagga %i routing daemon
> +PartOf=quagga.service
> +ReloadPropagatedFrom=quagga.service
> +Requires=quagga@zebra.service
> +
> +[Service]
> +PrivateTmp=true
> +KillMode=mixed
> +Type=forking
> +EnvironmentFile=/etc/default/quagga-%i.conf
> +ExecStart=/sbin/%i --daemon $OPTS -f /etc/quagga/%i.conf -i /var/run/quagga/%i.pid
> +PIDFile=/var/run/quagga/%i.pid
> +KillSignal=SIGINT
> +Restart=on-failure
> +RestartSec=1
> +
> +[Install]
> +WantedBy=multi-user.target
Thomas Petazzoni May 17, 2016, 8:35 p.m. UTC | #2
Hello,

On Fri, 13 May 2016 21:48:20 +0800, Nathaniel Roach wrote:

> Firstly, do we want to run any binary under /sbin? Do we change the 
> output folder of quagga's ./configure? Do we make a folder with symlinks?

Why wouldn't we want to run a binary from /sbin? What's the problem
with that?

Moreover, keep in mind that when systemd is used, /usr/sbin and /sbin
are the same thing.

> Secondly, I'll change Requires=quagga@zebra.service to Wants= as we 
> allow building quagga without zebra, and the other dameons can still 
> talk on the network without it.

This is too systemd specific for my knowledge, so I'll trust what you
submit.

Since you said yourself that you will send an updated version with
additional fixes, I've marked this one as Changes Requested in
patchwork.

Thanks,

Thomas
diff mbox

Patch

diff --git a/package/quagga/quagga.service b/package/quagga/quagga.service
new file mode 100644
index 0000000..e7ab584
--- /dev/null
+++ b/package/quagga/quagga.service
@@ -0,0 +1,19 @@ 
+[Unit]
+Description=Quagga %i routing daemon
+PartOf=quagga.service
+ReloadPropagatedFrom=quagga.service
+Requires=quagga@zebra.service
+
+[Service]
+PrivateTmp=true
+KillMode=mixed
+Type=forking
+EnvironmentFile=/etc/default/quagga-%i.conf
+ExecStart=/sbin/%i --daemon $OPTS -f /etc/quagga/%i.conf -i /var/run/quagga/%i.pid
+PIDFile=/var/run/quagga/%i.pid
+KillSignal=SIGINT
+Restart=on-failure
+RestartSec=1
+
+[Install]
+WantedBy=multi-user.target