* sysdeps/unix/bsd/bsd4.4/Makefile: New file.
authorkettenis <kettenis>
Wed, 22 Aug 2001 22:29:38 +0000 (22:29 +0000)
committerkettenis <kettenis>
Wed, 22 Aug 2001 22:29:38 +0000 (22:29 +0000)
* sysdeps/unix/bsd/bsd4.4/Versions: New file.
* sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c: New file.
* sysdeps/unix/bsd/bsd4.4/bits/socket.h (__cmsg_nxthdr): Correct
test for cmsg struct size.

ChangeLog
sysdeps/unix/bsd/bsd4.4/Makefile [new file with mode: 0644]
sysdeps/unix/bsd/bsd4.4/Versions [new file with mode: 0644]
sysdeps/unix/bsd/bsd4.4/bits/socket.h
sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c [new file with mode: 0644]

index c3b7232..87b44ec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-08-01  Mark Kettenis  <kettenis@gnu.org>
+
+       * sysdeps/unix/bsd/bsd4.4/Makefile: New file.
+       * sysdeps/unix/bsd/bsd4.4/Versions: New file.
+       * sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c: New file.
+       * sysdeps/unix/bsd/bsd4.4/bits/socket.h (__cmsg_nxthdr): Correct
+       test for cmsg struct size.
+
 2001-04-23  Paul Eggert  <eggert@twinsun.com>
 
         * posix/getopt.h (getopt_long, getopt_long_only, _getopt_internal):
diff --git a/sysdeps/unix/bsd/bsd4.4/Makefile b/sysdeps/unix/bsd/bsd4.4/Makefile
new file mode 100644 (file)
index 0000000..208fd24
--- /dev/null
@@ -0,0 +1,3 @@
+ifeq ($(subdir),socket)
+sysdep_routines += cmsg_nxthdr
+endif
diff --git a/sysdeps/unix/bsd/bsd4.4/Versions b/sysdeps/unix/bsd/bsd4.4/Versions
new file mode 100644 (file)
index 0000000..99b386b
--- /dev/null
@@ -0,0 +1,6 @@
+libc {
+  GLIBC_2.2.5 {
+    # functions used in inline functions or macros
+    __cmsg_nxthdr;
+  }
+}
index dbd0f1e..ef2a5bf 100644 (file)
@@ -237,8 +237,8 @@ __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
 
   __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
                               + CMSG_ALIGN (__cmsg->cmsg_len));
-  if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
-                                        + __mhdr->msg_controllen)
+  if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
+                                       + __mhdr->msg_controllen)
       || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
          > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
     /* No more entries.  */
@@ -250,8 +250,12 @@ __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
 /* Socket level message types.  */
 enum
   {
-    SCM_RIGHTS = 0x01          /* Access rights.  */
+    SCM_RIGHTS = 0x01,         /* Access rights (array of int).  */
 #define SCM_RIGHTS SCM_RIGHTS
+    SCM_TIMESTAMP = 0x02,      /* Timestamp (struct timeval).  */
+#define SCM_TIMESTAMP SCM_TIMESTAMP
+    SCM_CREDS = 0x03           /* Process creds (strcm cmsgcred).  */
+#define SCM_CREDS SCM_CREDS
   };
 
 
diff --git a/sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c b/sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c
new file mode 100644 (file)
index 0000000..1a542fa
--- /dev/null
@@ -0,0 +1,2 @@
+/* The Linux version is perfectly usable on 4.4 BSD.  */
+#include <sysdeps/unix/sysv/linux/cmsg_nxthdr.c>