move msghdr and cmsghdr out of bits/socket.h
authorRich Felker <dalias@aerifal.cx>
Fri, 1 Nov 2019 03:09:48 +0000 (23:09 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 2 Nov 2019 22:30:56 +0000 (18:30 -0400)
these structures can now be defined generically in terms of endianness
and long size. previously, the 32-bit archs all shared a common
definition from the generic bits header, and each 64-bit arch had to
repeat the 64-bit version, with endian conditionals if the arch had
variants of each endianness.

I would prefer getting rid of the preprocessor conditionals for
padding and instead using unnamed bitfield members, like commit
9b2921bea1d5017832e1b45d1fd64220047a9802 did for struct timespec.
however, at present sendmsg, recvmsg, and recvmmsg need access to the
padding members by name to zero them. this could perhaps be cleaned up
in the future.

arch/aarch64/bits/socket.h [deleted file]
arch/generic/bits/socket.h
arch/mips/bits/socket.h
arch/mips64/bits/socket.h
arch/mipsn32/bits/socket.h
arch/powerpc/bits/socket.h
arch/powerpc64/bits/socket.h
arch/riscv64/bits/socket.h [deleted file]
arch/s390x/bits/socket.h [deleted file]
arch/x86_64/bits/socket.h [deleted file]
include/sys/socket.h

diff --git a/arch/aarch64/bits/socket.h b/arch/aarch64/bits/socket.h
deleted file mode 100644 (file)
index 55337c8..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-struct msghdr {
-       void *msg_name;
-       socklen_t msg_namelen;
-       struct iovec *msg_iov;
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad1, msg_iovlen;
-#else
-       int msg_iovlen, __pad1;
-#endif
-       void *msg_control;
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad2;
-       socklen_t msg_controllen;
-#else
-       socklen_t msg_controllen;
-       int __pad2;
-#endif
-       int msg_flags;
-};
-
-struct cmsghdr {
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad1;
-       socklen_t cmsg_len;
-#else
-       socklen_t cmsg_len;
-       int __pad1;
-#endif
-       int cmsg_level;
-       int cmsg_type;
-};
index 1f73b995c68a61e5c1a291cb7dc4f98ea8ae9885..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,15 +0,0 @@
-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 cmsghdr {
-       socklen_t cmsg_len;
-       int cmsg_level;
-       int cmsg_type;
-};
index b82c7d341f0f880bc800414100a7db60dd44f994..92551b9f9faff14d02353e31d9af8050fca77330 100644 (file)
@@ -1,19 +1,3 @@
-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 cmsghdr {
-       socklen_t cmsg_len;
-       int cmsg_level;
-       int cmsg_type;
-};
-
 #define SOCK_STREAM    2
 #define SOCK_DGRAM     1
 
index aafb209c2c1080e57081080055d4aa02610695dc..519b9c8ead4f6ffd23868d7c2a9a9575c91d3425 100644 (file)
@@ -1,35 +1,3 @@
-struct msghdr {
-       void *msg_name;
-       socklen_t msg_namelen;
-       struct iovec *msg_iov;
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad1, msg_iovlen;
-#else
-       int msg_iovlen, __pad1;
-#endif
-       void *msg_control;
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad2;
-       socklen_t msg_controllen;
-#else
-       socklen_t msg_controllen;
-       int __pad2;
-#endif
-       int msg_flags;
-};
-
-struct cmsghdr {
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad1;
-       socklen_t cmsg_len;
-#else
-       socklen_t cmsg_len;
-       int __pad1;
-#endif
-       int cmsg_level;
-       int cmsg_type;
-};
-
 #define SOCK_STREAM    2
 #define SOCK_DGRAM     1
 #define SOL_SOCKET     65535
index b82c7d341f0f880bc800414100a7db60dd44f994..92551b9f9faff14d02353e31d9af8050fca77330 100644 (file)
@@ -1,19 +1,3 @@
-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 cmsghdr {
-       socklen_t cmsg_len;
-       int cmsg_level;
-       int cmsg_type;
-};
-
 #define SOCK_STREAM    2
 #define SOCK_DGRAM     1
 
index a94b8bdb8c5ebbb84ffa49c9f5f180db989b03c6..557e324fde9d7eb5415943c33b3cda7912f739f3 100644 (file)
@@ -1,19 +1,3 @@
-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 cmsghdr {
-       socklen_t cmsg_len;
-       int cmsg_level;
-       int cmsg_type;
-};
-
 #define SO_DEBUG        1
 #define SO_REUSEADDR    2
 #define SO_TYPE         3
index dae4730222e9e22c130df9e8e8aa9e7d7cd28ecd..557e324fde9d7eb5415943c33b3cda7912f739f3 100644 (file)
@@ -1,35 +1,3 @@
-struct msghdr {
-       void *msg_name;
-       socklen_t msg_namelen;
-       struct iovec *msg_iov;
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad1, msg_iovlen;
-#else
-       int msg_iovlen, __pad1;
-#endif
-       void *msg_control;
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad2;
-       socklen_t msg_controllen;
-#else
-       socklen_t msg_controllen;
-       int __pad2;
-#endif
-       int msg_flags;
-};
-
-struct cmsghdr {
-#if __BYTE_ORDER == __BIG_ENDIAN
-       int __pad1;
-       socklen_t cmsg_len;
-#else
-       socklen_t cmsg_len;
-       int __pad1;
-#endif
-       int cmsg_level;
-       int cmsg_type;
-};
-
 #define SO_DEBUG        1
 #define SO_REUSEADDR    2
 #define SO_TYPE         3
diff --git a/arch/riscv64/bits/socket.h b/arch/riscv64/bits/socket.h
deleted file mode 100644 (file)
index e2fd64c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-struct msghdr {
-       void *msg_name;
-       socklen_t msg_namelen;
-       struct iovec *msg_iov;
-       int msg_iovlen, __pad1;
-       void *msg_control;
-       socklen_t msg_controllen;
-       int __pad2;
-       int msg_flags;
-};
-
-struct cmsghdr {
-       socklen_t cmsg_len;
-       int __pad1;
-       int cmsg_level;
-       int cmsg_type;
-};
diff --git a/arch/s390x/bits/socket.h b/arch/s390x/bits/socket.h
deleted file mode 100644 (file)
index bd4b20c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-struct msghdr {
-       void *msg_name;
-       socklen_t msg_namelen;
-       struct iovec *msg_iov;
-       int __pad1, msg_iovlen;
-       void *msg_control;
-       int __pad2;
-       socklen_t msg_controllen;
-       int msg_flags;
-};
-
-struct cmsghdr {
-       int __pad1;
-       socklen_t cmsg_len;
-       int cmsg_level;
-       int cmsg_type;
-};
diff --git a/arch/x86_64/bits/socket.h b/arch/x86_64/bits/socket.h
deleted file mode 100644 (file)
index a4c89f3..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-struct msghdr {
-       void *msg_name;
-       socklen_t msg_namelen;
-       struct iovec *msg_iov;
-       int msg_iovlen, __pad1;
-       void *msg_control;
-       socklen_t msg_controllen, __pad2;
-       int msg_flags;
-};
-
-struct cmsghdr {
-       socklen_t cmsg_len;
-       int __pad1;
-       int cmsg_level;
-       int cmsg_type;
-};
index 6be699d932f8b948a7fb1653b373bf8ec2476395..4ea7be1edc5a0253ffcf88d64123b11f6c7ed5bf 100644 (file)
@@ -19,6 +19,40 @@ extern "C" {
 
 #include <bits/socket.h>
 
+struct msghdr {
+       void *msg_name;
+       socklen_t msg_namelen;
+       struct iovec *msg_iov;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+       int __pad1;
+#endif
+       int msg_iovlen;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+       int __pad1;
+#endif
+       void *msg_control;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+       int __pad2;
+#endif
+       socklen_t msg_controllen;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+       int __pad2;
+#endif
+       int msg_flags;
+};
+
+struct cmsghdr {
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __BIG_ENDIAN
+       int __pad1;
+#endif
+       socklen_t cmsg_len;
+#if __LONG_MAX > 0x7fffffff && __BYTE_ORDER == __LITTLE_ENDIAN
+       int __pad1;
+#endif
+       int cmsg_level;
+       int cmsg_type;
+};
+
 #ifdef _GNU_SOURCE
 struct ucred {
        pid_t pid;