#include <OSPFInterfaceStateDesignatedRouter.h>
Inheritance diagram for OSPF::InterfaceStateDesignatedRouter:

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