--- /dev/null
+local id = os.getenv('SYSTEMD_INSTANCE')
+
+if not id then
+ error('environment variable $SYSTEMD_INSTANCE not set')
+else
+ -- Bind to control socket in run_dir
+ local path = '@run_dir@/control/'..id
+ local ok, err = pcall(net.listen, path, nil, { kind = 'control' })
+ if not ok then
+ error('bind to '..path..' failed '..err)
+ end
+
+ -- Set cache location
+ rawset(cache, 'current_storage', 'lmdb://@systemd_cache_dir@')
+end
lua_config = configuration_data()
lua_config.set('keyfile_default', keyfile_default)
lua_config.set('etc_dir', etc_dir)
+lua_config.set('run_dir', run_dir)
+lua_config.set('systemd_cache_dir', systemd_cache_dir)
lua_config.set('unmanaged', managed_ta ? 'false' : 'true')
trust_anchors = configure_file(
configuration: lua_config,
)
+distro_preconfig = configure_file(
+ input: 'distro-preconfig.lua.in',
+ output: 'distro-preconfig.lua',
+ configuration: lua_config,
+)
+
run_target( # run manually to re-generate kres-gen.lua
'kres-gen',
command: find_program('./kres-gen.sh'),
trust_anchors,
files('zonefile.lua'),
files('kluautil.lua'),
+ distro_preconfig,
]
# install daemon lua sources
lib_dir = join_paths(prefix, get_option('libdir'), 'knot-resolver')
modules_dir = join_paths(lib_dir, 'kres_modules')
sbin_dir = join_paths(prefix, get_option('sbindir'))
-systemd_work_dir = ''
-run_dir = ''
-systemd_unit_dir = ''
-systemd_tmpfiles_dir = ''
+run_dir = join_paths('/run', 'knot-resolver')
+systemd_work_dir = join_paths(prefix, get_option('localstatedir'), 'lib', 'knot-resolver')
+systemd_cache_dir = join_paths(prefix, get_option('localstatedir'), 'cache', 'knot-resolver')
+systemd_unit_dir = join_paths(prefix, 'lib', 'systemd', 'system')
+systemd_tmpfiles_dir = join_paths(prefix, 'lib', 'tmpfiles.d')
mod_inc_dir = include_directories('.', 'contrib/')
## Trust anchors
systemd:
files: @0@'''.format(systemd_files) + '''
work_dir: @0@'''.format(systemd_work_dir) + '''
+ cache_dir: @0@'''.format(systemd_cache_dir) + '''
optional components
client: @0@'''.format(s_build_client) + '''
Type=notify
Environment="SYSTEMD_INSTANCE=%i"
WorkingDirectory=@systemd_work_dir@
-ExecStart=@sbin_dir@/kresd --config=@etc_dir@/kresd.conf --noninteractive
+ExecStart=@sbin_dir@/kresd -c @lib_dir@/distro-preconfig.lua -c @etc_dir@/kresd.conf -n
User=@user@
Group=@group@
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SETPCAP
# systemd
-## paths
-systemd_work_dir = join_paths(
- prefix, get_option('localstatedir'), 'cache', 'knot-resolver')
-systemd_unit_dir = join_paths(prefix, 'lib', 'systemd', 'system')
-systemd_tmpfiles_dir = join_paths(prefix, 'lib', 'tmpfiles.d')
-
## configuration
systemd_config = configuration_data()
systemd_config.set('user', user)
systemd_config.set('sbin_dir', sbin_dir)
systemd_config.set('etc_dir', etc_dir)
systemd_config.set('run_dir', run_dir)
+systemd_config.set('lib_dir', lib_dir)
if systemd_files == 'enabled'
## unit files