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

Reply via email to