1#define _GNU_SOURCE
2#include <sys/socket.h>
3
4#include <errno.h>
5#include <netdb.h>
6#include <sys/socket.h>
7#include <sys/types.h>
8
9#include "libc.h"
10
11static int stub_socket(int domain, int type, int protocol) {
12    errno = ENOSYS;
13    return -1;
14}
15weak_alias(stub_socket, socket);
16
17static int stub_socketpair(int domain, int type, int protocol, int fd[2]) {
18    errno = ENOSYS;
19    return -1;
20}
21weak_alias(stub_socketpair, socketpair);
22
23static int stub_shutdown(int fd, int how) {
24    errno = ENOSYS;
25    return -1;
26}
27weak_alias(stub_shutdown, shutdown);
28
29static int stub_bind(int fd, const struct sockaddr* addr, socklen_t len) {
30    errno = ENOSYS;
31    return -1;
32}
33weak_alias(stub_bind, bind);
34
35static int stub_connect(int fd, const struct sockaddr* addr, socklen_t len) {
36    errno = ENOSYS;
37    return -1;
38}
39weak_alias(stub_connect, connect);
40
41static int stub_listen(int fd, int backlog) {
42    errno = ENOSYS;
43    return -1;
44}
45weak_alias(stub_listen, listen);
46
47static int stub_accept4(int fd, struct sockaddr* restrict addr, socklen_t* restrict len, int flags) {
48    errno = ENOSYS;
49    return -1;
50}
51weak_alias(stub_accept4, accept4);
52
53static int stub_getsockname(int fd, struct sockaddr* restrict addr, socklen_t* restrict len) {
54    errno = ENOSYS;
55    return -1;
56}
57weak_alias(stub_getsockname, getsockname);
58
59static int stub_getpeername(int fd, struct sockaddr* restrict addr, socklen_t* restrict len) {
60    errno = ENOSYS;
61    return -1;
62}
63weak_alias(stub_getpeername, getpeername);
64
65static ssize_t stub_sendto(int fd, const void* buf, size_t buflen, int flags, const struct sockaddr* addr, socklen_t addrlen) {
66    errno = ENOSYS;
67    return -1;
68}
69weak_alias(stub_sendto, sendto);
70
71static ssize_t stub_recvfrom(int fd, void* restrict buf, size_t buflen, int flags, struct sockaddr* restrict addr, socklen_t* restrict addrlen) {
72    errno = ENOSYS;
73    return -1;
74}
75weak_alias(stub_recvfrom, recvfrom);
76
77static ssize_t stub_sendmsg(int fd, const struct msghdr* msg, int flags) {
78    errno = ENOSYS;
79    return -1;
80}
81weak_alias(stub_sendmsg, sendmsg);
82
83static ssize_t stub_recvmsg(int fd, struct msghdr* msg, int flags) {
84    errno = ENOSYS;
85    return -1;
86}
87weak_alias(stub_recvmsg, recvmsg);
88
89static int stub_sendmmsg(int fd, struct mmsghdr* msgvec, unsigned int vlen, unsigned int flags) {
90    errno = ENOSYS;
91    return -1;
92}
93weak_alias(stub_sendmmsg, sendmmsg);
94
95static int stub_recvmmsg(int fd, struct mmsghdr* msgvec, unsigned int vlen, unsigned int flags, struct timespec* timeout) {
96    errno = ENOSYS;
97    return -1;
98}
99weak_alias(stub_recvmmsg, recvmmsg);
100
101static int stub_getsockopt(int fd, int level, int optname, void* restrict optval, socklen_t* restrict optlen) {
102    errno = ENOSYS;
103    return -1;
104}
105weak_alias(stub_getsockopt, getsockopt);
106
107static int stub_setsockopt(int fd, int level, int optname, const void* optval, socklen_t optlen) {
108    errno = ENOSYS;
109    return -1;
110}
111weak_alias(stub_setsockopt, setsockopt);
112
113static int stub_sockatmark(int fd) {
114    errno = ENOSYS;
115    return -1;
116}
117weak_alias(stub_sockatmark, sockatmark);
118
119static int stub_getaddrinfo(const char* restrict host, const char* restrict serv,
120                            const struct addrinfo* restrict hint, struct addrinfo** restrict res) {
121    errno = ENOSYS;
122    return EAI_SYSTEM;
123}
124weak_alias(stub_getaddrinfo, getaddrinfo);
125
126static void stub_freeaddrinfo(struct addrinfo* p) {
127}
128weak_alias(stub_freeaddrinfo, freeaddrinfo);
129