forked from bovenyan/CAB_SDN
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMicRuleTree.h
67 lines (57 loc) · 1.15 KB
/
MicRuleTree.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
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef MIC_RULE_TREE_H
#define MIC_RULE_TREE_H
#include "stdafx.h"
#include "Address.hpp"
#include "Rule.hpp"
#include "RuleList.h"
#include <deque>
using std::vector;
class f_node
{
public:
vector<range_addr> intervals;
vector<f_node*> edges;
f_node();
f_node(uint32_t);
f_node(const vector<range_addr> &);
f_node(const range_addr & );
bool insert(const r_rule &, uint32_t );
std::string get_str();
private:
void copy_node_son(f_node *, f_node * );
};
/*
class f_node_e:public f_node{
public:
unsigned short action;
};
*/
class m_rule_tree
{
public:
rule_list * rList;
f_node * root;
vector<uint32_t> redid;
m_rule_tree();
m_rule_tree(rule_list *);
void print(std::string);
bool insert_rule(const r_rule &);
bool insert_rule(const p_rule &);
f_node * search_node ( const addr_5tup &);
private:
friend void del_node(f_node *);
public:
~m_rule_tree();
};
class f_node_s
{
public:
range_addr interval;
vector<f_node_s*> edges;
};
class f_node_se:public f_node_s
{
public:
unsigned short action;
};
#endif