@@ -7518,6 +7535,36 @@ out:
}
static
+void dump_torus(struct torus *t)
+{
+ unsigned i, j, k;
+ unsigned x_sz = t->x_sz;
+ unsigned y_sz = t->y_sz;
+ unsigned z_sz = t->z_sz;
+ char path[1024];
+ FILE *file;
+
+ snprintf(path, sizeof(path), "%s/%s", t->osm->subn.opt.dump_files_dir,
+ "opensm-torus.dump");
+ file = fopen(path, "w");
+ if (!file) {
+ OSM_LOG(&t->osm->log, OSM_LOG_ERROR,
+ "ERR 4E47: cannot create file \'%s\'\n", path);
+ return;
+ }
+
+ for (k = 0; k < z_sz; k++)
+ for (j = 0; j < y_sz; j++)
+ for (i = 0; i < x_sz; i++)
+ fprintf(file, "switch %u,%u,%u GUID 0x%04"
+ PRIx64 " (%s)\n",
+ i, j, k,
+ cl_ntoh64(t->sw[i][j][k]->n_id),
+ t->sw[i][j][k]->osm_switch->p_node->print_desc);
+ fclose(file);
+}
+
+static
void report_torus_changes(struct torus *nt, struct torus *ot)
{
unsigned cnt = 0;
@@ -7525,7 +7572,10 @@ void report_torus_changes(struct torus *nt, struct torus *ot)
unsigned y_sz = nt->y_sz;
unsigned z_sz = nt->z_sz;
unsigned max_changes = nt->max_changes;
+ if (OSM_LOG_IS_ACTIVE_V2(&nt->osm->log, OSM_LOG_ROUTING))
+ dump_torus(nt);
+
- if (!(nt && ot))
+ if (!ot)
return;