Re: [PATCHv3 net] openvswitch: Don't validate IPv6 label masks.
From: Pravin Shelar <hidden>
Date: 2014-11-19 22:05:13
Also in:
lkml
On Wed, Nov 19, 2014 at 1:54 PM, Joe Stringer [off-list ref] wrote:
When userspace doesn't provide a mask, OVS datapath generates a fully unwildcarded mask for the flow by copying the flow and setting all bits in all fields. For IPv6 label, this creates a mask that matches on the upper 12 bits, causing the following error: openvswitch: netlink: Invalid IPv6 flow label value (value=ffffffff, max=fffff) This patch ignores the label validation check for masks, avoiding this error. Signed-off-by: Joe Stringer <redacted>
Thanks for the fix. Acked-by: Pravin B Shelar <redacted>
quoted hunk ↗ jump to hunk
--- v3: Alternative approach. Was "openvswitch: Fix mask generation for IPv6 labels." v2: OR lower 20 bits (upper 12 bits remain from earlier memdup) --- net/openvswitch/flow_netlink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c index fa4ec2e..089b195 100644 --- a/net/openvswitch/flow_netlink.c +++ b/net/openvswitch/flow_netlink.c@@ -690,7 +690,7 @@ static int ovs_key_from_nlattrs(struct sw_flow_match *match, u64 attrs, return -EINVAL; } - if (ipv6_key->ipv6_label & htonl(0xFFF00000)) { + if (!is_mask && ipv6_key->ipv6_label & htonl(0xFFF00000)) { OVS_NLERR("IPv6 flow label %x is out of range (max=%x).\n", ntohl(ipv6_key->ipv6_label), (1 << 20) - 1); return -EINVAL; --1.7.10.4