blob: 22e3cfe415582c3afd4ab339ebaa84af4a414ab1 [file] [log] [blame]
akmhoque298385a2014-02-13 14:13:09 -06001#ifndef NLSR_RT_HPP
2#define NLSR_RT_HPP
3
4#include<iostream>
5#include<utility>
6#include<string>
7
8#include "nlsr_rte.hpp"
9
akmhoqueb1710aa2014-02-19 17:13:36 -060010namespace nlsr {
11
akmhoque1a481092014-02-19 16:34:22 -060012class Nlsr;
akmhoque298385a2014-02-13 14:13:09 -060013class NextHop;
14
15using namespace std;
16
17class RoutingTable
18{
19public:
20 RoutingTable()
21 : NO_NEXT_HOP(-12345)
22 {
23 }
akmhoque1a481092014-02-19 16:34:22 -060024 void calculate(Nlsr& pnlsr);
akmhoque298385a2014-02-13 14:13:09 -060025 void addNextHop(string destRouter, NextHop& nh);
26 void printRoutingTable();
27
28 void addNextHopToDryTable(string destRouter, NextHop& nh);
29 void printDryRoutingTable();
30 std::pair<RoutingTableEntry&, bool> findRoutingTableEntry(string destRouter);
akmhoque1a481092014-02-19 16:34:22 -060031 void scheduleRoutingTableCalculation(Nlsr& pnlsr);
akmhoque298385a2014-02-13 14:13:09 -060032
33private:
akmhoque1a481092014-02-19 16:34:22 -060034 void calculateLsRoutingTable(Nlsr& pnlsr);
35 void calculateHypRoutingTable(Nlsr& pnlsr);
36 void calculateHypDryRoutingTable(Nlsr&pnlsr);
akmhoque298385a2014-02-13 14:13:09 -060037
38 void clearRoutingTable();
39 void clearDryRoutingTable();
40
41 const int NO_NEXT_HOP;
42
43 std::list< RoutingTableEntry > rTable;
44 std::list< RoutingTableEntry > dryTable;
45};
46
akmhoqueb1710aa2014-02-19 17:13:36 -060047}//namespace nlsr
48
akmhoque298385a2014-02-13 14:13:09 -060049#endif