Optionally install systemd service files.
If --with-systemd is given when running the configure script, two systemd service files will be installed. There is a template tinc@.service, which can be used to control individual instances of tinc. For example: systemctl enable tinc@foo Will create an instance for tinc with netname foo. There is also a tinc.service, which can be used to start and stop all instances at once.
This commit is contained in:
parent
5ad43673ac
commit
f54a87b800
5 changed files with 57 additions and 2 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
|
||||
SUBDIRS = src doc gui test
|
||||
SUBDIRS = src doc gui test systemd
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
|
|
14
configure.ac
14
configure.ac
|
@ -115,6 +115,17 @@ AC_ARG_WITH(windows2000,
|
|||
]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(systemd,
|
||||
AS_HELP_STRING([--with-systemd@<:@=DIR@:>@], [install systemd service files @<:@to DIR if specified@:>@]),
|
||||
[ systemd=true; systemd_path="$with_systemd" ],
|
||||
[ systemd=false ]
|
||||
)
|
||||
|
||||
AS_IF([test "x$with_systemd" = "xyes"], [systemd_path="/lib/systemd/system"],
|
||||
[AS_IF([test "x$with_systemd" = "xno"], [systemd=false])])
|
||||
|
||||
AC_SUBST(systemd_path, $systemd_path)
|
||||
|
||||
AM_CONDITIONAL(LINUX, test "$linux" = true)
|
||||
AM_CONDITIONAL(BSD, test "$bsd" = true)
|
||||
AM_CONDITIONAL(SOLARIS, test "$solaris" = true)
|
||||
|
@ -123,6 +134,7 @@ AM_CONDITIONAL(CYGWIN, test "$cygwin" = true)
|
|||
AM_CONDITIONAL(UML, test "$uml" = true)
|
||||
AM_CONDITIONAL(VDE, test "$vde" = true)
|
||||
AM_CONDITIONAL(TUNEMU, test "$tunemu" = true)
|
||||
AM_CONDITIONAL(WITH_SYSTEMD, test "$systemd" = true)
|
||||
|
||||
AC_CACHE_SAVE
|
||||
|
||||
|
@ -250,6 +262,6 @@ AC_ARG_ENABLE(jumbograms,
|
|||
]
|
||||
)
|
||||
|
||||
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile gui/Makefile test/Makefile])
|
||||
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile gui/Makefile test/Makefile systemd/Makefile])
|
||||
|
||||
AC_OUTPUT
|
||||
|
|
4
systemd/Makefile.am
Normal file
4
systemd/Makefile.am
Normal file
|
@ -0,0 +1,4 @@
|
|||
if WITH_SYSTEMD
|
||||
systemddir = @systemd_path@
|
||||
dist_systemd_DATA = tinc.service tinc@.service
|
||||
endif
|
20
systemd/tinc.service
Normal file
20
systemd/tinc.service
Normal file
|
@ -0,0 +1,20 @@
|
|||
# This is a mostly empty service, but allows commands like stop, start, reload
|
||||
# to propagate to all tinc@ service instances.
|
||||
|
||||
[Unit]
|
||||
Description=Tinc VPN
|
||||
Documentation=info:tinc
|
||||
Documentation=man:tinc(8) man:tinc.conf(5)
|
||||
Documentation=http://tinc-vpn.org/docs/
|
||||
After=network.target
|
||||
Wants=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/bin/true
|
||||
ExecReload=/bin/true
|
||||
WorkingDirectory=/etc/tinc
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
19
systemd/tinc@.service
Normal file
19
systemd/tinc@.service
Normal file
|
@ -0,0 +1,19 @@
|
|||
[Unit]
|
||||
Description=Tinc net %i
|
||||
Documentation=info:tinc
|
||||
Documentation=man:tinc(8) man:tinc.conf(5)
|
||||
Documentation=http://tinc-vpn.org/docs/
|
||||
PartOf=tinc.service
|
||||
ReloadPropagatedFrom=tinc.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/etc/tinc/%i
|
||||
ExecStart=/usr/sbin/tincd -n %i -D
|
||||
ExecReload=/usr/sbin/tinc -n %i reload
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
TimeoutStopSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=tinc.service
|
Loading…
Reference in a new issue