*** zebra/bgpd/bgp_dump.c.ORIG Tue Jul 15 12:22:28 2003 --- zebra/bgpd/bgp_dump.c Tue Jul 15 12:29:05 2003 *************** *** 129,139 **** bgp_dump_interval_add (struct bgp_dump *bgp_dump, int interval) { int bgp_dump_interval_func (struct thread *); ! if (interval > 0 ) bgp_dump->t_interval = thread_add_timer (master, bgp_dump_interval_func, ! bgp_dump, interval); ! else bgp_dump->t_interval = thread_add_event (master, bgp_dump_interval_func, bgp_dump, 0); --- 129,151 ---- bgp_dump_interval_add (struct bgp_dump *bgp_dump, int interval) { int bgp_dump_interval_func (struct thread *); + int interval2, secs_into_day; + time_t t; + struct tm *tm; ! if (interval > 0 ) { ! if((interval < 86400) && ((86400 % interval) == 0)) { ! (void) time(&t); ! tm = localtime(&t); ! secs_into_day = tm->tm_sec + 60*tm->tm_min + 60*60*tm->tm_hour; ! interval2 = interval - secs_into_day % interval; ! if(interval2 == 0) interval2 = interval; ! } else { ! interval2 = interval; ! } bgp_dump->t_interval = thread_add_timer (master, bgp_dump_interval_func, ! bgp_dump, interval2); ! } else bgp_dump->t_interval = thread_add_event (master, bgp_dump_interval_func, bgp_dump, 0);