phunix/etc/rs.inet
David van Moolenbroek c58da9fbc3 Rename MINIX service(8) to minix-service(8)
IMPORTANT: this change has a docs/UPDATING entry!

This rename is unfortunately necessary because NetBSD has decided to
create its own service(8) utility, and we will want to import theirs
as well.  The two can obviously not coexist.

Also move ours from /bin to /sbin, as it is a superuser-only utility.

Change-Id: Ic6e46ffb3a84b4747d2fdcb0d74e62dbea065039
2017-02-22 17:16:21 +00:00

87 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
# Recovery script for INET/lwip. It restarts daemons dependent on it in order
# to recover TCP state.
kill_by_name()
{
label="$1"
pid=`ps ax | grep "$label" | grep -v grep | sed 's,[ ]*\([0-9]*\).*,\1,'`
if [ X"$pid" = X ]
then
return 1 # No such process
fi
echo "killing pid $pid for $label"
kill -9 $pid
}
daemonize()
{
# Function to start a daemon, if it exists.
local IFS=':'
local name="$1"
test "$1" = tcpd && name="$2"
for dir in $PATH
do
if [ -f "$dir/$1" ]
then
# check if this service is disabled at the boot monitor.
if disabled $name; then return; fi
echo -n " $name"
"$@" &
return
fi
done
}
disabled()
{
ifs="$IFS"; IFS=,
for skip in `sysenv disable`
do
if [ "$skip" = "$1" ]
then
IFS="$ifs"; unset ifs
return 0
fi
done
IFS="$ifs"; unset ifs
return 1
}
exec > /dev/console
echo "Arguments: $@"
restarts=$(grep restarts /proc/service/$1 |cut -d: -f2)
restarts=$(( $restarts + 1 ))
minix-service down "$1"
kill_by_name dhcpd
kill_by_name nonamed
kill_by_name syslogd
# Wait a moment to let daemons clean themselves up
sleep 3
if [ X`/bin/sysenv lwip` = Xyes ]
then
minix-service up /service/lwip -script /etc/rs.inet -dev /dev/ip -restarts $restarts
dhcpd --lwip &
else
minix-service up /service/inet -script /etc/rs.inet -dev /dev/ip -restarts $restarts
daemonize dhcpd
fi
daemonize nonamed -L
daemonize syslogd
# Restart SSH daemon if installed and running
if [ -f /usr/pkg/etc/rc.d/sshd ]
then
/usr/pkg/etc/rc.d/sshd status | grep -v not > /dev/null
if [ $? -eq 0 ]
then
/usr/pkg/etc/rc.d/sshd restart
fi
fi