Commit 970ef13d by Wolfgang Bumiller

af_unix: add lxc_unix_connect_type

we want to use SOCK_SEQPACKET and in the future perhaps SOCK_DATAGRAM as well Signed-off-by: 's avatarWolfgang Bumiller <w.bumiller@proxmox.com>
parent dc85e31e
...@@ -379,13 +379,13 @@ int lxc_unix_sockaddr(struct sockaddr_un *ret, const char *path) ...@@ -379,13 +379,13 @@ int lxc_unix_sockaddr(struct sockaddr_un *ret, const char *path)
return (int)(offsetof(struct sockaddr_un, sun_path) + len + 1); 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; __do_close_prot_errno int fd = -EBADF;
int ret; int ret;
ssize_t len; ssize_t len;
fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); fd = socket(AF_UNIX, type | SOCK_CLOEXEC, 0);
if (fd < 0) { if (fd < 0) {
SYSERROR("Failed to open new AF_UNIX socket"); SYSERROR("Failed to open new AF_UNIX socket");
return -1; return -1;
...@@ -406,6 +406,11 @@ int lxc_unix_connect(struct sockaddr_un *addr) ...@@ -406,6 +406,11 @@ int lxc_unix_connect(struct sockaddr_un *addr)
return move_fd(fd); 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) int lxc_socket_set_timeout(int fd, int rcv_timeout, int snd_timeout)
{ {
struct timeval out = {0}; struct timeval out = {0};
......
...@@ -46,6 +46,7 @@ extern int lxc_abstract_unix_send_credential(int fd, void *data, size_t size); ...@@ -46,6 +46,7 @@ extern int lxc_abstract_unix_send_credential(int fd, void *data, size_t size);
extern int lxc_abstract_unix_rcv_credential(int fd, void *data, size_t size); 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_sockaddr(struct sockaddr_un *ret, const char *path);
extern int lxc_unix_connect(struct sockaddr_un *addr); 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); extern int lxc_socket_set_timeout(int fd, int rcv_timeout, int snd_timeout);
#endif /* __LXC_AF_UNIX_H */ #endif /* __LXC_AF_UNIX_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment