|
INET Framework for OMNeT++/OMNEST
|
#include <ansaOspfNeighborState6.h>
Public Member Functions | |
| virtual | ~NeighborState () |
| virtual void | ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event)=0 |
| virtual Neighbor::NeighborStateType | GetState (void) const =0 |
Protected Member Functions | |
| void | ChangeState (Neighbor *neighbor, NeighborState *newState, NeighborState *currentState) |
Definition at line 23 of file ansaOspfNeighborState6.h.
| virtual AnsaOspf6::NeighborState::~NeighborState | ( | ) | [inline, virtual] |
Definition at line 28 of file ansaOspfNeighborState6.h.
{}
| void AnsaOspf6::NeighborState::ChangeState | ( | AnsaOspf6::Neighbor * | neighbor, |
| AnsaOspf6::NeighborState * | newState, | ||
| AnsaOspf6::NeighborState * | currentState | ||
| ) | [protected] |
Definition at line 23 of file ansaOspfNeighborState6.cc.
Referenced by AnsaOspf6::NeighborStateAttempt::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), AnsaOspf6::NeighborStateExchange::ProcessEvent(), and AnsaOspf6::NeighborStateDown::ProcessEvent().
{
AnsaOspf6::Neighbor::NeighborStateType oldState = currentState->GetState();
AnsaOspf6::Neighbor::NeighborStateType nextState = newState->GetState();
bool rebuildRoutingTable = false;
neighbor->ChangeState(newState, currentState);
/* TODO:
if (((oldState == AnsaOspf6::Neighbor::FullState) || (nextState == AnsaOspf6::Neighbor::FullState))
&& !(neighbor->GetInterface()->IsGoingDown())){
AnsaOspf6::RouterID routerID = neighbor->GetInterface()->GetArea()->GetRouter()->GetRouterID();
AnsaOspf6::RouterLsa* routerLSA = neighbor->GetInterface()->GetArea()->FindRouterLSA(routerID);
if (routerLSA != NULL){
long sequenceNumber = routerLSA->getHeader().getLsSequenceNumber();
if (sequenceNumber == MAX_SEQUENCE_NUMBER){
routerLSA->getHeader().setLsAge(MAX_AGE);
neighbor->GetInterface()->GetArea()->FloodLSA(routerLSA);
routerLSA->IncrementInstallTime();
}else{
AnsaOspf6::RouterLsa* newLSA = neighbor->GetInterface()->GetArea()->OriginateRouterLSA();
newLSA->getHeader().setLsSequenceNumber(sequenceNumber + 1);
rebuildRoutingTable |= routerLSA->Update(newLSA);
delete newLSA;
neighbor->GetInterface()->GetArea()->FloodLSA(routerLSA);
}
}
if (neighbor->GetInterface()->GetState() == AnsaOspf6::Interface::DesignatedRouterState){
AnsaOspf6::NetworkLSA* networkLSA = neighbor->GetInterface()->GetArea()->FindNetworkLSA(
ULongFromIPv4Address(neighbor->GetInterface()->GetAddressRange().address));
if (networkLSA != NULL){
long sequenceNumber = networkLSA->getHeader().getLsSequenceNumber();
if (sequenceNumber == MAX_SEQUENCE_NUMBER){
networkLSA->getHeader().setLsAge(MAX_AGE);
neighbor->GetInterface()->GetArea()->FloodLSA(networkLSA);
networkLSA->IncrementInstallTime();
}else{
AnsaOspf6::NetworkLsa* newLSA =
neighbor->GetInterface()->GetArea()->OriginateNetworkLSA(
neighbor->GetInterface());
if (newLSA != NULL){
newLSA->getHeader().setLsSequenceNumber(sequenceNumber + 1);
rebuildRoutingTable |= networkLSA->Update(newLSA);
delete newLSA;
}else{ // no neighbors on the network -> old NetworkLSA must be flushed
networkLSA->getHeader().setLsAge(MAX_AGE);
networkLSA->IncrementInstallTime();
}
neighbor->GetInterface()->GetArea()->FloodLSA(networkLSA);
}
}
}
}
if (rebuildRoutingTable){
neighbor->GetInterface()->GetArea()->GetRouter()->RebuildRoutingTable();
}
*/
}
| virtual Neighbor::NeighborStateType AnsaOspf6::NeighborState::GetState | ( | void | ) | const [pure virtual] |
Implemented in AnsaOspf6::NeighborStateAttempt, AnsaOspf6::NeighborStateDown, AnsaOspf6::NeighborStateExchange, AnsaOspf6::NeighborStateExchangeStart, AnsaOspf6::NeighborStateFull, AnsaOspf6::NeighborStateInit, AnsaOspf6::NeighborStateLoading, and AnsaOspf6::NeighborStateTwoWay.
Referenced by ChangeState().
| virtual void AnsaOspf6::NeighborState::ProcessEvent | ( | Neighbor * | neighbor, |
| Neighbor::NeighborEventType | event | ||
| ) | [pure virtual] |