diff options
Diffstat (limited to 'proto/ospf/rt.c')
-rw-r--r-- | proto/ospf/rt.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c index 9a330a83..b589459b 100644 --- a/proto/ospf/rt.c +++ b/proto/ospf/rt.c @@ -424,12 +424,14 @@ ospf_rt_spfa(struct ospf_area *oa) if ((tmp = ospf_hash_find_rt(po->gr, oa->areaid, iface->vid)) && (!ipa_equal(tmp->lb, IPA_NONE))) { - if ((iface->state != OSPF_IS_PTP) || (iface->iface != tmp->nhi->iface) || (!ipa_equal(iface->vip, tmp->lb))) + if ((iface->state != OSPF_IS_PTP) || (iface->vifa != tmp->nhi) || (!ipa_equal(iface->vip, tmp->lb))) { OSPF_TRACE(D_EVENTS, "Vlink peer %R found", tmp->lsa.id); ospf_iface_sm(iface, ISM_DOWN); + iface->vifa = tmp->nhi; iface->iface = tmp->nhi->iface; - iface->addr = iface->iface->addr; + iface->addr = tmp->nhi->addr; + iface->sk = tmp->nhi->sk; iface->vip = tmp->lb; ospf_iface_sm(iface, ISM_UP); } |