aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session/session.api
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-02-08 15:10:09 -0800
committerFlorin Coras <fcoras@cisco.com>2018-02-14 00:54:43 -0800
commitf8f516a8b0ccab2f5d9796f90419bf2661c750af (patch)
treef02f6c01ed1bf33aeb4ebb5714af470e537f87c2 /src/vnet/session/session.api
parent7758bf68a03a32f17c07154172157f5bdf30e684 (diff)
session: support local sessions and deprecate redirects
Memfd backed shared memory segments can only be negotiated over sockets. For such scenarios, the existing redirect mechanism that establishes cut-through sessions does not work anymore as the two peer application do not share such a socket. This patch adds support for local sessions, as opposed to sessions backed by a transport connection, in a way that is almost transparent to the two applications by reusing the existing binary api messages. Moreover, all segment allocations are now entirely done through the segment manager valloc, so segment overlaps due to independent allocations previously required for redirects are completely avoided. The one notable characteristic of local sessions (cut-through from app perspective) notification messages is that they carry pointers to two event queues, one for each app peer, instead of one. For transport-backed sessions one of the queues can be inferred but for local session they cannot. Change-Id: Ia443fb63e2d9d8e43490275062a708f039038175 Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/session/session.api')
-rw-r--r--src/vnet/session/session.api23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/vnet/session/session.api b/src/vnet/session/session.api
index 1c3e84b7ea1..a6739fc61bf 100644
--- a/src/vnet/session/session.api
+++ b/src/vnet/session/session.api
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-option version = "1.0.0";
+option version = "1.0.1";
/** \brief client->vpp, attach application to session layer
@param client_index - opaque cookie to identify the sender
@@ -72,6 +72,17 @@ autoreply define map_another_segment {
u8 segment_name[128];
};
+/** \brief vpp->client unmap shared memory segment
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param segment_name -
+*/
+autoreply define unmap_segment {
+ u32 client_index;
+ u32 context;
+ u8 segment_name[128];
+};
+
/** \brief Bind to a given URI
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@@ -122,10 +133,12 @@ autoreply define connect_uri {
@param context - sender context, to match reply w/ request
@param listener_handle - tells client which listener this pertains to
@param handle - unique session identifier
- @param session_thread_index - thread index of new session
@param rx_fifo_address - rx (vpp -> vpp-client) fifo address
@param tx_fifo_address - tx (vpp-client -> vpp) fifo address
- @param vpp_event_queue_address - vpp's event queue address
+ @param vpp_event_queue_address - vpp's event queue address or client's
+ event queue for cut through
+ @param server_event_queue_address - server's event queue address for
+ cut through sessions
@param port - remote port
@param is_ip4 - 1 if the ip is ip4
@param ip - remote ip
@@ -138,6 +151,7 @@ define accept_session {
u64 server_rx_fifo;
u64 server_tx_fifo;
u64 vpp_event_queue_address;
+ u64 server_event_queue_address;
u16 port;
u8 is_ip4;
u8 ip[16];
@@ -176,7 +190,6 @@ define disconnect_session {
@param handle - session handle
*/
define disconnect_session_reply {
- u32 client_index;
u32 context;
i32 retval;
u64 handle;
@@ -302,6 +315,7 @@ define connect_session {
@param server_rx_fifo - rx (vpp -> vpp-client) fifo address
@param server_tx_fifo - tx (vpp-client -> vpp) fifo address
@param vpp_event_queue_address - vpp's event queue address
+ @param client_event_queue_address - client's event queue address
@param segment_size - size of segment to be attached. Only for redirects.
@param segment_name_length - non-zero if the client needs to attach to
the fifo segment
@@ -317,6 +331,7 @@ define connect_session_reply {
u64 server_rx_fifo;
u64 server_tx_fifo;
u64 vpp_event_queue_address;
+ u64 client_event_queue_address;
u32 segment_size;
u8 segment_name_length;
u8 segment_name[128];