- * 3. The fields in 'wildcards' masked by OFPFW_NW_SRC_MASK and
- * OFPFW_NW_DST_MASK have values between 0 and 32, inclusive.
+ * These are used only internally to Open vSwitch, in the 'wildcards' member of
+ * struct flow_wildcards. They never appear in the wire protocol in this
+ * form. */
+
+typedef unsigned int OVS_BITWISE flow_wildcards_t;
+
+/* Same values and meanings as corresponding OFPFW10_* bits. */
+#define FWW_IN_PORT ((OVS_FORCE flow_wildcards_t) (1 << 0))
+#define FWW_DL_TYPE ((OVS_FORCE flow_wildcards_t) (1 << 4))
+#define FWW_NW_PROTO ((OVS_FORCE flow_wildcards_t) (1 << 5))
+/* No corresponding OFPFW10_* bits. */
+#define FWW_NW_DSCP ((OVS_FORCE flow_wildcards_t) (1 << 1))
+#define FWW_NW_ECN ((OVS_FORCE flow_wildcards_t) (1 << 2))
+#define FWW_ARP_SHA ((OVS_FORCE flow_wildcards_t) (1 << 3))
+#define FWW_ARP_THA ((OVS_FORCE flow_wildcards_t) (1 << 6))
+#define FWW_NW_TTL ((OVS_FORCE flow_wildcards_t) (1 << 7))
+#define FWW_ALL ((OVS_FORCE flow_wildcards_t) (((1 << 8)) - 1))
+
+/* Remember to update FLOW_WC_SEQ when adding or removing FWW_*. */
+BUILD_ASSERT_DECL(FWW_ALL == ((1 << 8) - 1) && FLOW_WC_SEQ == 13);
+
+/* Information on wildcards for a flow, as a supplement to "struct flow".