+static int system_resource_handler (__attribute__((unused)) ros_connection_t *c, /* {{{ */
+ const ros_system_resource_t *r, __attribute__((unused)) void *user_data)
+{
+ uint64_t used_memory;
+ uint64_t used_hdd_space;
+
+ if (r == NULL)
+ return (EINVAL);
+
+ used_memory = r->total_memory - r->free_memory;
+ used_hdd_space = r->total_hdd_space - r->free_hdd_space;
+
+ printf ("====== System resources ======\n"
+ "Uptime: %10.2f days\n"
+ "RouterOS version: %11s\n"
+ "Architecture name: %11s\n"
+ "Board name: %15s\n"
+ "CPU model: %15s\n"
+ "CPU count: %15u\n"
+ "CPU load: %15u\n"
+ "CPU frequency: %11g MHz\n"
+ "Memory free: %10"PRIu64" Byte (%4.1f %%)\n"
+ "Memory used: %10"PRIu64" Byte (%4.1f %%)\n"
+ "Memory total: %10"PRIu64" Byte\n"
+ "Space free: %10"PRIu64" Byte (%4.1f %%)\n"
+ "Space used: %10"PRIu64" Byte (%4.1f %%)\n"
+ "Space total: %10"PRIu64" Byte\n"
+ "Sectors written: %13"PRIu64" (%"PRIu64")\n"
+ "Bad blocks: %15"PRIu64"\n"
+ "==============================\n",
+ ((double) r->uptime) / 86400.0, r->version,
+ r->architecture_name, r->board_name,
+ r->cpu_model, r->cpu_count, r->cpu_load,
+ ((double) r->cpu_frequency) / 1000000.0,
+ r->free_memory,
+ 100.0 * (((double) r->free_memory) / ((double) r->total_memory)),
+ used_memory,
+ 100.0 * (((double) used_memory) / ((double) r->total_memory)),
+ r->total_memory,
+ r->free_hdd_space,
+ 100.0 * (((double) r->free_hdd_space) / ((double) r->total_hdd_space)),
+ used_hdd_space,
+ 100.0 * (((double) used_hdd_space) / ((double) r->total_hdd_space)),
+ r->total_hdd_space,
+ r->write_sect_since_reboot,
+ r->write_sect_total,
+ r->bad_blocks);
+
+ return (0);
+} /* }}} int system_resource_handler */
+