From 1b5ed1b054b955275bb7cf0f80fb7767094bc28b Mon Sep 17 00:00:00 2001 From: Avneesh Sachdev Date: Tue, 13 Nov 2012 22:48:54 +0000 Subject: zebra: add way to determine VRF/AFI/SAFI of table Add some code that allows us to determine which VRF and AFI/SAFI a given RIB table corresponds to. * zebra/rib.h Add rib_table_info_t structure, which contains information about the VRF, AFI and SAFI that a table is for. * zebra/zebra_rib.c - Add the vrf_table_create() function, which creates a table and sets its 'info' pointer to a newly created rib_table_info_t. The 'info' pointer allows us to go from a route_node or a table to the associated vrf. - vrf_alloc(): Use vrf_create_table() to create tables. * lib/memtypes.c Add memory type for rib_table_info_t. Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter --- zebra/rib.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'zebra/rib.h') diff --git a/zebra/rib.h b/zebra/rib.h index 084f3516..c98d99a4 100644 --- a/zebra/rib.h +++ b/zebra/rib.h @@ -268,6 +268,24 @@ struct vrf struct route_table *stable[AFI_MAX][SAFI_MAX]; }; +/* + * rib_table_info_t + * + * Structure that is hung off of a route_table that holds information about + * the table. + */ +typedef struct rib_table_info_t_ +{ + + /* + * Back pointer to vrf. + */ + struct vrf *vrf; + afi_t afi; + safi_t safi; + +} rib_table_info_t; + extern struct nexthop *nexthop_ifindex_add (struct rib *, unsigned int); extern struct nexthop *nexthop_ifname_add (struct rib *, char *); extern struct nexthop *nexthop_blackhole_add (struct rib *); @@ -361,6 +379,15 @@ extern int rib_gc_dest (struct route_node *rn); * Inline functions. */ +/* + * rib_table_info + */ +static inline rib_table_info_t * +rib_table_info (struct route_table *table) +{ + return (rib_table_info_t *) table->info; +} + /* * rib_dest_from_rnode */ @@ -417,4 +444,13 @@ rib_dest_table (rib_dest_t *dest) return dest->rnode->table; } +/* + * rib_dest_vrf + */ +static inline struct vrf * +rib_dest_vrf (rib_dest_t *dest) +{ + return rib_table_info (rib_dest_table (dest))->vrf; +} + #endif /*_ZEBRA_RIB_H */ -- cgit v1.2.3