#include <OSPFNeighborStateInit.h>
Inheritance diagram for OSPF::NeighborStateInit:

Public Member Functions | |
| virtual void | ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event) |
| virtual Neighbor::NeighborStateType | GetState (void) const |
|
|
Implements OSPF::NeighborState. 00012 { return Neighbor::InitState; }
|
|
||||||||||||
|
00011 {
00012 if ((event == OSPF::Neighbor::KillNeighbor) || (event == OSPF::Neighbor::LinkDown)) {
00013 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00014 neighbor->Reset ();
00015 messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00016 ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00017 }
00018 if (event == OSPF::Neighbor::InactivityTimer) {
00019 neighbor->Reset ();
00020 if (neighbor->GetInterface ()->GetType () == OSPF::Interface::NBMA) {
00021 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00022 messageHandler->StartTimer (neighbor->GetPollTimer (), neighbor->GetInterface ()->GetPollInterval ());
00023 }
00024 ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00025 }
00026 if (event == OSPF::Neighbor::HelloReceived) {
00027 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00028 messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00029 messageHandler->StartTimer (neighbor->GetInactivityTimer (), neighbor->GetRouterDeadInterval ());
00030 }
00031 if (event == OSPF::Neighbor::TwoWayReceived) {
00032 if (neighbor->NeedAdjacency ()) {
00033 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00034 if (!(neighbor->IsFirstAdjacencyInited ())) {
00035 neighbor->InitFirstAdjacency ();
00036 } else {
00037 neighbor->IncrementDDSequenceNumber ();
00038 }
00039 neighbor->SendDatabaseDescriptionPacket (true);
00040 messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetInterface ()->GetRetransmissionInterval ());
00041 ChangeState (neighbor, new OSPF::NeighborStateExchangeStart, this);
00042 } else {
00043 ChangeState (neighbor, new OSPF::NeighborStateTwoWay, this);
00044 }
00045 }
00046 }
|
1.4.1