-
Notifications
You must be signed in to change notification settings - Fork 0
/
table.h
55 lines (44 loc) · 1.1 KB
/
table.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <fstream>
#include <cstdint>
#include <vector>
#include <string>
#pragma once
/**
* Structure for keeping the data from each row of the routing table.
*/
typedef struct {
uint32_t netid;
uint32_t netmask;
uint32_t nextHop;
} Route;
class RoutingTable {
private:
// Properties
const char* tableFile;
std::vector<Route> routes;
public:
/**
* Construct the object by taking in the filename
* and assigning it to that property.
*/
RoutingTable(const char* filename);
/**
* Convert string representation of IP Address to int.
* Static because it doesn't rely on any object data and
* so it can be used without needing an instance of this class.
*/
static uint32_t addr_stoh(std::string ipString);
/**
* Convert int representation of IP Address to string.
*/
static const char* addr_htos(uint32_t ipInt);
/**
* Read in the forwarding table.
*/
void read();
/**
* Get the next hop given the forwarding table
* already read
*/
uint32_t getNextHop(uint32_t destination);
};