diff options
Diffstat (limited to 'contrib/ntp/ntpd/ntp_timer.c')
-rw-r--r-- | contrib/ntp/ntpd/ntp_timer.c | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/contrib/ntp/ntpd/ntp_timer.c b/contrib/ntp/ntpd/ntp_timer.c index 0e2dc88..71a84e2 100644 --- a/contrib/ntp/ntpd/ntp_timer.c +++ b/contrib/ntp/ntpd/ntp_timer.c @@ -5,20 +5,26 @@ # include <config.h> #endif +#include "ntp_machine.h" +#include "ntpd.h" +#include "ntp_stdlib.h" + #include <stdio.h> -#include <sys/types.h> -#include <sys/time.h> #include <signal.h> #include <sys/signal.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif -#include "ntp_machine.h" -#include "ntpd.h" -#include "ntp_stdlib.h" #if defined(HAVE_IO_COMPLETION_PORT) # include "ntp_iocompletionport.h" # include "ntp_timer.h" #endif +#ifdef PUBKEY +#include "ntp_crypto.h" +#endif /* PUBKEY */ + /* * These routines provide support for the event timer. The timer is * implemented by an interrupt routine which sets a flag once every @@ -41,8 +47,11 @@ volatile int alarm_flag; static u_long adjust_timer; /* second timer */ static u_long keys_timer; /* minute timer */ static u_long hourly_timer; /* hour timer */ +static u_long huffpuff_timer; /* huff-n'-puff timer */ +#ifdef AUTOKEY static u_long revoke_timer; /* keys revoke timer */ -u_long sys_revoke = KEY_REVOKE; /* keys revoke timeout */ +u_long sys_revoke = 1 << KEY_REVOKE; /* keys revoke timeout */ +#endif /* AUTOKEY */ /* * Statistics counter for the interested. @@ -101,6 +110,7 @@ init_timer(void) alarm_overflow = 0; adjust_timer = 1; hourly_timer = HOUR; + huffpuff_timer = 0; current_time = 0; timer_overflows = 0; timer_xmtcalls = 0; @@ -206,7 +216,7 @@ void timer(void) { register struct peer *peer, *next_peer; - int n; + u_int n; current_time += (1<<EVENT_TIMEOUT); @@ -250,12 +260,27 @@ timer(void) } /* - * Garbage collect revoked keys + * Huff-n'-puff filter + */ + if (huffpuff_timer <= current_time) { + huffpuff_timer += HUFFPUFF; + huffpuff(); + } + +#ifdef AUTOKEY + /* + * Garbage collect old keys and generate new private value */ if (revoke_timer <= current_time) { - revoke_timer += RANDPOLL(sys_revoke); - key_expire_all(); + revoke_timer += sys_revoke; + expire_all(); +#ifdef DEBUG + if (debug) + printf("key expire: at %lu next %lu\n", + current_time, revoke_timer); +#endif } +#endif /* AUTOKEY */ /* * Finally, call the hourly routine. |