# Copyright 2018 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description     "Modem firmware updater daemon"
author          "ejcaruso@chromium.org"

start on starting system-services
stop on stopping system-services

# Same oom score level as e.g. shill
oom score -100

# Set to true to turn on debug mode on startup.
env DEBUG_MODE="false"
import DEBUG_MODE

script
  # Override logging level if sticky flag exists.
  if [ -f /var/cache/modem-utilities/log_modemfwd_debug ]; then
    DEBUG_MODE="true"
  fi
  # Default helper directory is /opt/google/modemfwd-helpers and if the
  # firmware directory isn't specified we load from the cellular component.
  # -u Run as modem user.
  # -g Run as modem group.
  # -G Inherit supplementary groups from new uid.
  # -v Enter new mount namespace, allows to change mounts inside jail.
  # -n prevents the executable from gaining new privileges.
  # -b /var/lib/metrics Mount with write permissions for uma metrics.
  # -k /run/imageloader with MS_BIND|MS_REC to pick up any new DLC package
  # -c cap_net_admin Run with privileges to use devlink (FM350)
  #    cap_setpcap Allow us to remove capabilities in helper thread
  exec minijail0 -u modem -g modem -G -v -n \
      -b /var/lib/metrics,,1 \
      -k '/run/imageloader,/run/imageloader,none,MS_BIND|MS_REC' \
      -c cap_net_admin,cap_setpcap=e --ambient \
      /usr/bin/modemfwd \
      --firmware_directory=/opt/google/modemfwd-firmware \
      --debug_mode="${DEBUG_MODE}"

end script
