blob: d39040fa1d495145247ef1b37be808732304989e [file] [log] [blame]
# Copyright (c) 2012 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.
# modemmanager
#
# starts modemmanager once udev has been started.
# Log level: ERR, WARN, INFO, DEBUG
env MM_LOGLEVEL=INFO
import MM_LOGLEVEL
start on starting system-services
stop on stopping system-services
respawn
# Keep track of the ModemManager process launched by minijail instead of the
# minijail process. minijail exits immediately after launching ModemManager.
expect fork
pre-start script
case "${MM_LOGLEVEL}" in
DEBUG|INFO|WARN|ERR)
;;
*)
logger -p err -t "${UPSTART_JOB}" "Unsupported log level: ${MM_LOGLEVEL}"
exit 1
;;
esac
end script
# Run ModemManager under the 'modem' user/group. Keep the CAP_SYS_ADMIN
# capability to allow ModemManager to set 'closing_wait' to none on the modem
# serial port via ioctl(TIOCGSERIAL). Set NoNewPrivs. CAP_NET_ADMIN is needed to
# create net links for Qrtr devices.
#
# TODO(benchan): Refine the minijail sandbox to further constrain ModemManager.
exec minijail0 -u modem -g modem -c cap_net_admin,cap_sys_admin=e -n -i -- \
/usr/sbin/ModemManager --log-level="${MM_LOGLEVEL}"