On Fri, Feb 7, 2025 at 8:09 AM Ales Musil <[email protected]> wrote:
> 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. */
>
I left a typo there, it should be: "Do not create flows for Geneve if the
TLV negotiation is not 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