summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rtadvd/timer.c
diff options
context:
space:
mode:
authorjca <jca@openbsd.org>2016-08-02 17:00:09 +0000
committerjca <jca@openbsd.org>2016-08-02 17:00:09 +0000
commita3b33a4957a623c4c48df22a6639b18b6a475c27 (patch)
treed36c7a3d1f924bb6166ddab61d283aea59fad710 /usr.sbin/rtadvd/timer.c
parentEnsure that "lim" is initialized and reset at each loop run. (diff)
downloadwireguard-openbsd-a3b33a4957a623c4c48df22a6639b18b6a475c27.tar.xz
wireguard-openbsd-a3b33a4957a623c4c48df22a6639b18b6a475c27.zip
Move to libevent; ok florian@
Diffstat (limited to 'usr.sbin/rtadvd/timer.c')
-rw-r--r--usr.sbin/rtadvd/timer.c140
1 files changed, 0 insertions, 140 deletions
diff --git a/usr.sbin/rtadvd/timer.c b/usr.sbin/rtadvd/timer.c
deleted file mode 100644
index 58bf0da8a15..00000000000
--- a/usr.sbin/rtadvd/timer.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/* $OpenBSD: timer.c,v 1.16 2016/03/01 20:51:05 jca Exp $ */
-/* $KAME: timer.c,v 1.7 2002/05/21 14:26:55 itojun Exp $ */
-
-/*
- * Copyright (C) 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/queue.h>
-#include <sys/time.h>
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include "timer.h"
-#include "log.h"
-
-SLIST_HEAD(, rtadvd_timer) timer_head = SLIST_HEAD_INITIALIZER(timer_head);
-
-struct rtadvd_timer *
-rtadvd_add_timer(void (*timeout)(void *),
- void (*update)(void *, struct timeval *),
- void *timeodata, void *updatedata)
-{
- struct rtadvd_timer *newtimer;
-
- if ((newtimer = calloc(1, sizeof(*newtimer))) == NULL)
- fatal(NULL);
-
- if (timeout == NULL)
- fatalx("timeout function unspecified");
- if (update == NULL)
- fatalx("update function unspecified");
- newtimer->expire = timeout;
- newtimer->update = update;
- newtimer->expire_data = timeodata;
- newtimer->update_data = updatedata;
-
- /* link into chain */
- SLIST_INSERT_HEAD(&timer_head, newtimer, entries);
-
- return(newtimer);
-}
-
-void
-rtadvd_remove_timer(struct rtadvd_timer **timer)
-{
- SLIST_REMOVE(&timer_head, *timer, rtadvd_timer, entries);
- free(*timer);
- *timer = NULL;
-}
-
-void
-rtadvd_set_timer(struct timeval *tm, struct rtadvd_timer *timer)
-{
- struct timeval now;
-
- /* reset the timer */
- gettimeofday(&now, NULL);
-
- timeradd(&now, tm, &timer->tm);
-}
-
-/*
- * Check expiration for each timer. If a timer is expired,
- * call the expire function for the timer and update the timer.
- * Return the next interval.
- */
-struct timeval *
-rtadvd_check_timer(void)
-{
- static struct timeval returnval;
- struct timeval now;
- struct rtadvd_timer *tm;
- int timers;
-
- timers = 0;
- gettimeofday(&now, NULL);
-
- SLIST_FOREACH(tm, &timer_head, entries) {
- if (timercmp(&tm->tm, &now, <=)) {
- (*tm->expire)(tm->expire_data);
- (*tm->update)(tm->update_data, &tm->tm);
- timeradd(&tm->tm, &now, &tm->tm);
- }
- if (timers == 0 || timercmp(&tm->tm, &returnval, <))
- returnval = tm->tm;
- timers ++;
- }
-
- if (timers == 0) {
- /* no need to timeout */
- return(NULL);
- } else if (timercmp(&returnval, &now, <)) {
- /* this may occur when the interval is too small */
- timerclear(&returnval);
- } else
- timersub(&returnval, &now, &returnval);
- return(&returnval);
-}
-
-struct timeval *
-rtadvd_timer_rest(struct rtadvd_timer *timer)
-{
- static struct timeval returnval, now;
-
- gettimeofday(&now, NULL);
- if (timercmp(&timer->tm, &now, <=)) {
- log_debug("a timer must be expired, but not yet");
- timerclear(&returnval);
- }
- else
- timersub(&timer->tm, &now, &returnval);
-
- return(&returnval);
-}