mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
tc flower: reorder tunnel encap/decap actions
The tc_flower conversion struct does not consider the order of actions. If an OvS rule matches on a tunnel (decap) and outputs to a new tunnel, the netlink conversion to TC will add the set tunnel key action before the unset, leading to an incorrect TC rule. This patch reorders the netlink generation to ensure a decap is done before an encap if both exist. Signed-off-by: John Hurley <john.hurley@netronome.com> Signed-off-by: Simon Horman <simon.horman@netronome.com>
This commit is contained in:
committed by
Simon Horman
parent
cf372495c8
commit
23e670c478
10
lib/tc.c
10
lib/tc.c
@@ -1379,6 +1379,11 @@ nl_msg_put_flower_acts(struct ofpbuf *request, struct tc_flower *flower)
|
||||
nl_msg_end_nested(request, act_offset);
|
||||
}
|
||||
}
|
||||
if (flower->tunnel.tunnel) {
|
||||
act_offset = nl_msg_start_nested(request, act_index++);
|
||||
nl_msg_put_act_tunnel_key_release(request);
|
||||
nl_msg_end_nested(request, act_offset);
|
||||
}
|
||||
if (flower->set.set) {
|
||||
act_offset = nl_msg_start_nested(request, act_index++);
|
||||
nl_msg_put_act_tunnel_key_set(request, flower->set.id,
|
||||
@@ -1389,11 +1394,6 @@ nl_msg_put_flower_acts(struct ofpbuf *request, struct tc_flower *flower)
|
||||
flower->set.tp_dst);
|
||||
nl_msg_end_nested(request, act_offset);
|
||||
}
|
||||
if (flower->tunnel.tunnel) {
|
||||
act_offset = nl_msg_start_nested(request, act_index++);
|
||||
nl_msg_put_act_tunnel_key_release(request);
|
||||
nl_msg_end_nested(request, act_offset);
|
||||
}
|
||||
if (flower->vlan_pop) {
|
||||
act_offset = nl_msg_start_nested(request, act_index++);
|
||||
nl_msg_put_act_pop_vlan(request);
|
||||
|
Reference in New Issue
Block a user