]> The Tcpdump Group git mirrors - tcpdump/blobdiff - extract.h
Clean up signed vs. unsigned.
[tcpdump] / extract.h
index e25104e78d17693047edfbf4f8913b6660415faa..82ccae3cea6b16e9c090a8cb7690dacbdb04c894 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,6 +397,15 @@ 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.