From 1d650869f32c56f6d49d898c38f7525191a60bd1 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Wed, 4 Jan 2017 02:10:13 -0800 Subject: Initial cut at TCP, totally untested beyond compilation. This also adds checks in the protocols to verify that pipe peers are of the proper protocol. --- src/core/defs.h | 77 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 33 deletions(-) (limited to 'src/core/defs.h') diff --git a/src/core/defs.h b/src/core/defs.h index be7f71f7..ed2e353f 100644 --- a/src/core/defs.h +++ b/src/core/defs.h @@ -52,43 +52,54 @@ typedef struct { #define NNI_ALLOC_STRUCT(s) nni_alloc(sizeof (*s)) #define NNI_FREE_STRUCT(s) nni_free((s), sizeof (*s)) -#define NNI_PUT32(ptr, u) \ - do { \ - ptr[0] = (uint8_t) (((uint32_t) u) >> 24); \ - ptr[1] = (uint8_t) (((uint32_t) u) >> 16); \ - ptr[2] = (uint8_t) (((uint32_t) u) >> 8); \ - ptr[3] = (uint8_t) ((uint32_t) u); \ - } \ +#define NNI_PUT16(ptr, u) \ + do { \ + (ptr)[0] = (uint8_t) (((uint16_t) (u)) >> 8); \ + (ptr)[0] = (uint8_t) ((uint16_t) (u)); \ + } \ while (0) -#define NNI_PUT64(ptr, u) \ - do { \ - ptr[0] = (uint8_t) (((uint64_t) u) >> 56); \ - ptr[1] = (uint8_t) (((uint64_t) u) >> 48); \ - ptr[2] = (uint8_t) (((uint64_t) u) >> 40); \ - ptr[3] = (uint8_t) (((uint64_t) u) >> 32); \ - ptr[4] = (uint8_t) (((uint64_t) u) >> 24); \ - ptr[5] = (uint8_t) (((uint64_t) u) >> 16); \ - ptr[6] = (uint8_t) (((uint64_t) u) >> 8); \ - ptr[7] = (uint8_t) ((uint64_t) u); \ - } \ +#define NNI_PUT32(ptr, u) \ + do { \ + (ptr)[0] = (uint8_t) (((uint32_t) (u)) >> 24); \ + (ptr)[1] = (uint8_t) (((uint32_t) (u)) >> 16); \ + (ptr)[2] = (uint8_t) (((uint32_t) (u)) >> 8); \ + (ptr)[3] = (uint8_t) ((uint32_t) (u)); \ + } \ while (0) -#define NNI_GET32(ptr, v) \ - v = (((uint32_t) ((uint8_t) ptr[0])) << 24) + \ - (((uint32_t) ((uint8_t) ptr[1])) << 16) + \ - (((uint32_t) ((uint8_t) ptr[2])) << 8) + \ - (((uint32_t) (uint8_t) ptr[3])) - -#define NNI_GET64(ptr, v) \ - v = (((uint64_t) ((uint8_t) ptr[0])) << 56) + \ - (((uint64_t) ((uint8_t) ptr[1])) << 48) + \ - (((uint64_t) ((uint8_t) ptr[2])) << 40) + \ - (((uint64_t) ((uint8_t) ptr[3])) << 32) + \ - (((uint64_t) ((uint8_t) ptr[4])) << 24) + \ - (((uint64_t) ((uint8_t) ptr[5])) << 16) + \ - (((uint64_t) ((uint8_t) ptr[6])) << 8) + \ - (((uint64_t) (uint8_t) ptr[7])) +#define NNI_PUT64(ptr, u) \ + do { \ + (ptr)[0] = (uint8_t) (((uint64_t) (u)) >> 56); \ + (ptr)[1] = (uint8_t) (((uint64_t) (u)) >> 48); \ + (ptr)[2] = (uint8_t) (((uint64_t) (u)) >> 40); \ + (ptr)[3] = (uint8_t) (((uint64_t) (u)) >> 32); \ + (ptr)[4] = (uint8_t) (((uint64_t) (u)) >> 24); \ + (ptr)[5] = (uint8_t) (((uint64_t) (u)) >> 16); \ + (ptr)[6] = (uint8_t) (((uint64_t) (u)) >> 8); \ + (ptr)[7] = (uint8_t) ((uint64_t) (u)); \ + } \ + while (0) + +#define NNI_GET16(ptr, v) \ + v = (((uint32_t) ((uint8_t) (ptr)[0])) << 8) + \ + (((uint32_t) (uint8_t) (ptr)[1])) + +#define NNI_GET32(ptr, v) \ + v = (((uint32_t) ((uint8_t) (ptr)[0])) << 24) + \ + (((uint32_t) ((uint8_t) (ptr)[1])) << 16) + \ + (((uint32_t) ((uint8_t) (ptr)[2])) << 8) + \ + (((uint32_t) (uint8_t) (ptr)[3])) + +#define NNI_GET64(ptr, v) \ + v = (((uint64_t) ((uint8_t) (ptr)[0])) << 56) + \ + (((uint64_t) ((uint8_t) (ptr)[1])) << 48) + \ + (((uint64_t) ((uint8_t) (ptr)[2])) << 40) + \ + (((uint64_t) ((uint8_t) (ptr)[3])) << 32) + \ + (((uint64_t) ((uint8_t) (ptr)[4])) << 24) + \ + (((uint64_t) ((uint8_t) (ptr)[5])) << 16) + \ + (((uint64_t) ((uint8_t) (ptr)[6])) << 8) + \ + (((uint64_t) (uint8_t) (ptr)[7])) // A few assorted other items. #define NNI_FLAG_IPV4ONLY 1 -- cgit v1.2.3-70-g09d2