Acked-by: Ethan Jackson <et...@nicira.com>
On Sat, Mar 1, 2014 at 5:25 PM, Ben Pfaff <b...@nicira.com> wrote: > 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 <miriya...@vmware.com> > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > lib/odp-util.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/lib/odp-util.c b/lib/odp-util.c > index d86dbbb..463f008 100644 > --- a/lib/odp-util.c > +++ b/lib/odp-util.c > @@ -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) { > -- > 1.8.5.3 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev