16#ifndef _NETSIM_OSPF_ROUTINGTABLE_H_
17#define _NETSIM_OSPF_ROUTINGTABLE_H_
22#define OSPF_LS_INFINITY 0xFFFFFF
24#ifndef ptrIP_ROUTINGTABLE
25#define ptrIP_ROUTINGTABLE void*
28enum enum_ospf_dest_type
32 OSPFDESTTYPE_ABR_ASBR,
39 OSPFPATHTYPE_INTRA_AREA,
40 OSPFPATHTYPE_INTER_AREA,
41 OSPFPATHTYPE_TYPE1_EXTERNAL,
42 OSPFPATHTYPE_TYPE2_EXTERNAL
47 OSPFROUTEFLAG_INVALID,
48 OSPFROUTEFLAG_CHANGED,
49 OSPFROUTEFLAG_NO_CHANGE,
56 OSPFDESTTYPE destType;
57 NETSIM_IPAddress destAddr;
58 NETSIM_IPAddress addrMask;
61 OSPFPATHTYPE pathType;
65 NETSIM_IPAddress nextHop;
67 NETSIM_IPAddress outInterface;
68 NETSIM_ID outInterfaceId;
69 NETSIM_IPAddress advertisingRouter;
71}OSPFROUTINGTABLEROW,*ptrOSPFROUTINGTABLEROW;
76 ptrOSPFROUTINGTABLEROW* rows;
81 OSPFVERTEXTYPE_ROUTER,
82 OSPFVERTEXTYPE_NETWORK
84static char strOSPFVERTEXTYPE[][20] = {
"VERTEX_ROUTER",
"VERTEX_NETWORK" };
89 NETSIM_IPAddress nextHop;
94 NETSIM_IPAddress vertexId;
95 OSPFVERTEXTYPE vertexType;
97 ptrOSPFLIST nextHopList;
102void ospf_rtTable_addRoute(ptrOSPF_PDS ospf,
103 ptrOSPFROUTINGTABLEROW newRoute);
104void ospf_rtTable_freeRoute(ptrOSPF_PDS ospf,
105 ptrOSPFROUTINGTABLEROW row);
106void ospf_rtTable_freeAllInvalidRoute(ptrOSPF_PDS ospf);
107ptrOSPFROUTINGTABLEROW ospf_rtTable_getValidHostRoute(ptrOSPF_PDS ospf,
108 NETSIM_IPAddress destAddr,
109 OSPFDESTTYPE destType);
110ptrOSPFROUTINGTABLEROW ospf_rtTable_getValidRoute(ptrOSPF_PDS ospf,
111 NETSIM_IPAddress destAddr,
112 OSPFDESTTYPE destType);
113void ospf_rtTable_updateIPTable(ptrOSPF_PDS ospf);
114void ospf_Table_updateIPTable_Dijkstra(ptrOSPF_PDS ospf, ptrOSPF_COST_LIST list);