summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2018-01-24 11:40:20 -0800
committerBen Pfaff <blp@ovn.org>2018-02-06 10:25:50 -0800
commitc645550bb2498fb3816b6a39b22bffeb3154dca3 (patch)
tree010f14a607e5d48eeecca446a8346e23f14f7025 /lib
parent687bafbb8a798dc0b2f65a14669501c44c01c0ed (diff)
downloadopenvswitch-c645550bb2498fb3816b6a39b22bffeb3154dca3.tar.gz
odp-util: Always report ODP_FIT_TOO_LITTLE for IGMP.
OVS datapaths don't understand or parse IGMP fields, but OVS userspace does, so this commit updates odp_flow_key_to_flow() to report that properly to the caller. Reported-by: Huanle Han <hanxueluo@gmail.com> Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2018-January/343665.html Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/odp-util.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/odp-util.c b/lib/odp-util.c
index 14d5af097..5da83b4c6 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -6210,6 +6210,11 @@ parse_l2_5_onward(const struct nlattr *attrs[OVS_KEY_ATTR_MAX + 1],
}
}
}
+ } else if (src_flow->nw_proto == IPPROTO_IGMP
+ && src_flow->dl_type == htons(ETH_TYPE_IP)) {
+ /* OVS userspace parses the IGMP type, code, and group, but its
+ * datapaths do not, so there is always missing information. */
+ return ODP_FIT_TOO_LITTLE;
}
if (is_mask && expected_bit != OVS_KEY_ATTR_UNSPEC) {
if ((flow->tp_src || flow->tp_dst) && flow->nw_proto != 0xff) {