2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 14:35:26 +00:00

Fix <isc/endian.h> on BSD systems

Current versions of DragonFly BSD, FreeBSD, NetBSD, and OpenBSD all
support the modern variants of functions converting values between host
and big-endian/little-endian byte order while older ones might not.
Ensure <isc/endian.h> works properly in both cases.
This commit is contained in:
Michał Kępień
2019-06-03 14:13:23 +02:00
parent b675ace6c9
commit 7ab1fb2a8d

View File

@@ -39,18 +39,24 @@
# define __LITTLE_ENDIAN LITTLE_ENDIAN
# define __PDP_ENDIAN PDP_ENDIAN
#elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
#elif defined(__DragonFly__) || defined(__FreeBSD__) || \
defined(__NetBSD__) || defined (__OpenBSD__) || defined(__bsdi__)
# include <sys/endian.h>
# define be16toh(x) betoh16(x)
# define le16toh(x) letoh16(x)
# define be32toh(x) betoh32(x)
# define le32toh(x) letoh32(x)
# define be64toh(x) betoh64(x)
# define le64toh(x) letoh64(x)
/*
* Recent BSDs should have [bl]e{16,32,64}toh() defined in <sys/endian.h>.
* Older ones might not, but these should have the alternatively named
* [bl]etoh{16,32,64}() functions defined.
*/
# ifndef be16toh
# define be16toh(x) betoh16(x)
# define le16toh(x) letoh16(x)
# define be32toh(x) betoh32(x)
# define le32toh(x) letoh32(x)
# define be64toh(x) betoh64(x)
# define le64toh(x) letoh64(x)
# endif /* !be16toh */
#elif defined(_WIN32)
/* Windows is always little endian */