diff options
author | Nathan Skrzypczak <nathan.skrzypczak@gmail.com> | 2023-04-27 12:43:46 +0200 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2023-04-28 03:00:59 +0000 |
commit | 51f1b26e85a758338b13bacfdf4ba9e7d7cb7f8f (patch) | |
tree | 7734705e77cda3906815d22173f06f933bd1130a /src/vppinfra | |
parent | 9db32048de0ca6be7bf855bb094c072179e163fb (diff) |
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 <nathan.skrzypczak@gmail.com>
Diffstat (limited to 'src/vppinfra')
-rw-r--r-- | src/vppinfra/socket.c | 49 | ||||
-rw-r--r-- | src/vppinfra/socket.h | 3 |
2 files changed, 11 insertions, 41 deletions
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) { @@ -731,45 +741,6 @@ done: } __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) { clib_error_t *err = 0; 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) |