]> git.ipfire.org Git - people/stevee/ipfire-2.x.git/commitdiff
setclock: prevent time bacjump by empty rtc batteries
authorArne Fitzenreiter <arne_f@ipfire.org>
Sat, 8 Oct 2016 13:43:54 +0000 (15:43 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sat, 8 Oct 2016 13:43:54 +0000 (15:43 +0200)
This is a work around to prevent not working dns
resolution if the time jumps before the DNSSec signing key.

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
config/rootfiles/core/106/filelists/files
src/initscripts/init.d/setclock

index 77f73c88c3b94f61b5f52ca48ea946449dbee434..5133da9a5d16b5bb1558ef7ad02578d4e13482fb 100644 (file)
@@ -7,6 +7,7 @@ etc/rc.d/init.d/network
 etc/rc.d/init.d/networking/red.down/05-update-dns-forwarders
 etc/rc.d/init.d/networking/red.up/05-update-dns-forwarders
 etc/rc.d/init.d/ntp
+etc/rc.d/init.d/setclock
 etc/rc.d/init.d/unbound
 etc/rc.d/rc0.d/K79unbound
 etc/rc.d/rc3.d/S21unbound
index 661e944a424db37999c5884f6fcadf250553434a..19fb89168a7a2b9385462cc089ff053083f6124d 100644 (file)
@@ -30,16 +30,20 @@ case ${1} in
                fi
 
                hwclock --hctosys ${CLOCKPARAMS} &>/dev/null
-               if [ ! ${?} == 0 ]; then
-                       if [ -s /var/log/messages ]; then
-                               boot_mesg -n "No RTC found, set time to last log accesstime ... "
-                               DATE=`stat --format "%y" /var/log/messages | cut -d" " -f1`
-                               TIME=`stat --format "%y" /var/log/messages | sed -e "s|\..*||g" | cut -d" " -f2`
-                               date -s $DATE > /dev/null
-                               date -s $TIME
+               date
+
+               if [ -s /var/log/messages ]; then
+                       LOGTIMESTAMP=`stat --format "%y" /var/log/messages`
+                       LOGTIME=`date +%s -d "$LOGTIMESTAMP"`
+                       SYSTIME=`date +%s`
+                       if [ $SYSTIME -lt $LOGTIME ]; then
+                               boot_mesg "Warning! clock runs later than last log access. Check battery/rtc!"
+                               date -s "$LOGTIMESTAMP"
+                               echo_warning;
+                       else
+                               echo_ok;
                        fi
                fi
-               evaluate_retval
                ;;
 
        stop)