summaryrefslogtreecommitdiffstats
path: root/proto/ospf/lsupd.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/lsupd.c')
-rw-r--r--proto/ospf/lsupd.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c
index 39a089d..f56974c 100644
--- a/proto/ospf/lsupd.c
+++ b/proto/ospf/lsupd.c
@@ -366,7 +366,7 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
/* pg 143 (4) */
if((lsatmp.age==LSA_MAXAGE)&&(lsadb==NULL)&&can_flush_lsa(oa))
{
- ospf_lsack_direct_tx(n,lsa);
+ ospf_lsack_enqueue(n, lsa, p, ACKL_DIRECT);
continue;
}
@@ -399,7 +399,7 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
if((lsatmp.age==LSA_MAXAGE)&&(lsatmp.sn==LSA_MAXSEQNO))
{
- ospf_lsack_direct_tx(n,lsa);
+ ospf_lsack_enqueue(n, lsa, p, ACKL_DIRECT);
continue;
}
@@ -432,9 +432,9 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
DBG("Wasn't flooded back\n"); /* ps 144(5e), pg 153 */
if(ifa->state==OSPF_IS_BACKUP)
{
- if(ifa->drid==n->rid) ospf_lsa_delay(n, lsa, p);
+ if(ifa->drid==n->rid) ospf_lsack_enqueue(n, lsa, p, ACKL_DELAY);
}
- else ospf_lsa_delay(n, lsa, p);
+ else ospf_lsack_enqueue(n, lsa, p, ACKL_DELAY);
}
/* Remove old from all ret lists */
@@ -488,13 +488,13 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
ospf_hash_delete(n->lsrth, en);
if(ifa->state==OSPF_IS_BACKUP)
{
- if(n->rid==ifa->drid) ospf_lsa_delay(n, lsa, p);
+ if(n->rid==ifa->drid) ospf_lsack_enqueue(n, lsa, p, ACKL_DELAY);
}
}
else
{
/* pg145 (7b) */
- ospf_lsack_direct_tx(n,lsa);
+ ospf_lsack_enqueue(n, lsa, p, ACKL_DIRECT);
}
continue;
}
@@ -517,6 +517,9 @@ ospf_lsupd_rx(struct ospf_lsupd_packet *ps, struct proto *p,
}
}
+ /* Send direct LSAs */
+ ospf_lsack_send(n, ACKL_DIRECT);
+
if(n->state==NEIGHBOR_LOADING)
{
ospf_lsreq_tx(n); /* Send me another part of database */