From b92e6b02e53b2927732f31b1442cad420b62d1ef Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 14 Aug 2021 16:34:29 +0200 Subject: [PATCH] Kernel+LibC: Share definitions for sys/socket.h and sys/un.h --- Kernel/API/POSIX/sys/socket.h | 136 +++++++++++++++++++++++++++ Kernel/API/POSIX/sys/un.h | 24 +++++ Kernel/UnixTypes.h | 82 +--------------- Userland/Libraries/LibC/sys/socket.h | 122 +----------------------- Userland/Libraries/LibC/sys/un.h | 15 +-- 5 files changed, 165 insertions(+), 214 deletions(-) create mode 100644 Kernel/API/POSIX/sys/socket.h create mode 100644 Kernel/API/POSIX/sys/un.h diff --git a/Kernel/API/POSIX/sys/socket.h b/Kernel/API/POSIX/sys/socket.h new file mode 100644 index 0000000000..ffb33dbc22 --- /dev/null +++ b/Kernel/API/POSIX/sys/socket.h @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2018-2021, Andreas Kling + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define AF_MASK 0xff +#define AF_UNSPEC 0 +#define AF_LOCAL 1 +#define AF_UNIX AF_LOCAL +#define AF_INET 2 +#define AF_INET6 3 +#define AF_MAX 4 +#define PF_LOCAL AF_LOCAL +#define PF_UNIX PF_LOCAL +#define PF_INET AF_INET +#define PF_INET6 AF_INET6 +#define PF_UNSPEC AF_UNSPEC +#define PF_MAX AF_MAX + +#define SOCK_TYPE_MASK 0xff +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 +#define SOCK_NONBLOCK 04000 +#define SOCK_CLOEXEC 02000000 + +#define SHUT_RD 1 +#define SHUT_WR 2 +#define SHUT_RDWR 3 + +#define IPPROTO_IP 0 +#define IPPROTO_ICMP 1 +#define IPPROTO_TCP 6 +#define IPPROTO_UDP 17 +#define IPPROTO_IPV6 41 + +#define MSG_TRUNC 0x1 +#define MSG_CTRUNC 0x2 +#define MSG_PEEK 0x4 +#define MSG_OOB 0x8 +#define MSG_DONTWAIT 0x40 + +typedef uint16_t sa_family_t; + +struct cmsghdr { + socklen_t cmsg_len; + int cmsg_level; + int cmsg_type; +}; + +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 { + sa_family_t sa_family; + char sa_data[14]; +}; + +struct ucred { + pid_t pid; + uid_t uid; + gid_t gid; +}; + +struct linger { + int l_onoff; + int l_linger; +}; + +#define SOL_SOCKET 1 +#define SOMAXCONN 128 + +enum { + SO_RCVTIMEO, + SO_SNDTIMEO, + SO_TYPE, + SO_ERROR, + SO_PEERCRED, + SO_RCVBUF, + SO_SNDBUF, + SO_REUSEADDR, + SO_BINDTODEVICE, + SO_KEEPALIVE, + SO_TIMESTAMP, + SO_BROADCAST, + SO_LINGER, +}; +#define SO_RCVTIMEO SO_RCVTIMEO +#define SO_SNDTIMEO SO_SNDTIMEO +#define SO_TYPE SO_TYPE +#define SO_ERROR SO_ERROR +#define SO_PEERCRED SO_PEERCRED +#define SO_REUSEADDR SO_REUSEADDR +#define SO_BINDTODEVICE SO_BINDTODEVICE +#define SO_KEEPALIVE SO_KEEPALIVE +#define SO_TIMESTAMP SO_TIMESTAMP +#define SO_BROADCAST SO_BROADCAST +#define SO_SNDBUF SO_SNDBUF +#define SO_RCVBUF SO_RCVBUF +#define SO_LINGER SO_LINGER + +enum { + SCM_TIMESTAMP, + SCM_RIGHTS, +}; +#define SCM_TIMESTAMP SCM_TIMESTAMP +#define SCM_RIGHTS SCM_RIGHTS + +struct sockaddr_storage { + sa_family_t ss_family; + union { + char data[sizeof(struct sockaddr_un)]; + void* alignment; + }; +}; + +#ifdef __cplusplus +} +#endif diff --git a/Kernel/API/POSIX/sys/un.h b/Kernel/API/POSIX/sys/un.h new file mode 100644 index 0000000000..a8aec6c250 --- /dev/null +++ b/Kernel/API/POSIX/sys/un.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2018-2021, Andreas Kling + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define UNIX_PATH_MAX 108 + +struct sockaddr_un { + uint16_t sun_family; + char sun_path[UNIX_PATH_MAX]; +}; + +#ifdef __cplusplus +} +#endif diff --git a/Kernel/UnixTypes.h b/Kernel/UnixTypes.h index 244cac0403..ef99db7bf4 100644 --- a/Kernel/UnixTypes.h +++ b/Kernel/UnixTypes.h @@ -10,7 +10,9 @@ #include #include #include +#include #include +#include #include #include @@ -241,53 +243,6 @@ struct pollfd { short revents; }; -#define AF_MASK 0xff -#define AF_UNSPEC 0 -#define AF_LOCAL 1 -#define AF_INET 2 -#define AF_MAX 3 -#define PF_LOCAL AF_LOCAL -#define PF_INET AF_INET - -#define SOCK_TYPE_MASK 0xff -#define SOCK_STREAM 1 -#define SOCK_RAW 3 -#define SOCK_DGRAM 2 -#define SOCK_NONBLOCK 04000 -#define SOCK_CLOEXEC 02000000 - -#define SHUT_RD 1 -#define SHUT_WR 2 -#define SHUT_RDWR 3 - -#define MSG_TRUNC 0x1 -#define MSG_CTRUNC 0x2 -#define MSG_PEEK 0x4 -#define MSG_OOB 0x8 -#define MSG_DONTWAIT 0x40 - -#define SOL_SOCKET 1 - -enum { - SO_RCVTIMEO, - SO_SNDTIMEO, - SO_TYPE, - SO_ERROR, - SO_PEERCRED, - SO_RCVBUF, - SO_SNDBUF, - SO_REUSEADDR, - SO_BINDTODEVICE, - SO_KEEPALIVE, - SO_TIMESTAMP, - SO_BROADCAST, - SO_LINGER, -}; - -enum { - SCM_TIMESTAMP, -}; - #define IPPROTO_IP 0 #define IPPROTO_ICMP 1 #define IPPROTO_TCP 6 @@ -298,24 +253,7 @@ enum { #define IP_ADD_MEMBERSHIP 4 #define IP_DROP_MEMBERSHIP 5 -struct ucred { - pid_t pid; - uid_t uid; - gid_t gid; -}; - -struct sockaddr { - u16 sa_family; - char sa_data[14]; -}; - #define S_IFSOCK 0140000 -#define UNIX_PATH_MAX 108 - -struct sockaddr_un { - u16 sun_family; - char sun_path[UNIX_PATH_MAX]; -}; struct in_addr { uint32_t s_addr; @@ -373,22 +311,6 @@ struct iovec { size_t iov_len; }; -struct cmsghdr { - socklen_t cmsg_len; - int cmsg_level; - int cmsg_type; -}; - -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 sched_param { int sched_priority; }; diff --git a/Userland/Libraries/LibC/sys/socket.h b/Userland/Libraries/LibC/sys/socket.h index 7498bb40bd..87b4ecea8d 100644 --- a/Userland/Libraries/LibC/sys/socket.h +++ b/Userland/Libraries/LibC/sys/socket.h @@ -6,131 +6,11 @@ #pragma once -#include -#include -#include +#include #include __BEGIN_DECLS -#define AF_MASK 0xff -#define AF_UNSPEC 0 -#define AF_LOCAL 1 -#define AF_UNIX AF_LOCAL -#define AF_INET 2 -#define AF_INET6 3 -#define AF_MAX 4 -#define PF_LOCAL AF_LOCAL -#define PF_UNIX PF_LOCAL -#define PF_INET AF_INET -#define PF_INET6 AF_INET6 -#define PF_UNSPEC AF_UNSPEC -#define PF_MAX AF_MAX - -#define SOCK_TYPE_MASK 0xff -#define SOCK_STREAM 1 -#define SOCK_DGRAM 2 -#define SOCK_RAW 3 -#define SOCK_NONBLOCK 04000 -#define SOCK_CLOEXEC 02000000 - -#define SHUT_RD 1 -#define SHUT_WR 2 -#define SHUT_RDWR 3 - -#define IPPROTO_IP 0 -#define IPPROTO_ICMP 1 -#define IPPROTO_TCP 6 -#define IPPROTO_UDP 17 -#define IPPROTO_IPV6 41 - -#define MSG_TRUNC 0x1 -#define MSG_CTRUNC 0x2 -#define MSG_PEEK 0x4 -#define MSG_OOB 0x8 -#define MSG_DONTWAIT 0x40 - -typedef uint16_t sa_family_t; - -struct cmsghdr { - socklen_t cmsg_len; - int cmsg_level; - int cmsg_type; -}; - -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 { - sa_family_t sa_family; - char sa_data[14]; -}; - -struct ucred { - pid_t pid; - uid_t uid; - gid_t gid; -}; - -struct linger { - int l_onoff; - int l_linger; -}; - -#define SOL_SOCKET 1 -#define SOMAXCONN 128 - -enum { - SO_RCVTIMEO, - SO_SNDTIMEO, - SO_TYPE, - SO_ERROR, - SO_PEERCRED, - SO_RCVBUF, - SO_SNDBUF, - SO_REUSEADDR, - SO_BINDTODEVICE, - SO_KEEPALIVE, - SO_TIMESTAMP, - SO_BROADCAST, - SO_LINGER, -}; -#define SO_RCVTIMEO SO_RCVTIMEO -#define SO_SNDTIMEO SO_SNDTIMEO -#define SO_TYPE SO_TYPE -#define SO_ERROR SO_ERROR -#define SO_PEERCRED SO_PEERCRED -#define SO_REUSEADDR SO_REUSEADDR -#define SO_BINDTODEVICE SO_BINDTODEVICE -#define SO_KEEPALIVE SO_KEEPALIVE -#define SO_TIMESTAMP SO_TIMESTAMP -#define SO_BROADCAST SO_BROADCAST -#define SO_SNDBUF SO_SNDBUF -#define SO_RCVBUF SO_RCVBUF -#define SO_LINGER SO_LINGER - -enum { - SCM_TIMESTAMP, - SCM_RIGHTS, -}; -#define SCM_TIMESTAMP SCM_TIMESTAMP -#define SCM_RIGHTS SCM_RIGHTS - -struct sockaddr_storage { - sa_family_t ss_family; - union { - char data[sizeof(struct sockaddr_un)]; - void* alignment; - }; -}; - int socket(int domain, int type, int protocol); int bind(int sockfd, const struct sockaddr* addr, socklen_t); int listen(int sockfd, int backlog); diff --git a/Userland/Libraries/LibC/sys/un.h b/Userland/Libraries/LibC/sys/un.h index 6233a1791c..ac7e8d24b8 100644 --- a/Userland/Libraries/LibC/sys/un.h +++ b/Userland/Libraries/LibC/sys/un.h @@ -1,20 +1,9 @@ /* - * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2018-2021, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once -#include -#include - -__BEGIN_DECLS - -#define UNIX_PATH_MAX 108 -struct sockaddr_un { - uint16_t sun_family; - char sun_path[UNIX_PATH_MAX]; -}; - -__END_DECLS +#include