Files
kaguya 9a9b91c940 user: implement mlibc as the libc, finally.
It's finally done..

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-05-02 03:31:49 -04:00

166 lines
3.2 KiB
C

#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