extern "C" {
#endif
+#include <features.h>
+
#define __NEED_socklen_t
#define __NEED_sa_family_t
#define __NEED_size_t
#include <bits/socket.h>
-struct cmsghdr
-{
- socklen_t cmsg_len;
- int cmsg_level;
- int cmsg_type;
-};
-
struct ucred
{
pid_t pid;
#define SHUT_WD 1
#define SHUT_RDWR 2
+#ifndef SOCK_STREAM
#define SOCK_STREAM 1
#define SOCK_DGRAM 2
+#endif
+
#define SOCK_RAW 3
#define SOCK_RDM 4
#define SOCK_SEQPACKET 5
int bind (int, const struct sockaddr *, socklen_t);
int connect (int, const struct sockaddr *, socklen_t);
int listen (int, int);
-int accept (int, struct sockaddr *, socklen_t *);
+int accept (int, struct sockaddr *__restrict, socklen_t *__restrict);
-int getsockname (int, struct sockaddr *, socklen_t *);
-int getpeername (int, struct sockaddr *, socklen_t *);
+int getsockname (int, struct sockaddr *__restrict, socklen_t *__restrict);
+int getpeername (int, struct sockaddr *__restrict, socklen_t *__restrict);
ssize_t send (int, const void *, size_t, int);
ssize_t recv (int, void *, size_t, int);
ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
-ssize_t recvfrom (int, void *, size_t, int, struct sockaddr *, socklen_t *);
+ssize_t recvfrom (int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict);
ssize_t sendmsg (int, const struct msghdr *, int);
ssize_t recvmsg (int, struct msghdr *, int);
-int getsockopt (int, int, int, void *, socklen_t *);
+int getsockopt (int, int, int, void *__restrict, socklen_t *__restrict);
int setsockopt (int, int, int, const void *, socklen_t);
int sockatmark (int);
#define SHUT_WR 1
#define SHUT_RDWR 2
+#ifdef _GNU_SOURCE
+int accept4(int, struct sockaddr *__restrict, socklen_t *__restrict, int);
+#endif
+
#ifdef __cplusplus
}
#endif