session: add close reason to app eventing 71/43871/12
authorFlorin Coras <[email protected]>
Fri, 10 Oct 2025 03:12:30 +0000 (23:12 -0400)
committerDave Barach <[email protected]>
Tue, 14 Oct 2025 23:04:12 +0000 (23:04 +0000)
Type: improvement

Change-Id: Ic03839cb3ed6751d6b1ef1bc27497ff9bcd0464e
Signed-off-by: Florin Coras <[email protected]>
src/vnet/session/application_eventing.c
src/vnet/session/application_eventing.h

index 9ce8f4d..fe1fa4b 100644 (file)
@@ -146,6 +146,9 @@ app_evt_collector_log_session (app_evt_collector_t *c, session_t *s)
        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
@@ -179,6 +182,9 @@ app_evt_collector_log_session (app_evt_collector_t *c, session_t *s)
                          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:
index e156ba0..dcd28b5 100644 (file)
@@ -54,6 +54,12 @@ typedef struct app_evt_msg_
   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)                                                           \
@@ -81,6 +87,7 @@ typedef struct tcp_transport_stats_
   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                                            \
@@ -99,6 +106,7 @@ typedef struct udp_transport_stats_
   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_
@@ -106,6 +114,7 @@ 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_