+ static long num = 0;
+ char sent[64], received[64];
+
+ sprint_canframe(sent, &mi->sent, true);
+ sprint_canframe(received, &mi->received, true);
+
+#define S(ts) tstamp_str(local, &ts)
+#define DIFF(a, b) (timespec_subtract(&diff, &b, &a), S(diff))
+
+ if (num_interfaces == 2)
+ fprintf(f, "%ld: %s %s -> %s (%s) %s = %s (%s)\n",
+ num, S(mi->ts_sent), sent, S(mi->ts_rx_final_kern), S(mi->ts_rx_final), received,
+ DIFF(mi->ts_sent, mi->ts_rx_final_kern),
+ DIFF(mi->ts_sent, mi->ts_rx_final));
+ else
+ fprintf(f, "%ld: %s %s -> %s (%s) -> %s (%s) %s = %s (%s), %s (%s)\n",
+ num, S(mi->ts_sent), sent,
+ S(mi->ts_rx_onwire_kern), S(mi->ts_rx_onwire),
+ S(mi->ts_rx_final_kern), S(mi->ts_rx_final), received,
+ DIFF(mi->ts_sent, mi->ts_rx_onwire_kern),
+ DIFF(mi->ts_sent, mi->ts_rx_onwire),
+ DIFF(mi->ts_rx_onwire_kern, mi->ts_rx_final_kern),
+ DIFF(mi->ts_rx_onwire, mi->ts_rx_final));
+#undef S
+#undef DIFF
+ num++;
+ talloc_free (local);
+}
+
+int msg_info_store(FILE *f, struct msg_info *mi)
+{
+ struct timespec diff;
+ void *local = talloc_new (NULL);
+ static long num = 0;
+