diff options
author | Florin Coras <fcoras@cisco.com> | 2018-02-08 15:10:09 -0800 |
---|---|---|
committer | Florin Coras <fcoras@cisco.com> | 2018-02-14 00:54:43 -0800 |
commit | f8f516a8b0ccab2f5d9796f90419bf2661c750af (patch) | |
tree | f02f6c01ed1bf33aeb4ebb5714af470e537f87c2 /src/vnet/session/session_lookup.h | |
parent | 7758bf68a03a32f17c07154172157f5bdf30e684 (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_lookup.h')
-rw-r--r-- | src/vnet/session/session_lookup.h | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/src/vnet/session/session_lookup.h b/src/vnet/session/session_lookup.h index 1bdf6d17fcb..1acf923831d 100644 --- a/src/vnet/session/session_lookup.h +++ b/src/vnet/session/session_lookup.h @@ -64,7 +64,7 @@ int session_lookup_del_connection (transport_connection_t * tc); u64 session_lookup_endpoint_listener (u32 table_index, session_endpoint_t * sepi, u8 use_rules); -u32 session_lookup_local_endpoint (u32 table_index, session_endpoint_t * sep); +u64 session_lookup_local_endpoint (u32 table_index, session_endpoint_t * sep); stream_session_t *session_lookup_global_session_endpoint (session_endpoint_t *); int session_lookup_add_session_endpoint (u32 table_index, @@ -80,11 +80,6 @@ transport_connection_t *session_lookup_half_open_connection (u64 handle, u8 is_ip4); u32 session_lookup_get_index_for_fib (u32 fib_proto, u32 fib_index); -u64 session_lookup_local_listener_make_handle (session_endpoint_t * sep); -u8 session_lookup_local_is_handle (u64 handle); -int session_lookup_local_listener_parse_handle (u64 handle, - session_endpoint_t * sep); - void session_lookup_show_table_entries (vlib_main_t * vm, session_table_t * table, u8 type, u8 is_local); |