[PATCH 6/7] libibumad: Define ntohll/htonll

sean.hefty-ral2JQCrhuEAvxtiuMwx3w
2013-01-28T21:38:54Z

From: Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

Users of umad require ntohll/htonll to set/extract data from
MADs. Include the definition with umad, not just libibmad.

Signed-off-by: Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
include/infiniband/umad.h | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/include/infiniband/umad.h b/include/infiniband/umad.h
index 23abf0d..08fff71 100644
--- a/include/infiniband/umad.h
+++ b/include/infiniband/umad.h
@@ -35,6 +35,8 @@

#include <stdint.h>
#include <stdlib.h>
+#include <byteswap.h>
+#include <arpa/inet.h>

#ifdef __cplusplus
# define BEGIN_C_DECLS extern "C" {
@@ -193,8 +195,6 @@ int umad_debug(int level);
void umad_addr_dump(ib_mad_addr_t * addr);
void umad_dump(void *umad);

-#include <stdlib.h>
-
static inline void *umad_alloc(int num, size_t size)
{ /* alloc array of umad buffers */
return calloc(num, size);
@@ -205,5 +205,16 @@ static inline void umad_free(void *umad)
free(umad);
}

+#ifndef ntohll
+ #if __BYTE_ORDER == __LITTLE_ENDIAN
+ #define ntohll(x) bswap_64(x)
+ #elif __BYTE_ORDER == __BIG_ENDIAN
+ #define ntohll(x) x
+ #endif
+#endif
+#ifndef htonll
+ #define htonll ntohll
+#endif
+
END_C_DECLS
#endif /* _UMAD_H */
--
1.7.3