blob: 62c91ee71d975ba598380c6fff47df7939ac7e85 [file] [log] [blame]
akmhoque298385a2014-02-13 14:13:09 -06001#ifndef NLSR_LSDB_HPP
2#define NLSR_LSDB_HPP
3
4#include <utility>
5#include "nlsr_lsa.hpp"
6
7using namespace std;
8
9class nlsr;
10
11class Lsdb{
12public:
13 Lsdb()
14 : lsaRefreshTime(0)
15 {
16 }
17
18
19 bool doesLsaExist(string key, int lsType);
20 // function related to Name LSDB
21 bool buildAndInstallOwnNameLsa(nlsr& pnlsr);
22 std::pair<NameLsa&, bool> getNameLsa(string key);
23 bool installNameLsa(nlsr& pnlsr, NameLsa &nlsa);
24 bool removeNameLsa(nlsr& pnlsr, string& key);
25 void printNameLsdb(); //debugging
26
27 //function related to Cor LSDB
28 bool buildAndInstallOwnCorLsa(nlsr& pnlsr);
29 std::pair<CorLsa&, bool> getCorLsa(string key);
30 bool installCorLsa(nlsr& pnlsr, CorLsa &clsa);
31 bool removeCorLsa(nlsr& pnlsr, string& key);
32 void printCorLsdb(); //debugging
33
34 //function related to Adj LSDB
35 void scheduledAdjLsaBuild(nlsr& pnlsr);
36 bool buildAndInstallOwnAdjLsa(nlsr& pnlsr);
37 bool removeAdjLsa(nlsr& pnlsr, string& key);
38 bool installAdjLsa(nlsr& pnlsr, AdjLsa &alsa);
39 std::pair<AdjLsa& , bool> getAdjLsa(string key);
40 std::list<AdjLsa>& getAdjLsdb();
41 void printAdjLsdb();
42
43 //void scheduleRefreshLsdb(nlsr& pnlsr, int interval);
44 void setLsaRefreshTime(int lrt);
45 void setThisRouterPrefix(string trp);
46
47private:
48 bool addNameLsa(NameLsa &nlsa);
49 bool doesNameLsaExist(string key);
50
51
52 bool addCorLsa(CorLsa& clsa);
53 bool doesCorLsaExist(string key);
54
55 bool addAdjLsa(AdjLsa &alsa);
56 bool doesAdjLsaExist(string key);
57
58 void scheduleNameLsaExpiration(nlsr& pnlsr, string key, int seqNo, int expTime);
59 void exprireOrRefreshNameLsa(nlsr& pnlsr, string lsaKey, int seqNo);
60 void scheduleAdjLsaExpiration(nlsr& pnlsr, string key, int seqNo, int expTime);
61 void exprireOrRefreshAdjLsa(nlsr& pnlsr, string lsaKey, int seqNo);
62 void scheduleCorLsaExpiration(nlsr& pnlsr, string key, int seqNo, int expTime);
63 void exprireOrRefreshCorLsa(nlsr& pnlsr, string lsaKey, int seqNo);
64
65
66private:
67 std::list<NameLsa> nameLsdb;
68 std::list<AdjLsa> adjLsdb;
69 std::list<CorLsa> corLsdb;
70
71 int lsaRefreshTime;
72 string thisRouterPrefix;
73
74};
75
76#endif