#include <OSPFNeighborStateFull.h>
Inheritance diagram for OSPF::NeighborStateFull:

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