xref: /minix3/usr.sbin/rtadvd/timer.h (revision 8f957290eb976b379733d0b3811fcb43f8fbaf1a)
1*8f957290SDavid van Moolenbroek /*	$NetBSD: timer.h,v 1.8 2015/06/05 14:09:20 roy Exp $	*/
2*8f957290SDavid van Moolenbroek /*	$KAME: timer.h,v 1.5 2002/05/31 13:30:38 jinmei Exp $	*/
3*8f957290SDavid van Moolenbroek 
4*8f957290SDavid van Moolenbroek /*
5*8f957290SDavid van Moolenbroek  * Copyright (C) 1998 WIDE Project.
6*8f957290SDavid van Moolenbroek  * All rights reserved.
7*8f957290SDavid van Moolenbroek  *
8*8f957290SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
9*8f957290SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
10*8f957290SDavid van Moolenbroek  * are met:
11*8f957290SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
12*8f957290SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer.
13*8f957290SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce the above copyright
14*8f957290SDavid van Moolenbroek  *    notice, this list of conditions and the following disclaimer in the
15*8f957290SDavid van Moolenbroek  *    documentation and/or other materials provided with the distribution.
16*8f957290SDavid van Moolenbroek  * 3. Neither the name of the project nor the names of its contributors
17*8f957290SDavid van Moolenbroek  *    may be used to endorse or promote products derived from this software
18*8f957290SDavid van Moolenbroek  *    without specific prior written permission.
19*8f957290SDavid van Moolenbroek  *
20*8f957290SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
21*8f957290SDavid van Moolenbroek  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22*8f957290SDavid van Moolenbroek  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23*8f957290SDavid van Moolenbroek  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
24*8f957290SDavid van Moolenbroek  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25*8f957290SDavid van Moolenbroek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26*8f957290SDavid van Moolenbroek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27*8f957290SDavid van Moolenbroek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28*8f957290SDavid van Moolenbroek  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29*8f957290SDavid van Moolenbroek  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30*8f957290SDavid van Moolenbroek  * SUCH DAMAGE.
31*8f957290SDavid van Moolenbroek  */
32*8f957290SDavid van Moolenbroek 
33*8f957290SDavid van Moolenbroek extern TAILQ_HEAD(rtadvd_timer_head_t, rtadvd_timer) ra_timer;
34*8f957290SDavid van Moolenbroek struct rtadvd_timer {
35*8f957290SDavid van Moolenbroek 	TAILQ_ENTRY(rtadvd_timer) next;
36*8f957290SDavid van Moolenbroek 	struct rainfo *rai;
37*8f957290SDavid van Moolenbroek 	struct timespec tm;
38*8f957290SDavid van Moolenbroek 
39*8f957290SDavid van Moolenbroek 	struct rtadvd_timer *(*expire) (void *); /* expiration function */
40*8f957290SDavid van Moolenbroek 	void *expire_data;
41*8f957290SDavid van Moolenbroek 	void (*update)(void *, struct timespec *);	/* update function */
42*8f957290SDavid van Moolenbroek 	void *update_data;
43*8f957290SDavid van Moolenbroek };
44*8f957290SDavid van Moolenbroek 
45*8f957290SDavid van Moolenbroek void rtadvd_timer_init(void);
46*8f957290SDavid van Moolenbroek struct rtadvd_timer *rtadvd_add_timer(struct rtadvd_timer *(*) (void *),
47*8f957290SDavid van Moolenbroek 		void (*) (void *, struct timespec *), void *, void *);
48*8f957290SDavid van Moolenbroek void rtadvd_set_timer(struct timespec *, struct rtadvd_timer *);
49*8f957290SDavid van Moolenbroek void rtadvd_remove_timer(struct rtadvd_timer **);
50*8f957290SDavid van Moolenbroek struct timespec * rtadvd_check_timer(void);
51*8f957290SDavid van Moolenbroek struct timespec * rtadvd_timer_rest(struct rtadvd_timer *);
52