diff mbox series

[ovs-dev,v5,2/6] dpctl: Allow the default CT zone limit to de deleted.

Message ID 20231018075634.75983-3-amusil@redhat.com
State Changes Requested
Delegated to: Ilya Maximets
Headers show
Series Expose CT limit via DB | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/intel-ovs-compilation success test: success

Commit Message

Ales Musil Oct. 18, 2023, 7:56 a.m. UTC
Add optional argument to dpctl ct-del-limits called
"default", which allows to remove the default limit
making it effectively system default.

Signed-off-by: Ales Musil <amusil@redhat.com>
---
v5: Rebase on top of current master.
    Address comments from Ilya:
    - Correct the NEWS entry.
    - Fix style related problems.
---
 NEWS                    |  3 +++
 lib/dpctl.c             | 21 +++++++++++++++------
 tests/system-traffic.at | 26 ++++++++++++++++++++++++++
 3 files changed, 44 insertions(+), 6 deletions(-)

Comments

Ilya Maximets Oct. 25, 2023, 11:39 a.m. UTC | #1
On 10/18/23 09:56, Ales Musil wrote:
> Add optional argument to dpctl ct-del-limits called
> "default", which allows to remove the default limit
> making it effectively system default.
> 
> Signed-off-by: Ales Musil <amusil@redhat.com>
> ---
> v5: Rebase on top of current master.
>     Address comments from Ilya:
>     - Correct the NEWS entry.
>     - Fix style related problems.
> ---
>  NEWS                    |  3 +++
>  lib/dpctl.c             | 21 +++++++++++++++------
>  tests/system-traffic.at | 26 ++++++++++++++++++++++++++
>  3 files changed, 44 insertions(+), 6 deletions(-)

Hi, Ales.  Thanks for the patch!
It may need some extra changes in zone_limit_delete() though.
While removing a defualt zone it will now log zone '-1', which
is not particularly user-friendly.  Also, the second time we'll
try to remove the default limit the command will fail unable to
find the entry for the default zone.  It probably shouldn't fail,
because default zone limit is always there, even if unlimited.
We do always report a default value even if it wasn't configured.

Best regards, Ilya Maximets.
Ales Musil Nov. 2, 2023, 11:58 a.m. UTC | #2
On Wed, Oct 25, 2023 at 1:39 PM Ilya Maximets <i.maximets@ovn.org> wrote:
>
> On 10/18/23 09:56, Ales Musil wrote:
> > Add optional argument to dpctl ct-del-limits called
> > "default", which allows to remove the default limit
> > making it effectively system default.
> >
> > Signed-off-by: Ales Musil <amusil@redhat.com>
> > ---
> > v5: Rebase on top of current master.
> >     Address comments from Ilya:
> >     - Correct the NEWS entry.
> >     - Fix style related problems.
> > ---
> >  NEWS                    |  3 +++
> >  lib/dpctl.c             | 21 +++++++++++++++------
> >  tests/system-traffic.at | 26 ++++++++++++++++++++++++++
> >  3 files changed, 44 insertions(+), 6 deletions(-)
>
> Hi, Ales.  Thanks for the patch!
> It may need some extra changes in zone_limit_delete() though.
> While removing a defualt zone it will now log zone '-1', which
> is not particularly user-friendly.  Also, the second time we'll
> try to remove the default limit the command will fail unable to
> find the entry for the default zone.  It probably shouldn't fail,
> because default zone limit is always there, even if unlimited.
> We do always report a default value even if it wasn't configured.
>
> Best regards, Ilya Maximets.
>

Thank you for the review.

I made the change so it behaves the same way as before, meaning it
doesn't report anything for the default zone.

Thanks,
Ales


--

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA

amusil@redhat.com
diff mbox series

Patch

diff --git a/NEWS b/NEWS
index 6b45492f1..7bc27b687 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,9 @@  Post-v3.2.0
        from older version is supported but it may trigger more leader elections
        during the process, and error logs complaining unrecognized fields may
        be observed on old nodes.
+   - ovs-appctl:
+     * Added support removal of default CT zone limit, e.g.
+       "ovs-appctl dpctl/ct-del-limits default".
 
 
 v3.2.0 - 17 Aug 2023
