Update header files to support UNIX Domain Sockets. Contributed by Thomas Cort
This commit is contained in:
@@ -10,6 +10,8 @@ sys/socket.h
|
||||
*/
|
||||
#include <stdint.h>
|
||||
|
||||
#include <sys/ucred.h>
|
||||
|
||||
/* Open Group Base Specifications Issue 6 (not complete) */
|
||||
#include <net/gen/socket.h>
|
||||
|
||||
@@ -26,6 +28,9 @@ sys/socket.h
|
||||
#define SO_KEEPALIVE 0x0008
|
||||
#define SO_TYPE 0x0010 /* get socket type, SOCK_STREAM or SOCK_DGRAM */
|
||||
|
||||
#define SO_PASSCRED 0x0012
|
||||
#define SO_PEERCRED 0x0014
|
||||
|
||||
#define SO_SNDBUF 0x1001 /* send buffer size */
|
||||
#define SO_RCVBUF 0x1002 /* receive buffer size */
|
||||
#define SO_ERROR 0x1007 /* get and clear error status */
|
||||
@@ -48,6 +53,51 @@ struct sockaddr
|
||||
char sa_data[8]; /* Big enough for sockaddr_in */
|
||||
};
|
||||
|
||||
struct msghdr
|
||||
{
|
||||
void *msg_name;
|
||||
socklen_t msg_namelen;
|
||||
struct iovec *msg_iov;
|
||||
size_t 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 CMSG_FIRSTHDR(mhdr) \
|
||||
( (mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
|
||||
(struct cmsghdr *)(mhdr)->msg_control : \
|
||||
(struct cmsghdr *)NULL )
|
||||
|
||||
#define CMSG_ALIGN(len) \
|
||||
( (len % sizeof(long) == 0) ? \
|
||||
len : \
|
||||
len + sizeof(long) - (len % sizeof(long)) )
|
||||
|
||||
#define CMSG_NXTHDR(mhdr, cmsg) \
|
||||
( ((cmsg) == NULL) ? CMSG_FIRSTHDR(mhdr) : \
|
||||
(((unsigned char *)(cmsg) + CMSG_ALIGN((cmsg)->cmsg_len) \
|
||||
+ CMSG_ALIGN(sizeof(struct cmsghdr)) > \
|
||||
(unsigned char *)((mhdr)->msg_control) + \
|
||||
(mhdr)->msg_controllen) ? \
|
||||
(struct cmsghdr *)NULL : \
|
||||
(struct cmsghdr *)((unsigned char *)(cmsg) + \
|
||||
CMSG_ALIGN((cmsg)->cmsg_len))) )
|
||||
|
||||
#define CMSG_DATA(cmsg) \
|
||||
( (unsigned char *)(cmsg) + CMSG_ALIGN(sizeof(struct cmsghdr)) )
|
||||
|
||||
#define SCM_RIGHTS 0x01
|
||||
#define SCM_CREDENTIALS 0x02
|
||||
#define SCM_SECURITY 0x04
|
||||
|
||||
_PROTOTYPE( int accept, (int _socket,
|
||||
struct sockaddr *_RESTRICT _address,
|
||||
socklen_t *_RESTRICT _address_len) );
|
||||
@@ -58,6 +108,7 @@ _PROTOTYPE( int connect, (int _socket, const struct sockaddr *_address,
|
||||
_PROTOTYPE( int getpeername, (int _socket,
|
||||
struct sockaddr *_RESTRICT _address,
|
||||
socklen_t *_RESTRICT _address_len) );
|
||||
_PROTOTYPE( int getpeereid, (int _socket, uid_t *_euid, gid_t *_egid) );
|
||||
_PROTOTYPE( int getsockname, (int _socket,
|
||||
struct sockaddr *_RESTRICT _address,
|
||||
socklen_t *_RESTRICT _address_len) );
|
||||
@@ -71,13 +122,19 @@ _PROTOTYPE( ssize_t recv, (int _socket, void *_buffer, size_t _length,
|
||||
_PROTOTYPE( ssize_t recvfrom, (int _socket, void *_RESTRICT _buffer,
|
||||
size_t _length, int _flags, struct sockaddr *_RESTRICT _address,
|
||||
socklen_t *_RESTRICT _address_len) );
|
||||
_PROTOTYPE( ssize_t recvmsg, (int _socket, struct msghdr *_msg,
|
||||
int _flags) );
|
||||
_PROTOTYPE( ssize_t send, (int _socket, const void *_buffer,
|
||||
size_t _length, int _flags) );
|
||||
_PROTOTYPE( ssize_t sendmsg, (int _socket, const struct msghdr *_msg,
|
||||
int _flags) );
|
||||
_PROTOTYPE( ssize_t sendto, (int _socket, const void *_message,
|
||||
size_t _length, int _flags, const struct sockaddr *_dest_addr,
|
||||
socklen_t _dest_len) );
|
||||
_PROTOTYPE( int shutdown, (int _socket, int _how) );
|
||||
_PROTOTYPE( int socket, (int _domain, int _type, int _protocol) );
|
||||
_PROTOTYPE( int socketpair, (int _domain, int _type, int _protocol,
|
||||
int _sv[2]) );
|
||||
|
||||
/* The following constants are often used in applications, but are not defined
|
||||
* by POSIX.
|
||||
@@ -85,6 +142,8 @@ _PROTOTYPE( int socket, (int _domain, int _type, int _protocol) );
|
||||
#define PF_INET AF_INET
|
||||
#define PF_INET6 AF_INET6
|
||||
#define PF_UNIX AF_UNIX
|
||||
#define PF_LOCAL PF_UNIX
|
||||
#define PF_FILE PF_UNIX
|
||||
#define PF_UNSPEC AF_UNSPEC
|
||||
|
||||
/* based on http://tools.ietf.org/html/rfc2553 */
|
||||
|
||||
Reference in New Issue
Block a user