+}
+
+static void
+cfm_unixctl_show(struct unixctl_conn *conn,
+ const char *args, void *aux OVS_UNUSED)
+{
+ struct ds ds = DS_EMPTY_INITIALIZER;
+ const struct cfm *cfm;
+
+ if (strlen(args)) {
+ cfm = cfm_find(args);
+ if (!cfm) {
+ unixctl_command_reply(conn, 501, "no such CFM object");
+ return;
+ }
+ cfm_print_details(&ds, cfm);
+ } else {
+ HMAP_FOR_EACH (cfm, hmap_node, &all_cfms) {
+ cfm_print_details(&ds, cfm);
+ }
+ }