return (int)(offsetof(struct sockaddr_un, sun_path) + len + 1);
}
-int lxc_unix_connect(struct sockaddr_un *addr)
+int lxc_unix_connect_type(struct sockaddr_un *addr, int type)
{
__do_close_prot_errno int fd = -EBADF;
int ret;
ssize_t len;
- fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
+ fd = socket(AF_UNIX, type | SOCK_CLOEXEC, 0);
if (fd < 0) {
SYSERROR("Failed to open new AF_UNIX socket");
return -1;
return move_fd(fd);
}
+int lxc_unix_connect(struct sockaddr_un *addr, int type)
+{
+ return lxc_unix_connect_type(addr, SOCK_STREAM);
+}
+
int lxc_socket_set_timeout(int fd, int rcv_timeout, int snd_timeout)
{
struct timeval out = {0};
extern int lxc_abstract_unix_rcv_credential(int fd, void *data, size_t size);
extern int lxc_unix_sockaddr(struct sockaddr_un *ret, const char *path);
extern int lxc_unix_connect(struct sockaddr_un *addr);
+extern int lxc_unix_connect_type(struct sockaddr_un *addr, int type);
extern int lxc_socket_set_timeout(int fd, int rcv_timeout, int snd_timeout);
#endif /* __LXC_AF_UNIX_H */