Index: etc/defaults/rc.conf =================================================================== RCS file: /cvsroot/src/etc/defaults/rc.conf,v retrieving revision 1.56.2.5 diff -u -r1.56.2.5 rc.conf --- etc/defaults/rc.conf 15 Jul 2004 19:35:56 -0000 1.56.2.5 +++ etc/defaults/rc.conf 3 Sep 2005 20:22:32 -0000 @@ -74,6 +74,9 @@ # critical_filesystems_local="/var" critical_filesystems_remote="/usr" +umount_nfs=NO # Dismount NFS mounts on shutdown, before stopping + # the network. +umount_all=NO # Attempt to dismount all file systems on shutdown. # Swap device controls. # Index: etc/rc.d/mountall =================================================================== RCS file: /cvsroot/src/etc/rc.d/mountall,v retrieving revision 1.3 diff -u -r1.3 mountall --- etc/rc.d/mountall 13 May 2000 08:45:07 -0000 1.3 +++ etc/rc.d/mountall 3 Sep 2005 20:22:32 -0000 @@ -5,12 +5,26 @@ # PROVIDE: mountall # REQUIRE: beforemountlkm +# KEYWORD: shutdown . /etc/rc.subr name="mountall" start_cmd="echo 'Mounting all filesystems...'; mount -a" stop_cmd="echo 'Unmounting all filesystems...'; umount -a" +stop_cmd="mountall_stop" + +mountall_stop() +{ + if checkyesno umount_nfs; then + echo "Attempting to dismount all NFS mounts" + umount -a -t nfs + fi + if checkyesno umount_all || [ -n "$rc_force" ]; then + echo "Attempting to dismount all file systems" + umount -a + fi +} load_rc_config $name run_rc_command "$1" Index: etc/rc.d/network =================================================================== RCS file: /cvsroot/src/etc/rc.d/network,v retrieving revision 1.44.4.2 diff -u -r1.44.4.2 network --- etc/rc.d/network 5 Jul 2005 21:23:17 -0000 1.44.4.2 +++ etc/rc.d/network 3 Sep 2005 20:22:34 -0000 @@ -6,6 +6,7 @@ # PROVIDE: network # REQUIRE: ipfilter ipsec mountcritlocal root tty sysctl # BEFORE: NETWORKING +# KEYWORD: shutdown . /etc/rc.subr @@ -200,7 +201,7 @@ while read args; do [ -z "$args" ] && continue case "$args" in - "#"*|create) + "#"*|-*|create) ;; "!"*) eval ${args#*!} @@ -378,8 +379,19 @@ for int in $tmp; do eval args=\$ifconfig_$int if [ -n "$args" ] || [ -f /etc/ifconfig.$int ]; then - echo -n " $int" + echo " $int" ifconfig $int down + if [ -f /etc/ifconfig.$int ]; then + while read args; do + [ -z "$args" ] && continue + case "$args" in + "-"*) + eval ifconfig $int \ + ${args#*-} + ;; + esac + done < /etc/ifconfig.$int + fi if ifconfig $int destroy 2>/dev/null && \ checkyesno ipfilter; then # resync ipf(4)