meta-flow: Add OF1.2-like MFF_VLAN_VID and MFF_VLAN_PCP.
[openvswitch] / lib / flow.c
index 984f5d9805be09da8c98463b71a2bffb5e739aa9..6129703a2025314d1c644ecd5598c2b59981d6ac 100644 (file)
@@ -979,6 +979,17 @@ flow_set_dl_vlan(struct flow *flow, ovs_be16 vid)
     }
 }
 
+/* Sets the VLAN VID that 'flow' matches to 'vid', which is interpreted as an
+ * OpenFlow 1.2 "vlan_vid" value, that is, the low 13 bits of 'vlan_tci' (VID
+ * plus CFI). */
+void
+flow_set_vlan_vid(struct flow *flow, ovs_be16 vid)
+{
+    ovs_be16 mask = htons(VLAN_VID_MASK | VLAN_CFI);
+    flow->vlan_tci &= ~mask;
+    flow->vlan_tci |= vid & mask;
+}
+
 /* Sets the VLAN PCP that 'flow' matches to 'pcp', which should be in the
  * range 0...7.
  *