aboutsummaryrefslogtreecommitdiff
path: root/plugins/check_ntp.c
diff options
context:
space:
mode:
authorGravatar Thomas Guyot-Sionnest <dermoth@users.sourceforge.net> 2007-09-26 04:16:21 +0000
committerGravatar Thomas Guyot-Sionnest <dermoth@users.sourceforge.net> 2007-09-26 04:16:21 +0000
commit0b66867288b1eb9b9c7a2ffa5cf5e3fd473dc1e7 (patch)
tree2b7b438c5f31ec38f74549b553a8b89032a01cd8 /plugins/check_ntp.c
parente6d1efc69ee396d0f37fb7b57055b6df07c554ad (diff)
downloadmonitoring-plugins-0b66867288b1eb9b9c7a2ffa5cf5e3fd473dc1e7.tar.gz
Patch #1798774: check_ntp: honor ntp flags
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1799 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/check_ntp.c')
-rw-r--r--plugins/check_ntp.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/plugins/check_ntp.c b/plugins/check_ntp.c
index 28c23d84..abd254c8 100644
--- a/plugins/check_ntp.c
+++ b/plugins/check_ntp.c
@@ -86,6 +86,7 @@ typedef struct {
double rtdelay; /* converted from the ntp_message */
double rtdisp; /* converted from the ntp_message */
double offset[AVG_NUM]; /* offsets from each response */
+ uint8_t flags; /* byte with leapindicator,vers,mode. see macros */
} ntp_server_results;
/* this structure holds everything in an ntp control message as per rfc1305 */
@@ -302,6 +303,12 @@ int best_offset_server(const ntp_server_results *slist, int nservers){
/* for each server */
for(cserver=0; cserver<nservers; cserver++){
+ /* sort out servers with error flags */
+ if ( LI(slist[cserver].flags) != LI_NOWARNING ){
+ if (verbose) printf("discarding peer id %d: flags=%d\n", cserver, LI(slist[cserver].flags));
+ break;
+ }
+
/* compare it to each of the servers already in the candidate list */
for(i=0; i<csize; i++){
/* does it have an equal or better stratum? */
@@ -450,6 +457,7 @@ double offset_request(const char *host, int *status){
servers[i].rtdisp=NTP32asDOUBLE(req[i].rtdisp);
servers[i].rtdelay=NTP32asDOUBLE(req[i].rtdelay);
servers[i].waiting=0;
+ servers[i].flags=req[i].flags;
servers_readable--;
one_read = 1;
if(servers[i].num_responses==AVG_NUM) servers_completed++;
@@ -808,6 +816,7 @@ int main(int argc, char *argv[]){
}
if(offset_result==STATE_CRITICAL){
asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
+ asprintf(&perfdata_line, "");
} else {
if(offset_result==STATE_WARNING){
asprintf(&result_line, "%s %s", result_line, _("Unable to fully sample sync server"));