#include <OSPFNeighborStateTwoWay.h>
Inheritance diagram for OSPF::NeighborStateTwoWay:

Public Member Functions | |
| virtual void | ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event) |
| virtual Neighbor::NeighborStateType | GetState (void) const |
|
|
Implements OSPF::NeighborState. 00012 { return Neighbor::TwoWayState; }
|
|
||||||||||||
|
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::OneWayReceived) {
00027 neighbor->Reset ();
00028 ChangeState (neighbor, new OSPF::NeighborStateInit, this);
00029 }
00030 if (event == OSPF::Neighbor::HelloReceived) {
00031 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00032 messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00033 messageHandler->StartTimer (neighbor->GetInactivityTimer (), neighbor->GetRouterDeadInterval ());
00034 }
00035 if (event == OSPF::Neighbor::IsAdjacencyOK) {
00036 if (neighbor->NeedAdjacency ()) {
00037 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00038 if (!(neighbor->IsFirstAdjacencyInited ())) {
00039 neighbor->InitFirstAdjacency ();
00040 } else {
00041 neighbor->IncrementDDSequenceNumber ();
00042 }
00043 neighbor->SendDatabaseDescriptionPacket (true);
00044 messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetInterface ()->GetRetransmissionInterval ());
00045 ChangeState (neighbor, new OSPF::NeighborStateExchangeStart, this);
00046 }
00047 }
00048 }
|
1.4.1