Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSPF::LinkStateAcknowledgementHandler Class Reference

#include <LinkStateAcknowledgementHandler.h>

Inheritance diagram for OSPF::LinkStateAcknowledgementHandler:

OSPF::IMessageHandler List of all members.

Public Member Functions

 LinkStateAcknowledgementHandler (Router *containingRouter)
void ProcessPacket (OSPFPacket *packet, Interface *intf, Neighbor *neighbor)

Constructor & Destructor Documentation

OSPF::LinkStateAcknowledgementHandler::LinkStateAcknowledgementHandler Router containingRouter  ) 
 

00004                                                                                                   :
00005     OSPF::IMessageHandler (containingRouter)
00006 {
00007 }


Member Function Documentation

void OSPF::LinkStateAcknowledgementHandler::ProcessPacket OSPFPacket packet,
Interface intf,
Neighbor neighbor
 

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 }


The documentation for this class was generated from the following files:
Generated on Thu Oct 19 18:22:32 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.0