forked from cisco-system-traffic-generator/trex-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrex_defs.h
121 lines (101 loc) · 3.31 KB
/
trex_defs.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#ifndef __TREX_DEFS_H__
#define __TREX_DEFS_H__
/*
Copyright (c) 2015-2016 Cisco Systems, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#include <set>
#include <queue>
#include <vector>
#include <string>
#include <map>
#include <unordered_map>
#include <functional>
#include <json/json.h>
#define TREX_MAX_PORTS 32
#ifdef __PPC64__
#define MAX_SOCKETS_SUPPORTED (16)
#define MAX_THREADS_SUPPORTED (1536)
#else
#define MAX_SOCKETS_SUPPORTED (4)
#define MAX_THREADS_SUPPORTED (120)
#endif
// 64 cores, each two digits, + 63 commas < 192
#define MAX_CORES_LIST_STRLEN 192
// maximum number of IP ID type flow stats we support. Must be in the form 2^x - 1
#define MAX_FLOW_STATS 1023
#define MAX_FLOW_STATS_X710 127
#define MAX_FLOW_STATS_XL710 255
// maximum number of payload type flow stats we support
#define MAX_FLOW_STATS_PAYLOAD 128
#ifndef UINT8_MAX
#define UINT8_MAX 255
#endif
#ifndef UINT16_MAX
#define UINT16_MAX 0xFFFF
#endif
#ifndef UINT64_MAX
#define UINT64_MAX 0xFFFFFFFFFFFFFFFF
#endif
struct cpu_vct_st {
cpu_vct_st() {
m_port1 = -1;
m_port2 = -1;
}
std::vector<uint8_t> m_history;
int m_port1;
int m_port2;
};
enum pgid_types_e {
PGID_FLOW_STAT,
PGID_LATENCY
};
struct active_pgid {
uint32_t m_pg_id;
pgid_types_e m_type;
};
typedef std::vector<active_pgid> flow_stat_active_t_new;
typedef std::vector<active_pgid>::iterator flow_stat_active_it_t_new;
typedef std::set<uint32_t> flow_stat_active_t;
typedef std::set<uint32_t>::iterator flow_stat_active_it_t;
typedef std::vector<cpu_vct_st> cpu_util_full_t;
typedef std::vector<std::string> xstats_names_t;
typedef std::vector<uint64_t> xstats_values_t;
typedef std::vector<uint32_t> supp_speeds_t;
typedef std::set<uint32_t> stream_ids_t;
typedef std::unordered_map<uint32_t,double> stream_ipgs_map_t;
typedef std::unordered_map<uint32_t,double>::const_iterator stream_ipgs_map_it_t;
typedef std::unordered_map<uint8_t, bool> uint8_to_bool_map_t;
typedef std::set<int16_t> vxlan_fs_ports_t;
// stack related
typedef std::function<void(void)> stack_task_t;
typedef std::vector<stack_task_t> task_list_t;
typedef std::unordered_map<std::string,std::string> err_per_mac_t;
typedef std::set<std::string> str_set_t;
typedef std::vector<uint16_t> vlan_list_t;
typedef struct {
bool is_ready;
err_per_mac_t err_per_mac;
Json::Value m_results;
} stack_result_t;
typedef std::map<uint64_t,stack_result_t> stack_result_map_t;
// end stack related
// async related
typedef std::function<void(Json::Value &result)> async_result_func_t;
typedef std::function<void(void)> async_cancel_func_t;
typedef struct {
async_result_func_t result_func;
async_cancel_func_t cancel_func;
} async_ticket_task_t;
typedef std::map<uint64_t,async_ticket_task_t> async_ticket_map_t;
// end async related
typedef uint32_t profile_id_t;
#endif