+
+out:
+ ovs_mutex_unlock(&mutex);
+}
+
+
+static void
+bfd_unixctl_set_forwarding_override(struct unixctl_conn *conn, int argc,
+ const char *argv[], void *aux OVS_UNUSED)
+ OVS_EXCLUDED(mutex)
+{
+ const char *forward_str = argv[argc - 1];
+ int forwarding_override;
+ struct bfd *bfd;
+
+ ovs_mutex_lock(&mutex);
+ if (!strcasecmp("true", forward_str)) {
+ forwarding_override = 1;
+ } else if (!strcasecmp("false", forward_str)) {
+ forwarding_override = 0;
+ } else if (!strcasecmp("normal", forward_str)) {
+ forwarding_override = -1;
+ } else {
+ unixctl_command_reply_error(conn, "unknown fault string");
+ goto out;
+ }
+
+ if (argc > 2) {
+ bfd = bfd_find_by_name(argv[1]);
+ if (!bfd) {
+ unixctl_command_reply_error(conn, "no such BFD object");
+ goto out;
+ }
+ bfd->forwarding_override = forwarding_override;
+ } else {
+ HMAP_FOR_EACH (bfd, node, all_bfds) {
+ bfd->forwarding_override = forwarding_override;
+ }
+ }
+
+ unixctl_command_reply(conn, "OK");
+
+out:
+ ovs_mutex_unlock(&mutex);