summaryrefslogtreecommitdiffstats
path: root/proto/ospf
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2000-04-12 17:37:52 +0200
committerOndrej Filip <feela@network.cz>2000-04-12 17:37:52 +0200
commitebff007f08965d83dba5840ee02171d09ac2598d (patch)
treed94a995dfb537558bb4c014ed3d8b09b7c8b74a6 /proto/ospf
parent4bf41ac8b1d7edb4754c579b714d1c71dc421b4e (diff)
downloadbird-ebff007f08965d83dba5840ee02171d09ac2598d.tar
bird-ebff007f08965d83dba5840ee02171d09ac2598d.zip
LSack receiving bugfix.
Diffstat (limited to 'proto/ospf')
-rw-r--r--proto/ospf/lsack.c8
-rw-r--r--proto/ospf/packet.c1
2 files changed, 6 insertions, 3 deletions
diff --git a/proto/ospf/lsack.c b/proto/ospf/lsack.c
index 5f82970..c5f6bed 100644
--- a/proto/ospf/lsack.c
+++ b/proto/ospf/lsack.c
@@ -31,14 +31,16 @@ ospf_lsack_rx(struct ospf_lsack_packet *ps, struct proto *p,
if((n=find_neigh(ifa, nrid))==NULL)
{
- debug("%s: Received lsack from unknown neigbor! (%u)\n", p->name,
+ debug("%s: Received lsack from unknown neigbor! (%I)\n", p->name,
nrid);
return ;
}
+
+ if(n->state<NEIGHBOR_EXCHANGE) return;
nolsa=(ntohs(ps->ospf_packet.length)-sizeof(struct ospf_lsack_packet))/
sizeof(struct ospf_lsa_header);
- DBG("Received %d lsa\n",nolsa);
+ DBG("Received %d lsa ack(s)\n",nolsa);
plsa=( struct ospf_lsa_header *)(ps+1);
for(i=0;i<nolsa;i++)
@@ -52,7 +54,7 @@ ospf_lsack_rx(struct ospf_lsack_packet *ps, struct proto *p,
continue;
}
- DBG("Deleting LS Id: %u RT: % Type: %u from LS Retl for neighbor %u\n",
+ DBG("Deleting LS Id: %I RT: %I Type: %u from LS Retl for neighbor %I\n",
lsa.id,lsa.rt,lsa.type,n->rid);
s_rem_node(SNODE en);
ospf_hash_delete(n->lsrth,en);
diff --git a/proto/ospf/packet.c b/proto/ospf/packet.c
index 8cc308a..cefc125 100644
--- a/proto/ospf/packet.c
+++ b/proto/ospf/packet.c
@@ -149,6 +149,7 @@ ospf_rx_hook(sock *sk, int size)
break;
case LSACK:
DBG("%s: Link state ack received.\n", p->name);
+ ospf_lsack_rx((struct ospf_lsack_packet *)ps, p, ifa, size);
break;
default:
log("%s: Bad packet received: wrong type %u", p->name, ps->type);