From 51f1b26e85a758338b13bacfdf4ba9e7d7cb7f8f Mon Sep 17 00:00:00 2001 From: Nathan Skrzypczak Date: Thu, 27 Apr 2023 12:43:46 +0200 Subject: session: update due to clib_socket refactoring After the clib_socket_init syntax changed, the behavior of VCL socket creation was broken. This patch introduces app_namespace_add_del_v4 to address the behavioral change. Type: refactor Change-Id: Ice016bdb372233fd3317f166d45625e086e9b4df Signed-off-by: Nathan Skrzypczak --- src/vppinfra/socket.c | 49 ++++++++++--------------------------------------- src/vppinfra/socket.h | 3 +-- 2 files changed, 11 insertions(+), 41 deletions(-) (limited to 'src/vppinfra') diff --git a/src/vppinfra/socket.c b/src/vppinfra/socket.c index 40374d736c5..ef0eaaee0a3 100644 --- a/src/vppinfra/socket.c +++ b/src/vppinfra/socket.c @@ -374,6 +374,16 @@ clib_socket_prefix_is_valid (char *s) return 0; } +__clib_export int +clib_socket_prefix_get_type (char *s) +{ + for (typeof (clib_socket_type_data[0]) *d = clib_socket_type_data; + d - clib_socket_type_data < ARRAY_LEN (clib_socket_type_data); d++) + if (strncmp (s, d->prefix, strlen (d->prefix)) == 0) + return d->type; + return 0; +} + __clib_export clib_error_t * clib_socket_init (clib_socket_t *s) { @@ -730,45 +740,6 @@ done: return err; } -__clib_export clib_error_t * -clib_socket_init_netns (clib_socket_t *s, u8 *namespace) -{ - if (namespace == NULL || namespace[0] == 0) - return clib_socket_init (s); - - clib_error_t *error; - int old_netns_fd, nfd = -1; - - old_netns_fd = clib_netns_open (NULL /* self */); - if (old_netns_fd < 0) - return clib_error_return_unix (0, "get current netns failed"); - - if ((nfd = clib_netns_open (namespace)) == -1) - { - error = clib_error_return_unix (0, "clib_netns_open '%s'", namespace); - goto done; - } - - if (clib_setns (nfd) == -1) - { - error = clib_error_return_unix (0, "setns '%s'", namespace); - goto done; - } - - error = clib_socket_init (s); - -done: - if (clib_setns (old_netns_fd) == -1) - clib_warning ("Cannot set old ns"); - - close (old_netns_fd); - - if (-1 != nfd) - close (nfd); - - return error; -} - __clib_export clib_error_t * clib_socket_accept (clib_socket_t * server, clib_socket_t * client) { diff --git a/src/vppinfra/socket.h b/src/vppinfra/socket.h index 132e89f2871..13e09e66a91 100644 --- a/src/vppinfra/socket.h +++ b/src/vppinfra/socket.h @@ -118,12 +118,11 @@ typedef struct _socket_t from IPPORT_USERRESERVED (5000). */ clib_error_t *clib_socket_init (clib_socket_t * socket); -clib_error_t *clib_socket_init_netns (clib_socket_t *socket, u8 *namespace); - clib_error_t *clib_socket_accept (clib_socket_t * server, clib_socket_t * client); int clib_socket_prefix_is_valid (char *s); +int clib_socket_prefix_get_type (char *s); always_inline uword clib_socket_is_server (clib_socket_t * sock) -- cgit 1.2.3-korg