/* * Copyright (c) 2018 Linaro Limited. * * SPDX-License-Identifier: Apache-2.0 */ /** * @file * @brief Socket Offload Redirect API */ #ifndef ZEPHYR_INCLUDE_NET_SOCKET_OFFLOAD_H_ #define ZEPHYR_INCLUDE_NET_SOCKET_OFFLOAD_H_ #ifdef __cplusplus extern "C" { #endif #include extern const struct socket_offload *socket_ops; static inline int socket(int family, int type, int proto) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->socket); return socket_ops->socket(family, type, proto); } static inline int close(int sock) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->close); return socket_ops->close(sock); } static inline int accept(int sock, struct sockaddr *addr, socklen_t *addrlen) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->accept); return socket_ops->accept(sock, addr, addrlen); } static inline int bind(int sock, const struct sockaddr *addr, socklen_t addrlen) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->bind); return socket_ops->bind(sock, addr, addrlen); } static inline int listen(int sock, int backlog) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->listen); return socket_ops->listen(sock, backlog); } static inline int connect(int sock, const struct sockaddr *addr, socklen_t addrlen) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->connect); return socket_ops->connect(sock, addr, addrlen); } static inline int poll(struct pollfd *fds, int nfds, int timeout) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->poll); return socket_ops->poll(fds, nfds, timeout); } static inline int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->setsockopt); return socket_ops->setsockopt(sock, level, optname, optval, optlen); } static inline int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->getsockopt); return socket_ops->getsockopt(sock, level, optname, optval, optlen); } static inline ssize_t recv(int sock, void *buf, size_t max_len, int flags) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->recv); return socket_ops->recv(sock, buf, max_len, flags); } static inline ssize_t recvfrom(int sock, void *buf, short int len, short int flags, struct sockaddr *from, socklen_t *fromlen) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->recvfrom); return socket_ops->recvfrom(sock, buf, len, flags, from, fromlen); } static inline ssize_t send(int sock, const void *buf, size_t len, int flags) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->send); return socket_ops->send(sock, buf, len, flags); } static inline ssize_t sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->sendto); return socket_ops->sendto(sock, buf, len, flags, to, tolen); } static inline int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->getaddrinfo); return socket_ops->getaddrinfo(node, service, hints, res); } static inline void freeaddrinfo(struct addrinfo *res) { __ASSERT_NO_MSG(socket_ops); __ASSERT_NO_MSG(socket_ops->freeaddrinfo); return socket_ops->freeaddrinfo(res); } #ifdef __cplusplus } #endif #endif /* ZEPHYR_INCLUDE_NET_SOCKET_OFFLOAD_H_ */