diff --git a/lib/dpctl.c b/lib/dpctl.c
index 76f21a530..a8c654747 100644
--- a/lib/dpctl.c
+++ b/lib/dpctl.c
@@ -2291,14 +2291,23 @@  dpctl_ct_del_limits(int argc, const char *argv[],
     int i =  dp_arg_exists(argc, argv) ? 2 : 1;
     struct ovs_list zone_limits = OVS_LIST_INITIALIZER(&zone_limits);
 
-    error = opt_dpif_open(argc, argv, dpctl_p, 3, &dpif);
+    error = opt_dpif_open(argc, argv, dpctl_p, 4, &dpif);
     if (error) {
         return error;
     }
 
-    error = parse_ct_limit_zones(argv[i], &zone_limits, &ds);
-    if (error) {
-        goto error;
+    /* Parse default limit. */
+    if (!strcmp(argv[i], "default")) {
+        ct_dpif_push_zone_limit(&zone_limits, OVS_ZONE_LIMIT_DEFAULT_ZONE,
+                                0, 0);
+        i++;
+    }
+
+    if (argc > i) {
+        error = parse_ct_limit_zones(argv[i], &zone_limits, &ds);
+        if (error) {
+            goto error;
+        }
     }
 
     error = ct_dpif_del_limits(dpif, &zone_limits);
@@ -3031,8 +3040,8 @@  static const struct dpctl_command all_commands[] = {
     { "ct-get-tcp-seq-chk", "[dp]", 0, 1, dpctl_ct_get_tcp_seq_chk, DP_RO },
     { "ct-set-limits", "[dp] [default=L] [zone=N,limit=L]...", 1, INT_MAX,
         dpctl_ct_set_limits, DP_RO },
-    { "ct-del-limits", "[dp] zone=N1[,N2]...", 1, 2, dpctl_ct_del_limits,
-        DP_RO },
+    { "ct-del-limits", "[dp] [default] [zone=N1[,N2]...]", 1, 3,
+        dpctl_ct_del_limits, DP_RO },
     { "ct-get-limits", "[dp] [zone=N1[,N2]...]", 0, 2, dpctl_ct_get_limits,
         DP_RO },
     { "ct-get-sweep-interval", "[dp]", 0, 1, dpctl_ct_get_sweep, DP_RO },
diff --git a/tests/system-traffic.at b/tests/system-traffic.at
index 418cd32fe..25e8c3f75 100644
--- a/tests/system-traffic.at
+++ b/tests/system-traffic.at
@@ -5195,6 +5195,32 @@  udp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=1,dport=3),reply=(src=10.1.1.4,dst=10.
 udp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=1,dport=4),reply=(src=10.1.1.4,dst=10.1.1.3,sport=4,dport=1),zone=3
 ])
 
+dnl Test ct-del-limits for default zone.
+
+AT_CHECK([ovs-appctl dpctl/ct-set-limits default=15 zone=4,limit=4])
+AT_CHECK([ovs-appctl dpctl/ct-get-limits zone=4], [0], [dnl
+default limit=15
+zone=4,limit=4,count=0
+])
+
+AT_CHECK([ovs-appctl dpctl/ct-del-limits default])
+AT_CHECK([ovs-appctl dpctl/ct-get-limits zone=4], [0], [dnl
+default limit=0
+zone=4,limit=4,count=0
+])
+
+AT_CHECK([ovs-appctl dpctl/ct-set-limits default=15])
+AT_CHECK([ovs-appctl dpctl/ct-get-limits zone=4], [0], [dnl
+default limit=15
+zone=4,limit=4,count=0
+])
+
+AT_CHECK([ovs-appctl dpctl/ct-del-limits default zone=4])
+AT_CHECK([ovs-appctl dpctl/ct-get-limits zone=4], [0], [dnl
+default limit=0
+zone=4,limit=0,count=0
+])
+
 OVS_TRAFFIC_VSWITCHD_STOP(["dnl
 /could not create datapath/d
 /(Cannot allocate memory) on packet/d"])