#include <OSPFNeighborStateLoading.h>
Inheritance diagram for OSPF::NeighborStateLoading:

Public Member Functions | |
| virtual void | ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event) |
| virtual Neighbor::NeighborStateType | GetState (void) const |
|
|
Implements OSPF::NeighborState. 00012 { return Neighbor::LoadingState; }
|
|
||||||||||||
|
00013 {
00014 if ((event == OSPF::Neighbor::KillNeighbor) || (event == OSPF::Neighbor::LinkDown)) {
00015 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00016 neighbor->Reset ();
00017 messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00018 ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00019 }
00020 if (event == OSPF::Neighbor::InactivityTimer) {
00021 neighbor->Reset ();
00022 if (neighbor->GetInterface ()->GetType () == OSPF::Interface::NBMA) {
00023 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00024 messageHandler->StartTimer (neighbor->GetPollTimer (), neighbor->GetInterface ()->GetPollInterval ());
00025 }
00026 ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00027 }
00028 if (event == OSPF::Neighbor::OneWayReceived) {
00029 neighbor->Reset ();
00030 ChangeState (neighbor, new OSPF::NeighborStateInit, this);
00031 }
00032 if (event == OSPF::Neighbor::HelloReceived) {
00033 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00034 messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00035 messageHandler->StartTimer (neighbor->GetInactivityTimer (), neighbor->GetRouterDeadInterval ());
00036 }
00037 if (event == OSPF::Neighbor::LoadingDone) {
00038 neighbor->ClearRequestRetransmissionTimer ();
00039 ChangeState (neighbor, new OSPF::NeighborStateFull, this);
00040 }
00041 if (event == OSPF::Neighbor::IsAdjacencyOK) {
00042 if (!neighbor->NeedAdjacency ()) {
00043 neighbor->Reset ();
00044 ChangeState (neighbor, new OSPF::NeighborStateTwoWay, this);
00045 }
00046 }
00047 if ((event == OSPF::Neighbor::SequenceNumberMismatch) || (event == OSPF::Neighbor::BadLinkStateRequest)) {
00048 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00049 neighbor->Reset ();
00050 neighbor->IncrementDDSequenceNumber ();
00051 neighbor->SendDatabaseDescriptionPacket (true);
00052 messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetInterface ()->GetRetransmissionInterval ());
00053 ChangeState (neighbor, new OSPF::NeighborStateExchangeStart, this);
00054 }
00055 if (event == OSPF::Neighbor::RequestRetransmissionTimer) {
00056 neighbor->SendLinkStateRequestPacket ();
00057 neighbor->StartRequestRetransmissionTimer ();
00058 }
00059 if (event == OSPF::Neighbor::UpdateRetransmissionTimer) {
00060 neighbor->RetransmitUpdatePacket ();
00061 neighbor->StartUpdateRetransmissionTimer ();
00062 }
00063 if (event == OSPF::Neighbor::DDRetransmissionTimer) {
00064 neighbor->DeleteLastSentDDPacket ();
00065 }
00066 }
|
1.4.1