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 <[email protected]>
Reported-at: 
https://mail.openvswitch.org/pipermail/ovs-dev/2018-January/343665.html
Signed-off-by: Ben Pfaff <[email protected]>
---
 lib/odp-util.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/odp-util.c b/lib/odp-util.c
index 6a29a76de5cd..67fd538e8aea 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) {
-- 
2.10.2

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to