Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSPF::RouterLSA Class Reference

#include <LSA.h>

Inheritance diagram for OSPF::RouterLSA:

OSPFRouterLSA OSPF::RoutingInfo OSPF::LSATrackingInfo OSPFLSA List of all members.

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

Constructor & Destructor Documentation

OSPF::RouterLSA::RouterLSA void   )  [inline]
 

OSPF::RouterLSA::RouterLSA const OSPFRouterLSA lsa  )  [inline]
 

00070 : OSPFRouterLSA (lsa), RoutingInfo (), LSATrackingInfo () {}

OSPF::RouterLSA::RouterLSA const RouterLSA lsa  )  [inline]
 

00071 : OSPFRouterLSA (lsa), RoutingInfo (lsa), LSATrackingInfo (lsa) {}

virtual OSPF::RouterLSA::~RouterLSA void   )  [inline, virtual]
 

00072 {}


Member Function Documentation

bool OSPF::RouterLSA::DiffersFrom const OSPFRouterLSA routerLSA  )  const
 

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 }

bool OSPF::RouterLSA::Update const OSPFRouterLSA lsa  ) 
 

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 }

bool OSPF::RouterLSA::ValidateLSChecksum  )  const [inline]
 

00074 { return true; } // not implemented


The documentation for this class was generated from the following files:
Generated on Thu Oct 19 18:22:33 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.0