aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session/application_interface.h
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2020-09-02 19:10:28 -0700
committerDave Barach <openvpp@barachs.net>2020-09-14 14:33:11 +0000
commit61ae056bdb6cdf7cb718cf9f459d41e903abcb47 (patch)
tree72b43bcb5a6e184b005d3b6aa60a2d954f902f16 /src/vnet/session/application_interface.h
parent4a2c794c431c72364e241fa14327f03e35b886b7 (diff)
session: add unix socket api for app attachment
This is an af_unix socket alternative to the binary api. To enable it, add use-app-socket-api under session stanza in startup.conf. When the socket api is enabled, attachments through the binary api are disabled. The socket api only works with memfd fifo segments, i.e., shm segments are not supported. Type: feature Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I55ffcee201d004846daeeec85c700c7e7a578d43
Diffstat (limited to 'src/vnet/session/application_interface.h')
-rw-r--r--src/vnet/session/application_interface.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/vnet/session/application_interface.h b/src/vnet/session/application_interface.h
index d7869312d49..a36008a1e71 100644
--- a/src/vnet/session/application_interface.h
+++ b/src/vnet/session/application_interface.h
@@ -81,6 +81,7 @@ typedef struct session_cb_vft_
_(u8 *, namespace_id) \
_(session_cb_vft_t *, session_cb_vft) \
_(u32, app_index) \
+ _(u8, use_sock_api) \
typedef struct _vnet_app_attach_args_t
{
@@ -773,6 +774,74 @@ format_session_error (u8 * s, va_list * args)
s = format (s, "invalid session err %u", -error);
return s;
}
+
+/*
+ * Socket API messages
+ */
+
+typedef enum app_sapi_msg_type
+{
+ APP_SAPI_MSG_TYPE_NONE,
+ APP_SAPI_MSG_TYPE_ATTACH,
+ APP_SAPI_MSG_TYPE_ATTACH_REPLY,
+ APP_SAPI_MSG_TYPE_ADD_DEL_WORKER,
+ APP_SAPI_MSG_TYPE_ADD_DEL_WORKER_REPLY,
+ APP_SAPI_MSG_TYPE_SEND_FDS,
+} __clib_packed app_sapi_msg_type_e;
+
+typedef struct app_sapi_attach_msg_
+{
+ u8 name[64];
+ u64 options[18];
+} __clib_packed app_sapi_attach_msg_t;
+
+STATIC_ASSERT (sizeof (u64) * APP_OPTIONS_N_OPTIONS <=
+ sizeof (((app_sapi_attach_msg_t *) 0)->options),
+ "Out of options, fix message definition");
+
+typedef struct app_sapi_attach_reply_msg_
+{
+ i32 retval;
+ u32 app_index;
+ u64 app_mq;
+ u64 vpp_ctrl_mq;
+ u64 segment_handle;
+ u32 api_client_handle;
+ u8 vpp_ctrl_mq_thread;
+ u8 n_fds;
+ u8 fd_flags;
+} __clib_packed app_sapi_attach_reply_msg_t;
+
+typedef struct app_sapi_worker_add_del_msg_
+{
+ u32 app_index;
+ u32 wrk_index;
+ u8 is_add;
+} __clib_packed app_sapi_worker_add_del_msg_t;
+
+typedef struct app_sapi_worker_add_del_reply_msg_
+{
+ i32 retval;
+ u32 wrk_index;
+ u64 app_event_queue_address;
+ u64 segment_handle;
+ u8 n_fds;
+ u8 fd_flags;
+ u8 is_add;
+} __clib_packed app_sapi_worker_add_del_reply_msg_t;
+
+typedef struct app_sapi_msg_
+{
+ app_sapi_msg_type_e type;
+ union
+ {
+ app_sapi_attach_msg_t attach;
+ app_sapi_attach_reply_msg_t attach_reply;
+ app_sapi_worker_add_del_msg_t worker_add_del;
+ app_sapi_worker_add_del_reply_msg_t worker_add_del_reply;
+ };
+} __clib_packed app_sapi_msg_t;
+
#endif /* __included_uri_h__ */
/*