Blame sysdeps/unix/sysv/linux/bits/socket.h

Packit Service 82fcde
/* System-specific socket constants and types.  Linux version.
Packit Service 82fcde
   Copyright (C) 1991-2018 Free Software Foundation, Inc.
Packit Service 82fcde
   This file is part of the GNU C Library.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is free software; you can redistribute it and/or
Packit Service 82fcde
   modify it under the terms of the GNU Lesser General Public
Packit Service 82fcde
   License as published by the Free Software Foundation; either
Packit Service 82fcde
   version 2.1 of the License, or (at your option) any later version.
Packit Service 82fcde
Packit Service 82fcde
   The GNU C Library is distributed in the hope that it will be useful,
Packit Service 82fcde
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 82fcde
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 82fcde
   Lesser General Public License for more details.
Packit Service 82fcde
Packit Service 82fcde
   You should have received a copy of the GNU Lesser General Public
Packit Service 82fcde
   License along with the GNU C Library; if not, see
Packit Service 82fcde
   <http://www.gnu.org/licenses/>.  */
Packit Service 82fcde
Packit Service 82fcde
#ifndef __BITS_SOCKET_H
Packit Service 82fcde
#define __BITS_SOCKET_H
Packit Service 82fcde
Packit Service 82fcde
#ifndef _SYS_SOCKET_H
Packit Service 82fcde
# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
#define __need_size_t
Packit Service 82fcde
#include <stddef.h>
Packit Service 82fcde
Packit Service 82fcde
#include <sys/types.h>
Packit Service 82fcde
Packit Service 82fcde
/* Type for length arguments in socket calls.  */
Packit Service 82fcde
#ifndef __socklen_t_defined
Packit Service 82fcde
typedef __socklen_t socklen_t;
Packit Service 82fcde
# define __socklen_t_defined
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Get the architecture-dependent definition of enum __socket_type.  */
Packit Service 82fcde
#include <bits/socket_type.h>
Packit Service 82fcde
Packit Service 82fcde
/* Protocol families.  */
Packit Service 82fcde
#define PF_UNSPEC	0	/* Unspecified.  */
Packit Service 82fcde
#define PF_LOCAL	1	/* Local to host (pipes and file-domain).  */
Packit Service 82fcde
#define PF_UNIX		PF_LOCAL /* POSIX name for PF_LOCAL.  */
Packit Service 82fcde
#define PF_FILE		PF_LOCAL /* Another non-standard name for PF_LOCAL.  */
Packit Service 82fcde
#define PF_INET		2	/* IP protocol family.  */
Packit Service 82fcde
#define PF_AX25		3	/* Amateur Radio AX.25.  */
Packit Service 82fcde
#define PF_IPX		4	/* Novell Internet Protocol.  */
Packit Service 82fcde
#define PF_APPLETALK	5	/* Appletalk DDP.  */
Packit Service 82fcde
#define PF_NETROM	6	/* Amateur radio NetROM.  */
Packit Service 82fcde
#define PF_BRIDGE	7	/* Multiprotocol bridge.  */
Packit Service 82fcde
#define PF_ATMPVC	8	/* ATM PVCs.  */
Packit Service 82fcde
#define PF_X25		9	/* Reserved for X.25 project.  */
Packit Service 82fcde
#define PF_INET6	10	/* IP version 6.  */
Packit Service 82fcde
#define PF_ROSE		11	/* Amateur Radio X.25 PLP.  */
Packit Service 82fcde
#define PF_DECnet	12	/* Reserved for DECnet project.  */
Packit Service 82fcde
#define PF_NETBEUI	13	/* Reserved for 802.2LLC project.  */
Packit Service 82fcde
#define PF_SECURITY	14	/* Security callback pseudo AF.  */
Packit Service 82fcde
#define PF_KEY		15	/* PF_KEY key management API.  */
Packit Service 82fcde
#define PF_NETLINK	16
Packit Service 82fcde
#define PF_ROUTE	PF_NETLINK /* Alias to emulate 4.4BSD.  */
Packit Service 82fcde
#define PF_PACKET	17	/* Packet family.  */
Packit Service 82fcde
#define PF_ASH		18	/* Ash.  */
Packit Service 82fcde
#define PF_ECONET	19	/* Acorn Econet.  */
Packit Service 82fcde
#define PF_ATMSVC	20	/* ATM SVCs.  */
Packit Service 82fcde
#define PF_RDS		21	/* RDS sockets.  */
Packit Service 82fcde
#define PF_SNA		22	/* Linux SNA Project */
Packit Service 82fcde
#define PF_IRDA		23	/* IRDA sockets.  */
Packit Service 82fcde
#define PF_PPPOX	24	/* PPPoX sockets.  */
Packit Service 82fcde
#define PF_WANPIPE	25	/* Wanpipe API sockets.  */
Packit Service 82fcde
#define PF_LLC		26	/* Linux LLC.  */
Packit Service 82fcde
#define PF_IB		27	/* Native InfiniBand address.  */
Packit Service 82fcde
#define PF_MPLS		28	/* MPLS.  */
Packit Service 82fcde
#define PF_CAN		29	/* Controller Area Network.  */
Packit Service 82fcde
#define PF_TIPC		30	/* TIPC sockets.  */
Packit Service 82fcde
#define PF_BLUETOOTH	31	/* Bluetooth sockets.  */
Packit Service 82fcde
#define PF_IUCV		32	/* IUCV sockets.  */
Packit Service 82fcde
#define PF_RXRPC	33	/* RxRPC sockets.  */
Packit Service 82fcde
#define PF_ISDN		34	/* mISDN sockets.  */
Packit Service 82fcde
#define PF_PHONET	35	/* Phonet sockets.  */
Packit Service 82fcde
#define PF_IEEE802154	36	/* IEEE 802.15.4 sockets.  */
Packit Service 82fcde
#define PF_CAIF		37	/* CAIF sockets.  */
Packit Service 82fcde
#define PF_ALG		38	/* Algorithm sockets.  */
Packit Service 82fcde
#define PF_NFC		39	/* NFC sockets.  */
Packit Service 82fcde
#define PF_VSOCK	40	/* vSockets.  */
Packit Service 82fcde
#define PF_KCM		41	/* Kernel Connection Multiplexor.  */
Packit Service 82fcde
#define PF_QIPCRTR	42	/* Qualcomm IPC Router.  */
Packit Service 82fcde
#define PF_SMC		43	/* SMC sockets.  */
Packit Service 35d175
#define PF_XDP		44	/* XDP sockets.  */
Packit Service 35d175
#define PF_MAX		45	/* For now..  */
Packit Service 82fcde
Packit Service 82fcde
/* Address families.  */
Packit Service 82fcde
#define AF_UNSPEC	PF_UNSPEC
Packit Service 82fcde
#define AF_LOCAL	PF_LOCAL
Packit Service 82fcde
#define AF_UNIX		PF_UNIX
Packit Service 82fcde
#define AF_FILE		PF_FILE
Packit Service 82fcde
#define AF_INET		PF_INET
Packit Service 82fcde
#define AF_AX25		PF_AX25
Packit Service 82fcde
#define AF_IPX		PF_IPX
Packit Service 82fcde
#define AF_APPLETALK	PF_APPLETALK
Packit Service 82fcde
#define AF_NETROM	PF_NETROM
Packit Service 82fcde
#define AF_BRIDGE	PF_BRIDGE
Packit Service 82fcde
#define AF_ATMPVC	PF_ATMPVC
Packit Service 82fcde
#define AF_X25		PF_X25
Packit Service 82fcde
#define AF_INET6	PF_INET6
Packit Service 82fcde
#define AF_ROSE		PF_ROSE
Packit Service 82fcde
#define AF_DECnet	PF_DECnet
Packit Service 82fcde
#define AF_NETBEUI	PF_NETBEUI
Packit Service 82fcde
#define AF_SECURITY	PF_SECURITY
Packit Service 82fcde
#define AF_KEY		PF_KEY
Packit Service 82fcde
#define AF_NETLINK	PF_NETLINK
Packit Service 82fcde
#define AF_ROUTE	PF_ROUTE
Packit Service 82fcde
#define AF_PACKET	PF_PACKET
Packit Service 82fcde
#define AF_ASH		PF_ASH
Packit Service 82fcde
#define AF_ECONET	PF_ECONET
Packit Service 82fcde
#define AF_ATMSVC	PF_ATMSVC
Packit Service 82fcde
#define AF_RDS		PF_RDS
Packit Service 82fcde
#define AF_SNA		PF_SNA
Packit Service 82fcde
#define AF_IRDA		PF_IRDA
Packit Service 82fcde
#define AF_PPPOX	PF_PPPOX
Packit Service 82fcde
#define AF_WANPIPE	PF_WANPIPE
Packit Service 82fcde
#define AF_LLC		PF_LLC
Packit Service 82fcde
#define AF_IB		PF_IB
Packit Service 82fcde
#define AF_MPLS		PF_MPLS
Packit Service 82fcde
#define AF_CAN		PF_CAN
Packit Service 82fcde
#define AF_TIPC		PF_TIPC
Packit Service 82fcde
#define AF_BLUETOOTH	PF_BLUETOOTH
Packit Service 82fcde
#define AF_IUCV		PF_IUCV
Packit Service 82fcde
#define AF_RXRPC	PF_RXRPC
Packit Service 82fcde
#define AF_ISDN		PF_ISDN
Packit Service 82fcde
#define AF_PHONET	PF_PHONET
Packit Service 82fcde
#define AF_IEEE802154	PF_IEEE802154
Packit Service 82fcde
#define AF_CAIF		PF_CAIF
Packit Service 82fcde
#define AF_ALG		PF_ALG
Packit Service 82fcde
#define AF_NFC		PF_NFC
Packit Service 82fcde
#define AF_VSOCK	PF_VSOCK
Packit Service 82fcde
#define AF_KCM		PF_KCM
Packit Service 82fcde
#define AF_QIPCRTR	PF_QIPCRTR
Packit Service 82fcde
#define AF_SMC		PF_SMC
Packit Service 35d175
#define AF_XDP		PF_XDP
Packit Service 82fcde
#define AF_MAX		PF_MAX
Packit Service 82fcde
Packit Service 82fcde
/* Socket level values.  Others are defined in the appropriate headers.
Packit Service 82fcde
Packit Service 82fcde
   XXX These definitions also should go into the appropriate headers as
Packit Service 82fcde
   far as they are available.  */
