#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 |
virtual Interface::InterfaceStateType OSPF::InterfaceStateDesignatedRouter::GetState | ( | void | ) | const [inline, virtual] |
void OSPF::InterfaceStateDesignatedRouter::ProcessEvent | ( | Interface * | intf, | |
Interface::InterfaceEventType | event | |||
) | [virtual] |
Implements OSPF::InterfaceState.
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 }