#include "OSPFPacket_m.h"#include "OSPFcommon.h"#include <vector>#include <math.h>Go to the source code of this file.
Classes | |
| struct | OSPF::NextHop |
| class | OSPF::RoutingInfo |
| class | OSPF::LSATrackingInfo |
| class | OSPF::RouterLSA |
| class | OSPF::NetworkLSA |
| class | OSPF::SummaryLSA |
| class | OSPF::ASExternalLSA |
Namespaces | |
| namespace | OSPF |
Functions | |
| bool | operator< (const OSPFLSAHeader &leftLSA, const OSPFLSAHeader &rightLSA) |
| bool | operator== (const OSPFLSAHeader &leftLSA, const OSPFLSAHeader &rightLSA) |
| bool | operator== (const OSPFOptions &leftOptions, const OSPFOptions &rightOptions) |
| bool | operator!= (const OSPFOptions &leftOptions, const OSPFOptions &rightOptions) |
| bool | operator== (const OSPF::NextHop &leftHop, const OSPF::NextHop &rightHop) |
| bool | operator!= (const OSPF::NextHop &leftHop, const OSPF::NextHop &rightHop) |
| unsigned int | CalculateLSASize (const OSPFRouterLSA *routerLSA) |
| unsigned int | CalculateLSASize (const OSPFNetworkLSA *networkLSA) |
| unsigned int | CalculateLSASize (const OSPFSummaryLSA *summaryLSA) |
| unsigned int | CalculateLSASize (const OSPFASExternalLSA *asExternalLSA) |
| void | PrintLSAHeader (const OSPFLSAHeader &lsaHeader, std::ostream &output) |
| std::ostream & | operator<< (std::ostream &ostr, OSPFLSA &lsa) |
| unsigned int CalculateLSASize | ( | const OSPFRouterLSA * | routerLSA | ) | [inline] |
Definition at line 241 of file LSA.h.
Referenced by OSPF::Neighbor::RetransmitUpdatePacket().
{
unsigned int lsaLength = OSPF_LSA_HEADER_LENGTH + OSPF_ROUTERLSA_HEADER_LENGTH;
unsigned short linkCount = routerLSA->getLinksArraySize();
for (unsigned short i = 0; i < linkCount; i++) {
const Link& link = routerLSA->getLinks(i);
lsaLength += OSPF_LINK_HEADER_LENGTH + (link.getTosDataArraySize() * OSPF_TOS_LENGTH);
}
return lsaLength;
}
| unsigned int CalculateLSASize | ( | const OSPFNetworkLSA * | networkLSA | ) | [inline] |
Definition at line 254 of file LSA.h.
{
return (OSPF_LSA_HEADER_LENGTH + OSPF_NETWORKLSA_MASK_LENGTH +
(networkLSA->getAttachedRoutersArraySize() * OSPF_NETWORKLSA_ADDRESS_LENGTH));
}
| unsigned int CalculateLSASize | ( | const OSPFSummaryLSA * | summaryLSA | ) | [inline] |
Definition at line 260 of file LSA.h.
{
return (OSPF_LSA_HEADER_LENGTH + OSPF_SUMMARYLSA_HEADER_LENGTH +
(summaryLSA->getTosDataArraySize() * OSPF_TOS_LENGTH));
}
| unsigned int CalculateLSASize | ( | const OSPFASExternalLSA * | asExternalLSA | ) | [inline] |
Definition at line 266 of file LSA.h.
{
return (OSPF_LSA_HEADER_LENGTH + OSPF_ASEXTERNALLSA_HEADER_LENGTH +
(asExternalLSA->getContents().getExternalTOSInfoArraySize() * OSPF_ASEXTERNALLSA_TOS_INFO_LENGTH));
}
| bool operator!= | ( | const OSPFOptions & | leftOptions, | |
| const OSPFOptions & | rightOptions | |||
| ) | [inline] |
| bool operator!= | ( | const OSPF::NextHop & | leftHop, | |
| const OSPF::NextHop & | rightHop | |||
| ) | [inline] |
| bool operator< | ( | const OSPFLSAHeader & | leftLSA, | |
| const OSPFLSAHeader & | rightLSA | |||
| ) | [inline] |
Returns true if leftLSA is older than rightLSA.
Definition at line 160 of file LSA.h.
{
long leftSequenceNumber = leftLSA.getLsSequenceNumber();
long rightSequenceNumber = rightLSA.getLsSequenceNumber();
if (leftSequenceNumber < rightSequenceNumber) {
return true;
}
if (leftSequenceNumber == rightSequenceNumber) {
unsigned short leftChecksum = leftLSA.getLsChecksum();
unsigned short rightChecksum = rightLSA.getLsChecksum();
if (leftChecksum < rightChecksum) {
return true;
}
if (leftChecksum == rightChecksum) {
unsigned short leftAge = leftLSA.getLsAge();
unsigned short rightAge = rightLSA.getLsAge();
if ((leftAge != MAX_AGE) && (rightAge == MAX_AGE)) {
return true;
}
if ((abs(leftAge - rightAge) > MAX_AGE_DIFF) && (leftAge > rightAge)) {
return true;
}
}
}
return false;
}
| std::ostream& operator<< | ( | std::ostream & | ostr, | |
| OSPFLSA & | lsa | |||
| ) | [inline] |
Definition at line 294 of file LSA.h.
{
PrintLSAHeader(lsa.getHeader(), ostr);
return ostr;
}
| bool operator== | ( | const OSPF::NextHop & | leftHop, | |
| const OSPF::NextHop & | rightHop | |||
| ) | [inline] |
Definition at line 229 of file LSA.h.
{
return ((leftHop.ifIndex == rightHop.ifIndex) &&
(leftHop.hopAddress == rightHop.hopAddress) &&
(leftHop.advertisingRouter == rightHop.advertisingRouter));
}
| bool operator== | ( | const OSPFLSAHeader & | leftLSA, | |
| const OSPFLSAHeader & | rightLSA | |||
| ) | [inline] |
Returns true if leftLSA is the same age as rightLSA.
Definition at line 193 of file LSA.h.
{
long leftSequenceNumber = leftLSA.getLsSequenceNumber();
long rightSequenceNumber = rightLSA.getLsSequenceNumber();
unsigned short leftChecksum = leftLSA.getLsChecksum();
unsigned short rightChecksum = rightLSA.getLsChecksum();
unsigned short leftAge = leftLSA.getLsAge();
unsigned short rightAge = rightLSA.getLsAge();
if ((leftSequenceNumber == rightSequenceNumber) &&
(leftChecksum == rightChecksum) &&
(((leftAge == MAX_AGE) && (rightAge == MAX_AGE)) ||
(((leftAge != MAX_AGE) && (rightAge != MAX_AGE)) &&
(abs(leftAge - rightAge) <= MAX_AGE_DIFF))))
{
return true;
}
else {
return false;
}
}
| bool operator== | ( | const OSPFOptions & | leftOptions, | |
| const OSPFOptions & | rightOptions | |||
| ) | [inline] |
Definition at line 215 of file LSA.h.
{
return ((leftOptions.E_ExternalRoutingCapability == rightOptions.E_ExternalRoutingCapability) &&
(leftOptions.MC_MulticastForwarding == rightOptions.MC_MulticastForwarding) &&
(leftOptions.NP_Type7LSA == rightOptions.NP_Type7LSA) &&
(leftOptions.EA_ForwardExternalLSAs == rightOptions.EA_ForwardExternalLSAs) &&
(leftOptions.DC_DemandCircuits == rightOptions.DC_DemandCircuits));
}
| void PrintLSAHeader | ( | const OSPFLSAHeader & | lsaHeader, | |
| std::ostream & | output | |||
| ) | [inline] |
Definition at line 272 of file LSA.h.
Referenced by operator<<(), OSPF::MessageHandler::PrintDatabaseDescriptionPacket(), OSPF::MessageHandler::PrintLinkStateAcknowledgementPacket(), OSPF::MessageHandler::PrintLinkStateUpdatePacket(), OSPF::DatabaseDescriptionHandler::ProcessDDPacket(), OSPF::LinkStateUpdateHandler::ProcessPacket(), and OSPF::LinkStateAcknowledgementHandler::ProcessPacket().
{
char addressString[16];
output << "LSAHeader: age="
<< lsaHeader.getLsAge()
<< ", type=";
switch (lsaHeader.getLsType()) {
case RouterLSAType: output << "RouterLSA"; break;
case NetworkLSAType: output << "NetworkLSA"; break;
case SummaryLSA_NetworksType: output << "SummaryLSA_Networks"; break;
case SummaryLSA_ASBoundaryRoutersType: output << "SummaryLSA_ASBoundaryRouters"; break;
case ASExternalLSAType: output << "ASExternalLSA"; break;
default: output << "Unknown"; break;
}
output << ", LSID="
<< AddressStringFromULong(addressString, sizeof(addressString), lsaHeader.getLinkStateID());
output << ", advertisingRouter="
<< AddressStringFromULong(addressString, sizeof(addressString), lsaHeader.getAdvertisingRouter().getInt())
<< ", seqNumber="
<< lsaHeader.getLsSequenceNumber();
output << endl;
}
1.7.1