Packit Service 82fcde
#define SOL_RAW		255
Packit Service 82fcde
#define SOL_DECNET      261
Packit Service 82fcde
#define SOL_X25         262
Packit Service 82fcde
#define SOL_PACKET	263
Packit Service 82fcde
#define SOL_ATM		264	/* ATM layer (cell level).  */
Packit Service 82fcde
#define SOL_AAL		265	/* ATM Adaption Layer (packet level).  */
Packit Service 82fcde
#define SOL_IRDA	266
Packit Service 82fcde
#define SOL_NETBEUI	267
Packit Service 82fcde
#define SOL_LLC		268
Packit Service 82fcde
#define SOL_DCCP	269
Packit Service 82fcde
#define SOL_NETLINK	270
Packit Service 82fcde
#define SOL_TIPC	271
Packit Service 82fcde
#define SOL_RXRPC	272
Packit Service 82fcde
#define SOL_PPPOL2TP	273
Packit Service 82fcde
#define SOL_BLUETOOTH	274
Packit Service 82fcde
#define SOL_PNPIPE	275
Packit Service 82fcde
#define SOL_RDS		276
Packit Service 82fcde
#define SOL_IUCV	277
Packit Service 82fcde
#define SOL_CAIF	278
Packit Service 82fcde
#define SOL_ALG		279
Packit Service 82fcde
#define SOL_NFC		280
Packit Service 82fcde
#define SOL_KCM		281
Packit Service 82fcde
#define SOL_TLS		282
Packit Service 35d175
#define SOL_XDP		283
Packit Service 82fcde
Packit Service 82fcde
/* Maximum queue length specifiable by listen.  */
Packit Service 82fcde
#define SOMAXCONN	128
Packit Service 82fcde
Packit Service 82fcde
/* Get the definition of the macro to define the common sockaddr members.  */
Packit Service 82fcde
#include <bits/sockaddr.h>
Packit Service 82fcde
Packit Service 82fcde
/* Structure describing a generic socket address.  */
Packit Service 82fcde
struct sockaddr
Packit Service 82fcde
  {
Packit Service 82fcde
    __SOCKADDR_COMMON (sa_);	/* Common data: address family and length.  */
Packit Service 82fcde
    char sa_data[14];		/* Address data.  */
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Structure large enough to hold any socket address (with the historical
Packit Service 82fcde
   exception of AF_UNIX).  */
Packit Service 82fcde
#define __ss_aligntype	unsigned long int
Packit Service 82fcde
#define _SS_PADSIZE \
Packit Service 82fcde
  (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
Packit Service 82fcde
Packit Service 82fcde
struct sockaddr_storage
Packit Service 82fcde
  {
Packit Service 82fcde
    __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */
Packit Service 82fcde
    char __ss_padding[_SS_PADSIZE];
Packit Service 82fcde
    __ss_aligntype __ss_align;	/* Force desired alignment.  */
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Bits in the FLAGS argument to `send', `recv', et al.  */
Packit Service 82fcde
enum
Packit Service 82fcde
  {
Packit Service 82fcde
    MSG_OOB		= 0x01,	/* Process out-of-band data.  */
Packit Service 82fcde
#define MSG_OOB		MSG_OOB
Packit Service 82fcde
    MSG_PEEK		= 0x02,	/* Peek at incoming messages.  */
Packit Service 82fcde
#define MSG_PEEK	MSG_PEEK
Packit Service 82fcde
    MSG_DONTROUTE	= 0x04,	/* Don't use local routing.  */
Packit Service 82fcde
#define MSG_DONTROUTE	MSG_DONTROUTE
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
    /* DECnet uses a different name.  */
Packit Service 82fcde
    MSG_TRYHARD		= MSG_DONTROUTE,
Packit Service 82fcde
# define MSG_TRYHARD	MSG_DONTROUTE
Packit Service 82fcde
#endif
Packit Service 82fcde
    MSG_CTRUNC		= 0x08,	/* Control data lost before delivery.  */
Packit Service 82fcde
#define MSG_CTRUNC	MSG_CTRUNC
Packit Service 82fcde
    MSG_PROXY		= 0x10,	/* Supply or ask second address.  */
Packit Service 82fcde
#define MSG_PROXY	MSG_PROXY
Packit Service 82fcde
    MSG_TRUNC		= 0x20,
Packit Service 82fcde
#define MSG_TRUNC	MSG_TRUNC
Packit Service 82fcde
    MSG_DONTWAIT	= 0x40, /* Nonblocking IO.  */
Packit Service 82fcde
#define MSG_DONTWAIT	MSG_DONTWAIT
Packit Service 82fcde
    MSG_EOR		= 0x80, /* End of record.  */
Packit Service 82fcde
#define MSG_EOR		MSG_EOR
Packit Service 82fcde
    MSG_WAITALL		= 0x100, /* Wait for a full request.  */
Packit Service 82fcde
#define MSG_WAITALL	MSG_WAITALL
Packit Service 82fcde
    MSG_FIN		= 0x200,
Packit Service 82fcde
#define MSG_FIN		MSG_FIN
Packit Service 82fcde
    MSG_SYN		= 0x400,
Packit Service 82fcde
#define MSG_SYN		MSG_SYN
Packit Service 82fcde
    MSG_CONFIRM		= 0x800, /* Confirm path validity.  */
Packit Service 82fcde
#define MSG_CONFIRM	MSG_CONFIRM
Packit Service 82fcde
    MSG_RST		= 0x1000,
Packit Service 82fcde
#define MSG_RST		MSG_RST
Packit Service 82fcde
    MSG_ERRQUEUE	= 0x2000, /* Fetch message from error queue.  */
Packit Service 82fcde
#define MSG_ERRQUEUE	MSG_ERRQUEUE
Packit Service 82fcde
    MSG_NOSIGNAL	= 0x4000, /* Do not generate SIGPIPE.  */
Packit Service 82fcde
#define MSG_NOSIGNAL	MSG_NOSIGNAL
Packit Service 82fcde
    MSG_MORE		= 0x8000,  /* Sender will send more.  */
Packit Service 82fcde
#define MSG_MORE	MSG_MORE
Packit Service 82fcde
    MSG_WAITFORONE	= 0x10000, /* Wait for at least one packet to return.*/
Packit Service 82fcde
#define MSG_WAITFORONE	MSG_WAITFORONE
Packit Service 82fcde
    MSG_BATCH		= 0x40000, /* sendmmsg: more messages coming.  */
Packit Service 82fcde
#define MSG_BATCH	MSG_BATCH
Packit Service 82fcde
    MSG_ZEROCOPY	= 0x4000000, /* Use user data in kernel path.  */
Packit Service 82fcde
#define MSG_ZEROCOPY	MSG_ZEROCOPY
Packit Service 82fcde
    MSG_FASTOPEN	= 0x20000000, /* Send data in TCP SYN.  */
Packit Service 82fcde
#define MSG_FASTOPEN	MSG_FASTOPEN
Packit Service 82fcde
Packit Service 82fcde
    MSG_CMSG_CLOEXEC	= 0x40000000	/* Set close_on_exit for file
Packit Service 82fcde
					   descriptor received through
Packit Service 82fcde
					   SCM_RIGHTS.  */
Packit Service 82fcde
#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
/* Structure describing messages sent by
Packit Service 82fcde
   `sendmsg' and received by `recvmsg'.  */
Packit Service 82fcde
struct msghdr
Packit Service 82fcde
  {
Packit Service 82fcde
    void *msg_name;		/* Address to send to/receive from.  */
Packit Service 82fcde
    socklen_t msg_namelen;	/* Length of address data.  */
Packit Service 82fcde
Packit Service 82fcde
    struct iovec *msg_iov;	/* Vector of data to send/receive into.  */
Packit Service 82fcde
    size_t msg_iovlen;		/* Number of elements in the vector.  */
Packit Service 82fcde
Packit Service 82fcde
    void *msg_control;		/* Ancillary data (eg BSD filedesc passing). */
Packit Service 82fcde
    size_t msg_controllen;	/* Ancillary data buffer length.
Packit Service 82fcde
				   !! The type should be socklen_t but the
Packit Service 82fcde
				   definition of the kernel is incompatible
Packit Service 82fcde
				   with this.  */
Packit Service 82fcde
Packit Service 82fcde
    int msg_flags;		/* Flags on received message.  */
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
/* Structure used for storage of ancillary data object information.  */
Packit Service 82fcde
struct cmsghdr
Packit Service 82fcde
  {
Packit Service 82fcde
    size_t cmsg_len;		/* Length of data in cmsg_data plus length
Packit Service 82fcde
				   of cmsghdr structure.
Packit Service 82fcde
				   !! The type should be socklen_t but the
Packit Service 82fcde
				   definition of the kernel is incompatible
Packit Service 82fcde
				   with this.  */
Packit Service 82fcde
    int cmsg_level;		/* Originating protocol.  */
Packit Service 82fcde
    int cmsg_type;		/* Protocol specific type.  */
Packit Service 82fcde
#if __glibc_c99_flexarr_available
Packit Service 82fcde
    __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */
Packit Service 82fcde
#endif
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
/* Ancillary data object manipulation macros.  */
Packit Service 82fcde
#if __glibc_c99_flexarr_available
Packit Service 82fcde
# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
Packit Service 82fcde
#else
Packit Service 82fcde
# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
Packit Service 82fcde
#endif
Packit Service 82fcde
#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
Packit Service 82fcde
#define CMSG_FIRSTHDR(mhdr) \
Packit Service 82fcde
  ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr)		      \
Packit Service 82fcde
   ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
Packit Service 82fcde
#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
Packit Service 82fcde
			 & (size_t) ~(sizeof (size_t) - 1))
Packit Service 82fcde
#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
Packit Service 82fcde
			 + CMSG_ALIGN (sizeof (struct cmsghdr)))
Packit Service 82fcde
#define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
Packit Service 82fcde
Packit Service 82fcde
extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
Packit Service 82fcde
				      struct cmsghdr *__cmsg) __THROW;
Packit Service 82fcde
#ifdef __USE_EXTERN_INLINES
Packit Service 82fcde
# ifndef _EXTERN_INLINE
Packit Service 82fcde
#  define _EXTERN_INLINE __extern_inline
Packit Service 82fcde
# endif
Packit Service 82fcde
_EXTERN_INLINE struct cmsghdr *
Packit Service 82fcde
__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
Packit Service 82fcde
{
Packit Service 82fcde
  if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
Packit Service 82fcde
    /* The kernel header does this so there may be a reason.  */
Packit Service 82fcde
    return (struct cmsghdr *) 0;
Packit Service 82fcde
Packit Service 82fcde
  __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
Packit Service 82fcde
			       + CMSG_ALIGN (__cmsg->cmsg_len));
Packit Service 82fcde
  if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
Packit Service 82fcde
					+ __mhdr->msg_controllen)
Packit Service 82fcde
      || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
Packit Service 82fcde
	  > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
Packit Service 82fcde
    /* No more entries.  */
Packit Service 82fcde
    return (struct cmsghdr *) 0;
Packit Service 82fcde
  return __cmsg;
Packit Service 82fcde
}
Packit Service 82fcde
#endif	/* Use `extern inline'.  */
Packit Service 82fcde
Packit Service 82fcde
/* Socket level message types.  This must match the definitions in
Packit Service 82fcde
   <linux/socket.h>.  */
