From 04925e9040330afc92f8001e6a19ae2146e36782 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 7 Dec 1998 21:59:15 +0000 Subject: Minor rte/rta interface changes: o rte can now contain a pointer to both cached and uncached rta. Protocols which don't need their own attribute caching can now just fill-in a rta, link it to rte without any calls to attribute cache and call rte_update() which will replace rte->attrs by a cached copy. o In order to support this, one of previously pad bytes in struct rta now holds new attribute flags (RTAF_CACHED). If you call rte_update() with uncached rta, you _must_ clear these flags. In other cases rta_lookup() sets it appropriately. o Added rte_free() which is useful when you construct a rte and then the circumstances change and you decide not to use it for an update. (Needed for temporary rte's in kernel syncer...) --- nest/route.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'nest/route.h') diff --git a/nest/route.h b/nest/route.h index cfad72f..a5cc2f7 100644 --- a/nest/route.h +++ b/nest/route.h @@ -122,6 +122,7 @@ rte *rte_get_temp(struct rtattr *); void rte_update(net *net, struct proto *p, rte *new); void rte_discard(rte *old); void rte_dump(rte *); +void rte_free(rte *); void rt_dump(rtable *); void rt_dump_all(void); void rt_feed_baby(struct proto *p); @@ -145,6 +146,7 @@ typedef struct rtattr { byte dest; /* Route destination type (RTD_...) */ byte tos; /* TOS of this route */ byte flags; /* Route flags (RTF_...) */ + byte aflags; /* Attribute cache flags (RTAF_...) */ ip_addr gw; /* Next hop */ ip_addr from; /* Advertising router */ struct iface *iface; /* Outgoing interface */ @@ -180,6 +182,8 @@ typedef struct rtattr { #define RTF_EXTERIOR 1 /* Learned via exterior protocol */ #define RTF_TAGGED 2 /* Tagged external route learned via IGP */ +#define RTAF_CACHED 1 /* This is a cached rta */ + /* * Extended Route Attributes */ -- cgit v1.2.3