#include <OSPFNeighborStateExchangeStart.h>
Inheritance diagram for OSPF::NeighborStateExchangeStart:

Public Member Functions | |
| virtual void | ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event) |
| virtual Neighbor::NeighborStateType | GetState (void) const |
|
|
Implements OSPF::NeighborState. 00012 { return Neighbor::ExchangeStartState; }
|
|
||||||||||||
|
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::DDRetransmissionTimer) {
00043 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00044 neighbor->RetransmitDatabaseDescriptionPacket ();
00045 messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetInterface ()->GetRetransmissionInterval ());
00046 }
00047 if (event == OSPF::Neighbor::NegotiationDone) {
00048 neighbor->CreateDatabaseSummary ();
00049 neighbor->SendDatabaseDescriptionPacket ();
00050 MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00051 messageHandler->ClearTimer (neighbor->GetDDRetransmissionTimer ());
00052 ChangeState (neighbor, new OSPF::NeighborStateExchange, this);
00053 }
00054 }
|
1.4.1