11 #include "meshlink-tiny.h"
13 #include "netns_utils.h"
18 static void print_counters(peer_config_t *peers, const char *description) {
19 printf("%s:\n", description);
20 printf(" %9s %9s %9s %9s %9s %9s\n",
28 assert(peers[0].full);
30 for(int i = 0; i < 3; i++) {
31 meshlink_node_t *node = full_meshlink_get_node(peers[0].mesh, peers[i].name);
33 struct devtool_node_status status;
34 full_devtool_reset_node_counters(peers[0].mesh, node, &status);
35 printf(" %5s: %9" PRIu64 " %9" PRIu64 " %9" PRIu64 " %9" PRIu64 " %9" PRIu64 " %9" PRIu64 "\n",
50 meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_cb);
52 // Set up relay, peer and NUT
53 peer_config_t *peers = setup_relay_peer_nut("metering");
55 // Ensure DEV_CLASS_STATIONARY uses a 5 minute ping time
56 for(int i = 0; i < 3; i++) {
58 ? full_meshlink_set_dev_class_timeouts(peers[i].mesh, DEV_CLASS_STATIONARY, 300, 5)
59 : meshlink_set_dev_class_timeouts(peers[i].mesh, DEV_CLASS_BACKBONE, 300, 5);
62 for(int i = 0; i < 3; i++) {
64 ? full_meshlink_start(peers[i].mesh)
65 : meshlink_start(peers[i].mesh)
69 // Measure traffic after 1 minute of PMTU probing
71 print_counters(peers, "PMTU probing (1 min)");
73 // Measure traffic after 1 minute of idle
74 for(int i = 0; i < 10; i++) {
76 print_counters(peers, "Idle (1 min)");
79 close_relay_peer_nut(peers);