1#ifndef __VSF_LINUX_SYS_SOCKET_H__
2#define __VSF_LINUX_SYS_SOCKET_H__
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
7# include "../sys/types.h"
20#define SCM_RIGHTS 0x01
21#define SCM_CREDENTIALS 0x02
22#define SCM_SECURITY 0x03
28#define PF_UNIX PF_LOCAL
33#define PF_BLUETOOTH 31
36#define AF_UNSPEC PF_UNSPEC
37#define AF_LOCAL PF_LOCAL
38#define AF_UNIX PF_UNIX
39#define AF_FILE PF_FILE
40#define AF_INET PF_INET
41#define AF_INET6 PF_INET6
42#define AF_NETLINK PF_NETLINK
43#define AF_PACKET PF_PACKET
44#define AF_BLUETOOTH PF_BLUETOOTH
46#define SOL_IP IPPROTO_IP
47#define SOL_TCP IPPROTO_TCP
48#define SOL_UDP IPPROTO_UDP
63#define SOCK_MAX (SOCK_PACKET + 1)
66#define SOCK_CLOEXEC O_CLOEXEC
67#define SOCK_NONBLOCK O_NONBLOCK
69#define INVALID_SOCKET -1
70#define SOCKET_ERROR -1
73#define __socklen_t_defined
91#if VSF_LINUX_SOCKET_CFG_WRAPPER == ENABLED
92#define VSF_LINUX_SOCKET_WRAPPER(__api) VSF_SHELL_WRAPPER(vsf_linux_socket, __api)
94#define setsockopt VSF_LINUX_SOCKET_WRAPPER(setsockopt)
95#define getsockopt VSF_LINUX_SOCKET_WRAPPER(getsockopt)
97#define getpeername VSF_LINUX_SOCKET_WRAPPER(getpeername)
98#define getsockname VSF_LINUX_SOCKET_WRAPPER(getsockname)
100#define accept VSF_LINUX_SOCKET_WRAPPER(accept)
101#define accept4 VSF_LINUX_SOCKET_WRAPPER(accept4)
102#define bind VSF_LINUX_SOCKET_WRAPPER(bind)
103#define connect VSF_LINUX_SOCKET_WRAPPER(connect)
104#define listen VSF_LINUX_SOCKET_WRAPPER(listen)
105#define recv VSF_LINUX_SOCKET_WRAPPER(recv)
106#define recvmsg VSF_LINUX_SOCKET_WRAPPER(recvmsg)
107#define recvfrom VSF_LINUX_SOCKET_WRAPPER(recvfrom)
108#define send VSF_LINUX_SOCKET_WRAPPER(send)
109#define sendmsg VSF_LINUX_SOCKET_WRAPPER(sendmsg)
110#define sendto VSF_LINUX_SOCKET_WRAPPER(sendto)
111#define shutdown VSF_LINUX_SOCKET_WRAPPER(shutdown)
112#define socket VSF_LINUX_SOCKET_WRAPPER(socket)
113#define socketpair VSF_LINUX_SOCKET_WRAPPER(socketpair)
118#define __NR_connect connect
119#define __NR_accept accept
120#define __NR_accept4 accept4
121#define __NR_bind bind
124#define SOL_SOCKET 0xFFFF
128#define SO_REUSEADDR 2
131#define SO_DONTROUTE 5
132#define SO_BROADCAST 6
135#define SO_KEEPALIVE 9
136#define SO_OOBINLINE 10
137#define SO_NO_CHECK 11
138#define SO_PRIORITY 12
140#define SO_BSDCOMPAT 14
141#define SO_REUSEPORT 15
145#define SO_RCVLOWAT 18
146#define SO_SNDLOWAT 19
147#define SO_RCVTIMEO 20
148#define SO_SNDTIMEO 21
149#define SO_BINDTODEVICE 25
150#define SO_MAX_PACING_RATE 47
151#define SO_NONBLOCK 100
162#define IP_MULTICAST_IF 32
163#define IP_MULTICAST_TTL 33
164#define IP_MULTICAST_LOOP 34
165#define IP_ADD_MEMBERSHIP 35
166#define IP_DROP_MEMBERSHIP 36
167#define IP_MULTICAST_ALL 49
169#define IPV6_UNICAST_HOPS 16
170#define IPV6_MULTICAST_IF 17
171#define IPV6_MULTICAST_HOPS 18
172#define IPV6_MULTICAST_LOOP 19
173#define IPV6_JOIN_GROUP 20
174#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
175#define IPV6_LEAVE_GROUP 21
176#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
177#define IPV6_V6ONLY 26
182#define MSG_OOB MSG_OOB
184#define MSG_PEEK MSG_PEEK
186#define MSG_DONTROUTE MSG_DONTROUTE
188#define MSG_CTRUNC MSG_CTRUNC
190#define MSG_TRUNC MSG_TRUNC
192#define MSG_DONTWAIT MSG_DONTWAIT
194#define MSG_WAITALL MSG_WAITALL
196#define MSG_NOSIGNAL MSG_NOSIGNAL
209#define CMSG_ALIGN(len) (((len)+sizeof(long)-1) & ~(sizeof(long)-1))
210#define CMSG_SPACE(len) (sizeof(struct cmsghdr) + CMSG_ALIGN(len))
211#define CMSG_LEN(len) (sizeof(struct cmsghdr) + (len))
212#define CMSG_DATA(cmsg) (void *)((uint8_t *)(cmsg) + sizeof(struct cmsghdr))
213#define CMSG_FIRSTHDR(msg) \
214 ((msg)->msg_controllen >= sizeof(struct cmsghdr) ? \
215 (struct cmsghdr *)(msg)->msg_control \
216 : (struct cmsghdr *)NULL)
223#if __IS_COMPILER_GCC__
224# pragma GCC diagnostic push
225# pragma GCC diagnostic ignored "-Wcast-align"
226#elif __IS_COMPILER_LLVM__ || __IS_COMPILER_ARM_COMPILER_6__
227# pragma clang diagnostic push
228# pragma clang diagnostic ignored "-Wcast-align"
242#if __IS_COMPILER_GCC__
243# pragma GCC diagnostic pop
244#elif __IS_COMPILER_LLVM__ || __IS_COMPILER_ARM_COMPILER_6__
245# pragma clang diagnostic pop
255#if VSF_LINUX_APPLET_USE_SYS_SOCKET == ENABLED
285# ifndef __VSF_APPLET__
290#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_SYS_SOCKET_LIB__))\
291 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_SYS_SOCKET == ENABLED
293#ifndef VSF_LINUX_APPLET_SYS_SOCKET_VPLT
294# if VSF_LINUX_USE_APPLET == ENABLED
295# define VSF_LINUX_APPLET_SYS_SOCKET_VPLT \
296 ((vsf_linux_sys_socket_vplt_t *)(VSF_LINUX_APPLET_VPLT->sys_socket_vplt))
298# define VSF_LINUX_APPLET_SYS_SOCKET_VPLT \
299 ((vsf_linux_sys_socket_vplt_t *)vsf_vplt((void *)0))
303#define VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(__NAME) \
304 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_SYS_SOCKET_VPLT, __NAME)
305#define VSF_LINUX_APPLET_SYS_SOCKET_IMP(...) \
306 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_SYS_SOCKET_VPLT, __VA_ARGS__)
308VSF_LINUX_APPLET_SYS_SOCKET_IMP(
setsockopt,
int,
int sockfd,
int level,
int optname,
const void *optval,
socklen_t optlen) {
310 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
setsockopt)(sockfd, level, optname, optval, optlen);
312VSF_LINUX_APPLET_SYS_SOCKET_IMP(
getsockopt,
int,
int sockfd,
int level,
int optname,
void *optval,
socklen_t *optlen) {
314 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
getsockopt)(sockfd, level, optname, optval, optlen);
318 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
getpeername)(sockfd, addr, addrlen);
322 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
getsockname)(sockfd, addr, addrlen);
326 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
accept)(sockfd, addr, addrlen);
328VSF_LINUX_APPLET_SYS_SOCKET_IMP(
bind,
int,
int sockfd,
const struct sockaddr *addr,
socklen_t addrlen) {
330 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
bind)(sockfd, addr, addrlen);
334 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
connect)(sockfd, addr, addrlen);
336VSF_LINUX_APPLET_SYS_SOCKET_IMP(
listen,
int,
int sockfd,
int backlog) {
338 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
listen)(sockfd, backlog);
340VSF_LINUX_APPLET_SYS_SOCKET_IMP(
recv,
ssize_t,
int sockfd,
void *buffer,
size_t length,
int flags) {
342 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
recv)(sockfd, buffer,
length, flags);
346 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
recvmsg)(sockfd, msg, flags);
350 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
recvfrom)(sockfd, buffer,
length, flags, src_addr, addrlen);
352VSF_LINUX_APPLET_SYS_SOCKET_IMP(
send,
ssize_t,
int sockfd,
const void *buffer,
size_t length,
int flags) {
354 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
send)(sockfd, buffer,
length, flags);
356VSF_LINUX_APPLET_SYS_SOCKET_IMP(
sendmsg,
ssize_t,
int sockfd,
const struct msghdr *msg,
int flags) {
358 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
sendmsg)(sockfd, msg, flags);
362 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
sendto)(sockfd, buffer,
length, flags, dest_addr, addrlen);
364VSF_LINUX_APPLET_SYS_SOCKET_IMP(
shutdown,
int,
int sockfd,
int how) {
366 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
shutdown)(sockfd, how);
368VSF_LINUX_APPLET_SYS_SOCKET_IMP(
socket,
int,
int domain,
int type,
int protocol) {
370 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
socket)(domain,
type, protocol);
372VSF_LINUX_APPLET_SYS_SOCKET_IMP(
socketpair,
int,
int domain,
int type,
int protocol,
int socket_vector[2]) {
374 return VSF_LINUX_APPLET_SYS_SOCKET_ENTRY(
socketpair)(domain,
type, protocol, socket_vector);
379int setsockopt(
int sockfd,
int level,
int optname,
const void *optval,
381int getsockopt(
int sockfd,
int level,
int optname,
void *optval,
391int listen(
int sockfd,
int backlog);
403int socket(
int domain,
int type,
int protocol);
404int socketpair(
int domain,
int type,
int protocol,
int socket_vector[2]);
const struct in6_addr in6addr_loopback
Definition vsf_linux_socket.c:70
const struct in6_addr in6addr_any
Definition vsf_linux_socket.c:68
int ssize_t
Definition types.h:71
sock_type
Definition socket.h:55
@ SOCK_DGRAM
Definition socket.h:57
@ SOCK_RDM
Definition socket.h:59
@ SOCK_SEQPACKET
Definition socket.h:60
@ SOCK_RAW
Definition socket.h:58
@ SOCK_PACKET
Definition socket.h:61
@ SOCK_STREAM
Definition socket.h:56
#define MSG_WAITALL
Definition socket.h:194
#define getpeername
Definition socket.h:97
uint16_t sa_family_t
Definition socket.h:75
#define listen
Definition socket.h:104
#define sendmsg
Definition socket.h:109
#define setsockopt
Definition socket.h:94
#define accept
Definition socket.h:100
#define recvfrom
Definition socket.h:107
uint32_t socklen_t
Definition socket.h:72
#define sendto
Definition socket.h:110
__VSF_VPLT_DECORATOR__ vsf_linux_sys_socket_vplt_t vsf_linux_sys_socket_vplt
Definition vsf_linux_socket.c:821
#define MSG_PEEK
Definition socket.h:184
#define recvmsg
Definition socket.h:106
#define MSG_TRUNC
Definition socket.h:190
#define getsockopt
Definition socket.h:95
#define accept4
Definition socket.h:101
@ SHUT_RD
Definition socket.h:250
@ SHUT_WR
Definition socket.h:251
@ SHUT_RDWR
Definition socket.h:252
#define CMSG_ALIGN(len)
Definition socket.h:209
#define MSG_DONTROUTE
Definition socket.h:186
#define MSG_OOB
Definition socket.h:182
#define MSG_NOSIGNAL
Definition socket.h:196
#define getsockname
Definition socket.h:98
#define MSG_CTRUNC
Definition socket.h:188
#define socket
Definition socket.h:112
#define MSG_DONTWAIT
Definition socket.h:192
#define socketpair
Definition socket.h:113
#define shutdown
Definition socket.h:111
#define connect
Definition socket.h:103
#define recv
Definition socket.h:105
#define bind
Definition socket.h:102
#define send
Definition socket.h:108
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
int cmsg_type
Definition socket.h:220
size_t cmsg_len
Definition socket.h:218
int cmsg_level
Definition socket.h:219
int l_linger
Definition socket.h:88
int l_onoff
Definition socket.h:87
struct iovec * msg_iov
Definition socket.h:202
socklen_t msg_namelen
Definition socket.h:201
void * msg_name
Definition socket.h:200
int msg_flags
Definition socket.h:206
size_t msg_controllen
Definition socket.h:205
size_t msg_iovlen
Definition socket.h:203
void * msg_control
Definition socket.h:204
sa_family_t ss_family
Definition socket.h:81
char sa_data[32]
Definition socket.h:83
char sa_data[32]
Definition socket.h:78
sa_family_t sa_family
Definition socket.h:77
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(socketpair)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(accept)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setsockopt)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(bind)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(send)
vsf_vplt_info_t info
Definition socket.h:257
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(connect)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(recvmsg)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(shutdown)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getsockopt)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(recv)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getpeername)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sendto)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(recvfrom)
VSF_APPLET_VPLT_ENTRY_VAR_DEF(in6addr_loopback)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getsockname)
VSF_APPLET_VPLT_ENTRY_VAR_DEF(in6addr_any)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sendmsg)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(socket)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(listen)
vk_av_control_type_t type
Definition vsf_audio.h:170
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
uint_fast8_t length
Definition vsf_pbuf.c:38