[ovs-dev] [PATCH 2/2] datapath: Fix missing VLAN netlink attribute handling
Jesse Gross
jesse at nicira.com
Mon Jul 29 17:32:33 UTC 2013
On Sat, Jul 27, 2013 at 10:27 PM, Andy Zhou <azhou at 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.
More information about the dev
mailing list