# Copyright 2021 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 "Bluetooth Adapter"
author "ChromeOS BT <chromeos-bt-team@google.com>"

# Limit respawning in case of crashloop
respawn limit 10 5
respawn

# This daemon manages the Bluetooth connections on a system. It can be killed at
# the cost of an interruption in Bluetooth connectivity.
oom score -100

import HCI
instance $HCI

pre-start script
  if [ "$HCI" -ge "0" ] 2>/dev/null; then
    # HCI is a valid value (number >= 0) so do nothing.
    # Values < 0 and non-numerical values will fall through.
    :
  else
    # Invalid HCI value should fail
    logger -is -p daemon.warning -t "${UPSTART_JOB}" -- \
      "Invalid params on btadapterd. HCI=${HCI}"
    exit 1
  fi
end script

post-stop script
  rm "/run/bluetooth/bluetooth${HCI}.pid"
end script

# Set GD flags; format is INIT_gd_<>
env GD_FLAGS="INIT_gd_hci=true"

script
  # -u bluetooth changes user.
  # -g bluetooth changes group.
  # -G inherit bluetooth's supplementary groups.
  # -n prevents that execve gains privileges, required for seccomp filters.
  # -c 803500 = cap_sys_nice  (1 << 23) | cap_net_raw          (1 << 13) | \
  #             cap_net_admin (1 << 12) | cap_net_bind_service (1 << 10) | \
  #             cap_setpcap   (1 << 8)
  exec minijail0 \
  -u bluetooth -g bluetooth -G -n \
  -c 803500 \
  -- /usr/bin/btadapterd --hci=$HCI ${GD_FLAGS}
end script
