net: sockets: Move socket vtable definition

Offloaded socket implementations need to create the socket operations
vtable, therefore need access to struct socket_op_vtable. So far this
has been defined in a private header, so implementations needed to add
the header location to the include path in CMake.

Therefore, move struct socket_op_vtable definition to the internal part
of the public socket header, so it's no longer needed to include a
private header. This is also more consistent with the rest of the public
header content, as for example macros needed to register a socket
implementation are already there.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
This commit is contained in:
Robert Lubos 2025-07-10 12:33:58 +02:00 committed by Daniel DeGrasse
parent fd1f4392a6
commit 151295f98e
2 changed files with 24 additions and 24 deletions

View File

@ -1217,6 +1217,30 @@ struct net_socket_register {
#define NET_SOCKET_OFFLOAD_REGISTER(socket_name, prio, _family, _is_supported, _handler) \
_NET_SOCKET_REGISTER(socket_name, prio, _family, _is_supported, _handler, true)
struct socket_op_vtable {
struct fd_op_vtable fd_vtable;
int (*shutdown)(void *obj, int how);
int (*bind)(void *obj, const struct sockaddr *addr, socklen_t addrlen);
int (*connect)(void *obj, const struct sockaddr *addr,
socklen_t addrlen);
int (*listen)(void *obj, int backlog);
int (*accept)(void *obj, struct sockaddr *addr, socklen_t *addrlen);
ssize_t (*sendto)(void *obj, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
ssize_t (*recvfrom)(void *obj, void *buf, size_t max_len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
int (*getsockopt)(void *obj, int level, int optname,
void *optval, socklen_t *optlen);
int (*setsockopt)(void *obj, int level, int optname,
const void *optval, socklen_t optlen);
ssize_t (*sendmsg)(void *obj, const struct msghdr *msg, int flags);
ssize_t (*recvmsg)(void *obj, struct msghdr *msg, int flags);
int (*getpeername)(void *obj, struct sockaddr *addr,
socklen_t *addrlen);
int (*getsockname)(void *obj, struct sockaddr *addr,
socklen_t *addrlen);
};
/** @endcond */
#ifdef __cplusplus

View File

@ -53,30 +53,6 @@ static inline bool net_socket_is_tls(void *obj)
#define sock_is_error(ctx) sock_get_flag(ctx, SOCK_ERROR)
#define sock_set_error(ctx) sock_set_flag(ctx, SOCK_ERROR, SOCK_ERROR)
struct socket_op_vtable {
struct fd_op_vtable fd_vtable;
int (*shutdown)(void *obj, int how);
int (*bind)(void *obj, const struct sockaddr *addr, socklen_t addrlen);
int (*connect)(void *obj, const struct sockaddr *addr,
socklen_t addrlen);
int (*listen)(void *obj, int backlog);
int (*accept)(void *obj, struct sockaddr *addr, socklen_t *addrlen);
ssize_t (*sendto)(void *obj, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
ssize_t (*recvfrom)(void *obj, void *buf, size_t max_len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
int (*getsockopt)(void *obj, int level, int optname,
void *optval, socklen_t *optlen);
int (*setsockopt)(void *obj, int level, int optname,
const void *optval, socklen_t optlen);
ssize_t (*sendmsg)(void *obj, const struct msghdr *msg, int flags);
ssize_t (*recvmsg)(void *obj, struct msghdr *msg, int flags);
int (*getpeername)(void *obj, struct sockaddr *addr,
socklen_t *addrlen);
int (*getsockname)(void *obj, struct sockaddr *addr,
socklen_t *addrlen);
};
size_t msghdr_non_empty_iov_count(const struct msghdr *msg);
#if defined(CONFIG_NET_SOCKETS_OBJ_CORE)