#include "OSPFPacket_m.h"
#include "OSPFcommon.h"
#include <vector>
#include <math.h>
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=&ev) |
| std::ostream & | operator<< (std::ostream &ostr, OSPFLSA &lsa) |
|
|
00250 {
00251 return (OSPF_LSA_HEADER_LENGTH + OSPF_ASEXTERNALLSA_HEADER_LENGTH +
00252 (asExternalLSA->getContents ().getExternalTOSInfoArraySize () * OSPF_ASEXTERNALLSA_TOS_INFO_LENGTH));
00253 }
|
|
|
00244 {
00245 return (OSPF_LSA_HEADER_LENGTH + OSPF_SUMMARYLSA_HEADER_LENGTH +
00246 (summaryLSA->getTosDataArraySize () * OSPF_TOS_LENGTH));
00247 }
|
|
|
00238 {
00239 return (OSPF_LSA_HEADER_LENGTH + OSPF_NETWORKLSA_MASK_LENGTH +
00240 (networkLSA->getAttachedRoutersArraySize () * OSPF_NETWORKLSA_ADDRESS_LENGTH));
00241 }
|
|
|
00225 {
00226 unsigned int lsaLength = OSPF_LSA_HEADER_LENGTH + OSPF_ROUTERLSA_HEADER_LENGTH;
00227 unsigned short linkCount = routerLSA->getLinksArraySize ();
00228
00229 for (unsigned short i = 0; i < linkCount; i++) {
00230 const Link& link = routerLSA->getLinks (i);
00231 lsaLength += OSPF_LINK_HEADER_LENGTH + (link.getTosDataArraySize () * OSPF_TOS_LENGTH);
00232 }
00233
00234 return lsaLength;
00235 }
|
|
||||||||||||
|
00220 {
00221 return (!(leftHop == rightHop));
00222 }
|
|
||||||||||||
|
00208 {
00209 return (!(leftOptions == rightOptions));
00210 }
|
|
||||||||||||
|
Returns true if leftLSA is older than rightLSA. 00144 {
00145 long leftSequenceNumber = leftLSA.getLsSequenceNumber ();
00146 long rightSequenceNumber = rightLSA.getLsSequenceNumber ();
00147
00148 if (leftSequenceNumber < rightSequenceNumber) {
00149 return true;
00150 }
00151 if (leftSequenceNumber == rightSequenceNumber) {
00152 unsigned short leftChecksum = leftLSA.getLsChecksum ();
00153 unsigned short rightChecksum = rightLSA.getLsChecksum ();
00154
00155 if (leftChecksum < rightChecksum) {
00156 return true;
00157 }
00158 if (leftChecksum == rightChecksum) {
00159 unsigned short leftAge = leftLSA.getLsAge ();
00160 unsigned short rightAge = rightLSA.getLsAge ();
00161
00162 if ((leftAge != MAX_AGE) && (rightAge == MAX_AGE)) {
00163 return true;
00164 }
00165 if ((abs (leftAge - rightAge) > MAX_AGE_DIFF) && (leftAge > rightAge)) {
00166 return true;
00167 }
00168 }
00169 }
00170 return false;
00171 }
|
|
||||||||||||
|
00278 {
00279 PrintLSAHeader (lsa.getHeader (), &ostr);
00280 return ostr;
00281 }
|
|
||||||||||||
|
00213 {
00214 return ((leftHop.ifIndex == rightHop.ifIndex) &&
00215 (leftHop.hopAddress == rightHop.hopAddress) &&
00216 (leftHop.advertisingRouter == rightHop.advertisingRouter));
00217 }
|
|
||||||||||||
|
00199 {
00200 return ((leftOptions.E_ExternalRoutingCapability == rightOptions.E_ExternalRoutingCapability) &&
00201 (leftOptions.MC_MulticastForwarding == rightOptions.MC_MulticastForwarding) &&
00202 (leftOptions.NP_Type7LSA == rightOptions.NP_Type7LSA) &&
00203 (leftOptions.EA_ForwardExternalLSAs == rightOptions.EA_ForwardExternalLSAs) &&
00204 (leftOptions.DC_DemandCircuits == rightOptions.DC_DemandCircuits));
00205 }
|
|
||||||||||||
|
Returns true if leftLSA is the same age as rightLSA. 00177 {
00178 long leftSequenceNumber = leftLSA.getLsSequenceNumber ();
00179 long rightSequenceNumber = rightLSA.getLsSequenceNumber ();
00180 unsigned short leftChecksum = leftLSA.getLsChecksum ();
00181 unsigned short rightChecksum = rightLSA.getLsChecksum ();
00182 unsigned short leftAge = leftLSA.getLsAge ();
00183 unsigned short rightAge = rightLSA.getLsAge ();
00184
00185 if ((leftSequenceNumber == rightSequenceNumber) &&
00186 (leftChecksum == rightChecksum) &&
00187 (((leftAge == MAX_AGE) && (rightAge == MAX_AGE)) ||
00188 (((leftAge != MAX_AGE) && (rightAge != MAX_AGE)) &&
00189 (abs (leftAge - rightAge) <= MAX_AGE_DIFF))))
00190 {
00191 return true;
00192 }
00193 else {
00194 return false;
00195 }
00196 }
|
|
||||||||||||
|
00255 {
00256 char addressString[16];
00257 *output << "LSAHeader: age="
00258 << lsaHeader.getLsAge ()
00259 << ", type=";
00260 switch (lsaHeader.getLsType ()) {
00261 case RouterLSAType: *output << "RouterLSA"; break;
00262 case NetworkLSAType: *output << "NetworkLSA"; break;
00263 case SummaryLSA_NetworksType: *output << "SummaryLSA_Networks"; break;
00264 case SummaryLSA_ASBoundaryRoutersType: *output << "SummaryLSA_ASBoundaryRouters"; break;
00265 case ASExternalLSAType: *output << "ASExternalLSA"; break;
00266 default: *output << "Unknown"; break;
00267 }
00268 *output << ", LSID="
00269 << AddressStringFromULong (addressString, sizeof (addressString), lsaHeader.getLinkStateID ());
00270 *output << ", advertisingRouter="
00271 << AddressStringFromULong (addressString, sizeof (addressString), lsaHeader.getAdvertisingRouter ().getInt ())
00272 << ", seqNumber="
00273 << lsaHeader.getLsSequenceNumber ();
00274 *output << endl;
00275 }
|
1.4.1