blob: 67a7606c962c52d07c88ffd85f29de295a522d29 [file] [log] [blame]
Harald Welte0e6be0e2010-08-25 21:57:59 +02001#!/bin/sh
2### BEGIN INIT INFO
3# Provides: osmo-nitb
4# Required-Start: $network $local_fs
5# Required-Stop:
6# Default-Start: 2 3 4 5
7# Default-Stop: 0 1 6
8# Short-Description: Osmocom GSM network-in-a-box
9# Description: A minimal implementation of the GSM Base Station Controller,
10# Mobile Switching Center, Home Location regster and all other
11# components to run a self-contained GSM network.
12### END INIT INFO
13
14# Author: Harald Welte <laforge@gnumonks.org>
15
16# PATH should only include /usr/* if it runs after the mountnfs.sh script
17PATH=/sbin:/usr/sbin:/bin:/usr/bin
18DESC=osmo-nitb # Introduce a short description here
19NAME=osmo-nitb # Introduce the short server's name here
20DAEMON=/usr/sbin/bsc_hack # Introduce the server's location here
21DAEMON_ARGS="-D" # Arguments to run the daemon with
22PIDFILE=/var/run/$NAME.pid
23SCRIPTNAME=/etc/init.d/$NAME
24
25# Exit if the package is not installed
26[ -x $DAEMON ] || exit 0
27
28# Read configuration variable file if it is present
29[ -r /etc/default/$NAME ] && . /etc/default/$NAME
30
31# Load the VERBOSE setting and other rcS variables
32. /lib/init/vars.sh
33
34# Define LSB log_* functions.
35# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
36. /lib/lsb/init-functions
37
38DAEMON_ARGS="$DAEMON_ARGS -c $CONFIG_FILE"
39
40#
41# Function that starts the daemon/service
42#
43do_start()
44{
45 # Return
46 # 0 if daemon has been started
47 # 1 if daemon was already running
48 # 2 if daemon could not be started
49 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
50 || return 1
51 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
52 $DAEMON_ARGS \
53 || return 2
54 # Add code here, if necessary, that waits for the process to be ready
55 # to handle requests from services started subsequently which depend
56 # on this one. As a last resort, sleep for some time.
57}
58
59#
60# Function that stops the daemon/service
61#
62do_stop()
63{
64 # Return
65 # 0 if daemon has been stopped
66 # 1 if daemon was already stopped
67 # 2 if daemon could not be stopped
68 # other if a failure occurred
69 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
70 RETVAL="$?"
71 [ "$RETVAL" = 2 ] && return 2
72 # Wait for children to finish too if this is a daemon that forks
73 # and if the daemon is only ever run from this initscript.
74 # If the above conditions are not satisfied then add some other code
75 # that waits for the process to drop all resources that could be
76 # needed by services started subsequently. A last resort is to
77 # sleep for some time.
78 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
79 [ "$?" = 2 ] && return 2
80 # Many daemons don't delete their pidfiles when they exit.
81 rm -f $PIDFILE
82 return "$RETVAL"
83}
84
85#
86# Function that sends a SIGHUP to the daemon/service
87#
88do_reload() {
89 #
90 # If the daemon can reload its configuration without
91 # restarting (for example, when it is sent a SIGHUP),
92 # then implement that here.
93 #
94 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
95 return 0
96}
97
98case "$1" in
99 start)
100 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
101 do_start
102 case "$?" in
103 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
104 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
105 esac
106 ;;
107 stop)
108 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
109 do_stop
110 case "$?" in
111 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
112 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
113 esac
114 ;;
115 status)
116 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
117 ;;
118 #reload|force-reload)
119 #
120 # If do_reload() is not implemented then leave this commented out
121 # and leave 'force-reload' as an alias for 'restart'.
122 #
123 #log_daemon_msg "Reloading $DESC" "$NAME"
124 #do_reload
125 #log_end_msg $?
126 #;;
127 restart|force-reload)
128 #
129 # If the "reload" option is implemented then remove the
130 # 'force-reload' alias
131 #
132 log_daemon_msg "Restarting $DESC" "$NAME"
133 do_stop
134 case "$?" in
135 0|1)
136 do_start
137 case "$?" in
138 0) log_end_msg 0 ;;
139 1) log_end_msg 1 ;; # Old process is still running
140 *) log_end_msg 1 ;; # Failed to start
141 esac
142 ;;
143 *)
144 # Failed to stop
145 log_end_msg 1
146 ;;
147 esac
148 ;;
149 *)
150 #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
151 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
152 exit 3
153 ;;
154esac
155
156: