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