blob: e65cf26212263a9dd42831cc6d2e38f6a051da7a [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
akmhoque1a481092014-02-19 16:34:22 -060010class Nlsr;
akmhoque298385a2014-02-13 14:13:09 -060011class NextHop;
12
13using namespace std;
14
15class RoutingTable
16{
17public:
18 RoutingTable()
19 : NO_NEXT_HOP(-12345)
20 {
21 }
akmhoque1a481092014-02-19 16:34:22 -060022 void calculate(Nlsr& pnlsr);
akmhoque298385a2014-02-13 14:13:09 -060023 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);
akmhoque1a481092014-02-19 16:34:22 -060029 void scheduleRoutingTableCalculation(Nlsr& pnlsr);
akmhoque298385a2014-02-13 14:13:09 -060030
31private:
akmhoque1a481092014-02-19 16:34:22 -060032 void calculateLsRoutingTable(Nlsr& pnlsr);
33 void calculateHypRoutingTable(Nlsr& pnlsr);
34 void calculateHypDryRoutingTable(Nlsr&pnlsr);
akmhoque298385a2014-02-13 14:13:09 -060035
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