On Sat, Jul 27, 2013 at 10:27 PM, Andy Zhou <az...@nicira.com> wrote: > diff --git a/datapath/flow.c b/datapath/flow.c > index ba775f4..5ec1b69 100644 > --- a/datapath/flow.c > +++ b/datapath/flow.c > @@ -224,6 +224,15 @@ static bool ovs_match_validate(const struct > sw_flow_match *match, > return false; > } > > + if (match->mask && > + !(match->mask->key.eth.tci & htons(VLAN_TAG_PRESENT))) { > + OVS_NLERR("VLAN present bit can not be > wildcarded.\n"); > + /* Simply log error until user the space program is > + * fixed. Then we can switch to return false from > + * here. > + */ > + }
Can we just fix this? We already force the bit on for the value in userspace, it seems like we could do it for the mask at the same time. I think we could also simplify it by just removing the !is_mask test in the check in ovs_key_from_nlattrs(). > @@ -1317,6 +1326,7 @@ static int metadata_from_nlattrs(struct sw_flow_match > *match, u64 *attrs, > *attrs &= ~(1ULL << OVS_KEY_ATTR_IN_PORT); > } else if (!is_mask) { > SW_FLOW_KEY_PUT(match, phy.in_port, DP_MAX_PORTS, is_mask); > + SW_FLOW_KEY_PUT(match, phy.in_port, 0xffff, !is_mask); Can you put this in a separate patch? All of these attribute-not-present corner cases are getting really nasty and I think that the vlan issues are actually somewhat separate. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev