27 bool shouldRebuildRoutingTable =
false;
28 RouterId routerID = neighbor->getInterface()->getArea()->getRouter()->getRouterID();
29 RouterLsa *routerLSA = neighbor->getInterface()->getArea()->findRouterLSA(routerID);
31 if (routerLSA !=
nullptr) {
32 long sequenceNumber = routerLSA->getHeader().getLsSequenceNumber();
34 routerLSA->getHeaderForUpdate().setLsAge(
MAX_AGE);
35 neighbor->getInterface()->getArea()->floodLSA(routerLSA);
36 routerLSA->incrementInstallTime();
39 RouterLsa *newLSA = neighbor->getInterface()->getArea()->originateRouterLSA();
41 newLSA->getHeaderForUpdate().setLsSequenceNumber(sequenceNumber + 1);
42 shouldRebuildRoutingTable |= routerLSA->update(newLSA);
45 neighbor->getInterface()->getArea()->floodLSA(routerLSA);
50 NetworkLsa *networkLSA = neighbor->getInterface()->getArea()->findNetworkLSA(neighbor->getInterface()->getAddressRange().address);
52 if (networkLSA !=
nullptr) {
53 long sequenceNumber = networkLSA->getHeader().getLsSequenceNumber();
55 networkLSA->getHeaderForUpdate().setLsAge(
MAX_AGE);
56 neighbor->getInterface()->getArea()->floodLSA(networkLSA);
57 networkLSA->incrementInstallTime();
60 NetworkLsa *newLSA = neighbor->getInterface()->getArea()->originateNetworkLSA(neighbor->getInterface());
62 if (newLSA !=
nullptr) {
63 newLSA->getHeaderForUpdate().setLsSequenceNumber(sequenceNumber + 1);
64 shouldRebuildRoutingTable |= networkLSA->update(newLSA);
68 networkLSA->getHeaderForUpdate().setLsAge(
MAX_AGE);
69 networkLSA->incrementInstallTime();
72 neighbor->getInterface()->getArea()->floodLSA(networkLSA);
77 return shouldRebuildRoutingTable;