xref: /openbsd-src/usr.sbin/ripd/rde.h (revision 1d57a832d9347ff4d02ea7787324c8f3dd7ea1d8)
1*1d57a832Sclaudio /*	$OpenBSD: rde.h,v 1.4 2007/10/24 20:38:03 claudio Exp $ */
2ddeeec14Snorby 
3ddeeec14Snorby /*
4ddeeec14Snorby  * Copyright (c) 2006 Michele Marchetto <mydecay@openbeer.it>
5ddeeec14Snorby  * Copyright (c) 2004, 2005 Esben Norby <norby@openbsd.org>
6ddeeec14Snorby  *
7ddeeec14Snorby  * Permission to use, copy, modify, and distribute this software for any
8ddeeec14Snorby  * purpose with or without fee is hereby granted, provided that the above
9ddeeec14Snorby  * copyright notice and this permission notice appear in all copies.
10ddeeec14Snorby  *
11ddeeec14Snorby  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12ddeeec14Snorby  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13ddeeec14Snorby  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14ddeeec14Snorby  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15ddeeec14Snorby  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16ddeeec14Snorby  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17ddeeec14Snorby  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18ddeeec14Snorby  */
19ddeeec14Snorby 
20ddeeec14Snorby #ifndef _RDE_H_
21ddeeec14Snorby #define _RDE_H_
22ddeeec14Snorby 
23ddeeec14Snorby #include <sys/types.h>
24ddeeec14Snorby #include <sys/time.h>
25ddeeec14Snorby #include <sys/tree.h>
26ddeeec14Snorby #include <sys/queue.h>
27ddeeec14Snorby #include <event.h>
28ddeeec14Snorby #include <limits.h>
29ddeeec14Snorby 
30ddeeec14Snorby struct rt_node {
31ddeeec14Snorby 	RB_ENTRY(rt_node)	 entry;
32ddeeec14Snorby 	struct event		 timeout_timer;
33ddeeec14Snorby 	struct event		 garbage_timer;
34ddeeec14Snorby 	struct in_addr		 prefix;
35ddeeec14Snorby 	struct in_addr		 netmask;
36ddeeec14Snorby 	struct in_addr		 nexthop;
37ddeeec14Snorby 	u_short			 ifindex;
38ddeeec14Snorby 	u_int16_t		 flags;
39ddeeec14Snorby 	u_int8_t		 metric;
40ddeeec14Snorby };
41ddeeec14Snorby 
42ddeeec14Snorby /* rde.c */
43ddeeec14Snorby pid_t		 rde(struct ripd_conf *, int [2], int [2], int [2]);
44ddeeec14Snorby void		 rde_send_change_kroute(struct rt_node *);
45ddeeec14Snorby void		 rde_send_delete_kroute(struct rt_node *);
46ddeeec14Snorby int		 rde_imsg_compose_ripe(int, u_int32_t, pid_t, void *,
47ddeeec14Snorby 		     u_int16_t);
48ddeeec14Snorby 
49960f8542Smichele /* rde_rib.c */
50ddeeec14Snorby void		 rt_init(void);
51ddeeec14Snorby int		 rt_compare(struct rt_node *, struct rt_node *);
52ddeeec14Snorby struct rt_node	*rt_find(in_addr_t, in_addr_t);
53ddeeec14Snorby struct rt_node	*rt_new_kr(struct kroute *);
54*1d57a832Sclaudio struct rt_node	*rt_new_rr(struct rip_route *, u_int8_t);
55ddeeec14Snorby int		 rt_insert(struct rt_node *);
56ddeeec14Snorby int		 rt_remove(struct rt_node *);
57ddeeec14Snorby void		 rt_complete(struct rip_route *);
58ddeeec14Snorby void		 rt_snap(u_int32_t);
59ddeeec14Snorby void		 rt_clear(void);
60ddeeec14Snorby void		 route_reset_timers(struct rt_node *);
61ddeeec14Snorby int		 route_start_timeout(struct rt_node *);
62960f8542Smichele void		 route_start_garbage(struct rt_node *);
63ddeeec14Snorby void		 rt_dump(pid_t);
64ddeeec14Snorby 
65ddeeec14Snorby #endif /* _RDE_H_ */
66