summaryrefslogtreecommitdiff
path: root/lib/mlibc/abis/ironclad/socket.h
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2024-03-07 17:28:00 -0500
committerIan Moffett <ian@osmora.org>2024-03-07 17:28:32 -0500
commitbd5969fc876a10b18613302db7087ef3c40f18e1 (patch)
tree7c2b8619afe902abf99570df2873fbdf40a4d1a1 /lib/mlibc/abis/ironclad/socket.h
parenta95b38b1b92b172e6cc4e8e56a88a30cc65907b0 (diff)
lib: Add mlibc
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'lib/mlibc/abis/ironclad/socket.h')
-rw-r--r--lib/mlibc/abis/ironclad/socket.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/lib/mlibc/abis/ironclad/socket.h b/lib/mlibc/abis/ironclad/socket.h
new file mode 100644
index 0000000..48b8178
--- /dev/null
+++ b/lib/mlibc/abis/ironclad/socket.h
@@ -0,0 +1,165 @@
+#ifndef _ABIBITS_SOCKET_H
+#define _ABIBITS_SOCKET_H
+
+#include <abi-bits/socklen_t.h>
+#include <bits/posix/iovec.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned int sa_family_t;
+
+struct msghdr {
+ void *msg_name;
+ socklen_t msg_namelen;
+ struct iovec *msg_iov;
+ int msg_iovlen;
+ void *msg_control;
+ socklen_t msg_controllen;
+ int msg_flags;
+};
+
+struct sockaddr_storage {
+ sa_family_t ss_family;
+ char __padding[128 - sizeof(sa_family_t)];
+};
+
+struct mmsghdr {
+ struct msghdr msg_hdr;
+ unsigned int msg_len;
+};
+
+struct cmsghdr {
+ socklen_t cmsg_len;
+ int cmsg_level;
+ int cmsg_type;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#define SCM_RIGHTS 1
+#define SCM_TIMESTAMP SO_TIMESTAMP
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+
+//MISSING: CMSG_DATA, CMSG_NXTHDR, CMSG_FIRSTHDR
+
+#define SCM_CREDENTIALS 0x02
+
+#define SOCK_DGRAM 1
+#define SOCK_RAW 2
+#define SOCK_SEQPACKET 3
+#define SOCK_STREAM 4
+#define SOCK_DCCP 5
+#define SOCK_NONBLOCK 0x10000
+#define SOCK_CLOEXEC 0x20000
+#define SOCK_RDM 0x40000
+
+#define SOL_SOCKET 1
+#define SOL_IPV6 41
+#define SOL_PACKET 263
+#define SOL_NETLINK 270
+
+#define SO_ACCEPTCONN 1
+#define SO_BROADCAST 2
+#define SO_DEBUG 3
+#define SO_DONTROUTE 4
+#define SO_ERROR 5
+#define SO_KEEPALIVE 6
+#define SO_LINGER 7
+#define SO_OOBINLINE 8
+#define SO_RCVBUF 9
+#define SO_RCVLOWAT 10
+#define SO_RCVTIMEO 11
+#define SO_REUSEADDR 12
+#define SO_SNDBUF 13
+#define SO_SNDLOWAT 14
+#define SO_SNDTIMEO 15
+#define SO_TYPE 16
+#define SO_SNDBUFFORCE 17
+#define SO_PEERCRED 18
+#define SO_ATTACH_FILTER 19
+#define SO_PASSCRED 20
+#define SO_RCVBUFFORCE 21
+#define SO_DETACH_FILTER 22
+#define SO_PROTOCOL 23
+#define SO_REUSEPORT 24
+#define SO_TIMESTAMP 25
+#define SO_PEERSEC 26
+#define SO_BINDTODEVICE 27
+#define SO_DOMAIN 28
+#define SO_PASSSEC 29
+#define SO_TIMESTAMPNS 30
+#define SO_PRIORITY 31
+#define SO_MARK 32
+
+#define SOMAXCONN 1
+
+#define MSG_CTRUNC 0x1
+#define MSG_DONTROUTE 0x2
+#define MSG_EOR 0x4
+#define MSG_OOB 0x8
+#define MSG_NOSIGNAL 0x10
+#define MSG_PEEK 0x20
+#define MSG_TRUNC 0x40
+#define MSG_WAITALL 0x80
+#define MSG_FIN 0x200
+#define MSG_CONFIRM 0x800
+
+// Linux extensions.
+#define MSG_DONTWAIT 0x1000
+#define MSG_CMSG_CLOEXEC 0x2000
+#define MSG_MORE 0x4000
+#define MSG_FASTOPEN 0x20000000
+
+// GNU (?) extension: Protocol family constants.
+
+#define PF_INET 1
+#define PF_INET6 2
+#define PF_UNIX 3
+#define PF_LOCAL 3
+#define PF_UNSPEC 4
+#define PF_NETLINK 5
+#define PF_BRIDGE 6
+#define PF_APPLETALK 7
+#define PF_BLUETOOTH 8
+#define PF_DECnet 9
+#define PF_IPX 10
+#define PF_ISDN 11
+#define PF_SNA 12
+#define PF_PACKET 13
+#define PF_AX25 14
+#define PF_NETROM 15
+#define PF_ROSE 16
+#define PF_TIPC 30
+#define PF_ALG 38
+#define PF_MAX 46
+
+#define AF_INET PF_INET
+#define AF_INET6 PF_INET6
+#define AF_UNIX PF_UNIX
+#define AF_LOCAL PF_LOCAL
+#define AF_UNSPEC PF_UNSPEC
+#define AF_NETLINK PF_NETLINK
+#define AF_BRIDGE PF_BRIDGE
+#define AF_APPLETALK PF_APPLETALK
+#define AF_BLUETOOTH PF_BLUETOOTH
+#define AF_DECnet PF_DECnet
+#define AF_IPX PF_IPX
+#define AF_ISDN PF_ISDN
+#define AF_SNA PF_SNA
+#define AF_PACKET PF_PACKET
+#define AF_PACKET PF_PACKET
+#define AF_AX25 PF_AX25
+#define AF_NETROM PF_NETROM
+#define AF_ROSE PF_ROSE
+#define AF_TIPC PF_TIPC
+#define AF_ALG PF_ALG
+#define AF_MAX PF_MAX
+
+#define SHUT_RD 1
+#define SHUT_RDWR 2
+#define SHUT_WR 3
+#endif