]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Use nd_ types, add EXTRACT_ calls.
authorGuy Harris <[email protected]>
Sun, 31 Dec 2017 01:11:55 +0000 (17:11 -0800)
committerGuy Harris <[email protected]>
Sun, 31 Dec 2017 01:11:55 +0000 (17:11 -0800)
print-medsa.c

index 562033388afbbb77d0f9ac979ca71eb05c7307d6..1e6fa92aed1762b82894aa0453e2ef38426f13e4 100644 (file)
@@ -45,28 +45,32 @@ static const char tstr[] = "[|MEDSA]";
  * https://lwn.net/Articles/302333/
  */
 struct medsa_pkthdr {
-       u_char bytes[6];
-       u_short ether_type;
+       nd_byte     reserved[2];
+       nd_uint8_t  tag_flags_dev;
+       nd_uint8_t  port_trunc_codehi_cfi;
+       nd_uint8_t  pri_vidhi_codelo;
+       nd_uint8_t  vidlo;
+       nd_uint16_t ether_type;
 };
 
 /* Bytes 0 and 1 are reserved and should contain 0 */
-#define TAG(medsa)     (medsa->bytes[2] >> 6)
+#define TAG(medsa)     (EXTRACT_U_1(medsa->tag_flags_dev) >> 6)
 #define TAG_TO_CPU     0
 #define TAG_FROM_CPU   1
 #define TAG_FORWARD    3
-#define SRC_TAG(medsa) ((medsa->bytes[2] >> 5) & 0x01)
-#define SRC_DEV(medsa) (medsa->bytes[2] & 0x1f)
-#define SRC_PORT(medsa)        ((medsa->bytes[3] >> 3) & 0x01f)
-#define TRUNK(medsa)   ((medsa->bytes[3] >> 2) & 0x01)
-#define CODE(medsa)    ((medsa->bytes[3] & 0x06) |     \
-                        ((medsa->bytes[4] >> 4) & 0x01))
+#define SRC_TAG(medsa) ((EXTRACT_U_1(medsa->tag_flags_dev) >> 5) & 0x01)
+#define SRC_DEV(medsa) (EXTRACT_U_1(medsa->tag_flags_dev) & 0x1f)
+#define SRC_PORT(medsa)        ((EXTRACT_U_1(medsa->port_trunc_codehi_cfi) >> 3) & 0x01f)
+#define TRUNK(medsa)   ((EXTRACT_U_1(medsa->port_trunc_codehi_cfi) >> 2) & 0x01)
+#define CODE(medsa)    ((EXTRACT_U_1(medsa->port_trunc_codehi_cfi) & 0x06) |   \
+                        ((EXTRACT_U_1(medsa->pri_vidhi_codelo) >> 4) & 0x01))
 #define CODE_BDPU      0
 #define CODE_IGMP_MLD  2
 #define CODE_ARP_MIRROR        4
-#define CFI(medsa)     (medsa->bytes[3] & 0x01)
-#define PRI(medsa)     (medsa->bytes[4] >> 5)
-#define VID(medsa)     (((u_short)(medsa->bytes[4] & 0xf) << 8 |       \
-                         medsa->bytes[5]))
+#define CFI(medsa)     (EXTRACT_U_1(medsa->port_trunc_codehi_cfi) & 0x01)
+#define PRI(medsa)     (EXTRACT_U_1(medsa->pri_vidhi_codelo) >> 5)
+#define VID(medsa)     (((u_short)(EXTRACT_U_1(medsa->pri_vidhi_codelo) & 0xf) << 8 |  \
+                         EXTRACT_U_1(medsa->vidlo)))
 
 static const struct tok tag_values[] = {
        { TAG_TO_CPU, "To_CPU" },