summaryrefslogtreecommitdiffstats
path: root/src/include/socket-utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/socket-utils.h')
-rw-r--r--src/include/socket-utils.h20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/include/socket-utils.h b/src/include/socket-utils.h
index e3fa4293b..156663683 100644
--- a/src/include/socket-utils.h
+++ b/src/include/socket-utils.h
@@ -119,13 +119,17 @@ sa_is_inet(struct sockaddr *sa)
return sa->sa_family == AF_INET || sa->sa_family == AF_INET6;
}
-#if !defined (socklen)
-/* socklen_t socklen (struct sockaddr *) */
-# ifdef HAVE_SA_LEN
-# define socklen(X) ((X)->sa_len)
-# else
-# define socklen(X) ((X)->sa_family == AF_INET6 ? (socklen_t) sizeof (struct sockaddr_in6) : (X)->sa_family == AF_INET ? (socklen_t) sizeof (struct sockaddr_in) : (socklen_t) sizeof (struct sockaddr))
-# endif
-#endif
+/* Return the length of an IPv4 or IPv6 socket structure; abort if it is
+ * neither. */
+static inline socklen_t
+sa_socklen(struct sockaddr *sa)
+{
+ if (sa->sa_family == AF_INET6)
+ return sizeof(struct sockaddr_in6);
+ else if (sa->sa_family == AF_INET)
+ return sizeof(struct sockaddr_in);
+ else
+ abort();
+}
#endif /* SOCKET_UTILS_H */