clib_memcpy_fast (tcp_stats->conn_id, tc->opaque_conn_id,
sizeof (tc->opaque_conn_id));
tcp_stats->end_ts = transport_time_now (s->thread_index);
+ tcp_stats->close_reason = s->flags & SESSION_F_TPT_INIT_CLOSE ?
+ APP_EVT_SESSION_STAT_TRANSPORT_CLOSED :
+ APP_EVT_SESSION_STAT_APP_CLOSED;
#define _(type, name) tcp_stats->name = tcp_conn->name;
foreach_tcp_transport_stat
sizeof (tc->opaque_conn_id));
ct_stats->actual_proto = ct_conn->actual_tp;
ct_stats->end_ts = transport_time_now (s->thread_index);
+ ct_stats->close_reason = s->flags & SESSION_F_TPT_INIT_CLOSE ?
+ APP_EVT_SESSION_STAT_TRANSPORT_CLOSED :
+ APP_EVT_SESSION_STAT_APP_CLOSED;
}
break;
default:
u8 data[0];
} __clib_packed app_evt_msg_t;
+typedef enum app_evt_session_stats_close_reason_
+{
+ APP_EVT_SESSION_STAT_APP_CLOSED,
+ APP_EVT_SESSION_STAT_TRANSPORT_CLOSED,
+} app_evt_session_stats_close_reason_t;
+
#define foreach_tcp_transport_stat \
_ (u64, segs_in) \
_ (u64, bytes_in) \
foreach_tcp_transport_stat
#undef _
f64 end_ts;
+ app_evt_session_stats_close_reason_t close_reason;
} __clib_packed tcp_session_stats_t;
#define foreach_udp_transport_stat \
foreach_udp_transport_stat
#undef _
f64 end_ts;
+ app_evt_session_stats_close_reason_t close_reason;
} __clib_packed udp_session_stats_t;
typedef struct ct_transport_stats_
u8 conn_id[TRANSPORT_CONN_ID_LEN];
transport_proto_t actual_proto;
f64 end_ts;
+ app_evt_session_stats_close_reason_t close_reason;
} __clib_packed ct_session_stats_t;
typedef struct app_evt_collector_cfg_