114 lines
3.8 KiB
Text
114 lines
3.8 KiB
Text
#
|
|
# Copyright (C) 2012 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
description "Run the shill network connection manager"
|
|
author "chromium-os-dev@chromium.org"
|
|
|
|
# shill termination may take more than 5s (the default kill timeout) in some
|
|
# cases (e.g. it needs to disconnect a cellular modem from the network). A
|
|
# longer kill timeout is used to ensure that shill terminates properly in most
|
|
# cases. Also, stop shill on "starting pre-shutdown" so its exiting blocks the
|
|
# chromeos_shutdown script from running (jobs that "stop on stopping
|
|
# boot-services" may still be running in parallel with chromeos_shutdown if
|
|
# they do not exit quickly).
|
|
start on @expected_started_services@
|
|
stop on starting pre-shutdown
|
|
kill timeout 10
|
|
respawn
|
|
|
|
# Default parameters to be overridden by upstart configuration.
|
|
env SHILL_LOG_LEVEL=0
|
|
env SHILL_LOG_SCOPES=
|
|
env SHILL_PASSIVE_MODE=
|
|
env SHILL_PREPEND_DNS_SERVERS=
|
|
env SHILL_ACCEPT_HOSTNAME_FROM=
|
|
env SHILL_MINIMUM_MTU=
|
|
env BLACKLISTED_DEVICES=
|
|
env DHCPV6_ENABLED_DEVICES=
|
|
env IGNORE_UNKNOWN_ETHERNET=
|
|
|
|
# Hook for mod_for_test_scripts/100setupTestingInterface.
|
|
env SHILL_TEST_DEVICES=""
|
|
|
|
pre-start script
|
|
bootstat shill-start
|
|
|
|
# Create state directory
|
|
mkdir -p /var/run/shill
|
|
|
|
# Create storage for the shill global profile.
|
|
mkdir -p /var/cache/shill
|
|
|
|
# Use flimflam's default profile if shill doesn't have one.
|
|
if [ ! -f /var/cache/shill/default.profile -a \
|
|
-f /var/cache/flimflam/default.profile ]; then
|
|
mv /var/cache/flimflam/default.profile /var/cache/shill/default.profile
|
|
chmod a+r /var/cache/shill/default.profile
|
|
fi
|
|
|
|
# Set up dhcpcd's /var/{lib|run} dirs to run as user 'dhcp'.
|
|
mkdir -m 0755 -p /var/lib/dhcpcd
|
|
mkdir -m 0755 -p /var/run/dhcpcd
|
|
chmod -R u+rwX,g+rX,o+rX /var/lib/dhcpcd
|
|
chown -R dhcp:dhcp /var/lib/dhcpcd
|
|
chown -R dhcp:dhcp /var/run/dhcpcd
|
|
|
|
# This option is no longer supported.
|
|
rm -f /home/chronos/.disable_shill
|
|
end script
|
|
|
|
post-stop script
|
|
bootstat shill-stop
|
|
end script
|
|
|
|
script
|
|
DAEMONBIN="shill"
|
|
ARGS="--log-level=${SHILL_LOG_LEVEL} --log-scopes=${SHILL_LOG_SCOPES}"
|
|
if [ -n "${BLACKLISTED_DEVICES}" ] && [ -n "${SHILL_TEST_DEVICES}" ]; then
|
|
ARGS="${ARGS} --device-black-list=${BLACKLISTED_DEVICES},${SHILL_TEST_DEVICES}"
|
|
elif [ -n "${BLACKLISTED_DEVICES}" ]; then
|
|
ARGS="${ARGS} --device-black-list=${BLACKLISTED_DEVICES}"
|
|
elif [ -n "${SHILL_TEST_DEVICES}" ]; then
|
|
ARGS="${ARGS} --device-black-list=${SHILL_TEST_DEVICES}"
|
|
fi
|
|
if [ -n "${SHILL_PASSIVE_MODE}" ]; then
|
|
ARGS="${ARGS} --passive-mode"
|
|
fi
|
|
if [ -n "${SHILL_PREPEND_DNS_SERVERS}" ]; then
|
|
ARGS="${ARGS} --prepend-dns-servers=${SHILL_PREPEND_DNS_SERVERS}"
|
|
fi
|
|
if [ -n "${SHILL_ACCEPT_HOSTNAME_FROM}" ]; then
|
|
ARGS="${ARGS} --accept-hostname-from=${SHILL_ACCEPT_HOSTNAME_FROM}"
|
|
fi
|
|
if [ -n "${SHILL_MINIMUM_MTU}" ]; then
|
|
ARGS="${ARGS} --minimum-mtu=${SHILL_MINIMUM_MTU}"
|
|
fi
|
|
if [ -n "${DHCPV6_ENABLED_DEVICES}" ]; then
|
|
ARGS="${ARGS} --dhcpv6-enabled-devices=${DHCPV6_ENABLED_DEVICES}"
|
|
fi
|
|
if [ -n "${IGNORE_UNKNOWN_ETHERNET}" ]; then
|
|
ARGS="${ARGS} --ignore-unknown-ethernet"
|
|
fi
|
|
ARGS="${ARGS} ${SHILL_TEST_ARGS}"
|
|
|
|
# If OOBE has not completed (i.e. EULA not agreed to), do not run
|
|
# portal checks.
|
|
if [ ! -f /home/chronos/.oobe_completed ]; then
|
|
ARGS="${ARGS} --portal-list="
|
|
fi
|
|
|
|
exec ${DAEMONBIN} ${ARGS}
|
|
end script
|