]> git.proxmox.com Git - mirror_lxc.git/commitdiff
af_unix: add lxc_unix_connect_type
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 4 Jul 2019 12:34:01 +0000 (14:34 +0200)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Tue, 9 Jul 2019 10:25:10 +0000 (12:25 +0200)
we want to use SOCK_SEQPACKET and in the future perhaps
SOCK_DATAGRAM as well

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
src/lxc/af_unix.c
src/lxc/af_unix.h

index f70eca33320ef29cc8f05b3d5035edc78d8cb332..2ff98dc1b6e6de6cdc3f2ac430219d3dcf4c27a3 100644 (file)
@@ -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;
        int ret;
        ssize_t len;
 
 {
        __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;
        if (fd < 0) {
                SYSERROR("Failed to open new AF_UNIX socket");
                return -1;
@@ -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)
 {
        struct timeval out = {0};
 int lxc_socket_set_timeout(int fd, int rcv_timeout, int snd_timeout)
 {
        struct timeval out = {0};
index 9f4729c0b9337256ea068860e64fc48094f48e57..eee9f4c27542f515c3967b9b97f336a624c40f48 100644 (file)
@@ -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_unix_sockaddr(struct sockaddr_un *ret, const char *path);
 extern int lxc_unix_connect(struct sockaddr_un *addr);
 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 */
 extern int lxc_socket_set_timeout(int fd, int rcv_timeout, int snd_timeout);
 
 #endif /* __LXC_AF_UNIX_H */