X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/9edeb142527f29a6e31425b4280c9be0a7962c47..32e24ead3b2a171e5f5eff50d7231c2514eda9b4:/extract.h diff --git a/extract.h b/extract.h index ab0ac958..94503240 100644 --- a/extract.h +++ b/extract.h @@ -488,14 +488,6 @@ EXTRACT_IPV4_TO_NETWORK_ORDER(const void *p) ((uint32_t)(*((const uint8_t *)(p) + 2)) << 16) | \ ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ ((uint32_t)(*((const uint8_t *)(p) + 0)) << 0))) -#define EXTRACT_LE_U_3(p) \ - ((uint32_t)(((uint32_t)(*((const uint8_t *)(p) + 2)) << 16) | \ - ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ - ((uint32_t)(*((const uint8_t *)(p) + 0)) << 0))) -#define EXTRACT_LE_S_3(p) \ - ((int32_t)(((uint32_t)(*((const uint8_t *)(p) + 2)) << 16) | \ - ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ - ((uint32_t)(*((const uint8_t *)(p) + 0)) << 0))) #define EXTRACT_LE_U_8(p) \ ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 7)) << 56) | \ ((uint64_t)(*((const uint8_t *)(p) + 6)) << 48) | \ @@ -515,6 +507,40 @@ EXTRACT_IPV4_TO_NETWORK_ORDER(const void *p) ((uint64_t)(*((const uint8_t *)(p) + 1)) << 8) | \ ((uint64_t)(*((const uint8_t *)(p) + 0)) << 0))) +/* + * Non-power-of-2 sizes. + */ + +#define EXTRACT_LE_U_3(p) \ + ((uint32_t)(((uint32_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint32_t)(*((const uint8_t *)(p) + 0)) << 0))) +#define EXTRACT_LE_S_3(p) \ + ((int32_t)(((uint32_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint32_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint32_t)(*((const uint8_t *)(p) + 0)) << 0))) +#define EXTRACT_LE_U_5(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 4)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 0)) << 0))) +#define EXTRACT_LE_U_6(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 5)) << 40) | \ + ((uint64_t)(*((const uint8_t *)(p) + 4)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 0)) << 0))) +#define EXTRACT_LE_U_7(p) \ + ((uint64_t)(((uint64_t)(*((const uint8_t *)(p) + 6)) << 48) | \ + ((uint64_t)(*((const uint8_t *)(p) + 5)) << 40) | \ + ((uint64_t)(*((const uint8_t *)(p) + 4)) << 32) | \ + ((uint64_t)(*((const uint8_t *)(p) + 3)) << 24) | \ + ((uint64_t)(*((const uint8_t *)(p) + 2)) << 16) | \ + ((uint64_t)(*((const uint8_t *)(p) + 1)) << 8) | \ + ((uint64_t)(*((const uint8_t *)(p) + 0)) << 0))) + /* * Macros to check the presence of the values in question. */