aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session/session.api
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2017-10-02 00:18:51 -0700
committerDave Barach <openvpp@barachs.net>2017-10-10 20:42:50 +0000
commitcea194d8f973a2f2b5ef72d212533057174cc70a (patch)
tree6fdd2e8a929c62625d1ad35bfbec342129989aef /src/vnet/session/session.api
parent1f36a93d3d68f5ba6dcda08809394ce757cefd72 (diff)
session: add support for application namespacing
Applications are now provided the option to select the namespace they are to be attached to and the scope of their attachement. Application namespaces are meant to: 1) constrain the scope of communication through the network by association with source interfaces and/or fib tables that provide the source ips to be used and limit the scope of routing 2) provide a namespace local scope to session layer communication, as opposed to the global scope provided by 1). That is, sessions can be established without assistance from transport and network layers. Albeit, zero/local-host ip addresses must still be provided in session establishment messages due to existing application idiosyncrasies. This mode of communication uses shared-memory fifos (cut-through sessions) exclusively. If applications request no namespace, they are assigned to the default one, which at its turn uses the default fib. Applications can request access to both local and global scopes for a namespace. If no scope is specified, session layer defaults to the global one. When a sw_if_index is provided for a namespace, zero-ip (INADDR_ANY) binds are converted to binds to the requested interface. Change-Id: Ia0f660bbf7eec7f89673f75b4821fc7c3d58e3d1 Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/session/session.api')
-rw-r--r--src/vnet/session/session.api51
1 files changed, 39 insertions, 12 deletions
diff --git a/src/vnet/session/session.api b/src/vnet/session/session.api
index 992a0638698..12a5d10429c 100644
--- a/src/vnet/session/session.api
+++ b/src/vnet/session/session.api
@@ -21,12 +21,16 @@ vl_api_version 1.0.0
@param initial_segment_size - size of the initial shm segment to be
allocated
@param options - segment size, fifo sizes, etc.
+ @param namespace_id_len - length of the namespace id c-string
+ @param namespace_id - 0 terminted c-string
*/
define application_attach {
u32 client_index;
u32 context;
u32 initial_segment_size;
u64 options[16];
+ u8 namespace_id_len;
+ u8 namespace_id [64];
};
/** \brief Application attach reply
@@ -99,20 +103,19 @@ autoreply define unbind_uri {
/** \brief Connect to a given URI
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
- @param accept_cookie - sender accept cookie, to identify this bind flavor
- @param uri - a URI, e.g. "tcp4://0.0.0.0/0/80"
- "tcp6://::/0/80" [ipv6], etc.
- @param options - socket options, fifo sizes, etc. passed by vpp to the
- server when redirecting connects
@param client_queue_address - binary API client queue address. Used by
local server when connect was redirected.
+ @param options - socket options, fifo sizes, etc. passed by vpp to the
+ server when redirecting connects
+ @param uri - a URI, e.g. "tcp4://0.0.0.0/0/80"
+ "tcp6://::/0/80" [ipv6], etc.
*/
autoreply define connect_uri {
u32 client_index;
u32 context;
- u8 uri[128];
u64 client_queue_address;
u64 options[16];
+ u8 uri[128];
};
/** \brief vpp->client, accept this session
@@ -240,26 +243,25 @@ autoreply define unbind_sock {
/** \brief Connect to a remote peer
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
- @param app_connect - application connection id to be returned in reply
+ @param client_queue_address - client's API queue address. Non-zero when
+ used to perform redirects
+ @param options - socket options, fifo sizes, etc. when doing redirects
@param vrf - connection namespace
@param is_ip4 - flag that is 1 if ip address family is IPv4
@param ip - ip address
@param port - port
@param proto - protocol 0 - TCP 1 - UDP
- @param client_queue_address - client's API queue address. Non-zero when
- used to perform redirects
- @param options - socket options, fifo sizes, etc. when doing redirects
*/
autoreply define connect_sock {
u32 client_index;
u32 context;
+ u64 client_queue_address;
+ u64 options[16];
u32 vrf;
u8 is_ip4;
u8 ip[16];
u16 port;
u8 proto;
- u64 client_queue_address;
- u64 options[16];
};
/** \brief Bind reply
@@ -326,6 +328,31 @@ autoreply define session_enable_disable {
u8 is_enable;
};
+/** \brief add/del application namespace
+ @param client_index - opaque cookie to identify the sender
+ client to vpp direction only
+ @param context - sender context, to match reply w/ request
+ @param secret - secret shared between app and vpp
+ @param sw_if_index - local interface that "supports" namespace. Set to
+ ~0 if no preference
+ @param ip4_fib_id - id of ip4 fib that "supports" the namespace. Ignored
+ if sw_if_index set.
+ @param ip6_fib_id - id of ip6 fib that "supports" the namespace. Ignored
+ if sw_if_index set.
+ @param namespace_id_len - length of namespace id lower
+ @param namespace_id - namespace id
+*/
+autoreply define app_namespace_add_del {
+ u32 client_index;
+ u32 context;
+ u64 secret;
+ u32 sw_if_index;
+ u32 ip4_fib_id;
+ u32 ip6_fib_id;
+ u8 namespace_id_len;
+ u8 namespace_id[64];
+};
+
/*
* Local Variables:
* eval: (c-set-style "gnu")