-#define EXTRACT_LE_8BITS(p) (*(p))
-#define EXTRACT_LE_16BITS(p) \
- ((uint16_t)((uint16_t)*((const uint8_t *)(p) + 1) << 8 | \
- (uint16_t)*((const uint8_t *)(p) + 0)))
-#define EXTRACT_LE_32BITS(p) \
- ((uint32_t)((uint32_t)*((const uint8_t *)(p) + 3) << 24 | \
- (uint32_t)*((const uint8_t *)(p) + 2) << 16 | \
- (uint32_t)*((const uint8_t *)(p) + 1) << 8 | \
- (uint32_t)*((const uint8_t *)(p) + 0)))
-#define EXTRACT_LE_24BITS(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)))
-#define EXTRACT_LE_64BITS(p) \
- ((uint64_t)((uint64_t)*((const uint8_t *)(p) + 7) << 56 | \
- (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)))
+#define EXTRACT_LE_U_2(p) \
+ ((uint16_t)(((uint16_t)(*((const uint8_t *)(p) + 1)) << 8) | \
+ ((uint16_t)(*((const uint8_t *)(p) + 0)) << 0)))
+#define EXTRACT_LE_S_2(p) \
+ ((int16_t)(((uint16_t)(*((const uint8_t *)(p) + 1)) << 8) | \
+ ((uint16_t)(*((const uint8_t *)(p) + 0)) << 0)))
+#define EXTRACT_LE_U_4(p) \
+ ((uint32_t)(((uint32_t)(*((const uint8_t *)(p) + 3)) << 24) | \
+ ((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_4(p) \
+ ((int32_t)(((uint32_t)(*((const uint8_t *)(p) + 3)) << 24) | \
+ ((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) | \
+ ((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_S_8(p) \
+ ((int64_t)(((uint64_t)(*((const uint8_t *)(p) + 7)) << 56) | \
+ ((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.
+ */
+#define ND_TTEST_1(p) ND_TTEST2(*(p), 1)
+#define ND_TCHECK_1(p) ND_TCHECK2(*(p), 1)
+
+#define ND_TTEST_2(p) ND_TTEST2(*(p), 2)
+#define ND_TCHECK_2(p) ND_TCHECK2(*(p), 2)
+
+#define ND_TTEST_3(p) ND_TTEST2(*(p), 3)
+#define ND_TCHECK_3(p) ND_TCHECK2(*(p), 3)
+
+#define ND_TTEST_4(p) ND_TTEST2(*(p), 4)
+#define ND_TCHECK_4(p) ND_TCHECK2(*(p), 4)
+
+#define ND_TTEST_5(p) ND_TTEST2(*(p), 5)
+#define ND_TCHECK_5(p) ND_TCHECK2(*(p), 5)
+
+#define ND_TTEST_6(p) ND_TTEST2(*(p), 6)
+#define ND_TCHECK_6(p) ND_TCHECK2(*(p), 6)
+
+#define ND_TTEST_7(p) ND_TTEST2(*(p), 7)
+#define ND_TCHECK_7(p) ND_TCHECK2(*(p), 7)
+
+#define ND_TTEST_8(p) ND_TTEST2(*(p), 8)
+#define ND_TCHECK_8(p) ND_TCHECK2(*(p), 8)
+
+#define ND_TTEST_16(p) ND_TTEST2(*(p), 16)
+#define ND_TCHECK_16(p) ND_TCHECK2(*(p), 16)