From 8250d650614c6e312f744b8dd503919e1b37bae8 Mon Sep 17 00:00:00 2001 From: "M. Sean Finney" Date: Mon, 20 Mar 2006 22:06:07 +0000 Subject: - shuffling some code around to keep things tidy. - now average the result of 4 queries just as ntpdate does - put things in place for jitter calculation git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1332 f882894a-f735-0410-b71e-b25c423dba1c diff --git a/plugins/check_ntp.c b/plugins/check_ntp.c index 56e5a05..5037786 100644 --- a/plugins/check_ntp.c +++ b/plugins/check_ntp.c @@ -183,6 +183,32 @@ void setup_request(ntp_message *p){ TVtoNTP64(t,p->txts); } +double offset_request(const char *host){ + int i=0, conn=-1; + ntp_message req; + double next_offset=0., avg_offset=0.; + struct timeval recv_time; + + for(i=0; i<4; i++){ + setup_request(&req); + my_udp_connect(server_address, 123, &conn); + write(conn, &req, sizeof(ntp_message)); + read(conn, &req, sizeof(ntp_message)); + gettimeofday(&recv_time, NULL); + /* if(verbose) print_packet(&req); */ + close(conn); + next_offset=calc_offset(&req, &recv_time); + if(verbose) printf("offset: %g\n", next_offset); + avg_offset+=next_offset; + } + return avg_offset/4.; +} + +/* not yet implemented yet */ +double jitter_request(const char *host){ + return 0.; +} + int process_arguments(int argc, char **argv){ int c; int option=0; @@ -282,9 +308,6 @@ int process_arguments(int argc, char **argv){ int main(int argc, char *argv[]){ int result = STATE_UNKNOWN; - int conn; - ntp_message m; - struct timeval recv_time; double offset=0, jitter=0; if (process_arguments (argc, argv) == ERROR) @@ -296,18 +319,7 @@ int main(int argc, char *argv[]){ /* set socket timeout */ alarm (socket_timeout); - setup_request(&m); - if(verbose) print_packet(&m); - my_udp_connect(server_address, 123, &conn); - write(conn, &m, sizeof(ntp_message)); - read(conn, &m, sizeof(ntp_message)); - gettimeofday(&recv_time, NULL); - if(verbose) print_packet(&m); - close(conn); - - offset=calc_offset(&m, &recv_time); - printf("total offset: %g\n", offset); - + offset = offset_request(server_address); if(offset > ocrit){ printf("NTP CRITICAL: "); result = STATE_CRITICAL; @@ -319,14 +331,15 @@ int main(int argc, char *argv[]){ result = STATE_OK; } - /* not implemented yet: - jitter=calc_jitter(&m, &recv_time); + /* not implemented yet: */ + jitter=jitter_request(server_address); + /* not implemented yet: if(do_jitter){ - if(offset > ocrit){ + if(jitter > jcrit){ printf("NTP CRITICAL: "); result = STATE_CRITICAL; - } else if(offset > owarn) { + } else if(jitter > jwarn) { printf("NTP WARNING: "); result = STATE_WARNING; } else { -- cgit v0.10-9-g596f