diff --git a/systemd/nlsr.service.in b/systemd/nlsr.service.in new file mode 100644 index 0000000..9cce740 --- /dev/null +++ b/systemd/nlsr.service.in @@ -0,0 +1,57 @@ +# Copyright (c) 2014-2019, The University of Memphis, +# Regents of the University of California, +# Arizona Board of Regents. +# +# This file is part of NLSR (Named-data Link State Routing). +# See AUTHORS.md for complete list of NLSR authors and contributors. +# +# NLSR is free software: you can redistribute it and/or modify it under the terms +# of the GNU General Public License as published by the Free Software Foundation, +# either version 3 of the License, or (at your option) any later version. +# +# NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# NLSR, e.g., in COPYING.md file. If not, see . +# +# Author: Eric Newberry +# Author: Davide Pesavento + +[Unit] +Description=NDN Link State Routing Daemon +Documentation=man:nlsr(1) +BindsTo=nfd.service +After=nfd.service + +[Service] +Environment=HOME=%S/ndn/nlsr +ExecStart=@BINDIR@/nlsr -f @SYSCONFDIR@/ndn/nlsr.conf +Restart=on-failure +RestartPreventExitStatus=2 +User=nlsr + +LockPersonality=yes +MemoryDenyWriteExecute=yes +NoNewPrivileges=yes +PrivateDevices=yes +PrivateTmp=yes +PrivateUsers=yes +ProtectControlGroups=yes +ProtectHome=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +ProtectSystem=strict +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 +RestrictNamespaces=yes +RestrictRealtime=yes +# "nlsr" is the state-dir, "ndn/nlsr" is the HOME +StateDirectory=nlsr ndn/nlsr +SystemCallArchitectures=native +SystemCallErrorNumber=EPERM +SystemCallFilter=~@clock @cpu-emulation @debug @module @mount @obsolete @privileged @raw-io @reboot @setuid @swap + +[Install] +WantedBy=multi-user.target +WantedBy=nfd.service diff --git a/wscript b/wscript index 42635bb..52c9882 100644 --- a/wscript +++ b/wscript @@ -73,8 +73,6 @@ def configure(conf): conf.load('sanitizers') - conf.define('DEFAULT_CONFIG_FILE', '%s/ndn/nlsr.conf' % conf.env['SYSCONFDIR']) - conf.write_config_header('config.hpp') def build(bld): @@ -113,17 +111,23 @@ def build(bld): source='tools/nlsrc.cpp', use='nlsr-objects') - bld.install_as('${SYSCONFDIR}/ndn/nlsr.conf.sample', 'nlsr.conf') - if bld.env.WITH_TESTS: bld.recurse('tests') + bld.install_as('${SYSCONFDIR}/ndn/nlsr.conf.sample', 'nlsr.conf') + + if Utils.unversioned_sys_platform() == 'linux': + bld(features='subst', + name='nlsr.service', + source='systemd/nlsr.service.in', + target='systemd/nlsr.service') + if bld.env.SPHINX_BUILD: bld(features='sphinx', name='manpages', builder='man', - outdir='docs/manpages', config='docs/conf.py', + outdir='docs/manpages', source=bld.path.ant_glob('docs/manpages/**/*.rst'), install_path='${MANDIR}', VERSION=VERSION)