]> The Tcpdump Group git mirrors - tcpdump/blobdiff - extract.h
Use more the ND_TTEST_1() macro
[tcpdump] / extract.h
index e25104e78d17693047edfbf4f8913b6660415faa..28c828ebfc09727be99c6f99d0a571b6b65a4df0 100644 (file)
--- a/extract.h
+++ b/extract.h
@@ -367,15 +367,27 @@ EXTRACT_BE_S_8(const void *p)
 #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) | \
@@ -385,33 +397,42 @@ EXTRACT_BE_S_8(const void *p)
                    ((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_1(p) ND_TTEST_LEN((p), 1)
+#define ND_TCHECK_1(p) ND_TCHECK_LEN((p), 1)
 
-#define ND_TTEST_2(p) ND_TTEST2(*(p), 2)
-#define ND_TCHECK_2(p) ND_TCHECK2(*(p), 2)
+#define ND_TTEST_2(p) ND_TTEST_LEN((p), 2)
+#define ND_TCHECK_2(p) ND_TCHECK_LEN((p), 2)
 
-#define ND_TTEST_3(p) ND_TTEST2(*(p), 3)
-#define ND_TCHECK_3(p) ND_TCHECK2(*(p), 3)
+#define ND_TTEST_3(p) ND_TTEST_LEN((p), 3)
+#define ND_TCHECK_3(p) ND_TCHECK_LEN((p), 3)
 
-#define ND_TTEST_4(p) ND_TTEST2(*(p), 4)
-#define ND_TCHECK_4(p) ND_TCHECK2(*(p), 4)
+#define ND_TTEST_4(p) ND_TTEST_LEN((p), 4)
+#define ND_TCHECK_4(p) ND_TCHECK_LEN((p), 4)
 
-#define ND_TTEST_5(p) ND_TTEST2(*(p), 5)
-#define ND_TCHECK_5(p) ND_TCHECK2(*(p), 5)
+#define ND_TTEST_5(p) ND_TTEST_LEN((p), 5)
+#define ND_TCHECK_5(p) ND_TCHECK_LEN((p), 5)
 
-#define ND_TTEST_6(p) ND_TTEST2(*(p), 6)
-#define ND_TCHECK_6(p) ND_TCHECK2(*(p), 6)
+#define ND_TTEST_6(p) ND_TTEST_LEN((p), 6)
+#define ND_TCHECK_6(p) ND_TCHECK_LEN((p), 6)
 
-#define ND_TTEST_7(p) ND_TTEST2(*(p), 7)
-#define ND_TCHECK_7(p) ND_TCHECK2(*(p), 7)
+#define ND_TTEST_7(p) ND_TTEST_LEN((p), 7)
+#define ND_TCHECK_7(p) ND_TCHECK_LEN((p), 7)
 
-#define ND_TTEST_8(p) ND_TTEST2(*(p), 8)
-#define ND_TCHECK_8(p) ND_TCHECK2(*(p), 8)
+#define ND_TTEST_8(p) ND_TTEST_LEN((p), 8)
+#define ND_TCHECK_8(p) ND_TCHECK_LEN((p), 8)
 
-#define ND_TTEST_16(p) ND_TTEST2(*(p), 16)
-#define ND_TCHECK_16(p) ND_TCHECK2(*(p), 16)
+#define ND_TTEST_16(p) ND_TTEST_LEN((p), 16)
+#define ND_TCHECK_16(p) ND_TCHECK_LEN((p), 16)