5 #include <sandesh/common/flow_types.h>
8 if (service_port < rhs.service_port) {
10 }
else if (service_port == rhs.service_port && protocol < rhs.protocol) {
12 }
else if (service_port == rhs.service_port && protocol == rhs.protocol && local_ip < rhs.local_ip) {
20 if (port < rhs.port) {
22 }
else if (port == rhs.port && ip < rhs.ip) {
33 std::stringstream Xbuf;
35 Xbuf <<
"vmi" <<
" = " << sep.vmi;
36 Xbuf <<
" " <<
"vn" <<
" = " << sep.vn;
37 if (sep.__isset.deployment) {
38 Xbuf <<
" " <<
"deployment" <<
" = " << sep.deployment;
40 if (sep.__isset.tier) {
41 Xbuf <<
" " <<
"tier" <<
" = " << sep.tier;
43 if (sep.__isset.application) {
44 Xbuf <<
" " <<
"application" <<
" = " << sep.application;
46 if (sep.__isset.site) {
47 Xbuf <<
" " <<
"site" <<
" = " << sep.site;
49 if (sep.__isset.labels) {
50 Xbuf <<
" " <<
"labels" <<
"= [ ";
53 std::set<std::string> ::const_iterator label_iter;
54 for (label_iter = sep.labels.begin();
55 label_iter != sep.labels.end(); ++label_iter) {
56 Xbuf <<
" " <<
"label val" <<
" = " << (*label_iter);
63 if (sep.__isset.remote_deployment) {
64 Xbuf <<
" " <<
"remote_deployment" <<
" = " << sep.remote_deployment;
66 if (sep.__isset.remote_tier) {
67 Xbuf <<
" " <<
"remote_tier" <<
" = " << sep.remote_tier;
69 if (sep.__isset.remote_application) {
70 Xbuf <<
" " <<
"remote_application" <<
" = " << sep.remote_application;
72 if (sep.__isset.remote_site) {
73 Xbuf <<
" " <<
"remote_site" <<
" = " << sep.remote_site;
75 if (sep.__isset.remote_labels) {
76 Xbuf <<
" " <<
"remote_labels" <<
"= [ ";
79 std::set<std::string> ::const_iterator label_iter;
80 for (label_iter = sep.remote_labels.begin();
81 label_iter != sep.remote_labels.end(); ++label_iter) {
82 Xbuf <<
" " <<
"(label val)" <<
" = " << (*label_iter);
89 if (sep.__isset.security_policy_rule) {
90 Xbuf <<
" " <<
"security_policy_rule" <<
" = " <<
91 sep.security_policy_rule;
93 Xbuf <<
" " <<
"remote_vn" <<
" = " << sep.remote_vn;
94 Xbuf <<
" " <<
"is_client_session" <<
" = " <<
97 if (sep.__isset.remote_prefix) {
98 Xbuf <<
" " <<
"remote_prefix" <<
" = " << sep.remote_prefix;
100 Xbuf <<
" " <<
"vrouter_ip" <<
" = " << sep.vrouter_ip;
108 const SessionAggInfo &sess_agg) {
109 std::stringstream Xbuf;
110 if (sess_agg.__isset.sampled_forward_bytes) {
111 Xbuf <<
"sampled_forward_bytes" <<
" = " <<
integerToString(sess_agg.sampled_forward_bytes);
113 if (sess_agg.__isset.sampled_forward_pkts) {
114 Xbuf <<
" " <<
"sampled_forward_pkts" <<
" = " <<
integerToString(sess_agg.sampled_forward_pkts);
116 if (sess_agg.__isset.sampled_reverse_bytes) {
117 Xbuf <<
" " <<
"sampled_reverse_bytes" <<
" = " <<
integerToString(sess_agg.sampled_reverse_bytes);
119 if (sess_agg.__isset.sampled_reverse_pkts) {
120 Xbuf <<
" " <<
"sampled_reverse_pkts" <<
" = " <<
integerToString(sess_agg.sampled_reverse_pkts);
122 if (sess_agg.__isset.logged_forward_bytes) {
123 Xbuf <<
" " <<
"logged_forward_bytes" <<
" = " <<
integerToString(sess_agg.logged_forward_bytes);
125 if (sess_agg.__isset.logged_forward_pkts) {
126 Xbuf <<
" " <<
"logged_forward_pkts" <<
" = " <<
integerToString(sess_agg.logged_forward_pkts);
128 if (sess_agg.__isset.logged_reverse_bytes) {
129 Xbuf <<
" " <<
"logged_reverse_bytes" <<
" = " <<
integerToString(sess_agg.logged_reverse_bytes);
134 void SessionEndpointObject::LogUnrolled(std::string category,
136 const std::vector<SessionEndpoint> & session_data) {
142 log4cplus::tostringstream Xbuf;
143 std::vector<SessionEndpoint> ::const_iterator sep_iter;
144 for (sep_iter = session_data.begin(); sep_iter != session_data.end();
147 std::map<SessionIpPortProtocol, SessionAggInfo>::const_iterator
149 for (local_ep_iter = sep_iter->sess_agg_info.begin();
150 local_ep_iter != sep_iter->sess_agg_info.end(); ++local_ep_iter++) {
151 std::map<SessionIpPort, SessionInfo>::const_iterator sessions_iter;
152 std::string local_ep_info = local_ep_iter->first.log();
155 for (sessions_iter = local_ep_iter->second.sessionMap.begin();
156 sessions_iter != local_ep_iter->second.sessionMap.end();
159 Xbuf.str(std::string());
160 Xbuf << category <<
" [" << LevelToString(level) <<
"]: SessionData: ";
162 Xbuf << sep_info <<
" ";
164 Xbuf << local_ep_info <<
" ";
167 Xbuf << sess_agg_data <<
" ";
169 Xbuf << sessions_iter->first.log() <<
" " ;
171 Xbuf << sessions_iter->second.log() <<
" ";
174 const SessionInfo & sess_info = sessions_iter->second;
175 if (sess_info.forward_flow_info.__isset.logged_bytes ||
176 sess_info.reverse_flow_info.__isset.logged_bytes) {
177 if (is_send_slo_to_logger_enabled) {
178 SLO_logger.forcedLog(Xlog4level, Xbuf.str());
182 if (sess_info.forward_flow_info.__isset.sampled_bytes ||
183 sess_info.reverse_flow_info.__isset.sampled_bytes) {
184 if (is_send_sample_to_logger_enabled) {
185 Xlogger.forcedLog(Xlog4level, Xbuf.str());
197 void SessionEndpointObject::adjust_session_end_point_objects(
198 std::vector<SessionEndpoint> &session_data) {
201 std::vector<SessionEndpoint> ::iterator sep_iter;
202 for (sep_iter = session_data.begin();
203 sep_iter != session_data.end(); ++sep_iter) {
204 std::map<SessionIpPortProtocol, SessionAggInfo>::iterator
206 for (local_ep_iter = sep_iter->sess_agg_info.begin();
207 local_ep_iter != sep_iter->sess_agg_info.end();
210 if (!is_send_slo_to_collector) {
211 local_ep_iter->second.__isset.logged_forward_bytes =
false;
212 local_ep_iter->second.__isset.logged_forward_pkts =
false;
213 local_ep_iter->second.__isset.logged_reverse_bytes =
false;
214 local_ep_iter->second.__isset.logged_reverse_pkts =
false;
216 if (!is_send_sampled_to_collector) {
217 local_ep_iter->second.__isset.sampled_forward_bytes =
false;
218 local_ep_iter->second.__isset.sampled_forward_pkts =
false;
219 local_ep_iter->second.__isset.sampled_reverse_bytes =
false;
220 local_ep_iter->second.__isset.sampled_reverse_pkts =
false;
223 std::map<SessionIpPort, SessionInfo>::iterator sessions_iter;
224 sessions_iter = local_ep_iter->second.sessionMap.begin();
225 while (sessions_iter != local_ep_iter->second.sessionMap.end()) {
226 bool erase_session =
false;
227 SessionInfo & sess_info = sessions_iter->second;
229 if (sess_info.forward_flow_info.__isset.logged_bytes ||
230 sess_info.reverse_flow_info.__isset.logged_bytes) {
231 if (!is_send_slo_to_collector) {
233 if (!sess_info.forward_flow_info.__isset.
235 !sess_info.reverse_flow_info.__isset.
237 erase_session =
true;
239 sess_info.forward_flow_info.__isset.logged_bytes =
false;
240 sess_info.forward_flow_info.__isset.logged_pkts =
false;
241 sess_info.reverse_flow_info.__isset.logged_bytes =
false;
242 sess_info.reverse_flow_info.__isset.logged_pkts =
false;
247 if (sess_info.forward_flow_info.__isset.sampled_bytes ||
248 sess_info.reverse_flow_info.__isset.sampled_bytes) {
249 if (!is_send_sampled_to_collector) {
251 if (!sess_info.forward_flow_info.__isset.
253 !sess_info.reverse_flow_info.__isset.
255 erase_session =
true;
257 sess_info.forward_flow_info.__isset.sampled_bytes =
false;
258 sess_info.forward_flow_info.__isset.sampled_pkts =
false;
259 sess_info.reverse_flow_info.__isset.sampled_bytes =
false;
260 sess_info.reverse_flow_info.__isset.sampled_pkts =
false;
264 std::map<SessionIpPort, SessionInfo>::iterator sessions_temp_iter = sessions_iter;
265 sessions_temp_iter++;
267 local_ep_iter->second.sessionMap.
268 erase(sessions_iter);
270 sessions_iter = sessions_temp_iter;
bool operator<(const WaterMarkInfo &lhs, const WaterMarkInfo &rhs)
log4cplus::LogLevel SandeshLevelTolog4Level(SandeshLevel::type slevel)
static bool is_send_sampled_to_logger_enabled()
static log4cplus::Logger & sampled_logger()
static bool is_send_slo_to_collector_enabled()
static log4cplus::Logger & slo_logger()
std::string SessionEndpointLog(const SessionEndpoint &sep)
static const std::string integerToString(const NumberType &num)
static bool is_send_slo_to_logger_enabled()
std::string SessionAggInfoLog(const SessionAggInfo &sess_agg)
static bool is_send_sampled_to_collector_enabled()