|
INET Framework for OMNeT++/OMNEST
|
#include <AnsaLinkStateAcknowledgementHandler.h>
Public Member Functions | |
| LinkStateAcknowledgementHandler (Router *containingRouter) | |
| void | ProcessPacket (OSPFPacket *packet, Interface *intf, Neighbor *neighbor) |
Definition at line 8 of file AnsaLinkStateAcknowledgementHandler.h.
| AnsaOSPF::LinkStateAcknowledgementHandler::LinkStateAcknowledgementHandler | ( | AnsaOSPF::Router * | containingRouter | ) |
Definition at line 4 of file AnsaLinkStateAcknowledgementHandler.cc.
:
AnsaOSPF::IMessageHandler(containingRouter)
{
}
| void AnsaOSPF::LinkStateAcknowledgementHandler::ProcessPacket | ( | OSPFPacket * | packet, |
| AnsaOSPF::Interface * | intf, | ||
| AnsaOSPF::Neighbor * | neighbor | ||
| ) | [virtual] |
Implements AnsaOSPF::IMessageHandler.
Definition at line 9 of file AnsaLinkStateAcknowledgementHandler.cc.
{
router->GetMessageHandler()->PrintEvent("Link State Acknowledgement packet received", intf, neighbor);
if (neighbor->GetState() >= AnsaOSPF::Neighbor::ExchangeState) {
OSPFLinkStateAcknowledgementPacket* lsAckPacket = check_and_cast<OSPFLinkStateAcknowledgementPacket*> (packet);
int lsaCount = lsAckPacket->getLsaHeadersArraySize();
EV << " Processing packet contents:\n";
for (int i = 0; i < lsaCount; i++) {
OSPFLSAHeader& lsaHeader = lsAckPacket->getLsaHeaders(i);
OSPFLSA* lsaOnRetransmissionList;
AnsaOSPF::LSAKeyType lsaKey;
EV << " ";
PrintLSAHeader(lsaHeader, ev.getOStream());
EV << "\n";
lsaKey.linkStateID = lsaHeader.getLinkStateID();
lsaKey.advertisingRouter = lsaHeader.getAdvertisingRouter().getInt();
if ((lsaOnRetransmissionList = neighbor->FindOnRetransmissionList(lsaKey)) != NULL) {
if (operator== (lsaHeader, lsaOnRetransmissionList->getHeader())) {
neighbor->RemoveFromRetransmissionList(lsaKey);
} else {
EV << "Got an Acknowledgement packet for an unsent Update packet.\n";
}
}
}
if (neighbor->IsLinkStateRetransmissionListEmpty()) {
neighbor->ClearUpdateRetransmissionTimer();
}
}
}