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