+ /** Notify app that session is closing */
+ void (*session_disconnect_callback) (session_t * s);
+
+ /** Notify app that transport is closed */
+ void (*session_transport_closed_callback) (session_t * s);
+
+ /** Notify app that session or transport are about to be removed */
+ void (*session_cleanup_callback) (session_t * s, session_cleanup_ntf_t ntf);
+
+ /** Notify app that session was reset */
+ void (*session_reset_callback) (session_t * s);
+
+ /** Notify app that session pool migration happened */
+ void (*session_migrate_callback) (session_t * s, session_handle_t new_sh);
+
+ /** Direct RX callback for built-in application */
+ int (*builtin_app_rx_callback) (session_t * session);
+
+ /** Direct TX callback for built-in application */
+ int (*builtin_app_tx_callback) (session_t * session);
+
+ /** Cert and key pair delete notification */
+ int (*app_cert_key_pair_delete_callback) (app_cert_key_pair_t * ckpair);
+
+} session_cb_vft_t;
+
+#define foreach_app_init_args \
+ _(u32, api_client_index) \
+ _(u8 *, name) \
+ _(u64 *, options) \
+ _(u8 *, namespace_id) \
+ _(session_cb_vft_t *, session_cb_vft) \
+ _(u32, app_index) \
+
+typedef struct _vnet_app_attach_args_t
+{
+#define _(_type, _name) _type _name;
+ foreach_app_init_args
+#undef _
+ ssvm_private_t * segment;
+ svm_msg_q_t *app_evt_q;
+ u64 segment_handle;