From 7baeb71f92826ee6ef02ab2c3d16484bb64d9301 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Fri, 4 Jan 2019 17:05:43 -0800 Subject: vcl/ldp: add locked sessions shim layer Moves LDP logic that allows sharing of sessions between multi-process app workers into a separate VCL shim layer. Also refactors LDP to use the new layer. Change-Id: I8198b51eae7d099a8c486e36b29e3a0cb8cee8e9 Signed-off-by: Florin Coras --- src/vcl/vcl_locked.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/vcl/vcl_locked.h (limited to 'src/vcl/vcl_locked.h') diff --git a/src/vcl/vcl_locked.h b/src/vcl/vcl_locked.h new file mode 100644 index 00000000000..4f40f434cc5 --- /dev/null +++ b/src/vcl/vcl_locked.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2019 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * VCL Locked Sessions + */ + +#ifndef SRC_VCL_VCL_LOCKED_H_ +#define SRC_VCL_VCL_LOCKED_H_ + +#include + +#define VLS_INVALID_HANDLE ((int)-1) + +typedef int vls_handle_t; + +vls_handle_t vls_create (uint8_t proto, uint8_t is_nonblocking); +int vls_close (vls_handle_t vlsh); +int vls_bind (vls_handle_t vlsh, vppcom_endpt_t * ep); +int vls_listen (vls_handle_t vlsh, int q_len); +int vls_connect (vls_handle_t vlsh, vppcom_endpt_t * server_ep); +vls_handle_t vls_accept (vls_handle_t vlsh, vppcom_endpt_t * ep, int flags); +ssize_t vls_read (vls_handle_t vlsh, void *buf, size_t nbytes); +ssize_t vls_recvfrom (vls_handle_t vlsh, void *buffer, uint32_t buflen, + int flags, vppcom_endpt_t * ep); +int vls_write (vls_handle_t vlsh, void *buf, size_t nbytes); +int vls_write_msg (vls_handle_t vlsh, void *buf, size_t nbytes); +int vls_sendto (vls_handle_t vlsh, void *buf, int buflen, int flags, + vppcom_endpt_t * ep); +int vls_attr (vls_handle_t vlsh, uint32_t op, void *buffer, + uint32_t * buflen); +vls_handle_t vls_epoll_create (void); +int vls_epoll_ctl (vls_handle_t ep_vlsh, int op, vls_handle_t vlsh, + struct epoll_event *event); +int vls_epoll_wait (vls_handle_t ep_vlsh, struct epoll_event *events, + int maxevents, double wait_for_time); +vcl_session_handle_t vlsh_to_sh (vls_handle_t vlsh); +vcl_session_handle_t vlsh_to_session_index (vls_handle_t vlsh); +vls_handle_t vls_session_index_to_vlsh (uint32_t session_index); +int vls_app_create (char *app_name); + +#endif /* SRC_VCL_VCL_LOCKED_H_ */ + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */ -- cgit 1.2.3-korg