summaryrefslogtreecommitdiff
blob: 779c0eba514216b6496f10d20e8fe4272f305efa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/sbin/openrc-run
# Copyright (c) 2008 Saleem Abdulrasool <compnerd@compnerd.org>
# Distributed under the terms of the GNU General Purpose License v2
# $Id$

description="NetworkManager daemon. The service is marked as started only \
when a network connection is established."

depend() {
	need dbus
	provide net
}

start() {
	# If we are re-called by a dispatcher event, we want to mark the service
	# as started without starting the daemon again
	yesno "${IN_BACKGROUND}" && return 0

	[ -z "${INACTIVE_TIMEOUT}" ] && INACTIVE_TIMEOUT="1"

	ebegin "Starting NetworkManager"
	start-stop-daemon --start --quiet --pidfile /run/NetworkManager/NetworkManager.pid \
		--exec /usr/sbin/NetworkManager -- --pid-file /run/NetworkManager/NetworkManager.pid
	local _retval=$?
	eend "${_retval}"
	if [ "x${_retval}" = 'x0' ] && ! nm-online -t "${INACTIVE_TIMEOUT}"; then
		einfo "Marking NetworkManager as inactive. It will automatically be marked"
		einfo "as started after a network connection has been established."
		mark_service_inactive
	fi
	return "${_retval}"
}

stop() {
	# If we are re-called by a dispatcher event, we want to mark the service
	# as inactive without stopping the daemon
	if yesno "${IN_BACKGROUND}"; then
		mark_service_inactive "${SVCNAME}"
		return 0
	fi

	ebegin "Stopping NetworkManager"
	local pidfile=/run/NetworkManager/NetworkManager.pid
	if [ ! -e "${pidfile}" ] && [ -e /var/run/NetworkManager.pid ]; then 
		# Try stopping the pid file used by <0.9.7
		pidfile=/var/run/NetworkManager.pid
		start-stop-daemon --stop --quiet --pidfile "${pidfile}"
		ret=$?
		[ ${ret} = 0 ] && [ -e "${pidfile}" ] && rm "${pidfile}"
		eend ${ret}
	else
		start-stop-daemon --stop --quiet --pidfile "${pidfile}"
		eend $?
	fi
}

# vim: set ft=gentoo-init-d ts=4 :