diff options
author | Ilya Maximets <i.maximets@ovn.org> | 2022-09-13 21:08:51 +0200 |
---|---|---|
committer | Ilya Maximets <i.maximets@ovn.org> | 2022-09-16 12:56:52 +0200 |
commit | 647551935957ae8a44bc5b397c1ad5144d8e3233 (patch) | |
tree | b4da7718889d7792373625f2dfcb3170e47e493a /ofproto | |
parent | 2e74c44756137d624d8f0e4418e91275849d9622 (diff) | |
download | openvswitch-647551935957ae8a44bc5b397c1ad5144d8e3233.tar.gz |
ofproto-dpif-upcall: Add debug commands to pause/resume revalidators.
New commands 'revalidator/pause' and 'revalidator/resume'.
Not documented, since these should not be used in production
environments.
Will be used for unit tests in the next commit.
Acked-by: Mike Pattrick <mkp@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'ofproto')
-rw-r--r-- | ofproto/ofproto-dpif-upcall.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c index 88ae46f14..7ad728adf 100644 --- a/ofproto/ofproto-dpif-upcall.c +++ b/ofproto/ofproto-dpif-upcall.c @@ -362,6 +362,10 @@ static void upcall_unixctl_dump_wait(struct unixctl_conn *conn, int argc, const char *argv[], void *aux); static void upcall_unixctl_purge(struct unixctl_conn *conn, int argc, const char *argv[], void *aux); +static void upcall_unixctl_pause(struct unixctl_conn *conn, int argc, + const char *argv[], void *aux); +static void upcall_unixctl_resume(struct unixctl_conn *conn, int argc, + const char *argv[], void *aux); static struct udpif_key *ukey_create_from_upcall(struct upcall *, struct flow_wildcards *); @@ -434,6 +438,10 @@ udpif_init(void) upcall_unixctl_dump_wait, NULL); unixctl_command_register("revalidator/purge", "", 0, 0, upcall_unixctl_purge, NULL); + unixctl_command_register("revalidator/pause", NULL, 0, 0, + upcall_unixctl_pause, NULL); + unixctl_command_register("revalidator/resume", NULL, 0, 0, + upcall_unixctl_resume, NULL); ovsthread_once_done(&once); } } @@ -3100,6 +3108,31 @@ upcall_unixctl_purge(struct unixctl_conn *conn, int argc OVS_UNUSED, unixctl_command_reply(conn, ""); } +static void +upcall_unixctl_pause(struct unixctl_conn *conn, int argc OVS_UNUSED, + const char *argv[] OVS_UNUSED, void *aux OVS_UNUSED) +{ + struct udpif *udpif; + + LIST_FOR_EACH (udpif, list_node, &all_udpifs) { + udpif_pause_revalidators(udpif); + } + unixctl_command_reply(conn, ""); +} + +static void +upcall_unixctl_resume(struct unixctl_conn *conn, int argc OVS_UNUSED, + const char *argv[] OVS_UNUSED, void *aux OVS_UNUSED) +{ + struct udpif *udpif; + + LIST_FOR_EACH (udpif, list_node, &all_udpifs) { + udpif_resume_revalidators(udpif); + } + unixctl_command_reply(conn, ""); +} + + /* Flows are sorted in the following order: * netdev, flow state (offloaded/kernel path), flow_pps_rate. */ |