Skip to content

Commit

Permalink
physical: Do not create flood flows without Geneve metadata register.
Browse files Browse the repository at this point in the history
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: 7c3f7f4 ("northd, controller: Flood ARP and NA packet on transit router.")
Signed-off-by: Ales Musil <amusil@redhat.com>
Acked-by: Mark Michelson <mmichels@redhat.com>
Signed-off-by: Mark Michelson <mmichels@redhat.com>
  • Loading branch information
almusil authored and putnopvut committed Feb 7, 2025
1 parent 059763e commit 165b176
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions controller/physical.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 165b176

Please sign in to comment.