NetSim Source Code Help v14.4
All 13 Components
 
Loading...
Searching...
No Matches
OSPF_RoutingTable.h
1#pragma once
2/************************************************************************************
3* Copyright (C) 2023 *
4* TETCOS, Bangalore. India *
5* *
6* Tetcos owns the intellectual property rights in the Product and its content. *
7* The copying, redistribution, reselling or publication of any or all of the *
8* Product or its content without express prior written consent of Tetcos is *
9* prohibited. Ownership and / or any other right relating to the software and all *
10* intellectual property rights therein shall remain at all times with Tetcos. *
11* *
12* Author: Shashi Kant Suman *
13* *
14* ---------------------------------------------------------------------------------*/
15
16#ifndef _NETSIM_OSPF_ROUTINGTABLE_H_
17#define _NETSIM_OSPF_ROUTINGTABLE_H_
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22#define OSPF_LS_INFINITY 0xFFFFFF
23
24#ifndef ptrIP_ROUTINGTABLE
25#define ptrIP_ROUTINGTABLE void*
26#endif
27
28enum enum_ospf_dest_type
29{
30 OSPFDESTTYPE_ABR,
31 OSPFDESTTYPE_ASBR,
32 OSPFDESTTYPE_ABR_ASBR,
33 OSPFDESTTYPE_NETWORK,
34 OSPFDESTTYPE_ROUTER
35};
36
37typedef enum
38{
39 OSPFPATHTYPE_INTRA_AREA,
40 OSPFPATHTYPE_INTER_AREA,
41 OSPFPATHTYPE_TYPE1_EXTERNAL,
42 OSPFPATHTYPE_TYPE2_EXTERNAL
43} OSPFPATHTYPE;
44
45typedef enum
46{
47 OSPFROUTEFLAG_INVALID,
48 OSPFROUTEFLAG_CHANGED,
49 OSPFROUTEFLAG_NO_CHANGE,
50 OSPFROUTEFLAG_NEW
51} OSPFROUTEFLAG;
52
53// A row struct for routing table
55{
56 OSPFDESTTYPE destType;
57 NETSIM_IPAddress destAddr;
58 NETSIM_IPAddress addrMask;
59 char option;
60 OSPFID areaId;
61 OSPFPATHTYPE pathType;
62 UINT metric;
63 UINT type2Metric;
64 void* LSOrigin;
65 NETSIM_IPAddress nextHop;
66 NETSIM_ID nextHopId;
67 NETSIM_IPAddress outInterface;
68 NETSIM_ID outInterfaceId;
69 NETSIM_IPAddress advertisingRouter;
70 OSPFROUTEFLAG flag;
71}OSPFROUTINGTABLEROW,*ptrOSPFROUTINGTABLEROW;
72
74{
75 UINT numRow;
76 ptrOSPFROUTINGTABLEROW* rows;
77};
78
79typedef enum
80{
81 OSPFVERTEXTYPE_ROUTER,
82 OSPFVERTEXTYPE_NETWORK
83} OSPFVERTEXTYPE;
84static char strOSPFVERTEXTYPE[][20] = { "VERTEX_ROUTER","VERTEX_NETWORK" };
85
86typedef struct
87{
88 NETSIM_ID outIntf;
89 NETSIM_IPAddress nextHop;
90} OSPFNEXTHOPLISTITEM, *ptrOSPFNEXTHOPLISTITEM;
91
92typedef struct
93{
94 NETSIM_IPAddress vertexId;
95 OSPFVERTEXTYPE vertexType;
96 ptrOSPFLSAHDR lsa;
97 ptrOSPFLIST nextHopList;
98 UINT distance;
99} OSPFVERTEX,*ptrOSPFVERTEX;
100
101//OSPF Routing table
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);
115
116#ifdef __cplusplus
117}
118#endif
119#endif //_NETSIM_OSPF_ROUTINGTABLE_H_