[ovs-dev] [PATCH ovn] controller: keep mcast_query_list list in sync with sb configuration

Tim Rozet trozet at redhat.com
Wed Nov 17 21:43:56 UTC 2021


Thanks Mark and Lorenzo for the quick root cause and fix! Can you please
also apply to 20.12? We will need to backport this fix to older OCP
versions (4.8z and 4.7z).

Tim Rozet
Red Hat OpenShift Networking Team


On Wed, Nov 17, 2021 at 4:40 PM Mark Michelson <mmichels at redhat.com> wrote:

> I applied this to main and branch-21.09. If this should be backported
> further, please let me know.
>
> On 11/17/21 13:26, Mark Michelson wrote:
> > Thanks Lorenzo,
> >
> > Acked-by: Mark Michelson <mmichels at redhat.com>
> >
> > On 11/17/21 13:08, Lorenzo Bianconi wrote:
> >> In the current codebase mcast_query_list is updated only if IGMP
> >> snooping is enabled in ovn configuration. However querier configuration
> >> is always updated ending up having duplicated entries in
> >> mcast_query_list list. Fix the issue updating mcast_query_list list even
> >> if IGMP snoop is disabled.
> >>
> >> Tested-by: Tim Rozet <trozet at redhat.com>
> >> Fixes: 70ff824304 ("OVN: Add IGMP SB definitions and ovn-controller
> >> support")
> >> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> >> ---
> >>   controller/pinctrl.c | 24 ++++++++++++------------
> >>   1 file changed, 12 insertions(+), 12 deletions(-)
> >>
> >> diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> >> index 19ef5fa2a..ae5320e09 100644
> >> --- a/controller/pinctrl.c
> >> +++ b/controller/pinctrl.c
> >> @@ -4833,6 +4833,18 @@ static bool
> >>   ip_mcast_snoop_configure(struct ip_mcast_snoop *ip_ms,
> >>                            const struct ip_mcast_snoop_cfg *cfg)
> >>   {
> >> +    bool old_querier_enabled =
> >> +        (ip_ms->cfg.querier_v4_enabled ||
> >> ip_ms->cfg.querier_v6_enabled);
> >> +
> >> +    bool querier_enabled =
> >> +        (cfg->querier_v4_enabled || cfg->querier_v6_enabled);
> >> +
> >> +    if (old_querier_enabled && !querier_enabled) {
> >> +        ovs_list_remove(&ip_ms->query_node);
> >> +    } else if (!old_querier_enabled && querier_enabled) {
> >> +        ovs_list_push_back(&mcast_query_list, &ip_ms->query_node);
> >> +    }
> >> +
> >>       if (cfg->enabled) {
> >>           if (!ip_mcast_snoop_enable(ip_ms)) {
> >>               return false;
> >> @@ -4840,18 +4852,6 @@ ip_mcast_snoop_configure(struct ip_mcast_snoop
> >> *ip_ms,
> >>           if (ip_ms->cfg.seq_no != cfg->seq_no) {
> >>               ip_mcast_snoop_flush(ip_ms);
> >>           }
> >> -
> >> -        bool old_querier_enabled =
> >> -            (ip_ms->cfg.querier_v4_enabled ||
> >> ip_ms->cfg.querier_v6_enabled);
> >> -
> >> -        bool querier_enabled =
> >> -            (cfg->querier_v4_enabled || cfg->querier_v6_enabled);
> >> -
> >> -        if (old_querier_enabled && !querier_enabled) {
> >> -            ovs_list_remove(&ip_ms->query_node);
> >> -        } else if (!old_querier_enabled && querier_enabled) {
> >> -            ovs_list_push_back(&mcast_query_list, &ip_ms->query_node);
> >> -        }
> >>       } else {
> >>           ip_mcast_snoop_disable(ip_ms);
> >>           goto set_fields;
> >>
> >
>
>


More information about the dev mailing list