On Mon, Sep 1, 2025 at 4:10 PM Lorenzo Bianconi via dev <
ovs-dev@openvswitch.org> wrote:

> Old kernels do not support netlink dump filtering. Moreover, the OVS
> route_table_dump_one_table() function doesn't pass the "filtered"
> argument to the handle_route_msg() callback. In order to fix the
> problem, always check the table_id is the expected one in
> handle_route_msg callback.
>
> Reported-at: https://issues.redhat.com/browse/FDP-1613
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianc...@redhat.com>
> ---
>  controller/route-exchange-netlink.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/controller/route-exchange-netlink.c
> b/controller/route-exchange-netlink.c
> index d786e44d6..cec4b1ec3 100644
> --- a/controller/route-exchange-netlink.c
> +++ b/controller/route-exchange-netlink.c
> @@ -201,6 +201,7 @@ struct route_msg_handle_data {
>      struct hmapx *routes_to_advertise;
>      struct vector *learned_routes;
>      const struct hmap *routes;
> +    uint32_t table_id; /* requested table id. */
>      int ret;
>  };
>
> @@ -212,6 +213,13 @@ handle_route_msg(const struct route_table_msg *msg,
> void *data)
>      struct advertise_route_entry *ar;
>      int err;
>
> +    if (handle_data->table_id != rd->rta_table_id) {
> +        /* We do not have the NLM_F_DUMP_FILTERED info here, so check if
> the
> +         * reported table_id matches the requested one.
> +         */
> +        return;
> +    }
> +
>      /* This route is not from us, so we learn it. */
>      if (rd->rtm_protocol != RTPROT_OVN) {
>          if (!handle_data->learned_routes) {
> @@ -293,6 +301,7 @@ re_nl_sync_routes(uint32_t table_id, const struct hmap
> *routes,
>          .routes_to_advertise = &routes_to_advertise,
>          .learned_routes = learned_routes,
>          .db = db,
> +        .table_id = table_id,
>      };
>      route_table_dump_one_table(table_id, handle_route_msg, &data);
>      ret = data.ret;
> @@ -333,6 +342,7 @@ re_nl_cleanup_routes(uint32_t table_id)
>      struct route_msg_handle_data data = {
>          .routes_to_advertise = NULL,
>          .learned_routes = NULL,
> +        .table_id = table_id,
>      };
>      route_table_dump_one_table(table_id, handle_route_msg, &data);
>
> --
> 2.50.1
>
> _______________________________________________
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
Looks good to me, thanks.
Acked-by: Ales Musil <amu...@redhat.com>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to