GETPEEREID(3)

NAME
getpeereid - get effective user and group identification of locally-connected peer

SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
int
getpeereid(int s, uid_t *euid, gid_t *egid);

DESCRIPTION
getpeereid() returns the effective user ID and group ID of the peer connected to a UNIX-domain socket (see unix(4)). The argument s must be of type SOCK_STREAM or SOCK_SEQPACKET.

One common use is for UNIX-domain servers to determine the credentials of clients that have connected to it.

getpeereid() takes three parameters:

•   s contains the file descriptor of the socket whose peer credentials should be looked up.

•   euid points to a uid_t variable into which the effective user ID for the connected peer will be stored.

•   egid points to a gid_t variable into which the effective group ID for the connected peer will be stored.

RETURN VALUES
If the call succeeds, a 0 is returned and euid and egid are set to the effective user ID and group ID of the connected peer. Otherwise, errno is set and a value of -1 is returned.

ERRORS
On failure, errno is set to one of the following:

[EBADF]
    The argument s is not a valid descriptor.

[ENOTSOCK]
    The argument s is a file, not a socket.

[EOPNOTSUPP]
    The socket is not in the UNIX-domain.

[ENOTCONN]
    The socket is not connected.

[ENOBUFS]
    Insufficient resources were available in the system to perform the operation.

SEE ALSO
accept(2), bind(2), getpeername(2), getsockname(2), getsockopt(2), socket(2), unix(4)

HISTORY
The getpeereid() function call appeared in OpenBSD 3.0.