#include <OSPFInterfaceStateWaiting.h>
Inheritance diagram for OSPF::InterfaceStateWaiting:

Public Member Functions | |
| virtual void | ProcessEvent (Interface *intf, Interface::InterfaceEventType event) |
| virtual Interface::InterfaceStateType | GetState (void) const |
|
|
Implements OSPF::InterfaceState. 00012 { return Interface::WaitingState; }
|
|
||||||||||||
|
00009 {
00010 if ((event == OSPF::Interface::BackupSeen) ||
00011 (event == OSPF::Interface::WaitTimer))
00012 {
00013 CalculateDesignatedRouter (intf);
00014 }
00015 if (event == OSPF::Interface::InterfaceDown) {
00016 intf->Reset ();
00017 ChangeState (intf, new OSPF::InterfaceStateDown, this);
00018 }
00019 if (event == OSPF::Interface::LoopIndication) {
00020 intf->Reset ();
00021 ChangeState (intf, new OSPF::InterfaceStateLoopback, this);
00022 }
00023 if (event == OSPF::Interface::HelloTimer) {
00024 if (intf->GetType () == OSPF::Interface::Broadcast) {
00025 intf->SendHelloPacket (OSPF::AllSPFRouters);
00026 } else { // OSPF::Interface::NBMA
00027 unsigned long neighborCount = intf->GetNeighborCount ();
00028 int ttl = (intf->GetType () == OSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1;
00029 for (unsigned long i = 0; i < neighborCount; i++) {
00030 OSPF::Neighbor* neighbor = intf->GetNeighbor (i);
00031 if (neighbor->GetPriority () > 0) {
00032 intf->SendHelloPacket (neighbor->GetAddress (), ttl);
00033 }
00034 }
00035 }
00036 intf->GetArea ()->GetRouter ()->GetMessageHandler ()->StartTimer (intf->GetHelloTimer (), intf->GetHelloInterval ());
00037 }
00038 if (event == OSPF::Interface::AcknowledgementTimer) {
00039 intf->SendDelayedAcknowledgements ();
00040 }
00041 }
|
1.4.1