Code

check_ntp_peer now checks for the LI_ALARM flag
authorThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Tue, 29 Jan 2008 10:27:06 +0000 (10:27 +0000)
committerThomas Guyot-Sionnest <dermoth@users.sourceforge.net>
Tue, 29 Jan 2008 10:27:06 +0000 (10:27 +0000)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1911 f882894a-f735-0410-b71e-b25c423dba1c

NEWS
plugins/check_ntp_peer.c

diff --git a/NEWS b/NEWS
index 76cd803b9518c98dd5002c229fe9bf8e805e31cb..35c9d32d200eb4e43a71255a74356f5df55125da 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,7 @@ This file documents the major additions and syntax changes between releases.
        Fixed check_disk disk usage calculation when using --group=NAME (related to bug #1348746)
        Fix help text of check_ntp* (Bug #1880095)
        Fix bugs and flaws in best offset server selection of check_ntp_time and (deprecated) check_ntp
+       check_ntp_peer now checks for the LI_ALARM flag
 
 1.4.11 13th December 2007
        Fixed check_http regression in 1.4.10 where following redirects to
index d1b8b27b27608e69a6de1eeec5c6b443c3220d82..806123b98d4a197b302f72ce5f235f82682a0536 100644 (file)
@@ -63,6 +63,7 @@ static short do_jitter=0;
 static char *jwarn="-1:5000";
 static char *jcrit="-1:10000";
 static int syncsource_found=0;
+static int li_alarm=0;
 
 int process_arguments (int, char **);
 thresholds *offset_thresholds = NULL;
@@ -267,6 +268,7 @@ int ntp_request(const char *host, double *offset, int *offset_result, double *ji
                if(read(conn, &req, SIZEOF_NTPCM(req)) == -1)
                        die(STATE_CRITICAL, "NTP CRITICAL: No response from NTP server\n");
                DBG(print_ntp_control_message(&req));
+               if (LI(req.flags) == LI_ALARM) li_alarm = 1;
                /* Each peer identifier is 4 bytes in the data section, which
                 * we represent as a ntp_assoc_status_pair datatype.
                 */
@@ -297,6 +299,10 @@ int ntp_request(const char *host, double *offset, int *offset_result, double *ji
                status = STATE_WARNING;
                if(verbose) printf("warning: no synchronization source found\n");
        }
+       if(li_alarm){
+               status = STATE_WARNING;
+               if(verbose) printf("warning: LI_ALARM bit is set\n");
+       }
 
 
        for (i = 0; i < npeers; i++){
@@ -597,7 +603,9 @@ int main(int argc, char *argv[]){
        }
        if(!syncsource_found)
                asprintf(&result_line, "%s %s,", result_line, _("Server not synchronized"));
-
+       else if(li_alarm)
+               asprintf(&result_line, "%s %s,", result_line, _("Server has the LI_ALARM bit set"));
        if(offset_result == STATE_UNKNOWN){
                asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
                asprintf(&perfdata_line, "");