| # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| description "Start the avahi daemon" |
| author "chromium-os-dev@chromium.org" |
| |
| # Note: this job is not automatically started on boot-up. It is expected |
| # to be started manually (e.g. "initctl start avahi" or similar) by |
| # software (such as the auto-update system) that needs it. |
| stop on stopping system-services |
| |
| env AVAHI_DAEMON_CONF=/etc/avahi/avahi-daemon.conf |
| import NETNS |
| |
| respawn |
| expect fork |
| |
| pre-start script |
| mkdir -p /run/avahi-daemon |
| end script |
| |
| script |
| # -r: remount namespace to /proc inside the mini-jail |
| # (read only and implies -v). |
| # -v: forces process to enter into unique namespace with their own isolated |
| # instance of the global resource. |
| # -i: Exit immediately after fork(2). The jailed process will run in the |
| # background. |
| # -b /var/lib/dbus: We need read access to the dbus id. |
| # -b /run/dbus: We need access to dbus. |
| # -b /dev/log: We need access to syslog. |
| # -T static: static mode to lockdown pre-exec. |
| # TODO: When we upgrade to avahi-0.7, change the /var/run path to /run. |
| set -- /sbin/minijail0 -rvi --uts \ |
| -T static \ |
| --profile=minimalistic-mountns \ |
| -k '/var,/var,tmpfs,MS_NODEV|MS_NOEXEC|MS_NOSUID,mode=755,size=10M' \ |
| -b /var/run/avahi-daemon,,1 \ |
| -b /var/lib/dbus \ |
| -k '/run,/run,tmpfs,MS_NODEV|MS_NOEXEC|MS_NOSUID,mode=755,size=10M' \ |
| -b /run/dbus,,1 \ |
| -b /dev/log \ |
| /usr/sbin/avahi-daemon --syslog --file=${AVAHI_DAEMON_CONF} |
| # TODO(crbug.com/917790): Use minijail0 -e. Currently it fails to enter |
| # existing network namespaces by EBADF. |
| case "${NETNS}" in |
| "") ;; |
| *) set -- /bin/ip netns exec "${NETNS}" "$@";; |
| esac |
| exec "$@" |
| end script |