forked from sonic-net/sonic-swss
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcopporch.h
More file actions
60 lines (47 loc) · 2.47 KB
/
Copy pathcopporch.h
File metadata and controls
60 lines (47 loc) · 2.47 KB
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
#ifndef SWSS_COPPORCH_H
#define SWSS_COPPORCH_H
#include <map>
#include <set>
#include "orch.h"
// trap fields
const std::string copp_trap_id_list = "trap_ids";
const std::string copp_trap_action_field = "trap_action";
const std::string copp_trap_priority_field = "trap_priority";
const std::string copp_queue_field = "queue";
// policer fields
const std::string copp_policer_meter_type_field = "meter_type";
const std::string copp_policer_mode_field = "mode";
const std::string copp_policer_color_field = "color";
const std::string copp_policer_cbs_field = "cbs";
const std::string copp_policer_cir_field = "cir";
const std::string copp_policer_pbs_field = "pbs";
const std::string copp_policer_pir_field = "pir";
const std::string copp_policer_action_green_field = "green_action";
const std::string copp_policer_action_red_field = "red_action";
const std::string copp_policer_action_yellow_field = "yellow_action";
/* TrapGroupPolicerTable: trap group ID, policer ID */
typedef std::map<sai_object_id_t, sai_object_id_t> TrapGroupPolicerTable;
/* TrapIdTrapGroupTable: trap ID, trap group ID */
typedef std::map<sai_hostif_trap_type_t, sai_object_id_t> TrapIdTrapGroupTable;
class CoppOrch : public Orch
{
public:
CoppOrch(swss::DBConnector *db, std::string tableName);
protected:
object_map m_trap_group_map;
TrapGroupPolicerTable m_trap_group_policer_map;
TrapIdTrapGroupTable m_syncdTrapIds;
void initDefaultHostIntfTable();
void initDefaultTrapGroup();
void initDefaultTrapIds();
task_process_status processCoppRule(Consumer& consumer);
bool isValidList(std::vector<std::string> &trap_id_list, std::vector<std::string> &all_items) const;
void getTrapIdList(std::vector<std::string> &trap_id_name_list, std::vector<sai_hostif_trap_type_t> &trap_id_list) const;
bool applyTrapIds(sai_object_id_t trap_group, std::vector<std::string> &trap_id_name_list, std::vector<sai_attribute_t> &trap_id_attribs);
bool applyAttributesToTrapIds(sai_object_id_t trap_group_id, const std::vector<sai_hostif_trap_type_t> &trap_id_list, std::vector<sai_attribute_t> &trap_id_attribs);
bool createPolicer(std::string trap_group, std::vector<sai_attribute_t> &policer_attribs);
bool removePolicer(std::string trap_group_name);
sai_object_id_t getPolicer(std::string trap_group_name);
virtual void doTask(Consumer& consumer);
};
#endif /* SWSS_COPPORCH_H */