With the comment below,

Acked-by: Jarno Rajahalme <ja...@ovn.org>

> On Dec 9, 2015, at 6:27 PM, Daniele Di Proietto <diproiet...@vmware.com> 
> wrote:
> 
> When converting between ODP attributes and struct flow_wildcards, we
> check that all the prerequisites are exact matched on the mask.
> 
> For ND(ICMPv6) attributes, an exact match on tp_src and tp_dst
> (which in this context are the icmp type and code) shold look like
> htons(0xff), not htons(0xffff).  Fix this in two places.
> 
> The consequences were that the datapath wouldn't match on the ND
> attributes, and the flow would get revalidated away.
> 

You mean that the datapath mask would not match the generated mask?

Also, adding a reference to the big comment in xlate_wc_finish() would be 
informative.

  Jarno

> Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com>
> ---
> lib/odp-util.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/odp-util.c b/lib/odp-util.c
> index 3717aee..fbc0788 100644
> --- a/lib/odp-util.c
> +++ b/lib/odp-util.c
> @@ -4358,8 +4358,8 @@ odp_flow_key_from_flow__(const struct 
> odp_flow_key_parms *parms,
>             if (flow->tp_dst == htons(0)
>                 && (flow->tp_src == htons(ND_NEIGHBOR_SOLICIT)
>                     || flow->tp_src == htons(ND_NEIGHBOR_ADVERT))
> -                && (!export_mask || (data->tp_src == htons(0xffff)
> -                                     && data->tp_dst == htons(0xffff)))) {
> +                && (!export_mask || (data->tp_src == htons(0xff)
> +                                     && data->tp_dst == htons(0xff)))) {
> 
>                 struct ovs_key_nd *nd_key;
> 
> @@ -4905,8 +4905,8 @@ parse_l2_5_onward(const struct nlattr 
> *attrs[OVS_KEY_ATTR_MAX + 1],
>                     flow->arp_tha = nd_key->nd_tll;
>                     if (is_mask) {
>                         if (!is_all_zeros(nd_key, sizeof *nd_key) &&
> -                            (flow->tp_src != htons(0xffff) ||
> -                             flow->tp_dst != htons(0xffff))) {
> +                            (flow->tp_src != htons(0xff) ||
> +                             flow->tp_dst != htons(0xff))) {
>                             return ODP_FIT_ERROR;
>                         } else {
>                             expected_attrs |= UINT64_C(1) << OVS_KEY_ATTR_ND;
> -- 
> 2.1.4
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to