aboutsummaryrefslogtreecommitdiff
path: root/lib/meta-flow.h
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2012-06-27 07:23:25 -0700
committerBen Pfaff <blp@nicira.com>2012-06-27 07:24:28 -0700
commit0d7e2fe4d5decafe1d52c4dbdb0d77d17ac53a80 (patch)
treeb2e56f16f6cfaf112be3e9008f9832fd1799323d /lib/meta-flow.h
parent2716c204ed47c5f572e3d1a0138c964f44be90af (diff)
lib/meta-flow: introduce a macro, CASE_MFF_REGS, to catch "case MFF_REG<N>:"
Introduce a macro instead for With this macro, the code is a bit reduced. test: compile-tested and unit tests passed. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> [blp@nicira.com moved the macro declaration, moved trailing colon from macro definition to invocation, adjusted style slightly] Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib/meta-flow.h')
-rw-r--r--lib/meta-flow.h37
1 files changed, 34 insertions, 3 deletions
diff --git a/lib/meta-flow.h b/lib/meta-flow.h
index 0967633f..d3d56d89 100644
--- a/lib/meta-flow.h
+++ b/lib/meta-flow.h
@@ -59,9 +59,6 @@ enum mf_field_id {
#if FLOW_N_REGS > 7
MFF_REG7, /* be32 */
#endif
-#if FLOW_N_REGS > 8
-#error
-#endif
/* L2. */
MFF_ETH_SRC, /* mac */
@@ -113,6 +110,40 @@ enum mf_field_id {
MFF_N_IDS
};
+/* Use this macro as CASE_MFF_REGS: in a switch statement to choose all of the
+ * MFF_REGx cases. */
+#if FLOW_N_REGS == 1
+# define CASE_MFF_REGS \
+ case MFF_REG0
+#elif FLOW_N_REGS == 2
+# define CASE_MFF_REGS \
+ case MFF_REG0: case MFF_REG1
+#elif FLOW_N_REGS == 3
+# define CASE_MFF_REGS \
+ case MFF_REG0: case MFF_REG1: case MFF_REG2
+#elif FLOW_N_REGS == 4
+# define CASE_MFF_REGS \
+ case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3
+#elif FLOW_N_REGS == 5
+# define CASE_MFF_REGS \
+ case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
+ case MFF_REG4
+#elif FLOW_N_REGS == 6
+# define CASE_MFF_REGS \
+ case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
+ case MFF_REG4: case MFF_REG5
+#elif FLOW_N_REGS == 7
+# define CASE_MFF_REGS \
+ case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
+ case MFF_REG4: case MFF_REG5: case MFF_REG6
+#elif FLOW_N_REGS == 8
+# define CASE_MFF_REGS \
+ case MFF_REG0: case MFF_REG1: case MFF_REG2: case MFF_REG3: \
+ case MFF_REG4: case MFF_REG5: case MFF_REG6: case MFF_REG7
+#else
+# error
+#endif
+
/* Prerequisites for matching a field.
*
* A field may only be matched if the correct lower-level protocols are also