From 2326b001d6f28e69b88c3c19795d8c0999f07db1 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Wed, 20 May 1998 11:54:33 +0000 Subject: Added routing table and routing attribute code. --- nest/route.h | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'nest/route.h') diff --git a/nest/route.h b/nest/route.h index a9590dd..e191a5f 100644 --- a/nest/route.h +++ b/nest/route.h @@ -11,6 +11,8 @@ #include "lib/resource.h" +struct protocol; + /* * Generic data structure for storing network prefixes. Also used * for the master routing table. Currently implemented as a hash @@ -131,6 +133,18 @@ typedef struct rte { #define REF_CHOSEN 1 /* Currently chosen route */ +extern rtable master_table; + +void rt_init(void); +void rt_setup(rtable *, char *); +net *net_find(rtable *tab, unsigned tos, ip_addr mask, unsigned len); +net *net_get(rtable *tab, unsigned tos, ip_addr mask, unsigned len); +rte *rte_find(net *net, struct proto *p); +rte *rte_get_temp(struct rtattr *); +void rte_update(net *net, rte *new); +void rte_dump(rte *); +void rt_dump(rtable *); + /* * Route Attributes * @@ -139,7 +153,7 @@ typedef struct rte { * construction of BGP route attribute lists. */ -struct rtattr { +typedef struct rtattr { struct rtattr *next, *prev; /* Hash chain */ struct rtattr *garbage; /* Garbage collector chain */ struct proto *proto; /* Protocol instance */ @@ -231,6 +245,14 @@ eattr *ea_find(ea_list *, unsigned protocol, unsigned id); p->nattrs = cnt; \ } while(0) +void rta_init(void); +rta *rta_lookup(rta *); /* Get rta equivalent to this one, uc++ */ +static inline rta *rta_clone(rta *r) { r->uc++; return r; } +void _rta_free(rta *r); +static inline void rta_free(rta *r) { if (r && !--r->uc) _rta_free(r); } +void rta_dump(rta *); +void rta_dump_all(void); + /* * Default protocol preferences */ -- cgit v1.2.3