summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_ntp_peer.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/plugins/check_ntp_peer.c b/plugins/check_ntp_peer.c
index d1b8b27..806123b 100644
--- a/plugins/check_ntp_peer.c
+++ b/plugins/check_ntp_peer.c
@@ -63,6 +63,7 @@ static short do_jitter=0;
63static char *jwarn="-1:5000"; 63static char *jwarn="-1:5000";
64static char *jcrit="-1:10000"; 64static char *jcrit="-1:10000";
65static int syncsource_found=0; 65static int syncsource_found=0;
66static int li_alarm=0;
66 67
67int process_arguments (int, char **); 68int process_arguments (int, char **);
68thresholds *offset_thresholds = NULL; 69thresholds *offset_thresholds = NULL;
@@ -267,6 +268,7 @@ int ntp_request(const char *host, double *offset, int *offset_result, double *ji
267 if(read(conn, &req, SIZEOF_NTPCM(req)) == -1) 268 if(read(conn, &req, SIZEOF_NTPCM(req)) == -1)
268 die(STATE_CRITICAL, "NTP CRITICAL: No response from NTP server\n"); 269 die(STATE_CRITICAL, "NTP CRITICAL: No response from NTP server\n");
269 DBG(print_ntp_control_message(&req)); 270 DBG(print_ntp_control_message(&req));
271 if (LI(req.flags) == LI_ALARM) li_alarm = 1;
270 /* Each peer identifier is 4 bytes in the data section, which 272 /* Each peer identifier is 4 bytes in the data section, which
271 * we represent as a ntp_assoc_status_pair datatype. 273 * we represent as a ntp_assoc_status_pair datatype.
272 */ 274 */
@@ -297,6 +299,10 @@ int ntp_request(const char *host, double *offset, int *offset_result, double *ji
297 status = STATE_WARNING; 299 status = STATE_WARNING;
298 if(verbose) printf("warning: no synchronization source found\n"); 300 if(verbose) printf("warning: no synchronization source found\n");
299 } 301 }
302 if(li_alarm){
303 status = STATE_WARNING;
304 if(verbose) printf("warning: LI_ALARM bit is set\n");
305 }
300 306
301 307
302 for (i = 0; i < npeers; i++){ 308 for (i = 0; i < npeers; i++){
@@ -597,7 +603,9 @@ int main(int argc, char *argv[]){
597 } 603 }
598 if(!syncsource_found) 604 if(!syncsource_found)
599 asprintf(&result_line, "%s %s,", result_line, _("Server not synchronized")); 605 asprintf(&result_line, "%s %s,", result_line, _("Server not synchronized"));
600 606 else if(li_alarm)
607 asprintf(&result_line, "%s %s,", result_line, _("Server has the LI_ALARM bit set"));
608
601 if(offset_result == STATE_UNKNOWN){ 609 if(offset_result == STATE_UNKNOWN){
602 asprintf(&result_line, "%s %s", result_line, _("Offset unknown")); 610 asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
603 asprintf(&perfdata_line, ""); 611 asprintf(&perfdata_line, "");