The negotiation for Geneve metadata TLV and the register allocation
might take a while after controller start, if we attempt to create
flood flows in that period we might end up crashing as the metadata
match helper asserts if the register is valid:
lib/tun-metadata.c:286: assertion idx < TUN_METADATA_NUM_OPTS failed in
metadata_loc_from_match()
Fixes: 7c3f7f415f1d ("northd, controller: Flood ARP and NA packet on transit
router.")
Signed-off-by: Ales Musil <[email protected]>
---
controller/physical.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/controller/physical.c b/controller/physical.c
index 5d088302a..0d4f99ff8 100644
--- a/controller/physical.c
+++ b/controller/physical.c
@@ -2475,6 +2475,11 @@ physical_eval_remote_chassis_flows(const struct
physical_ctx *ctx,
continue;
}
+ /* Do not create flows for Geneve if the TLV negotiation finished. */
+ if (tun->type == GENEVE && !ctx->mff_ovn_geneve) {
+ continue;
+ }
+
if (!(prev && prev->type == tun->type)) {
put_remote_chassis_flood_encap(egress_ofpacts, tun->type,
ctx->mff_ovn_geneve);
--
2.48.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev