From: Vincent Bernat Date: Wed, 18 Mar 2015 13:34:54 +0000 (+0100) Subject: priv: fallback to SOCK_DGRAM if SOCK_SEQPACKET not available X-Git-Tag: 0.7.14~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c642d8c7b9e4cd52f3efc155ce402330949c4f57;p=thirdparty%2Flldpd.git priv: fallback to SOCK_DGRAM if SOCK_SEQPACKET not available --- diff --git a/src/daemon/priv.c b/src/daemon/priv.c index f00297ee..00e18846 100644 --- a/src/daemon/priv.c +++ b/src/daemon/priv.c @@ -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]);