#include <LinkStateAcknowledgementHandler.h>
Inheritance diagram for OSPF::LinkStateAcknowledgementHandler:

Public Member Functions | |
| LinkStateAcknowledgementHandler (Router *containingRouter) | |
| void | ProcessPacket (OSPFPacket *packet, Interface *intf, Neighbor *neighbor) |
|
|
00004 : 00005 OSPF::IMessageHandler (containingRouter) 00006 { 00007 }
|
|
||||||||||||||||
|
00010 {
00011 router->GetMessageHandler ()->PrintEvent ("Link State Acknowledgement packet received", intf, neighbor);
00012
00013 if (neighbor->GetState () >= OSPF::Neighbor::ExchangeState) {
00014 OSPFLinkStateAcknowledgementPacket* lsAckPacket = check_and_cast<OSPFLinkStateAcknowledgementPacket*> (packet);
00015
00016 int lsaCount = lsAckPacket->getLsaHeadersArraySize ();
00017
00018 EV << " Processing packet contents:\n";
00019
00020 for (int i = 0; i < lsaCount; i++) {
00021 OSPFLSAHeader& lsaHeader = lsAckPacket->getLsaHeaders (i);
00022 OSPFLSA* lsaOnRetransmissionList;
00023 OSPF::LSAKeyType lsaKey;
00024
00025 EV << " ";
00026 PrintLSAHeader (lsaHeader);
00027 EV << "\n";
00028
00029 lsaKey.linkStateID = lsaHeader.getLinkStateID ();
00030 lsaKey.advertisingRouter = lsaHeader.getAdvertisingRouter ().getInt ();
00031
00032 if ((lsaOnRetransmissionList = neighbor->FindOnRetransmissionList (lsaKey)) != NULL) {
00033 if (operator== (lsaHeader, lsaOnRetransmissionList->getHeader ())) {
00034 neighbor->RemoveFromRetransmissionList (lsaKey);
00035 } else {
00036 EV << "Got an Acknowledgement packet for an unsent Update packet.\n";
00037 }
00038 }
00039 }
00040 if (neighbor->IsLinkStateRetransmissionListEmpty ()) {
00041 neighbor->ClearUpdateRetransmissionTimer ();
00042 }
00043 }
00044 }
|
1.4.1