$OpenBSD: patch-configure_ac,v 1.2 2019/03/27 23:38:19 sthen Exp $

From 956a6181147df7d3bb310e86a2b52e54a68cb08f Mon Sep 17 00:00:00 2001
From: Stuart Henderson <stu@spacehopper.org>
Date: Wed, 27 Mar 2019 10:40:31 +0000
Subject: [PATCH] support SO_PEERCRED as well as ucred

Index: configure.ac
--- configure.ac.orig
+++ configure.ac
@@ -416,14 +416,14 @@ AC_ARG_WITH(uds,
 			    AC_TRY_COMPILE([#include <sys/types.h>
 				    #include <sys/socket.h>],
 				    [
-struct ucred u;
+struct sockpeercred u;
 u.uid = 0;
 #if !defined(SO_PEERCRED)
 #error "no SO_PEERCRED defined"
 #endif
 				    ],
 				    [AC_MSG_RESULT(yes)
-				     AC_DEFINE(UDS_CRED_STYPE, ucred, [Defined to UDS credential structure name])
+				     AC_DEFINE(UDS_CRED_STYPE, sockpeercred, [Defined to UDS credential structure name])
 				     AC_DEFINE(UDS_CRED_UID, uid, [Defined to UDS credential structure uid field])
 				     AC_DEFINE(UDS_CRED_SO, SO_PEERCRED, [Defined to UDS credential socket option])
 				     AC_DEFINE(TRUST_UDS_CRED)],
@@ -431,18 +431,34 @@ u.uid = 0;
 					AC_TRY_COMPILE([#include <sys/types.h>
 						#include <sys/socket.h>],
 						[
+struct ucred u;
+u.euid = 0;
+#if !defined(SO_PEERCRED)
+#error "no SO_PEERCRED defined"
+#endif
+						],
+						[AC_MSG_RESULT(yes)
+						AC_DEFINE(UDS_CRED_STYPE, ucred, [Defined to UDS credential structure name])
+						AC_DEFINE(UDS_CRED_UID, uid, [Defined to UDS credential structure uid field])
+						AC_DEFINE(UDS_CRED_SO, SO_PEERCRED, [Defined to UDS credential socket option])
+						AC_DEFINE(TRUST_UDS_CRED)],
+						[
+							AC_TRY_COMPILE([#include <sys/types.h>
+								#include <sys/socket.h>],
+								[
 struct peercred_struct u;
 u.euid = 0;
 #if !defined(SO_PEERID)
 #error "no SO_PEERID defined"
 #endif
-						],
-						[AC_MSG_RESULT(yes)
-						 AC_DEFINE(UDS_CRED_STYPE, peercred_struct, [Defined to UDS credential structure name])
-						 AC_DEFINE(UDS_CRED_UID, euid, [Defined to UDS credential structure uid field])
-						 AC_DEFINE(UDS_CRED_SO, SO_PEERID, [Defined to UDS credential socket option])
-						 AC_DEFINE(TRUST_UDS_CRED)],
-						[AC_MSG_RESULT(no)])
+								],
+								[AC_MSG_RESULT(yes)
+								 AC_DEFINE(UDS_CRED_STYPE, peercred_struct, [Defined to UDS credential structure name])
+								 AC_DEFINE(UDS_CRED_UID, euid, [Defined to UDS credential structure uid field])
+								 AC_DEFINE(UDS_CRED_SO, SO_PEERID, [Defined to UDS credential socket option])
+								 AC_DEFINE(TRUST_UDS_CRED)],
+								[AC_MSG_RESULT(no)]),
+						    ])
 				    ])
 			    ;;
 			*)
