#include <LSA.h>
Inheritance diagram for OSPF::RouterLSA:
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 |
|
00069 : OSPFRouterLSA (), RoutingInfo (), LSATrackingInfo () {}
|
|
00070 : OSPFRouterLSA (lsa), RoutingInfo (), LSATrackingInfo () {}
|
|
00071 : OSPFRouterLSA (lsa), RoutingInfo (lsa), LSATrackingInfo (lsa) {}
|
|
00072 {}
|
|
00017 { 00018 const OSPFLSAHeader& lsaHeader = routerLSA->getHeader (); 00019 bool differentHeader = ((header_var.getLsOptions () != lsaHeader.getLsOptions ()) || 00020 ((header_var.getLsAge () == MAX_AGE) && (lsaHeader.getLsAge () != MAX_AGE)) || 00021 ((header_var.getLsAge () != MAX_AGE) && (lsaHeader.getLsAge () == MAX_AGE)) || 00022 (header_var.getLength () != lsaHeader.getLength ())); 00023 bool differentBody = false; 00024 00025 if (!differentHeader) { 00026 differentBody = ((V_VirtualLinkEndpoint_var != routerLSA->getV_VirtualLinkEndpoint ()) || 00027 (E_ASBoundaryRouter_var != routerLSA->getE_ASBoundaryRouter ()) || 00028 (B_AreaBorderRouter_var != routerLSA->getB_AreaBorderRouter ()) || 00029 (numberOfLinks_var != routerLSA->getNumberOfLinks ()) || 00030 (links_arraysize != routerLSA->getLinksArraySize ())); 00031 00032 if (!differentBody) { 00033 unsigned int linkCount = links_arraysize; 00034 for (unsigned int i = 0; i < linkCount; i++) { 00035 bool differentLink = ((links_var[i].getLinkID () != routerLSA->getLinks (i).getLinkID ()) || 00036 (links_var[i].getLinkData () != routerLSA->getLinks (i).getLinkData ()) || 00037 (links_var[i].getType () != routerLSA->getLinks (i).getType ()) || 00038 (links_var[i].getNumberOfTOS () != routerLSA->getLinks (i).getNumberOfTOS ()) || 00039 (links_var[i].getLinkCost () != routerLSA->getLinks (i).getLinkCost ()) || 00040 (links_var[i].getTosDataArraySize () != routerLSA->getLinks (i).getTosDataArraySize ())); 00041 00042 if (!differentLink) { 00043 unsigned int tosCount = links_var[i].getTosDataArraySize (); 00044 for (unsigned int j = 0; j < tosCount; j++) { 00045 bool differentTOS = ((links_var[i].getTosData (j).tos != routerLSA->getLinks (i).getTosData (j).tos) || 00046 (links_var[i].getTosData (j).tosMetric[0] != routerLSA->getLinks (i).getTosData (j).tosMetric[0]) || 00047 (links_var[i].getTosData (j).tosMetric[1] != routerLSA->getLinks (i).getTosData (j).tosMetric[1]) || 00048 (links_var[i].getTosData (j).tosMetric[2] != routerLSA->getLinks (i).getTosData (j).tosMetric[2])); 00049 00050 if (differentTOS) { 00051 differentLink = true; 00052 break; 00053 } 00054 } 00055 } 00056 00057 if (differentLink) { 00058 differentBody = true; 00059 break; 00060 } 00061 } 00062 } 00063 } 00064 00065 return (differentHeader || differentBody); 00066 }
|
|
00004 { 00005 bool different = DiffersFrom (lsa); 00006 (*this) = (*lsa); 00007 ResetInstallTime (); 00008 if (different) { 00009 ClearNextHops (); 00010 return true; 00011 } else { 00012 return false; 00013 } 00014 }
|
|
00074 { return true; } // not implemented
|