diff mbox series

[ovs-dev] ovn-nbctl: dump next-hop for router policies

Message ID 543e5a3a2d6595fe1f2487f34c2867b704b6a929.1618260354.git.lorenzo.bianconi@redhat.com
State Superseded
Headers show
Series [ovs-dev] ovn-nbctl: dump next-hop for router policies | expand

Commit Message

Lorenzo Bianconi April 12, 2021, 9:12 p.m. UTC
Commit 35b00c7e79 ('northd: Add ECMP support to router policies.')
introduced 'nexthops' column in the Logical_Router_Policy table to
support ECMP for router policies however print_routing_policy() still
dumps legacy 'nexthop' column as policy next hop.
Fix the issue dumping 'nexthops' columns.

Fixes: 35b00c7e79 ('northd: Add ECMP support to router policies.')
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
---
 tests/ovn-northd.at   |  9 ++++++++-
 utilities/ovn-nbctl.c | 14 +++++++++-----
 2 files changed, 17 insertions(+), 6 deletions(-)

Comments

Mark Michelson April 20, 2021, 5:12 p.m. UTC | #1
Acked-by: Mark Michelson <mmichels@redhat.com>

See below for one tiny nit that doesn't affect the ACK-edness of the patch.

On 4/12/21 5:12 PM, Lorenzo Bianconi wrote:
> Commit 35b00c7e79 ('northd: Add ECMP support to router policies.')
> introduced 'nexthops' column in the Logical_Router_Policy table to
> support ECMP for router policies however print_routing_policy() still
> dumps legacy 'nexthop' column as policy next hop.
> Fix the issue dumping 'nexthops' columns.
> 
> Fixes: 35b00c7e79 ('northd: Add ECMP support to router policies.')
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
> ---
>   tests/ovn-northd.at   |  9 ++++++++-
>   utilities/ovn-nbctl.c | 14 +++++++++-----
>   2 files changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> index 96476497d..4a12b7fd6 100644
> --- a/tests/ovn-northd.at
> +++ b/tests/ovn-northd.at
> @@ -2485,6 +2485,13 @@ check ovn-nbctl lsp-set-options public-lr0 router-port=lr0-public
>   
>   check ovn-nbctl --wait=sb lr-policy-add lr0  10 "ip4.src == 10.0.0.3" reroute 172.168.0.101,172.168.0.102
>   
> +ovn-nbctl lr-policy-list lr0 > policy-list
> +AT_CAPTURE_FILE([policy-list])
> +AT_CHECK([cat policy-list], [0], [dnl
> +Routing Policies
> +        10                                ip4.src == 10.0.0.3         reroute             172.168.0.101, 172.168.0.102
> +])
> +
>   ovn-sbctl dump-flows lr0 > lr0flows3
>   AT_CAPTURE_FILE([lr0flows3])
>   
> @@ -2950,4 +2957,4 @@ wait_row_count FDB 0
>   ovn-sbctl list FDB
>   
>   AT_CLEANUP
> -])
> \ No newline at end of file
> +])

This should probably be undone.

> diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
> index 184058356..042c21002 100644
> --- a/utilities/ovn-nbctl.c
> +++ b/utilities/ovn-nbctl.c
> @@ -3865,11 +3865,15 @@ static void
>   print_routing_policy(const struct nbrec_logical_router_policy *policy,
>                        struct ds *s)
>   {
> -    if (policy->nexthop != NULL) {
> -        char *next_hop = normalize_prefix_str(policy->nexthop);
> -        ds_put_format(s, "%10"PRId64" %50s %15s %25s", policy->priority,
> -                      policy->match, policy->action, next_hop);
> -        free(next_hop);
> +    if (policy->n_nexthops) {
> +        ds_put_format(s, "%10"PRId64" %50s %15s", policy->priority,
> +                      policy->match, policy->action);
> +        for (int i = 0; i < policy->n_nexthops; i++) {
> +            char *next_hop = normalize_prefix_str(policy->nexthops[i]);
> +            char *fmt = i ? ", %s" : " %25s";
> +            ds_put_format(s, fmt, next_hop);
> +            free(next_hop);
> +        }
>       } else {
>           ds_put_format(s, "%10"PRId64" %50s %15s", policy->priority,
>                         policy->match, policy->action);
>
Lorenzo Bianconi April 20, 2021, 5:28 p.m. UTC | #2
> Acked-by: Mark Michelson <mmichels@redhat.com>
> 
> See below for one tiny nit that doesn't affect the ACK-edness of the patch.

ack, I will fix it in v2.

Regards,
Lorenzo

> 
> On 4/12/21 5:12 PM, Lorenzo Bianconi wrote:
> > Commit 35b00c7e79 ('northd: Add ECMP support to router policies.')
> > introduced 'nexthops' column in the Logical_Router_Policy table to
> > support ECMP for router policies however print_routing_policy() still
> > dumps legacy 'nexthop' column as policy next hop.
> > Fix the issue dumping 'nexthops' columns.
> > 
> > Fixes: 35b00c7e79 ('northd: Add ECMP support to router policies.')
> > Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
> > ---
> >   tests/ovn-northd.at   |  9 ++++++++-
> >   utilities/ovn-nbctl.c | 14 +++++++++-----
> >   2 files changed, 17 insertions(+), 6 deletions(-)
> > 
> > diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
> > index 96476497d..4a12b7fd6 100644
> > --- a/tests/ovn-northd.at
> > +++ b/tests/ovn-northd.at
> > @@ -2485,6 +2485,13 @@ check ovn-nbctl lsp-set-options public-lr0 router-port=lr0-public
> >   check ovn-nbctl --wait=sb lr-policy-add lr0  10 "ip4.src == 10.0.0.3" reroute 172.168.0.101,172.168.0.102
> > +ovn-nbctl lr-policy-list lr0 > policy-list
> > +AT_CAPTURE_FILE([policy-list])
> > +AT_CHECK([cat policy-list], [0], [dnl
> > +Routing Policies
> > +        10                                ip4.src == 10.0.0.3         reroute             172.168.0.101, 172.168.0.102
> > +])
> > +
> >   ovn-sbctl dump-flows lr0 > lr0flows3
> >   AT_CAPTURE_FILE([lr0flows3])
> > @@ -2950,4 +2957,4 @@ wait_row_count FDB 0
> >   ovn-sbctl list FDB
> >   AT_CLEANUP
> > -])
> > \ No newline at end of file
> > +])
> 
> This should probably be undone.
> 
> > diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
> > index 184058356..042c21002 100644
> > --- a/utilities/ovn-nbctl.c
> > +++ b/utilities/ovn-nbctl.c
> > @@ -3865,11 +3865,15 @@ static void
> >   print_routing_policy(const struct nbrec_logical_router_policy *policy,
> >                        struct ds *s)
> >   {
> > -    if (policy->nexthop != NULL) {
> > -        char *next_hop = normalize_prefix_str(policy->nexthop);
> > -        ds_put_format(s, "%10"PRId64" %50s %15s %25s", policy->priority,
> > -                      policy->match, policy->action, next_hop);
> > -        free(next_hop);
> > +    if (policy->n_nexthops) {
> > +        ds_put_format(s, "%10"PRId64" %50s %15s", policy->priority,
> > +                      policy->match, policy->action);
> > +        for (int i = 0; i < policy->n_nexthops; i++) {
> > +            char *next_hop = normalize_prefix_str(policy->nexthops[i]);
> > +            char *fmt = i ? ", %s" : " %25s";
> > +            ds_put_format(s, fmt, next_hop);
> > +            free(next_hop);
> > +        }
> >       } else {
> >           ds_put_format(s, "%10"PRId64" %50s %15s", policy->priority,
> >                         policy->match, policy->action);
> > 
>
diff mbox series

Patch

diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at
index 96476497d..4a12b7fd6 100644
--- a/tests/ovn-northd.at
+++ b/tests/ovn-northd.at
@@ -2485,6 +2485,13 @@  check ovn-nbctl lsp-set-options public-lr0 router-port=lr0-public
 
 check ovn-nbctl --wait=sb lr-policy-add lr0  10 "ip4.src == 10.0.0.3" reroute 172.168.0.101,172.168.0.102
 
+ovn-nbctl lr-policy-list lr0 > policy-list
+AT_CAPTURE_FILE([policy-list])
+AT_CHECK([cat policy-list], [0], [dnl
+Routing Policies
+        10                                ip4.src == 10.0.0.3         reroute             172.168.0.101, 172.168.0.102
+])
+
 ovn-sbctl dump-flows lr0 > lr0flows3
 AT_CAPTURE_FILE([lr0flows3])
 
@@ -2950,4 +2957,4 @@  wait_row_count FDB 0
 ovn-sbctl list FDB
 
 AT_CLEANUP
-])
\ No newline at end of file
+])
diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c
index 184058356..042c21002 100644
--- a/utilities/ovn-nbctl.c
+++ b/utilities/ovn-nbctl.c
@@ -3865,11 +3865,15 @@  static void
 print_routing_policy(const struct nbrec_logical_router_policy *policy,
                      struct ds *s)
 {
-    if (policy->nexthop != NULL) {
-        char *next_hop = normalize_prefix_str(policy->nexthop);
-        ds_put_format(s, "%10"PRId64" %50s %15s %25s", policy->priority,
-                      policy->match, policy->action, next_hop);
-        free(next_hop);
+    if (policy->n_nexthops) {
+        ds_put_format(s, "%10"PRId64" %50s %15s", policy->priority,
+                      policy->match, policy->action);
+        for (int i = 0; i < policy->n_nexthops; i++) {
+            char *next_hop = normalize_prefix_str(policy->nexthops[i]);
+            char *fmt = i ? ", %s" : " %25s";
+            ds_put_format(s, fmt, next_hop);
+            free(next_hop);
+        }
     } else {
         ds_put_format(s, "%10"PRId64" %50s %15s", policy->priority,
                       policy->match, policy->action);