initial-freebsd-port-work-20010414
[openafs.git] / src / afsd / afs.rc.fbsd
1 #!/bin/sh
2 # Copyright 2000, International Business Machines Corporation and others.
3 # All Rights Reserved.
4
5 # This software has been released under the terms of the IBM Public
6 # License.  For details, see the LICENSE file in the top-level source
7 # directory or online at http://www.openafs.org/dl/license10.html
8
9 . /etc/rc.common
10
11 CheckForNetwork 
12
13 if [ "${NETWORKUP}" = "-NO-" ]; then exit; fi
14
15 if [ -r /var/db/openafs ]; then
16    VICEETC=/var/db/openafs/etc
17    AFSD=/usr/sbin/afsd
18 else
19    VICEETC=/usr/vice/etc
20    AFSD=$VICEETC/afsd
21 fi
22 CONFIG=$VICEETC/config
23 AFSDOPT=$CONFIG/afsd.options
24 PACKAGE=$CONFIG/package.options
25
26 LARGE="-stat 2800 -dcache 2400 -daemons 5 -volumes 128"
27 MEDIUM="-stat 2000 -dcache 800 -daemons 3 -volumes 70"
28 SMALL="-stat 300 -dcache 100 -daemons 2 -volumes 50"
29
30 if [ -f $AFSDOPT ]; then
31     OPTIONS=`cat $AFSDOPT`
32 else
33     OPTIONS=$MEDIUM
34 fi
35
36 # Need the commands ps, awk, kill, sleep
37 PATH=${PATH}${PATH:+:}/sbin:/bin:/usr/bin
38 if kmodstat | grep -q openafs ; then
39 :
40 else
41 if [ -d $VICEETC/afs.ko ]; then
42         echo "Loading AFS kernel extensions"
43         kldload $VICEETC/afs.ko
44 else
45         echo "$VICEETC/afs.ko does not exist. Skipping AFS startup."
46         exit 1
47 fi
48 fi
49 if kldstat | grep -q openafs ; then
50 :
51 else
52         echo "AFS kernel extensions failed to initialize. Skipping AFS startup."
53 fi
54
55 #
56 # Start the AFS server processes if a bosserver exists
57 #
58
59 if [ -x /usr/afs/bin/bosserver ]; then
60         echo "Starting AFS Server processes"
61         /usr/afs/bin/bosserver
62         OPTIONS="$OPTIONS -nosettime"
63         sleep 30
64 fi
65
66 #
67 # Check that all of the client configuration files exist
68 #
69
70 for file in $AFSD $VICEETC/cacheinfo \
71             $VICEETC/ThisCell $VICEETC/CellServDB
72 do
73         if [ ! -f ${file} ]; then
74                 echo "${file} does not exist. Not starting AFS client."
75                 exit 1
76         fi
77 done
78
79 #
80 # Check that the root directory for AFS (/afs) 
81 # and the cache directory (/usr/vice/cache) both exist
82 #
83
84 for dir in `awk -F: '{print $1, $2}' $VICEETC/cacheinfo`
85 do
86         if [ ! -d ${dir} ]; then
87                 echo "${dir} does not exist. Not starting AFS client."
88                 exit 2
89         fi
90 done
91
92 echo "Starting afsd"
93 $AFSD $OPTIONS
94
95 #
96 # Run package to update the disk
97 #
98 if [ -f /usr/afsws/etc/package -a -f $PACKAGE ]; then
99         /usr/afsws/etc/package -v -o `cat $PACKAGE` > /dev/console 2>&1
100 case $? in
101 0)
102         (echo "Package completed successfully") > /dev/console 2>&1
103         date > /dev/console 2>&1
104         ;;
105 4)
106         (echo "Rebooting to restart system") > /dev/console 2>&1
107         sync
108         /sbin/reboot
109         ;;
110 *)
111         (echo "Package update failed; continuing") > /dev/console 2>&1
112         ;;
113 esac
114
115 fi
116
117 #
118 # Start AFS inetd services
119 # (See the AFS Command Ref. for notes on the proper configuration of inetd.afs)
120 #
121 if [ -f /usr/sbin/inetd.afs -a -f /etc/inetd.conf.afs ]; then
122         /usr/sbin/inetd.afs /etc/inetd.conf.afs
123 fi