|
INET Framework for OMNeT++/OMNEST
|
00001 #include "AnsaOSPFNeighborStateAttempt.h" 00002 #include "AnsaOSPFNeighborStateDown.h" 00003 #include "AnsaOSPFNeighborStateInit.h" 00004 #include "AnsaMessageHandler.h" 00005 #include "AnsaOSPFInterface.h" 00006 #include "AnsaOSPFArea.h" 00007 #include "AnsaOSPFRouter.h" 00008 00009 void AnsaOSPF::NeighborStateAttempt::ProcessEvent(AnsaOSPF::Neighbor* neighbor, AnsaOSPF::Neighbor::NeighborEventType event) 00010 { 00011 if ((event == AnsaOSPF::Neighbor::KillNeighbor) || (event == AnsaOSPF::Neighbor::LinkDown)) { 00012 MessageHandler* messageHandler = neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler(); 00013 neighbor->Reset(); 00014 messageHandler->ClearTimer(neighbor->GetInactivityTimer()); 00015 ChangeState(neighbor, new AnsaOSPF::NeighborStateDown, this); 00016 } 00017 if (event == AnsaOSPF::Neighbor::InactivityTimer) { 00018 neighbor->Reset(); 00019 if (neighbor->GetInterface()->GetType() == AnsaOSPF::Interface::NBMA) { 00020 MessageHandler* messageHandler = neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler(); 00021 messageHandler->StartTimer(neighbor->GetPollTimer(), neighbor->GetInterface()->GetPollInterval()); 00022 } 00023 ChangeState(neighbor, new AnsaOSPF::NeighborStateDown, this); 00024 } 00025 if (event == AnsaOSPF::Neighbor::HelloReceived) { 00026 MessageHandler* messageHandler = neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler(); 00027 messageHandler->ClearTimer(neighbor->GetInactivityTimer()); 00028 messageHandler->StartTimer(neighbor->GetInactivityTimer(), neighbor->GetRouterDeadInterval()); 00029 ChangeState(neighbor, new AnsaOSPF::NeighborStateInit, this); 00030 } 00031 }