fd-util: move cmsg_close_all() to socket-util.[ch]

This call only makes sense on sockets, it's not a generic fd concept,
hence let's move this over.
This commit is contained in:
Lennart Poettering
2025-06-18 19:06:11 +09:00
committed by Yu Watanabe
parent 030b227cec
commit ea71d34738
4 changed files with 20 additions and 20 deletions
+18
View File
@@ -1981,3 +1981,21 @@ int socket_get_cookie(int fd, uint64_t *ret) {
return 0;
}
void cmsg_close_all(struct msghdr *mh) {
assert(mh);
struct cmsghdr *cmsg;
CMSG_FOREACH(cmsg, mh) {
if (cmsg->cmsg_level != SOL_SOCKET)
continue;
if (cmsg->cmsg_type == SCM_RIGHTS)
close_many(CMSG_TYPED_DATA(cmsg, int),
(cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int));
else if (cmsg->cmsg_type == SCM_PIDFD) {
assert(cmsg->cmsg_len == CMSG_LEN(sizeof(int)));
safe_close(*CMSG_TYPED_DATA(cmsg, int));
}
}
}