summaryrefslogtreecommitdiff
path: root/nest/rt-table.c
diff options
context:
space:
mode:
Diffstat (limited to 'nest/rt-table.c')
-rw-r--r--nest/rt-table.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/nest/rt-table.c b/nest/rt-table.c
index abb29fe1..4127912c 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -3529,9 +3529,10 @@ rt_update_hostentry(rtable *tab, struct hostentry *he)
{
rte *e = n->routes;
rta *a = e->attrs;
- pxlen = n->n.addr->pxlen;
+ word pref = a->pref;
- if (a->hostentry)
+ for (rte *ee = n->routes; ee; ee = ee->next)
+ if ((ee->attrs->pref >= pref) && ee->attrs->hostentry)
{
/* Recursive route should not depend on another recursive route */
log(L_WARN "Next hop address %I resolvable through recursive route for %N",
@@ -3539,6 +3540,8 @@ rt_update_hostentry(rtable *tab, struct hostentry *he)
goto done;
}
+ pxlen = n->n.addr->pxlen;
+
if (a->dest == RTD_UNICAST)
{
for (struct nexthop *nh = &(a->nh); nh; nh = nh->next)