]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
priv: fallback to SOCK_DGRAM if SOCK_SEQPACKET not available
authorVincent Bernat <vincent@bernat.im>
Wed, 18 Mar 2015 13:34:54 +0000 (14:34 +0100)
committerVincent Bernat <vincent@bernat.im>
Wed, 18 Mar 2015 13:34:54 +0000 (14:34 +0100)
src/daemon/priv.c

index f00297ee14b26f7a2782cebd64c8f7402f30dc24..00e18846ed94bd117fdfe03a3d3a641104663e92 100644 (file)
@@ -591,8 +591,16 @@ priv_init(const char *chrootdir, int ctl, uid_t uid, gid_t gid)
        int pair[2];
 
        /* Create socket pair */
-       if (socketpair(AF_UNIX, SOCK_SEQPACKET, PF_UNSPEC, pair) < 0)
-               fatal("privsep", "unable to create socket pair for privilege separation");
+       if (socketpair(AF_UNIX, SOCK_SEQPACKET, PF_UNSPEC, pair) < 0) {
+               if (errno == EAFNOSUPPORT ||
+                   errno == EOPNOTSUPP ||
+                   errno == EPROTONOSUPPORT) {
+                       if (socketpair(AF_UNIX, SOCK_DGRAM, PF_UNSPEC, pair) < 0) {
+                               fatal("privsep",
+                                   "unable to create socket pair for privilege separation");
+                       }
+               }
+       }
 
        priv_unprivileged_fd(pair[0]);
        priv_privileged_fd(pair[1]);