|
INET Framework for OMNeT++/OMNEST
|
#include <ansaLinkStateAcknowledgementHandler6.h>
Public Member Functions | |
| LinkStateAcknowledgementHandler (Router *containingRouter) | |
| void | ProcessPacket (OspfPacket6 *packet, Interface *intf, Neighbor *neighbor) |
Definition at line 23 of file ansaLinkStateAcknowledgementHandler6.h.
| AnsaOspf6::LinkStateAcknowledgementHandler::LinkStateAcknowledgementHandler | ( | AnsaOspf6::Router * | containingRouter | ) |
Definition at line 20 of file ansaLinkStateAcknowledgementHandler6.cc.
:
AnsaOspf6::IMessageHandler(containingRouter) {
}
| void AnsaOspf6::LinkStateAcknowledgementHandler::ProcessPacket | ( | OspfPacket6 * | packet, |
| AnsaOspf6::Interface * | intf, | ||
| AnsaOspf6::Neighbor * | neighbor | ||
| ) | [virtual] |
Implements AnsaOspf6::IMessageHandler.
Definition at line 24 of file ansaLinkStateAcknowledgementHandler6.cc.
{
router->GetMessageHandler()->PrintEvent("Link State Acknowledgement packet received", intf, neighbor);
if (neighbor->GetState() >= AnsaOspf6::Neighbor::ExchangeState){
OspfLinkStateAcknowledgementPacket6* lsAckPacket = check_and_cast<OspfLinkStateAcknowledgementPacket6*> (packet);
int lsaCount = lsAckPacket->getLsaHeadersArraySize();
EV<< " Processing packet contents:\n";
for (int i = 0; i < lsaCount; i++){
OspfLsaHeader6& lsaHeader = lsAckPacket->getLsaHeaders(i);
OspfLsa6* lsaOnRetransmissionList;
AnsaOspf6::LsaKeyType6 lsaKey;
EV << " ";
PrintLsaHeader6(lsaHeader, ev.getOStream());
EV << "\n";
lsaKey.linkStateID = lsaHeader.getLinkStateID();
lsaKey.advertisingRouter = lsaHeader.getAdvertisingRouter();
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();
}
}
}