]>
git.proxmox.com Git - mirror_lxc.git/blob - src/lxc/af_unix.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 #ifndef __LXC_AF_UNIX_H
4 #define __LXC_AF_UNIX_H
7 #include <sys/socket.h>
13 #include "memory_utils.h"
16 * Technically 253 is the kernel limit but we want to the struct to be a
19 #define KERNEL_SCM_MAX_FD 252
24 __s32 fd
[KERNEL_SCM_MAX_FD
];
25 } __attribute__((aligned(8)));
27 /* does not enforce \0-termination */
28 __hidden
extern int lxc_abstract_unix_open(const char *path
, int type
, int flags
);
29 __hidden
extern void lxc_abstract_unix_close(int fd
);
30 /* does not enforce \0-termination */
31 __hidden
extern int lxc_abstract_unix_connect(const char *path
);
33 __hidden
extern int lxc_abstract_unix_send_fds(int fd
, const int *sendfds
,
34 int num_sendfds
, void *data
,
35 size_t size
) __access_r(2, 3)
38 __hidden
extern int lxc_abstract_unix_send_fds_iov(int fd
, const int *sendfds
,
44 __hidden
extern ssize_t
lxc_abstract_unix_recv_fds(int fd
,
45 struct unix_fds
*ret_fds
,
50 __hidden
extern ssize_t
lxc_abstract_unix_recv_one_fd(int fd
, int *ret_fd
,
55 __hidden
extern ssize_t
lxc_abstract_unix_recv_two_fds(int fd
, int *ret_fd
);
57 __hidden
extern int lxc_unix_send_fds(int fd
, int *sendfds
, int num_sendfds
, void *data
, size_t size
);
59 __hidden
extern int lxc_abstract_unix_send_credential(int fd
, void *data
, size_t size
)
62 __hidden
extern int lxc_abstract_unix_rcv_credential(int fd
, void *data
, size_t size
)
65 __hidden
extern int lxc_unix_sockaddr(struct sockaddr_un
*ret
, const char *path
);
66 __hidden
extern int lxc_unix_connect(struct sockaddr_un
*addr
);
67 __hidden
extern int lxc_unix_connect_type(struct sockaddr_un
*addr
, int type
);
68 __hidden
extern int lxc_socket_set_timeout(int fd
, int rcv_timeout
, int snd_timeout
);
70 static inline void put_unix_fds(struct unix_fds
*fds
)
72 if (!IS_ERR_OR_NULL(fds
)) {
73 for (size_t idx
= 0; idx
< fds
->fd_count_ret
; idx
++)
74 close_prot_errno_disarm(fds
->fd
[idx
]);
77 define_cleanup_function(struct unix_fds
*, put_unix_fds
);
79 #endif /* __LXC_AF_UNIX_H */