summaryrefslogtreecommitdiff
path: root/ofproto
diff options
context:
space:
mode:
authorIlya Maximets <i.maximets@ovn.org>2022-09-13 21:08:51 +0200
committerIlya Maximets <i.maximets@ovn.org>2022-09-16 12:56:52 +0200
commit647551935957ae8a44bc5b397c1ad5144d8e3233 (patch)
treeb4da7718889d7792373625f2dfcb3170e47e493a /ofproto
parent2e74c44756137d624d8f0e4418e91275849d9622 (diff)
downloadopenvswitch-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.c33
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.
*/