zebra: add a fib-specific nexthop-group

Add a fib-specific nhg, distinct from the nhg developed from
the route-owner / RIB information.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
This commit is contained in:
Mark Stapp 2019-03-25 17:25:46 -04:00
parent 593e4eb1e8
commit ee5e8a4820
2 changed files with 16 additions and 1 deletions

View File

@ -87,9 +87,12 @@ struct route_entry {
/* Link list. */
struct re_list_item next;
/* Nexthop structure */
/* Nexthop structure (from RIB) */
struct nexthop_group ng;
/* Nexthop group from FIB (optional) */
struct nexthop_group fib_ng;
/* Tag */
route_tag_t tag;
@ -529,6 +532,16 @@ static inline void rib_tables_iter_cleanup(rib_tables_iter_t *iter)
DECLARE_HOOK(rib_update, (struct route_node * rn, const char *reason),
(rn, reason))
/*
* Access active nexthop-group, either RIB or FIB version
*/
static inline struct nexthop_group *rib_active_nhg(struct route_entry *re)
{
if (re->fib_ng.nexthop)
return &(re->fib_ng);
else
return &(re->ng);
}
extern void zebra_vty_init(void);

View File

@ -2585,6 +2585,8 @@ void rib_unlink(struct route_node *rn, struct route_entry *re)
dest->selected_fib = NULL;
nexthops_free(re->ng.nexthop);
nexthops_free(re->fib_ng.nexthop);
XFREE(MTYPE_RE, re);
}