Przeglądaj źródła

Kernel+LibC: Share definitions for sys/socket.h and sys/un.h

Andreas Kling 4 lat temu
rodzic
commit
b92e6b02e5

+ 136 - 0
Kernel/API/POSIX/sys/socket.h

@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <Kernel/API/POSIX/sys/types.h>
+#include <Kernel/API/POSIX/sys/un.h>
+
+#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

+ 24 - 0
Kernel/API/POSIX/sys/un.h

@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <Kernel/API/POSIX/sys/types.h>
+
+#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

+ 2 - 80
Kernel/UnixTypes.h

@@ -10,7 +10,9 @@
 #include <AK/Types.h>
 #include <Kernel/API/POSIX/fcntl.h>
 #include <Kernel/API/POSIX/sys/mman.h>
+#include <Kernel/API/POSIX/sys/socket.h>
 #include <Kernel/API/POSIX/sys/stat.h>
+#include <Kernel/API/POSIX/sys/un.h>
 #include <Kernel/API/POSIX/termios.h>
 #include <Kernel/API/POSIX/time.h>
 
@@ -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;
 };

+ 1 - 121
Userland/Libraries/LibC/sys/socket.h

@@ -6,131 +6,11 @@
 
 #pragma once
 
-#include <bits/stdint.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
+#include <Kernel/API/POSIX/sys/socket.h>
 #include <sys/un.h>
 
 __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);

+ 2 - 13
Userland/Libraries/LibC/sys/un.h

@@ -1,20 +1,9 @@
 /*
- * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  *
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
 #pragma once
 
-#include <bits/stdint.h>
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
-
-#define UNIX_PATH_MAX 108
-struct sockaddr_un {
-    uint16_t sun_family;
-    char sun_path[UNIX_PATH_MAX];
-};
-
-__END_DECLS
+#include <Kernel/API/POSIX/sys/un.h>