On Thu, Feb 12, 2015 at 09:47:32PM +0800, Kmindg wrote:
> Bitwise not operator has higher precedence than Bitwise right shift
> operator, so the MFF_IP_DSCP_SHIFTED case always returns true currently.
> 
> Signed-off-by: Kmindg <kmi...@gmail.com>

Thanks for the report.  I don't see the problem yet.  Can you help?
Here is my logic:

IP_DSCP_MASK is 0xfc, which is 11111100.
(~11111100) >> 2 == (...111111100000011 >> 2) == 11000000 to 8 bits.
~(11111100 >> 2) == ~111111 == 11000000 to 8 bits.

Thanks,

Ben.

> ---
>  lib/meta-flow.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/meta-flow.c b/lib/meta-flow.c
> index 9ce4cfe..6576336 100644
> --- a/lib/meta-flow.c
> +++ b/lib/meta-flow.c
> @@ -416,7 +416,7 @@ mf_is_value_valid(const struct mf_field *mf, const union 
> mf_value *value)
>      case MFF_IP_DSCP:
>          return !(value->u8 & ~IP_DSCP_MASK);
>      case MFF_IP_DSCP_SHIFTED:
> -        return !(value->u8 & (~IP_DSCP_MASK >> 2));
> +        return !(value->u8 & ~(IP_DSCP_MASK >> 2));
>      case MFF_IP_ECN:
>          return !(value->u8 & ~IP_ECN_MASK);
>      case MFF_IP_FRAG:
> -- 
> 2.3.0
> 
> _______________________________________________
> 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