From 91b423beb72892d9d680060001244f588ef20691 Mon Sep 17 00:00:00 2001 From: Jasper Lievisse Adriaanse Date: Jan 11 2016 16:56:06 +0000 Subject: Use struct sockpeercred when available OpenBSD uses 'struct sockpeercred' instead of 'struct ucred'. Add a configure check that detects its presence and use if in the code that could be compiled on OpenBSD. Signed-off-by: Roman Bogorodskiy --- diff --git a/configure.ac b/configure.ac index 58807a8..9b4b290 100644 --- a/configure.ac +++ b/configure.ac @@ -393,6 +393,12 @@ AC_CHECK_TYPE([struct ifreq], #include ]]) +AC_CHECK_TYPE([struct sockpeercred], + [AC_DEFINE([HAVE_STRUCT_SOCKPEERCRED], [1], + [Defined if struct sockpeercred is available])], + [], [[#include + ]]) + AC_CHECK_DECLS([ETH_FLAG_TXVLAN, ETH_FLAG_NTUPLE, ETH_FLAG_RXHASH, ETH_FLAG_LRO, ETHTOOL_GGSO, ETHTOOL_GGRO, ETHTOOL_GFLAGS, ETHTOOL_GFEATURES], [], [], [[#include diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c index 526d291..4f67c8f 100644 --- a/src/rpc/virnetsocket.c +++ b/src/rpc/virnetsocket.c @@ -1259,7 +1259,11 @@ int virNetSocketGetUNIXIdentity(virNetSocketPtr sock, pid_t *pid, unsigned long long *timestamp) { +# if defined(HAVE_STRUCT_SOCKPEERCRED) + struct sockpeercred cr; +# else struct ucred cr; +# endif socklen_t cr_len = sizeof(cr); int ret = -1;