mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 05:47:55 +00:00
odp-util: Include tun_id when nonzero even if "key" flag not set.
When a flow_tnl is being translated to Netlink attributes, the tun_id field was included only if the FLOW_TNL_F_KEY flag was set. This meant that for a mask, where one would not necessarily expect that flag to be set even if there were a key, the tun_id could be omitted even if it were nonzero. This led to kernel flows that did not match on a field that was required to be matched (possibly causing incorrect treatment of packets) and premature deletion of kernel flows due to mask mismatch. This commit fixes the problem. Bug #1192516. Reported-by: Krishna Miriyala <miriyalak@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
parent
77587e0fef
commit
27a8cbbc8e
@ -872,7 +872,8 @@ tun_key_to_attr(struct ofpbuf *a, const struct flow_tnl *tun_key)
|
||||
|
||||
tun_key_ofs = nl_msg_start_nested(a, OVS_KEY_ATTR_TUNNEL);
|
||||
|
||||
if (tun_key->flags & FLOW_TNL_F_KEY) {
|
||||
/* tun_id != 0 without FLOW_TNL_F_KEY is valid if tun_key is a mask. */
|
||||
if (tun_key->tun_id || tun_key->flags & FLOW_TNL_F_KEY) {
|
||||
nl_msg_put_be64(a, OVS_TUNNEL_KEY_ATTR_ID, tun_key->tun_id);
|
||||
}
|
||||
if (tun_key->ip_src) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user