On Thu, Mar 17, 2022 at 11:46 AM Numan Siddique <num...@ovn.org> wrote:
>
> On Wed, Mar 9, 2022 at 4:39 AM Dumitru Ceara <dce...@redhat.com> wrote:
> >
> > This is not supported and ovn-northd was not logging it properly.
> > The previous attempt tried to log in init_nat_entries() but there
> > the logical router port configuration has not yet been parsed.
> >
> > Move the check and log instead to where we install the NAT flows.
> > Also add a test.
> >
> > Fixes: 15348b7b806f ("ovn-northd: Multiple distributed gateway port 
> > support.")
> > Signed-off-by: Dumitru Ceara <dce...@redhat.com>
>
> Thanks.  Applied to the main branch.

Also backported to branch-22.03 and branch-21.12.

Numan

>
> Numan
>
>
> > ---
> >  northd/northd.c     | 22 ++++++++++++----------
> >  tests/ovn-northd.at |  6 ++++++
> >  2 files changed, 18 insertions(+), 10 deletions(-)
> >
> > diff --git a/northd/northd.c b/northd/northd.c
> > index b264fb850b..7f309098e1 100644
> > --- a/northd/northd.c
> > +++ b/northd/northd.c
> > @@ -763,16 +763,6 @@ init_nat_entries(struct ovn_datapath *od)
> >          return;
> >      }
> >
> > -    if (od->n_l3dgw_ports > 1) {
> > -        static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
> > -        VLOG_WARN_RL(&rl, "NAT is configured on logical router %s, which 
> > has %"
> > -                     PRIuSIZE" distributed gateway ports. NAT is not 
> > supported"
> > -                     " yet when there is more than one distributed gateway 
> > "
> > -                     "port on the router.",
> > -                     od->nbr->name, od->n_l3dgw_ports);
> > -        return;
> > -    }
> > -
> >      od->nat_entries = xmalloc(od->nbr->n_nat * sizeof *od->nat_entries);
> >
> >      for (size_t i = 0; i < od->nbr->n_nat; i++) {
> > @@ -13243,6 +13233,18 @@ build_lrouter_nat_defrag_and_lb(struct 
> > ovn_datapath *od, struct hmap *lflows,
> >          return;
> >      }
> >
> > +    /* NAT rules are not currently supported on logical routers with 
> > multiple
> > +     * distributed gateway ports. */
> > +    if (od->n_l3dgw_ports > 1) {
> > +        static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
> > +        VLOG_WARN_RL(&rl, "NAT is configured on logical router %s, which 
> > has %"
> > +                     PRIuSIZE" distributed gateway ports. NAT is not 
> > supported"
> > +                     " yet when there is more than one distributed gateway 
> > "
> > +                     "port on the router.",
> > +                     od->nbr->name, od->n_l3dgw_ports);
> > +        return;
> > +    }
> > +
> >      struct sset nat_entries = SSET_INITIALIZER(&nat_entries);
> >
> >      bool dnat_force_snat_ip =
> > diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> > index 60d91a7717..17d4f31b39 100644
> > --- a/tests/ovn-northd.at
> > +++ b/tests/ovn-northd.at
> > @@ -5804,6 +5804,12 @@ AT_CHECK([grep lr_in_gw_redirect lrflows | grep 
> > cr-DR | sed 's/table=../table=??
> >    table=??(lr_in_gw_redirect  ), priority=50   , match=(outport == 
> > "DR-S3"), action=(outport = "cr-DR-S3"; next;)
> >  ])
> >
> > +# Check that ovn-northd logs a warning when trying to configure NAT
> > +# on the router with multiple distributed gw ports.  Such configurations 
> > are
> > +# not supported yet.
> > +check ovn-nbctl lr-nat-add DR dnat_and_snat 42.42.42.1 20.0.0.2
> > +AT_CHECK([grep -q 'NAT is configured on logical router DR, which has 2 
> > distributed gateway ports. NAT is not supported yet when there is more than 
> > one distributed gateway port on the router.' northd/ovn-northd.log], [0])
> > +
> >  AT_CLEANUP
> >  ])
> >
> > --
> > 2.27.0
> >
> > _______________________________________________
> > dev mailing list
> > d...@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to