mirror of
https://github.com/systemd/systemd.git
synced 2026-08-02 22:20:20 +00:00
socket-util: add helper for getting peer pidfd
This commit is contained in:
@@ -32,6 +32,10 @@ struct sockaddr_vm {
|
||||
#define SO_PEERGROUPS 59
|
||||
#endif
|
||||
|
||||
#ifndef SO_PEERPIDFD
|
||||
#define SO_PEERPIDFD 77
|
||||
#endif
|
||||
|
||||
#ifndef SO_BINDTOIFINDEX
|
||||
#define SO_BINDTOIFINDEX 62
|
||||
#endif
|
||||
|
||||
@@ -956,6 +956,21 @@ int getpeergroups(int fd, gid_t **ret) {
|
||||
return (int) n;
|
||||
}
|
||||
|
||||
int getpeerpidfd(int fd) {
|
||||
socklen_t n = sizeof(int);
|
||||
int pidfd = -EBADF;
|
||||
|
||||
assert(fd >= 0);
|
||||
|
||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERPIDFD, &pidfd, &n) < 0)
|
||||
return -errno;
|
||||
|
||||
if (n != sizeof(int))
|
||||
return -EIO;
|
||||
|
||||
return pidfd;
|
||||
}
|
||||
|
||||
ssize_t send_many_fds_iov_sa(
|
||||
int transport_fd,
|
||||
int *fds_array, size_t n_fds_array,
|
||||
|
||||
@@ -152,6 +152,7 @@ bool address_label_valid(const char *p);
|
||||
int getpeercred(int fd, struct ucred *ucred);
|
||||
int getpeersec(int fd, char **ret);
|
||||
int getpeergroups(int fd, gid_t **ret);
|
||||
int getpeerpidfd(int fd);
|
||||
|
||||
ssize_t send_many_fds_iov_sa(
|
||||
int transport_fd,
|
||||
|
||||
Reference in New Issue
Block a user