#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; }