[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Unix sockets and client PID
- To: tech_(_at_)_openbsd_(_dot_)_org
- Subject: Unix sockets and client PID
- From: Andre Nathan <andre_(_at_)_digirati_(_dot_)_com_(_dot_)_br>
- Date: Tue, 06 Jan 2004 12:03:56 -0200
Hi
I'm trying to get the PID from a connecting process using a Unix socket.
On FreeBSD, it is possible to send a message of type SCM_CREDS on
sendmsg, which leads me to a cmsgcred structure:
struct cmsgcred {
pid_t cmcred_pid; /* PID of sending process */
uid_t cmcred_uid; /* real UID of sending process */
uid_t cmcred_euid; /* effective UID of sending process */
gid_t cmcred_gid; /* real GID of sending process */
short cmcred_ngroups; /* number or groups */
gid_t cmcred_groups[CMGROUP_MAX]; /* groups */
};
However, on OpenBSD, using SCM_CREDS leads me to a sockcred structure,
which doesn't have a field for the PID:
struct sockcred {
uid_t sc_uid; /* real user id */
uid_t sc_euid; /* effective user id */
gid_t sc_gid; /* real group id */
gid_t sc_egid; /* effective group id */
int sc_ngroups; /* number of supplemental groups */
gid_t sc_groups[1]; /* variable length */
};
What is the standard way to do this on OpenBSD?
Best regards,
Andre
Visit your host, monkey.org