static int _netif_stats(kernel_pid_t iface, unsigned module, bool reset) { netstats_t *stats; int res = gnrc_netapi_get(iface, NETOPT_STATS, module, &stats, sizeof(&stats)); if (res < 0) { puts(" Protocol or device doesn't provide statistics."); } else if (reset) { memset(stats, 0, sizeof(netstats_t)); printf("Reset statistics for module %s!\n", _netstats_module_to_str(module)); } else { printf(" Statistics for %s\n" " RX packets %u bytes %u\n" " TX packets %u (Multicast: %u) bytes %u\n" " TX succeeded %u errors %u\n", _netstats_module_to_str(module), (unsigned) stats->rx_count, (unsigned) stats->rx_bytes, (unsigned) (stats->tx_unicast_count + stats->tx_mcast_count), (unsigned) stats->tx_mcast_count, (unsigned) stats->tx_bytes, (unsigned) stats->tx_success, (unsigned) stats->tx_failed); res = 0; } return res; }
static int _netif_stats(kernel_pid_t dev, unsigned module, bool reset) { netstats_t *stats; int res = -ENOTSUP; if (module == NETSTATS_LAYER2) { res = gnrc_netapi_get(dev, NETOPT_STATS, 0, &stats, sizeof(&stats)); } #ifdef MODULE_NETSTATS_IPV6 else if (module == NETSTATS_IPV6) { stats = gnrc_ipv6_netif_get_stats(dev); if (stats != NULL) { res = 1; } } #endif if (res < 0) { puts(" Protocol or device doesn't provide statistics."); } else if (reset) { memset(stats, 0, sizeof(netstats_t)); printf("Reset statistics for module %s!\n", _netstats_module_to_str(module)); } else { printf(" Statistics for %s\n" " RX packets %u bytes %u\n" " TX packets %u (Multicast: %u) bytes %u\n" " TX succeeded %u errors %u\n", _netstats_module_to_str(module), (unsigned) stats->rx_count, (unsigned) stats->rx_bytes, (unsigned) (stats->tx_unicast_count + stats->tx_mcast_count), (unsigned) stats->tx_mcast_count, (unsigned) stats->tx_bytes, (unsigned) stats->tx_success, (unsigned) stats->tx_failed); res = 0; } return res; }