/*
* Set up back pointer to bgp_table.
*/
- rt->route_table->info = rt;
+ route_table_set_info(rt->route_table, rt);
/*
* pointer to bgp instance allows working back from bgp_info to bgp
*/
static inline struct bgp_table *bgp_node_table(struct bgp_node *node)
{
- return bgp_node_to_rnode(node)->table->info;
+ return route_table_get_info(bgp_node_to_rnode(node)->table);
}
/*
at = XCALLOC(MTYPE_TMP, sizeof(struct agg_table));
at->route_table = route_table_init_with_delegate(&agg_table_delegate);
- at->route_table->info = at;
+ route_table_set_info(at->route_table, at);
return at;
}
static inline struct agg_table *agg_get_table(struct agg_node *node)
{
- return (struct agg_table *)node->table->info;
+ return (struct agg_table *)route_table_get_info(node->table);
}
#endif
XFREE(MTYPE_ROUTE_SRC_NODE, rn);
- srn = table->info;
+ srn = route_table_get_info(table);
if (srn->src_table && route_table_count(srn->src_table) == 0) {
/* deleting the route_table from inside destroy_node is ONLY
* permitted IF table->count is 0! see lib/table.c
* here */
srn->src_table = route_table_init_with_delegate(
&_srcdest_srcnode_delegate);
- srn->src_table->info = srn;
+ route_table_set_info(srn->src_table, srn);
/* there is no route_unlock_node on the original rn here.
* The reference is kept for the src_table. */
}
/* This part handles the case of iterating source nodes. */
- parent = route_lock_node(rn->table->info);
+ parent = route_lock_node(route_table_get_info(rn->table));
next = route_next(rn);
if (next) {
const struct prefix **src_p)
{
if (rnode_is_srcnode(rn)) {
- struct route_node *dst_rn = rn->table->info;
+ struct route_node *dst_rn = route_table_get_info(rn->table);
if (p)
*p = &dst_rn->p;
if (src_p)
static inline struct route_table *srcdest_rnode_table(struct route_node *rn)
{
if (rnode_is_srcnode(rn)) {
- struct route_node *dst_rn = rn->table->info;
+ struct route_node *dst_rn = route_table_get_info(rn->table);
return dst_rn->table;
} else {
return rn->table;
}
static inline void *srcdest_rnode_table_info(struct route_node *rn)
{
- return srcdest_rnode_table(rn)->info;
+ return route_table_get_info(srcdest_rnode_table(rn));
}
#endif /* _ZEBRA_SRC_DEST_TABLE_H */
extern route_table_delegate_t *route_table_get_default_delegate(void);
+static inline void *route_table_get_info(struct route_table *table)
+{
+ return table->info;
+}
+
+static inline void route_table_set_info(struct route_table *table, void *d)
+{
+ table->info = d;
+}
+
extern void route_table_finish(struct route_table *table);
extern struct route_node *route_top(struct route_table *table);
extern struct route_node *route_next(struct route_node *node);
*/
static inline rib_table_info_t *rib_table_info(struct route_table *table)
{
- return (rib_table_info_t *)table->info;
+ return (rib_table_info_t *)route_table_get_info(table);
}
/*
info->zvrf = zvrf;
info->afi = afi;
info->safi = SAFI_UNICAST;
- znst->table->info = info;
+ route_table_set_info(znst->table, info);
znst->table->cleanup = zebra_rtable_node_cleanup;
RB_INSERT(zebra_ns_table_head, &zns->ns_tables, znst);
rib_close_table(znst->table);
- table_info = znst->table->info;
+ table_info = route_table_get_info(znst->table);
route_table_finish(znst->table);
XFREE(MTYPE_RIB_TABLE_INFO, table_info);
XFREE(MTYPE_ZEBRA_NS, znst);
if (!table)
return;
- info = table->info;
+ info = route_table_get_info(table);
for (rn = route_top(table); rn; rn = srcdest_route_next(rn)) {
dest = rib_dest_from_rnode(rn);
for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++) {
table = zvrf->table[afi][safi];
- table_info = table->info;
+ table_info = route_table_get_info(table);
route_table_finish(table);
XFREE(MTYPE_RIB_TABLE_INFO, table_info);
zvrf->table[afi][safi] = NULL;
for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++) {
table = zvrf->table[afi][safi];
if (table) {
- table_info = table->info;
+ table_info = route_table_get_info(table);
route_table_finish(table);
XFREE(MTYPE_RIB_TABLE_INFO, table_info);
}
info->zvrf = zvrf;
info->afi = afi;
info->safi = safi;
- table->info = info;
+ route_table_set_info(table, info);
}
/* Allocate new zebra VRF. */
}
vty_out(vty, "%-20s %-20s %s (vrf %s)\n", "Route Source", "Routes",
- "FIB", zvrf_name(((rib_table_info_t *)table->info)->zvrf));
+ "FIB", zvrf_name(((rib_table_info_t *)route_table_get_info(table))->zvrf));
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
if ((rib_cnt[i] > 0) || (i == ZEBRA_ROUTE_BGP
vty_out(vty, "%-20s %-20s %s (vrf %s)\n", "Route Source",
"Prefix Routes", "FIB",
- zvrf_name(((rib_table_info_t *)table->info)->zvrf));
+ zvrf_name(((rib_table_info_t *)route_table_get_info(table))->zvrf));
for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
if (rib_cnt[i] > 0) {