summaryrefslogtreecommitdiffstats
path: root/lib/nexthop.c
diff options
context:
space:
mode:
authorßingen <bingen@voltanet.io>2017-06-27 12:49:49 +0200
committerßingen <bingen@voltanet.io>2017-06-28 21:32:18 +0200
commitf9e1b38e1a48b72cac7caaded16b9355c80d7899 (patch)
tree78ad561127d3cf9e3ba6d58972c21cc40a87d326 /lib/nexthop.c
parentMerge pull request #753 from dslicenc/cm16876-ospfv6-mtu (diff)
downloadfrr-f9e1b38e1a48b72cac7caaded16b9355c80d7899.tar.xz
frr-f9e1b38e1a48b72cac7caaded16b9355c80d7899.zip
Allow for more than 1 NH recursion level
Before, only one level of recursive resolution was supported. Signed-off-by: ßingen <bingen@voltanet.io>
Diffstat (limited to 'lib/nexthop.c')
-rw-r--r--lib/nexthop.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/nexthop.c b/lib/nexthop.c
index 725b52c05..948baca19 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);
}
}