* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with FRR; see the file COPYING. If not, write to the Free
- * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <zebra.h>
long spf_backoff_schedule(struct spf_backoff *backoff)
{
- long rv;
+ long rv = 0;
struct timeval now;
gettimeofday(&now, NULL);
switch (backoff->state) {
case SPF_BACKOFF_QUIET:
backoff->state = SPF_BACKOFF_SHORT_WAIT;
- THREAD_TIMER_MSEC_ON(backoff->m, backoff->t_timetolearn,
- spf_backoff_timetolearn_elapsed, backoff,
- backoff->timetolearn);
- THREAD_TIMER_MSEC_ON(backoff->m, backoff->t_holddown,
- spf_backoff_holddown_elapsed, backoff,
- backoff->holddown);
+ thread_add_timer_msec(
+ backoff->m, spf_backoff_timetolearn_elapsed, backoff,
+ backoff->timetolearn, &backoff->t_timetolearn);
+ thread_add_timer_msec(backoff->m, spf_backoff_holddown_elapsed,
+ backoff, backoff->holddown,
+ &backoff->t_holddown);
backoff->first_event_time = now;
rv = backoff->init_delay;
break;
case SPF_BACKOFF_SHORT_WAIT:
case SPF_BACKOFF_LONG_WAIT:
THREAD_TIMER_OFF(backoff->t_holddown);
- THREAD_TIMER_MSEC_ON(backoff->m, backoff->t_holddown,
- spf_backoff_holddown_elapsed, backoff,
- backoff->holddown);
+ thread_add_timer_msec(backoff->m, spf_backoff_holddown_elapsed,
+ backoff, backoff->holddown,
+ &backoff->t_holddown);
if (backoff->state == SPF_BACKOFF_SHORT_WAIT)
rv = backoff->short_delay;
else
rv = backoff->long_delay;
break;
- default:
- zlog_warn("SPF Back-off(%s) in unknown state", backoff->name);
- rv = backoff->init_delay;
}
backoff_debug(
size_t offset = strlen(timebuf);
snprintf(timebuf + offset, sizeof(timebuf) - offset, ".%ld",
- tv->tv_usec);
+ (long int)tv->tv_usec);
return timebuf;
}
void spf_backoff_show(struct spf_backoff *backoff, struct vty *vty,
const char *prefix)
{
- vty_out(vty, "%sCurrent state: %s%s", prefix,
- spf_backoff_state2str(backoff->state), VTY_NEWLINE);
- vty_out(vty, "%sInit timer: %ld msec%s", prefix,
- backoff->init_delay, VTY_NEWLINE);
- vty_out(vty, "%sShort timer: %ld msec%s", prefix,
- backoff->short_delay, VTY_NEWLINE);
- vty_out(vty, "%sLong timer: %ld msec%s", prefix,
- backoff->long_delay, VTY_NEWLINE);
- vty_out(vty, "%sHolddown timer: %ld msec%s", prefix,
- backoff->holddown, VTY_NEWLINE);
+ vty_out(vty, "%sCurrent state: %s\n", prefix,
+ spf_backoff_state2str(backoff->state));
+ vty_out(vty, "%sInit timer: %ld msec\n", prefix,
+ backoff->init_delay);
+ vty_out(vty, "%sShort timer: %ld msec\n", prefix,
+ backoff->short_delay);
+ vty_out(vty, "%sLong timer: %ld msec\n", prefix,
+ backoff->long_delay);
+ vty_out(vty, "%sHolddown timer: %ld msec\n", prefix,
+ backoff->holddown);
if (backoff->t_holddown) {
struct timeval remain =
thread_timer_remain(backoff->t_holddown);
- vty_out(vty, "%s Still runs for %ld msec%s",
- prefix, remain.tv_sec * 1000 + remain.tv_usec / 1000,
- VTY_NEWLINE);
+ vty_out(vty, "%s Still runs for %lld msec\n",
+ prefix,
+ (long long)remain.tv_sec * 1000
+ + remain.tv_usec / 1000);
} else {
- vty_out(vty, "%s Inactive%s", prefix,
- VTY_NEWLINE);
+ vty_out(vty, "%s Inactive\n", prefix);
}
- vty_out(vty, "%sTimeToLearn timer: %ld msec%s", prefix,
- backoff->timetolearn, VTY_NEWLINE);
+ vty_out(vty, "%sTimeToLearn timer: %ld msec\n", prefix,
+ backoff->timetolearn);
if (backoff->t_timetolearn) {
struct timeval remain =
thread_timer_remain(backoff->t_timetolearn);
- vty_out(vty, "%s Still runs for %ld msec%s",
- prefix, remain.tv_sec * 1000 + remain.tv_usec / 1000,
- VTY_NEWLINE);
+ vty_out(vty, "%s Still runs for %lld msec\n",
+ prefix,
+ (long long)remain.tv_sec * 1000
+ + remain.tv_usec / 1000);
} else {
- vty_out(vty, "%s Inactive%s", prefix,
- VTY_NEWLINE);
+ vty_out(vty, "%s Inactive\n", prefix);
}
- vty_out(vty, "%sFirst event: %s%s", prefix,
- timeval_format(&backoff->first_event_time), VTY_NEWLINE);
- vty_out(vty, "%sLast event: %s%s", prefix,
- timeval_format(&backoff->last_event_time), VTY_NEWLINE);
+ vty_out(vty, "%sFirst event: %s\n", prefix,
+ timeval_format(&backoff->first_event_time));
+ vty_out(vty, "%sLast event: %s\n", prefix,
+ timeval_format(&backoff->last_event_time));
}
DEFUN(spf_backoff_debug,
int written = 0;
if (debug_spf_backoff) {
- vty_out(vty, "debug spf-delay-ietf%s", VTY_NEWLINE);
+ vty_out(vty, "debug spf-delay-ietf\n");
written++;
}