From c84f8c0e1788e3d4765e26f4bc1ac55a7a0fb5b2 Mon Sep 17 00:00:00 2001 From: Doug Barton Date: Sun, 17 Mar 2002 20:14:11 +0000 Subject: [PATCH] Distinguish between first and last passes of rc.sysctl, and only set mibs whose values are not already what is specified in sysctl.conf. --- etc/rc | 5 ++--- etc/rc.d/sysctl | 18 +++++++++++++++++- etc/rc.sysctl | 18 +++++++++++++++++- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/etc/rc b/etc/rc index db41a8a9fa2c..763ce47d3441 100644 --- a/etc/rc +++ b/etc/rc @@ -404,8 +404,7 @@ esac # Early pass to set the variables we can # if [ -r /etc/rc.sysctl ]; then - echo 'Warnings here may be due to modules that have not been loaded yet' - . /etc/rc.sysctl + . /etc/rc.sysctl first fi # Configure serial devices @@ -918,7 +917,7 @@ fi # Late pass to set variables we missed the first time # if [ -r /etc/rc.sysctl ]; then - . /etc/rc.sysctl + . /etc/rc.sysctl last fi # Raise kernel security level. This should be done only after `fsck' has diff --git a/etc/rc.d/sysctl b/etc/rc.d/sysctl index bedddb636697..1e315f2eb239 100644 --- a/etc/rc.d/sysctl +++ b/etc/rc.d/sysctl @@ -38,7 +38,23 @@ if [ -f /etc/sysctl.conf ]; then \#*|'') ;; *) - sysctl ${var} + mib=${var%=*} + val=${var#*=} + + if current_value=`sysctl -n ${mib} 2>/dev/null`; then + case ${current_value} in + ${val}) ;; + *) + sysctl ${var} + ;; + esac + else + case ${1} in + last) + echo "Warning: sysctl ${mib} does not exist" + ;; + esac + fi ;; esac done < /etc/sysctl.conf diff --git a/etc/rc.sysctl b/etc/rc.sysctl index bedddb636697..1e315f2eb239 100644 --- a/etc/rc.sysctl +++ b/etc/rc.sysctl @@ -38,7 +38,23 @@ if [ -f /etc/sysctl.conf ]; then \#*|'') ;; *) - sysctl ${var} + mib=${var%=*} + val=${var#*=} + + if current_value=`sysctl -n ${mib} 2>/dev/null`; then + case ${current_value} in + ${val}) ;; + *) + sysctl ${var} + ;; + esac + else + case ${1} in + last) + echo "Warning: sysctl ${mib} does not exist" + ;; + esac + fi ;; esac done < /etc/sysctl.conf