From 09292f5d124c0f12d2aed6ebc14a2d1ecd906a3d Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Tue, 15 Dec 2020 10:01:14 +0800 Subject: [PATCH] [posix] fix build warnings/errors on macOS (#5839) --- src/posix/platform/udp.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/posix/platform/udp.cpp b/src/posix/platform/udp.cpp index 87e13718f..1d0307c57 100644 --- a/src/posix/platform/udp.cpp +++ b/src/posix/platform/udp.cpp @@ -79,15 +79,20 @@ static bool IsMulticast(const otIp6Address &aAddress) static otError transmitPacket(int aFd, uint8_t *aPayload, uint16_t aLength, const otMessageInfo &aMessageInfo) { +#ifdef __APPLE__ + // use fixed value for CMSG_SPACE is not a constant expression on macOS + constexpr size_t kBufferSize = 128; +#else + constexpr size_t kBufferSize = CMSG_SPACE(sizeof(struct in6_pktinfo)) + CMSG_SPACE(sizeof(int)); +#endif struct sockaddr_in6 peerAddr; - uint8_t - control[OT_APPLE_IGNORE_GNU_FOLDING_CONSTANT(CMSG_SPACE(sizeof(struct in6_pktinfo)) + CMSG_SPACE(sizeof(int)))]; - size_t controlLength = 0; - struct iovec iov; - struct msghdr msg; - struct cmsghdr *cmsg; - ssize_t rval; - otError error = OT_ERROR_NONE; + uint8_t control[kBufferSize]; + size_t controlLength = 0; + struct iovec iov; + struct msghdr msg; + struct cmsghdr * cmsg; + ssize_t rval; + otError error = OT_ERROR_NONE; memset(&peerAddr, 0, sizeof(peerAddr)); peerAddr.sin6_port = htons(aMessageInfo.mPeerPort); @@ -108,7 +113,7 @@ static otError transmitPacket(int aFd, uint8_t *aPayload, uint16_t aLength, cons msg.msg_name = &peerAddr; msg.msg_namelen = sizeof(peerAddr); msg.msg_control = control; - msg.msg_controllen = sizeof(control); + msg.msg_controllen = static_cast(sizeof(control)); msg.msg_iov = &iov; msg.msg_iovlen = 1; msg.msg_flags = 0; @@ -149,7 +154,7 @@ static otError transmitPacket(int aFd, uint8_t *aPayload, uint16_t aLength, cons #ifdef __APPLE__ msg.msg_controllen = static_cast(controlLength); #else - msg.msg_controllen = controlLength; + msg.msg_controllen = controlLength; #endif rval = sendmsg(aFd, &msg, 0); @@ -299,7 +304,7 @@ otError otPlatUdpBindToNetif(otUdpSocket *aUdpSocket, otNetifIdentifier aNetifId { case OT_NETIF_UNSPECIFIED: { -#if __linux__ +#ifdef __linux__ VerifyOrExit(setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, nullptr, 0) == 0, error = OT_ERROR_FAILED); #else // __NetBSD__ || __FreeBSD__ || __APPLE__ unsigned int netifIndex = 0; @@ -310,7 +315,7 @@ otError otPlatUdpBindToNetif(otUdpSocket *aUdpSocket, otNetifIdentifier aNetifId } case OT_NETIF_THREAD: { -#if __linux__ +#ifdef __linux__ VerifyOrExit(setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &gNetifName, strlen(gNetifName)) == 0, error = OT_ERROR_FAILED); #else // __NetBSD__ || __FreeBSD__ || __APPLE__