Update stat of session manager
This commit is contained in:
@@ -35,52 +35,52 @@ struct session_manager
|
||||
* Session Manager Stat
|
||||
******************************************************************************/
|
||||
|
||||
#define SESS_MGR_STAT_INC(stat, state, proto) \
|
||||
{ \
|
||||
switch ((state)) \
|
||||
{ \
|
||||
case SESSION_STATE_OPENING: \
|
||||
(stat)->nr_##proto##_sess_opening++; \
|
||||
break; \
|
||||
case SESSION_STATE_ACTIVE: \
|
||||
(stat)->nr_##proto##_sess_active++; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSING: \
|
||||
(stat)->nr_##proto##_sess_closing++; \
|
||||
break; \
|
||||
case SESSION_STATE_DISCARD: \
|
||||
(stat)->nr_##proto##_sess_discard++; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSED: \
|
||||
(stat)->nr_##proto##_sess_closed++; \
|
||||
break; \
|
||||
default: \
|
||||
break; \
|
||||
} \
|
||||
#define SESS_MGR_STAT_INC(stat, state, proto) \
|
||||
{ \
|
||||
switch ((state)) \
|
||||
{ \
|
||||
case SESSION_STATE_OPENING: \
|
||||
(stat)->curr_nr_##proto##_sess_opening++; \
|
||||
break; \
|
||||
case SESSION_STATE_ACTIVE: \
|
||||
(stat)->curr_nr_##proto##_sess_active++; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSING: \
|
||||
(stat)->curr_nr_##proto##_sess_closing++; \
|
||||
break; \
|
||||
case SESSION_STATE_DISCARD: \
|
||||
(stat)->curr_nr_##proto##_sess_discard++; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSED: \
|
||||
(stat)->curr_nr_##proto##_sess_closed++; \
|
||||
break; \
|
||||
default: \
|
||||
break; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define SESS_MGR_STAT_DEC(stat, state, proto) \
|
||||
{ \
|
||||
switch ((state)) \
|
||||
{ \
|
||||
case SESSION_STATE_OPENING: \
|
||||
(stat)->nr_##proto##_sess_opening--; \
|
||||
break; \
|
||||
case SESSION_STATE_ACTIVE: \
|
||||
(stat)->nr_##proto##_sess_active--; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSING: \
|
||||
(stat)->nr_##proto##_sess_closing--; \
|
||||
break; \
|
||||
case SESSION_STATE_DISCARD: \
|
||||
(stat)->nr_##proto##_sess_discard--; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSED: \
|
||||
(stat)->nr_##proto##_sess_closed--; \
|
||||
break; \
|
||||
default: \
|
||||
break; \
|
||||
} \
|
||||
#define SESS_MGR_STAT_DEC(stat, state, proto) \
|
||||
{ \
|
||||
switch ((state)) \
|
||||
{ \
|
||||
case SESSION_STATE_OPENING: \
|
||||
(stat)->curr_nr_##proto##_sess_opening--; \
|
||||
break; \
|
||||
case SESSION_STATE_ACTIVE: \
|
||||
(stat)->curr_nr_##proto##_sess_active--; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSING: \
|
||||
(stat)->curr_nr_##proto##_sess_closing--; \
|
||||
break; \
|
||||
case SESSION_STATE_DISCARD: \
|
||||
(stat)->curr_nr_##proto##_sess_discard--; \
|
||||
break; \
|
||||
case SESSION_STATE_CLOSED: \
|
||||
(stat)->curr_nr_##proto##_sess_closed--; \
|
||||
break; \
|
||||
default: \
|
||||
break; \
|
||||
} \
|
||||
}
|
||||
|
||||
#define SESS_MGR_STAT_UPDATE(stat, curr, next, proto) \
|
||||
@@ -434,7 +434,7 @@ static enum session_direction identify_direction_by_history(const struct session
|
||||
// on new session
|
||||
static int tcp_overload_bypass(struct session_manager *mgr, const struct tuple6 *key, uint64_t now)
|
||||
{
|
||||
if (key->ip_proto == IPPROTO_TCP && mgr->stat.nr_tcp_sess_used >= mgr->opts.max_tcp_session_num)
|
||||
if (key->ip_proto == IPPROTO_TCP && mgr->stat.curr_nr_tcp_sess_used >= mgr->opts.max_tcp_session_num)
|
||||
{
|
||||
mgr->stat.nr_tcp_pkts_nospace_bypass++;
|
||||
return 1;
|
||||
@@ -443,7 +443,7 @@ static int tcp_overload_bypass(struct session_manager *mgr, const struct tuple6
|
||||
}
|
||||
static int udp_overload_bypass(struct session_manager *mgr, const struct tuple6 *key, uint64_t now)
|
||||
{
|
||||
if (key->ip_proto == IPPROTO_UDP && mgr->stat.nr_udp_sess_used >= mgr->opts.max_udp_session_num)
|
||||
if (key->ip_proto == IPPROTO_UDP && mgr->stat.curr_nr_udp_sess_used >= mgr->opts.max_udp_session_num)
|
||||
{
|
||||
mgr->stat.nr_udp_pkts_nospace_bypass++;
|
||||
return 1;
|
||||
@@ -599,7 +599,7 @@ static struct session *session_manager_new_tcp_session(struct session_manager *m
|
||||
}
|
||||
|
||||
// tcp table full evict old session
|
||||
if (mgr->opts.tcp_overload_evict_old_sess && mgr->stat.nr_tcp_sess_used >= mgr->opts.max_tcp_session_num - EVICTE_SESSION_BURST)
|
||||
if (mgr->opts.tcp_overload_evict_old_sess && mgr->stat.curr_nr_tcp_sess_used >= mgr->opts.max_tcp_session_num - EVICTE_SESSION_BURST)
|
||||
{
|
||||
struct session *evic_sess = session_table_find_lru(mgr->tcp_sess_table);
|
||||
session_manager_evicte_session(mgr, evic_sess, now);
|
||||
@@ -637,7 +637,8 @@ static struct session *session_manager_new_tcp_session(struct session_manager *m
|
||||
}
|
||||
|
||||
SESS_MGR_STAT_INC(&mgr->stat, next_state, tcp);
|
||||
mgr->stat.nr_tcp_sess_used++;
|
||||
mgr->stat.curr_nr_tcp_sess_used++;
|
||||
mgr->stat.total_nr_tcp_sess_used++;
|
||||
|
||||
return sess;
|
||||
}
|
||||
@@ -645,7 +646,7 @@ static struct session *session_manager_new_tcp_session(struct session_manager *m
|
||||
static struct session *session_manager_new_udp_session(struct session_manager *mgr, const struct packet *pkt, const struct tuple6 *key, uint64_t now)
|
||||
{
|
||||
// udp table full evict old session
|
||||
if (mgr->opts.udp_overload_evict_old_sess && mgr->stat.nr_udp_sess_used >= mgr->opts.max_udp_session_num - EVICTE_SESSION_BURST)
|
||||
if (mgr->opts.udp_overload_evict_old_sess && mgr->stat.curr_nr_udp_sess_used >= mgr->opts.max_udp_session_num - EVICTE_SESSION_BURST)
|
||||
{
|
||||
struct session *evic_sess = session_table_find_lru(mgr->udp_sess_table);
|
||||
session_manager_evicte_session(mgr, evic_sess, now);
|
||||
@@ -669,7 +670,8 @@ static struct session *session_manager_new_udp_session(struct session_manager *m
|
||||
session_table_add(mgr->udp_sess_table, sess);
|
||||
|
||||
SESS_MGR_STAT_INC(&mgr->stat, next_state, udp);
|
||||
mgr->stat.nr_udp_sess_used++;
|
||||
mgr->stat.curr_nr_udp_sess_used++;
|
||||
mgr->stat.total_nr_udp_sess_used++;
|
||||
|
||||
return sess;
|
||||
}
|
||||
@@ -923,7 +925,7 @@ void session_manager_free_session(struct session_manager *mgr, struct session *s
|
||||
session_table_del(mgr->tcp_sess_table, sess);
|
||||
}
|
||||
SESS_MGR_STAT_DEC(&mgr->stat, session_get_state(sess), tcp);
|
||||
mgr->stat.nr_tcp_sess_used--;
|
||||
mgr->stat.curr_nr_tcp_sess_used--;
|
||||
break;
|
||||
case SESSION_TYPE_UDP:
|
||||
if (session_table_find_sessid(mgr->udp_sess_table, session_get_id(sess)) == sess)
|
||||
@@ -931,7 +933,7 @@ void session_manager_free_session(struct session_manager *mgr, struct session *s
|
||||
session_table_del(mgr->udp_sess_table, sess);
|
||||
}
|
||||
SESS_MGR_STAT_DEC(&mgr->stat, session_get_state(sess), udp);
|
||||
mgr->stat.nr_udp_sess_used--;
|
||||
mgr->stat.curr_nr_udp_sess_used--;
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
|
||||
Reference in New Issue
Block a user