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