diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/nexthop.c | 7 | ||||
| -rw-r--r-- | lib/nexthop.h | 6 |
2 files changed, 8 insertions, 5 deletions
diff --git a/lib/nexthop.c b/lib/nexthop.c index 725b52c052..948baca198 100644 --- a/lib/nexthop.c +++ b/lib/nexthop.c @@ -135,7 +135,7 @@ nexthop_add (struct nexthop **target, struct nexthop *nexthop) } void -copy_nexthops (struct nexthop **tnh, struct nexthop *nh) +copy_nexthops (struct nexthop **tnh, struct nexthop *nh, struct nexthop *rparent) { struct nexthop *nexthop; struct nexthop *nh1; @@ -150,11 +150,12 @@ copy_nexthops (struct nexthop **tnh, struct nexthop *nh) memcpy(&(nexthop->src), &(nh->src), sizeof(union g_addr)); if (nh->nh_label) nexthop_add_labels (nexthop, nh->nh_label_type, - nh->nh_label->num_labels, &nh->nh_label->label[0]); + nh->nh_label->num_labels, &nh->nh_label->label[0]); + nexthop->rparent = rparent; nexthop_add(tnh, nexthop); if (CHECK_FLAG(nh1->flags, NEXTHOP_FLAG_RECURSIVE)) - copy_nexthops(&nexthop->resolved, nh1->resolved); + copy_nexthops(&nexthop->resolved, nh1->resolved, nexthop); } } diff --git a/lib/nexthop.h b/lib/nexthop.h index 8c9c801c91..f48c41dc55 100644 --- a/lib/nexthop.h +++ b/lib/nexthop.h @@ -81,8 +81,10 @@ struct nexthop * If the nexthop struct needs to be resolved recursively, * NEXTHOP_FLAG_RECURSIVE will be set in flags and the nexthops * obtained by recursive resolution will be added to `resolved'. - * Only one level of recursive resolution is currently supported. */ + */ struct nexthop *resolved; + /* Recursive parent */ + struct nexthop *rparent; /* Type of label(s), if any */ enum lsp_types_t nh_label_type; @@ -107,7 +109,7 @@ nh_resolve_via_default(int family) struct nexthop *nexthop_new (void); void nexthop_add (struct nexthop **target, struct nexthop *nexthop); -void copy_nexthops (struct nexthop **tnh, struct nexthop *nh); +void copy_nexthops (struct nexthop **tnh, struct nexthop *nh, struct nexthop *rparent); void nexthop_free (struct nexthop *nexthop); void nexthops_free (struct nexthop *nexthop); |
