diff options
author | Florin Coras <fcoras@cisco.com> | 2023-02-02 12:56:16 -0800 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2023-02-08 02:19:58 +0000 |
commit | 90c9bb871f9b252e15dde0cb0a20e27498ade871 (patch) | |
tree | ec26c5f3e997fdd339bb90bee1f5d12a6cf162bf /src/vcl/ldp.c | |
parent | c6fe2c3053b7534e38fbf04d4442fc3f166a55c0 (diff) |
vcl: better handlig of ldp apis that rely on gnu source
Control use of apis that rely on _GNU_SOURCE being defined with compile
time macro.
Also fixes sendmmsg and recvmmsg which were not probably wrapped.
Type: improvement
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I207de23210d4b9dc960bb4289159502760c5614d
(cherry picked from commit 3684794336602435b91b91a1dc5bd9401a974432)
Diffstat (limited to 'src/vcl/ldp.c')
-rw-r--r-- | src/vcl/ldp.c | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/src/vcl/ldp.c b/src/vcl/ldp.c index 522e85d9719..482af3f1f82 100644 --- a/src/vcl/ldp.c +++ b/src/vcl/ldp.c @@ -12,6 +12,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +#ifdef HAVE_GNU_SOURCE +#define _GNU_SOURCE +#endif + #include <unistd.h> #include <stdio.h> #include <signal.h> @@ -52,6 +57,12 @@ #define LDP_MAX_NWORKERS 32 +#ifdef HAVE_GNU_SOURCE +#define SOCKADDR_GET_SA(__addr) __addr.__sockaddr__; +#else +#define SOCKADDR_GET_SA(__addr) _addr; +#endif + typedef struct ldp_worker_ctx_ { u8 *io_buffer; @@ -1052,8 +1063,9 @@ socketpair (int domain, int type, int protocol, int fds[2]) } int -bind (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len) +bind (int fd, __CONST_SOCKADDR_ARG _addr, socklen_t len) { + const struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vls_handle_t vlsh; int rv; @@ -1124,11 +1136,10 @@ done: } static inline int -ldp_copy_ep_to_sockaddr (__SOCKADDR_ARG addr, socklen_t * __restrict len, - vppcom_endpt_t * ep) +ldp_copy_ep_to_sockaddr (struct sockaddr *addr, socklen_t *__restrict len, + vppcom_endpt_t *ep) { - int rv = 0; - int sa_len, copy_len; + int rv = 0, sa_len, copy_len; ldp_init_check (); @@ -1169,8 +1180,9 @@ ldp_copy_ep_to_sockaddr (__SOCKADDR_ARG addr, socklen_t * __restrict len, } int -getsockname (int fd, __SOCKADDR_ARG addr, socklen_t * __restrict len) +getsockname (int fd, __SOCKADDR_ARG _addr, socklen_t *__restrict len) { + struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vls_handle_t vlsh; int rv; @@ -1203,15 +1215,16 @@ getsockname (int fd, __SOCKADDR_ARG addr, socklen_t * __restrict len) } else { - rv = libc_getsockname (fd, addr, len); + rv = libc_getsockname (fd, _addr, len); } return rv; } int -connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len) +connect (int fd, __CONST_SOCKADDR_ARG _addr, socklen_t len) { + const struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vls_handle_t vlsh; int rv; @@ -1291,8 +1304,9 @@ done: } int -getpeername (int fd, __SOCKADDR_ARG addr, socklen_t * __restrict len) +getpeername (int fd, __SOCKADDR_ARG _addr, socklen_t *__restrict len) { + struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vls_handle_t vlsh; int rv; @@ -1543,8 +1557,9 @@ __recv_chk (int fd, void *buf, size_t n, size_t buflen, int flags) static inline int ldp_vls_sendo (vls_handle_t vlsh, const void *buf, size_t n, vppcom_endpt_tlv_t *ep_tlv, int flags, - __CONST_SOCKADDR_ARG addr, socklen_t addr_len) + __CONST_SOCKADDR_ARG _addr, socklen_t addr_len) { + const struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vppcom_endpt_t *ep = 0; vppcom_endpt_t _ep; @@ -1582,11 +1597,11 @@ ldp_vls_sendo (vls_handle_t vlsh, const void *buf, size_t n, } static int -ldp_vls_recvfrom (vls_handle_t vlsh, void *__restrict buf, size_t n, - int flags, __SOCKADDR_ARG addr, - socklen_t * __restrict addr_len) +ldp_vls_recvfrom (vls_handle_t vlsh, void *__restrict buf, size_t n, int flags, + __SOCKADDR_ARG _addr, socklen_t *__restrict addr_len) { u8 src_addr[sizeof (struct sockaddr_in6)]; + struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vppcom_endpt_t ep; ssize_t size; int rv; @@ -1611,8 +1626,9 @@ ldp_vls_recvfrom (vls_handle_t vlsh, void *__restrict buf, size_t n, ssize_t sendto (int fd, const void *buf, size_t n, int flags, - __CONST_SOCKADDR_ARG addr, socklen_t addr_len) + __CONST_SOCKADDR_ARG _addr, socklen_t addr_len) { + const struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vls_handle_t vlsh; ssize_t size; @@ -1723,7 +1739,7 @@ sendmsg (int fd, const struct msghdr * msg, int flags) return size; } -#ifdef USE_GNU +#ifdef _GNU_SOURCE int sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) { @@ -1822,7 +1838,7 @@ recvmsg (int fd, struct msghdr * msg, int flags) return size; } -#ifdef USE_GNU +#ifdef _GNU_SOURCE int recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, struct timespec *tmo) @@ -2139,9 +2155,10 @@ listen (int fd, int n) } static inline int -ldp_accept4 (int listen_fd, __SOCKADDR_ARG addr, - socklen_t * __restrict addr_len, int flags) +ldp_accept4 (int listen_fd, __SOCKADDR_ARG _addr, + socklen_t *__restrict addr_len, int flags) { + struct sockaddr *addr = SOCKADDR_GET_SA (_addr); vls_handle_t listen_vlsh, accept_vlsh; int rv; @@ -2671,7 +2688,7 @@ done: return rv; } -#ifdef USE_GNU +#ifdef _GNU_SOURCE int ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout, const sigset_t * sigmask) |