blob: ef54742bfc4f9cd1df72613e1ebb2321d43529f9 [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
10class nlsr;
11class NextHop;
12
13using namespace std;
14
15class RoutingTable
16{
17public:
18 RoutingTable()
19 : NO_NEXT_HOP(-12345)
20 {
21 }
22 void calculate(nlsr& pnlsr);
23 void addNextHop(string destRouter, NextHop& nh);
24 void printRoutingTable();
25
26 void addNextHopToDryTable(string destRouter, NextHop& nh);
27 void printDryRoutingTable();
28 std::pair<RoutingTableEntry&, bool> findRoutingTableEntry(string destRouter);
29 void scheduleRoutingTableCalculation(nlsr& pnlsr);
30
31private:
32 void calculateLsRoutingTable(nlsr& pnlsr);
33 void calculateHypRoutingTable(nlsr& pnlsr);
34 void calculateHypDryRoutingTable(nlsr&pnlsr);
35
36 void clearRoutingTable();
37 void clearDryRoutingTable();
38
39 const int NO_NEXT_HOP;
40
41 std::list< RoutingTableEntry > rTable;
42 std::list< RoutingTableEntry > dryTable;
43};
44
45#endif