The function nx_put_raw() shouldn't append "ct_nw_proto" to nx_match if
the corresponding mask isn't set.

Signed-off-by: Justin Pettit <[email protected]>
---
 lib/nx-match.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/nx-match.c b/lib/nx-match.c
index cb0cad8458b9..c64953b8892b 100644
--- a/lib/nx-match.c
+++ b/lib/nx-match.c
@@ -1190,7 +1190,9 @@ nx_put_raw(struct ofpbuf *b, enum ofp_version oxm, const 
struct match *match,
     nxm_put_ipv6(&ctx, MFF_CT_IPV6_DST, oxm,
                  &flow->ct_ipv6_dst, &match->wc.masks.ct_ipv6_dst);
     if (flow->ct_nw_proto) {
-        nxm_put_8(&ctx, MFF_CT_NW_PROTO, oxm, flow->ct_nw_proto);
+        if (match->wc.masks.ct_nw_proto) {
+            nxm_put_8(&ctx, MFF_CT_NW_PROTO, oxm, flow->ct_nw_proto);
+        }
         nxm_put_16m(&ctx, MFF_CT_TP_SRC, oxm,
                     flow->ct_tp_src, match->wc.masks.ct_tp_src);
         nxm_put_16m(&ctx, MFF_CT_TP_DST, oxm,
-- 
2.7.4

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

Reply via email to