diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index 0c398626..9cd46929 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -173,7 +173,6 @@ ospf_int_sm(struct ospf_iface *ifa, int event) restart_waittim(ifa); } } - addifa_rtlsa(ifa); } schedule_rt_lsa(ifa->oa); break; @@ -403,6 +402,7 @@ ospf_if_notify(struct proto *p, unsigned flags, struct iface *iface) lock->iface = iface; lock->data = ifa; lock->hook = ospf_ifa_add; + addifa_rtlsa(ifa); olock_acquire(lock); } } diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c index a9bca025..f0e6e5a2 100644 --- a/proto/ospf/lsupd.c +++ b/proto/ospf/lsupd.c @@ -22,6 +22,8 @@ flood_lsa(struct ospf_neighbor *n, struct ospf_lsa_header *hn, /* pg 148 */ WALK_LIST(NODE ifa,po->iface_list) { + if(ifa->stub) continue; + if(hh->type==LSA_T_EXT) { if(ifa->type==OSPF_IT_VLINK) continue; diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index 83bcc566..151187f9 100644 --- a/proto/ospf/ospf.c +++ b/proto/ospf/ospf.c @@ -355,8 +355,10 @@ ospf_rt_notify(struct proto *p, net *n, rte *new, rte *old, ea_list *attrs) { struct proto_ospf *po=(struct proto_ospf *)p; +/* Temporarily down write anythink OSPF_TRACE(D_EVENTS, "Got route %I/%d %s", p->name, n->n.prefix, n->n.pxlen, new ? "up" : "down"); +*/ if(new) /* Got some new route */ { diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c index 39e84bd7..aeb9a944 100644 --- a/proto/ospf/rt.c +++ b/proto/ospf/rt.c @@ -400,7 +400,7 @@ ospf_ext_spfa(struct proto_ospf *po) /* FIXME looking into inter-area */ if((nn=neigh_find(p,<->fwaddr,0))!=NULL) { - nnh=IPA_NONE; + nnh=lt->fwaddr; nnhi=nn->iface; } else