Blob Blame History Raw
From 84704b5236952e3a7c191b4b23f5af574f5840d9 Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@ovn.org>
Date: Mon, 18 Nov 2019 20:27:12 -0500
Subject: [PATCH 1/2] northd: Match IPv4 or IPv6 for MAC resolution

While debugging some problems in a cluster using ovn-kubernetes, I
noticed that we're creating two conflicting logical flows.  These two
flows only matched on the destination MAC address.  It was not
deterministic whether you'd hit the IPv4 (ARP) or IPv6 (NS) version.

This change adds an ip4 or ip6 match to each flow as appropriate.

Signed-off-by: Russell Bryant <russell@ovn.org>
---
 ovn/northd/ovn-northd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index cb12be3ca..bcadcca3d 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -8661,7 +8661,7 @@ build_lrouter_flows(struct hmap *datapaths, struct hmap *ports,
         }
 
         ovn_lflow_add(lflows, od, S_ROUTER_IN_ARP_REQUEST, 100,
-                      "eth.dst == 00:00:00:00:00:00",
+                      "eth.dst == 00:00:00:00:00:00 && ip4",
                       "arp { "
                       "eth.dst = ff:ff:ff:ff:ff:ff; "
                       "arp.spa = reg1; "
@@ -8670,7 +8670,7 @@ build_lrouter_flows(struct hmap *datapaths, struct hmap *ports,
                       "output; "
                       "};");
         ovn_lflow_add(lflows, od, S_ROUTER_IN_ARP_REQUEST, 100,
-                      "eth.dst == 00:00:00:00:00:00",
+                      "eth.dst == 00:00:00:00:00:00 && ip6",
                       "nd_ns { "
                       "nd.target = xxreg0; "
                       "output; "
-- 
2.23.0