]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
LSack receiving bugfix.
authorOndrej Filip <feela@network.cz>
Wed, 12 Apr 2000 15:37:52 +0000 (15:37 +0000)
committerOndrej Filip <feela@network.cz>
Wed, 12 Apr 2000 15:37:52 +0000 (15:37 +0000)
proto/ospf/lsack.c
proto/ospf/packet.c

index 5f82970432f7d658b5447ce376e4af0ab7d0969e..c5f6bed01c161c9dd2c1759c276dff338fd9ef77 100644 (file)
@@ -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);
index 8cc308a06ec8aa1f68683e97b3eca5d9ae0c2db8..cefc125e8bff76740236f4dee525511336168eca 100644 (file)
@@ -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);