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 13:24:44 +0200 |
commit | dcedc5cff6620d5529d09a66b8ea850fa5154daa (patch) | |
tree | fb6863305581d1edba0202a5410ba190a145962a | |
parent | ef9f15bff9c70f5ae6a293820d23da2128f5420f (diff) | |
download | openvswitch-dcedc5cff6620d5529d09a66b8ea850fa5154daa.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>
-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 9961c2be0..2a01f3b34 100644 --- a/ofproto/ofproto-dpif-upcall.c +++ b/ofproto/ofproto-dpif-upcall.c @@ -361,6 +361,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 *); @@ -433,6 +437,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); } } @@ -3036,6 +3044,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. */ |