|
INET Framework for OMNeT++/OMNEST
|
00001 #include "AnsaOSPFNeighborStateDown.h" 00002 #include "AnsaOSPFNeighborStateAttempt.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::NeighborStateDown::ProcessEvent(AnsaOSPF::Neighbor* neighbor, AnsaOSPF::Neighbor::NeighborEventType event) 00010 { 00011 if (event == AnsaOSPF::Neighbor::Start) { 00012 MessageHandler* messageHandler = neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler(); 00013 int ttl = (neighbor->GetInterface()->GetType() == AnsaOSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1; 00014 00015 messageHandler->ClearTimer(neighbor->GetPollTimer()); 00016 neighbor->GetInterface()->SendHelloPacket(neighbor->GetAddress(), ttl); 00017 messageHandler->StartTimer(neighbor->GetInactivityTimer(), neighbor->GetRouterDeadInterval()); 00018 ChangeState(neighbor, new AnsaOSPF::NeighborStateAttempt, this); 00019 } 00020 if (event == AnsaOSPF::Neighbor::HelloReceived) { 00021 MessageHandler* messageHandler = neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler(); 00022 messageHandler->ClearTimer(neighbor->GetPollTimer()); 00023 messageHandler->StartTimer(neighbor->GetInactivityTimer(), neighbor->GetRouterDeadInterval()); 00024 ChangeState(neighbor, new AnsaOSPF::NeighborStateInit, this); 00025 } 00026 if (event == AnsaOSPF::Neighbor::PollTimer) { 00027 int ttl = (neighbor->GetInterface()->GetType() == AnsaOSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1; 00028 neighbor->GetInterface()->SendHelloPacket(neighbor->GetAddress(), ttl); 00029 MessageHandler* messageHandler = neighbor->GetInterface()->GetArea()->GetRouter()->GetMessageHandler(); 00030 messageHandler->StartTimer(neighbor->GetPollTimer(), neighbor->GetInterface()->GetPollInterval()); 00031 } 00032 }