28 if (destType1 == destType2)
54 for (i = 0; i < rtTable->
numRow; i++)
58 if (!
IP_COMPARE(rowPtr[i]->destAddr, destAddr) &&
63 if (!longestMatchingEntry ||
64 rowPtr[i]->addrMask->int_ip[0] >
66 longestMatchingEntry = rowPtr[i];
77 if (!longestMatchingEntry ||
78 rowPtr[i]->addrMask->int_ip[0] >
80 longestMatchingEntry = rowPtr[i];
84 return longestMatchingEntry;
96 for (i = 0; i < rtTable->
numRow; i++)
100 if (rowPtr[i]->destAddr->
int_ip[0] == destAddr->
int_ip[0] &&
110 if (!longestMatchingEntry ||
111 rowPtr[i]->addrMask->int_ip[0] > longestMatchingEntry->
addrMask->
int_ip[0])
113 longestMatchingEntry = rowPtr[i];
118 return longestMatchingEntry;
142 memcpy(table->
rows[table->
numRow], row,
sizeof* row);
174 memcpy(rowPtr, newRoute,
sizeof* newRoute);
192 for (i = 0; i < rtTable->
numRow; i++)
194 rowPtr = rtTable->
rows[i];
213 for (i = 0; i < rtTable->
numRow; i++)
215 rowPtr = rtTable->
rows[i];
231 if (!longestMatchingEntry ||
233 longestMatchingEntry = rowPtr;
237 return longestMatchingEntry;
245 bool isFound =
false;
246 for (i = 0; i < rtTable->
numRow; i++)
248 if (rtTable->
rows[i] == row)
251 rtTable->
rows[i] = NULL;
256 if (i != rtTable->
numRow - 1)
257 rtTable->
rows[i] = rtTable->
rows[i + 1];
259 rtTable->
rows[i] = NULL;
284#pragma message(__LOC__"Uncomment after bug correction of link failure.")
312 "Updating IP table for device %d at time %lf. Number of rows %d.",
317 for (i = 0; i < rtTable->
numRow; i++)
319 rowPtr = rtTable->
rows[i];
328 "%s,%s,%s,%s,%d,%d,",
351#pragma message(__LOC__"Remove after link failure bug")
ptrIP_ROUTINGTABLE iptable_add(ptrIP_WRAPPER wrapper, NETSIM_IPAddress dest, NETSIM_IPAddress subnet, unsigned int prefix_len, NETSIM_IPAddress gateway, UINT interfaceCount, NETSIM_IPAddress *interfaceIp, NETSIM_ID *interfaceId, unsigned int metric, char *type)
#define IP_COMPARE(ip1, ip2)
#define STR_TO_IP4(ipstr)
char * form_dlogId(char *name, NETSIM_ID d)
bool ospf_isMyAddr(NETSIM_ID d, NETSIM_IPAddress addr)
void print_ospf_Dlog(char *id, char *format,...)
void ospf_Table_updateIPTable_Dijkstra(ptrOSPF_PDS ospf, ptrOSPF_COST_LIST list)
static void ospf_rtTable_deleteAllIPRoute(ptrOSPF_PDS ospf)
ptrOSPFROUTINGTABLEROW ospf_rtTable_getValidHostRoute(ptrOSPF_PDS ospf, NETSIM_IPAddress destAddr, OSPFDESTTYPE destType)
ptrOSPFROUTINGTABLEROW ospf_rtTable_getValidRoute(ptrOSPF_PDS ospf, NETSIM_IPAddress destAddr, OSPFDESTTYPE destType)
void ospf_rtTable_addRoute(ptrOSPF_PDS ospf, ptrOSPFROUTINGTABLEROW newRoute)
static ptrOSPFROUTINGTABLEROW ospf_rtTable_getIntraAreaRoute(ptrOSPF_PDS ospf, NETSIM_IPAddress destAddr, OSPFDESTTYPE destType, OSPFID areaId)
static void ospf_rtTable_addIPRoute(ptrOSPF_PDS ospf, void *iproute)
static bool ospf_rtTable_isRouteMatch(ptrOSPFROUTINGTABLEROW newRoute, ptrOSPFROUTINGTABLEROW oldRoute)
static void ospf_rtTable_addRowToTable(ptrOSPF_PDS ospf, ptrOSPFROUTINGTABLE table, ptrOSPFROUTINGTABLEROW row)
static ptrOSPFROUTINGTABLEROW ospf_rtTable_getRoute(ptrOSPF_PDS ospf, NETSIM_IPAddress destAddr, OSPFDESTTYPE destType)
static bool ospf_rtTable_compareDestType(OSPFDESTTYPE destType1, OSPFDESTTYPE destType2)
void ospf_rtTable_updateIPTable(ptrOSPF_PDS ospf)
void ospf_rtTable_freeAllInvalidRoute(ptrOSPF_PDS ospf)
void ospf_rtTable_freeRoute(ptrOSPF_PDS ospf, ptrOSPFROUTINGTABLEROW row)
@ OSPFPATHTYPE_INTRA_AREA
@ OSPFROUTEFLAG_NO_CHANGE
enum enum_ospf_dest_type OSPFDESTTYPE
#define DEVICE_NWADDRESS(DeviceId, InterfaceId)
#define DEVICE_INTERFACE(DeviceId, InterfaceId)
#define IP_WRAPPER_GET(DeviceId)
NETSIM_IPAddress destAddr
NETSIM_IPAddress addrMask
NETSIM_IPAddress outInterface
ptrOSPFROUTINGTABLEROW * rows
struct stru_OSPF_COST_LIST * next
struct stru_OSPF_PATH * next
char str_ip[_NETSIM_IP_LEN]
ptrOSPFROUTINGTABLE routingTable