summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/socketbits.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-02-02 01:50:11 +0000
committerUlrich Drepper <drepper@redhat.com>1997-02-02 01:50:11 +0000
commitc0e4567461c09ba47ddbc20e6b0ab09bdb0237ab (patch)
tree98b750550281f12a6b1d8573c5038a4c9d44abc6 /sysdeps/unix/sysv/linux/socketbits.h
parent19361cb768c280e47f2ca69ed63e1d75f332e592 (diff)
update from main archive 970201cvs/libc-970202
1997-02-02 00:39 Ulrich Drepper <drepper@cygnus.com> * dirent/dirent.h: Add description _DIRENT_HAVE_D_TYPE. 1997-02-01 17:04 Philip Blundell <pjb27@cam.ac.uk> * inet/netinet/ip.h (MAX_IPOPTLEN): Add definition. 1997-02-01 17:00 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/socketbits.h: Add definition of cmsghdr structure plus related macros. * sysdeps/unix/sysv/linux/cmsg_nxthdr.c: New file. * sysdeps/unix/sysv/linux/Makefile [$(subdir)=socket] (sysdep_routines): Add cmsg_nxthdr. * sysdeps/unix/sysv/linux/Dist: Add cmsg_nxthdr.c. Suggested by Philip Blundell <pjb27@cam.ac.uk>. 1997-02-01 12:34 Ulrich Drepper <drepper@cygnus.com> * time/strftime.c: Define _strftime_copytm without protecting arguments which breaks the definition. 1997-02-01 03:31 Thorsten Kukuk <kukuk@weber.uni-paderborn.de> * nis/rpcsvc/yp_prot.h: Move definition of yppushresp_xfr after definition of type for element. 1997-02-01 03:28 Philip Blundell <pjb27@cam.ac.uk> * sydsdeps/unix/sysv/linux/netinet/in.h: Add IPv6 related IPPROTO_* constants. 1997-02-01 03:09 H.J. Lu <hjl@lucon.org> * Makefile: Pass PARALLELMFLAGS to sub-makes. * Makefile.in: Mention PARALLELMFLAGS and pass to main Makefile. 1997-01-31 Paul Eggert <eggert@twinsun.com> * time/mktime.c (HAVE_LIMITS_H, HAVE_LOCALTIME_R, STDC_HEADERS): Define if _LIBC is defined. <limits.h>: Include if HAVE_LIMITS_H instead of if __STDC__ || __GNU_LIBRARY__ || STDC_HEADERS. <stdlib.h>: Similarly, include if STDC_HEADERS. (localtime_r): Redo #ifdef to make it clear that glibc has localtime_r now. 1997-02-29 20:08 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sunrpc/Makefile ($(objpfx)rpcsvc/%.h, $(objpfx)x%.c): Use stamp file to avoid unnecessary recompilation. 1997-01-29 19:33 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile: Set install-others, not install_others. (before-compile): Use += to preserve previous value. ($(inst_includedir)/gnu/lib-names.h): Remove obsolete comment and fix dependency name. ($(objpfx)lib-names.h): Remove rule. * Makeconfig ($(common-objpfx)gnu/lib-names.h): Generate it here, with correct name, using an intermediate stamp file. (common-generated): Add gnu/lib-names.h. (before-compile): Add $(common-objpfx)gnu/lib-names.h. 1997-01-30 18:29 Richard Henderson <richard@atheist.tamu.edu> * malloc/malloc.c (MAGICBYTE): Use cast to size_t instead of unsigned to prevent warnings on 64 bit systems. Reported by Paul Wouters <paul@xtdnet.nl>. * sysdeps/alpha/dl-machine.h: Revert check for broken gas. By default we assume it works.
Diffstat (limited to 'sysdeps/unix/sysv/linux/socketbits.h')
-rw-r--r--sysdeps/unix/sysv/linux/socketbits.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/socketbits.h b/sysdeps/unix/sysv/linux/socketbits.h
index 1cf44b4347..91deb6c815 100644
--- a/sysdeps/unix/sysv/linux/socketbits.h
+++ b/sysdeps/unix/sysv/linux/socketbits.h
@@ -126,6 +126,47 @@ struct msghdr
int msg_flags; /* Flags on received message. */
};
+/* Structure used for storage of ancillary data object information. */
+struct cmsghdr
+ {
+ int cmsg_len; /* Length of data in cmsg_data plus length
+ of cmsghdr structure. */
+ /* XXX Should be type `size_t' according to POSIX.1g. */
+ int cmsg_level; /* Originating protocol. */
+ int cmsg_type; /* Protocol specific type. */
+ unsigned char __cmsg_data[0]; /* Ancillary data. */
+ };
+
+/* Ancillary data object manipulation macros. */
+#define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
+#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
+#define CMSG_FIRSTHDR(mhdr) (mhdr) \
+ ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
+ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
+
+
+#ifndef _EXTERN_INLINE
+# define _EXTERN_INLINE extern __inline
+#endif
+extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr,
+ struct cmsghdr *__cmsg));
+_EXTERN_INLINE struct cmsghdr *
+__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)
+{
+ unsigned char *__p;
+
+ if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
+ /* The kernel header does this so there may be a reason. */
+ return NULL;
+
+ __p = (((unsigned char *) __cmsg)
+ + ((__cmsg->cmsg_len + sizeof (long int) - 1) & ~sizeof (long int)));
+ if (__p >= (unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)
+ /* No more entries. */
+ return NULL;
+ return (struct cmsghdr *) __p;
+}
+
/* Get socket manipulation related informations from kernel headers. */
#include <asm/socket.h>