Packit Service 82fcde
enum
Packit Service 82fcde
  {
Packit Service 82fcde
    SCM_RIGHTS = 0x01		/* Transfer file descriptors.  */
Packit Service 82fcde
#define SCM_RIGHTS SCM_RIGHTS
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
    , SCM_CREDENTIALS = 0x02	/* Credentials passing.  */
Packit Service 82fcde
# define SCM_CREDENTIALS SCM_CREDENTIALS
Packit Service 82fcde
#endif
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
#ifdef __USE_GNU
Packit Service 82fcde
/* User visible structure for SCM_CREDENTIALS message */
Packit Service 82fcde
struct ucred
Packit Service 82fcde
{
Packit Service 82fcde
  pid_t pid;			/* PID of sending process.  */
Packit Service 82fcde
  uid_t uid;			/* UID of sending process.  */
Packit Service 82fcde
  gid_t gid;			/* GID of sending process.  */
Packit Service 82fcde
};
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Ugly workaround for unclean kernel headers.  */
Packit Service 82fcde
#ifndef __USE_MISC
Packit Service 82fcde
# ifndef FIOGETOWN
Packit Service 82fcde
#  define __SYS_SOCKET_H_undef_FIOGETOWN
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifndef FIOSETOWN
Packit Service 82fcde
#  define __SYS_SOCKET_H_undef_FIOSETOWN
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifndef SIOCATMARK
Packit Service 82fcde
#  define __SYS_SOCKET_H_undef_SIOCATMARK
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifndef SIOCGPGRP
Packit Service 82fcde
#  define __SYS_SOCKET_H_undef_SIOCGPGRP
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifndef SIOCGSTAMP
Packit Service 82fcde
#  define __SYS_SOCKET_H_undef_SIOCGSTAMP
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifndef SIOCGSTAMPNS
Packit Service 82fcde
#  define __SYS_SOCKET_H_undef_SIOCGSTAMPNS
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifndef SIOCSPGRP
Packit Service 82fcde
#  define __SYS_SOCKET_H_undef_SIOCSPGRP
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef IOCSIZE_MASK
Packit Service 82fcde
# define __SYS_SOCKET_H_undef_IOCSIZE_MASK
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef IOCSIZE_SHIFT
Packit Service 82fcde
# define __SYS_SOCKET_H_undef_IOCSIZE_SHIFT
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef IOC_IN
Packit Service 82fcde
# define __SYS_SOCKET_H_undef_IOC_IN
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef IOC_INOUT
Packit Service 82fcde
# define __SYS_SOCKET_H_undef_IOC_INOUT
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifndef IOC_OUT
Packit Service 82fcde
# define __SYS_SOCKET_H_undef_IOC_OUT
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Get socket manipulation related informations from kernel headers.  */
Packit Service 82fcde
#include <asm/socket.h>
Packit Service 82fcde
Packit Service 82fcde
#ifndef __USE_MISC
Packit Service 82fcde
# ifdef __SYS_SOCKET_H_undef_FIOGETOWN
Packit Service 82fcde
#  undef __SYS_SOCKET_H_undef_FIOGETOWN
Packit Service 82fcde
#  undef FIOGETOWN
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __SYS_SOCKET_H_undef_FIOSETOWN
Packit Service 82fcde
#  undef __SYS_SOCKET_H_undef_FIOSETOWN
Packit Service 82fcde
#  undef FIOSETOWN
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __SYS_SOCKET_H_undef_SIOCATMARK
Packit Service 82fcde
#  undef __SYS_SOCKET_H_undef_SIOCATMARK
Packit Service 82fcde
#  undef SIOCATMARK
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __SYS_SOCKET_H_undef_SIOCGPGRP
Packit Service 82fcde
#  undef __SYS_SOCKET_H_undef_SIOCGPGRP
Packit Service 82fcde
#  undef SIOCGPGRP
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMP
Packit Service 82fcde
#  undef __SYS_SOCKET_H_undef_SIOCGSTAMP
Packit Service 82fcde
#  undef SIOCGSTAMP
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
Packit Service 82fcde
#  undef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
Packit Service 82fcde
#  undef SIOCGSTAMPNS
Packit Service 82fcde
# endif
Packit Service 82fcde
# ifdef __SYS_SOCKET_H_undef_SIOCSPGRP
Packit Service 82fcde
#  undef __SYS_SOCKET_H_undef_SIOCSPGRP
Packit Service 82fcde
#  undef SIOCSPGRP
Packit Service 82fcde
# endif
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __SYS_SOCKET_H_undef_IOCSIZE_MASK
Packit Service 82fcde
# undef __SYS_SOCKET_H_undef_IOCSIZE_MASK
Packit Service 82fcde
# undef IOCSIZE_MASK
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __SYS_SOCKET_H_undef_IOCSIZE_SHIFT
Packit Service 82fcde
# undef __SYS_SOCKET_H_undef_IOCSIZE_SHIFT
Packit Service 82fcde
# undef IOCSIZE_SHIFT
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __SYS_SOCKET_H_undef_IOC_IN
Packit Service 82fcde
# undef __SYS_SOCKET_H_undef_IOC_IN
Packit Service 82fcde
# undef IOC_IN
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __SYS_SOCKET_H_undef_IOC_INOUT
Packit Service 82fcde
# undef __SYS_SOCKET_H_undef_IOC_INOUT
Packit Service 82fcde
# undef IOC_INOUT
Packit Service 82fcde
#endif
Packit Service 82fcde
#ifdef __SYS_SOCKET_H_undef_IOC_OUT
Packit Service 82fcde
# undef __SYS_SOCKET_H_undef_IOC_OUT
Packit Service 82fcde
# undef IOC_OUT
Packit Service 82fcde
#endif
Packit Service 82fcde
Packit Service 82fcde
/* Structure used to manipulate the SO_LINGER option.  */
Packit Service 82fcde
struct linger
Packit Service 82fcde
  {
Packit Service 82fcde
    int l_onoff;		/* Nonzero to linger on close.  */
Packit Service 82fcde
    int l_linger;		/* Time to linger.  */
Packit Service 82fcde
  };
Packit Service 82fcde
Packit Service 82fcde
#endif	/* bits/socket.h */