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