diff options
Diffstat (limited to 'proto/ospf/rt.c')
-rw-r--r-- | proto/ospf/rt.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c index 471bb586..d7753ce0 100644 --- a/proto/ospf/rt.c +++ b/proto/ospf/rt.c @@ -2038,6 +2038,14 @@ again1: { neighbor *nbr = neigh_find(&p->p, nh->gw, nh->iface, (nh->flags & RNF_ONLINK) ? NEF_ONLINK : 0); + + /* According to RFC 5838 2.5 Direct Interface Address */ + if (ospf_is_v3(p) && !nbr && ipa_is_ip4(nh->gw)) + { + nh->flags |= RNF_ONLINK; + nbr = neigh_find(&p->p, nh->gw, nh->iface, NEF_ONLINK); + } + if (!nbr || (nbr->scope == SCOPE_HOST)) { reset_ri(nf); break; } } |