diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-01-04 02:10:13 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-01-04 02:10:13 -0800 |
| commit | 1d650869f32c56f6d49d898c38f7525191a60bd1 (patch) | |
| tree | 7a27136068de192a3166ce40ea7a541f68be9d96 /src/core/defs.h | |
| parent | 856c5c8e2aa4e07b2b628dd194a63ae13dae7ae3 (diff) | |
| download | nng-1d650869f32c56f6d49d898c38f7525191a60bd1.tar.gz nng-1d650869f32c56f6d49d898c38f7525191a60bd1.tar.bz2 nng-1d650869f32c56f6d49d898c38f7525191a60bd1.zip | |
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.
Diffstat (limited to 'src/core/defs.h')
| -rw-r--r-- | src/core/defs.h | 77 |
1 files changed, 44 insertions, 33 deletions
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 |
