From c540867c09dbdcc68e168d3cf6a6cdc1347e32de Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Mon, 4 Dec 2023 14:59:03 +0100 Subject: [PATCH 2/2] build: resolve compile error on NetBSD No SO_DOMAIN, no SO_PROTOCOL present on NetBSD-9.3. --- src/socket.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git src/socket.c src/socket.c index 9fdd903..fe813f5 100644 --- src/socket.c +++ src/socket.c @@ -41,7 +41,7 @@ #else # define STUPIDWIN(x) (x) #endif -#if defined(__sun) && !defined(SO_PROTOCOL) +#if defined(__sun) && !defined(SO_PROTOCOL) && defined(SO_PROTOTYPE) # define SO_PROTOCOL SO_PROTOTYPE #endif #ifndef AI_V4MAPPED @@ -333,17 +333,21 @@ static int try_sk_from_env(int fd, const struct addrinfo *ai, const char *intf) return -1; #else optlen = sizeof(value); +#ifdef SO_DOMAIN ret = getsockopt(fd, SOL_SOCKET, SO_DOMAIN, &value, &optlen); if (ret < 0 || value != ai->ai_family) return -1; +#endif optlen = sizeof(value); ret = getsockopt(fd, SOL_SOCKET, SO_TYPE, &value, &optlen); if (ret < 0 || value != ai->ai_socktype) return -1; optlen = sizeof(value); +#ifdef SO_PROTOCOL ret = getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &value, &optlen); if (ret < 0 || value != ai->ai_protocol) return -1; +#endif #endif struct sockaddr_storage addr; memset(&addr, 0, sizeof(addr));