socket-util: add helper for getting peer pidfd

This commit is contained in:
Lennart Poettering
2023-11-23 17:58:01 +01:00
parent 3dee63b762
commit da5e0c442b
3 changed files with 20 additions and 0 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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,