NetBSD/etc/rc.d/isdnd

71 lines
1.5 KiB
Bash

#!/bin/sh
#
# $NetBSD: isdnd,v 1.8 2002/03/22 04:33:58 thorpej Exp $
#
# PROVIDE: isdnd
# REQUIRE: NETWORKING syslogd mountcritremote
# BEFORE: SERVERS
#
# Note that this means that syslogd will not be listening on
# any isdn addresses. This is considered a feature.
#
. /etc/rc.subr
name="isdnd"
rcvar=$name
required_files="/etc/isdn/${name}.rc"
command="/usr/sbin/${name}"
pidfile="/var/run/${name}.pid"
load_rc_config $name
run_rc_command "$1"
if checkyesno isdnd && checkyesno isdn_autoupdown; then
# The isdn network interfaces could not be marked UP in the
# ifconfig.* files, since the daemon wasn't available then.
# If we are doing start: now it's running, so figure which
# interfaces these applies to and UP them. If doing stop:
# down them (for symetry, and effectively they are down).
case "$rc_arg" in
start)
ifflag="-d"
ifcmd="up"
;;
stop)
ifflag="-u"
ifcmd="down"
;;
*)
exit 0
;;
esac
if [ -z "$isdn_interfaces" ]; then
# the user has not specified a list of interface
# to track isdnd - try to figure ourselfs
tmp=`ifconfig -l $ifflag`
for int in $tmp; do
# Check if the interface has been configured at all
# XXX - does this work with IPv6 ?
if ifconfig $int | fgrep inet >/dev/null; then
case $int in
ippp*)
isdn_interfaces="$isdn_interfaces $int"
;;
irip*)
isdn_interfaces="$isdn_interfaces $int"
;;
esac
fi
done
fi
for int in $isdn_interfaces; do
ifconfig $int $ifcmd
done
fi