|
INET Framework for OMNeT++/OMNEST
|
#include <AnsaLSA.h>
Public Member Functions | |
| RouterLSA (void) | |
| RouterLSA (const OSPFRouterLSA &lsa) | |
| RouterLSA (const RouterLSA &lsa) | |
| virtual | ~RouterLSA (void) |
| bool | ValidateLSChecksum () const |
| bool | Update (const OSPFRouterLSA *lsa) |
| bool | DiffersFrom (const OSPFRouterLSA *routerLSA) const |
| AnsaOSPF::RouterLSA::RouterLSA | ( | void | ) | [inline] |
Definition at line 69 of file AnsaLSA.h.
: OSPFRouterLSA(), RoutingInfo(), LSATrackingInfo() {}
| AnsaOSPF::RouterLSA::RouterLSA | ( | const OSPFRouterLSA & | lsa | ) | [inline] |
Definition at line 70 of file AnsaLSA.h.
: OSPFRouterLSA(lsa), RoutingInfo(), LSATrackingInfo() {}
| AnsaOSPF::RouterLSA::RouterLSA | ( | const RouterLSA & | lsa | ) | [inline] |
Definition at line 71 of file AnsaLSA.h.
: OSPFRouterLSA(lsa), RoutingInfo(lsa), LSATrackingInfo(lsa) {}
| virtual AnsaOSPF::RouterLSA::~RouterLSA | ( | void | ) | [inline, virtual] |
| bool AnsaOSPF::RouterLSA::DiffersFrom | ( | const OSPFRouterLSA * | routerLSA | ) | const |
Definition at line 21 of file AnsaRouterLSA.cc.
Referenced by Update().
{
const OSPFLSAHeader& lsaHeader = routerLSA->getHeader();
bool differentHeader = ((header_var.getLsOptions() != lsaHeader.getLsOptions()) ||
((header_var.getLsAge() == MAX_AGE) && (lsaHeader.getLsAge() != MAX_AGE)) ||
((header_var.getLsAge() != MAX_AGE) && (lsaHeader.getLsAge() == MAX_AGE)) ||
(header_var.getLsaLength() != lsaHeader.getLsaLength()));
bool differentBody = false;
if (!differentHeader) {
differentBody = ((V_VirtualLinkEndpoint_var != routerLSA->getV_VirtualLinkEndpoint()) ||
(E_ASBoundaryRouter_var != routerLSA->getE_ASBoundaryRouter()) ||
(B_AreaBorderRouter_var != routerLSA->getB_AreaBorderRouter()) ||
(numberOfLinks_var != routerLSA->getNumberOfLinks()) ||
(links_arraysize != routerLSA->getLinksArraySize()));
if (!differentBody) {
unsigned int linkCount = links_arraysize;
for (unsigned int i = 0; i < linkCount; i++) {
bool differentLink = ((links_var[i].getLinkID() != routerLSA->getLinks(i).getLinkID()) ||
(links_var[i].getLinkData() != routerLSA->getLinks(i).getLinkData()) ||
(links_var[i].getType() != routerLSA->getLinks(i).getType()) ||
(links_var[i].getNumberOfTOS() != routerLSA->getLinks(i).getNumberOfTOS()) ||
(links_var[i].getLinkCost() != routerLSA->getLinks(i).getLinkCost()) ||
(links_var[i].getTosDataArraySize() != routerLSA->getLinks(i).getTosDataArraySize()));
if (!differentLink) {
unsigned int tosCount = links_var[i].getTosDataArraySize();
for (unsigned int j = 0; j < tosCount; j++) {
bool differentTOS = ((links_var[i].getTosData(j).tos != routerLSA->getLinks(i).getTosData(j).tos) ||
(links_var[i].getTosData(j).tosMetric[0] != routerLSA->getLinks(i).getTosData(j).tosMetric[0]) ||
(links_var[i].getTosData(j).tosMetric[1] != routerLSA->getLinks(i).getTosData(j).tosMetric[1]) ||
(links_var[i].getTosData(j).tosMetric[2] != routerLSA->getLinks(i).getTosData(j).tosMetric[2]));
if (differentTOS) {
differentLink = true;
break;
}
}
}
if (differentLink) {
differentBody = true;
break;
}
}
}
}
return (differentHeader || differentBody);
}
| bool AnsaOSPF::RouterLSA::Update | ( | const OSPFRouterLSA * | lsa | ) |
Definition at line 3 of file AnsaRouterLSA.cc.
Referenced by AnsaOSPF::Area::AgeDatabase(), AnsaOSPF::NeighborState::ChangeState(), AnsaOSPF::InterfaceState::ChangeState(), and AnsaOSPF::HelloHandler::ProcessPacket().
{
EV << "-----------------------------------------------------\n";
PrintLSAHeader(lsa->getHeader(), ev.getOStream());
EV << "-----------------------------------------------------\n";
PrintLSAHeader(this->getHeader(), ev.getOStream());
EV << "-----------------------------------------------------\n";
bool different = DiffersFrom(lsa);
(*this) = (*lsa);
ResetInstallTime();
if (different) {
ClearNextHops();
return true;
} else {
return false;
}
}
| bool AnsaOSPF::RouterLSA::ValidateLSChecksum | ( | ) | const [inline] |
Definition at line 74 of file AnsaLSA.h.
Referenced by AnsaOSPF::Area::AgeDatabase().
{ return true; } // not implemented