mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
odp-util: Fix converting masked VLAN from flow.
When converting the VLAN from a flow to an ODP key, the processing logic would always store the VLAN ethertype. However, when handling a mask, it should be a mask, not an ethertype. And since we don't support bit-wise masking of the ethertype, just make it an exact-match mask. Signed-off-by: Justin Pettit <jpettit@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
@@ -2285,7 +2285,11 @@ odp_flow_key_from_flow__(struct ofpbuf *buf, const struct flow *data,
|
||||
memcpy(eth_key->eth_dst, data->dl_dst, ETH_ADDR_LEN);
|
||||
|
||||
if (flow->vlan_tci != htons(0) || flow->dl_type == htons(ETH_TYPE_VLAN)) {
|
||||
nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, htons(ETH_TYPE_VLAN));
|
||||
if (is_mask) {
|
||||
nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, htons(UINT16_MAX));
|
||||
} else {
|
||||
nl_msg_put_be16(buf, OVS_KEY_ATTR_ETHERTYPE, htons(ETH_TYPE_VLAN));
|
||||
}
|
||||
nl_msg_put_be16(buf, OVS_KEY_ATTR_VLAN, data->vlan_tci);
|
||||
encap = nl_msg_start_nested(buf, OVS_KEY_ATTR_ENCAP);
|
||||
if (flow->vlan_tci == htons(0)) {
|
||||
|
Reference in New Issue
Block a user