+ * 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 OFPFW_* bits. */
+#define FWW_IN_PORT ((OVS_FORCE flow_wildcards_t) (1 << 0))
+#define FWW_DL_SRC ((OVS_FORCE flow_wildcards_t) (1 << 2))
+#define FWW_DL_DST ((OVS_FORCE flow_wildcards_t) (1 << 3))
+ /* excluding the multicast bit */
+#define FWW_DL_TYPE ((OVS_FORCE flow_wildcards_t) (1 << 4))
+#define FWW_NW_PROTO ((OVS_FORCE flow_wildcards_t) (1 << 5))
+#define FWW_TP_SRC ((OVS_FORCE flow_wildcards_t) (1 << 6))
+#define FWW_TP_DST ((OVS_FORCE flow_wildcards_t) (1 << 7))
+/* No corresponding OFPFW_* bits. */
+#define FWW_ETH_MCAST ((OVS_FORCE flow_wildcards_t) (1 << 1))
+ /* multicast bit only */
+#define FWW_ARP_SHA ((OVS_FORCE flow_wildcards_t) (1 << 8))
+#define FWW_ARP_THA ((OVS_FORCE flow_wildcards_t) (1 << 9))
+#define FWW_ND_TARGET ((OVS_FORCE flow_wildcards_t) (1 << 10))
+#define FWW_IPV6_LABEL ((OVS_FORCE flow_wildcards_t) (1 << 11))
+#define FWW_NW_TTL ((OVS_FORCE flow_wildcards_t) (1 << 12))
+#define FWW_NW_DSCP ((OVS_FORCE flow_wildcards_t) (1 << 13))
+#define FWW_NW_ECN ((OVS_FORCE flow_wildcards_t) (1 << 14))
+#define FWW_ALL ((OVS_FORCE flow_wildcards_t) (((1 << 15)) - 1))
+
+/* Remember to update FLOW_WC_SEQ when adding or removing FWW_*. */
+BUILD_ASSERT_DECL(FWW_ALL == ((1 << 15) - 1) && FLOW_WC_SEQ == 7);
+
+/* Information on wildcards for a flow, as a supplement to "struct flow".