102 lines
2.1 KiB
Bash
Executable File
102 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## =()<DESTDIR=@<DESTDIR>@>()=
|
|
DESTDIR=/usr/lib/isdn
|
|
## =()<LOCKNAME=@<LOCKNAME>@>()=
|
|
LOCKNAME=/var/lock
|
|
|
|
set -e
|
|
|
|
. /etc/rc.config
|
|
|
|
if [ "$1" = "config" ] ; then # smurfsche Spezialitäten
|
|
cat <<'END' >/tmp/cf.$$
|
|
#
|
|
## welcher ISDN-Treiber? uisdn, i4l, off
|
|
#
|
|
ISDN=uisdn
|
|
END
|
|
fillup /etc/rc.config /tmp/cf.$$
|
|
rm /tmp/cf.$$
|
|
cd /sbin/init.d/rc2.d
|
|
ln -sf ../scripts/uisdn S18uisdn
|
|
ln -sf ../scripts/uisdn K18uisdn
|
|
cd /sbin/init.d/rc3.d
|
|
ln -sf ../scripts/uisdn S18uisdn
|
|
ln -sf ../scripts/uisdn K18uisdn
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$ISDN" != "uisdn" ] ; then exit 0; fi
|
|
|
|
PATH=${DESTDIR}/bin-$(uname -r):${DESTDIR}/bin:$PATH
|
|
|
|
if [ "$1" = "off" -o "$1" = "stop" ] ; then
|
|
trap '' 1 2 15
|
|
echo -n "Killing the ISDN server ... "
|
|
if test -f /var/run/isdn.pid ; then
|
|
read pid < /var/run/isdn.pid
|
|
rm /var/run/isdn.pid
|
|
fi
|
|
pf=$(echo $LOCKNAME | sed -e 's/%s/isdn0/')
|
|
if test -f $pf ; then
|
|
read pid <$pf
|
|
if kill $pid ; then
|
|
sleep 10
|
|
kill -9 $pid || true
|
|
fi
|
|
rm -f $pf
|
|
fi
|
|
|
|
echo -n "find modules ..."
|
|
while read x a b c d ; do
|
|
case "$x" in
|
|
MO*)
|
|
if [ "x$a" = "x-o" ] ; then
|
|
mod=$b
|
|
elif [ "x$b" = "x-o" ] ; then
|
|
mod=$c
|
|
else
|
|
mod=$(basename $a .o)
|
|
fi
|
|
mods="$mod $mods"
|
|
;;
|
|
esac
|
|
done < /etc/isdn.conf
|
|
echo ""
|
|
echo rmmod $mods
|
|
exec rmmod $mods
|
|
exit 0
|
|
fi
|
|
|
|
if test -d /lib/gnu; then
|
|
export LD_LIBRARY_PATH=/lib/gnu
|
|
fi
|
|
|
|
echo $$ > /var/run/isdn.pid
|
|
if lsmod | grep isdn_2 >/dev/null 2>&1 ; then : ; else
|
|
cd /lib/modules/$(uname -r)
|
|
if test -f /tmp/symbols.isdn ; then mv /tmp/symbols.isdn /tmp/symbols.isdn.old ; fi
|
|
while read x a ; do
|
|
case "$x" in
|
|
MO*)
|
|
/bin/echo -n "\rISDN Modules: " >&2
|
|
/bin/echo -n "\rISDN Modules: $a: " >&2
|
|
eval "insmod -m $a" ## wegen name=$(cardname Foo0) in $a
|
|
;;
|
|
esac
|
|
done < /etc/isdn.conf > /tmp/symbols.isdn
|
|
/bin/echo "\rISDN Modules...done. "
|
|
fi
|
|
|
|
cd /var/tmp # for coredumps...
|
|
|
|
ulimit -c 40000
|
|
# ulimit -d 20000
|
|
|
|
set +e
|
|
while test -f /var/run/isdn.pid ; do
|
|
master -wd /etc/isdn.conf 2>>/tmp/isdn.log >>/var/log/isdn
|
|
sleep 5
|
|
done &
|