diff mbox series

[ovs-dev] ovn-nbctl: Fix removal of BFD entry on route deletion

Message ID 20221202203649.2070337-1-frode.nordahl@canonical.com
State Accepted
Headers show
Series [ovs-dev] ovn-nbctl: Fix removal of BFD entry on route deletion | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes success github build: passed

Commit Message

Frode Nordahl Dec. 2, 2022, 8:36 p.m. UTC
When creating a route with BFD, ovn-nbctl creates an entry both
in the Logical_Router_Static_Route and BFD tables.

However, before this patch, removing a route does not remove the
corresponding entry in the BFD table.

Fixes: c23a46839c44 ("ovn-nbctl: add --bfd option to lr-route-add")
Reported-at: https://bugs.launchpad.net/ubuntu/+source/ovn/+bug/1998617
Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
---
 tests/ovn-nbctl.at    | 6 ++++++
 utilities/ovn-nbctl.c | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

Comments

Dumitru Ceara Dec. 6, 2022, 12:47 p.m. UTC | #1
On 12/2/22 21:36, Frode Nordahl wrote:
> When creating a route with BFD, ovn-nbctl creates an entry both
> in the Logical_Router_Static_Route and BFD tables.
> 
> However, before this patch, removing a route does not remove the
> corresponding entry in the BFD table.
> 
> Fixes: c23a46839c44 ("ovn-nbctl: add --bfd option to lr-route-add")
> Reported-at: https://bugs.launchpad.net/ubuntu/+source/ovn/+bug/1998617
> Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
> ---

Looks good to me, thanks!

Acked-by: Dumitru Ceara <dceara@redhat.com>
Numan Siddique Dec. 7, 2022, 3:03 p.m. UTC | #2
On Tue, Dec 6, 2022 at 7:47 AM Dumitru Ceara <dceara@redhat.com> wrote:
>
> On 12/2/22 21:36, Frode Nordahl wrote:
> > When creating a route with BFD, ovn-nbctl creates an entry both
> > in the Logical_Router_Static_Route and BFD tables.
> >
> > However, before this patch, removing a route does not remove the
> > corresponding entry in the BFD table.
> >
> > Fixes: c23a46839c44 ("ovn-nbctl: add --bfd option to lr-route-add")
> > Reported-at: https://bugs.launchpad.net/ubuntu/+source/ovn/+bug/1998617
> > Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
> > ---
>
> Looks good to me, thanks!
>
> Acked-by: Dumitru Ceara <dceara@redhat.com>

Thanks applied to main and branch-22.12.  I'll backport until 22.03 soon.

Thanks
Numan

>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
diff mbox series

Patch

diff --git a/tests/ovn-nbctl.at b/tests/ovn-nbctl.at
index 9da7c26b3..91d8d338e 100644
--- a/tests/ovn-nbctl.at
+++ b/tests/ovn-nbctl.at
@@ -1614,6 +1614,7 @@  AT_CHECK([ovn-nbctl lr-route-add lr0 0.0.0.0/0 192.168.0.1])
 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.1.0/24 11.0.1.1 lp0])
 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.0.1/24 11.0.0.2])
 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.10.0/24 lp0])
+AT_CHECK([ovn-nbctl --bfd lr-route-add lr0 10.0.20.0/24 11.0.2.1 lp0])
 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.10.0/24 lp1], [1], [],
   [ovn-nbctl: bad IPv4 nexthop argument: lp1
 ])
@@ -1667,6 +1668,7 @@  Route Table <main>:
               10.0.0.0/24                  11.0.0.1 dst-ip
               10.0.1.0/24                  11.0.1.1 dst-ip lp0
              10.0.10.0/24                           dst-ip lp0
+             10.0.20.0/24                  11.0.2.1 dst-ip lp0 bfd
               20.0.0.0/24                   discard dst-ip
               9.16.1.0/24                  11.0.0.1 src-ip
               10.0.0.0/24                  11.0.0.2 src-ip
@@ -1674,6 +1676,10 @@  Route Table <main>:
                 0.0.0.0/0               192.168.0.1 dst-ip
 ])
 
+check_row_count nb:BFD 1
+AT_CHECK([ovn-nbctl lr-route-del lr0 10.0.20.0/24])
+check_row_count nb:BFD 0
+
 AT_CHECK([ovn-nbctl lrp-add lr0 lp1 f0:00:00:00:00:02 11.0.0.254/24])
 AT_CHECK([ovn-nbctl --may-exist lr-route-add lr0 10.0.0.111/24 11.0.0.1 lp1])
 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index 9e9b83ef1..3bc4a8d82 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -4426,6 +4426,8 @@  nbctl_pre_lr_route_del(struct ctl_context *ctx)
 
     ovsdb_idl_add_column(ctx->idl,
                          &nbrec_logical_router_static_route_col_policy);
+    ovsdb_idl_add_column(ctx->idl,
+                         &nbrec_logical_router_static_route_col_bfd);
     ovsdb_idl_add_column(ctx->idl,
                          &nbrec_logical_router_static_route_col_ip_prefix);
     ovsdb_idl_add_column(ctx->idl,
@@ -4438,7 +4440,7 @@  nbctl_pre_lr_route_del(struct ctl_context *ctx)
 }
 
 static void
-nbctl_lr_route_del(struct ctl_context *ctx)
+ nbctl_lr_route_del(struct ctl_context *ctx)
 {
     const struct nbrec_logical_router *lr;
     char *error = lr_by_name_or_uuid(ctx, ctx->argv[1], true, &lr);
@@ -4555,6 +4557,10 @@  nbctl_lr_route_del(struct ctl_context *ctx)
         }
 
         /* Everything matched. Removing. */
+        if (lr->static_routes[i]->bfd) {
+            nbrec_bfd_delete(lr->static_routes[i]->bfd);
+        }
+
         nbrec_logical_router_update_static_routes_delvalue(
             lr, lr->static_routes[i]);
         n_removed++;