if (!nhg->nexthop) {
/* Nothing to lookup */
- zebra_nhg_free_group_depends(&nhg, &nhg_depends);
+ nexthop_group_free_delete(&nhg);
+ nhg_connected_head_free(&nhg_depends);
return -1;
}
*/
zebra_nhg_set_invalid(nhe);
- zebra_nhg_free_group_depends(&nhg, &nhg_depends);
+ nexthop_group_free_delete(&nhg);
+ nhg_connected_head_free(&nhg_depends);
} else {
/* This is a new nexthop group */
nhe = zebra_nhg_find(nhg, vrf_id, afi, id, &nhg_depends,
true);
+ /* The group was copied over, so free it */
nexthop_group_free_delete(&nhg);
if (!nhe) {
return nhe;
}
-/**
- * zebra_nhg_free_group_depends() - Helper function for freeing nexthop_group
- * struct and depends
- *
- * @nhg: Nexthop_group
- * @nhg_depends: Nexthop group dependency tree head
- */
-void zebra_nhg_free_group_depends(struct nexthop_group **nhg,
- struct nhg_connected_head *head)
-{
- // TODO
- //
- //
- // FIX THIS NAMING
- //
- //
- //
- //
- //
- if (head)
- nhg_connected_head_free(head);
-
- if (nhg)
- nexthop_group_free_delete(nhg);
-}
-
/**
* zebra_nhg_free_members() - Free all members in the hash entry struct
*
*/
void zebra_nhg_free_members(struct nhg_hash_entry *nhe)
{
- zebra_nhg_free_group_depends(&nhe->nhg, &nhe->nhg_depends);
-
- // TODO: Fixup this function
+ nexthop_group_free_delete(&nhe->nhg);
+ nhg_connected_head_free(&nhe->nhg_depends);
nhg_connected_head_free(&nhe->nhg_dependents);
}
afi_t afi);
-void zebra_nhg_free_group_depends(struct nexthop_group **nhg,
- struct nhg_connected_head *head);
void zebra_nhg_free_members(struct nhg_hash_entry *nhe);
void zebra_nhg_free(void *arg);
void zebra_nhg_release(struct nhg_hash_entry *nhe);